Device Identifier Composition Engine (DICE) — это функция безопасности Android, которая обеспечивает надежную аттестацию и улучшает целостность устройства, создавая уникальный криптографический идентификатор для каждого устройства. DICE особенно полезен для создания идентификаторов устройств, которые можно использовать в сценариях, требующих надежного доказательства личности и защищенной связи.
Удаленная выдача ключей (RKP)
Использование DICE для RKP дает несколько ключевых преимуществ.
Минимизация поверхности атаки
DICE улучшает RKP, заземляя корень доверия в минимально возможной доверенной вычислительной базе (TCB), доступной на устройстве, обычно в самом чипе, а не в среде доверенного выполнения (TEE). Это значительно уменьшает поверхность атаки и минимизирует риск постоянной компрометации RKP.
Восстановление после TEE-компрометаций
DICE предоставляет механизм восстановления доверия к устройствам даже в случае наличия нарушений в TEE или загрузчике, которые могут повлиять на действительность аттестаций ключей, сгенерированных KeyMint .
Исторически уязвимости в TEE или загрузчике приводили к полному отзыву ключей подтверждения для всех затронутых устройств, без возможности восстановить доверие, даже если уязвимости были исправлены. Это было связано с тем, что TEE выполнял удаленную проверку образа Android, загружаемого через Android Verified Boot , что делало невозможным доказать удаленной стороне, что исправления были применены. DICE решает эту проблему, позволяя удаленную проверку текущего состояния прошивки, даже за пределами Android, что позволяет затронутым устройствам восстановить доверие.
Взаимная аутентификация изолированных сред
Каждый домен приложения, в котором завершается процесс DICE, получает идентификатор в форме ключа с цепочкой сертификатов, простирающейся обратно к общему корню доверия, полученному от ROM. Процесс деривации DICE разделяется на различные ветви, поскольку различные пути загрузки расходятся, формируя дерево сертификатов, которые все имеют один и тот же корень и создают инфраструктуру открытых ключей на устройстве (PKI).
Этот PKI позволяет компонентам в отдельных защищенных анклавах взаимно аутентифицировать друг друга. Одним из конкретных примеров является Secretkeeper , уровень аппаратной абстракции (HAL) , который позволяет привилегированным виртуальным машинам (pVM) взаимодействовать с TEE для получения стабильного секрета, который может использоваться для безопасного хранения постоянных данных.