Хранение соли в коде вместо базы данных - PullRequest
7 голосов
/ 18 мая 2009

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

Однако, если я правильно понимаю назначение соли, это уменьшить вероятность того, что вы будете скомпрометированы атаками радужного стола. Итак, я понимаю, что, сохраняя его в базе данных, было бы оптимальным изменить его для каждого пользователя, но что, если соль не находится рядом с базой данных? Если я сохраню в коде одно солт-значение (которое на веб-сервере будет в скомпилированном dll), разве это не послужит той же цели, если злоумышленник каким-то образом получит доступ к базе данных? Мне кажется, это было бы более безопасно.

Ответы [ 5 ]

16 голосов
/ 18 мая 2009

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

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

15 голосов
/ 18 мая 2009

Цель соли - потребовать регенерацию радужной таблицы для каждого пароля. Если вы используете одну соль, хакеру / взломщику нужно только один раз регенерировать радужную таблицу, и у него есть все ваши пароли. Но если вы генерируете случайное число для каждого пользователя, он должен генерировать одно для каждого пользователя. Гораздо дороже со стороны хакеров. Вот почему вы можете хранить соль в виде обычного текста, не важно, знает ли ее хакер, если их больше одного.

Безопасность от неясности нехороша, Microsoft научила нас этому.

8 голосов
/ 18 мая 2009

... пока злоумышленник не получит доступ к DLL.

7 голосов
/ 19 мая 2009

В дополнение к другим ответам также стоит отметить, что злоумышленник может определить вашу соль точно так же, как он определит пароль: при наличии известного (своего) пароля он может провести атаку методом грубой силы на возможный соли.

1 голос
/ 18 мая 2009

Урок, который я извлек из солей: «Разделяй и властвуй» (безопасность)

...