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