Dlaczego AVF?

Urządzenia mobilne przetwarzają coraz większe ilości danych osobowych. Obecność takich danych wrażliwych, w połączeniu ze stałym dostępem do świata zewnętrznego, spowodowała wzrost inwestycji ze strony osób o złych zamiarach, które chcą wykorzystywać luki w zabezpieczeniach do realizacji swoich celów.

Systemy operacyjne, z pomocą sprzętowych jednostek zarządzania pamięcią (MMU), zapewniają abstrakcje, które izolują od siebie niezwiązane procesy. Tylko komponenty należące do bazy zaufanych obliczeń (TCB) mogą bezpośrednio programować te jednostki MMU.

Ten model jest podstawą wdrażania ochrony prywatności i bezpieczeństwa od czasu wprowadzenia systemów operacyjnych podobnych do systemu Unix. Wymóg ten stał się jednak problematyczny, ponieważ obecny TCB jest zbyt duży: obejmuje większość sterowników urządzeń i magistrali, złożone harmonogramy, systemy plików, stos sieciowy i protokoły, pamięci podręczne, parsery i ładowarki plików wykonywalnych oraz gniazda. Zapewnienie bezpieczeństwa w każdym zakątku tego skomplikowanego systemu stało się bardzo trudne.

Jądro systemu Linux ma ponad 20 milionów linii kodu, a tempo zmian i przepisywania jest zdumiewające. Ten wzrost bardzo pomaga Androidowi i naszemu ekosystemowi. Jednak duża baza TCB utrudnia zapewnienie braku luk w zabezpieczeniach, które można wykorzystać.

Producenci sprzętu opracowali rozwiązania takie jak TrustZone firmy Arm, które umożliwiają procesorom działanie w trybie bezpiecznym i oznaczanie transakcji pamięci jako „bezpieczne” lub „niebezpieczne”. W takich systemach dane wrażliwe są przechowywane w środowisku bezpiecznym i dostępne tylko bezpośrednio dla niego. Środowisko to udostępnia usługi środowisku niezabezpieczonemu na żądanie.

Głównym ograniczeniem tego typu rozwiązań jest zbyt mała szczegółowość domen: tylko bezpieczne i niebezpieczne. Wraz z wprowadzaniem kolejnych zastosowań wymagających odseparowania od systemu operacyjnego zwiększa się obszar ataku, a luki w zabezpieczeniach mogą prowadzić do przejęcia kontroli nad całym urządzeniem.

Kolejnym ograniczeniem dzisiejszych rozwiązań jest to, że są one przeznaczone do stosunkowo statycznego świata, w którym wszystkie zasoby przypadków użycia są uwzględniane i przydzielane z wyprzedzeniem. Te rozwiązania nie są wystarczające w przypadku dynamicznych zastosowań, w których zasoby są przydzielane na żądanie.

Dodatkowo interfejsy API używane poza systemem operacyjnym Android są rozproszone i ograniczają naszą możliwość wdrażania przypadków użycia na skalę Androida, w tym podstawowych funkcji, takich jak Keymint i Gatekeeper.

Aby rozwiązać te ograniczenia i umożliwić Androidowi stworzenie solidnych podstaw dla przypadków użycia nowej generacji, w Androidzie 13 wprowadziliśmy bezpieczną wirtualizację w postaci Android Virtualization Framework (AVF).

Głównym celem AVF jest zapewnienie bezpiecznego i prywatnego środowiska wykonawczego dla przypadków użycia nowej generacji.