Per aumentare ulteriormente l'affidabilità del sistema operativo Android, ci impegniamo a elencare nel nostro log di trasparenza ogni modulo del sistema operativo Android (chiamato Mainline) offerto come aggiornamento tramite Google Play. Pubblichiamo il log di trasparenza per verificare le dichiarazioni che facciamo su questi moduli. I moduli preinstallati non sono elencati in modo esplicito perché sono già coperti da trasparenza dei file binari di Pixel.
Modello di minaccia
I sistemi di trasparenza possono essere utilizzati per rilevare e quindi scoraggiare gli attacchi alla catena di fornitura. Illustriamo alcuni esempi.
Supponiamo che un utente malintenzionato modifichi in modo dannoso un modulo Mainline (che potrebbe essere un file APEX o APK) e riesca persino a firmarlo con la chiave di firma utilizzata per la distribuzione tramite Google Play. Chiunque riceva un modulo discutibile può eseguire una query sul log di trasparenza dei file binari per verificarne l'autenticità. Scoprirà che Google non ha aggiunto i metadati del modulo corrispondente al log e saprà di non fidarsi del modulo del sistema operativo compromesso.
Poiché la pubblicazione nel log è un processo separato dal processo di release con la firma, questo aumenta la difficoltà per l'utente malintenzionato, che non deve solo compromettere la chiave.
Sebbene prevediamo di integrare questo log anche in una rete pubblica di testimoni utilizzando un protocollo di testimonianza standard, invitiamo terze parti esterne e indipendenti a monitorare l'integrità di questo log disponibile pubblicamente. Queste parti possono attestare la proprietà di sola aggiunta del log e segnalare eventuali manomissioni.
L'esistenza di un sistema di trasparenza di questo tipo e l'ulteriore rilevabilità degli attacchi scoraggiano le attività dannose. Se un modulo del sistema operativo viene compromesso, ma gli utenti si fidano solo di quelli presenti nel log, il modulo compromesso deve essere esposto pubblicamente. In questo modo aumenta la probabilità di scoprire l'esistenza dei moduli compromessi e di intraprendere azioni per rimuoverne la distribuzione.
Modello dell'autore della rivendicazione
Il modello dell'autore della rivendicazione è un framework utilizzato per definire ruoli e artefatti in un sistema verificabile. Nel caso della trasparenza dei moduli Mainline di Android, la nostra dichiarazione è che l'hash di un file di modulo registrato in questo log rappresenta una versione specifica di un modulo Android ufficiale destinato al consumo pubblico.
- ClaimMainlineModule: (io, Google, affermo che
$hashModuleè per$mainlineModule), dove:
Chiunque abbia una copia di $mainlineModule può verificare questa rivendicazione.
La pagina di verifica fornisce istruzioni dettagliate
per questa procedura.
Questi passaggi si applicano sia agli APK normali sia ai moduli Mainline (che possono essere file APK o APEX).
Contenuto del log
Quando Google rilascia una nuova versione di un modulo Mainline, aggiunge una voce corrispondente al log di trasparenza dei moduli Mainline.
Ogni voce di questo log contiene quattro metadati:
- L'hash dell'APK o dell'APEX di un modulo Mainline di Android firmato. Si tratta di una stringa esadecimale del digest SHA256 dell'intero file.
- La descrizione del tipo di hash sopra. Si tratta di una stringa.
- Il nome del pacchetto del modulo. Si tratta di una stringa.
- Il numero di versione (versionCode) del modulo. Si tratta di un numero intero diverso da zero.
Il formato di una voce di log è la concatenazione delle quattro informazioni con un carattere di nuova riga (\n), come illustrato di seguito:
hash\nhash_description\npackage_name\npackage_version\n
Poiché un modulo Mainline può essere un file APK o APEX, la descrizione dell'hash può essere SHA256(APK) o SHA256(APEX).