Use Case

เอกสารนี้มีกรณีการใช้งานทั่วไปสำหรับ AVF

การรวบรวมที่แยกออกมา

เนื่องจากเป็นเครือข่ายที่ปลอดภัยต่อซอฟต์แวร์ VM ที่ได้รับการป้องกันจึงจัดเตรียมสภาพแวดล้อมที่ปลอดภัยเพื่อรวบรวมโค้ดที่มีความสำคัญด้านความปลอดภัย สภาพแวดล้อมนี้ช่วยให้สามารถย้ายการคอมไพล์ bootclasspath และ JAR ของเซิร์ฟเวอร์ระบบ (กระตุ้นโดยการอัพเดต APEX) จากการบูตก่อนกำหนดไปเป็นก่อนรีบูต และลดเวลาบูตหลังการอัพเดต APEX ลงอย่างมาก

การใช้งานอยู่ใน com.android.compos APEX คอมโพเนนต์นี้เป็นทางเลือกและสามารถรวมไว้ได้โดยใช้ makefile

การรวบรวมที่แยกออกมา

รูปที่ 1. การคอมไพล์ JARs บนการอัพเดต Mainline

เป้าหมายด้านความปลอดภัยคือการรวบรวมอินพุตที่ได้รับการตรวจสอบตามความเป็นจริงและสร้างเอาต์พุตแยกกัน 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 ปกป้องไฟล์เอาต์พุตด้วยลายเซ็น