1、StrongBox概述
从Android9(Pie)开始,Google强烈建议支持Strongbox,具体描述如下:
9.11.2 StrongBox
The Android Keystore System allows app developers to store cryptographic keys in a dedicated secure processor as well as the isolated execution environment described above.
Device implementations :
-
[C-SR] Are STRONGLY_RECOMMENDED to support StrongBox.
进一步来讲,确保 StrongBox Keymaster 在具有独立 CPU、安全存储、高品质的真随机数生成器、防篡改包装和防旁路攻击功能的环境中运行,以符合成为 StrongBox Keymaster 的要求。
但是,对设备厂商(OEM)也带来影响,即,
-
首先会增加的是硬件成本;
-
其次增加研发调试时间;
-
影响生产与售后流程。
在这个期间,谷歌曾推出过一款名为Titan M的安全芯片,在Pixel 3/XL手机中搭载,用于加强设备的安全性。
昔日的金立品牌也曾推出过“安全手机”主题的智能手机,在研发过程中,OEM金立+TEE豆荚+eSE安全芯片厂商等三方的研发调试时间较长。
(图1)
2、Android Ready SE Alliance
2021年3月,谷歌牵头正式成立Android Ready SE Alliance技术联盟,用于SE安全芯片标准的研发以及推广,将使得Android系统原生支持内置安全芯片的设备。谷歌与硬件厂商合作,推出开源的SE安全接口和程序,使得智能设备可用于数字钥匙、车钥匙、电子护照、数字货币等。
(图2)
插曲:在2014年,金融POS的TEE从业者憧憬着“身手钥钱(伸手要钱)”的愿景,即将:身份证、手机、钥匙、钱包 都融合进一台智能终端上。
Android Ready SE的推动,解决了Strongbox落地的部分现实障碍:
-
Google:Android系统原生支持内置安全芯片;
-
Google与eSE芯片厂商:预集成了eSE Service等工作;
-
SoC芯片厂商和TEE厂商:预集成了SoC芯片和TEE之间的工作。
在我们服务过的手机上已经大幅缩减了研发调试时间。目前,高端和旗舰智能手机标配Strongbox的机型也开始增多。
3、StrongBox架构
现在的StrongBox架构如下:
(图3)
(1)hmac key
TEE和StrongBox要协商和拥有同一把密钥Hmac Key,用于双方之间进行安全通话,例如:在TEE将ROT值告知eSE的过程中,就需要使用这个hmac key。
它的具体实现需要包括二部分:
I、在设备的生产过程,就要预制种子和密钥;
II、在设备每次被启动时候,通过ShareSecret流程来验证双方是否拥有了同一密钥和协商出同一hmac key。
(2)ROT(信任根 Root of Trust)
该ROT值(与芯片ROM代码直接相关)会被TEE通过Strongbox设置到eSE(嵌入式安全芯片)中。用途是当eSE为用户生成密钥时,会将ROT值与生成过程绑定。
这样的好处是:高安全地确保在本设备A上被StrongBox加密过的数据,即使在被盗取的情况下,该数据也是不能被其他设备所破解的,因为加密数据的密钥仅保存设备A的eSE中(通常说的“一机一密”,即:加密数据只能被这一台设备所解密。这种高安全就是上面提及的“身手钥钱”的场景所需要的。
(3)StrongBox的流程
该流程路线与Keymint的流程类似,虽然多了通过SPI接口连接到物理eSE安全芯片的流程。
4、TEE+SE的组合保障高安全场景
随着智能终端所承载的数据越来越多,种类也越来越广(个人隐私数据、个人操作行为数据。金融类操作与数据、企业业务数据、医疗类数据、AI算法/模型等),同时,伴随着法规的要求(如:个人信息保护法),智能终端的安全解决方案也在持续演进。下面的市场图片供参考:
(图4)
5、实际案例
(1)加密通讯:WhatsApp使用了StrongBox来加密用户之间的消息。
(2)支付安全:Google Pay利用StrongBox来存储和管理用户的支付信息。
【参考资料】
1、https://source.android.com/docs/
2、https://developers.google.com/android/security/
3、市场上的信息与资料