Хотите преобразовать шифрование пароля веб-сайта из SHA1 в SHA256
просто ищу некоторые рекомендации. У меня есть сайт с примерно 2500 пользователей - небольшой, но растущий. Я построил его с использованием шифрования SHA1 на паролях. С тех пор я прочитал, что SHA1 небезопасен и хотел бы изменить, чтобы сказать SHA256 с солью.
есть ли у кого-нибудь советы о том, как сделать такой переход? Было бы здорово, если бы я мог расшифровать пароли и просто повторно хэшировать их, но он не кажется способным.
thx Адам!--1-->
4 ответов
обычный способ сделать это таков:
- сделайте столбец хэш-пароля больше, чтобы разместить хэш sha256, и добавьте столбец "соль"
- сначала установите поле соли в значение NULL и настройте код проверки пароля так, чтобы нулевая соль означала sha1, а ненулевая-sha256
- после того, как sha1-use успешно вошел в систему, повторно хэшировать пароль к sha256 с солью и обновить базу данных.
с течением времени, пользователи будут мигрируйте в sha256 сами по себе; единственная проблема-пользователи, которые входят только очень спорадически или вообще не входят. Для них вы можете отправить напоминание по электронной почте или даже пригрозить закрыть свою учетную запись, если они не войдут в систему до дня X (не указывайте фактическую причину...)
чтобы уточнить, SHA-это алгоритм хеширования, который (как правило) является улицей с односторонним движением. Вы не можете расшифровать хэши, что является своего рода силой их использования для аутентификации паролей. Вы на правильном пути с переходом к соленому гашишу, и вот как я бы это сделал.
единственный способ получить пароли-это позволить пользователю ввести его самостоятельно. Когда пользователи заходят на ваш сайт и входят в систему, обновляйте пароли один за другим. В вашем методе аутентификации я бы выполнил хэш, который вы делаете сейчас, и сравните его с тем, что находится в существующем поле (ничего нового здесь). Предполагая, что он соответствует, продолжайте солить / повторно хэшировать с помощью SHA256 и обновите поле пароля в базе данных. Если вы хотите, сохраните немного в таблице пользователей, отслеживая, какие пользователи были обновлены.
Я делаю много предположений, но именно так я решил танец хэш-алгоритма в прошлом. Удачи!
У меня есть еще одно предложение немедленно перенести хэш пароля с SHA1 на SHA256, не дожидаясь, пока пользователь снова посетит сайт, чтобы перефразировать пароль. Изменение будет однократной миграцией хэша пароля и изменением функции проверки входа в систему.
предположим, что ваш хэш пароля генерируется с помощью функции: password + salt [Sha1]-> Hash-sha1
чтобы перейти на Sha256, вы можете преобразовать хэш пароля, используя следующее алгоритм:
Hash-sha1 + salt [Sha256]-> Hash-sha256 (соль используется для увеличения сложности ввода.)
в зависимости от приемлемого значения вашей функции sha256 вы можете рассмотреть возможность кодирования хэша-sha1 в base64 для печати ascii.
для вашей функции проверки входа в систему пароль должен быть хэширован с помощью следующего алгоритма:
пароль + соль [sha1] - > хэш-sha1 + соль [sha 256]- > хэш-sha256
в недостаток хэшируется дважды (используйте некоторое время процессора), но упрощает миграцию и лучшую безопасность.
переход на SHA256 вряд ли сделает ваш сайт более безопасным.
SHA1 и SH512 являются дайджест сообщения, они никогда предназначен для функций хэширования паролей (или вывода ключей). (Хотя дайджест сообщений может быть использован в качестве строительного блока для KDF, например, в PBKDF2 с HMAC-SHA1.)
функция хэширования паролей должна защищать от атак словаря и радужных таблиц.
В настоящее время единственный стандарт (как в санкционировано NIST) функция хэширования паролей или вывода ключей-PBKDF2. Лучший выбор, если использование стандарта не требуется, - это bcrypt и более новый scrypt. Википедия имеет страницы для всех трех функций:
- https://en.wikipedia.org/wiki/PBKDF2
- https://en.wikipedia.org/wiki/Bcrypt
- https://en.wikipedia.org/wiki/Scrypt
страница в https://crackstation.net/hashing-security.htm содержит подробное обсуждение безопасности паролей.
Это, как говорится, tdhammers предлагает хорошие советы о том, как справиться с миграцией.