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