md5 в частности и хэширование вообще

ilkz

Новичок
По-моему, все забывают о коллизиях. Именно они могут дать одну и ту же строку как на md5() так на и, например, md5(md5(md5())).

Кстати, никто случаем не встречал какое количество коллизий получится, если посчитать все 32! комбинаций?
 

Гравицапа

elbirret elcno
Это почему еще?
Пример,
sex = 3c3662bcb661d6de679c636744c66b62

Используя коллизии в MD5, найди ещё одну строку, хэш которой будет таким же.
P.S. Или хотя бы примерно опиши как ты собрался это делать и сколько жизней это у тебя займёт
 

hermit_refined

Отшельник
все забывают о коллизиях
зато вам, видимо, они по ночам снятся :)
Однако если применять md5(md5(пароль)) то никакие бызы не помогут
кроме базы пароль <--> md5(md5(пароль)), разумеется.

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

gonza

Новичок
Автор оригинала: phprus
ГравицапаА после того как мы расшифруем первый md5 нам примедстя расшифровывать второй md5 а это уже делает задачу практически невыполнимой.
Кто мешает при подборе по словарю вычислять одновременно md5(), md5(md5()) ...

По поводу базы...
Все шестизнаки:

2^48 вариантов
На один хеш требуется 16байт(бинарник, !гекс), для хранения базы(только хеши, без пароля, грубо) 2^52байт, то есть 2048 терабайт.

750Gb стоит 400 уе, то есть на базу уйдет больше 800k$
Есть организации которые могут себе это позволить... 7+знаков - вряд ли..
 

Popoff

popoff.donetsk.ua
$pwd='sex';
md5('моя-супер-пупер-секретная-строка-одинаковая-для-всех-паролей-никогда-не-меняется-специально-для-защиты-от-подобного-рода (а здесь пробелы вместо минусов для пущей секретности) баз'.$pwd)
 

Tor

Новичок
Кстати, никто случаем не встречал какое количество коллизий получится, если посчитать все 32! комбинаций?
вот эта фраза, молодой человек, показывает, что Вы понятия не имеете, и чем говорите

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

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

Popoff

popoff.donetsk.ua
хотя, для защиты от таких баз и такой способ подойдёт:
$pwd='sex';
md5($pwd.$pwd.$pwd);
 

gonza

Новичок
Автор оригинала: Popoff
хотя, для защиты от таких баз и такой способ подойдёт:
$pwd='sex';
md5($pwd.$pwd.$pwd);
Согласен. И спредыдущим твоим постом тоже. Но мое мнение - один раз объснить пользователям каким должен быть пароль и снять с себя ответственность. Потому как я не обязан придумывать способы усиления паролей типа вася или пупсик. Это проблемы владельцев.
 

Alexandre

PHPПенсионер
phprusни кто не собирается создавать БД в 10^36 байт
создается БД в 100 тыс слов русско-английского словаря + имен любимых собачек и кошек... как правило этого бывает достаточно.

если говорить о паролях, то можно заставить пользователя сделать как указано ниже, тогда никакие БД хешпаролей не страшны:
Выбор хорошего пароля

Не используйте
Любую часть вашего имени — имя, фамилию или отчество;
Ваши инициалы;
Номер карточки социального страхования (Для России пока неактуально — прим. перев.);
Имена друзей, родственников или домашних животных;
Дни рождения;
Телефонные номера или адреса;
Любую другую информацию, которая может быть публично доступна;
Географические названия;
Слова из английского словаря;
Слова из иностранных словарей;
Ваше имя пользователя или учетная запись;
Сетевое имя компьютера;
Повторяющаяся последовательность одного и того же символа;
Последовательности символов клавиатуры такие, как «12345» или «qwerty»;
Любая незначительно измененная последовательность из указанных выше, например написанная задом наперед или с добавлением символов в конец вашего имени;
Пароли, написанные на русском языке (прим. перев.).

Можно использовать
Специальные символы (*!$+) вместе с буквами и цифрами;
Перемешанные символы в верхнем и нижнем регистре — расположение заглавных символов в случайных местах делает пароль эффективным;
Знаки препинания перемешанные с буквами и цифрами;
Бессмысленные слова, которые легко произносятся, но отсутствуют в словаре;
Шесть или более символов (Я бы рекомендовал как минимум девять символов — прим. перев.).
 

Nogrogomed

Новичок
Если хочется заморочиться - делайте
md5(strrev(md5("sex"))), и мучайтесь...
Вместо strrev можно использовать любую другую функцию по работе со строками. Это уже не так очевидно как md5(md5())

Смысла в этом все равно не вижу, но как один из вариантов - пойдет.
 

Bermuda

Новичок
Автор оригинала: Гравицапа
Используя коллизии в MD5, найди ещё одну строку, хэш которой будет таким же.
P.S. Или хотя бы примерно опиши как ты собрался это делать и сколько жизней это у тебя займёт
Как md5, так и sha1 уже "поломали", т. е. нашли _быстрый_ алгоритм для поиска коллизий.
Первый в 2004-м году
http://www.nestor.minsk.by/sr/2005/04/sr50416.html
Второй в 2005-м
http://www.schneier.com/blog/archives/2005/02/sha1_broken.html
В сети даже есть исходники на Си.
 

Breeze

goshogun
Команда форума
Партнер клуба
остается теперь ждать вопроса "потянет ли MySQL объем таблицы в 10^36 байт или Oracle лучше"..
 

Vladson

Сильнобухер
Автор оригинала: Breeze
остается теперь ждать вопроса "потянет ли MySQL объем таблицы в 10^36 байт или Oracle лучше"..
Не меня больше интересует на какие скидки можно расчитывать при cборке RAID на 2048 терабайт. :)
 

phprus

Moderator
Команда форума
Bermuda
В сети даже есть исходники на Си.
Можно увидеть ссылки на эти исходники? Так как я ничего кроме громких заявлений не видел. Нет ни математических выкладок на эти темы ни работающих генераторов коллизий.

Breeze
Такой объем в принципе невозможно сохранить. Земля состоит из меньшего числа молекул.

Vladson
Я думаю, что у гугла суммарный объем дисков отличается от 2048 терабайт не более чем на порядок.
 

Tor

Новичок
Я думаю, что у гугла суммарный объем дисков отличается от 2048 терабайт не более чем на порядок
совсем недавно видел цифру - кеш занимает 800 Тб
а вот такое решение способно держать до 240Тб
EMC CLARiiON CX3 Model 80
это первое, что попало на глаза
желающие могут самостоятельно узнать стоимость этого или подобных решений
в любом случае масив на 2 петабайта - уже давно не фантастика
 

gonza

Новичок
Сверху