Я думаю о реализации PBKDF2 в моем приложении Laravel 5 вместо стандартной аутентификации на основе blowfish.
Можно ли удваивать число итераций каждый раз, когда пароль вводится неправильно?
например Итерации по умолчанию — 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"
Ergo, это невозможно. А также отказ в обслуживании в ожидании сделал работать, как если бы ваш сервер делал вычисления.
Короче, придерживайтесь password_hash
(который использует Laravel), который обеспечивает всю безопасность для вас. Чем меньше вы делаете со своим кодом авторизации, тем меньше вы можете внедрить уязвимость.
Других решений пока нет …