Android APK 簽名模型期望簽名密鑰在應用程式的整個生命週期中保持不變。這體現在 Android 簽名密鑰的推薦使用期限上:20 年以上 。基於此,很難將應用程式遷移到新密鑰。因為簽名密鑰是防止 APK 冒充其他人的重要部分,所以 Android 簽名密鑰必須在應用程式的整個生命週期中保證安全。
F-Droid 軟體庫的簽名密鑰遵循一個非常相似的模型:簽名密鑰是安全識別 F-Droid 軟體庫的重要方式。因此,同樣的考慮適用於F-Droid 軟體庫簽名密鑰和APK簽名密鑰。這也提供了一些真正有用的好處。由於軟體庫索引檔案和 APK 的完整性由軟體庫簽名保證,檔案可以透過任何最方便的方法交付,它們的完整性將被 F-Droid 客戶端應用程式,f-droid.org 部署過程和 Repomaker 自動驗證。
這意味著安全負擔從在線的公開的網路伺服器轉移到了私密的簽名機器上。只要讓這台機器遠離公眾的視線,就能在很大程度上提高安全性。可以採取一些額外的措施來進一步提高簽名過程的安全性。這裡有一些方法,從最簡單和最不安全的開始,然後是更安全的設定,但需要更多的工作來設定和執行。簽名不是一個資源密集型的過程,所以任何機器都可以工作,甚至是一台 10 年前的基本的筆記本電腦。我們建議使用一個最小的 Debian 安裝,並從頭構建機器。
帶有 HSM 的自動簽名伺服器
對於一個完全自動化的簽名設定,執行簽名的機器需要在線並持續執行。理想情況下,這台機器不能有遠程存取,至少遠程存取應該被非常仔細地控制和監控。膝上型電腦即使在禁用遠程存取的情況下,也能很容易地工作,因為它提供了一個內置的鍵盤和顯示器。如果需要遠程存取,那麼任何基本的個人電腦都可以工作。使用硬體安全模組 (HSM) 來存儲密鑰可以防止在伺服器被攻破時密鑰被盜。攻擊者只能在該伺服器上執行簽名過程。
理想情況下,這台機器只能透過 Tor 存取。這隱藏了伺服器的物理位置,並隱藏了來自網路的流量。這使得攻擊者更難找到實際的機器進行攻擊。
對於HSM,我們推薦使用 Nitrokey 硬體,因為它們是自由軟體/硬體,並提供廣泛的選擇。使用一台單獨的機器將簽名密鑰放在 HSM 上。一個好的 HSM 會儲存一個審計跟踪,記錄簽發了多少個簽名,所以這些資訊可以用來建立一個自動審計程式並在簽名過多的時候發出警報。這可能意味著這台伺服器被攻破並被用來簽署未經授權的軟體包。
另一種可能是使用類似 Fedora 的 Sigul 這樣的涉及三台機器的設定。
專門用於簽名的基本膝上型電腦
從一台可以完全清除並從頭構建的膝上型電腦開始。最重要的是,只在上面安裝必要的軟體。例如,不要安裝任何瀏覽器,因為這是最常見的攻擊向量。不應安裝或配置遠程存取設定(如 SSH 或 VNC)。為了簽名應用程式和軟體庫,有人會拿出這台膝上型電腦,將其連接到網路,並執行簽名過程。然後,簽名的結果可以透過網路連接發布。當簽名完成後,可以關閉機器,斷開連接,並儲存在一個安全的地方。
這可以透過一些定制的腳本使之相當自動化。執行該程式的人只需要拿出機器,連接它,打開它,等待程式完成,然後再把它收起來。
使用 U 盤的完全離線簽名膝上型電腦
這個過程是基於與前一個例子相同的基本的經過裁剪的膝上型電腦。但是這一次,在安裝過程中應該完全禁用網路。例如,在許多膝上型電腦中,很容易從物理上拆除 WiFi 卡。因此,使用不包括以太網插口的膝上型電腦是有意義的,這些插口通常無法移除。否則,可以將所有與網路有關的內核模組列入封鎖名單。由於這台機器是完全離線的,額外使用 HSM 的額外工作並不那麼重要但也無妨。
下載完整的 Debian CD 或 DVD 鏡像來執行安裝。請務必驗證 GPG 簽名和 SHA-256 哈希值。為了更新離線機器,需要進行 apt 離線 設定。
為了格外小心,所有使用的軟體都應經過驗證。 Chromebook 是物美價廉的膝上型電腦,可以原生執行 Linux。它們也可以使用 Coreboot 作為 BIOS。
- 用現金購買現成的電腦,避免運輸,尤其是跨境運輸
- 購買一個支援 Debian 的 Chromebook,帶有可移動的 Wi-Fi 硬體,不需要二進制 blob
- 安裝一個可重複構建的 Coreboot 二進製檔案
- 從一個可重複構建的 Debian 鏡像中安裝,完全清除Chrome OS
物理環境
最後要考慮的是簽名發生的物理地點,以及重要裝置的存放地點。簽署環境必須在物理上是安全的。否則,沒有辦法防止膝上型電腦或 HSM 丟失或被用於簽名不適當的內容。對於離線機器,把它們放在一個上鎖的房間裡是一個好的開始。對於在線機器,強制所有的網路流量和遠程存取透過 Tor 進行可以向網路觀察者隱藏機器的物理位置。
對於高風險的簽名密鑰,使用多層防護很重要:
- 限制對 HSM 或智慧卡的物理存取
- 安全攝像機
- 現場安保人員
- 訪客記錄
- 一款可安全使用工具的伺服器,適用於在線代碼簽名伺服器
簽署伺服器應與基礎設施的其他部分在物理上分開。日誌,機器和網路應定期進行審計。
困難的決定
理想情況下,所有這些做法都會落實到位,但這些安全措施中的每一項都要付出困難,費用和復雜性的代價。它們也會推遲定期更新的程式。因此,實施太嚴格的安全政策有風險,就像實施不夠的風險一樣。
