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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

среда разработки Linux

Традиционно Android был единственной крупной операционной системой, которая не позволяла пользователям разрабатывать приложения непосредственно на платформе. С появлением среды разработки Linux мы стремимся предоставить разработчикам Android среду разработки на базе Linux. В будущем мы планируем расширить эту работу, чтобы дать нашим партнерам возможность реализовывать инновационные сценарии использования виртуальных машин, такие как запуск приложений с графическим пользовательским интерфейсом и даже игр.

Среда разработки Linux доступна на некоторых устройствах и работает в незащищенной виртуальной машине.

Пример использования среды разработки Linux

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

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

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

Основные компоненты виртуальной машины Linux следующие:

  • Терминальное приложение: Android-приложение, предоставляющее терминальный интерфейс. Оно использует WebView для подключения к веб-сервису, работающему в виртуальной машине, для взаимодействия. Это приложение отключено по умолчанию. Активируйте его в настройках разработчика.
  • Android Virtualization Framework (AVF): существующая подсистема Android для создания и управления виртуальными машинами. Для поддержки пользовательских образов ОС для этой функции требуется минимальная модификация.
  • Виртуальная машина: виртуальная машина, созданная AVF. Она размещает службу терминалов, и AVF создает ее специально для обеспечения функциональности приложения «Терминал».
  • Образ ОС: Немного модифицированный образ ОС на основе Debian из основного репозитория Debian. Приложение «Терминал» загружает этот образ с внешнего сервера Google. Он служит основой для работы виртуальной машины.
  • Гостевой агент: новое программное обеспечение в виртуальной машине. Он передает информацию о состоянии операционной системы в AVF и обеспечивает управление виртуальной машиной.
  • ttyd : Программное обеспечение с открытым исходным кодом, работающее в виртуальной машине и реализующее эмуляцию терминала по протоколу HTTP. WebView приложения Terminal подключается к нему.
  • Менеджер модема: существующая подсистема Android. Она обеспечивает сетевой доступ к виртуальной машине путем подключения виртуальной машины к устройству под управлением Android.

Безопасность содержимого на устройстве

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

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

Основные потоки информации представлены ниже:

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

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

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

OEM-производители

Производитель оборудования может использовать AVF для решения индивидуальных задач. Например, OPPO использует AVF для создания своего частного вычислительного пространства для искусственного интеллекта . Первое приложение этого пространства предоставляет решение для контроля рисков на устройстве для клиентов приложений, работающих в виртуальной машине. Система противодействует угрозам, связанным с незаконной деятельностью, обеспечивая защиту от различных опасностей.