Log di trasparenza dei moduli Mainline di Android

Il log di trasparenza dei moduli Mainline di Android utilizza strutture di dati verificabili per garantire l'integrità dei moduli Mainline.

L'utilità dei log di trasparenza è stata dimostrata da progetti come Pixel Binary Transparency e Certificate Transparency.

I log di trasparenza sono basati su alberi di Merkle. Questa pagina presuppone una conoscenza generale degli alberi di Merkle e della trasparenza binaria. Per una panoramica degli alberi di Merkle, consulta Strutture di dati verificabili e per una panoramica degli sforzi di trasparenza binaria in Android, consulta la pagina principale.

Implementazione dei log

Il log di trasparenza dei moduli Mainline di Android viene implementato utilizzando Tessera e rispetta la specifica tlog-tiles con un'altezza dei riquadri di 8 (ogni riquadro o pacchetto contiene al massimo 28 = 256 elementi).

La radice dei contenuti dei log è disponibile all'indirizzo: https://gstatic.com/android/binary_transparency/mainline/2026/02/tile/entries/

La radice dei contenuti dei riquadri è disponibile all'indirizzo: https://gstatic.com/android/binary_transparency/mainline/2026/02/tile/

Tieni presente che questi URL non sono pagine web standard. Le voci di log nelle relative sottodirectory devono essere accessibili a livello di programmazione utilizzando strumenti come Tessera o la libreria Golang SumDB Tlog.

  • Riquadri dell'albero: gli hash dei nodi interni e foglia dell'albero di Merkle sono disponibili in tile/<level>/<path> (ad es. tile/0/000, tile/1/000).
  • Pacchetti di voci: i payload delle foglie di log sono organizzati in pacchetti di voci in tile/entries/<path> (ad es. tile/entries/000, tile/entries/001), con ogni pacchetto contenente fino a 256 voci concatenate.

Per una descrizione dei contenuti di ogni voce, consulta Contenuti dei log.

L'hash della radice dell'albero di Merkle del log, contenuto in un checkpoint, è disponibile all'indirizzo https://gstatic.com/android/binary_transparency/mainline/2026/02/checkpoint nel formato del checkpoint. L'origine del checkpoint è gstatic.com/android/binary_transparency/mainline/modules/2026/1.

Le firme dei checkpoint vengono generate utilizzando l'algoritmo di firma Ed25519. La firma del checkpoint può essere verificata con la seguente chiave pubblica in formato di verifica delle note (come definito in golang.org/x/mod/sumdb/note) o in formato PEM standard:

  • Formato di verifica delle note (<name>+<key_hash>+<public_key_bytes>):
MainlineModulesLogV2+e490c9dd+AfwnHm59rNQTJICchMd7a2W5PQa7nC5h2gTEfq3fhCEI
  • Formato PEM (SubjectPublicKeyInfo):
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA/Ccebn2s1BMkgJyEx3trZbk9BrucLmHaBMR+rd+EIQg=
-----END PUBLIC KEY-----

Log archiviato (V1)

Prima dell'aggiornamento del terzo trimestre del 2026, il log operava con un'implementazione V1 precedente che utilizzava firme ECDSA (NIST P-256 con SHA-256). Il log V1 è archiviato e di sola lettura, ma rimane accessibile pubblicamente per la verifica delle voci storiche:

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr6nPds8eKCYU42avidXNM1GDCtQ/
66GjGuIpUcZjqQNngwRFVCFZDpWuvDnqXzhJRxqccL9lbeEVVZGpa4x6pg==
-----END PUBLIC KEY-----

Poiché i moduli Mainline sono simili agli APK, anche in questo caso si applicano i metodi di verifica descritti nella pagina di verifica degli APK di Google. Puoi utilizzare i metodi indicati per verificare le rivendicazioni nel modello del richiedente.