Trasparenza delle applicazioni dei prodotti Google

Per aumentare la fiducia nelle app Google, ora ci impegniamo a elencare ogni app di prodotto Google nel nostro log di trasparenza. Abbiamo pubblicato il log di trasparenza per verificare pubblicamente le dichiarazioni che facciamo in merito a questi APK.

Modello di minaccia

I sistemi di trasparenza possono essere utilizzati per rilevare e quindi scoraggiare gli attacchi alla catena di fornitura. Di seguito sono riportati alcuni esempi.

Supponiamo che un utente malintenzionato modifichi un'app Google e riesca persino a firmarla con la chiave di firma utilizzata per la distribuzione tramite Google Play. Con un log di trasparenza binario, chiunque riceva un APK discutibile può utilizzarlo come fonte verificabile di dato di fatto per verificarne l'autenticità. L'utente scoprirà che Google non ha aggiunto i metadati APK corrispondenti al log e saprà di non dover considerare attendibile l'APK compromesso.

Poiché la pubblicazione nel log è un processo separato dal processo di release con firma (come illustrato nel diagramma dell'ecosistema), 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 terze 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 la maggiore rilevabilità degli attacchi scoraggiano le attività dannose. Se un APK è compromesso, ma gli utenti si fidano solo di quelli presenti nel log, l'APK compromesso deve essere esposto pubblicamente. In questo modo, è più probabile scoprire l'esistenza dell'APK compromesso e 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 delle app Google di terze parti, la rivendicazione che facciamo è che l'hash di un file APK registrato in questo log rappresenta una versione specifica di un'app ufficiale di Google destinata al consumo pubblico.

  • ClaimGoogleApp: (io, Google, affermo che $hashApp è per $googleApp), dove:
    • $hashApp è un hash crittografico (ad es. SHA256) del file APK (inclusi gli APK suddivisi) di una versione specifica di $googleApp.
    • $googleApp è un pacchetto Android (APK) che compone un'app creata e distribuita da Google.

Chiunque abbia una copia di $googleApp può verificare questa rivendicazione, e descriviamo questo processo in dettaglio nella pagina di verifica.

Contenuti del log

Quando Google rilascia una nuova versione di un APK, aggiunge una voce corrispondente al log di trasparenza degli APK di terze parti di Google.

Ogni voce di questo log contiene quattro metadati:

  1. L'hash del file APK di un'app firmata da Google. Si tratta di una stringa esadecimale del digest SHA256 dell'intero file.
  2. La descrizione del tipo di hash precedente. Si tratta di una stringa.
  3. Il nome del pacchetto dell'APK. Si tratta di una stringa.
  4. Il numero di versione (versionCode) dell'APK. 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\nSHA256(APK)\npackage_name\npackage_version\n

Poiché stiamo misurando l'intero file APK, la descrizione dell'hash è impostata su SHA256(APK). In questo modo, viene fornita una copertura completa dei contenuti di ogni file e gli utenti possono ottenere più facilmente questa misurazione.

Diagramma dell'ecosistema

Diagramma dell'ecosistema di log verificabili