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.
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.