Примеры использования

В этом документе содержатся общие примеры использования AVF.

Изолированная компиляция

Как программно-безопасный анклав, защищенная виртуальная машина обеспечивает безопасную среду для компиляции кода, чувствительного к безопасности. Эта среда позволяет перенести компиляцию bootclasspath и JAR-файлов системного сервера (запущенных обновлением APEX) с ранней загрузки на этап перед перезагрузкой и значительно сокращает время загрузки после обновления APEX.

Реализация находится в com.android.compos APEX. Этот компонент необязателен и может быть включен с помощью makefile .

Изолированная компиляция

Рисунок 1. Компиляция JAR-файлов в основных обновлениях

Целью безопасности является правдивая компиляция проверенных входных данных и создание выходных данных в изоляции; Android как недоверенный клиент не может изменить выходные данные компиляции каким-либо образом, кроме как вызвать ее сбой (когда Android возвращается к компиляции во время загрузки).

Служба компиляции в виртуальной машине генерирует подпись только в том случае, если в течение всей компиляции не было ошибок. Android может получить открытый ключ из виртуальной машины для проверки подписи.

Ключ виртуальной машины генерируется из профиля DICE виртуальной машины, определяемого APEX и APK, смонтированными на виртуальной машине, в дополнение к другим параметрам виртуальной машины, таким как отладочная способность.

Чтобы определить, не принадлежит ли открытый ключ неожиданной виртуальной машине, Android загружает виртуальную машину, чтобы определить, является ли ключ правильным. Виртуальная машина загружается при ранней загрузке после каждого обновления APEX.

С Verified Boot защищенной виртуальной машины служба компиляции запускает только проверенный код. Таким образом, код может определить, принимать ли только входные данные, удовлетворяющие определенным условиям, например, принимать входной файл только там, где его имя и дайджест fs-verity определены в списке разрешенных.

Любые открытые API из виртуальной машины являются поверхностями атаки. Все входные файлы и параметры предполагаются от ненадежного клиента и должны быть проверены и проверены перед обработкой.

Целостность входных/выходных файлов проверяется виртуальной машиной, при этом файлы хранятся на Android как на недоверенном файловом сервере, следующим образом:

  • Содержимое входного файла должно быть проверено перед использованием с помощью алгоритма fs-verity . Чтобы входной файл стал доступен в виртуальной машине, его корневой хэш должен быть предоставлен в контейнере (APK), который вносит вклад в профиль DICE виртуальной машины. С доверенным корневым хэшем злоумышленник не может подделать входные данные, не будучи обнаруженным.
  • Целостность выходного файла должна поддерживаться в VM. Даже если выходной файл хранится на Android, во время генерации целостность поддерживается с тем же форматом дерева fs-verity но может динамически обновляться. Окончательный выходной файл может быть идентифицирован с помощью корневого хеша, который изолирован в VM. Служба в VM защищает выходные файлы с помощью подписи.