Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

fs-verity 통합

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의 경우 fstabfs_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