Причины, по которым SHA512 превосходит MD5 - PullRequest
28 голосов
/ 22 января 2010

Мне было интересно, смогу ли я найти причины или ссылки на ресурсы, объясняющие, почему SHA512 является лучшим алгоритмом хеширования по сравнению с MD5.

Ответы [ 7 ]

61 голосов
/ 22 января 2010

Это зависит от вашего варианта использования. Вы не можете широко претендовать на «превосходство». (Я имею в виду, да, вы можете, в некоторых случаях, но если быть строгим, вы не можете на самом деле).

Но есть области, где MD5 был сломан:

  1. Для начала: MD5 старый и обычный. Есть множество радужных столов против них, и их легко найти. Так что, если вы хэшируете пароли (без малейшего стыда!) - используя md5 - вы можете их не хешировать, их так легко найти. Даже если вы действительно смешиваете с простыми солями.
  2. Во-вторых, MD5 больше не защищен как криптографическая хеш-функция (на самом деле она даже не считается криптографической хеш-функцией, как указывает Forked One). Вы можете генерировать разные сообщения, которые хэшируют одно и то же значение. Поэтому, если у вас есть сертификат SSL с хешем MD5, я могу сгенерировать дубликат сертификата, который говорит, что я хочу, и выдает тот же хеш . Обычно это то, что люди имеют в виду, когда говорят, что MD5 «сломан» - такие вещи.
  3. В-третьих, аналогично сообщениям, вы также можете генерировать различные файлы , которые хэшируются с одинаковым значением , поэтому использование MD5 в качестве контрольной суммы файла является «поврежденным».

Теперь SHA-512 - это хэш-алгоритм семейства SHA-2 . SHA-1 в наши дни считается «а», я проигнорирую это. SHA-2, однако, имеет относительно мало атак против него. Основная статья, о которой говорится в Википедии, - это атака прообразом с уменьшенным количеством раундов , что означает, что если вы используете SHA-512 ужасно неправильным способом, я могу его сломать. Очевидно, что вы вряд ли будете использовать его таким образом, но атаки становятся только лучше, и это хороший трамплин для дальнейших исследований, чтобы сломать SHA-512 таким же образом, как сломан MD5.

Однако из всех доступных хэш-функций семейство SHA-2 в настоящее время является самым сильным и лучшим выбором с точки зрения общности, анализа и безопасности. (Но не обязательно скорость. Если вы находитесь во встроенных системах, вам нужно выполнить целый другой анализ.)

10 голосов
/ 22 января 2010

MD5 уже давно криптографически взломан. Это в основном означает, что некоторые свойства, обычно гарантируемые хеш-алгоритмами, больше не выполняются. Например, можно найти коллизии хешей за гораздо меньшее время, чем потенциально необходимо для длины вывода.

SHA-512 (одна из хеш-функций семейства SHA-2) на данный момент достаточно безопасна, но, возможно, ненадолго в обозримом будущем. Вот почему NIST начал конкурс на SHA-3.

Как правило, вы хотите, чтобы алгоритмы хеширования были односторонними функциями. Они сопоставляют некоторый вход с некоторым выходом. Обычно выходные данные имеют фиксированную длину, что обеспечивает «дайджест» исходного ввода. Общие свойства, например, заключаются в том, что небольшие изменения во входных данных приводят к большим изменениям в выходных данных (что помогает обнаруживать несанкционированное вмешательство) и что функция не является легко обратимой. Для последнего свойства длина вывода очень помогает, потому что она обеспечивает теоретическую верхнюю границу сложности атаки столкновения. Однако недостатки в дизайне или реализации часто приводят к снижению сложности атак. Как только они станут известны, пришло время оценить, по-прежнему ли используется хеш-функция. Если сложность атаки падает достаточно далеко, практические атаки легко попадают в круг людей без специального компьютерного оборудования.

Примечание: я говорил только об одном виде атаки здесь. Реальность хоть и гораздо более нюансированная, но и гораздо сложнее понять. Поскольку хеш-функции очень часто используются для проверки целостности файла / сообщения, коллизия, вероятно, самая простая для понимания и отслеживания.

