Silnik identyfikatorów urządzeń (DICE) to funkcja zabezpieczeń Androida, która zapewnia silne uwierzytelnianie i poprawia integralność urządzenia dzięki tworzeniu unikalnej tożsamości kryptograficznej dla każdego urządzenia. DICE jest szczególnie przydatne do tworzenia identyfikatorów urządzeń, które można wykorzystać w sytuacjach wymagających mocnego dowodu tożsamości i bezpiecznej komunikacji.
Zdalne udostępnianie klucza (RKP)
Korzystanie z DICE do zdalnego udostępniania kluczy ma kilka kluczowych zalet.
Minimalizacja powierzchni ataku
DICE ulepsza RKP, umieszczając korzeń zaufania w najmniejszym możliwym zaufanym środowisku obliczeniowym (TCB) dostępnym na urządzeniu (zwykle na samym układzie), a nie w zaufanym środowisku wykonawczym (TEE). Pozwala to znacznie zmniejszyć powierzchnię ataku i zminimalizować ryzyko trwałego naruszenia bezpieczeństwa RKP.
Przywracanie po kompromisach TEE
DICE zapewnia mechanizm przywracania zaufania do urządzeń nawet wtedy, gdy w systemie TEE lub w bootloaderze występują luki, które mogłyby wpłynąć na ważność certyfikatów kluczy wygenerowanych przez KeyMint.
W przeszłości luki w zaufanym środowisku wykonawczym (TEE) lub ładowarce powodowały całkowite cofnięcie kluczy uwierzytelniających na wszystkich dotkniętych urządzeniach. Nie było możliwości odzyskania zaufania, nawet jeśli luki zostały załatane. Wynikało to z tego, że TEE przeprowadzał zdalne weryfikowanie obrazu Androida wczytanego za pomocą weryfikacji podczas uruchamiania Androida, co uniemożliwiało stronie zdalnej udowodnienie, że zostały zastosowane poprawki. DICE rozwiązuje ten problem, umożliwiając zdalne sprawdzanie bieżącego stanu oprogramowania, nawet poza Androidem, co pozwala urządzeniom, których dotyczy problem, odzyskać zaufanie.
Wzajemne uwierzytelnianie w izolowanych środowiskach
Każda domena aplikacji, w której kończy się proces DICE, otrzymuje tożsamość w postaci klucza z łańcuchem certyfikatów prowadzącym do wspólnego zaufanego głównego punktu wyjścia wyprowadzonego z ROM. Proces wyprowadzania DICE dzieli się na różne gałęzie, gdy różne ścieżki ładowania się rozchodzą, tworząc drzewo certyfikatów, które mają ten sam korzeń, oraz tworząc infrastrukturę klucza publicznego (PKI) na urządzeniu.
Ten system PKI umożliwia komponentom w oddzielnych bezpiecznych enklawach wzajemne uwierzytelnianie. Jednym z konkretnych przykładów jest Secretkeeper, warstwą abstrakcji sprzętowej (HAL), która umożliwia uprzywilejowanym maszynom wirtualnym (pVM) komunikowanie się z zaufanym środowiskiem wykonawczym (TEE) w celu otrzymania stabilnego sekretu, który może być używany do bezpiecznego przechowywania trwałych danych.