2
我正在考慮在我的Laravel 5應用程序中實現PBKDF2以取代默認的基於blowfish的身份驗證。當密碼錯誤時動態增加PBKDF2的迭代
每次輸入密碼錯誤時,迭代次數加倍是否可行?
例如默認迭代次數是2000次,當密碼第一次出錯時,下一次嘗試將是4000次迭代,然後是8000次等等。
我正在考慮在我的Laravel 5應用程序中實現PBKDF2以取代默認的基於blowfish的身份驗證。當密碼錯誤時動態增加PBKDF2的迭代
每次輸入密碼錯誤時,迭代次數加倍是否可行?
例如默認迭代次數是2000次,當密碼第一次出錯時,下一次嘗試將是4000次迭代,然後是8000次等等。
儘管您可以繼續在PBKDF2哈希上進行迭代,但實際上它無法通過事實你不知道原始值,這就是爲什麼你有一個哈希首先。你可以存儲迭代計數並嘗試恢復迭代,但你會遇到一個障礙 - 不知道密鑰派生函數的內部狀態。
考慮以下幾點:
var_dump(($hash = hash_pbkdf2("sha256", "password", "salt", 2000)));
var_dump(hash_pbkdf2("sha256", $hash, "salt", 2000));
var_dump(hash_pbkdf2("sha256", "password", "salt", 4000));
這將產生:
string(64) "9209a0c90243e88b89488f99cd7ea010c244cc7a9d4bf65c157f2d8f642eb952"
string(64) "b90c5d9a2d8bb559a36682bd6044a8da0480199148339fe34ef62598e052b0b6"
string(64) "99a4d4dd66f714fae1bab9246ea449dd598d7683a569227c07cdb679e3ed3474"
人體工程學,這是不可能的。並且如果確實有工作,那麼等待發生的拒絕服務也會發生,因爲這將是您的服務器執行計算。
總之,堅持password_hash
(Laravel使用),爲您提供所有的安全。您對授權代碼做的越少,可以引入漏洞的次數越少。
不行。改用油門機械。 - 您可能希望在某個時候重置此設置,但您不知道原始值。聽起來像是一個等待發生的潛在DoS。 – Amelia
如果您有3次(或5次或10次)錯誤的登錄嘗試,您可以停止接受該用戶名的憑證10分鐘(或30或2小時)。 –
@ ArtjomB。這是一個更好的主意,不知道爲什麼我沒有想到這樣的事情,或者只是在X失敗登錄後鎖定帳戶。 +1 – imperium2335