我們應該如何保護使用者的密碼

2021-10-04 22:09:52 字數 1665 閱讀 5172

最近幾年的新聞中一直有網際網路頭部公司系統被攻擊導致使用者密碼洩露的新聞。那密碼被破解肯定和當初專案伊始時選擇的密碼雜湊方案造成的歷史包袱有關。我們不討論這些網際網路巨頭應該採用什麼方案防止使用者密碼被破解,我知道的方案人家養的那些技術大拿更知道了。我們就來說一下,如果我們有機會自己從零開始做乙個系統時,應該選擇什麼樣的雜湊演算法有效防止使用者的密碼不被破解。

既然想保護使用者密碼不被破解,就先了解下破解密碼的手段吧。

我們需要防禦的兩種主要的密碼攻擊方式是:

如果密碼使用了鹽,但沒有為每個密碼使用唯一的鹽,那麼攻擊者要做的就是手動生成彩虹表,對每個組合使用鹽,然後進行查詢。如果你對每個密碼使用唯一的鹽,則攻擊者需要針對每個密碼為每個組合生成乙個列表再去查詢。這是另外一種型別的攻擊,即暴力攻擊。

暴力攻擊通過反覆嘗試猜測密碼來破解密碼。與慢速雜湊(例如bcryptscryptpbkdf2)不同,md5sha-1(或sha-256sha-512等)是訊息摘要演算法,它們旨在快速驗證給定訊息是否未被篡改。

在2023年的演講中,jeremi m. gosney使用商業級硬體測試比對了各種雜湊演算法的效能。該測試使用五颱伺服器,並帶有18個消費級顯示卡:

得出的結果如下:

鑑於硬體的進步速度,我們應該期望今天使用相同的硬體的花費會大大降低,或者使用今天的硬體,效能會比2023年時提高大約6-8倍。

上面的圖表裡的結果顯示如果你(2023年)仍在使用未加鹽(或非唯一)的md5雜湊值作為密碼,那麼2023年使用此配置硬體的的攻擊者每秒可以進行180,000,000,000次雜湊。即使是最複雜的sha演算法(sha-512),其速度比md5慢49,000,000倍,但每秒也可以計算36.4萬次雜湊。

另一方面,bcrypt每秒僅能執行71,000次雜湊。這比md5慢253,500,000%,比sha-1慢88,700,000%,甚至比sha-512慢412%。

很多系統中在儲存使用者的密碼前會對密碼加鹽並增加密碼雜湊的次數,以減慢密碼暴力攻擊的速度。例如執行五次md5迭代,但即使是這樣仍然只能使嘗試破解次數減少到每秒36,000,000,000次,是單個sha-1的兩倍,並且仍然比sha-512快99.99898%,而使用bcrypt則要慢443,000,000%。所以bcrypt是一種很好的雜湊密碼解決方案,可以有效地防止暴力破解和字典攻擊。

參考鏈結

近期文章推薦

go web程式設計--給自己寫的伺服器新增錯誤和訪問日誌

關於如何收集,標準化和集中化處理golang日誌的一些建議

使用者密碼的保護

最近的新聞報道了幾起黑客高調攻擊密碼系統的事件,包括中國的一號店和美國的linkedin,這兩次攻擊都造成了使用者密碼的洩漏。太不幸了,應該避免這樣的事情發生,因為它降低了整體消費者的信心,特別是在網際網路和電子商務領域。在雲絡公司,我們為自身超強的安全策略和幫助我們的客戶不斷提高他們的系統安全而自...

你是如何保護使用者的密碼的?

只要有會員系統的 就會涉及到密碼,如果處理不好就會造成前陣子那種事。下面我就說說我在開發時是如何處理密碼這塊功能的。首先,密碼必須加密,但簡單的md5加密已經沒有太大意義,為了防止字典破解,我會給密碼加鹽後在md5,我一般是用使用者自己的密碼當鹽。這一步操作後基本上就不怕資料庫暴露了,接下來要做的就...

600萬密碼洩露之後,我們該如何保護自己的密碼?

近日,烏雲網曝出大麥網 damai.com 使用者密碼資料庫在網上公開售賣,涉及使用者多達600餘萬!在利用密碼進行一次md5解密後,果然可登陸大麥網。在對洩露資料中取出三個相鄰的賬號進行登入,抓包分析其使用者id是連續的,技術上已經初步證明該資料有著很大的拖庫嫌疑。目前大麥網已確認使用者資訊洩露訊...