Integrazione con fs-verity

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

fs-verity è una funzionalità del kernel Linux che consente al sistema di verificare continuamente i file APK con certificati digitali affidabili. Quando la piattaforma fornisce questo meccanismo di verifica all'accesso, con un certificato affidabile da un negozio supportato come Play, il negozio può installare file APK con una firma fs-verity per la verifica continua. I file protetti da fs-verity non sono modificabili e le richieste di lettura hanno esito positivo solo se il contenuto viene verificato.

Una volta che fs-verity è supportato nel kernel, i partner possono inserire il nuovo tipo di certificato dai loro archivi attendibili nella partizione del prodotto /product/etc/security/fsverity , i certificati vengono caricati nel keyring del kernel durante l'avvio. Su un dispositivo che supporta questa funzione, l'archivio attendibile può installare un APK con la relativa firma fs-verity.

Implementazione

Dispositivi avviati con Android R

fs-verity è una funzionalità del kernel Linux aggiornata a partire dalla 5.4 ed è stata trasferita al kernel comune Android 4.14 e versioni successive. I nuovi dispositivi che utilizzano il kernel comune 4.14 o successivo e che utilizzano ext4 o f2fs per le partizioni di dati utente non devono intraprendere alcuna azione poiché supportano già fs-verity tramite il kernel Linux .

Aggiornamento dei dispositivi ad Android R

Le patch di fs-verity devono essere trasferite al kernel del dispositivo. Per ext4, aggiungi fsverity al flag fs_mgr in fstab . Quindi la funzione può essere abilitata con la seguente impostazione:

ro.apk_verity.mode=2

API

È stata introdotta una nuova API pubblica per interrogare lo stato di supporto del dispositivo e per determinare se un certificato è attendibile su un dispositivo.

  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;
  }

Convalida

Eseguire i seguenti test VTS, CTS e GTS per convalidare l'implementazione.

  • [VTS] ApkVerityTest
  • [CTS] CtsAppSecurityHostTestCases:android.appsecurity.cts.ApkVerityInstallTest
  • [CTS] CtsSecurityHostTestCases#android.security.cts.KernelConfigTest
  • [GTS] GtsPlayFsiTestCases e GtsPlayFsiHostTestCases