Безопасное хранение пароля сайта - PullRequest
3 голосов
/ 29 июля 2011

Я видел несколько постов об использовании солей и хэшей для создания безопасных версий паролей, которые можно хранить в базе данных.

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

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

Я бы использовал открытый ключ для шифрования пароля и затем сохранял зашифрованную версию в базе данных. Когда кто-то пытается войти, я просто шифрую пароль с помощью открытого ключа и проверяю, совпадает ли он с сохраненным?

Есть ли в этой идее какой-то ужасный недостаток? Могут ли соли и хеши быть более безопасными?

Ответы [ 2 ]

1 голос
/ 29 июля 2011

Проблема этого подхода заключается в том, что в отличие от хеш-функции выходные данные функции шифрования, как правило, являются недетерминированными: вы можете дважды зашифровать одну и ту же полезную нагрузку одним и тем же открытым ключом, и алгоритм шифрования будет каждый раз создавать совершенно разные шифротексты. Например, RSA-шифрование включает в себя случайное заполнение ввода для защиты от определенных классов атак.

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

0 голосов
/ 29 июля 2011

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

В конце концов, если хакер получил вашу таблицу, онивероятно, получил ваш код тоже ...

...