Dziennik przejrzystości modułów magistrali Androida

Dziennik przejrzystości modułów Android Mainline używa weryfikowalnych struktur danych, aby zapewnić integralność modułów Mainline.

Przydatność logów przejrzystości została udowodniona przez projekty takie jak Pixel Binary Transparency i Certificate Transparency.

Dzienniki przejrzystości są oparte na drzewach Merkle. Ta strona zakłada ogólną znajomość drzew Merkle i przejrzystości plików binarnych. Więcej informacji o drzewach Merkle znajdziesz w artykule Verifiable Data Structures (Weryfikowalne struktury danych), a na stronie głównej znajdziesz omówienie działań związanych z przejrzystością plików binarnych w Androidzie.

Implementacja logów

Dziennik przejrzystości modułów Android Mainline jest wdrażany za pomocą Tessera i jest zgodny ze specyfikacją tlog-tiles z wysokością kafelka 8 (każdy kafelek lub pakiet zawiera maksymalnie 28 = 256 elementów).

Główny katalog zawartości logów jest dostępny pod adresem: https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/entries/

Treści kafelka są udostępniane w głównym katalogu: https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/

Pamiętaj, że te adresy URL nie są standardowymi stronami internetowymi. Zamiast tego dostęp do wpisów logu w podkatalogach powinien być uzyskiwany programowo za pomocą narzędzi takich jak Tessera lub biblioteka Tlog Golang SumDB.

  • Kafelki drzewa: hasze węzłów wewnętrznych i liści drzewa Merkle są udostępniane w tile/<level>/<path> (np. tile/0/000, tile/1/000).
  • Pakiety wpisów: dane logów są uporządkowane w pakiety wpisów w tile/entries/<path> (np. tile/entries/000, tile/entries/001), przy czym każdy pakiet zawiera maksymalnie 256 połączonych wpisów.

Opis zawartości każdego wpisu znajdziesz w sekcji Zawartość logu.

Skrót główny drzewa Merkle logu, zawarty w punkcie kontrolnym, jest dostępny pod adresem https://www.gstatic.com/android/binary_transparency/mainline/2026/02/checkpoint w formacie punktu kontrolnego. Źródło punktu kontrolnego to android.transparency.goog/mainline/modules/2026/1.

Podpisy punktów kontrolnych są generowane za pomocą algorytmu podpisywania Ed25519. Podpis punktu kontrolnego można zweryfikować za pomocą tego klucza publicznego w formacie weryfikatora notatek (zgodnie z definicją w golang.org/x/mod/sumdb/note) lub w standardowym formacie PEM:

  • Format weryfikatora notatek (<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-----

Zarchiwizowany log (wersja 1)

Przed aktualizacją w III kwartale 2026 r. dziennik działał w ramach wcześniejszej implementacji V1 z użyciem podpisów ECDSA (NIST P-256 z SHA-256). Dziennik V1 jest zarchiwizowany i dostępny tylko do odczytu, ale pozostaje publicznie dostępny do weryfikacji wpisów historycznych:

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

Moduły Mainline są podobne do plików APK, dlatego metody weryfikacji opisane na stronie weryfikacji plików APK Google mają zastosowanie również w tym przypadku. Możesz użyć tych metod, aby zweryfikować roszczenia zgłoszone w modelu strony wnoszącej roszczenie.