Przypadki użycia

Ten dokument zawiera typowe przypadki użycia AVF.

Kompilacja izolowana

Jest to enklawa zabezpieczona programowo, dzięki której chroniona maszyna wirtualna zapewnia bezpieczne środowisko kompilować kod poufny. To środowisko umożliwia przeniesienie kompilacji bootclasspath i plików JAR serwera systemowego (wywoływanych przez aktualizację APEX) z wcześniejszego uruchomienia przed ponownym uruchomieniem i znacznie zmniejsza ponoszone nakłady pracy podczas uruchamiania aktualizacji.

Implementacja jest com.android.compos APEX. Ten komponent jest opcjonalny i można go dołączyć za pomocą makefile.

Kompilacja izolowana

Rysunek 1. Kompilowanie plików JAR w aktualizacjach Mainline

Celem w zakresie bezpieczeństwa jest zgodne z prawdą kompilowanie zweryfikowanych danych wejściowych i generowanie danych wyjściowych oddzielnie; Android jako niezaufany klient nie może zmienić kompilacji dane wyjściowe w sposób inny niż jego awaria (gdy Android powróci do uruchomienia kompilację czasu).

Usługa kompilacji w maszynie wirtualnej generuje podpis tylko wtedy, gdy nie ma żadnej podczas całej kompilacji. Android może pobrać klucz publiczny z maszynę wirtualną do weryfikacji podpisu.

Klucz maszyny wirtualnej jest generowany z profilu DICE maszyny wirtualnej zdefiniowanego przez APEX i plików APK podłączanych do maszyny wirtualnej, a także innych parametrów maszyny wirtualnej, takich jak i możliwości debugowania.

Android uruchamia się, aby określić, czy klucz publiczny nie pochodzi z nieoczekiwanej maszyny wirtualnej. maszynie wirtualnej w celu określenia, czy klucz jest prawidłowy. Maszyna wirtualna jest uruchamiana podczas wcześniejszego rozruchu po każdej aktualizacji APEX.

Przy zastosowaniu weryfikacji podczas uruchamiania chronionej maszyny wirtualnej usługa kompilacji działa tylko w weryfikacji w kodzie. Dzięki temu kod może akceptować tylko dane wejściowe, które spełniają określonych warunków, na przykład akceptować plik wejściowy tylko wtedy, gdy jego nazwa i skrót fs-verity znajduje się na liście dozwolonych.

Wszystkie ujawnione interfejsy API z maszyny wirtualnej są powierzchniami ataku. Wszystkie pliki wejściowe oraz zakłada się, że pochodzą z niezaufanego klienta i muszą zostać zweryfikowane sprawdzone przed przetworzeniem.

Integralność pliku wejściowego/wyjściowego jest weryfikowana przez maszynę wirtualną, a pliki są przechowywane w Android jako niezaufany serwer plików w ten sposób:

  • Zawartość pliku wejściowego należy zweryfikować przed użyciem Algorytm fs-verity. Aby plik wejściowy został udostępniony w maszynie wirtualnej, hasz główny należy podać w kontenerze (APK), który przyczynia się do Profil DICE maszyny wirtualnej. Dzięki zaufanemu haszowi głównemu osoba przeprowadzająca atak nie może ingerować z danymi wejściowymi bez wykrywania.
  • W maszynie wirtualnej należy zachować integralność pliku wyjściowego. Nawet jeśli plik wyjściowy jest zapisywany na Androidzie, podczas generowania jest utrzymywany z tym samym formatem drzewa fs-verity, ale może być dynamicznie Zaktualizowano. Końcowy plik wyjściowy można rozpoznać za pomocą skrótu głównego, izolowanym w maszynie wirtualnej. Usługa w maszynie wirtualnej chroni dane wyjściowe pliki według podpisu.