Le framework de virtualisation Android (AVF) fournit des environnements d'exécution sécurisés et privés pour l'exécution du code. L'AVF est idéal pour les cas d'utilisation axés sur la sécurité qui nécessitent des garanties d'isolation plus strictes, voire formellement validées, que celles proposées par le bac à sable d'application Android. Android fournit une implémentation de référence de tous les composants nécessaires à l'implémentation d'AVF. Actuellement, AVF n'est compatible qu'avec les appareils ARM64. La figure 1 illustre l'architecture d'AVF:
Vous trouverez ci-dessous les définitions des termes les plus importants de la figure 1:
- apexd et zipfuse
- Installe de manière sécurisée les APEX et les APK importés depuis l'hôte.
- authfs
- Système de fichiers Fuse permettant de partager de manière sécurisée plusieurs fichiers entre Android et la pVM (hôte et invité).
- liage
- Moyen principal de communication entre les VM.
- crosvm
- Moniteur de machine virtuelle écrit en Rust. crosvm alloue de la mémoire de VM, crée des threads de processeur virtuels et implémente les backends de l'appareil virtuel.
- Image de kernel générique (GKI)
- Image de démarrage certifiée par Google qui contient un noyau GKI créé à partir d'un arbre de sources du noyau commun Android (ACK) et qui peut être flashée sur la partition de démarrage d'un appareil Android. Pour en savoir plus, consultez la présentation du kernel.
- hyperviseur
- Technologie de virtualisation utilisée par AVF, également appelée pKVM. Le hyperviseur préserve l'intégrité du code exécuté et la confidentialité des composants de la pVM, même si Android hôte ou l'une des autres pVM sont compromis.
- API Java
- Les API Java VirtualizationService, qui ne sont présentes que sur les appareils compatibles avec AVF. Ces API sont facultatives et ne font pas partie de
thebootclasspath
. - Microdroid
- Mini-OS Android fourni par Google qui s'exécute dans une pVM.
- Microdroid Manager
- Gère le cycle de vie de la pVM, à l'intérieur de la pVM, et du disque de l'instance.
- API native
- Sous-ensemble du kit de développement natif Android (NDK).
- Machine virtuelle basée sur le noyau protégée (pKVM)
- Voir Hyperviseur.
- Micrologiciel pVM (
pvmfw
) - Premier code qui s'exécute sur une pVM,
pvmfw
vérifie la charge utile et dérive le secret par VM. - protégée (pVM)
Environnement d'exécution isolé ("invité") mutuellement moins approuvé qui s'exécute sur le système d'exploitation Android principal ("hôte"). Les VM préemptives sont gérées par la pKVM.
Par rapport aux environnements d'exécution sécurisés (TEE) existants, les pVM offrent un environnement plus riche, y compris une distribution mini-Android appelée Microdroid. Les pVM peuvent être utilisées de manière dynamique et fournissent un ensemble standard d'API disponibles sur tous les appareils compatibles.
- VirtualizationService
Service Android qui gère le cycle de vie des pVM.
Et maintenant ?
- Si vous souhaitez en savoir plus sur l'utilisation du framework AVF, consultez Pourquoi choisir ce filtre AVF ?.
- Pour découvrir comment l'AVF peut être utilisé pour la compilation isolée, consultez la section Cas d'utilisation.
- Pour une explication plus détaillée de l'architecture de l'implémentation de référence AVF, consultez la section Architecture AVF.
- Pour en savoir plus sur Microdroid, consultez Microdroid.
- Pour en savoir plus sur la façon dont AVF gère la sécurité, consultez la section Sécurité.
- Pour comprendre le rôle du service de virtualisation, consultez la page VirtualizationService.
- Pour obtenir le code source d'AVF ou une explication détaillée des différents composants, consultez le dépôt AOSP.