Подтвердить что ты не робот

Причины, по которым SHA512 превосходит MD5

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

Вы думаете об этом неправильно.

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

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

Проделайте крошечный мысленный эксперимент...

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

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

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

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

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

REAL ISSUE - это то, как вы реализуете свою безопасность

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

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

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

Это просто, MD5 сломан;) (см. Wikipedia)

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