Какой хэш-метод вы используете (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-дайджест этого исходного текста, чтобы построить второй текст, который соответствует ему.