Шифрование MD5(MD5(...))

kruglov

Новичок
При кодировании [m]crypt[/m] в полученный хэш salt дописывается автоматически. И хотя он и хранится вместе с хэшем в открытом виде, все равно, базу 1 пароль - 1 хэш уже не сделаешь, придется все возможные saltы предусматривать. А их длина от 9 до 16 символов в зависимости от используемого в системе алгоритма шифрования (двухсимвольный STD_DES не рассматриваем).

> если пароль больше 8 символов то он просто обрезается до 8
Это, вообще говоря, неправда. crypt может кодировать разными алгоритмами, 8-символьное ограничение имеет только древний DES.

Короче, что я вам мануал пересказываю, читайте сами.
[m]crypt[/m]
 

DEM

Новичок
а если сделать так:
md5(md5("DEM").md5($name)."MED".sha1("$pass").md5("Bo-Bo"));

К примеру... потому что я думаю тогда будет тяжеловато определить, ну во всяком случае время потратится достаточно... А если еще сделать что бы слова DEM, MED, Bo-Bo (брались понятное дело к пример) выставлялись рандомно... Или что бы них были цифры и тогда мы получаем

$rand1 = rand(100,102492);
$rand2 = rand(1000, 35235);
$rand3 = rand(4344, 545435);

md5(md5("$rand1").md5($name).md5("$rand2").sha1("$pass").md5("$rand3"));


И тогда тот кто будет ламать md5 пароль будет мучится и недоумевать...
 

Andreika

"PHP for nubies" reader
DEM
еще раз повторюсь - от крутости и страшности кода шифрования пароля в скрипте его стойкость не увеличивается никак...
И тогда тот кто будет ламать md5 пароль будет мучится и недоумевать...
первым будет недоумевать твой же скрипт, который попытается сравнить правильный пароль с имеющимся в базе
 

rob72

Новичок
DEM
Но ведь подразумевается, что исходники тоже украдены, а значит и твои MED DEM и Во-Во и алгоритм. Хотя, конечно затруднит. Вот у меня еще мысль:
PHP:
$rand= rand(100,10000);
$pass=md5($pass.$rand);
При таком варианте серверу придется немного помучиться, перебирая все варианты от 100 до 10000. Но хацкеру-больше. И кода тут вроде будет меньше.
 

kruglov

Новичок
Ну мужики, ну вам делать нечего?

Читать ман по [m]crypt[/m] до просветления всем, кто еще хочет вкладывать друг в друга 100 md5 и приписывать свои saltы.
 

Sluggard

Новичок
Andreika
Ты хочешь сказать, сверх сложно узнать, какой алгоритм шифрования использует система?
 

viewsonic

Guest
Вы прям тут затеяли такую борьбу. Ха, этим криптоаналитики и криптографы занимаются. А все ваши попытки усложнить md5 или sha равны нулю. Над неломаемым шифром весь мир борется с тех пор как появилась первая шифровальная машина Энигма. И до сих пор такого шифра не найдено. Находятся только более-менее криптостойкие алгоритмы. Но до поры до времени. Пока на них не натравят пару десятков русских или пару миллионов китайцев. :) Невзламываемого алгоритма пока нет.
 

LongHornKms

Новичок
2 viewsonic :
Невзламываемого алгоритма пока нет.
Существует невзламываемый алгоритм. Этот алгоритм не взламывается даже теоретически, т.е. полученный им шифр не сможет прочитать ни инопланетянин, ни Господь Бог, ни Сатана. Никто. Имя этому алгоритму - "алгоритм одноразового блокнота".
Мы и не пытаемся здесь построить невзламываемый алгоритм. Просто мы пришли к выводу, что хранить пароли в виде plain text может быть небезопасно, а если хранить в виде хешей MD5 - то любой лох возьмет уже готовую программу PasswordPro и взломает хеш этой весьма быстрой и весьма эффективной программой.
Однако применив хотя бы фишку MD5(MD5()) мы уже лишаем кулхацкера возможности воспользоваться готовой программой PasswordPro, ставя его перед куда более глобальной задачей - написать собственную программу. Заметь - мы в своих проектах пишем всего лишь на несколько букв больше (не просто MD5(), а MD5(MD5()) - всего на 5 букв больше). Мы, написав эти лишние 5 букв не перетрудимся. Но зато поставим в довольно геморройное положение кулхацкера, возможно даже вынудив его отказаться от затеи писать собственную программу.
предложенный мой алгоритм, который хеширует пароль снова и снова 1000 раз, значительно увеличевает время вычисления хеша. Таким образом, время восстановления пароля тоже будет увеличено в 1000 раз. Пароль, который в случае обычного MD5 восстановят за 1 час, в моем случае потребует полтора месяца.
 

