fs-verity는 시스템이 신뢰할 수 있는 디지털 인증서를 통해 APK 파일을 계속 인증하도록 지원하는 Linux 커널 기능입니다. 플랫폼에서 Play와 같은 지원되는 스토어의 신뢰할 수 있는 인증서를 사용하여 액세스 시 인증 메커니즘을 제공하면 스토어에서 지속적인 인증을 위해 fs-verity 서명이 포함된 APK 파일을 설치할 수 있습니다. fs-verity로 보호되는 파일은 변경할 수 없으며 콘텐츠가 인증되면 읽기 요청만 가능합니다.
커널에서 fs-verity가 지원되면 파트너는 신뢰할 수 있는 스토어에서 발급된 새로운 유형의 인증서를 /product/etc/security/fsverity
제품 파티션에 포함할 수 있으며 인증서는 부팅 시간 동안 커널 키링으로 로드됩니다. 이 기능을 지원하는 기기에서 신뢰할 수 있는 스토어는 해당하는 fs-verity 서명이 포함된 APK를 설치하면 됩니다.
구현
Android R로 출시되는 기기
fs-verity는 5.4 이후로 업스트림된 Linux 커널 기능이며 Android 공통 커널 4.14 이상에 백포팅되었습니다. 공통 커널 4.14 이상을 사용하고 userdata 파티션에 ext4 또는 f2fs를 사용하는 새 기기는 이미 Linux 커널을 통해 fs-verity를 지원하고 있으므로 다른 조치를 취하지 않아도 됩니다.
Android R로 업그레이드하는 기기
fs-verity 패치는 기기 커널로 백포팅되어야 합니다. ext4의 경우 fstab
의 fs_mgr
플래그에 fsverity
를 추가합니다. 그러면 다음 설정을 사용하여 기능을 사용 설정할 수 있습니다.
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