Google Pixel のバイナリ透明性ログでは、透明性ログ技術が活用されています。
透明性ログの有用性は Certificate Transparency(証明書の透明性): 証明書の公開を必須にするプロトコルを Certificate Transparency(証明書の透明性)ログで公開されました。このプロセスによって 証明書の誤発行を抑制できるため、組織のセキュリティが あります。多くの Certificate Transparency(証明書の透明性)ログオペレーターは transparency.dev にある透明性ログがあります。
透明性ログはマークルツリーを使用して実装されます。このページは、 マークルツリーとバイナリ透明性に関する知識が必要です詳しくは、 検証可能なデータ構造 を使用して、マークルツリーの概要と バイナリの概要のランディング ページ 説明します。
ログの実装
Google Pixel のバイナリ透明性ログは、 タイルベースのマークルツリー。ルート が配信されます。 https://developers.google.com/android/binary_transparency/tile.注: これは 通常のウェブページではないことそのサブディレクトリに含まれるログエントリは、 Golang SumDB を使用してプログラマティックに読み取ることができます TLog ライブラリであり、 できます。
詳しくは、ログの内容を参照してください。 エントリの内容の説明です。
チェックポイントに含まれるログのマークルツリーのルートハッシュは、 https://developers.google.com/android/binary_transparency/checkpoint.txt. このモジュールの チェックポイント形式。 このマークルツリーのリーフは https://developers.google.com/android/binary_transparency/image_info.txt で提供されます。 チェックポイントの署名は、次の公開鍵で検証できます。
-----BEGIN CERTIFICATE-----
MIICPDCCAeOgAwIBAgIVAPooxISw/nFF/dPwmCUaV36Z4s3hMAoGCCqGSM49BAMCMHQxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYD
VQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAgFw0y
MTA3MTkyMjQxNDFaGA8yMDUxMDcxOTIyNDE0MVowdDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh
bGlmb3JuaWExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC0dvb2dsZSBJbmMuMRAw
DgYDVQQLEwdBbmRyb2lkMRAwDgYDVQQDEwdBbmRyb2lkMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcD
QgAEU83uXNUiTYE53c2TfdWmqpW20bBXy4KEf5Ff8dV8GLKlVAXKHyjw3Lp9J3E0yCRJ/39XKeuA
AMF7KzSvhD248KNQME4wDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUHRpvuNkzjtBY213BWgUyWWHm
3VYwHwYDVR0jBBgwFoAUHRpvuNkzjtBY213BWgUyWWHm3VYwCgYIKoZIzj0EAwIDRwAwRAIgZsZb
CNBXRkCKLS+LG/41VWj1cTszt9QCdJQNuy7aT94CIDPgn7v5b1ykBVUTuLgRSofxAzHg9R4dg1oA
7tTFAuDg
-----END CERTIFICATE-----
検証プロセスでチェックポイントとタイルを読み取る ログエントリが含まれます
適格性の確認プロセス
透明性ログは、ハッシュで構成されたマークルツリーで実装されます。 リーフノードにはデータが含まれ、親ノードはその子のハッシュを含みます。
マークルツリーに対して 2 つの計算を行い、改ざん検出可能 包含証明と整合性証明という、透明性ログの特性です。「 イメージのバージョンに対応するエントリがログに含まれていることを証明し、 つまりこのログエントリには、 VBMeta ダイジェスト OS イメージを表すハッシュで、デバイスから返すことができます。「 後者は、新しいエントリがツリーに追加されると、新しいチェックポイントが 以前のバージョンと同じ結果になります。
Google Pixel の画像を確認するには、インクルージョン証明を行います。実施 整合性証明の計算は任意です。これは、サードパーティが継続的に できます。
Google Pixel での検証のコンセプトについて理解を深めたい場合 バイナリ透明性。以下の手順に沿って画像を使用できます 確認しましょうGoogle Pixel のファームウェアを最新のソフトウェア バージョン 検証プロセスについては、このモジュールの Pixel Binary Transparency Full Verification(Pixel バイナリ透明性の完全検証)。
前提条件
次の依存関係が使用可能であることを確認します。
- Golang: 検証ツールは、Go 1.17 以降でビルドする必要があります。 Go のサイトをご覧ください。
- Android Debug Bridge(adb): Android デバイスと通信して検査する その画像を Android SDK Platform Tools のウェブサイト。
- インクルージョン証明の検証: ログと連携して、Google Pixel が バイナリ透明性ログにあります。
# Source code for the inclusion proof verifier is found at avb/tools/transparency/verify
git clone https://android.googlesource.com/platform/external/avb
インクルージョンの証明
Pixel の所有者は、最初に 次に、再計算されたルートハッシュと、そのルートハッシュを 含まれる チェックポイントを公開します。 一致している場合、Google Pixel の所有者は保護が保証される 例で示されていますが、 脅威モデル。
Pixel デバイスの画像が透明度ログに記録されていることを確認するには、次の操作を行います。 adb でデバイスに接続する 次のコマンドを実行します。
FINGERPRINT=$(adb shell getprop ro.build.fingerprint)
VBMETA_DIGEST=$(adb shell getprop ro.boot.vbmeta.digest)
LOG_ENTRY="${FINGERPRINT}\n${VBMETA_DIGEST}\n"
PAYLOAD_PATH="/tmp/log_payload.txt"
echo -e $LOG_ENTRY >> $PAYLOAD_PATH
cd avb/tools/transparency/verify/
go build cmd/verifier/verifier.go
./verifier --payload_path=$PAYLOAD_PATH
1 つ目のスタンザは、メタデータを Pixel デバイスから
/tmp/log_payload.txt に保存します。
2 つ目のスタンザは、 Android 確認付きブート リポジトリ。 このツールは、候補のログエントリのハッシュを計算し、もう一方の チェックポイントを再計算するために必要なハッシュを生成し、 チェックポイントの総計をカウントします。
コマンドの出力は stdout に書き込まれます。
- イメージがログに含まれている場合は
OK、 - そうでない場合は
FAILURE。
一貫性の証明(任意)
Google は Google Pixel ファクトリー イメージの新しいバージョンを定期的にリリースしているため、 増え続けています目撃者が木の成長を確認します。 以前のリーフと同じ方法で取得されます。監視者は 生成され、新しいルートのハッシュをリクエストして次の候補ルートハッシュを リーフハッシュが生成されます。透明性ログを改ざんすると、そのログを 整合性が継続的にチェックされます
透明性ログの追加専用の動作は、サードパーティによってアクティブにチェックされます。 ほとんどのユーザーは自分で行う必要がありますが、 誰でもログの整合性をモニタリングできます。Google はオープンソース 監視を実装することもできます。 GitHub リポジトリ。必要なのは、 使用 構成 (Pixel Binary Transparency(PixelBT)ログに固有のものです)