3 голосов
/ 28 июня 2016

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

Говоря математически, MD5 не «сломан», если вы солите попытки хэша и дросселирования (даже на 1 секунду), ваша безопасность будет так же «сломана», как если бы злоумышленник медленно отбрасывал вашу 1-футовую твердую сталь. стена с деревянной ложкой:

Это займет тысячи лет, и к тому времени все участники будут мертвы; Есть более важные вещи, о которых нужно беспокоиться.

Если вы заблокируете их учетную запись с 20-й попытки ... проблема решена. 20 ударов на твоей стене = 0.0000000001% вероятности, что они пройдут. В буквальном смысле это лучший статистический шанс, что вы на самом деле Иисус.

You're thinking about it wrong.

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

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

Давайте проведем небольшой мысленный эксперимент ...

SHA-2, если бы он существовал, имел бы всего 4 возможных уникальных идентификатора для чего-то еще ... 00, 01, 10 и 11. Очевидно, он будет вызывать столкновения. Вы видите проблему здесь? Хеш - это просто сгенерированный идентификатор того, что вы пытаетесь идентифицировать.

MD5 действительно очень хорош при случайном выборе числа на основе входных данных. SHA на самом деле не намного лучше; У SHA просто больше места для идентификаторов.

Используемый метод составляет примерно 0,1% от причины, по которой столкновения менее вероятны. Настоящая причина - большее битовое пространство.

Это буквально единственная причина, по которой SHA-256 и SHA-512 менее уязвимы для столкновений; потому что они используют большее пространство для уникального идентификатора.

Фактические методы SHA-256 и SHA-512, используемые для генерации хеша, на самом деле лучше, но ненамного; те же самые радужные атаки будут работать на них, если у них будет меньше битов в их идентификаторах, а файлы и даже пароли могут иметь идентичные идентификаторы с использованием SHA-256 и SHA-512, просто это намного менее вероятно, поскольку использует больше битов.

НАСТОЯЩИЙ ВЫПУСК - как вы реализуете свою безопасность

Если вы позволите автоматическим атакам достигать вашей конечной точки аутентификации 1000 раз в секунду, вы попадете в нее. Если вы дросселируете до 1 попытки за 3 секунды и заблокируете учетную запись на 24 часа после 10-й попытки, это не так.

Если вы храните пароли без соли (соль - это просто дополнительный секрет для генератора, затрудняющий идентификацию плохих паролей, таких как «31337» или «пароль») и у вас много пользователей, вы собираетесь получить взломан Если вы солите их, даже если вы используете MD5, это не так.

Учитывая, что MD5 использует 128 бит (32 байта в HEX, 16 байтов в двоичном формате), а SHA 512 занимает только 4-кратное пространство, но практически исключает коэффициент коллизий, давая вам 2 ^ 384 возможных идентификатора ... Идите с SHA 512, каждый раз.

Но если вы беспокоитесь о том, что на самом деле произойдет, если вы используете MD5, и вы не понимаете реальных, реальных различий, вы все равно, вероятно, будете взломаны, имеет смысл?

2 голосов
/ 22 января 2010

читает это

Однако было показано, что MD5 не является устойчивым к столкновениям

больше информации о столкновении здесь

1 голос
/ 22 января 2010

MD5 имеет вероятность коллизии (http://www.mscs.dal.ca/~selinger/md5collision/)), и существует множество радужных таблиц MD5 для обратного поиска пароля в Интернете и доступных для загрузки.

0 голосов
/ 22 января 2010

Это просто, MD5 сломан;) (см. Википедия )

Брюс Шнайер писал об атаке, что «[мы] уже знали, что MD5 - это сломанная хеш-функция» и что «никто больше не должен использовать MD5».

0 голосов
/ 22 января 2010

Для отображения в обратном направлении требуется гораздо больший словарь, а вероятность столкновения ниже.

...