![]() |
Защита от взломов хешей (мои мысли...)
В общем это мне пришло в голову еще давно, но только сейчас я решил это выложить, а точнее спросить, будет ли это эффективнее. Лучше всего объяснять на примере, поэтому я его покажу. Есть простенький скрипт регистрации - авторизации. Регистрируется пользователь с паролем 123456. Современные обычные (без соли) движки заносят в БД md5 хеш пароля, то есть e10adc3949ba59abbe56e057f20f883e. Дальше, когда пользователя авторизируется, md5 хеш введенного пароля сопоставляется с md5 хешем в базе, и если они равны, то авторизация проходит удачно. Так вот, если же сделать алгоритм, который бы заносил не весь хеш, а затирал некие символы, т.е. заносил бы, например e10a*c394*ba59a*be56e057*20f8*3e. При авторизации, скрипт разделяет хеш пароля точно так же и сопоставляет его с хешем в базе. Если затереть всего один символ вероятность распознавания пароля становится уже в 16 раз! ниже. А если затереть пять , то соответственно, вероятность становится в 16*5 = 80 раз ниже. В этом алгоритме также есть и свои недостатки - коллизии. НО вероятность коллизии все равно очень мала, даже при затёртых 5 символах. В общем вот, что вы об этом думаете?
|
Цитата:
Второе, никто не мешает сгенерировать все возможные хэши по маске и брутить уже пачку хэшей. Даже если какой-то совпадёт по маске, велика вероятность что это не коллизия а именно искомый хэш. Идея имеет право на жизнь, но для опытного хэшкрякера не является особым препятсвием для брута неполного хэша. Вероятность подбора пароля не падает, а как раз увеличивается, раз сужается область значений хэшфункции, т.е. ситуация коллизии нас при этом устроит. Единственная защита это соль + более медленный алгоритм хэширования, что и используется, к примнеру md5(unix) отчасти решает проблему защиты пароля от прямого перебора из-за своей медлительности, но по словарю атака остаётся актуальной (точнее даже сказать так можно, что только по словарю актуальны, остальные атаки очень затратны по времени.) |
Цитата:
Цитата:
Цитата:
Цитата:
|
проще сделать свой алгоритм шифрования и проверки :)
|
Зачем эти заморочки, если есть алгоритмы которые задолбааешься брутить?
mailbrush ты пытаешься создать свой устойчивый к бруту алгоритм? Тогда направление не вполне верное ИМХО |
SHA1(md5)
|
Цитата:
|
$name = 'mailbrush';
$pass = 'mailbrush123'; $rand = rand(1000,9999); $hash = md5(md5($name).md5($pass).base64_encode($rand)); и как бы всё |
Цитата:
- щас нельзя (из-за нагрузки на мускул при поиске), раньше было можно (пункт Атака по маске) - вероятность коллизии увеличивается с каждым вычеркнутым символом, большая не большая эти понятия тут нет смысла использовать ибо всё относительно. Смысл в том что случай коллизии нас так же устроит, как и подбор целевого хэша. |
Цитата:
|
| Время: 20:15 |