Google 系統服務 APK 資訊公開

為持續提升 Google 產品的資訊透明度,我們將為兩個新的 Google 系統服務 APK 新增資訊透明度:Android System SafetyCore (com.google.android.safetycore) 和 Android System Key Verifier (com.google.android.contactkeys)。這些 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 code 或比較號碼來驗證。

這個 APK 的程式碼目前是使用此憑證所述的下列金鑰簽署:

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

威脅模式

透明化系統可用於偵測並阻止供應鏈攻擊。我們將舉例說明。

假設攻擊者惡意修改 Google 系統服務 APK,甚至設法使用 Google Play 使用的簽署金鑰簽署 APK。凡是收到惡意 APK 的使用者,都可以查詢二進位透明化記錄,驗證 APK 的真實性。他們會發現 Google 並未將對應的 APK 中繼資料新增至記錄檔,因此會知道不應信任遭入侵的 APK。

由於發布至記錄檔的程序與含簽署的發布程序是不同的程序 (如生態系統圖表所示),因此攻擊者必須克服更多障礙,才能取得金鑰。

我們也打算使用標準見證通訊協定,將這份記錄整合到見證人的公開網路中,同時鼓勵外部獨立人士監控這份公開記錄的完整性。這些對象可以驗證記錄的唯附加屬性,並回報任何竄改行為。

這類資訊公開系統的存在,以及攻擊的額外可偵測性,都會阻止惡意活動。如果 APK 遭到入侵,但使用者只信任記錄中的 APK,則需要公開遭到入侵的 APK。這樣一來,您就更有可能發現存在受感染的 APK,並採取行動移除其發布。

版權聲明方模型

聲明者模型是一種架構,用於在可驗證的系統中定義角色和構件。就 Google 系統服務 APK 資訊公開記錄而言,我們聲明,記錄在這個記錄檔中的已簽署二進位檔雜湊,代表各個 Google 系統服務 APK 的官方程式碼。

  • 聲明 GoogleSystemServicesApk:(我,Google,聲明 $codeSignature 是用於 $googleSystemServicesApk),其中:
    • $codeSignature 是已簽署的 JSON Web Token (JWT),其中包含 DEX 檔案清單和原生資料庫,以及特定版本的 $googleSystemServicesApk 中所含的對應雜湊。
    • $googleSystemServicesApk 是下列套件組合中的 Android 套件 (APK):{Android System SafetyCore (com.google.android.safetycore), Android System Key Verifier (com.google.android.contactkeys)}

凡是擁有 $googleSystemServicesApk 副本的使用者,都可以驗證上述聲明。我們已在驗證頁面中詳細說明這項程序。

記錄內容

Google 發布上述 APK 的新版本時,會在 Google 系統服務 APK 資訊公開記錄中新增對應的項目。

此記錄中的每個項目都包含四個 APK 中繼資料:

  1. Google 開發的 APK 程式碼簽名的雜湊。這是程式碼透明度權杖 (也稱為程式碼透明度 JWT) 的 SHA256 摘要十六進制字串。
  2. 上述雜湊類型的說明。這是字串。
  3. APK 的套件名稱。這是字串。
  4. APK 的版本號碼 (versionCode)。這個值必須是整數。

記錄項目的格式是將四個資訊片段連結在一起,並加上換行符號 (\n) 字元,如下所示:

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

請注意,在本版本中,我們正在嘗試使用程式碼透明度。也就是說,我們會記錄程式碼透明度符記的摘要,而非 APK 的雜湊。因此,目前的雜湊描述為 SHA256(Signed Code Transparency JWT)

此外,這也說明瞭當 Google Play 持有應用程式簽署金鑰時,應用程式開發人員可以如何使用程式碼透明性。

生態系統圖

可驗證記錄生態系統圖