На этой странице приведены распространенные варианты использования AVF.
Изолированная компиляция
Как программно-безопасный анклав, защищенная виртуальная машина (ВМ) обеспечивает безопасную среду для компиляции кода, чувствительного к безопасности. Эта среда позволяет перенести компиляцию bootclasspath
и JAR-файлов системного сервера (запущенных обновлением APEX) с ранней загрузки на этап перед перезагрузкой и значительно сокращает время загрузки после обновления APEX.
Реализация находится в com.android.compos
APEX. Этот компонент необязателен и может быть включен с помощью makefile .
Целью безопасности является правдивая компиляция проверенных входных данных и создание выходных данных в изоляции; Android как недоверенный клиент не может изменить выходные данные компиляции каким-либо образом, кроме как вызвать ее сбой (когда Android возвращается к компиляции во время загрузки).
Служба компиляции в виртуальной машине генерирует подпись только в том случае, если в течение всей компиляции не было ошибок. Android может получить открытый ключ из виртуальной машины для проверки подписи.
Ключ виртуальной машины генерируется из профиля DICE виртуальной машины, определяемого APEX и APK, смонтированными на виртуальной машине, в дополнение к другим параметрам виртуальной машины, таким как отладочная способность.
Чтобы определить, не принадлежит ли открытый ключ неожиданной виртуальной машине, Android загружает виртуальную машину, чтобы определить, является ли ключ правильным. Виртуальная машина загружается при ранней загрузке после каждого обновления APEX.
С Verified Boot защищенной виртуальной машины служба компиляции запускает только проверенный код. В результате код может определить, принимать ли только входные данные, удовлетворяющие определенным условиям, например, принимать только входной файл, если его имя и дайджест fs-verity
определены в списке разрешенных.
Любые открытые API из виртуальной машины являются поверхностями атаки. Все входные файлы и параметры предполагаются от ненадежного клиента и должны быть проверены и проверены перед обработкой.
Целостность входных и выходных файлов проверяется виртуальной машиной, при этом файлы хранятся на Android как на недоверенном файловом сервере, следующим образом:
- Содержимое входного файла должно быть проверено перед использованием с помощью алгоритма
fs-verity
. Чтобы входной файл стал доступен в виртуальной машине, его корневой хэш должен быть предоставлен в контейнере (APK), который вносит вклад в профиль DICE виртуальной машины. С доверенным корневым хэшем злоумышленник не может подделать входные данные, не будучи обнаруженным. - Целостность выходного файла должна поддерживаться в виртуальной машине. Даже если выходной файл хранится на Android, во время генерации целостность поддерживается с тем же форматом дерева
fs-verity
но может динамически обновляться. Окончательный выходной файл может быть идентифицирован с помощью корневого хеша, который изолирован в виртуальной машине. Служба в виртуальной машине защищает выходные файлы с помощью подписи.
Среда разработки Linux
Android традиционно была единственной крупной операционной системой, которая не позволяла пользователям разрабатывать приложения на самой платформе. С введением среды разработки Linux мы стремимся предоставить среду разработки на базе Linux пользователям Android, которые являются разработчиками. В будущем мы планируем расширить усилия, чтобы дать возможность нашим партнерам внедрять инновационные варианты использования VM, такие как запуск приложений с графическим пользовательским интерфейсом и даже игр.
Среда разработки Linux доступна на некоторых устройствах и работает на незащищенной виртуальной машине.
Ниже перечислены высокоуровневые компоненты виртуальной машины Linux:
- Приложение терминала: приложение Android, предоставляющее интерфейс терминала. Оно использует WebView для подключения к веб-службе, работающей в виртуальной машине, для взаимодействия. Это приложение отключено по умолчанию. Активируйте его в настройках разработчика.
- Android Virtualization Framework (AVF): существующая подсистема Android для создания и управления виртуальными машинами. Требует минимальной модификации для поддержки пользовательских образов ОС для этой функции.
- Виртуальная машина: VM, которую генерирует AVF. Она размещает службу терминала, и AVF создает ее специально для функциональности приложения Terminal.
- Образ ОС: слегка измененный образ ОС на основе Debian из вышестоящего Debian. Приложение Terminal загружает этот образ с внешнего сервера Google. Он служит основой для работы виртуальной машины.
- Гостевой агент: Новое программное обеспечение в виртуальной машине. Оно сообщает AVF о состоянии ОС и обеспечивает управление виртуальной машиной.
- ttyd : программное обеспечение с открытым исходным кодом, работающее в виртуальной машине, которое реализует эмуляцию терминала через HTTP. WebView приложения Terminal подключается к нему.
- Tethering Manager: существующая подсистема Android. Обеспечивает сетевой доступ к виртуальной машине, привязывая ее к устройству на базе Android.