บูรณาการ fs-verity

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

เมื่อเคอร์เนลรองรับ fs-verity แล้ว พาร์ทเนอร์สามารถใส่ใบรับรองประเภทใหม่จากร้านค้าที่เชื่อถือได้ในพาร์ติชั่น /product/etc/security/fsverity ใบรับรองจะถูกโหลดไปยังเคอร์เนลคีย์ริงระหว่างเวลาบูต บนอุปกรณ์ที่รองรับคุณสมบัตินี้ ร้านค้าที่เชื่อถือได้สามารถติดตั้ง APK ที่มีลายเซ็น fs-verity ที่สอดคล้องกันได้

การดำเนินการ

อุปกรณ์ที่เปิดตัวด้วย Android R

fs-verity เป็น คุณลักษณะเคอร์เนลของ Linux ที่ อัพสตรีมตั้งแต่ 5.4 และได้รับการ backported เป็น เคอร์เนลทั่วไปของ Android 4.14 และสูงกว่า อุปกรณ์ใหม่ที่ใช้เคอร์เนลทั่วไป 4.14 หรือสูงกว่า และการใช้ ext4 หรือ f2fs สำหรับพาร์ติชั่น userdata ไม่จำเป็นต้องดำเนินการใดๆ เนื่องจากรองรับ fs-verity ผ่าน เคอร์เนล Linux แล้ว

อุปกรณ์ที่อัปเกรดเป็น Android R

แพตช์ fs-verity จำเป็นต้องแบ็คพอร์ตไปยังเคอร์เนลของอุปกรณ์ สำหรับ ext4 ให้เพิ่ม fsverity ให้กับแฟ fs_mgr ใน fstab จากนั้นคุณสมบัตินี้สามารถเปิดใช้งานได้ด้วยการตั้งค่าต่อไปนี้:

ro.apk_verity.mode=2

API

มีการแนะนำ API สาธารณะใหม่เพื่อสอบถามสถานะการสนับสนุนของอุปกรณ์และเพื่อตรวจสอบว่าใบรับรองเชื่อถือได้บนอุปกรณ์หรือไม่

  public final class FileIntegrityManager {
    public boolean isApkVeritySupported();
    @RequiresPermission(anyOf={
        android.Manifest.permission.INSTALL_PACKAGES,
        android.Manifest.permission.REQUEST_INSTALL_PACKAGES})
    public boolean isAppSourceCertificateTrusted(@NonNull java.security.cert.X509Certificate)
            throws java.security.cert.CertificateEncodingException;
  }

การตรวจสอบความถูกต้อง

เรียกใช้การทดสอบ VTS, CTS และ GTS ต่อไปนี้เพื่อตรวจสอบการใช้งาน

  • [VTS] ApkVerityTest
  • [CTS] CtsAppSecurityHostTestCases:android.appsecurity.cts.ApkVerityInstallTest
  • [CTS] CtsSecurityHostTestCases#android.security.cts.KernelConfigTest
  • [GTS] GtsPlayFsiTestCases & GtsPlayFsiHostTestCases