#php #hash #bcrypt
#php #хэш #bcrypt
Вопрос:
Поскольку формат хэшированной строки ($ 2y $ 10 $ salt ….) Сам по себе дает хакеру (т.Е. Тому, кто взломал БД) подсказки о том, что шифрование выполняется с использованием алгоритма Bcrypt, и поэтому он может легко взломать, используя password_verify() в php, передавая параметры в качестве своего предположенияпароли.
Комментарии:
1. Я бы не сказал «легко»: грубое принудительное использование Bcrypt займет очень, очень много времени.
2. Да, это нормально. Атаки методом перебора на bcrypt не очень эффективный метод, особенно когда вы увеличиваете стоимость.
Ответ №1:
Нет никаких недостатков в хранении этих хэшей BCrypt непосредственно в базе данных, ни один из параметров не должен быть секретным. Кроме того, они позволяют переключиться на лучший алгоритм (или увеличить коэффициент затрат), не становясь несовместимыми со старыми хэшами.
Если эти параметры будут каким-то образом скрыты, злоумышленнику придется их угадать. Но возможных значений не так много, фактор стоимости, например, имеет смысл только между 9-13. Если вы действительно хотите добавить такой секрет на стороне сервера, есть гораздо лучшие способы сделать это. Вы можете зашифровать (двусторонне) уже хэшированные значения с помощью надежного ключа, тогда злоумышленник должен «угадать» этот ключ, что невозможно.
Комментарии:
1. Где-то в Интернете я видел, что bcrypt основан на шифре Blowfish. Но, похоже, реализация Blowfish также использует как шифрование, так и дешифрование. значит, возможно ли расшифровать зашифрованные хэш-значения?
2. @user3767551 — Это правда, что BCrypt основан на Blowfish, но в то время как Blowfish — это алгоритм шифрования (двухсторонний), BCrypt — это настоящий алгоритм хэширования (односторонний).