Présentation du Framework de virtualisation Android (AVF)

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 fortes, voire formellement vérifiées, que celles offertes par le bac à sable d'application d'Android. Android fournit une implémentation de référence de tous les composants nécessaires à l'implémentation d'AVF. AVF n'est compatible qu'avec les appareils ARM64. La figure 1 illustre l'architecture d'AVF :

Architecture AVF

Figure 1 : Architecture AVF.

Vous trouverez ci-dessous les définitions des termes les plus importants de la figure 1 :

apexd et zipfuse
Monte 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 plusieurs fichiers de manière sécurisée entre Android et la pVM (hôte et invité).
binder
Moyen principal de communication entre les VM.
crosvm
crosvm est un moniteur de machine virtuelle écrit en Rust. Il alloue de la mémoire à la VM, crée des threads de processeur virtuel et implémente les backends des périphériques virtuels.
Image générique du noyau (GKI)
Image de démarrage certifiée par Google, contenant un noyau GKI créé à partir d'un arbre source Android Common Kernel (ACK) et pouvant être flashée sur la partition de démarrage d'un appareil Android. Pour en savoir plus, consultez la présentation du noyau.
hyperviseur
 Technologie de virtualisation utilisée par AVF, également appelée pKVM. L'hyperviseur maintient l'intégrité du code exécuté et la confidentialité des ressources de la pVM, même si l'hôte Android ou l'une des autres pVM sont compromis.
API Java
 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 et exécuté dans une pVM.
Microdroid Manager
Gère le cycle de vie de la VM protégée, à l'intérieur de la VM protégée, et le disque d'instance.
API native
Sous-ensemble du kit de développement natif (NDK) Android.
Machine virtuelle protégée basée sur le noyau (pKVM)
 Consultez Hyperviseur.
Firmware pVM (pvmfw)
Le premier code qui s'exécute sur une pVM, pvmfw, valide la charge utile et dérive le secret par VM.
Machine virtuelle protégée (pVM)

Environnement d'exécution isolé (invité) avec défiance mutuelle qui s'exécute à côté du 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 les 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 qui les prennent en charge.

VirtualizationService

Service Android qui gère le cycle de vie des PV.

Étapes suivantes

  • Pour mieux comprendre la nécessité d'AVF, consultez Pourquoi AVF ?.
  • Pour savoir comment AVF peut être utilisé pour la compilation isolée, consultez Cas d'utilisation.
  • Pour une explication plus détaillée de l'architecture de l'implémentation de référence AVF, consultez 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 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 sur les composants individuels, consultez le dépôt AOSP.