Cette page présente des cas d'utilisation courants d'AVF.
Compilation isolée
En tant qu'enclave logicielle sécurisée, une machine virtuelle (VM) protégée fournit un environnement sécurisé pour compiler du code sensible à la sécurité.
Cet environnement permet de déplacer la compilation des fichiers JAR bootclasspath et du serveur système (déclenchée par une mise à jour APEX) du démarrage anticipé à avant le redémarrage, et réduit considérablement le temps de démarrage après la mise à jour APEX.
L'implémentation se trouve dans l'com.android.compos APEX. Ce
composant est facultatif et peut être inclus à l'aide d'un makefile.
L'objectif de sécurité est de compiler de manière fiable les entrées vérifiées et de produire la sortie de manière isolée. Android, en tant que client non approuvé, ne peut en aucun cas modifier la sortie de compilation, sauf en cas d'échec (lorsqu'Android revient à la compilation au moment du démarrage).
Le service de compilation de la VM ne génère une signature que s'il n'y a aucune erreur pendant toute la compilation. Android peut récupérer la clé publique de la VM pour la vérification de la signature.
La clé de la VM est générée à partir du profil DICE de la VM, défini par les APEX et les APK montés sur la VM, en plus d'autres paramètres de la VM, tels que la capacité de débogage.
Pour déterminer si la clé publique ne provient pas d'une VM inattendue, Android démarre la VM pour vérifier si la clé est correcte. La VM est démarrée au démarrage anticipé après chaque mise à jour APEX.
Avec le démarrage vérifié de la VM protégée, le service de compilation n'exécute que le code vérifié. Par conséquent, le code peut déterminer d'accepter uniquement les entrées qui remplissent certaines conditions. Par exemple, il peut accepter un fichier d'entrée uniquement si son nom et le condensé fs-verity sont définis dans une liste d'autorisation.
Toutes les API exposées de la VM sont des surfaces d'attaque. Tous les fichiers d'entrée et tous les paramètres sont supposés provenir d'un client non approuvé. Ils doivent être vérifiés et examinés avant d'être traités.
L'intégrité des fichiers d'entrée et de sortie est vérifiée par la VM, les fichiers étant stockés sur Android en tant que serveur de fichiers non approuvé, comme suit :
- Le contenu d'un fichier d'entrée doit être vérifié avant utilisation à l'aide de l'algorithme
fs-verity. Pour qu'un fichier d'entrée soit disponible dans la VM, son hachage racine doit être fourni dans un conteneur (APK) qui contribue au profil DICE de la VM. Avec le hachage racine approuvé, un pirate informatique ne peut pas falsifier l'entrée sans être détecté. - L'intégrité du fichier de sortie doit être maintenue dans la VM. Même si un fichier de sortie est stocké sur Android, lors de la génération, l'intégrité est maintenue avec le même format d'arborescence
fs-verity, mais peut être mise à jour de manière dynamique. Le fichier de sortie final peut être identifié avec le hachage racine, qui est isolé dans la VM. Le service de la VM protège les fichiers de sortie par signature.
Environnement de développement Linux
Android a toujours été le seul système d'exploitation majeur qui ne permet pas aux utilisateurs de développer des applications sur la plate-forme elle-même. Avec l'introduction de l'environnement de développement Linux, nous visons à fournir un environnement de développement basé sur Linux aux utilisateurs Android qui sont des développeurs. À l'avenir, nous prévoyons d'étendre nos efforts pour permettre à nos partenaires d'implémenter des cas d'utilisation innovants de VM, comme l'exécution d'applications d'interface utilisateur graphique et même de jeux.
L'environnement de développement Linux est disponible sur certains appareils et s'exécute sur une machine virtuelle non protégée.
Le flux de haut niveau est le suivant :
- Pour utiliser l'environnement de développement Linux, activez les options pour les développeurs.
- Une fois les options pour les développeurs activées, l'application Terminal s'affiche sur votre lanceur d'applications.
- Lancez l'application Terminal depuis votre lanceur d'applications.
- Si nécessaire, l'application Terminal télécharge l'image de l'OS depuis Play.
- L'application Terminal utilise le framework de virtualisation Android (AVF) pour créer une machine virtuelle (VM).
- AVF exécute ensuite la VM avec l'image de l'OS.
- La machine virtuelle démarre l'OS à partir de l'image.
- Une fois la VM démarrée, la WebView de l'application Terminal se connecte à un service Web de la machine virtuelle. Ce service fournit un accès au terminal via HTTP.
- Vous interagissez avec le terminal en saisissant des commandes et en affichant le résultat dans l'application.
Les composants de haut niveau de la VM Linux sont les suivants :
- Application Terminal : application Android fournissant une interface de terminal. Elle utilise une WebView pour se connecter à un service Web exécuté dans la VM pour l'interaction. Cette application est désactivée par défaut. Activez-la dans les paramètres pour les développeurs.
- Framework de virtualisation Android (AVF) : sous-système Android existant pour la création et la gestion de VM. Il nécessite une modification minimale pour prendre en charge les images d'OS personnalisées pour cette fonctionnalité.
- Machine virtuelle : VM générée par AVF. Elle héberge le service de terminal, et AVF la crée spécifiquement pour la fonctionnalité de l'application Terminal.
- Image de l'OS : image de l'OS légèrement modifiée basée sur Debian provenant de Debian en amont. L'application Terminal télécharge cette image depuis un serveur Google externe. Elle sert de base au fonctionnement de la VM.
- Agent invité : nouveau logiciel dans la VM. Il signale l'état de l'OS à AVF et permet de contrôler la machine virtuelle.
- ttyd : logiciel Open Source exécuté dans la VM qui implémente l'émulation de terminal via HTTP. La WebView de l'application Terminal s'y connecte.
- Gestionnaire de partage de connexion : sous-système Android existant. Il fournit un accès réseau à la machine virtuelle en partageant la connexion de la VM avec l'appareil Android.
Sécurité des contenus sur l'appareil
La sécurité des contenus sur l'appareil est une solution de sécurité des contenus préservant la confidentialité, créée par l'équipe de sécurité des contenus sur l'appareil. Elle effectue la classification de la sécurité des contenus pour différents produits Google sur les appareils 1P/3P et protège plus d'un milliard d'utilisateurs contre les contenus abusifs, sans nécessiter l'envoi de données utilisateur aux serveurs Google. Elle est conçue pour respecter les principes de Private Compute Core (PCC) afin de vérifier une communication transparente et préservant la confidentialité entre le client, la machine virtuelle (VM) et d'empêcher toute exfiltration de données utilisateur. Elle peut être utilisée pour des tâches telles que l'activation de la détection des utilisations abusives sur les appareils, comme la détection des menaces en direct de Play Protect.
Dans ce cas d'utilisation, le système utilise des machines virtuelles protégées pour exécuter sa classification de modèle pour la détection des menaces en direct de Play Protect, ce qui améliore considérablement la sécurité de ses modèles et de ses protections. Cela empêche la rétro-ingénierie et la manipulation par des pirates informatiques, même sur les appareils rootés, en vérifiant que seul le code approuvé s'exécute et que ses opérations sont masquées des processus externes.
Les flux de haut niveau sont les suivants :
- La détection des menaces en direct envoie un ping aux Private Compute Services pour démarrer la VM. Private Compute Services est un intermédiaire axé sur la confidentialité entre le PCC et le serveur cloud.
- Private Compute Services démarre la VM et obtient sa clé publique à partir de la VM.
- Les services de calcul privés transfèrent la propriété de la VM à la détection des menaces en direct de Play Protect.
- Private Compute Services envoie l'attestation et la clé publique au serveur.
- Le serveur vérifie l'attestation et chiffre les protections avec la clé publique de la VM.
- Le serveur renvoie ensuite les protections chiffrées à l'appareil.
- Ensuite, la détection des menaces en direct sur l'appareil peut utiliser la protection chiffrée dans la VM. La VM est la seule entité disposant de la clé privée qui peut déchiffrer les protections.
Les composants de haut niveau sont les suivants :
- Serveur : chiffre et fournit des protections chiffrées à la VM.
- Private Compute Services : utilisés pour démarrer la VM et servir d'intermédiaire pour la communication avec la VM, et pour montrer de manière transparente qu'aucune donnée utilisateur ne transite par Astrea vers le serveur.
- Détection des menaces en direct de Play Protect :
- Contient et utilise les classificateurs de modèles fournis par la sécurité des contenus sur l'appareil.
- Accepte la propriété de la VM et la conserve pour une utilisation de classification.
- Démarre et arrête la VM selon les besoins.
OEM
Un OEM peut utiliser AVF pour des cas d'utilisation personnalisés. Par exemple, OPPO utilise AVF pour activer son espace de calcul privé basé sur l'IA. La première application de cet espace fournit une solution de contrôle des risques sur l'appareil pour les clients d'applications, qui s'exécute sur une machine virtuelle. Le système lutte contre les menaces liées aux activités illicites et offre une protection contre divers dangers.