Это моя текущая процедура хеширования паролей в проектах PHP / SQL ...
- Возьмите 512 бит соли для каждого пользователя из / dev / urandom, хранящуюся в записи БД пользователя в дополнение к окончательному хешу.
- Возьмите 512 бит «перца» из / dev / urandom, который хранится в файловой системе. Это константа для каждого приложения и одинакова для каждого пользователя.
- Тогда
hash('sha512', $password.$salt.$pepper, TRUE)
Хеш и соль хранятся в БД в двоичном формате, в основном по привычке. Я не думаю, что это имеет значение с точки зрения безопасности. Во всяком случае, это немного менее удобно для резервного копирования SQL и делает код PHP кажущимся несколько более сложным.
Считается, что hash()
с SHA-256 или SHA-512 в наши дни заменен bcrypt?
Я считаю, что SHA-2 (256/512) по-прежнему считается криптографически безопасным, и я, вероятно, переборщил с битами энтропии. Гораздо более вероятно, что это будет недостаток в моем коде, который приведет к проблемам, чем злоумышленник, перепроектирующий хэш SHA-2 из дампа БД.
Но следует ли мне обновить свою методологию, чтобы вместо этого использовать crypt()
с CRYPT_BLOWFISH (я считаю, что это называется bcrypt, а blowfish технически является шифром, а не алгоритмом хеширования)?
Даже как лучшая практика в будущем?
Меня не особо беспокоят вычислительные затраты алгоритмов (в разумных пределах). Это может быть фактором только при создании учетных записей, изменении паролей или при входе в систему, когда вы затем сравниваете хэш. Эти действия составляют небольшой процент просмотров страниц. Я предполагаю, что чем медленнее, тем лучше, если это заставит сервер работать тяжелее для генерации, тогда это замедлит работу злоумышленника до грубой силы.
Ура, B
I guess in a way the slower the better, if it makes a server work harder to generate then it will make an attacker's work slower to brute force.
Это абсолютно верно, и важной особенностью рекомендуемых стратегий хеширования является возможность настраивать (увеличивать) стоимость хеширования (без аннулирования хранимых хешей) по мере того, как усовершенствования оборудования снижают относительную стоимость хеширования.crypt
с Blowfish предлагает это. - person grossvogel   schedule 18.09.2012