fs-verity là một tính năng nhân Linux cho phép hệ thống liên tục xác minh các tệp APK bằng các chứng chỉ kỹ thuật số đáng tin cậy. Khi nền tảng cung cấp cơ chế xác minh khi truy cập này, với chứng chỉ đáng tin cậy từ một cửa hàng được hỗ trợ như Play, cửa hàng có thể cài đặt các tệp APK có chữ ký fs-verity để xác minh liên tục. Các tệp được bảo vệ bởi fs-verity là bất biến và yêu cầu đọc chỉ thành công nếu nội dung được xác minh.
Khi fs-verity được hỗ trợ trong nhân, các đối tác có thể đặt loại chứng chỉ mới từ các cửa hàng đáng tin cậy của họ trong phân vùng /product/etc/security/fsverity
, các chứng chỉ sẽ được tải vào kernel keyring trong thời gian khởi động. Trên thiết bị hỗ trợ tính năng này, cửa hàng đáng tin cậy có thể cài đặt APK có chữ ký fs-verity tương ứng của họ.
Thực hiện
Thiết bị khởi chạy với Android R
fs-verity là một tính năng của nhân Linux được ngược dòng từ phiên bản 5.4 và đã được hỗ trợ cho nhân phổ biến của Android 4.14 trở lên. Các thiết bị mới sử dụng nhân phổ biến 4.14 trở lên và sử dụng ext4 hoặc f2fs cho phân vùng dữ liệu người dùng không cần thực hiện bất kỳ hành động nào vì chúng đã hỗ trợ fs-verity thông qua nhân Linux .
Thiết bị đang nâng cấp lên Android R
Các bản vá lỗi fs-verity cần được phản hồi cho nhân thiết bị. Đối với ext4, thêm fsverity
vào cờ fs_mgr
trong fstab
. Sau đó, tính năng này có thể được kích hoạt với cài đặt sau:
ro.apk_verity.mode=2
API
Một API công khai mới đã được giới thiệu để truy vấn trạng thái hỗ trợ của thiết bị và xác định xem chứng chỉ có được tin cậy trên thiết bị hay không.
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; }
Thẩm định
Chạy các bài kiểm tra VTS, CTS và GTS sau đây để xác nhận việc triển khai.
- [VTS] ApkVerityTest
- [CTS] CtsAppSecurityHostTestCases: android.appsecurity.cts.ApkVerityInstallTest
- [CTS] CtsSecurityHostTestCases # android.security.cts.KernelConfigTest
- [GTS] GtsPlayFsiTestCases & GtsPlayFsiHostTestCases