Вопрос по криптографии ( md5)

proWoke

Новичок
Вопрос по криптографии ( md5)

Вот я не могу понять одну вещь. В книге Котерова (да и вообще в нете где что читал) написанно, что md5 невозможно подобрать, т.е. хэш код слова, который выглядит так: "4229d691b07b13341da53f17ab9f2416" мы не можем узнать что в неё скрыто. И что он очень надёжен написанно и т.д. Вроде всё понятно и правильо, и всё я понял, что и для чего. Ну вот ща сижу решаю задачки с сайта. И там задача "расшифровать md5 перебором". И люди пишут скрипты и они расшифровывают ( писали, заданию уже 4 года). И сам попробовал создавать слова через функцию md5 и пихать в скрипт и выводил слово моё. В общем я запутался что он вообще делает и что значит целая страница у Котерова про md5 (Там написанно, что было математически доказанна невозможность его расшифровки)? Из за этого недопонимания я не могу свой вариант скрипта написать и понять как чужие работают. Помогите, пожалуйста, разобраться.
 

akd

dive now, work later
Команда форума
для начала надо понять что такое подбор перебором. в гугл.
 

proWoke

Новичок
что то в гугле ничё не найду, один флуд. Что писать то?
 

proWoke

Новичок
Автор оригинала: Gas
как это не можем:
hell = 4229d691b07b13341da53f17ab9f2416 :)

по-этому "солить" нужно
Так у меня в этом и вопрос был. Что узнать то можно, но в книге вроде по другому написанно.
 

Вурдалак

Продвинутый новичок
«Расшифровать» невозможно по той причине, что MD5 — не алгоритм шифрования. Разным строкам может соответствовать один и тот же хеш. Другое дело, что на практике случайно получить один и тот же хеш для двух строк практически невозможно.

Кстати, ради интереса хотел бы посмотреть на такую коллизию, если человечество её нашло.
 

Gas

может по одной?
Ну книгу Котерова не читал, хотя думаю там должно быть упоминание про соль (salt).

Не вчитывался, но может в этой теме найдёшь какие-то ответы: http://phpclub.ru/talk/showthread.php?s=&threadid=77800&perpage=20&pagenumber=1
Ну и Радужные таблицы, уже кучи сайтов на которых по словарям есть хеши самых распространённых хеш-функций.
 

zerkms

TDD infected
Команда форума
Вурдалак
Вообще afaik существуют сложные гурские техники, когда для имеющегося БОЛЬШОГО объёма данных и его хэша возможно незначительно модифицировав этот объём получить такой же хэш.
 

Gas

может по одной?
Кстати, ради интереса хотел бы посмотреть на такую коллизию, если человечество её нашло.
ну, минута гугления и MD5: Коллизии. Примеры там правда не особо впечатляют, но по крайне мере коллизии известны.
 

zerkms

TDD infected
Команда форума
о, даже не БОЛЬШОЙ, а вполне себе небольшой :)
 

Вурдалак

Продвинутый новичок
PHP:
<?php

$buff1 = "d131dd02c5e6eec4693d9a0698aff95c"
       . "2fcab58712467eab4004583eb8fb7f89"
       . "55ad340609f4b30283e488832571415a"
       . "085125e8f7cdc99fd91dbdf280373c5b"
       . "d8823e3156348f5bae6dacd436c919c6"
       . "dd53e2b487da03fd02396306d248cda0"
       . "e99f33420f577ee8ce54b67080a80d1e"
       . "c69821bcb6a8839396f9652b6ff72a70";

$buff1 = pack('H*', $buff1);

$buff2 = "d131dd02c5e6eec4693d9a0698aff95c"
       . "2fcab50712467eab4004583eb8fb7f89"
       . "55ad340609f4b30283e4888325f1415a"
       . "085125e8f7cdc99fd91dbd7280373c5b"
       . "d8823e3156348f5bae6dacd436c919c6"
       . "dd53e23487da03fd02396306d248cda0"
       . "e99f33420f577ee8ce54b67080280d1e"
       . "c69821bcb6a8839396f965ab6ff72a70";

$buff2 = pack('H*', $buff2);

if( ($buff1 !== $buff2) AND ( md5($buff1) === md5($buff2) ) ) {
    echo 'holy shit';
}
И правда :)
 

proWoke

Новичок
Почитал я тот топик и понял мало что). Народ чёто говорит что md5 не надёжен. В книге написанно про математические доказательства о невозможности взлома. Лол. Ладно буду ждать криптографии в универе, если она будет, либо если реально петух клюнет по этой теме, то буду курить книгу какую нить умную.
 

zerkms

TDD infected
Команда форума
proWoke
соль - "панацея". засоли данные и можно спать спокойно.
 

Вурдалак

Продвинутый новичок
proWoke, есть частные случаи взлома алгоритма, но на практике они почти не применимы. Используй соль и спи спокойно.

-~{}~ 06.08.10 19:12:

zerkms, ты читал мои мысли. :)
 

Gas

может по одной?
Причём для каждого пользователя можно свою соль взять, например, логин или email пользователя + const строка а-ля "#1-X~" и тем более спи спокойно. Видишь, все уже спят :)
 

proWoke

Новичок
соль это кодированный логин и к нему припысывается ещё какие нить символы дополнительные и это всё базу заносится? Это солью называете вы?
 

zerkms

TDD infected
Команда форума
я обычно просто к каждой записи в таблице с паролями добавляю ещё поле salt. в него генерю md5(uniqid('', true)); и добавляю к каждому из паролей.
 

Gas

может по одной?
http://en.wikipedia.org/wiki/Salt_(cryptography)

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

zerkms
мне не нравится что для залогинивания, нужен полный скан таблицы с юзерами, но это вкусовщина с моей стороны.
 

Духовность™

Продвинутый новичок
я обычно просто к каждой записи в таблице с паролями добавляю ещё поле salt. в него генерю md5(uniqid('', true)); и добавляю к каждому из паролей.
а зачем нужно соль хранить в базе? Какой в этом смысл? Безопасность же это не повышает, скорее наоборот.
 

Gas

может по одной?
triumvirat
да ладно, параноя должна быть в меру, не думаю что случайная 128 битная соль сильно вредит безопасности.
 
Сверху