Le journal de transparence des modules Mainline Android 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 Pixel Binary Transparency et transparence des certificats.
Les journaux de transparence sont basés sur des arbres de Merkle. Cette page part du principe que vous avez une connaissance générale des arbres de Merkle et de la transparence binaire. Consultez Structures de données vérifiables pour obtenir une présentation des arbres de Merkle et la page principale pour obtenir une présentation des efforts de transparence binaire dans Android.
Implémentation du journal
Le journal de transparence des modules Mainline Android 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 disponible à l'adresse suivante :
https://gstatic.com/android/binary_transparency/mainline/2026/02/tile/entries/
La racine du contenu de la tuile est disponible à l'adresse suivante :
https://gstatic.com/android/binary_transparency/mainline/2026/02/tile/
Notez que ces URL ne sont pas des pages Web standards. Au lieu de cela, les entrées de journal de ses sous-répertoires doivent être accessibles par programmation à l'aide d'outils tels que Tessera ou la bibliothèque Golang SumDB Tlog.
- Tuiles d'arborescence : les hachages intérieurs et de nœuds feuilles de l'arborescence de Merkle sont disponibles sous
tile/<level>/<path>(par exemple,tile/0/000,tile/1/000). - Bundles d'entrées : les charges utiles des feuilles de journal sont organisées en bundles d'entrées sous
tile/entries/<path>(par exemple,tile/entries/000,tile/entries/001), avec chaque bundle contenant jusqu'à 256 entrées concaténées.
Consultez Contenu du journal pour obtenir une description du contenu de chaque entrée.
Le hachage racine de l'arborescence de Merkle du journal, contenu dans un point de contrôle, est disponible
à l'adresse https://gstatic.com/android/binary_transparency/mainline/2026/02/checkpoint
au format point de contrôle.
L'origine du point de contrôle est gstatic.com/android/binary_transparency/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 validateur de note (tel que défini dans golang.org/x/mod/sumdb/note)
ou au format PEM standard :
- Format de validateur de note (
<name>+<key_hash>+<public_key_bytes>) :
MainlineModulesLogV2+e490c9dd+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 sous 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 reste accessible au public pour vérifier les entrées historiques :
- Point de contrôle : https://gstatic.com/android/binary_transparency/mainline/2026/01/checkpoint.txt
- Feuilles de données : https://gstatic.com/android/binary_transparency/mainline/2026/01/module_info.txt
- Racine de la tuile :
https://gstatic.com/android/binary_transparency/mainline/2026/01/tile/ - Clé publique (format PEM, ECDSA P-256) :
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr6nPds8eKCYU42avidXNM1GDCtQ/
66GjGuIpUcZjqQNngwRFVCFZDpWuvDnqXzhJRxqccL9lbeEVVZGpa4x6pg==
-----END PUBLIC KEY-----
Étant donné que les modules Mainline sont semblables aux APK, les méthodes de validation décrites sur la page Validation des APK Google s'appliquent également ici. Vous pouvez utiliser les méthodes qui y sont décrites pour valider les revendications faites dans le modèle de demandeur.