Android 가상화 프레임워크(AVF)는 코드 실행을 위한 안전한 비공개 실행 환경을 제공합니다. AVF는 Android의 앱 샌드박스에서 제공되는 것보다 강력하면서도 보다 공식적으로 검증된 격리 보장이 필요한 보안 지향 사용 사례에 이상적입니다. Android는 AVF를 구현하는 데 필요한 모든 구성요소의 참조 구현을 제공합니다. 현재 AVF는 ARM64 기기에서만 지원됩니다. 그림 1은 AVF의 아키텍처를 보여줍니다.
다음은 그림 1에서 가장 중요한 용어의 정의입니다.
- apexd 및 zipfuse
- 호스트에서 가져온 APEX 및 APK를 안전하게 마운트합니다.
- authfs
- Android와 pVM(호스트 및 게스트) 간에 여러 파일을 공유하는 보안용 퓨즈 파일 시스템입니다.
- binder
- VM 간 통신의 주요 수단입니다.
- crosvm
- rust로 작성된 가상 머신 모니터입니다. crosvm은 VM 메모리를 할당하고 가상 CPU 스레드를 생성하며 가상 기기의 백엔드를 구현합니다.
- GKI(Generic Kernel Image)
- Google에서 인증한 부팅 이미지로 ACK(Android Common Kernel) 소스 트리에서 빌드한 GKI 커널을 포함하며 Android 기기의 부팅 파티션에 플래시하는 데 적합합니다. 자세한 내용은 커널 개요를 참고하세요.
- hypervisor
- AVF에 사용되는 가상화 기술로, pKVM이라고도 합니다. hypervisor는 Android 또는 다른 pVM이 손상되더라도 실행된 코드의 무결성과 pVM 애셋의 기밀성을 보존합니다.
- Java API
- VirtualizationService Java API로, AVF를 지원하는 기기에만 있습니다. 이 API는 선택사항이며
thebootclasspath
의 일부는 아닙니다. - Microdroid
- pVM에서 실행되는 Google 제공 미니 Android OS입니다.
- Microdroid Manager
- pVM 내부의 pVM 수명 주기와 인스턴스 디스크를 관리합니다.
- Native API
- Android NDK(Native Developers Kit)의 하위 집합입니다.
- 보호된 커널 기반 가상 머신(pKVM)
- Hypervisor를 참고하세요.
- pVM 펌웨어(
pvmfw
) - pVM에서 실행되는 첫 번째 코드인
pvmfw
는 페이로드를 확인하고 VM별 보안 비밀을 파생합니다. - 보호된 가상 머신(pVM)
기본 Android 운영체제('호스트')와 함께 실행되는, 상호 분리되어 있으며 신뢰할 수 없는 실행 환경('게스트')입니다. pVM은 pKVM에서 관리됩니다.
기존의 신뢰할 수 있는 실행 환경(TEE)과 비교할 때 pVM은 Microdroid라는 미니 Android 배포를 포함한 보다 풍부한 환경을 제공합니다. pVM은 동적으로 사용할 수 있으며, pVM을 지원하는 모든 기기에서 사용 가능한 표준 API 세트를 제공합니다.
- VirtualizationService
pVM의 수명 주기를 관리하는 Android 서비스
다음 단계는 무엇일까요?
- AVF의 필요성에 관해 더 자세히 알아보려면 AVF를 사용해야 하는 이유를 참고하세요.
- 격리된 컴파일에 AVF를 사용하는 방법을 알아보려면 사용 사례를 참고하세요.
- AVF 참조 구현의 아키텍처에 관한 자세한 설명은 AVF 아키텍처를 참고하세요.
- Microdroid에 관해 알아보려면 Microdroid를 참고하세요.
- AVF에서 보안이 처리되는 방법에 관심이 있다면 보안을 참고하세요.
- 가상화 서비스의 역할을 이해하려면 VirtualizationService를 참고하세요.
- AVF의 소스 코드 또는 개별 구성요소에 관한 자세한 설명은 AOSP 저장소를 참고하세요.