Предполагаемые знания
Перемешивание, соление, PBKDF [1-2]
Проблема
Я храню пароли в своей базе данных, используя масштабированный алгоритм хеширования / посола, такой как PBKDF2. Я подумал: «Эй, если я хеширую свои пароли 20000 раз, это должно быть достаточно безопасно против атак грубой силы, верно?» и это правда. до следующего года, когда появятся лучшие компьютеры.
Возможное решение
Оставляя в стороне вопрос о длине ключа шифрования и длине соли (который также может быть включен в это решение), я подумал, что если каждые N дней я повторно хэширую все пароли в базе данных. Таким образом, они хэшируются 20 000 раз, затем неделю спустя, я хеширую их еще 500 раз, в результате чего их получается 20 500 раз. Сохраните количество раз, когда оно было где-то хешировано в базе данных. Идея состоит в том, чтобы увеличить количество хэшей по мере развития технологий.
Существующие аналогичные реализации
BCrypt вводит рабочий фактор для увеличения времени, необходимого для хеширования пароля:
PBKDF2 использует несколько итераций, чтобы сделать то же самое. Это используется Mac OS-X, Windows и Linux для шифрования на уровне файлов. Сети Wi-Fi также используют его реализации.
Кто-нибудь может увидеть проблему с этим? Это уже пробовали? Существует ли алгоритм, который принимает предварительно хешированный пароль и повторно хэширует его «N» раз?
Редактировать
Вопрос не в том, безопасно ли многократное хеширование (это было опробовано и проверено). Вопрос заключается в повторном хешировании для повышения безопасности без необходимости заставлять пользователей переустанавливать свои пароли
Решение: вежливость обсуждения с JVestry
Так что повторное хеширование всех паролей каждые 'N' дней - пустая трата времени, поскольку хакер может просто взломать его, используя старую копию базы данных. Однако , если объединить концепцию увеличения числа хэшей с течением времени с политикой обновления пароля, концепция будет разумной.
Осуществление
Срок действия всех паролей истекает каждые 30 дней. Когда они обновляются, их счетчик хешей увеличивается. Таким образом, сброс пароля вчера будет сложнее взломать, чем тот, который был установлен 20 дней назад. Хеш-счетчик может быть сохранен или получен из алгоритма с использованием даты последнего изменения.
Спасибо!
TTD