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