用 PGP 保護代碼完整性(七):保護在線帳戶
到目前為止,本系列教程已經提供了 PGP 的實用指南,包括基本概念和工具、生成和保護你的密鑰的步驟。如果你錯過了前面的文章,可以通過下面的鏈接查看。在本系列的最後一篇文章中,我們將為你保護在線帳戶提供一個額外的指南,保護在線帳戶是當今非常重要的一件事情。
清單
- 取得一個具備 U2F 功能的設備(必要)
- 為你的在線帳戶啟用雙因子認證(必要)
- GitHub/GitLab
- 社交媒體
- 使用 U2F 作為主驗證機制,使用 TOTP 作為備選(必要)
考慮事項
你可能注意到,很多在線開發者身份是捆綁了 email 地址的。如果有人能夠訪問你的郵箱,他們就能夠去做一些對你會產生危害的事情,進而會損害你作為自由軟體開發者的聲譽。應該像保護你的 PGP 密鑰那樣保護你的 email 地址。
使用 Fido U2F 的雙因子認證
雙因子認證 是一種提升帳戶安全性的機制,它除了要求用戶名和密碼之外,還要求一個物理令牌。它的目標是即便在有人竊取了你的密碼(通過按鍵記錄器、肩窺攻擊或其它方式)的情況下,仍然能確保你的帳戶安全,他們在沒有得到你的一個專用的物理設備(「必備」的那個因子)的情況下,始終不能獲取你的帳戶。
廣為人知的雙因子認證機制有:
- 基於 SMS 的驗證
- 藉助智能手機應用程序的基於時間的一次性令牌(TOTP),比如 Google Authenticator 或類似解決方案
- 支持 Fido U2F 的硬體令牌
基於 SMS 的驗證很容易配置,但是它有如下的缺點:它在沒有手機信號的地方無法使用(比如,建築物的地下室),並且如果攻擊者能夠阻斷或轉向 SMS 信息,這種方式可能就會失敗,比如通過克隆你的 SIM 卡。
基於 TOTP 的多因子認證提供了比 SMS 更好的安全保護,但它也有一些重要的缺點(你要在智能手機中添加的那麼多令牌中找到正確的那個)。此外,還不能避免一個事實,那就是你的密鑰最終還是保存在你的智能手機中 —— 它是一個複雜的、全球連接的設備,它有可能還沒有及時從製造商那兒收到安全補丁。
更重要的是,不論是使用 TOTP 還是 SMS 的方法來保護你免受誘騙攻擊 —— 如果誘騙攻擊者能夠竊取你的帳戶密碼和雙因子令牌,他們就可以在合法的站點上使用它們,訪問你的帳戶。
Fido U2F 是一個按標準開發的專用設備,它能夠提供雙因子認證機制來對付誘騙攻擊。U2F 協議在 USB 令牌中保存每個站點的的唯一密鑰,如果你在任何合法站點以外的地方嘗試使用它,它將阻止你,以防範偶然讓攻擊者獲得你的密碼和一次性令牌。
Chrome 和 Firefox 都支持 U2F 雙因子認證,希望其它瀏覽器也能夠提供對 U2F 的支持。
獲得一個支持 Fido U2F 功能的令牌
支持 U2F 的硬體令牌的 可選目標很多,但如果你已經訂購了一個支持智能卡的物理設備,那麼你最好的選擇就是 Yubikey 4,它兩者都支持。
啟用你的在線帳戶的雙因子認證
你要確定想啟用雙因子認證的在線賬戶,你的 email 提供商已經使用了(特別是 Google,它對 U2F 的支持非常好)。其它的站點這個功能應該是啟用了:
- GitHub:當你上傳你的 PGP 公鑰時,你應該要想到,如果其他人能夠獲得訪問你的帳戶,他們可以用他們自己的 PGP 公鑰替換掉你的 PGP 公鑰。如果在 GitHub 上發布代碼,你應該使用 U2F 認證來保護你的帳戶安全。
- GitLab:理由同上
- Google:如果你有 google 帳戶,你就驚奇地發現,許多帳戶都允許以 Google 帳戶來代替站點專用的認證來登入它們。
- Facebook:理由同上,許多在線站點都提供一個選擇讓你以 Facebook 的帳戶來認證。即便你不使用 Facebook 也應該使用雙因子認證來保護你的 Facebook 帳戶。
- 你認為必要的其它站點。查看 dongleauth.info 去找找靈感。
如有可能,配置 TOTP 作為備選
許多站點都允許你配置多個雙因子認證機制,推薦的設置是:
- U2F 令牌作為主認證機制
- TOTP 手機應用作為輔助認證機制
通過這種方式,即便你丟失了你的 U2F 令牌,你仍然能夠重新獲取對你的帳戶的訪問。或者,你可以註冊多個 U2F 令牌(即:你可以用一個便宜的令牌僅用它做 U2F,並且將它用作備份)。
延伸閱讀
到目前為止,你已經完成了下列的重要任務:
- 創建你的開發者身份並使用 PGP 加密來保護它。
- 通過將你的主密鑰移到一個離線存儲中並將子密鑰移到一個外置硬體設備中的方式來配置你的環境,讓竊取你的身份變得極為困難。
- 配置你的 Git 環境去確保任何使用你項目的人都能夠驗證倉庫的完整性和它的整個歷史。
- 使用雙因子認證強化你的在線帳戶。
在安全保護方面,你已經做的很好了,但是你還應該去閱讀以下的主題:
- 如何去強化你的團隊溝通。你的項目開發和治理決策的要求應該和保護提交代碼那樣去保護,如果不這樣做,應該確保你的團隊溝通是可信任的,並且所有決策的完整性是可驗證的。
- 如何去強化你的工作站的安全。你的目標是儘可能減少導致項目代碼被污染的危險或你的開發者身份被竊的行為。
- 如何寫出安全的代碼(查看相關編程語言和你項目所使用的庫的各種文檔)。即便引入它的提交代碼上有一個 PGP 簽名,糟糕的、不安全的代碼仍然是糟糕的、不安全的代碼!
作者:Konstantin Ryabitsev 選題:lujun9972 譯者:qhwdw 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive