Журнал прозрачности для приложений Google

В журнале прозрачности приложений Google используется технология журнала прозрачности.

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

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

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

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

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

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

Обратите внимание, что это не обычные веб-страницы. Записи в журнале, содержащиеся в подкаталогах, должны считываться программно с помощью tlog-tiles клиентской библиотеки (например, 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/google1p/apk/2026/02/checkpoint в формате контрольной точки. Источник контрольной точки – android.transparency.goog/google1p/apk/2026/1.

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

  • Формат примечания для проверяющего (<name>+<key_hash>+<public_key_bytes>):
android.transparency.goog/google1p/apk/2026/1+fc654374+ATr9NQE0gvOtVfj5cCStUzdlflEp3oZoNHD8pImzPj5O
  • Формат PEM (SubjectPublicKeyInfo):
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEAOv01ATSC861V+PlwJK1TN2V+USnehmg0cPykibM+Pk4=
-----END PUBLIC KEY-----

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

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

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaP7xodTP5/teDOUYFAUHF0MqvOXt
+jamtcDYWxTjY99hyYczpB/cF2fxHhIqEznNpLcI2Vorl+iEchWhZ0y3Mg==
-----END PUBLIC KEY-----

Проверка утверждений в журналах

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