Google System Services APK の透明性

Google はプロダクトの透明性への継続的な投資の一環として、Android System SafetyCore(com.google.android.safetycore)と Android System Key Verifier(com.google.android.contactkeys)の 2 つの新しい Google システム サービス APK に透明性を追加します。これらの APK は、Google メッセージセンシティブなコンテンツの警告と暗号鍵の検証機能をそれぞれ強化します。これらの APK に関する申し立てを確認するために公開された透明性ログ

対象のパッケージ

このセクションでは、透明性ログに含まれるパッケージと、それぞれのコード透明性署名鍵について説明します。

Android System SafetyCore

Android System SafetyCore(com.google.android.safetycore)は、アプリにプライバシー保護のオンデバイス ユーザー保護インフラストラクチャを提供する Android システム コンポーネントです。

この APK のコードは現在、この証明書で説明されている次の鍵で署名されています。

-----BEGIN CERTIFICATE-----
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
4ZM=
-----END CERTIFICATE-----

Android System Key Verifier

Android System Key Verifier APK(com.google.android.contactkeys)は、Android での連絡先確認サービスです。これにより、ユーザーは連絡先の公開鍵を検証し、メッセージの送信先が正しいことを確認できます。このサービスは、さまざまなアプリ間で公開鍵を検証できる統合システムです。QR コードのスキャンまたは番号の比較による検証を使用します。

この APK のコードは現在、この証明書で説明されている次の鍵で署名されています。

-----BEGIN CERTIFICATE-----
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
PLM=
-----END CERTIFICATE-----

脅威モデル

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

攻撃者が Google システム サービスの APK を悪意を持って変更し、Google Play で使用されている署名鍵で署名できたとします。悪意のある APK を受け取ったユーザーは誰でも、バイナリ透明性ログにクエリを実行して APK の真正性を確認できます。Google が対応する APK メタデータをログに追加していないことがわかり、不正使用された APK を信頼しないことがわかります。

ログへの公開は、署名付きのリリース プロセスとは別のプロセスであるため(エコシステム図を参照)、攻撃者のハードルは鍵の不正使用を超えて高くなります。

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

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

申立人モデル

Claimant Model は、検証可能なシステム内のロールとアーティファクトを定義するために使用されるフレームワークです。Google System Services APK の透明性の場合、このログに記録された署名付きバイナリのハッシュは、それぞれの Google System Services APK の公式コードを表すという主張がされています。

  • GoogleSystemServicesApk の申し立て:(Google は、$codeSignature$googleSystemServicesApk 用であると主張します)。ここで、次のようになります。
    • $codeSignature は、特定のバージョンの $googleSystemServicesApk に含まれる DEX ファイルとネイティブ ライブラリのリストと、それに対応するハッシュを含む署名付き JSON Web Token(JWT)です。
    • $googleSystemServicesApk は、{Android System SafetyCore (com.google.android.safetycore), Android System Key Verifier (com.google.android.contactkeys)} の次のパッケージ セットの Android パッケージ(APK)です。

$googleSystemServicesApk のコピーをお持ちであれば、上記の申し立てを確認できます。このプロセスについては、確認ページで詳しく説明しています。

ログの内容

Google は、上記の APK の新しいバージョンをリリースする際に、Google System Services APK の透明性ログに対応するエントリを追加します。

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

  1. Google が開発した APK のコード署名のハッシュ。これは、コード透明性トークン(コード透明性 JWT)の SHA256 ダイジェストの 16 進数文字列です。
  2. 上記のハッシュの種類の説明。これは文字列です。
  3. APK のパッケージ名。これは文字列です。
  4. APK のバージョン番号(versionCode)。これは整数です。

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

hash\nSHA256(Signed Code Transparency JWT)\npackage_name\npackage_version\n

このリリースでは、コード透明性の利用をテストしています。つまり、APK のハッシュではなく、コード透明性トークンのダイジェストを記録します。そのため、ハッシュの説明は現在 SHA256(Signed Code Transparency JWT) に固定されています。

また、アプリ署名鍵が Google Play によって保持されている場合に、アプリ デベロッパーがコード透明性を利用できる方法も示しています。

エコシステム図

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