МД 5 является самым распространенным алгоритмом хэширования и поэтому многие ищут коллизии или просто пытаются провести крипто-анализ, но ведь в алгоритме есть 4 константы которые легко поменять на свои собственные, написав собственную фукцию хэширования МД5 , но уже с этими данными. И поэтому даже если взломщик узнает хэш и пароль к нему (но где стандартные константы), он не сможет этим воспользоваться. Имеет ли право на жизнь эта идея или нет ?
если ты математически докажешь, что при изменении начальных констант стойкость хеша не уменьшиться - вперед
Black_sun ну поменяешь, и что? ты думаешь это усложнит поиск коллизий? нет, просто в программах-генераторах коллизий тоже нужно будет эти константы изменить. а дифференциалы и прочая муть от значения этих констант не зависят.
Стойкось не измениться если эти числа не поменяют свою разрядность. но ведь если "пользователь" не будет знать этих канстант, то тогда вся его работа пойдет на смарку а брутом брать еще эти константы- вообще - страшная вещь(по колличеству потраченного времени).
Black_sun если пользователь не будет знать этих констант -- то это уже не хе-функция, а MAC Вообще, в криптографии принято считать что подобные константы известны. Пусть они не совпадают с константами из RFC, но они известны.
Не помню уже авторов, пару лет задат промелькнула буржуйская статья на тему "дырявого МД5". Внутри можно было как раз вычитать, как бы изменилась криптостойкость МД5, имей константы другие значения. В-общем, если бы да кабы, криптостойкость МД5 упала бы. Так что менять можно на свой страх и риск.
Поискав в сети, нашел - зависит: были бы другие начальные А.Б.С.Д то алгоритм бы потерял свою криптостойкость. Были даже разработанны математические модели взлома мд5 по измененным данным. Но и от раундов тоже зависит, недаром же добавили 4-ый раунд. Спасибо за помощь.
Ты делай как все нормальные люди. Во время хеширования подмешивай свои константы в данные, особенно в начале и конце. Не обязательно сам алгоритм калечить)))
Поясни, пожалуйста, что ты имеешь ввиду? Я тут занимаюсь одним протектором, который использует МД5. Но в новой версии автор что-то изменил в алгоритме МД5, так что одинаковые входные данные приводять к разным результатам. И пока не могу понять, в чем суть изменений.
Суть не изменится, если злоумышленник узнает способ кодировния информации, тоько разве что не сможет использовать те же райнбоу табле. Но может помочь если злоумышленнику кажеться что достаточно знать только что это мд5, а сам алгоритм ето не интересует, вот тут то и придется ему поломать голову )) "Но в новой версии автор что-то изменил в алгоритме МД5, так что одинаковые входные данные приводять к разным результатам." - если твкое сделанно, то зачем вообще шифровать? надо же сравнивать с чем то а если оно разно как ты можешь сказить что входные данные были одинаковыми? Прально, никак))) Следовательно фся работа идет на смарку
Спасиб что сказал (я тогда был болен и пьян )) "Но в новой версии автор что-то изменил в алгоритме МД5, так что одинаковые входные данные приводять к разным результатам." Вообще МД5 - это хеш пароля служащий для авторизации пользователя и сравнивается не пароль, а хеш пароля(это понятно). Т.е. если у тебя при одинаковых входных данных будут разные значения мд5, то как пользователь авторизуется? Если такое возможно, то напиши.
Не много не так. Если кратко, то в исследуемом протекторе введенное имя+пароль преобразуются в конечном счете в число (dword, это условно входные данные) и вот это число уже подвергается обработке хэш-функцией МД5 и получается на выходе 12-байтное число (3 dworda). Так вот только об этом идет речь. В разных билдах протектора при одном и том же входном числе (dword), на выходе - разные (3 dwordа). Вот я и думаю, не внес ли автор изменения в алгоритм?
"Вот я и думаю, не внес ли автор изменения в алгоритм?"- сравни промежуточные резулбтаты - где будут отличия начинаться там и копай
Попробуй добавить в код 4 раунда по хешированию хеша, примерно так: __round: hash = md5(hash); i++; if (i < 5) __goto: __round; Это намного надежнее чем менять константы, если найти колизию то хеш 3 раунда уже найти неудастся, а 2 и 1 вообще без шансов. P.S. хешировать лучше хеш в текстовом виде, так даже перебор затянется на долгое время (нужно будет преобразовать в строку, хешировать, повторить это по числу раундов - а скорость выполнения преобразования в строку идет очень долго). P.S.S. Форумные движки тоже издеваются над md5, примерно так: hash = md5(md5(hash)+md5(hash)) и пр.