Android Sanallaştırma Çerçevesi (AVF), kod yürütmek için güvenli ve gizli yürütme ortamları sağlar. AVF, Android'in uygulama korumalı alanı tarafından sunulanlardan daha güçlü ve hatta resmi olarak doğrulanmış yalıtım güvenceleri gerektiren güvenlik odaklı kullanım alanları için idealdir. Android, AVF'yi uygulamak için gereken tüm bileşenlerin referans uygulamasını sağlar. AVF şu anda yalnızca ARM64 cihazlarda desteklenmektedir. Şekil 1'de AVF'nin mimarisi gösterilmektedir:
Şekil 1'deki en önemli terimlerin tanımları aşağıda verilmiştir:
- apexd ve zipfuse
- Ana makineden içe aktarılan APEX'leri ve APK'ları güvenli bir şekilde bağlar.
- authfs
- Android ile pVM (ana makine ve konuk) arasında birden fazla dosyayı güvenli bir şekilde paylaşmak için bir füzyon dosya sistemi.
- binder
- VM'ler arası birincil iletişim aracı.
- crosvm
- Rust'ta yazılmış bir sanal makine izleyici. crosvm, sanal makine belleği ayırır, sanal CPU iş parçacıkları oluşturur ve sanal cihazın arka uçlarını uygular.
- Genel Çekirdek Görüntüsü (GKI)
- Google tarafından sertifikalandırılmış, Android Ortak Çekirdeği (ACK) kaynak ağacından oluşturulmuş bir GKI çekirdeği içeren ve Android cihazın önyükleme bölümüne yazılmaya uygun bir önyükleme resmi. Daha fazla bilgi için Çekirdeğe genel bakış başlıklı makaleyi inceleyin.
- hypervisor
- AVF tarafından kullanılan sanallaştırma teknolojisi. pKVM olarak da bilinir. Ana makine Android'in veya diğer pVM'lerden herhangi birinin güvenliği ihlal edilse bile sanal makine yöneticisi, yürütülen kodun bütünlüğünü ve pVM'nin öğelerinin gizliliğini korur.
- Java API
- Yalnızca AVF desteği olan cihazlarda bulunan VirtualizationService Java API'leri. Bu API'ler isteğe bağlıdır ve
thebootclasspath
'ün bir parçası değildir. - Microdroid
- pVM'de çalışan, Google tarafından sağlanan mini Android OS.
- Microdroid Manager
- pVM içindeki pVM yaşam döngüsünü ve örnek diskini yönetir.
- Yerel API
- Android Native Developers Kit'in (NDK) bir alt kümesi.
- korunan çekirdek tabanlı sanal makine (pKVM)
- Hipervizör başlıklı makaleyi inceleyin.
- pVM donanım yazılımı (
pvmfw
) - pVM'de çalışan ilk kod olan
pvmfw
, yükü doğrular ve sanal makine başına gizli anahtarı oluşturur. - korunan sanal makine (pVM)
Ana Android işletim sistemiyle (ana makine) birlikte çalışan, birbirine güvenmeyen izole bir yürütme ortamı (misafir). pVM güvenliğinin önemli bir yönü, ana makinenin güvenliği ihlal edilse bile ana makinenin pVM'nin belleğine erişememesidir. pKVM, pVM çalıştırmak için kullanılan standart hipervizördür.
Mevcut güvenilir yürütme ortamlarına (TEE'ler) kıyasla pVM'ler, Microdroid adlı bir mini Android dağıtımını çalıştırma özelliği de dahil olmak üzere daha zengin bir ortam sağlar (Microdroid, korumasız bir sanal makinede de çalışabilir). pVM'ler dinamik olarak kullanılabilir ve destekledikleri tüm cihazlarda kullanılabilen güvenilir bir ortamda standart bir API grubu sağlar.
- VirtualizationService
pVM'lerin yaşam döngüsünü yöneten Android hizmeti.
Sırada ne var?
- AVF'ye olan ihtiyacı daha iyi anlamak istiyorsanız Neden AVF? başlıklı makaleyi inceleyin.
- AVF'nin izole derleme için nasıl kullanılabileceği hakkında bilgi edinmek istiyorsanız Kullanım alanları bölümüne bakın.
- AVF referans uygulamasının mimarisiyle ilgili daha ayrıntılı bir açıklama için AVF mimarisine bakın.
- Microdroid hakkında bilgi edinmek istiyorsanız Microdroid başlıklı makaleyi inceleyin.
- AVF'nin güvenliği nasıl ele aldığı hakkında bilgi edinmek istiyorsanız Güvenlik başlıklı makaleyi inceleyin.
- Sanallaştırma hizmetinin rolünü anlamak için VirtualizationService'e bakın.
- AVF'nin kaynak kodu veya bileşenler hakkında ayrıntılı açıklama için AOSP deposuna bakın.