Используя хэш того, что вы хешируете как соль? - PullRequest
1 голос
/ 13 июля 2009

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

Пример:

String hash1 = MD5(password);
String endHash = MD5(hash1 + password);

затем сохраните endHash в вашей базе данных. Будет ли этот эффективный agaisnt Rainbow Table атаковать, если моя база данных будет компрометирована? Или я что-то упускаю, что легко сломать?

Ответы [ 6 ]

7 голосов
/ 13 июля 2009

Это ключевое усиление (http://en.wikipedia.org/wiki/Key_strengthening), хорошая техника, которая, тем не менее, не заменяет настоящую соль. Она не защитит вас от радужного стола, написанного с помощью этой функции двойного хэша.

5 голосов
/ 13 июля 2009

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

1 голос
/ 13 июля 2009

Вместо двухкратного хеширования вы должны использовать имя пользователя в качестве соли для функции:

String hash = MD5(username + password)

Вам также следует рассмотреть возможность использования другой функции, поскольку md5 считается неработающей MD5

1 голос
/ 13 июля 2009

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

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

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

0 голосов
/ 13 июля 2009

Кроме того, вам следует избегать MD5 в пользу сильного в настоящее время алгоритма хеширования, такого как SHA1, SHA-256, SHA-512.

0 голосов
/ 13 июля 2009

Не имеет значения: сохраненные данные все еще основаны исключительно на пароле, поэтому дополнительная защита отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...