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 stosować w sytuacjach wymagających mocnego dowodu tożsamości i bezpiecznej komunikacji.
Zdalne udostępnianie klucza (RKP)
Korzystanie z DICE w ramach RKP 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 TEE lub bootloaderze powodowały całkowite wycofanie kluczy uwierzytelniających ze wszystkich urządzeń, na których występowały, bez możliwości odzyskania zaufania nawet po załatowaniu luk. 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, który sięga 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 wczytywania 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.