Мобильные компьютерные устройства обрабатывают все большие объемы конфиденциальных данных. Наличие таких конфиденциальных данных, а также постоянная связь с внешним миром привели к увеличению инвестиций со стороны злоумышленников, заинтересованных в использовании уязвимостей для достижения своих целей.
Операционные системы с помощью аппаратных модулей управления памятью (MMU) предоставляют абстракции, изолирующие несвязанные процессы друг от друга. Только компоненты, входящие в состав Trusted Computing Base (TCB), могут напрямую программировать эти MMU.
Эта модель стала основой реализации конфиденциальности и безопасности с момента появления Unix-подобных операционных систем. Однако это требование стало проблематичным, поскольку сегодня TCB слишком велик: он включает в себя большинство драйверов устройств и шин, сложные планировщики, файловые системы, сетевой стек и протоколы, кэши, анализаторы и загрузчики исполняемых файлов, а также сокеты. Стало очень сложно обеспечить безопасность каждого уголка этой сложной системы.
Ядро Linux содержит более 20 миллионов строк кода, а скорость изменений и переписывания просто поражает. Этот рост является огромной помощью для Android и нашей экосистемы. Однако большой размер TCB затрудняет обеспечение отсутствия уязвимостей, которые можно использовать.
Поставщики оборудования разработали решения, такие как TrustZone от Arm, которые позволяют процессорам работать в безопасном режиме и помечать транзакции памяти как «безопасные» или «небезопасные». В таких системах конфиденциальные данные хранятся и доступны только в безопасном мире, который предоставляет услуги незащищенному миру по требованию.
Основным ограничением такого рода решений является то, что домены слишком грубы: только безопасные и незащищенные. По мере появления большего количества случаев использования, требующих изоляции от операционной системы, поверхность атаки увеличивается, а уязвимости могут привести к компрометации всего устройства.
Еще одним ограничением сегодняшних решений является то, что они разработаны для относительно статического мира, в котором все ресурсы вариантов использования учитываются и распределяются заранее. Эти решения недостаточно хороши для динамических случаев использования, в которых ресурсы выделяются по требованию.
Кроме того, API-интерфейсы, используемые вне операционной системы Android, фрагментированы и ограничивают наши возможности развертывания вариантов использования в масштабе Android, включая такие фундаментальные функции, как Keymint и Gatekeeper.
Чтобы устранить эти ограничения и позволить Android обеспечить надежную основу для сценариев использования следующего поколения, в Android 13 представлена безопасная виртуализация в виде Android Virtualization Framework (AVF).
Основная цель AVF — предоставить безопасную и конфиденциальную среду выполнения для сценариев использования следующего поколения.