Journal de transparence des modules Mainline Android

Le journal de transparence des modules Android Mainline utilise des structures de données vérifiables pour garantir l'intégrité des modules Mainline.

L'utilité des journaux de transparence a été prouvée par des projets tels que la transparence binaire Pixel et la transparence des certificats.

Les journaux de transparence sont basés sur des arbres de Merkle. Cette page suppose que vous possédez des connaissances générales sur les arbres de Merkle et la transparence binaire. Consultez Structures de données vérifiables pour une présentation des arbres de Merkle et la page principale pour une présentation des efforts de transparence binaire dans Android.

Implémentation des journaux

Le journal de transparence des modules Android Mainline est implémenté à l'aide de Tessera et respecte la spécification tlog-tiles avec une hauteur de tuile de 8 (chaque tuile ou bundle contient au maximum 28 = 256 éléments).

La racine du contenu du journal est diffusée à l'adresse suivante : https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/entries/

La racine du contenu de la tuile est diffusée à l'adresse suivante : https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/

Notez que ces URL ne sont pas des pages Web standards. À la place, vous devez accéder aux entrées de journal de ses sous-répertoires de manière programmatique à l'aide d'outils tels que Tessera ou la bibliothèque Tlog de Golang SumDB.

  • Tuiles d'arborescence : les hachages de l'intérieur et des nœuds feuilles de l'arbre de Merkle sont diffusés sous tile/<level>/<path> (par exemple, tile/0/000, tile/1/000).
  • Groupes d'entrées : les charges utiles des feuilles de journaux sont organisées en groupes d'entrées sous tile/entries/<path> (par exemple, tile/entries/000, tile/entries/001), chaque groupe contenant jusqu'à 256 entrées concaténées.

Pour obtenir une description du contenu de chaque entrée, consultez la section Contenu du journal.

Le hachage racine de l'arbre de Merkle du journal, contenu dans un point de contrôle, est diffusé à l'adresse https://www.gstatic.com/android/binary_transparency/mainline/2026/02/checkpoint au format de point de contrôle. L'origine du point de contrôle est android.transparency.goog/mainline/modules/2026/1.

Les signatures de point de contrôle sont générées à l'aide de l'algorithme de signature Ed25519. La signature du point de contrôle peut être validée avec la clé publique suivante au format de vérificateur de note (tel que défini dans golang.org/x/mod/sumdb/note) ou au format PEM standard :

  • Format du vérificateur de notes (<name>+<key_hash>+<public_key_bytes>) :
android.transparency.goog/mainline/modules/2026/1+1a8e4064+AfwnHm59rNQTJICchMd7a2W5PQa7nC5h2gTEfq3fhCEI
  • Format PEM (SubjectPublicKeyInfo) :
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA/Ccebn2s1BMkgJyEx3trZbk9BrucLmHaBMR+rd+EIQg=
-----END PUBLIC KEY-----

Journal archivé (V1)

Avant la mise à jour du troisième trimestre 2026, le journal fonctionnait selon une implémentation V1 antérieure utilisant des signatures ECDSA (NIST P-256 avec SHA-256). Le journal V1 est archivé et en lecture seule, mais il reste accessible au public pour vérifier les entrées historiques :

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

Comme les modules Mainline sont semblables aux APK, les méthodes de validation décrites sur la page de validation des APK Google s'appliquent également ici. Vous pouvez utiliser les méthodes de cette section pour vérifier les revendications effectuées dans le modèle de demandeur.