明文存密碼成慣例?Facebook 6 億使用者密碼可被 2 萬員工直接看
近日,外媒釋出了一份網際網路安全的調研報告,報告中稱 Facebook 曾將 6 億使用者的賬號密碼使用明文儲存,且可以被 Facebook 內部員工隨意搜尋檢視。據 Facebook 方面的訊息人士稱,純文字存檔的使用者密碼可追溯到 2012 年,在這期間有超過 2 萬名員工搜尋過這些資訊。
不久,Facebook 負責工程、安全和隱私的副總裁 Pedro Canahuati在 facebook Newsroom 上發文 證實確有此事:“2019 年 1 月進行例行安全審查時,我們發現了一些使用者密碼以可讀的格式儲存在內部儲存系統中。”
Pedro Canahuati 強調目前這一安全問題已被解決,且這些密碼沒有被除 Facebook 以外的任何人看到,Facebook 內部也沒有發現任何濫用或不正當訪問的行為。
根據 2018 年生效的《歐盟資料保護條例》:網路公司要在 72 小時內通知受隱私洩露影響的民眾,並且公司要安全地儲存使用者密碼。針對此次事件,Facebook 也表示要將實際情況通知給數億 Facebook Lite 使用者、數千萬 Facebook 使用者以及數萬 Instagram 使用者。
Facebook 的加密新措施
何為密碼?百度百科的解釋為使用者希望將正常的、可識別的資訊轉變為無法識別的資訊。明文儲存密碼事實上已經失去了其為密碼的意義。
該事件發生之後,Facebook 如何來儲存密碼呢?據 Pedro Canahuati 稱:“在最佳實踐方面,Facebook 會在建立帳戶時會遮蔽密碼,公司中的任何人都無法看到這些密碼;在安全方面,將使用 Hash+Salt 來為密碼加密,同時也會採用 scry.pt 演算法和加密金鑰,將真正的密碼不可逆地替換成為一組隨機字元。”
另外,針對共享、重用、密碼被盜等情況,Facebook 也建立了相應的安全措施:
- 使用各種訊號來檢測可疑活動。例如,當輸入了正確密碼,但檢測到密碼是在無法識別的裝置上輸入,或者不是常用地登入,或是不在常用常用地登入,那麼 Facebook 將會提出一個額外的驗證問題,以證明此人是真正的帳戶所有者。
- 使用者會接收到有關無法識別登入的警報。
- 監測在不同服務中重用密碼的情況。Facebook 會密切關注來自其他組織的資料洩露通知和公開發布的被盜憑證資料庫,檢查被盜的電子郵件和密碼組合是否與 Facebook 上使用的相同憑證相匹配,如果找到匹配項,會在下次登入時通知使用者更改密碼。
- 為了減少對密碼的依賴,Facebook 引入了向帳戶註冊物理安全金鑰的功能,因此下次登入時,使用者只需要輕敲計算機 USB 驅動器中的一個小型硬體裝置。這項措施對高風險使用者來說尤其重要,例如記者、活動家和公眾人物等等。
明文存密碼成慣例?
2017 年到 2018 年,有人進行了一項研究:電腦科學的學生是否會編寫安全儲存密碼的程式碼。實驗結果表明,在沒有明確提示的情況下,沒有任何一個學生實現了安全的密碼儲存。當研究者詢問為什麼沒有實現安全儲存密碼呢?大多數學生表示,因為這只是個小實驗,如果他們是為企業寫程式碼,肯定會實現安全儲存。
世上從不缺少“較真”的人,隨後就有人進行了另一項實驗 。研究人員在網路上找到了 43 位自由職業程式設計師,讓他們為 Web 應用程式的使用者註冊進行程式碼編寫,並評估了他們是如何實施的密碼儲存。研究結果表明,有 26 個開發人員最初選擇了將密碼儲存為明文。
當研究人員要求這 43 位開發人員重新寫程式碼以實現安全地儲存密碼,他們選擇的加密方案如下:
- 8 個人選擇了 Base64
- 3 個人選擇了 AES
- 3 個人選擇了 3DES
- 10 個人選擇了 MD5
- 1 個人選擇了 SHA-1
- 5 個人選擇了 SHA-256
- 5 個人選擇了 PBKDF2
- 7 個人選擇了 Bcrypt
- 1 個人選擇了 HMAC/SHA1
在使用 MD5、SHA-1、SHA256 和 HMAC-SHA1 這四種加密演算法的開發人員中只有 3 個人加了 salt 雜湊。另外,Base64 也不是一個很好的安全解決方案,但顯然有很多開發人員並不這樣認為。
從上面這兩個例子中不難看出,無論是在校學生還是已經工作的技術人員,明文儲存密碼似乎正在成為“慣例”,而且即便開發人員有了加密意識,在加密方式和技術方面可能也會有所欠缺,無法完成高級別的加密。