Какой хэш-метод вы используете (MD5, SHA1, другое?)

Эта страница Wikipedia содержит обширный список хэширующих методов

Как вы можете видеть, оба MD5 и Sha1 были сломаны (в криптографии "сломан" означает, что атака менее сложна, чем атака грубой силы. Иными словами, если вам понадобится 1 миллион лет, чтобы найти столкновение вместо один миллиард лет с использованием грубой силы, алгоритм считается сломанным, даже если он, вероятно, все еще безопасен для его использования)

Что вы используете в качестве хэш-алгоритма?

SHA1 сломан, но для вычисления столкновения все еще требуется миллиард лет.

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

Ответ 1

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

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

Если это будет иметь большее значение, если вы используете цифровую подпись, SSL, IPSEC и т.д., которые полагаются на хеш-функции, и если вам нужна хеш-функция, чтобы оставаться в безопасности в течение длительного времени. Однако здесь у вас мало выбора, кроме как подождать и посмотреть, какие хеш-функции становятся новым проверенным стандартом и/или использовать более одной хэш-функции, если вы можете.

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

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

Ответ 2

Я использую Whirlpool hash. Однако... вы не должны полагаться на хеширование для защиты паролей. Если вы храните пароль в базе данных, всегда используйте приличную соль (которая помогает предотвратить атаки радуги и столкновений).

И следуйте другим правилам безопасности вашей платформы:)

Ответ 3

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

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

Если используется небезопасное использование (т.е. поиск дубликатов файлов), MD5 работает отлично и быстрее.

Ответ 4

Есть и другие, такие как SHA-256 или RIPEMD-160 или даже одного из кандидатов SHA-3 (см. список здесь для вас. Всегда помните, что у них нет были так же проверены и проанализированы как MD4/5 и SHA-1. Это также требует затрат с точки зрения производительности.

Один ответ на ваш вопрос будет состоять в том, чтобы использовать два из них, которые, надеюсь, будут отличаться настолько, что нарушение одного не нарушит другого. Шансы на то, чтобы оба были достаточно разбиты, чтобы подделать две контрольные суммы, - довольно абиссальное ИМХО.

Ответ 5

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

Например, столкновения MD5 теперь можно найти очень быстро (я думаю, что в википедии упоминается метод, который может сделать это в течение нескольких минут, но исправьте меня, если я ошибаюсь).

Вы не хотите перекомпилировать весь свой хэш/подпись для множества вещей, которые вы уже вычислили, в случае, если это произойдет.

Ответ 6

Как я понимаю, сломанная часть MD5 заключается в том, что кто-то с исходным текстом теперь может легко построить второй текст, который имеет тот же дайджест MD5.

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