2013-05-06 56 views
3

我正嘗試在我的應用程序和IPB論壇之間共享登錄信息。使用bcrypt(md5(pwd)+ salt)是不好的做法嗎?

我見過的InVision是提供一個模塊共享憑據:IPS Connect

簡單點說,有一個主應用和一個或severals從(S)。從服務器通過API發送主服務器需要存儲的憑證。

東西是對於registerlogin方法IPB發送密碼的散列密碼md5。沒有辦法,所以我認爲對md5哈希做一些使用bcrypt

$storedPassword = bcrypt(md5(pwd) + salt); 

你怎麼看待這種替代是什麼,我會存儲一個md5在我的數據庫,它是一個很好的做法與哈希在md5哈希上加密?

+0

不好的想法,多次散列會增加碰撞的機會 – 2013-05-06 13:59:51

+0

我聽說過它,但它是否會增加廣泛的碰撞機會? – darkheir 2013-05-06 14:05:27

+0

兩個用戶在散列之前也可以擁有相同的密碼,所以它不會影響碰撞。兩個用戶使用不同密碼和相同md5散列的機會幾乎沒有任何變化 – 2013-05-06 14:13:57

回答

1

雖然它完全正常的應用程序中使用$storedPassword = bcrypt(md5(pwd) + salt);,安全明智它幾乎沒有中獲益,也不需要將自己的鹽添加到加密中。 bcrypt會在內部處理這個問題,你不需要在任何地方儲存鹽。

攻擊者的目標最薄弱的環節,如果其它服務器只使用MD5,他們可以攻擊該網站以獲取密碼,然後它不事關你有多強保護它。

但話又說回來。關上一扇門仍然是一團糟,然後把一切都打開。

+0

是的,但其他網站不會存儲它,它只會在註冊時或用戶嘗試登錄時發送密碼(使用md5)。 因此,對於我來說,薄弱環節會在發送證書時嗅探2臺服務器之間的連接。 – darkheir 2013-05-06 14:04:45

+0

然後你的方法很好,如果你放棄鹽。對於所有你關心的用戶,他們自己輸入了32個字符作爲他們的密碼。 – 2013-05-06 14:11:49

+0

爲什麼要放鹽?我認爲這是使哈希獨特,不是? – darkheir 2013-05-06 15:00:41

0

降低安全。

MD5哈希通常縮短了密碼。這意味着攻擊者只需要遍歷MD5空間。即使你認爲MD5空間很大,將單詞字典映射到它也是微不足道的。這不會增加收益,但可能會減少空間。

關於衝突:你不bcrypt贏得銀河彩票。然而,對於MD5,事情確實有點不那麼確定,這是遠離它的另一個原因。

你不需要添加鹽,bcrypt已經自己添加了一個很好的,獨特的鹽。如果你正確使用bcrypt,你永遠不需要考慮鹽。

你的源只發送MD5哈希有點奇怪。我通常會建議通過加密連接發送的密碼(明文):

  • 如果連接是加密的,它是安全的將其發送明文。
  • 如果它沒有加密,那麼如果您先密碼哈希,攻擊者無論如何都可以從網絡讀取,則無關緊要。
相關問題