Mobilne urządzenia komputerowe obsługują coraz większe ilości danych osobowych. Obecność takich wrażliwych danych, wspomagana przez stałe połączenie ze światem zewnętrznym, spowodowała zwiększone inwestycje ze strony szkodliwych 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 umożliwiają odizolowanie niepowiązanych procesów. Tylko komponenty będące częścią TCB mogą bezpośrednio programować te MMU.
Model ten stał się podstawą wdrażania prywatności i bezpieczeństwa od czasu wprowadzenia systemów operacyjnych typu Unix. Jednak to wymaganie stało się problematyczne, ponieważ dzisiejsza baza TCB jest zbyt duża: zawiera 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 każdego zakątka tego skomplikowanego systemu stało się bardzo trudne.
Jądro Linuksa ma ponad 20 milionów linii kodu, a tempo zmian i przepisywania jest zdumiewające. Ten rozwój stanowi ogromną pomoc dla Androida i naszego ekosystemu. Jednak duża baza TCB utrudnia zapewnienie braku luk możliwych do wykorzystania.
Dostawcy sprzętu opracowali rozwiązania, takie jak TrustZone firmy Arm, które umożliwiają procesorom działanie w trybie bezpiecznym i oznaczanie transakcji pamięciowych jako „bezpieczne” lub „niezabezpieczone”. W takich systemach wrażliwe dane są przechowywane i dostępne wyłącznie w bezpiecznym świecie, który na żądanie świadczy usługi dla niezabezpieczonego świata.
Głównym ograniczeniem tego rodzaju rozwiązań jest to, że domeny są zbyt gruboziarniste: tylko bezpieczne i niezabezpieczone. W miarę wprowadzania coraz większej liczby przypadków użycia wymagających izolacji od systemu operacyjnego zwiększa się powierzchnia ataku, a luki prawdopodobnie doprowadzą do naruszenia bezpieczeństwa całego urządzenia.
Kolejnym 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 alokowane z wyprzedzeniem. Rozwiązania te nie są wystarczająco dobre w dynamicznych przypadkach użycia, w których zasoby są przydzielane na żądanie.
Ponadto interfejsy API używane poza systemem operacyjnym Android są pofragmentowane i ograniczają naszą możliwość wdrażania przypadków użycia w skali Androida, w tym podstaw takich jak Keymint i Gatekeeper.
Aby wyeliminować te ograniczenia i umożliwić Androidowi zapewnienie solidnych podstaw dla zastosowań nowej generacji, w systemie Android 13 wprowadzono bezpieczną wirtualizację w postaci platformy Android Virtualization Framework (AVF).
Głównym celem AVF jest zapewnienie bezpiecznego i prywatnego środowiska wykonawczego dla zastosowań nowej generacji.