Android 主系列模組資訊公開

為進一步提升 Android 作業系統的信任度,我們承諾會在透明度記錄中,列出透過 Google Play 更新提供的所有 Android 作業系統模組 (稱為 Mainline)。我們會發布資訊公開記錄,驗證我們對這些模組所做的聲明。預先安裝的模組已涵蓋在 Pixel 二進位檔透明度中,因此不會明確列出。

威脅模型

透明化系統可用於偵測供應鏈攻擊,進而達到嚇阻效果。我們將舉例說明。

假設攻擊者惡意修改 Mainline 模組 (可能是 APEXAPK 檔案),甚至設法使用透過 Google Play 發布時使用的簽署金鑰簽署該模組。如果收到可疑的模組,任何人都可以查詢二進位檔透明度記錄,驗證模組的真偽。他們會發現 Google 並未將對應的模組中繼資料新增至記錄,因此不會信任遭入侵的 OS 模組。

由於發布至記錄檔的程序與簽署發布程序不同,這會提高攻擊者的門檻,不只是要入侵金鑰。

我們計畫使用標準見證通訊協定,將這份記錄整合至公開的見證人網路,同時也鼓勵外部獨立機構監控這份公開記錄的完整性。這些當事人可以證明記錄的附加專用屬性,並回報任何竄改行為。

這類透明度系統的存在,以及攻擊事件的額外可探索性,有助於遏止惡意活動。如果作業系統模組遭到入侵,但使用者只信任記錄檔中的模組,則遭到入侵的模組必須公開。這樣一來,您就更有可能發現遭入侵的模組,並採取行動移除其發布內容。

著作權聲明方模型

聲明者模型是一種架構,用於在可驗證的系統中定義角色和構件。以 Android Mainline Modules Transparency 為例,我們聲明記錄在這個記錄中的模組檔案雜湊值,代表特定版本的官方 Android 模組,供大眾使用。

  • 聲明 MainlineModule:(我,Google,聲明 $hashModule 是為 $mainlineModule 而設計),其中:
    • $hashModule 是特定版本 $mainlineModule 的 OS 模組檔案密碼雜湊 (例如 SHA256)。
    • $mainlineModuleAPEX 或 Android 套件 (APK),構成 Google 建立、簽署及發布的 OS 模組。

只要有 $mainlineModule 副本,任何人都能驗證這項聲明。 驗證頁面提供這個程序的詳細操作說明。這些步驟適用於一般 APK 和 Mainline 模組 (可以是 APK 或 APEX 檔案)。

記錄內容

Google 發布新版 Mainline 模組時,會將對應項目新增至 Mainline 模組透明度記錄

這份記錄中的每個項目都包含四種中繼資料:

  1. 已簽署 Android Mainline 模組的 APK 或 APEX 的雜湊值。 這是整個檔案的 SHA256 摘要十六進位字串。
  2. 上述雜湊類型的說明。這是字串。
  3. 模組的套件名稱。這是字串。
  4. 模組的版本號碼 (versionCode)。這是非零整數。

記錄項目的格式是將四項資訊與換行 (\n) 字元串連在一起,如下所示:

hash\nhash_description\npackage_name\npackage_version\n

由於主線模組可以是 APK 或 APEX 檔案,因此雜湊說明可以是 SHA256(APK)SHA256(APEX)