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

На этой странице приведены распространенные варианты использования AVF.

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

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

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

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

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

Целью безопасности является правдивая компиляция проверенных входных данных и создание выходных данных в изоляции; 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

Рисунок 2. Вариант использования среды разработки Linux.

Поток высокого уровня выглядит следующим образом:

  1. Чтобы использовать среду разработки Linux, включите параметры разработчика .
  2. После включения параметров разработчика приложение «Терминал» появится на панели запуска вашего домашнего компьютера.
  3. Запустите приложение «Терминал» из домашней панели запуска.
  4. При необходимости приложение «Терминал» загружает образ ОС из Play.
  5. Приложение «Терминал» использует Android Virtualization Framework (AVF) для создания виртуальной машины (ВМ).
  6. Затем AVF запускает виртуальную машину с образом ОС.
  7. Виртуальная машина загружает ОС из образа.
  8. После загрузки виртуальной машины WebView в приложении Terminal подключается к веб-сервису в виртуальной машине. Этот сервис обеспечивает терминальный доступ по HTTP.
  9. Вы взаимодействуете с терминалом, вводя команды и просматривая вывод в приложении.

Ниже перечислены высокоуровневые компоненты виртуальной машины 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.

Безопасность контента на устройстве

Content Safety On-device — это решение для обеспечения безопасности контента, сохраняющее конфиденциальность, созданное командой Content Safety On-device. Оно выполняет классификацию безопасности контента для различных продуктов Google на устройствах 1P/3P и защищает более 1 млрд пользователей от оскорбительного контента, не требуя отправки пользовательских данных обратно на серверы Google. Оно разработано с учетом принципов Private Compute Core (PCC) для обеспечения прозрачной и сохраняющей конфиденциальность связи между клиентом, виртуальной машиной (VM) и предотвращения любой эксфильтрации пользовательских данных. Его можно использовать для таких вещей, как включение обнаружения злоупотреблений на устройствах, например, обнаружения угроз Play Protect в реальном времени .

В этом варианте использования система использует защищенные виртуальные машины для запуска своей классификации моделей для обнаружения угроз Play Protect в реальном времени, что затем значительно повышает безопасность ее моделей и защит. Это предотвращает обратную разработку и манипуляции со стороны злоумышленников, даже на устройствах с root-доступом, гарантируя, что только одобренный код запускается, а его операции скрыты от внешних процессов.

Потоки высокого уровня следующие:

  1. Обнаружение угроз в реальном времени отправляет пинги Private Compute Services для запуска VM. Private Compute Services — это ориентированный на конфиденциальность посредник между PCC и облачным сервером
  2. Private Compute Services запускает виртуальную машину и получает от нее свой открытый ключ.
  3. Private Compute Services передает право собственности на виртуальную машину для обнаружения угроз в реальном времени Play Protect
  4. Private Compute Services отправляет подтверждение и открытый ключ на сервер
  5. Сервер проверяет аттестацию и шифрует защиту с помощью открытого ключа виртуальной машины
  6. Затем сервер отправляет зашифрованные защитные данные обратно на устройство.
  7. Затем обнаружение угроз на устройстве в реальном времени может использовать зашифрованную защиту внутри виртуальной машины. Виртуальная машина — это единственная сущность с закрытым ключом, которая может расшифровать защиту

Компоненты высокого уровня следующие:

  • Сервер: шифрование и предоставление зашифрованной защиты виртуальной машине
  • Частные вычислительные службы: используются для запуска виртуальной машины и посредничества в коммуникации с виртуальной машиной, а также демонстрируют прозрачность того, что никакие пользовательские данные не передаются через Astrea на сервер.
  • Play Protect: обнаружение угроз в реальном времени:
    • Содержит и использует классификаторы моделей, предоставляемые Content Safety on-device
    • Принимает право собственности на виртуальную машину и сохраняет ее для использования в целях классификации
    • Запускает и останавливает виртуальную машину по мере необходимости.