Transparenzlog für Android Mainline-Module

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:

-----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.