Журнал прозрачности модулей Android Mainline

В журнале прозрачности основных модулей Android используются проверяемые структуры данных, которые обеспечивают целостность основных модулей.

Полезность журналов прозрачности доказана такими проектами, как прозрачность исполняемых файлов Pixel и проверка сертификата.

Журналы прозрачности основаны на деревьях Меркла. Для понимания информации на этой странице требуются общие знания о деревьях Меркла и прозрачности двоичных файлов. Общие сведения о деревьях Меркла можно найти в статье Проверяемые структуры данных, а о прозрачности двоичного кода в Android – на главной странице.

Реализация журнала

Журнал прозрачности основных модулей Android реализован с помощью Tessera и соответствует спецификации tlog-tiles с высотой тайла 8 (каждый тайл или пакет содержит не более 28 = 256 элементов).

Корневой каталог журнала находится по адресу: https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/entries/

Корневой каталог содержимого тайла находится по адресу: https://www.gstatic.com/android/binary_transparency/mainline/2026/02/tile/

Обратите внимание, что эти URL не являются стандартными веб-страницами. Вместо этого доступ к записям в журнале в его подкаталогах должен осуществляться программно с помощью таких инструментов, как Tessera или библиотека Tlog Golang SumDB.

  • Фрагменты дерева. Хеши внутренних и листовых узлов дерева Меркла передаются по адресу tile/<level>/<path> (например, tile/0/000, tile/1/000).
  • Пакеты записей. Полезные нагрузки листьев журнала организованы в пакеты записей в tile/entries/<path> (например, tile/entries/000, tile/entries/001). Каждый пакет содержит до 256 объединенных записей.

Описание содержимого каждой записи приведено в разделе Содержимое журнала.

Корневой хеш дерева Меркла, содержащийся в контрольной точке, доступен по адресу https://www.gstatic.com/android/binary_transparency/mainline/2026/02/checkpoint в формате контрольной точки. Источник контрольной точки – android.transparency.goog/mainline/modules/2026/1.

Подписи контрольных точек генерируются с помощью алгоритма Ed25519. Подпись контрольной точки можно проверить с помощью следующего открытого ключа в формате note verifier (как определено в golang.org/x/mod/sumdb/note) или стандартном формате PEM:

  • Формат примечания для проверяющего (<name>+<key_hash>+<public_key_bytes>):
android.transparency.goog/mainline/modules/2026/1+1a8e4064+AfwnHm59rNQTJICchMd7a2W5PQa7nC5h2gTEfq3fhCEI
  • Формат PEM (SubjectPublicKeyInfo):
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA/Ccebn2s1BMkgJyEx3trZbk9BrucLmHaBMR+rd+EIQg=
-----END PUBLIC KEY-----

Архивный журнал (версия 1)

До обновления в третьем квартале 2026 года журнал работал на основе более ранней реализации V1 с использованием подписей ECDSA (NIST P-256 с SHA-256). Журнал V1 заархивирован и доступен только для чтения, но по-прежнему открыт для всех, чтобы можно было проверять старые записи.

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

Поскольку модули Mainline похожи на APK-файлы, к ним также применимы способы проверки, описанные на странице проверки APK-файлов Google. Вы можете использовать эти методы, чтобы проверить утверждения, сделанные в модели заявителя.