используя имена учетных записей в качестве соли - PullRequest
3 голосов
/ 07 января 2010

Итак, я делаю сайт для игры. Ничего, что станет популярным: P

Прямо сейчас я думаю о безопасности пароля, я собираюсь использовать соление, но вместо добавления нового столбца в таблицу учетных записей я думал об использовании имени учетной записи в качестве соли, поскольку оно не может быть изменено и является «уникальным». Я имею в виду, что 2 пользователя не могут иметь одинаковое имя учетной записи.

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

Допустим, имя учетной записи - банан, а пароль - привет (хешируется с помощью sha1), что было бы довольно легко изменить, верно?

Ответы [ 6 ]

3 голосов
/ 07 января 2010

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

1 голос
/ 07 января 2010

Хакер может найти дайджест ша в радужной таблице и обнаружить, что он совпадает с вводом 'bananahello' (учитывая, что 'bananahello' уже есть в транспортных радужных таблицах) Он может видеть, что имя пользователя - «банан», поэтому пароль - «привет».

Я бы хэшировал что-то похожее на HTTP Digest HA1 hash: sha1 (имя пользователя. Realm. Пароль). Теперь радужный стол, настроенный для вашего мира («example.com»), довольно сложно найти. Побочным преимуществом является то, что вы можете на самом деле внедрить дайджест-аутентификацию на своем сайте, что намного лучше, чем Basic и формы.

0 голосов
/ 07 января 2010

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

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

0 голосов
/ 07 января 2010

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

0 голосов
/ 07 января 2010

Было бы предпочтительнее не использовать соль, но она не была бы такой же безопасной, как случайная соль.

0 голосов
/ 07 января 2010

Нет риска. Имена пользователей в любом случае общедоступны. И хеш никогда не может быть полностью изменен - ​​в этом весь смысл хеша.

Что касается атаки по словарю, вы защищаетесь от нее, имея политику сложности пароля.

Редактировать: да, чтобы предотвратить атаку радуги, просто добавьте солью длинную произвольную строку. SHA1 ("whooooohooomysiteisthebest_bananahello") вряд ли будет на радужном столе.

...