天天看點

密碼安全之動态鹽

首先,我們看看什麼是鹽:http://zh.wikipedia.org/zh/%e7%9b%90_%28%e5%af%86%e7%a0%81%e5%ad%a6%29

通常情況下,當字段經過散列處理(如md5),會生成一段散列值,而散列後的值一般是無法通過特定算法得到原始字段的。但是某些情況,比如一個大型的彩虹表,通過在表中搜尋該md5值,很有可能在極短的時間内找到該散列值對應的真實字段内容。

加鹽後的散列值,可以極大的降低由于使用者資料被盜而帶來的密碼洩漏風險,即使通過彩虹表尋找到了散列後的數值所對應的原始内容,但是由于經過了加鹽,插入的字元串擾亂了真正的密碼,使得獲得真實密碼的機率大大降低。

但是很多人沒意識到的是靜态鹽仍然不夠安全。因為靜态鹽要面臨兩種攻擊:

1,基于特定的靜态鹽,可以生成特定的彩虹表.

2,對靜态鹽處理過的散列密碼,可以按出現頻率進行排序,最常出現的散列密碼,對應的明文密碼必然還是那些111111、123456之類的。

是以,對于重要的賬号密碼,我們需要采用動态鹽來對密碼進行混淆。一個常用做法就是把賬号名進行md5之後,作為動态鹽。則上述兩種攻擊将失效。

比如,使用者名是wsq,對應的md5是4572381974328f9c作為動态鹽,密碼是123456,加上動态鹽之後為4572381974328f9c123456,再md5是d16e970d6e5b95b9。則最終的計算結果是無法猜測的(unguessable)

繼續閱讀