fs-verity adalah fitur kernel Linux yang memungkinkan sistem untuk terus memverifikasi file APK dengan sertifikat digital tepercaya. Saat platform menyediakan mekanisme verifikasi on-access ini, dengan sertifikat tepercaya dari toko yang didukung seperti Play, toko dapat menginstal file APK dengan tanda tangan fs-verity untuk verifikasi berkelanjutan. File yang dilindungi oleh fs-verity tidak dapat diubah dan permintaan baca hanya berhasil jika kontennya diverifikasi.
Setelah fs-verity didukung di kernel, mitra dapat menempatkan jenis sertifikat baru dari toko tepercaya mereka di partisi /product/etc/security/fsverity
, sertifikat dimuat ke keyring kernel selama waktu boot. Pada perangkat yang mendukung fitur ini, toko tepercaya dapat menginstal APK dengan tanda tangan fs-verity yang sesuai.
Penerapan
Perangkat diluncurkan dengan Android R
fs-verity adalah fitur kernel Linux yang di- upstream sejak 5.4, dan telah di-backport ke kernel umum Android 4.14 dan lebih tinggi. Perangkat baru yang menggunakan kernel umum 4.14 atau lebih tinggi dan menggunakan ext4 atau f2fs untuk partisi data pengguna tidak perlu melakukan tindakan apa pun karena telah mendukung fs-verity melalui kernel Linux .
Upgrade perangkat ke Android R
patch fs-verity perlu di-backport ke kernel perangkat. Untuk ext4, tambahkan fsverity
ke flag fs_mgr
di fstab
. Kemudian fitur tersebut dapat diaktifkan dengan pengaturan berikut:
ro.apk_verity.mode=2
API
API publik baru telah diperkenalkan untuk menanyakan status dukungan perangkat dan untuk menentukan apakah sertifikat dipercaya pada perangkat.
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; }
Validasi
Jalankan pengujian VTS, CTS, dan GTS berikut untuk memvalidasi implementasi.
- [VTS] ApkVerityTest
- [CTS] CtsAppSecurityHostTestCases:android.appsecurity.cts.ApkVerityInstallTest
- [CTS] CtsSecurityHostTestCases#android.security.cts.KernelConfigTest
- [GTS] GtsPlayFsiTestCases & GtsPlayFsiHostTestCases