Поскольку формат хэш-строки ($2y$10$salt....) сам по себе дает подсказки хакеру (т. е. тому, кто взломал БД), что шифрование выполняется с использованием алгоритма Bcrypt, и поэтому он может легко взломать, используя password_verify() в php, передав параметры в качестве угадываемых паролей.
Целесообразно ли хранить хешированный пароль Bcrypt непосредственно в БД?
comment
Я бы не сказал «легко»: перебор Bcrypt займет очень и очень много времени.
- person Jim   schedule 23.06.2014
comment
Да, это нормально. Атаки грубой силы на bcrypt — не очень эффективный метод, особенно когда вы увеличиваете стоимость.
- person Brett Santore   schedule 23.06.2014
Ответы (1)
Нет никаких недостатков в хранении этих хэшей BCrypt непосредственно в базе данных, ни один из параметров не должен быть секретным. Кроме того, они позволяют переключиться на лучший алгоритм (или увеличить коэффициент стоимости), не становясь несовместимыми со старыми хэшами.
Если бы эти параметры каким-то образом были скрыты, злоумышленнику пришлось бы их угадывать. Но существует не так много возможных значений, например, фактор стоимости. имеет смысл только между 9-13. Если вы действительно хотите добавить такой секрет на стороне сервера, есть гораздо лучшие способы сделать это. Вы можете зашифровать (двусторонне) уже хэшированные значения с помощью надежного ключа, тогда злоумышленник должен «угадать» этот ключ, что невозможно.
person
martinstoeckli
schedule
24.06.2014
Где-то в Интернете я видел, что bcrypt основан на шифре Blowfish. Но похоже, что реализация Blowfish также имеет как шифрование, так и дешифрование. значит, можно ли расшифровать зашифрованные хеш-значения?
- person user3767551; 11.07.2014
@ user3767551 — Это правда, что BCrypt основан на Blowfish, но хотя Blowfish — это алгоритм шифрования (двусторонний), BCrypt — настоящий алгоритм хеширования (односторонний).
- person martinstoeckli; 12.07.2014