Что должно я использовать для полей пароля в таблице; MD5 или SHA1?

Я ни в коем случае не специалист по безопасности или даже новичок. Я - новичок в безопасности в лучшем случае

Кто-то предложил, чтобы я использовал SHA1 вместо MD5 - почему я выбрал бы один по другому? Еще одно безопасное?

5
задан Sergio Tapia 17 June 2010 в 16:54
поделиться

7 ответов

Я бы использовал как минимум SHA2 (256), однако:

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

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

Я верю, что в .Net этого можно достичь с помощью PBKDF - но я потерял ссылку на него (кто-то предоставил мне ответ на вопрос, который я задал некоторое время назад). РЕДАКТИРОВАТЬ - Найдена ссылка для .Net : Класс Rfc2898DeriveBytes .

На MD5

Хотя было показано, что MD5 действительно «сломан», как упоминалось в других ответах, основная причина, по которой я бы не стал его использовать - и почему я прочитал, что использовать его нецелесообразно - потому что на самом деле это очень быстро, что увеличивает вероятность появления трещины в течение определенного периода времени.

10
ответ дан 18 December 2019 в 13:11
поделиться

Что бы вы ни использовали, используйте соленые хэши.

Удачи.

1
ответ дан 18 December 2019 в 13:11
поделиться

MD5 «сломан», и для более высоких уровней безопасности теперь фактически требуется SHA-2. Это довольно интересное чтение здесь http://en.wikipedia.org/wiki/MD5 .

Редактировать: с опозданием на 9 секунд :)

0
ответ дан 18 December 2019 в 13:11
поделиться

SHA2 .У Scheier есть несколько новых альтернатив

-1
ответ дан 18 December 2019 в 13:11
поделиться

MD5 и SHA1 считаются небезопасными, причем SHA-1 лучше. Однако, есть 2 вещи, которые вы должны учитывать:

  1. Под "небезопасным" они подразумевают, что математически проще, чем перебором, определить предварительно захешированное значение. Иногда это означает, что они могут сократить количество вычислений с миллиарда до 900 миллионов, в других случаях это значительно меньше. Это ничуть не менее небезопасно, чем мой пункт №2.

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

Например, многие люди используют в качестве паролей "password" и "john". В MD5 эти два пароля всегда генерируются в: password: 5f4dcc3b5aa765d61d8327deb882cf99 john : 527bd5b5d689e2c32ae974c6229ff785

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

Однако если к каждому предварительно хэшированному значению добавить какую-нибудь тарабарщину, например, "password12345" и "johnxyz", то вы получите два совершенно разных хэша, которые не будут совпадать с приведенными выше. Это называется солевым значением, и оно не позволяет радужным таблицам быть столь же эффективными.

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

Колонки БД: Имя пользователя | Пароль | Соль

Это не самая безопасная система, которую когда-либо придумали, но она, скорее всего, подойдет для вашей.

3
ответ дан 18 December 2019 в 13:11
поделиться

хранение дешево, а процессоры быстры. используйте соль размером 1 килобайт с SHA-512.

1
ответ дан 18 December 2019 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: