Android Mainline モジュールの透明性ログ

Android メインライン モジュール透過性ログは、検証可能なデータ構造を使用して、メインライン モジュールの完全性を確保します。

透明性ログの有用性は、Pixel Binary Transparency や Certificate Transparency などのプロジェクトで実証されています。

透明性ログは Merkle ツリーに基づいて構築されています。このページでは、マークルツリーとバイナリの透明性に関する一般的な知識があることを前提としています。Merkle ツリーの概要については、検証可能なデータ構造を、Android 内のバイナリの透明性に関する取り組みの概要については、メインページをご覧ください。

ログの実装

Android Mainline モジュールの透明性ログは Tessera を使用して実装され、タイル高さが 8 の tlog-tiles 仕様に準拠しています(各タイルまたはバンドルには最大 28 = 256 個のアイテムが含まれます)。

ログ コンテンツのルートは https://gstatic.com/android/binary_transparency/mainline/2026/02/tile/entries/ で提供されます。

タイルのコンテンツのルートは https://gstatic.com/android/binary_transparency/mainline/2026/02/tile/ で提供されます。

これらの URL は標準的なウェブページではありません。代わりに、サブディレクトリのログエントリには、Tessera や Golang SumDB Tlog ライブラリなどのツールを使用してプログラムでアクセスする必要があります。

  • ツリータイル: Merkle ツリーの内部ノードとリーフノードのハッシュは tile/<level>/<path>(tile/0/000、tile/1/000 など)で提供されます。
  • エントリ バンドル: ログリーフ ペイロードは、tile/entries/<path>(tile/entries/000、tile/entries/001 など)の下のエントリ バンドルに整理されます。各バンドルには、最大 256 個の連結されたエントリが保持されます。

各エントリの内容については、ログの内容をご覧ください。

チェックポイントに含まれるログのマークルツリーのルートハッシュは、https://gstatic.com/android/binary_transparency/mainline/2026/02/checkpoint で チェックポイント形式で提供されます。チェックポイントのオリジンは gstatic.com/android/binary_transparency/mainline/modules/2026/1 です。

チェックポイント署名は、Ed25519 署名アルゴリズムを使用して生成されます。チェックポイントの署名は、次の公開鍵を使用して、ノート検証ツール形式(golang.org/x/mod/sumdb/note で定義)または標準 PEM 形式で検証できます。

  • 注釈検証ツールの形式(<name>+<key_hash>+<public_key_bytes>):
MainlineModulesLogV2+e490c9dd+AfwnHm59rNQTJICchMd7a2W5PQa7nC5h2gTEfq3fhCEI
  • PEM 形式(SubjectPublicKeyInfo):
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEA/Ccebn2s1BMkgJyEx3trZbk9BrucLmHaBMR+rd+EIQg=
-----END PUBLIC KEY-----

アーカイブ済みログ(V1)

2026 年第 3 四半期のアップデートより前は、ログは ECDSA(SHA-256 を使用した NIST P-256)署名を使用した以前の V1 実装で動作していました。V1 ログはアーカイブされ、読み取り専用になりますが、過去のエントリの確認のために一般公開されたままになります。

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

Mainline モジュールは APK と同様であるため、Google APK の検証ページで説明されている検証方法も適用されます。これらのメソッドを使用して、請求者モデルで行われた請求を検証できます。