Google サービスのアプリケーションの透明性

Google のアプリとプロダクトに対する信頼性を高めるため、Google はすべての Google プロダクト パッケージを透明性ログに記載することに取り組んでいます。Google は、これらのパッケージ(APK と APEX)に関する申し立てを一般に公開して検証するために、透明性ログを公開しました。

脅威モデル

透明性システムは、サプライ チェーン攻撃を検出して阻止するために使用できます。例をいくつか示します。

攻撃者が Google アプリやプロダクトを悪意を持って改変し、Google Play を通じた配布に使用される署名鍵で署名することに成功したとします。バイナリ透明性ログを使用すると、疑わしいパッケージ(APK または APEX)を受け取ったユーザーは、そのパッケージの信頼性を検証するための追加の検証可能な信頼できる情報源として利用できます。Google が対応するパッケージ メタデータをログに追加していないことがわかり、侵害されたパッケージを信頼しないようにします。

ログへの公開は、署名付きのリリース プロセスとは別のプロセスであるため(エコシステム図を参照)、攻撃者がキーを侵害するだけでは済まなくなります。

このログは、標準の証人プロトコルを使用して証人のパブリック ネットワークにも統合する予定ですが、外部の独立した当事者がこの一般公開ログの完全性を監視することをおすすめします。これらのパーティは、ログの追記専用プロパティを証明し、改ざんを報告できます。

このような透明性システムが存在し、攻撃の検出可能性が高まることで、悪意のあるアクティビティが抑制されます。パッケージが侵害されても、ユーザーがログに記録されているパッケージのみを信頼している場合、侵害されたパッケージを公開する必要があります。これにより、不正使用されたパッケージが存在することが判明する可能性が高まり、その配布を削除する措置を講じることができます。

請求者モデル

クレーム元モデルは、検証可能なシステムでロールとアーティファクトを定義するために使用されるフレームワークです。Google プロダクト アプリケーションの透明性の場合、このログに記録されたパッケージ ファイルのハッシュは、一般ユーザー向けの公式 Google プロダクトの特定のバージョンを表すという主張をします。

  • クレーム GoogleApp: (私、Google は、$hashApp が $googleApp 用であると主張します)。ここで、
    • $hashApp は、$googleApp の特定のバージョンのパッケージ ファイル(分割 APK や APEX パッケージを含む)の暗号ハッシュ(SHA256 など)です。
    • $googleApp は、Google が作成して配布するアプリやプロダクトを構成する Android パッケージ(APK または APEX)です。

$googleApp のコピーがあれば、誰でもこのクレームを検証できます。このプロセスについては、検証ページで詳しく説明しています。

ログの内容

Google が APK または APEX パッケージの新しいバージョンをリリースすると、対応するエントリが Google Product Application Transparency Log に追加されます。

このログの各エントリには、次の 4 つのメタデータが含まれています。

  1. Google 署名付きパッケージの APK ファイルまたは APEX ファイルのハッシュ。これは、ファイル全体の SHA256 ダイジェストの 16 進文字列です。
  2. 前のハッシュのタイプの説明。これは文字列です。
  3. パッケージのパッケージ名。これは文字列です。
  4. パッケージのバージョン番号(versionCode)。これはゼロ以外の整数です。

ログエントリの形式は、次の図に示すように、4 つの情報を改行(\n)文字で連結したものです。

hash\nhash_description\npackage_name\npackage_version\n

Google サービスは APK ファイルまたは APEX ファイルとして配布できるため、ハッシュの説明は SHA256(APK) または SHA256(APEX) に設定されます。これにより、各ファイルの内容を包括的に把握でき、ユーザーがこの測定値を簡単に取得できるようになります。

エコシステム図

検証可能なログ エコシステムの図