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:
- Punkt kontrolny: https://www.gstatic.com/android/binary_transparency/mainline/2026/01/checkpoint.txt
- Liście danych: https://www.gstatic.com/android/binary_transparency/mainline/2026/01/module_info.txt
- Katalog główny kafelka:
https://www.gstatic.com/android/binary_transparency/mainline/2026/01/tile/ - Klucz publiczny (format PEM, ECDSA P-256):
-----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.