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