SHA-1對密碼存儲是否安全? SHA-1和preimage攻擊一樣安全,但它很容易計算,這意味著更容易安裝暴力攻擊或字典攻擊。(對于像SHA-256這樣的后繼者也是如此。)根據(jù)具體情況,設(shè)計成計算成本高的哈希函數(shù)(例如bcrypt)可能是更好的選擇。有些人會像“SHA-1被打破”那樣發(fā)表評論,所以我試圖理解究竟是什么意思。假設(shè)我有一個SHA-1密碼哈希的數(shù)據(jù)庫,一個攻擊者使用最先進(jìn)的SHA-1破解算法和一個擁有100,000臺機(jī)器的僵尸網(wǎng)絡(luò)可以訪問它。(控制超過10萬臺家用計算機(jī)意味著他們每秒可以完成大約10 ^ 15次操作。)他們需要多長時間找出任何一個用戶的密碼?找出給定用戶的密碼?找出所有用戶的密碼?找到一種以用戶身份登錄的方法?找到以特定用戶身份登錄的方法?如果密碼被腌制,它會如何改變?腌制的方法(前綴,后綴,兩者,還是像xor-ing這樣復(fù)雜的東西)是否重要?這是我目前的理解,經(jīng)過一些谷歌搜索。如果我誤解了某些內(nèi)容,請在答案中更正。如果沒有鹽,彩虹攻擊會立即找到所有密碼(超長密碼除外)。如果有足夠長的隨機(jī)鹽,找出密碼的最有效方法是暴力破解或字典攻擊。碰撞和preimage攻擊都沒有找到實際密碼的任何幫助,因此對SHA-1的加密攻擊在這里沒有幫助。使用什么算法甚至不重要 - 人們甚至可以使用MD5或MD4,密碼也同樣安全(因為計算SHA-1哈希的速度較慢)。為了評估“同樣安全”的安全性,我們假設(shè)單個sha1運(yùn)行需要1000次操作,密碼包含大寫,小寫和數(shù)字(即60個字符)。這意味著攻擊者每天可以測試10個15 * 60 * 60 * 24 / 1000~ = 10 17個潛在密碼。對于暴力攻擊,這意味著在3小時內(nèi)測試最多9個字符的所有密碼,一周最多10個字符,一年最多11個字符。(每增加一個字符需要花費(fèi)60倍。)字典攻擊速度要快得多(即使是一臺計算機(jī)的攻擊者也可以在幾小時內(nèi)完成它),但只能找到弱密碼。要以用戶身份登錄,攻擊者無需找到確切的密碼; 它足以找到導(dǎo)致相同哈希的字符串。這被稱為第一次原像攻擊。據(jù)我所知,沒有針對SHA-1的preimage攻擊。(A暴力破解攻擊需要2點160的操作,這意味著我們的理論,攻擊者需要10 30年,把它關(guān)閉。的理論可能性的限制是大約2個60操作,在該攻擊將需要幾年的時間。)有原像攻擊對抗縮減版本的SHA-1,效果可以忽略不計(對于使用44步而不是80步減少的SHA-1,攻擊時間從2 160次操作減少到2 157次)。有針對SHA-1的碰撞攻擊,這在理論上是可能的(我發(fā)現(xiàn)最好的時間從2 80減少到2 52),但是這些對密碼哈希沒用,即使沒有腌制。簡而言之,使用SHA-1存儲密碼似乎非常安全。我錯過了什么?
3 回答

當(dāng)年話下
TA貢獻(xiàn)1890條經(jīng)驗 獲得超9個贊
您的描述對于當(dāng)前的技術(shù)水平來說聽起來很準(zhǔn)確。
但是,您不應(yīng)該使用任何散列函數(shù)的單次迭代:至少,您應(yīng)該多次迭代(散列的1000次迭代會使攻擊者的工作量增加1000倍。它會使您的工作量增加相同的數(shù)量,但是你做的密碼哈希比他們少得多。)
但是,理想情況下,您應(yīng)該使用現(xiàn)有的密碼存儲原語,例如此處描述的那些。
- 3 回答
- 0 關(guān)注
- 1141 瀏覽
添加回答
舉報
0/150
提交
取消