為進一步提升 Android 作業系統的信任度,我們承諾會在透明度記錄中,列出透過 Google Play 更新提供的所有 Android 作業系統模組 (稱為 Mainline)。我們會發布資訊公開記錄,驗證我們對這些模組所做的聲明。預先安裝的模組已涵蓋在 Pixel 二進位檔透明度中,因此不會明確列出。
威脅模型
透明化系統可用於偵測供應鏈攻擊,進而達到嚇阻效果。我們將舉例說明。
假設攻擊者惡意修改 Mainline 模組 (可能是 APEX 或 APK 檔案),甚至設法使用透過 Google Play 發布時使用的簽署金鑰簽署該模組。如果收到可疑的模組,任何人都可以查詢二進位檔透明度記錄,驗證模組的真偽。他們會發現 Google 並未將對應的模組中繼資料新增至記錄,因此不會信任遭入侵的 OS 模組。
由於發布至記錄檔的程序與簽署發布程序不同,這會提高攻擊者的門檻,不只是要入侵金鑰。
我們計畫使用標準見證通訊協定,將這份記錄整合至公開的見證人網路,同時也鼓勵外部獨立機構監控這份公開記錄的完整性。這些當事人可以證明記錄的附加專用屬性,並回報任何竄改行為。
這類透明度系統的存在,以及攻擊事件的額外可探索性,有助於遏止惡意活動。如果作業系統模組遭到入侵,但使用者只信任記錄檔中的模組,則遭到入侵的模組必須公開。這樣一來,您就更有可能發現遭入侵的模組,並採取行動移除其發布內容。
著作權聲明方模型
聲明者模型是一種架構,用於在可驗證的系統中定義角色和構件。以 Android Mainline Modules Transparency 為例,我們聲明記錄在這個記錄中的模組檔案雜湊值,代表特定版本的官方 Android 模組,供大眾使用。
- 聲明 MainlineModule:(我,Google,聲明
$hashModule是為$mainlineModule而設計),其中:
只要有 $mainlineModule 副本,任何人都能驗證這項聲明。
驗證頁面提供這個程序的詳細操作說明。這些步驟適用於一般 APK 和 Mainline 模組 (可以是 APK 或 APEX 檔案)。
記錄內容
Google 發布新版 Mainline 模組時,會將對應項目新增至 Mainline 模組透明度記錄。
這份記錄中的每個項目都包含四種中繼資料:
- 已簽署 Android Mainline 模組的 APK 或 APEX 的雜湊值。 這是整個檔案的 SHA256 摘要十六進位字串。
- 上述雜湊類型的說明。這是字串。
- 模組的套件名稱。這是字串。
- 模組的版本號碼 (versionCode)。這是非零整數。
記錄項目的格式是將四項資訊與換行 (\n) 字元串連在一起,如下所示:
hash\nhash_description\npackage_name\npackage_version\n
由於主線模組可以是 APK 或 APEX 檔案,因此雜湊說明可以是 SHA256(APK) 或 SHA256(APEX)。