Mobilne urządzenia komputerowe obsługują coraz większe ilości danych osobowych wrażliwych. Obecność takich wrażliwych danych, wspomagana stałym połączeniem ze światem zewnętrznym, zaowocowała zwiększonymi inwestycjami ze strony złośliwych podmiotów zainteresowanych wykorzystaniem luk w zabezpieczeniach do realizacji swoich celów.
Systemy operacyjne, za pomocą sprzętowych jednostek zarządzania pamięcią (MMU), zapewniają abstrakcje, które pozwalają na izolację niepowiązanych ze sobą procesów. Tylko komponenty, które są częścią TCB, mogą bezpośrednio programować te MMU.
Model ten był podstawą wdrażania prywatności i bezpieczeństwa od czasu wprowadzenia systemów operacyjnych podobnych do Uniksa. Jednak ten wymóg stał się problematyczny, ponieważ dzisiejsze TCB jest zbyt duże: obejmuje większość sterowników urządzeń i magistrali, złożone programy planujące, systemy plików, stos i protokoły sieciowe, pamięci podręczne, wykonywalne parsery i programy ładujące oraz gniazda. Zapewnienie bezpieczeństwa w każdym zakątku tego skomplikowanego systemu stało się bardzo trudne.
Jądro Linuksa ma ponad 20 milionów linijek kodu, a tempo zmian i przepisywania jest zdumiewające. Ten wzrost jest ogromną pomocą dla Androida i naszego ekosystemu. Jednak jego duża baza TCB utrudnia zapewnienie braku możliwych do wykorzystania luk w zabezpieczeniach.
Sprzedawcy sprzętu opracowali rozwiązania, takie jak Arm's TrustZone, które pozwalają procesorom działać w trybie bezpiecznym i oznaczać transakcje w pamięci jako „zabezpieczone” lub „niezabezpieczone”. W takich systemach dane wrażliwe są przechowywane i tylko bezpośrednio dostępne w bezpiecznym świecie, który na żądanie świadczy usługi dla niezabezpieczonego świata.
Głównym ograniczeniem tego typu rozwiązań jest to, że domeny są zbyt gruboziarniste: tylko bezpieczne i niezabezpieczone. W miarę wprowadzania coraz większej liczby przypadków użycia, które wymagają izolacji od systemu operacyjnego, zwiększa się powierzchnia ataku, a luki mogą prowadzić do naruszenia bezpieczeństwa całego urządzenia.
Innym ograniczeniem dzisiejszych rozwiązań jest to, że są one zaprojektowane dla stosunkowo statycznego świata, w którym wszystkie zasoby przypadków użycia są rozliczane i przydzielane z wyprzedzeniem. Te rozwiązania nie są wystarczająco dobre dla dynamicznych przypadków użycia, w których zasoby są przydzielane na żądanie.
Ponadto interfejsy API używane poza systemem operacyjnym Android są pofragmentowane i ograniczają naszą zdolność do wdrażania przypadków użycia na skalę Androida, w tym podstawowych elementów, takich jak Keymint i Gatekeeper.
Aby rozwiązać te ograniczenia i umożliwić systemowi Android zapewnienie solidnej podstawy dla przypadków użycia nowej generacji, w systemie Android 13 wprowadzono bezpieczną wirtualizację jako platformę wirtualizacji systemu Android (AVF).
Głównym celem AVF jest zapewnienie bezpiecznego i prywatnego środowiska wykonawczego dla przypadków użycia nowej generacji.