Что выбрать для шифрования - sha1 или md5?

Все о программировании под *nix
Аватара пользователя
sm
Неотъемлемая часть форума
Сообщения: 431
Зарегистрирован: 12 мар 2004, 16:03
Контактная информация:

Что выбрать для шифрования - sha1 или md5?

Сообщение sm »

Хочу сделать такую штуку на одном сайте:

Регистрация: юзер вводит имя-пароль, на сайте сохраняем имя и соответствующий ему зашифрованный пароль.

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

Как я понял после гугления, если злоумышленник получил доступ к базе с хэшами, у него есть возможность
1 подобрать пароль долго и тупо перебирая
2 уже быстрее поиском по базам хэшей
3 войти под чужим аккаунтом введя другой пароль найдя коллизию

Вот думаю, какой хэш функцией шифровать пароли - sha1 или md5, чтобы у злоумышленника было меньше шансов на успех по пунктам 1 и 3? Противоядие от пункта 2 как я понял - только хитрый пароль.

Вроде как sha1 - мой выбор, но хотелось бы услышать комментарии если я где-то ошибся.

Аватара пользователя
myst
Маньяк
Сообщения: 190
Зарегистрирован: 04 окт 2005, 15:46
Откуда: не возвращаются

Сообщение myst »

Да без разницы, на самом деле. Но лучше SHA1. MD5 уже несколько раз почти скомпрментировали, SHA1, вроде как, нет. Может лучше SHA-512 для надёги? ;)
Иными вечерами я пью, чтобы кого-нибудь не пристрелить. Это акт благотворительности. Не за что.

Аватара пользователя
Victor Gr.
Неотъемлемая часть форума
Сообщения: 891
Зарегистрирован: 13 авг 2004, 15:39
Откуда: Минск
Контактная информация:

Сообщение Victor Gr. »

Ну конечно, sha-1. Можно и побольше sha.

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

Аватара пользователя
Serzh
Увлекающийся
Сообщения: 111
Зарегистрирован: 04 апр 2004, 00:57
Откуда: Менск
Контактная информация:

Сообщение Serzh »

myst писал(а):MD5 уже несколько раз почти скомпрментировали, SHA1, вроде как, нет.
У данным выпадку патрэбна ўжываць не "амаль", а даўно. Для MD5 знойдзены алгарытм пошука каалізій. Правільны адказ - SHA1.
sm писал(а):Противоядие от пункта 2 как я понял - только хитрый пароль.
Для супрацьстаяння гэтаму існуе "соль". Сэнс такі:
hash = SHA1 ( соль + пароль )
Соль ствараецца для кожнага карыстальніка выпадкова і разам з хэшам захоўваецца ў базе. У выніку нават карыстальнікі з аднолькавымі паролямі будуць мець розныя выніковыя хэшы.
Увага: пры карыстанні слабой хэш-функцыяй (функцыяй, дзе знойдзены алгарытм пошука каалізій, напрыклад MD5) выкарыстанне солі губляе ўсялякі сэнс.

P.S. Шыфраванне і хэшіраванне гэта зусім розныя рэчы! =)
Изображение
OpenPGP: 0x80C0D304

Аватара пользователя
sm
Неотъемлемая часть форума
Сообщения: 431
Зарегистрирован: 12 мар 2004, 16:03
Контактная информация:

Сообщение sm »

myst, Victor Gr., Serzh, спасибо!

slyfox
Заглянувший
Сообщения: 2
Зарегистрирован: 09 апр 2008, 21:33

Сообщение slyfox »

Serzh писал(а):
myst писал(а):MD5 уже несколько раз почти скомпрментировали, SHA1, вроде как, нет.
У данным выпадку патрэбна ўжываць не "амаль", а даўно. Для MD5 знойдзены алгарытм пошука каалізій. Правільны адказ - SHA1.
sm писал(а):Противоядие от пункта 2 как я понял - только хитрый пароль.
Для супрацьстаяння гэтаму існуе "соль". Сэнс такі:
hash = SHA1 ( соль + пароль )
Соль ствараецца для кожнага карыстальніка выпадкова і разам з хэшам захоўваецца ў базе. У выніку нават карыстальнікі з аднолькавымі паролямі будуць мець розныя выніковыя хэшы.
Увага: пры карыстанні слабой хэш-функцыяй (функцыяй, дзе знойдзены алгарытм пошука каалізій, напрыклад MD5) выкарыстанне солі губляе ўсялякі сэнс.

P.S. Шыфраванне і хэшіраванне гэта зусім розныя рэчы! =)
Строго говря построить сообщение, удовлетворяющее конкретному хэшу (из базы) не то же самое, что сгенерить два сообщения с одинаковым хэшем (для чего есть навалом прог). Вроде бы, это называется нестрогой и строгой стойкостью хэш функции.

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

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

Ответить