หน้านี้มีกรณีการใช้งานทั่วไปสำหรับ AVF
การคอมไพล์แบบแยก
เครื่องเสมือน (VM) ที่ได้รับการปกป้องเป็นพื้นที่ปลอดภัยของซอฟต์แวร์ ซึ่งมี
สภาพแวดล้อมที่ปลอดภัยในการคอมไพล์โค้ดที่ละเอียดอ่อนด้านความปลอดภัย
สภาพแวดล้อมนี้ช่วยให้ย้ายการคอมไพล์ bootclasspath
และ JAR ของเซิร์ฟเวอร์ระบบ (ที่ทริกเกอร์โดยการอัปเดต APEX) จากการบูตช่วงแรกไปเป็นการบูตก่อนรีบูตได้ และช่วยลดเวลาในการบูตหลังการอัปเดต APEX ได้อย่างมาก
การใช้งานอยู่ใน com.android.compos
APEX คอมโพเนนต์นี้ไม่บังคับและสามารถรวมได้โดยใช้ makefile
เป้าหมายด้านความปลอดภัยคือการรวบรวมข้อมูลที่ป้อนซึ่งได้รับการยืนยันอย่างตรงไปตรงมาและสร้างเอาต์พุต ในสภาพแวดล้อมที่แยกจากกัน Android ในฐานะไคลเอ็นต์ที่ไม่น่าเชื่อถือไม่สามารถเปลี่ยนแปลงเอาต์พุตการคอมไพล์ ได้ในทางใดก็ตามนอกเหนือจากการทำให้การคอมไพล์ล้มเหลว (เมื่อ Android กลับไปใช้การคอมไพล์เวลาบูต)
บริการคอมไพเลชันใน VM จะสร้างลายเซ็นก็ต่อเมื่อไม่มีข้อผิดพลาดในระหว่างการคอมไพล์ทั้งหมดเท่านั้น Android สามารถเรียกข้อมูลคีย์สาธารณะจาก VM เพื่อยืนยันลายเซ็นได้
ระบบจะสร้างคีย์ของ VM จากโปรไฟล์ DICE ของ VM ซึ่งกำหนดโดย APEX และ APK ที่ติดตั้งใน VM นอกเหนือจากพารามิเตอร์อื่นๆ ของ VM เช่น ความสามารถในการแก้ไขข้อบกพร่อง
Android จะบูต VM เพื่อตรวจสอบว่าคีย์ถูกต้องหรือไม่ เพื่อพิจารณาว่าคีย์สาธารณะไม่ได้มาจาก VM ที่ไม่คาดคิด ระบบจะบูต VM ในช่วงต้นของการบูต หลังจากอัปเดต APEX แต่ละครั้ง
การเปิดเครื่องที่ได้รับการยืนยันของ VM ที่ได้รับการปกป้องจะทำให้บริการคอมไพเลชันเรียกใช้ได้เฉพาะโค้ดที่ได้รับการยืนยัน
ด้วยเหตุนี้ โค้ดจึงสามารถกำหนดให้ยอมรับเฉพาะอินพุตที่
เป็นไปตามเงื่อนไขบางอย่างได้ เช่น ยอมรับไฟล์อินพุตเฉพาะในกรณีที่
ชื่อและfs-verity
แฮชของไฟล์นั้นอยู่ในรายการที่อนุญาต
API ที่เปิดเผยจาก VM เป็นพื้นที่การโจมตี ระบบจะถือว่าไฟล์อินพุตและพารามิเตอร์ทั้งหมดมาจากไคลเอ็นต์ที่ไม่น่าเชื่อถือ และต้องได้รับการยืนยันและตรวจสอบก่อนประมวลผล
VM จะตรวจสอบความสมบูรณ์ของไฟล์อินพุตและเอาต์พุต โดยจะจัดเก็บไฟล์ไว้ใน Android เป็นเซิร์ฟเวอร์ไฟล์ที่ไม่น่าเชื่อถือ ดังนี้
- เนื้อหาของไฟล์อินพุตต้องได้รับการยืนยันก่อนใช้งานโดยใช้อัลกอริทึม
fs-verity
หากต้องการให้ไฟล์อินพุตพร้อมใช้งานใน VM คุณต้องระบุแฮชรูทในคอนเทนเนอร์ (APK) ที่มีส่วนร่วมในโปรไฟล์ DICE ของ VM แฮชรูทที่เชื่อถือได้ช่วยป้องกันไม่ให้ผู้โจมตีดัดแปลง อินพุตโดยไม่ถูกตรวจพบ - ต้องรักษาความสมบูรณ์ของไฟล์เอาต์พุตใน VM แม้ว่าระบบจะจัดเก็บไฟล์เอาต์พุตไว้ใน Android แต่ในระหว่างการสร้าง ระบบจะรักษาความสมบูรณ์ด้วย
fs-verity
รูปแบบทรีเดียวกัน แต่สามารถอัปเดตแบบไดนามิกได้ คุณระบุไฟล์เอาต์พุตสุดท้ายได้ด้วยแฮชรูท ซึ่งแยกอยู่ใน VM บริการใน VM จะปกป้องไฟล์เอาต์พุต ด้วยลายเซ็น
สภาพแวดล้อมในการพัฒนาซอฟต์แวร์ Linux
โดยปกติแล้ว Android เป็นระบบปฏิบัติการหลักเพียงระบบเดียว ที่ไม่อนุญาตให้ผู้ใช้พัฒนาแอปบนแพลตฟอร์มของตัวเอง การเปิดตัวสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ Linux มีเป้าหมายเพื่อมอบสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ที่ใช้ Linux ให้แก่ผู้ใช้ Android ที่เป็นนักพัฒนาซอฟต์แวร์ ในอนาคต เราวางแผนที่จะขยายความพยายาม เพื่อช่วยให้พาร์ทเนอร์ของเราสามารถนำกรณีการใช้งาน VM ที่เป็นนวัตกรรมใหม่ๆ มาใช้ได้ เช่น การเรียกใช้แอปที่มีอินเทอร์เฟซผู้ใช้แบบกราฟิกและแม้แต่เกม
สภาพแวดล้อมในการพัฒนาซอฟต์แวร์ Linux พร้อมใช้งานในอุปกรณ์บางรุ่นและทำงาน ในเครื่องเสมือนที่ไม่มีการป้องกัน
คอมโพเนนต์ระดับสูงของ VM ของ Linux มีดังนี้
- แอป Terminal: แอปพลิเคชัน Android ที่มีอินเทอร์เฟซเทอร์มินัล โดยจะใช้ WebView เพื่อเชื่อมต่อกับบริการเว็บที่ทำงานใน VM สำหรับการโต้ตอบ แอปนี้จะปิดใช้อยู่โดยค่าเริ่มต้น เปิดใช้งานในการตั้งค่าสำหรับนักพัฒนาแอป
- เฟรมเวิร์กการจำลองการทำงานแบบเสมือนของ Android (AVF): ระบบย่อยที่มีอยู่ของ Android สำหรับการสร้างและจัดการ VM โดยต้องมีการแก้ไขเล็กน้อยเพื่อรองรับ อิมเมจระบบปฏิบัติการที่กำหนดเองสำหรับฟีเจอร์นี้
- เครื่องเสมือน: VM ที่ AVF สร้างขึ้น โดยจะโฮสต์บริการเทอร์มินัล และ AVF จะสร้างขึ้นเพื่อฟังก์ชันการทำงานของแอป Terminal โดยเฉพาะ
- อิมเมจระบบปฏิบัติการ: อิมเมจระบบปฏิบัติการที่อิงตาม Debian ซึ่งได้รับการแก้ไขเล็กน้อยจากต้นทาง Debian แอปเทอร์มินัลจะดาวน์โหลดรูปภาพนี้จากเซิร์ฟเวอร์ภายนอกของ Google ซึ่งเป็นรากฐานสำหรับการทำงานของ VM
- Guest Agent: ซอฟต์แวร์ใหม่ใน VM โดยจะรายงานสถานะของระบบปฏิบัติการไปยัง AVF และให้การควบคุมเครื่องเสมือน
- ttyd: ซอฟต์แวร์โอเพนซอร์สที่ทำงานใน VM ซึ่งใช้การจำลองเทอร์มินัลผ่าน HTTP WebView ของแอปเทอร์มินัลจะเชื่อมต่อกับเซิร์ฟเวอร์
- Tethering Manager: ระบบย่อยของ Android ที่มีอยู่ โดยจะให้สิทธิ์เข้าถึงเครือข่าย แก่เครื่องเสมือนด้วยการเชื่อมต่อ VM กับอุปกรณ์ที่ใช้ Android