Use Case

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

การคอมไพล์แบบแยก

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

การติดตั้งใช้งานอยู่ใน com.android.compos APEX คอมโพเนนต์นี้ไม่บังคับและสามารถรวมไว้ได้โดยใช้ไฟล์ make

การคอมไพล์แบบแยก

รูปที่ 1 การคอมไพล์ JAR ในการอัปเดตเมนไลน์

เป้าหมายด้านความปลอดภัยคือการรวบรวมอินพุตที่ได้รับการยืนยันตามความจริงและสร้างเอาต์พุตแยกต่างหาก Android ในฐานะไคลเอ็นต์ที่ไม่น่าเชื่อถือจะไม่สามารถปรับเปลี่ยนเอาต์พุตการคอมไพล์ได้ไม่ว่าในทางใดก็ตามนอกจากทำให้ล้มเหลว (เมื่อ Android กลับไปใช้การคอมไพล์เวลาเปิดเครื่อง)

บริการคอมไพล์ใน VM จะสร้างลายเซ็นก็ต่อเมื่อไม่มีการเกิดข้อผิดพลาดระหว่างการคอมไพล์ทั้งหมดเท่านั้น Android สามารถเรียกข้อมูลคีย์สาธารณะจาก VM เพื่อยืนยันลายเซ็นได้

คีย์ของ VM สร้างขึ้นจากโปรไฟล์ DICE ของ VM ที่กำหนดโดย APEXes และ APK ที่ต่อเชื่อมกับ VM นอกเหนือจากพารามิเตอร์ VM อื่นๆ เช่น ความสามารถในการแก้ไขข้อบกพร่อง

หากต้องการตรวจสอบว่าคีย์สาธารณะไม่ได้มาจาก VM ที่คาดไม่ถึง Android จะบูต VM เพื่อตรวจสอบว่าคีย์ถูกต้องหรือไม่ ระบบจะบูต VM ในการบูตช่วงต้นหลังจากการอัปเดต APEX แต่ละครั้ง

เมื่อใช้การบูตที่ยืนยันแล้วของ VM ที่มีการป้องกัน บริการคอมไพล์จะเรียกใช้เฉพาะโค้ดที่ยืนยันแล้วเท่านั้น ดังนั้น โค้ดจึงสามารถกำหนดให้ยอมรับเฉพาะอินพุตที่ตรงตามเงื่อนไขบางอย่าง เช่น ยอมรับไฟล์อินพุตเฉพาะในกรณีที่มีการกำหนดชื่อและข้อมูลสรุป fs-verity ในรายการที่อนุญาต

API ที่เปิดเผยจาก VM คือแพลตฟอร์มการโจมตี ระบบจะถือว่าไฟล์อินพุตและพารามิเตอร์ทั้งหมดมาจากไคลเอ็นต์ที่ไม่น่าเชื่อถือ และต้องได้รับการยืนยันและตรวจสอบก่อนดำเนินการ

VM จะยืนยันความสมบูรณ์ของไฟล์อินพุต/เอาต์พุต โดยจัดเก็บไฟล์ไว้ใน Android เป็นเซิร์ฟเวอร์ไฟล์ที่ไม่น่าเชื่อถือ ดังนี้

  • เนื้อหาของไฟล์อินพุตต้องได้รับการยืนยันก่อนใช้งานโดยใช้อัลกอริทึม fs-verity หากต้องการให้ไฟล์อินพุตพร้อมใช้งานใน VM คุณต้องระบุแฮชรูทของไฟล์ในคอนเทนเนอร์ (APK) ที่ส่งผลต่อโปรไฟล์ DICE ของ VM ด้วยแฮชรูทที่เชื่อถือได้ ผู้โจมตีจะไม่สามารถปรับเปลี่ยนอินพุตโดยที่ไม่มีการตรวจพบ
  • ต้องรักษาความสมบูรณ์ของไฟล์เอาต์พุตใน VM แม้ว่าระบบจะจัดเก็บไฟล์เอาต์พุตไว้ใน Android แต่ในระหว่างการสร้าง ความสมบูรณ์จะยังคงได้รับการรักษาตามรูปแบบต้นไม้ fs-verity เดียวกัน แต่สามารถอัปเดตแบบไดนามิกได้ ไฟล์เอาต์พุตสุดท้ายจะระบุได้ด้วยแฮชรูทซึ่งแยกอยู่ใน VM บริการใน VM จะปกป้องไฟล์เอาต์พุตด้วยลายเซ็น