如何安全地儲存密碼?

2021-07-03 12:35:21 字數 863 閱讀 4471

用 bcrypt、用bcrypt、用bcrypt、用bcrypt、用bcrypt、用bcrypt、用bcrypt、用bcrypt、用bcrypt (重要的話就是要多多地重複幾次)……

這些都是通用的hash函式,設計的初衷是為了盡可能快的計算大量資料的摘要。這意味著它們在保證資料完整性方面非常優秀但是對於儲存密碼則十分糟糕。

現代的伺服器計算 md5 的雜湊值速度大概是每秒330mb。如果你的使用者密碼滿足小寫、數字字母混合、6個字元長這幾個條件,你就可以在40秒內窮舉出該密碼。

完全不需要其他的投入。

如果你願意花費2000美元和一到兩周的時間來挑選一塊支援 cuda 的顯示卡,那你可以搭建乙個小型的、每秒計算700,000,000個密碼的超級計算機集群。估計你可以以每秒10%的速度來破解那些密碼。

注意了,非常重要的一點:hash加鹽對於字典攻擊和暴力破解無效。你可以用粗鹽,或許多的鹽,甚至是人工開採,陰涼的,有機的喜馬拉雅粉晶鹽。但這都無法影響到攻擊者破解你密碼的速度。

加鹽與否,只要你用了為速度而設計的通用雜湊函式,你就會受到影響。

怎麼做呢?從根本上說,是因為它的(計算速度可以)慢到令人髮指。它由 blowfish 加密演算法演變而來,並引入了功係數(work factor),以便讓你能決定該雜湊函式的計算強度。基於以上原因,bcrypt 可以緊隨摩爾定律的腳步。計算機發展更快,你也可以增加功係數來讓雜湊更難計算。

比起 md5,bcrypt 的計算強度能達到多大呢?這就要看功係數了。把功係數設為12情況下,在我的電腦上用 bcrypt 雜湊 yaaa 這個密碼大概要0.3秒。另一方面,用md5 來處理要少於1微秒。

你的密碼可能不需要那麼高的安全級別,而需要更快的運算速度。幸好,bcrypt允許你在速度和安全之間進行平衡。

用bcrypt.

譯 再談如何安全地在 Android 中儲存令牌

本文講的是 譯 再談如何安全地在 android 中儲存令牌,譯文出自 掘金翻譯計畫 譯者 lovexiaov 校對者 luoqiuyu hackerkevin private final static string api key 67a5af7f89ah3katf7m20fdj202 const...

如何安全地整合混合雲?

幾乎十分之九的it決策者認為,對於想要實現數位化業務轉型的企業組織來說,混合雲能力 很重要 或 很關鍵 2015年,新網際網路使用者的數量增長了8 增加0.25億人。許多企業組織期望適應不斷湧入的與本公司聯絡的全球客戶及其裝置,為此將資產遷移到雲端已成為當務之急。畢竟,雲計算可以降低成本,提高靈活性...

關於移動安全 如何更安全地BYOD

不知您有沒有注意到,人們的工作方式已經發生了革命性的變化。現如今,我們可以在家裡 在咖啡館 在租用辦公桌或以上所有環境中辦公。簡而言之,我們現在已然真正實現了移動辦公。這一切是如何發生的?其中乙個關鍵的因素就是諸如dropbox和box這樣的消費服務的興起。員工可以將資料儲存在雲中,使得工作更方便,...