Android14开始导入TCG推出的DICE标准,可以准确地证明设备的完整性。使用DICE,系统中的引导层和固件层都会从上一层接收一个唯一的密钥。这个密钥或秘密是由一层的秘密和下一层的测量值的加密组合构建的。如果系统被黑客所恶意利用,任何被利用的层的测量结果都会有不同,系统软件的篡改将导致该层的密钥不同,这意味着恶意代码无法访问任何受保护的数据。即:在DICE设备中,当引入恶意代码时,该设备将自动重新加密,并保护数据。1、术语和缩略语
TCG:Trusted Computing Group 可信计算组织
DICE:Device Identifier Composition Engine 设备标识符组合引擎
HMAC:Hash-based Message Authentication Code 哈希运算消息认证码
UDS:Unique Device Secret 唯一设备密钥
CDI:Compound Device Indentifier 复合设备标识符
BCC:Boot Certificate Chain 引导证书链
KDF:Key Derived Function 密钥派生函数
2、DICE的介绍
DICE是基于硬件的信任根,可提供终端设备的唯一标识。我们可以将DICE简约理解成一个HMAC,HMAC可确保Message的完整性,对Message做身份验证。DICE=HMAC= UDS(Key) + TargetCode(Message) => CDI
DICE是分层架构计算的,即:由上层依据下一层的输入,计算出下一层的唯一标识,设备证明,非对称密钥,加密密钥。并且各层的敏感信息(UDS、CDI)只能由自身或上一层读取。
注:DICE层,使用的敏感信息是UDS(受硬件保护);DICE层以后的Layer,使用的敏感信息是CDI。- 在DICE层,由UDS与Layer0的软件输入计算出Layer0的CDI;用UDS派生出的密钥签署CDI证书且进行发布的,DICE将控制权转移给下一层(Layer0),并且传递其CDI与CDI Cert;
- 在Layer0层,由CDI与Layer1的软件输入计算出Layer1的CDI;最后传递CDI与CDI Cert给下一层(Layer1);
- DICE各层生成的证书可以链接到前一层生成的证书,最终形成DICE证书链。
3、DICE在智能手机上的实现
DICE为终端设备提供统一的设备标识机制,基于UDS创建公钥证书链BCC。BCC中每个证书的私钥用于签署链中的下一个证书,BCC的Leaf证书作为证明证书,用于对远程服务证明自身的状态(Leaf Cert),并且提供设备证明(Root Cert),从而确保终端设备的可信性。4、基于DICE的场景简述
DICE支持设备标识、设备证明、可信启动、数据保护等场景。(1)设备标识:CDI_Cert提供当层设备标识Device ID。(2)设备证明:CDI_Cert内提供当层的设备证明。证明允许计算机设备或程序提供其身份和操作状态的可验证证据,包括硬件身份、软件镜像、安全相关配置、操作环境等。例如:可用来对远端服务器进行Fireware OTA的证明请求。(3)可信启动:使用BCC启动证书链,验证下一层即将引导的软件的完整性,以判断下一层软件是否被篡改,由此形成可信安全的启动。(4)数据安全:CDI派生出只在当层进行密码学运算的对称加密密钥(CDI_Seal),我们称此概念为SEAL(密封):密封允许计算设备或程序使用这样的密钥对数据进行加密,这些数据将只能在与加密时相同的状态下运行的相同设备或程序得到解密。从应用角度,Android的Keymint服务将基于DICE的密封能力来提升数据安全性。5、引入DICE的意义
DICE是基于可信计算方法论所实现的一种新型的身份模式,即基于硬件信任根构建密码学安全的复合设备身份。该架构具有灵活性,可与现有的安全标准互操作,且通过上电锁定、密码单向哈希和软件版本绑定的密钥,来增强设备安全性和隐私性。DICE和TEE的结合不仅确保了对设备的信任,更重要的目的是为了数据安全,当今,智能终端承载越来越多的隐私数据和商业机密数据,数据安全的确保也成为平台服务商Google的重点。1、TCG官方资料:https://trustedcomputinggroup.org/
先起公司近期公开课: