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