Alexandre

PHPПенсионер
и решил, что пожалуй, перейду-ка я на sha1,
если уж переходить на хеширование, то последние рекомендации уже sha-256.512 (не уверен есть ли он в стандартной библиотеке.).

А вот то, что sha1 более криптостойкий (в 256 раз - если не ошибаюсь), так как дает 16 символов хеша, в отличие от md5 - 10

Но это все не решает проблему, так как не сложно базу в 4Гб из MD5 перегнать в sha-1 или sha-256/512.


а вообще - все это все криптомания,

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

надо осознать, что меры защиты нужны,
но 100% защиты нет - если есть доступ к серверу у третьей стороны (например хостер).

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

Например в этом случае полезна обертка php swig.

-~{}~ 10.05.06 11:30:

Однако применив хотя бы фишку MD5(MD5()) мы уже лишаем кулхацкера возможности воспользоваться готовой программой PasswordPro
не решает проблемы
 

SiMM

Новичок
> sha1 ... дает 16 символов хеша, в отличие от md5 - 10
У меня наверно PHP глючит.
PHP:
<?=strlen(md5('')) // 32?>
 

Mozart

Новичок
Автор оригинала: rob72
DEM
Но ведь подразумевается, что исходники тоже украдены, а значит и твои MED DEM и Во-Во и алгоритм. Хотя, конечно затруднит. Вот у меня еще мысль:
PHP:
$rand= rand(100,10000);
$pass=md5($pass.$rand);
При таком варианте серверу придется немного помучиться, перебирая все варианты от 100 до 10000. Но хацкеру-больше. И кода тут вроде будет меньше.
пролистано...Не допонял про "помучиться"=)
 

kruglov

Новичок
Alexandre
> Но это все не решает проблему, так как не сложно базу в 4Гб из MD5 перегнать в sha-1 или sha-256/512.

Не забывайте, в эту базу надо еще и варианты для каждого salt загонять.
 

viewsonic

Guest
Автор оригинала: LongHornKms
2 viewsonic :
Однако применив хотя бы фишку MD5(MD5()) мы уже лишаем кулхацкера возможности воспользоваться готовой программой PasswordPro, ставя его перед куда более глобальной задачей - написать собственную программу. Заметь - мы в своих проектах пишем всего лишь на несколько букв больше (не просто MD5(), а MD5(MD5()) - всего на 5 букв больше). Мы, написав эти лишние 5 букв не перетрудимся. Но зато поставим в довольно геморройное положение кулхацкера, возможно даже вынудив его отказаться от затеи писать собственную программу.
Угу, только и вероятность коллизии вы тем самым поднимаете до неприятного уровня. :)
 

Andreika

"PHP for nubies" reader
viewsonic
1. вы в состоянии высчитать уровень увеличения сей вероятности? или это догадки?
2. все, сайт взломан... и основная задача - не найти коллизию, а узнать оригинал пароля для использования в других местах
 

Tor

Новичок
не найти коллизию, а узнать оригинал пароля
какая, собственно разница?

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

Alexandre

PHPПенсионер
Автор оригинала: SiMM
> sha1 ... дает 16 символов хеша, в отличие от md5 - 10
У меня наверно PHP глючит.
PHP:
<?=strlen(md5('')) // 32?>
забыл добавить 16 символов хеша на блок.
а вообще интерестное замечание, надо будет глянуть реализацию функции MD5.



вы знаете алгоритм проверки на mail.ru/icq.com
Andreika
не знаю как на mail.ru, а вот пароли на icq.com подбираются довольно быстро. Даже на этом построен своеобразный бизнес - взламывают 6-ти значные номера и потом успешно продаются.
 

Andreika

"PHP for nubies" reader
новая игра - испорченный форум - отвечать на предыдущее сообщение, не читая остальные )
 
Сверху