Страница 1 из 1

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

Добавлено: 22 апр 2008, 12:27
sm
Хочу сделать такую штуку на одном сайте:

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

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

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

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

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

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

Добавлено: 22 апр 2008, 16:10
Victor Gr.
Ну конечно, sha-1. Можно и побольше sha.

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

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

P.S. Шыфраванне і хэшіраванне гэта зусім розныя рэчы! =)

Добавлено: 23 апр 2008, 23:13
sm
myst, Victor Gr., Serzh, спасибо!

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

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

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

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