Существует ли стандартный способ хранения паролей в БД? - PullRequest
0 голосов
/ 06 февраля 2012

Так что пароли не должны храниться в виде открытого текста, но многие все равно делают.Для остальных существует ли стандартный способ хранения паролей?Я имею в виду хеш SHA1 или MD5, и если да, какой будет размер соли?Есть ли лучшее место, чтобы спросить это?

Я пытаюсь выбрать мозги системных администраторов и консультантов, работающих над службами каталогов.Я пытаюсь увидеть, есть ли образец или нет.

РЕДАКТИРОВАТЬ: Я хотел бы уточнить, что я сам не пытаюсь научиться лучше хранить пароли, а больше пытаюсь выяснить, как много разных способов они хранятся и существует ли какой-либо стандарт.*

Ответы [ 3 ]

1 голос
/ 06 февраля 2012

MD5 некоторое время был сломан, и у SHA-1 также есть проблемы.

Если вы хотите сохранить хеш, который будет долгое время оставаться безопасным, SHA-256 или SHA-512 (часть семейства хэшей SHA-2, разработанных как безопасные замены для SHA-1) являются хороший выбор и где-то между 128 и 256 битами соли являются стандартными.

Однако использование простых хешей - не лучший способ сделать это в наше время. Адаптивные хэши специально разработаны для этого типа хранилища, поскольку время, необходимое для вычисления результата, может быть замедлено с помощью дополнительных вычислений. Это очень важная черта, чтобы предотвратить грубые атаки на ваши сохраненные пароли. Сильная и стандартная реализация адаптивного хэша - bcrypt, основанная на модификациях алгоритма шифрования Blowfish, чтобы сделать его пригодным для этой цели (, что хорошо объясняется здесь ).

0 голосов
/ 07 февраля 2012

Пароли должны быть хэшированы, а хэши должны храниться в базе данных.Однако SHA * и MD5 - слишком быстрые алгоритмы хеширования, чтобы использовать их для хеширования паролей.Для хэширования паролей в идеале вам нужно что-то гораздо более медленное, которое не поддается атакам грубой силы / радужных таблиц.

Вы можете быть уверены, что хешируйте пароль 1000 раз, прежде чем сохранять хэш, чтобы сделать его временными требует больших вычислительных ресурсов, но зачем это делать, когда у вас есть алгоритмы, такие как bcrypt, которые выполняют эту работу за вас.

Вы должны использовать bcrypt для хеширования своего пароля.Подробнее об этом читайте в http://codahale.com/how-to-safely-store-a-password/

В bcrypt, поскольку соль добавляется в хеш - вам даже не нужны два столбца 'password_hash' и 'salt' в таблице.Просто 'password_hash'.Чем меньше беспорядка, тем лучше.

0 голосов
/ 06 февраля 2012

Вы можете увидеть этот вопрос для ответа о том, какой длины должна быть соль (между 128-256 битами, кажется, консенсус).

Что касается того, какой алгоритм использовать, вы обязательно должны использовать SHA1.MD5 давно считался сломанным, хотя он все еще широко используется (см. wikipedia MD5 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...