Zastosowanie DICE

Moduł Device Identifier Composition Engine (DICE) zwiększa bezpieczeństwo Androida na kilka sposobów, a wraz z rozwojem integracji tej architektury powstają kolejne przypadki użycia.

Udostępnianie klucza zdalnie

Pierwotnym przypadkiem użycia DICE było ugruntowanie zaufania dla protokołu zdalnego udostępniania kluczy (RKP) w najmniejszym TCB dostępnym dla układu, czyli ROM, zamiast w TEE. Pozwala to znacznie ograniczyć powierzchnię ataku, która może doprowadzić do trwałego przejęcia RKP. Co ważniejsze, umożliwia przywrócenie zaufania do urządzeń po naruszeniu zabezpieczeń TEE lub bootloadera, które mogło wpłynąć na ważność generowanych przez KeyMint zaświadczeń o kluczach.

W przeszłości luki w TEE lub wstępnej pamięci prowadziły do całkowitego wycofania kluczy uwierzytelniających ze wszystkich dotkniętych urządzeń. Nie było możliwości przywrócenia zaufania, nawet jeśli luki zostały załatane. Wynikało to z tego, że nie można było udowodnić stronie zdalnej, że łaty zostały zastosowane, ponieważ weryfikacja zdalna została przeprowadzona przez TEE na obrazie Androida wczytanym przez zaufane środowisko wykonawcze (TEE) podczas uruchamiania zweryfikowanego systemu Android. DICE wypełnia tę lukę, umożliwiając zdalne sprawdzanie bieżącego stanu oprogramowania załadowanego poza Androidem.

Wzajemne uwierzytelnianie odizolowanych środowisk

Każda domena aplikacji, na której kończy się DICE, otrzymuje tożsamość w formie klucza z łańcuchem certyfikatów sięgającym do wspólnego źródła zaufania utworzonego przez ROM. Ponieważ proces wyprowadzania DICE rozgałęzia się, gdy ścieżki wczytywania się rozchodzą, tworzy drzewo certyfikatów, które mają ten sam korzeń. W ten sposób w trakcie procesu DICE tworzona jest infrastruktura klucza publicznego na urządzeniu.

Infrastruktura klucza publicznego utworzona w wyniku procesu derywacji DICE tworzy mechanizm dla komponentów w osobnych bezpiecznych enklawach, który umożliwia wzajemne uwierzytelnianie. Przykładem jest tutaj SecretKeeper, zaufana usługa HAL, która umożliwia procesorom pVM komunikowanie się z TEE w celu otrzymania stabilnego klucza, który może być używany do bezpiecznego przechowywania danych stałych.