设备标识符组合引擎 (DICE) 能够通过多种方式来提升 Android 的安全状况,随着对这种架构的集成不断扩展,更多用例正在开发中。
远程密钥配置
DICE 的原始用例是将远程密钥配置 (RKP) 协议的可信根置于芯片可用的最小 TCB(即 ROM)内,而不是 TEE 内。这能够大大减少会导致 RKP 永久受损的攻击面。更重要的是,它还能够在 TEE 或引导加载程序遭到入侵(可能会影响 KeyMint 生成的密钥认证的有效性)后恢复对设备的信任。
过去,TEE 或引导加载程序中的漏洞会导致所有受影响设备的认证密钥完全失效,即使修补了漏洞,也无法恢复信任。这是因为无法向远程方证明已应用补丁,原因是远程验证是由 TEE 通过 Android 启动时验证加载的 Android 映像执行的。通过提供对在 Android 之外加载的固件的当前状态进行远程验证的功能,DICE 弥补了上述差距。
隔离环境的相互身份验证
DICE 终止的每个应用网域都会以密钥的形式接收一个身份,密钥的证书链会延伸回由 ROM 派生的共享信任根。由于 DICE 派生过程会随着加载路径的分支而分支,因此这会创建一个共享相同根的证书树。这样一来,DICE 流程中会创建设备端 PKI。
DICE 派生过程创建的 PKI 会为位于单独安全区域中的组件创建一种机制,以便它们相互进行身份验证。一个具体示例是 SecretKeeper,这是一种可信 HAL,可让 pVM 与 TEE 通信以接收稳定的 Secret,该 Secret 可用于安全地存储永久性数据。