| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Так ли хорош md5? |
| Автор: Muerto 11.5.2011, 10:58 |
| После пару лекций в универе по структурам данных, я вот подумал а ведь md5 hash не уникален всегда... Ибо вариантов текста очень очень много, а букв для хэша всего то 32 Таки посмотрел в википедии что об этом говорят http://en.wikipedia.org/wiki/MD5 Таки md5 не панацея... и сайты взламывались ибо можно получить тот же хэш с разной последовательности букв... В тот час как SHA-2 похоже лучше http://en.wikipedia.org/wiki/SHA-2 Но тож не панацея пока есть ограниченное количество символов --- Я бы не спал спокойно использовав md5 для хеширования чувствительных данных |
| Автор: Gold Dragon 11.5.2011, 11:11 |
| вообще-то рекомендуют применять MD5 с "мусором" Но с другой стороны, есть целые сервера со словарём порядка 160 млн паролей.. Так что основной взлом - это перебор паролей. Просто внимательно нужно относится к требования к паролям |
| Автор: CruorVult 11.5.2011, 11:22 | ||
двойной MD5 и про сервера можно забыть |
| Автор: Muerto 11.5.2011, 11:27 |
| CruorVult, А вы можете делать хоть миллион раз md5, все равно будет 32 символа, и хэш можно подделать совсем другими данными... В википедии пример есть , причем оч короткий который дает один и тот же хэш |
| Автор: Muerto 11.5.2011, 11:31 |
| md5 кстати это не только пароли... часто всякие там ssl проверяются по алгоритмам хеширования., но хэш вещь НЕ УНИКАЛЬНАЯ --- А на тему подбора паролей - Забыв о хаше - так ли просто подобрать пароль? допустим пароль длинной 8 символов... у нас в англо-фовите есть 26 букв умножим на два ибо есть английские крупные . и добавим цифры и того 26*2+10=62 Теперь мы хотим создать пермутацию с повторениями и того 62^8 После трех попыток любой нормальный сайт тупо посылает на перерыв на пол часа - а ещё умней генерировать новый пароль + посылать. Но когда можно менять ай пи и работать с сотнями компами параллельно... |
| Автор: CruorVult 11.5.2011, 11:35 |
я просто привел самый элементарный способ как обойти сервера вот и всё. На самом деле так практически никто не делает) Добавлено @ 11:37 и вообще если аккаунт захотят взломать - то взломают независимо от того зашифрован ли пароль и как ;) это дело времени. |
| Автор: cutwater 11.5.2011, 11:41 |
CruorVult, глупость. учить теорию. Muerto, Сюрприз да? Учить теорию. о том что MD5 это 32 символа говорят только первокурсники и пхпшники. Википедия не авторитетный источник в данном вопросе. Изучать стойкость хеш-функций к коллизиям первого и второго рода. Прекращать преждевременную панику и нести чушь. Для предотвращения использования rainbow table уже давно известен способ использовать hash(M || salt) На последок прекратить делать велосипеды и если интересно разобраться в реализациях механизмов аутентификации в любом более менее нормальном движке (django.contrib.auth, etc.) и изучать криптографию. |
| Автор: cutwater 11.5.2011, 11:41 |
| [deleted] |
| Автор: Gold Dragon 11.5.2011, 11:41 | ||
- перестановки порядка - удалении гласных/согласных - использование транслита - подстановки цифр в конец/начало - перебор заглавных/строчных - и т.п. Т.ч. Просто если задаться целью.. Поэтому и говорю... важны требования к паролю... |
| Автор: Muerto 11.5.2011, 11:42 |
| CruorVult, Если после 3трех не верных попыток менять пароль... то статистически нужно будет 62^8 попыток... сложно представить сколько нулей в таком числе... может легче будет представить (10^8)*(6^8) грубо это 10^8 * 2M примерно что выходит сотню миллионов раз миллион это ОЧЕНЬ ОЧЕНЬ ОЧЕНЬ много... потребуется много лет.... хз даж сколько лень считать дальше |
| Автор: cutwater 11.5.2011, 11:44 |
| Muerto, Учить матчасть. Хеширование пароля не предотвратит от взлома грубой силой (имелся ввиду описываемый способ через интерфейс разумеется). Хеширование используется для того чтобы не хранить пароли в открытом виде в базе. Учите матчасть еще раз повторяю. |
| Автор: Muerto 11.5.2011, 11:46 |
| cutwater, А никто панику не поднимает, и чуши здесь нету не разу Я цифры просто так привел что бы показать что тупо простой пароль 8 символов почти нереально взломать в разумных рамках. А проблемы md5 идут далеко за рамки простого пароля, который никого особо не волнует --- Часто слышу пустые слова вроде "у нас защита по md5" , чего это защищает не оч ясно In an attack on MD5 published in December 2008, a group of researchers used this technique to fake SSL certificate validity (с) http://en.wikipedia.org/wiki/MD5 |
| Автор: CruorVult 11.5.2011, 11:49 |
а кто говорит про 3 попытки? |
| Автор: Gold Dragon 11.5.2011, 11:50 |
| Muerto, тогда вернись к началу... Для чего нужны хэш-функции? Только для сравнения данных. Если тебе нужно шифрование, то стоит воспользоваться другими системами Добавлено через 4 минуты и 54 секунды а вообще - это философский вопрос... Если человеку нужно быстро ездить, он использует машину, если ещё быстрее, то самолёт.. И тут тоже самое, MD5 хорош для своего и требовать от него сверхъестественное просто не серьёзно |
| Автор: ksnk 11.5.2011, 11:59 | ||
Нужно защититься от подбора пользовательского пароля с помощью перебора. Для этого достаточно сделать время, между попытками ввода пароля не менее 5-10 секунд. Юзер, который ошибся при вводе пароля этого не заметит, а робот, который будет долбить брутфорсом таблицу паролей - затормозится и его можно будет пытаться ловить и наказывать. |
| Автор: MoLeX 11.5.2011, 12:04 | ||
лучше использовать усложненную соль.
|
| Автор: cutwater 11.5.2011, 12:15 | ||
Вы сравниваете жопу с пальцем. Для начала может таки разберетесь для чего применяется хеширование, чтобы понять всю абсурдность ваших заявлений о парольной защите. Потому что в данной стуации Вы слышали звон.. поэтому прежде чем рассуждать о высоких материях, потрудитесь ознакомиться с предметной областью. UPD: А еще если бы хоть немного были знакомы с теорией защиты информации, могли бы построить модель угроз. И попытка взлома путем подбора пароля через веб-интерфейс далеко не единственный способ для злоумышленника. Добавлено @ 12:16 Вы говорите лучше. Расскажете чем лучше? Salt более чем достаточно. Все остальное не существенно и никакого выигрыша не дает. сложность Hash( Login || Salt || Password) равноценна Hash( Salt || Password ) |
| Автор: MoLeX 11.5.2011, 13:44 |
| cutwater, допустим увели через уязвимость базу паролей. И пытаются подобрать. Как думаешь, сколько времени уйдет на каждый способ? И какой самый стойкий Добавлено через 2 минуты и 8 секунд долгое время в радужных таблицах отсутствовал перевод строки) |
| Автор: cutwater 11.5.2011, 16:55 | ||
Разве что переводы строк. Я имел ввиду идею добавлять еще и login \ etc. Оцените стойкость Hash( Password || Salt ) и Hash( Password || Salt || Login (Yet another salt. YEAH!) ) Найдите разницу. |
| Автор: Muerto 11.5.2011, 17:23 |
| Вообще в wikipedia речь шла к примеру о взломе ssl, пароль не особо интересная вещь. А разница между password + salt или просто пароля, не столь существенна как мне кажется с точки зрения математически подсчетов... допустим salt у вас 6 символов, пароль 16 и того на 100% подбор пароля нужно перебрать 62^16 символов, а с salt 62^22 И то и второе по большому счету возможно только теоретически 62^16 ~ (10^16)*(6^16) = 10000000000000000*2821109907456=28211099074560000000000000000 Скорее быстрей повтор хэша придет... если при длине 16 это возможно,нужно лучше алгоритм изучить ... |
| Автор: cutwater 11.5.2011, 18:36 | ||
Вы так ничего и не поняли, как то зачем нужен salt. Отправляю еще раз читать учебник. Вот с этого и нужно начинать. Когда будете в состоянии оценить вероятность коллизий в MD5 (при этом не забываем что мы рассматриваем малое множество входных данных, меньших чем размер выхода хеш-функции) с Вами можно будет вести разговор об уязвимостях хеш-функций. |