เฟรมเวิร์กการจำลองการทำงานแบบเสมือนของ Android (AVF) มีสภาพแวดล้อมการดำเนินการที่ปลอดภัยและเป็นส่วนตัว สำหรับการดำเนินการโค้ด AVF เหมาะอย่างยิ่งสำหรับกรณีการใช้งานที่เน้นความปลอดภัย ซึ่งต้องมีการรับประกันการแยกที่เข้มงวดกว่า หรือแม้แต่ได้รับการยืนยันอย่างเป็นทางการ มากกว่าที่แซนด์บ็อกซ์ของแอป Android มีให้ Android มีการใช้งานอ้างอิง ของคอมโพเนนต์ทั้งหมดที่จำเป็นในการใช้งาน AVF AVF รองรับเฉพาะ ในอุปกรณ์ ARM64 รูปที่ 1 แสดงสถาปัตยกรรมของ AVF
รูปที่ 1 สถาปัตยกรรม AVF
คำจำกัดความของคำศัพท์ที่สำคัญที่สุดจากรูปที่ 1 มีดังนี้
- apexd และ zipfuse
- ติดตั้ง APEX และ APK ที่นำเข้าจากโฮสต์อย่างปลอดภัย
- authfs
- ระบบไฟล์ FUSE สำหรับแชร์ไฟล์หลายไฟล์ระหว่าง Android กับ pVM (โฮสต์และแขกรับเชิญ) อย่างปลอดภัย
- binder
- วิธีการหลักในการสื่อสารระหว่าง VM
- crosvm
- โปรแกรมตรวจสอบเครื่องเสมือนที่เขียนด้วย Rust โดย crosvm จะจัดสรรหน่วยความจำ VM สร้างเธรด CPU เสมือน และใช้แบ็กเอนด์ของอุปกรณ์เสมือน
- Generic Kernel Image (GKI)
- อิมเมจบูตที่ได้รับการรับรองจาก Google ซึ่งมีเคอร์เนล GKI ที่สร้างจาก โครงสร้างแหล่งที่มาของ Android Common Kernel (ACK) และเหมาะที่จะแฟลชไปยัง พาร์ติชันบูตของอุปกรณ์ Android ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของเคอร์เนล
- ไฮเปอร์ไวเซอร์
- เทคโนโลยีการจำลองเสมือนที่ AVF ใช้ หรือที่เรียกว่า pKVM ไฮเปอร์ไวเซอร์จะรักษาความสมบูรณ์ของโค้ดที่ดำเนินการและความลับของ ชิ้นงานของ pVM แม้ว่า Android โฮสต์หรือ pVM อื่นๆ จะถูกบุกรุกก็ตาม
- Java API
- Java API ของ VirtualizationService ซึ่งมีอยู่ในอุปกรณ์ที่รองรับ AVF เท่านั้น API เหล่านี้เป็นตัวเลือกและไม่ได้เป็นส่วนหนึ่งของ
thebootclasspath - Microdroid
- ระบบปฏิบัติการ Android ขนาดเล็กที่ Google จัดหาให้ซึ่งทำงานใน pVM
- Microdroid Manager
- จัดการวงจรของ pVM ภายใน pVM และดิสก์อินสแตนซ์
- Native API
- ชุดย่อยของ Android Native Developers Kit (NDK)
- เครื่องเสมือนที่ใช้เคอร์เนลที่ได้รับการปกป้อง (pKVM)
- ดู Hypervisor
- เฟิร์มแวร์ pVM (
pvmfw) - โค้ดแรกที่ทำงานใน pVM
pvmfwจะยืนยันเพย์โหลดและสร้าง ข้อมูลลับต่อ VM - เครื่องเสมือนที่ได้รับการปกป้อง (pVM)
สภาพแวดล้อมการดำเนินการที่แยกกันซึ่งไม่น่าเชื่อถือ (แขกรับเชิญ) ซึ่งทำงาน ควบคู่ไปกับระบบปฏิบัติการ Android หลัก (โฮสต์) แง่มุมที่สำคัญอย่างหนึ่งของการรักษาความปลอดภัย pVM คือแม้ว่าโฮสต์จะถูกบุกรุก แต่โฮสต์ก็ไม่มีสิทธิ์เข้าถึงหน่วยความจำของ pVM pKVM เป็นไฮเปอร์ไวเซอร์มาตรฐานสำหรับการเรียกใช้ pVM
เมื่อเทียบกับสภาพแวดล้อมการดำเนินการที่เชื่อถือได้ (TEE) ที่มีอยู่ pVM มีสภาพแวดล้อมที่สมบูรณ์ยิ่งขึ้น ซึ่งรวมถึงความสามารถในการเรียกใช้การกระจาย Android ขนาดเล็กที่เรียกว่า Microdroid (แม้ว่า Microdroid จะเรียกใช้ใน VM ที่ไม่มีการป้องกันได้ด้วย) คุณใช้ pVM แบบไดนามิกได้ และมีชุด API มาตรฐานในสภาพแวดล้อมที่เชื่อถือได้ซึ่งพร้อมใช้งานในอุปกรณ์ทั้งหมดที่รองรับ
- VirtualizationService
บริการ Android ที่จัดการวงจรของ pVM
ต้องทำอะไรต่อ
- หากต้องการทำความเข้าใจความจำเป็นของ AVF ให้ดียิ่งขึ้น โปรดดูเหตุผลที่ต้องมี AVF
- หากต้องการอ่านเกี่ยวกับวิธีใช้ AVF สำหรับการคอมไพล์แบบแยก ให้ไปที่Use Case
- หากต้องการคำอธิบายเชิงลึกเพิ่มเติมเกี่ยวกับสถาปัตยกรรมของการใช้งานอ้างอิง AVF โปรดดูสถาปัตยกรรม AVF
- หากต้องการดูข้อมูลเกี่ยวกับ Microdroid โปรดดูที่ Microdroid
- หากคุณสนใจวิธีที่ AVF จัดการด้านความปลอดภัย โปรดดูความปลอดภัย
- หากต้องการทำความเข้าใจบทบาทของบริการการจำลองเสมือน โปรดดูที่ VirtualizationService
- สำหรับซอร์สโค้ดของ AVF หรือคำอธิบายเชิงลึกเกี่ยวกับคอมโพเนนต์แต่ละรายการ โปรดดูที่เก็บ AOSP