2012-12-09 27 views
1

我想用於密碼密碼的算法由於新技術(CPU更強大,GPU ...)逐年變弱,因此012;這是否意味着在2006年註冊的用戶受到的保護程度低於2012年註冊的用戶?如何爲用戶更新密碼系統?

然後;如何更新2006年該用戶的密碼? (例如雅虎,如果自2006年以來註冊,那麼我的密碼比我在2012年投入的密碼需要更少的時間來破解,那麼雅虎將如何將密碼更新爲新的強大系統?)

In換句話說:如何從一個系統遷移到另一個(從MD5到Bcrypt例如用於現有MD5哈希密碼)

+1

StackOverflow是錯誤的地方問。問題可能是2006年的密碼比最近的密碼要弱,因爲密碼較短。您可以將所有密碼更改爲長度> 12個字符,並且其中包含一些非字母字符。 –

+0

我的意思是,例如,如果我想從MD5遷移到BCrypt,例如,我該如何轉換我的MD5密碼! –

+1

你不轉換它。您要求您的用戶使用新的實施方式更改密碼(或者更改自己的密碼)。如果它很容易兌換,那將意味着它首先是非常不安全的。 –

回答

2

有兩個實際問題:

  • CPU功率的增加,所以蠻力裂化增加
  • 老算法變得不太安全

後者通過改變通常在數據庫中散列和存儲密碼的方式進行修復。每當用戶以舊格式存儲密碼時,您都可以執行此操作。

第一個需要實際更改密碼,您應該強制用戶每隔一段時間更新一次密碼,並在進入新密碼時檢查(或至少指明)密碼強度。

另一種對付增加的CPU功率的方法是限制多次失敗後的密碼嘗試次數,從而防止暴力破解密碼。

一般來說,雖然我認爲大多數網站和系統都缺乏適當的密碼存儲管理。

+0

謝謝:) 我認爲這將是一個長期的解決方案:迫使用戶在1年後更新密碼,例如,這將削減摩爾定律,並可以清理被遺忘的賬戶。 BTW:隨着時間的推移,SCrypt可以很好地擴展,你只能指定最大時間,所以你添加RAM + CPU的次數越多,密碼就越複雜! –

1

如果你的哈希方案涉及到只是反覆散列當前值(1000倍),那麼你總是可以在以後增加迭代次數(而不是減少它)。

您可以使用bcrypt作爲您的迭代函數,這樣您就可以從兩種方案中獲益。

像這樣:

var hash = bcrypt(pw, salt); 
for N iterations: 
hash = bcrypt(hash, salt) 

你總是可以 「添加」,在未來的新的迭代。

+0

謝謝, 問題是關於老用戶,在SCrypt中你可以指定最大時間,所以它可以很好地與摩爾定律相適應,但是如何更新老用戶:'( –