Device Identifier Composition Engine (DICE) mejora la postura de seguridad de Android de varias maneras, con más casos de uso en desarrollo a medida que se expande la integración de esta arquitectura.
Aprovisionamiento de claves remotas
El caso de uso original de DICE era fundamentar la raíz de confianza para el protocolo de aprovisionamiento de claves remotas (RKP) en el TCB más pequeño disponible para el chip, la ROM, en lugar de dentro del TEE. Esto reduce en gran medida la superficie de ataque para la vulneración permanente de la RKP. Lo más importante es que otorga la capacidad de recuperar la confianza en los dispositivos después de vulneraciones en el TEE o el bootloader que podrían afectar la validez de las certificaciones de claves que genera KeyMint.
Históricamente, las vulnerabilidades en el TEE o el bootloader provocaron la revocación total de las claves de certificación para todos los dispositivos afectados, sin posibilidad de recuperar la confianza, incluso si se aplicaban parches a las vulnerabilidades. Esto se debía a que no era posible demostrarle a una parte remota que se habían aplicado los parches, ya que el TEE realizaba la verificación remota sobre la imagen de Android que se cargaba a través del inicio verificado de Android. DICE cierra esa brecha, ya que proporciona la capacidad de verificar de forma remota el estado actual del firmware cargado fuera de Android.
Autenticación mutua de entornos aislados
Cada dominio de aplicación en el que finaliza DICE recibe una identidad en forma de clave con una cadena de certificados que se extiende hasta la raíz de confianza compartida que deriva la ROM. Debido a que el proceso de derivación de DICE se ramifica a medida que se dividen las rutas de carga, se crea un árbol de certificados que comparten la misma raíz. Por lo tanto, se crea una PKI integrada en el dispositivo durante el proceso de DICE.
La PKI creada mediante el proceso de derivación de DICE crea un mecanismo para que los componentes en enclaves seguros separados se autentiquen mutuamente. Un ejemplo concreto de esto es SecretKeeper, un HAL de confianza que permite que las pVM se comuniquen con el TEE para recibir un secreto estable, que se puede usar para almacenar datos persistentes de forma segura.