Présentation du cadre de virtualisation Android (AVF)

Android Virtualization Framework (AVF) fournit des environnements d'exécution sécurisés et privés pour l'exécution du code. AVF est idéal pour les cas d'utilisation axés sur la sécurité qui nécessitent des assurances d'isolation plus solides, voire formellement vérifiées, par rapport à celles offertes par le bac à sable d'applications d'Android. Android fournit une implémentation de référence de tous les composants nécessaires à la mise en œuvre d'AVF. Actuellement, AVF n'est pris en charge que sur les appareils ARM64. La figure 1 montre l'architecture d'AVF :

Architecture AVF

Figure 1. Architecture AVF

Voici les définitions des termes les plus importants de la figure 1 :

apexd et zipfuse
Monte en toute sécurité les APEX et les APK importés de l'hôte.
authfs
Un système de fichiers fusible pour le partage de sécurité de plusieurs fichiers entre Android et pVM (hôte et invité).
classeur
Principal moyen de communication inter-VM.
crosvm
Un moniteur de machine virtuelle écrit en rust. crosvm alloue de la mémoire VM, crée des threads de CPU virtuels et implémente les back-ends du périphérique virtuel.
Image générique du noyau (GKI)
Une image de démarrage certifiée par Google qui contient un noyau GKI construit à partir d'une arborescence source Android Common Kernel (ACK) et peut être flashée sur la partition de démarrage d'un appareil Android. Pour plus d'informations, consultez la présentation du noyau .
hyperviseur
La technologie de virtualisation utilisée par AVF, également connue sous le nom de pKVM . L'hyperviseur maintient l'intégrité du code exécuté et la confidentialité des actifs de la pVM, même si Android ou l'une des autres pVM est compromis.
API Java
Les API Java VirtualizationService, qui sont présentes uniquement sur les appareils prenant en charge AVF. Ces API sont facultatives et ne font pas partie du thebootclasspath .
Microdroïde
Un système d'exploitation mini-Android fourni par Google qui s'exécute dans une pVM.
Gestionnaire de microdroïdes
Gère le cycle de vie de la pVM, à l'intérieur de la pVM et du disque d'instance.
API native
Un 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 qui s'exécute sur une pVM, pvmfw vérifie la charge utile et dérive le secret par machine virtuelle.
machine virtuelle protégée (pVM)

Un environnement d'exécution isolé (« invités ») mutuellement méfiant qui s'exécute aux côtés du système d'exploitation Android principal (« hôte »). Les pVM sont gérés par le pKVM.

Par rapport aux environnements d'exécution de confiance (TEE) existants, les pVM fournissent un environnement plus riche, comprenant une mini distribution 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 qui les prennent en charge.

Service de virtualisation

Le service Android qui gère le cycle de vie des pVM.

Et après?

  • Si vous souhaitez mieux comprendre la nécessité de l'AVF, reportez-vous à Pourquoi l'AVF ? .
  • Pour savoir comment AVF peut être utilisé pour la compilation isolée, reportez-vous à Cas d'utilisation .
  • Si vous souhaitez une explication plus approfondie de l'architecture de l'implémentation de référence AVF, reportez-vous à Architecture AVF .
  • Si vous souhaitez en savoir plus sur Microdroid, reportez-vous à Microdroid .
  • Si vous êtes intéressé par la manière dont AVF gère la sécurité, reportez-vous à Sécurité .
  • Pour comprendre le rôle du service de virtualisation, reportez-vous à VirtualizationService .
  • Pour le code source d'AVF ou des explications détaillées sur les composants individuels, reportez-vous au référentiel AOSP.