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

Google アプリの信頼性を高めるため、Google はすべての Google アプリを透明性ログに記載することにしました。Google は、これらの APK に関する主張を一般に公開して検証するために、透明性ログを公開しました。

脅威モデル

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

攻撃者が Google アプリを悪意を持って変更し、Google Play での配布に使用される署名鍵で署名することに成功したとします。バイナリの透明性ログを使用すると、疑わしい APK を受け取ったユーザーは、それを検証可能なグラウンド トゥルースのソースとして利用し、APK の信頼性を検証できます。Google が対応する APK メタデータをログに追加していないことがわかるため、侵害された APK を信頼しないようにします。

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

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

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

請求者モデル

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

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

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

ログの内容

Google が新しいバージョンの APK をリリースすると、対応するエントリが Google ファーストパーティ APK 透明性ログに追加されます。

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

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

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

hash\nSHA256(APK)\npackage_name\npackage_version\n

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

エコシステム図

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