Изменить метод шифрования

gizeh

Рекрут
Пользователь
Сообщения
31
Розыгрыши
0
Репутация
0
Реакции
19
Баллы
0
Это всего лишь обычнаю тест конструкция просто как пример поднабросал, под любой проект можно переиграть, не думаю что двойной md5 легко будет прогнать по словаю.
конфиг со здоровенной ключевой фразой, которую довеском подсунуть в формирование двойного md5, тогда уже перебор вообще окажется из роли фантастики

Нет, не из области фантастики. Проблема с md5 в том, что он слишком быстр. Двойное хеширование бесполезно (скорость вычисления хеша увеличивается незначительно) и доже вредит (вероятность коллизии увеличивается, но мы не про это сейчас, к паролям это слабо относится).
Длинная статическая соль (этот самый конфиг со здоровенной фразой) не решает проблему.

При написании алгоритмов аутентификации и безопасного хранения хешей нужно исходить из таких предположений: утекла вся БД и злоумышленнику известен алгоритм хеширования (сорцы тоже утекли). Цель: получить plain-text пароль пользователя.
Что будет делать злоумышленник? Скармливает софту-брутфорсеру алгоритм хеширования и самый большой словарь, который может себе позволить, примерно в таком виде (как предложенный Alligat0r вариант): md5(md5(STATIC_SALT.DICTIONARY_WORD)) и запускает брутфорс. Уже видите проблему с такой солью? Она статическая (одна на все пароль) и никак не влияет на брутфорс, он все еще чертовски быстр. При каждой итерации подбора софт ищет полученный хеш в бд. Есть такой? Ну вот, один пароль мы нашли. И так далее.

Что же делать? Не использовать статическую соль, а рандомизированную для каждого пользователя. Как её хранить? Да прямо рядом с хешем пароля. Это намного безопаснее. Почему? Рассмотрим тот же вариант: у хацкера так же есть БД и алгоритм генерации хеша. Как он будет брутфорсить: взять уникальную соль для каждой записи из таблицы юзеров. Прилепить к слову из словаря и сгенерировать хеш: md5(md5(RANDOMIZED_SALT.DICTIONARY_WORD)). Проверить, что полученные хеши не совпадают. Взять следующее слова из словаря... Я думаю что уже стало очевидно, что в первом случае нужно сделать n итераций, где n -- размер словаря. Во втором уже Nn, где N - общее кол-во записей в таблице юзеров. Другими словами, при наличии словаря на 1000000 (миллион) парольных фраз и 1000 юзеров злоумышленник переберет 1000000 хешей (что для md5 очень быстро), а во втором уже 1000 * 1000000 = 1000000000 (миллиард) итераций! Что уже усложняет жизнь.
Но не делает эту задачу невозможной при наличии GPU :)

И таки что делать? Все просто, вот алгоритм успеха: уникальная рандомизированная для каждого юзера соль, более требовательный к вычислительным ресурсам алгоритм хеширования, нежели md5: блоуфиш с адекватным кост-фактором и уникальной солью обломает хацкеру зубы (что как раз и реализует PHP password api, к слову).
 

Desquire

Бессмертный
Партнер
Сообщения
1 512
Розыгрыши
11
Репутация
1 320
Реакции
1 043
Баллы
1 758
Alligat0r,

2013 год
 

Logan22

Величайший
Проверенный
Сообщения
1 123
Розыгрыши
0
Репутация
1 095
Реакции
766
Баллы
1 680
тогда уже перебор вообще окажется из роли фантастики
Видеокарта 980ti на изи 3-4 миллиардов ком/сек поверит твой md5, забудь про md5 или sha1, whirlpool и прочие актуальные 90х начала 00 годов медоты хеширования.
 
  • Мне нравится
Реакции: kick

Alligat0r

Рекрут
Пользователь
Сообщения
77
Розыгрыши
0
Репутация
313
Реакции
76
Баллы
0
Все что написано в последних сообщениях это не методы взлома а методы подбора/перебора, нужно понимать разницу.

Вот к примеру md5 хеш обычный не двойной сгенерированный по 4 символам, попробуйте вскройте, прежде чем писать о способе взлома хеша и о гигантской скорости перебора.

a1333e478770f8a193b3cd4e76bfa606
 

kick

Магистр Йода
Administrator
Сообщения
6 499
Розыгрыши
12
Репутация
5 108
Реакции
5 143
Баллы
2 688
5^Bc
 

Logan22

Величайший
Проверенный
Сообщения
1 123
Розыгрыши
0
Репутация
1 095
Реакции
766
Баллы
1 680
Никто твой хеш не будет ломать, он никому не нужен чтоб на него тратили свои мощности.
Взлом или брут хеша это одно и тоже, так как хеш функция не обратима, слово "взлом" в данном контексте означает получения первичного пароля.
Тебе объяснили что md5 устаревший алгоритм хеширования, что тебе ещё не понятно. Хочешь используй, хочешь нет, всем плевать.
 

[MSN]-MADCAT

Рекрут
Проверенный
Сообщения
276
Розыгрыши
0
Репутация
51
Реакции
71
Баллы
0
Тема себя исчерпала, мнение и споры приводят к определенным выводам, и это есть конечный результат для начала реализации чего то нового, но оно никому ненужно. Парадокс.
Но спасибо всем кто принял участие. Было весьма интересно.
 
Сверху Снизу