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

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

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

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

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

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

Рисунок 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.
  5. Приложение «Терминал» использует Android Virtualization Framework (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 приложения «Терминал» подключается к нему.
  • Tethering Manager: существующая подсистема Android. Она обеспечивает сетевой доступ к виртуальной машине, подключая её к устройству на базе Android.

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

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

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

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

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

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

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

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

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