Das Transparenzprotokoll für Android-Mainline-Module verwendet überprüfbare Datenstrukturen, um die Integrität von Mainline-Modulen zu gewährleisten.
Der Nutzen von Transparenz-Logs wurde durch Projekte wie Pixel Binary Transparency und Certificate Transparency nachgewiesen.
Transparenzprotokolle basieren auf Merkle-Bäumen. Auf dieser Seite werden allgemeine Kenntnisse über Merkle-Bäume und binäre Transparenz vorausgesetzt. Eine Übersicht über Merkle-Bäume finden Sie unter Verifizierbare Datenstrukturen und eine Übersicht über die Bemühungen zur binären Transparenz in Android auf der Hauptseite.
Log-Implementierung
Das Transparenzprotokoll für Android-Mainline-Module wird mit Tessera implementiert und entspricht der tlog-tiles-Spezifikation mit einer Kachelhöhe von 8 (jede Kachel oder jedes Bundle enthält maximal 28 = 256 Elemente).
Das Stammverzeichnis des Loginhalts wird unter https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/entries/ bereitgestellt.
Der Stamm des Kachelinhalts wird unter folgender Adresse bereitgestellt:
https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/
Diese URLs sind keine Standard-Webseiten. Stattdessen sollte auf die Logeinträge in den Unterverzeichnissen programmatisch mit Tools wie Tessera oder der Golang SumDB-Tlog-Bibliothek zugegriffen werden.
- Baumkacheln: Die Hashes der internen und Blattknoten des Merkle-Baums werden unter
tile/<level>/<path>bereitgestellt (z.B.tile/0/000,tile/1/000). - Eintrags-Bundles: Log-Leaf-Nutzlasten werden in Eintrags-Bundles unter
tile/entries/<path>(z.B.tile/entries/000,tile/entries/001) organisiert, wobei jedes Bundle bis zu 256 verkettete Einträge enthält.
Eine Beschreibung der einzelnen Einträge finden Sie unter Protokollinhalt.
Der Merkle-Baum-Root-Hash des Logs, der in einem Prüfpunkt enthalten ist, wird unter https://www.gstatic.com/android/binary_transparency/mainline/2026/02/checkpoint im Prüfpunktformat bereitgestellt.
Der Ursprung des Prüfpunkts ist android.transparency.goog/mainline/modules/2026/1.
Prüfpunktsignaturen werden mit dem Signaturalgorithmus Ed25519 generiert.
Die Signatur des Prüfpunkts kann mit dem folgenden öffentlichen Schlüssel entweder im Note-Verifier-Format (wie in golang.org/x/mod/sumdb/note definiert) oder im Standard-PEM-Format verifiziert werden:
- Format des Prüfers für Notizen (
<name>+<key_hash>+<public_key_bytes>):
android.transparency.goog/mainline/modules/2026/1+1a8e4064+AfwnHm59rNQTJICchMd7a2W5PQa7nC5h2gTEfq3fhCEI
- PEM-Format (SubjectPublicKeyInfo):
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA/Ccebn2s1BMkgJyEx3trZbk9BrucLmHaBMR+rd+EIQg=
-----END PUBLIC KEY-----
Archiviertes Log (V1)
Vor dem Update im 3. Quartal 2026 wurde das Log mit einer früheren V1-Implementierung mit ECDSA-Signaturen (NIST P-256 mit SHA-256) betrieben. Das V1-Log ist archiviert und hat Lesezugriff, bleibt aber öffentlich zugänglich, um historische Einträge zu überprüfen:
- Prüfpunkt: https://www.gstatic.com/android/binary_transparency/mainline/2026/01/checkpoint.txt
- Datenblätter: https://www.gstatic.com/android/binary_transparency/mainline/2026/01/module_info.txt
- Tile Root:
https://www.gstatic.com/android/binary_transparency/mainline/2026/01/tile/ - Öffentlicher Schlüssel (PEM-Format, ECDSA P-256):
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr6nPds8eKCYU42avidXNM1GDCtQ/
66GjGuIpUcZjqQNngwRFVCFZDpWuvDnqXzhJRxqccL9lbeEVVZGpa4x6pg==
-----END PUBLIC KEY-----
Da Mainline-Module APKs ähneln, gelten die auf der Seite zur Überprüfung von Google-APKs beschriebenen Überprüfungsmethoden auch hier. Mit den dort beschriebenen Methoden können Sie die im Anspruchsteller-Modell gemachten Angaben überprüfen.