设备标识符组合引擎 (DICE) 是一项 Android 安全功能,它通过为每个设备创建唯一的加密身份来提供强大的证明并提高设备完整性。DICE 特别适用于创建设备身份,这些身份可用于需要强身份证明和安全通信的场景。
远程密钥配置 (RKP)
使用 DICE 进行远程密钥配置有几个主要优点。
最大限度地缩小攻击面
DICE 通过将信任根植于设备上尽可能小的可信计算基 (TCB)(通常是芯片本身),而不是在可信执行环境 (TEE) 中,从而增强了 RKP。这大大缩小了攻击面,并将永久 RKP 泄露的风险降至最低。
从 TEE 泄露中恢复
即使 TEE 或引导加载程序中存在可能影响 KeyMint 生成的密钥证明有效性的漏洞,DICE 也提供了一种恢复设备信任的机制。
从历史上看,可信执行环境 (TEE) 或引导加载程序中的漏洞导致所有受影响设备的证明密钥完全撤销,即使漏洞已修补,也无法恢复信任。这是因为 TEE 通过 Android Verified Boot 对正在加载的 Android 映像执行远程验证,从而无法向远程方证明补丁已应用。DICE 通过启用对当前固件状态的远程验证(即使在 Android 之外)来解决此问题,从而使受影响的设备能够恢复信任。
隔离环境的相互身份验证
DICE 进程终止的每个应用域都以密钥形式接收身份,该密钥具有扩展回 ROM 派生的共享信任根的证书链。DICE 派生过程随着不同加载路径的分叉而分成不同的分支,形成一个证书树,所有证书都共享相同的根,并创建设备上的公钥基础设施 (PKI)。
此 PKI 使单独的安全 enclave 中的组件能够相互验证身份。一个具体的例子是 Secretkeeper,这是一个硬件抽象层 (HAL),它允许特权虚拟机 (pVM) 与 TEE 通信,以接收可用于安全存储持久数据的稳定密钥。