ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Криптография, расшифровка хешей (https://forum.antichat.xyz/forumdisplay.php?f=76)
-   -   Защита от взломов хешей (мои мысли...) (https://forum.antichat.xyz/showthread.php?t=155151)

mailbrush 09.11.2009 13:56

Пришёл всемирный облом этой идее...
А если взять два хеш пароля - один обычный md5, а другой - md5 в этом алгоритме, то какой быстрее расшифруется?

Gray_Wolf 09.11.2009 14:01

Цитата:

Сообщение от mailbrush
Да, но при переборе 80 хешей, скорость будет меньше, чем при 1.

Скорость брута у EGB на моей видухе:
1 хеш = ~450 Милионов пассов в секунду
450 000хешей = ~150-200 Милионов пассов в секунду

Думаете шанс коллизии так уж мал?

-=lebed=- 09.11.2009 14:10

Цитата:

Сообщение от mailbrush
Пришёл всемирный облом этой идее...
А если взять два хеш пароля - один обычный md5, а другой - md5 в этом алгоритме, то какой быстрее расшифруется?

чем больше доп хэширования, тем конечно медленнее идёт перебор (а не расшифровка). Что как раз сделано в md5(unix) - 1000 циклов солёного md5 каждый раз с разной солью. Что скорость перебора резко уменьшает ~ в 1000 раз на 1 хэше и пропорционально колличеству одновременно перебираемых.

Eo0 09.11.2009 14:14

А если такое решение
PHP код:

<?php
$l
='login';//логин
$p='pass';//Пасс
$l=md5(sha1($l).sha1($p));
$p=md5(sha1($p).sha1($l));
//тоесть для бруто придётся узнать ещё и логин
?>


Gray_Wolf 09.11.2009 14:21

Цитата:

Сообщение от Eo0
//тоесть для бруто придётся узнать ещё и логин

Вы не поверите но логины хранятся в той же БД что и пароль с солью :)

Мне больше нравится мысль запихивать в хеш 2 соли, вот это точно неслабо сократит время брута...

Eo0 09.11.2009 14:30

Gray_Wolf, естественно логин в базе не записан.

Gray_Wolf 09.11.2009 14:35

Цитата:

Сообщение от Eo0
Gray_Wolf, естественно логин в базе не записан.

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

ErrorNeo 09.11.2009 16:20

для того, чтобы защитить конкретный сайт - достаточно ввести на форуме фиксированную 20-символьную соль, которая не хранится в базе, и солить ей все хэши.
Тогда, пока злоумышленник не подберет эту соль - а хорошую 20символьную соль он не подберет никогда, или же не получит доступа к сурсам - ни 1 хэш он вскрыть не сможет. :cool:


ну а если говорить об изобретении "нового криптоустойчивого алгоритма" в целом - то это писец.
Собственно в данном случае сложность - не в том, чтобы сделать небрутабельный алгоритм, а в том, чтобы сделать соотношение скорость/криптоустойчивость более высоким, чем у аналогов.

Математики такие алгоритмы годами разрабатывают... ;)
Да и в любом случае, если известен алгоритм - значит можно будет и атаковать по словарю. От этого не защитишься.
Ну а от атак иными, чем словарь методами - вполне защищают и многие уже существующие аналоги

Gray_Wolf 09.11.2009 16:50

Цитата:

Сообщение от ErrorNeo
для того, чтобы защитить конкретный сайт - достаточно рандомно менять заранее заданную пару символов в хэше, и при проверке из не учитывать)
до тех пор, пока злоумышленник не доберется до сурсов - он ничего не сбрутит :cool:

Вот только если он не первый раз этим занимается, он незабудет перед тем как сливать базу зарегить акк с пассом 123456, и тогда узнать такой алгоритм будет не слишком сложно. А вот исключение символов родит коллизии...

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

Вот простой пример : Hash=md5(md5(pass).sha1(salt))
Определить и взломать его будет ещё тот геморрой...
Хотя конкретно такой алгоритм я бы не рекомендавал крупным сайтам, т.к. при определении алгоритма взломщик может получить sha1 хеш конкретной соли (админа) и брутить пасс алгоритмом md5(md5(pass)) по маске.

Так что лучший вариант это использование разных алгоритмов хеширования для привилегированных и обычных пользователей.(ну или просто при повышении прав пользователя загонять существующий хеш в md5(unix), получая в итоге md5_Unix(md5(md5(pass).sha1(salt)))

ErrorNeo 09.11.2009 16:54

да, Gray_Wolf, пока ты это писал я уже убрал тот метод из своего поста.

Мысль была в том, что любой кастом алгоритм, если он заранее неизвестен - не брутабелен. До тех пор, пока не станет известен.


Время: 01:03