Каков наилучший способ безопасного хранения пароля (хэши)

Многие сайты в наши дни взломаны и хеши паролей украдены. Даже большие сайты, такие как LinkedIn, не хранили свои пароли в безопасности (только md5).

Теперь мой вопрос, что такое достаточно безопасный способ хеширования пароля?

В настоящее время я использую это:

sha512(sha512(sha512(password) + salt));

Это достаточно безопасно?

5 ответов

hash_hmac('sha512', $data , $key);

было бы замечательно. Лучше использовать как минимум 60 символов для $key в качестве соли.

Трудно сказать, какой из них лучше, но безопасная ставка - алгоритм BCrypt.

BCrypt - не лучший алгоритм; однако этого достаточно для большинства случаев использования, и его так же легко реализовать, если не проще, как основной метод хеширования с солью. Что отличает BCrypt, так это то, что вместо более типичного алгоритма SHA-* он использует алгоритм Blowfish, который имеет преимущество в том, что он работает намного медленнее параллельно. Поскольку пользователи входят в систему по одному, это значительно усложняет злоумышленникам, которые будут тестировать многочисленные пароли, возможность обойти алгоритм.

Больше здесь: http://davismj.me/blog/bcrypt/

Использование соли, которую вы используете сейчас, действительно полезно для повышения безопасности, я настоятельно рекомендую использовать случайную соль для каждого пользователя. ИМХО, чем больше времени вы будете хэшировать пароль пользователя (вы можете повысить безопасность, добавляя соль перед хэшированием каждый раз), тем больше он будет защищен. Я использую цикл for с 256 повторениями для хэширования пароля, который можно считать защищенным от перебора в течение следующих нескольких лет.

немного не по теме, но я рекомендую также позаботиться о перехвате сеанса (например, восстановление ssids и т. д.)

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

Я бы порекомендовал использовать bcrypt вместо sha512/salt-подхода, грубую силу гораздо сложнее: http://krebsonsecurity.com/2012/06/how-companies-can-beef-up-password-security/

Да, это более чем достаточно безопасно. Лично я думаю, что последний вызов sha512 бесполезен, но я знаю, что мнения расходятся.

Конечно, это безопасно, если пароли невозможно угадать, используя тактику подбора. Никакое количество хэширования не защитит вас, если пользователи выберут пароль из 4 букв или имя своей жены.

Другие вопросы по тегам