Как долго я должен делать мой ключ для PHP-hmac, когда используется с SHA512? - PullRequest
2 голосов
/ 03 августа 2011

Я использую этот код для хэширования паролей:

hash_hmac('sha512', $password . $salt, $hmac_key);

Достаточно ли 4096 бит для ключа?

Спасибо!

1 Ответ

1 голос
/ 10 августа 2011

Для хеширования пароля? Конечно. Достаточно долго будет достаточно соли.

Вы должны понять, какова цель использования вами хеша здесь. Вы хэшируете пароли, поэтому, если кто-то завладеет этими хешами, они не смогут вывести из них оригинальные пароли. Мы используем соли, так что атаки методом «грубой силы» и «радужной таблицы» менее эффективны, и мы делаем соли уникальными для каждого пароля, чтобы два пользователя, использующие одинаковые пароли, имели разные хэши. HMAC здесь не добавляет ничего к безопасности, кроме как своего рода соль.

HMAC имеет значение, когда вы используете функцию хеширования в качестве цифровой подписи сообщения / файла (например, php.net использует ее на странице загрузки ). Вы используете ключ HMAC, так что только люди, которые знают этот ключ, могут проверить подлинность хешированного контента (в отличие от загрузок php.net, где каждый может проверить md5 загруженного файла) и затруднить подделку сообщения, которое выдает такое хеш (вам нужно знать ключ, чтобы узнать, какой хеш нужно выбрать)

...