Le framework de virtualisation Android (AVF) fournit des environnements d'exécution sécurisés et privés pour l'exécution de 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
- Montage sécurisé des APEX et des 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, dans la pVM et sur le 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
) - Le premier code exécuté sur une pVM,
pvmfw
, vérifie la charge utile et dérive le secret par VM. - machine virtuelle protégée (pVM)
Environnement d'exécution isolé (invité) mutuellement méfiant qui s'exécute avec le système d'exploitation Android principal (hôte). Un aspect important de la sécurité des pVM est que même si l'hôte est compromis, il n'a pas accès à la mémoire d'une pVM. pKVM est l'hyperviseur standard pour exécuter des pVM.
Par rapport aux environnements d'exécution sécurisés (TEE) existants, les pVM offrent un environnement plus riche, y compris la possibilité d'exécuter une mini-distribution Android appelée Microdroid (bien que Microdroid puisse également s'exécuter sur une VM non protégée). Les pVM peuvent être utilisées de manière dynamique et fournissent un ensemble standard d'API dans un environnement sécurisé disponible sur tous les appareils compatibles.
- VirtualizationService
Service Android qui gère le cycle de vie des pVM.
Et maintenant ?
- Pour mieux comprendre la nécessité d'utiliser AVF, consultez Pourquoi 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 VirtualizationService.
- Pour obtenir le code source d'AVF ou une explication détaillée des différents composants, consultez le dépôt AOSP.