Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Зачем использовать SHA1 для секретов хеширования, если SHA-512 более безопасен?

Автор вопроса: orokusakiОтветов: 3

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

Помимо очевидного большего размера (128 символов против 40) или небольшой разницы в скорости, есть ли еще какая-то причина, по которой люди используют первое?

Кроме того, я считаю, что SHA-1 впервые был взломан процессором видеомагнитофона много лет назад. Кто-нибудь еще расколол 512 (возможно, с помощью воздуходувки), или еще безопасно использовать без соления?

  • не все хеши связаны с безопасностью Javier 15.04.2010
  • @ Джо ты уверен? Я слышал о взломах всевозможного шифрования, когда происходят квантовые вычисления, которые могут взломать множество алгоритмов за секунды. Earlz 15.04.2010
  • подожди. неважно. Хеширование - это не то же самое, что шифрование. забыл эту деталь. Earlz 15.04.2010
  • md5.rednoize.com orokusaki 15.04.2010
  • @Javier Смотри мой заголовок и мой вопрос по безопасности. Я спрашиваю о безопасности, а не о сравнении объектов, контрольных суммах и т. Д. orokusaki 15.04.2010

sha1hashsha512

Ответы

Ответ 1 · рейтинг 45 · Thomas Pornin

В большинстве случаев SHA-1 используется для взаимодействия: мы используем SHA-1, когда реализуем протоколы, в которых требуется SHA-1. Также учитывается простота разработки: реализации SHA-1 на разных языках и в среде программирования более распространены, чем реализации SHA-512.

Кроме того, несмотря на то, что большинство случаев использования хэш-функций не имеет проблем с производительностью (по крайней мере, нет проблем с производительностью, когда хеш-функция является узким местом), есть некоторые архитектуры, в которых SHA-1 намного эффективнее, чем SHA-512. Рассмотрим базовый маршрутизатор Linksys: он использует производный от Mips процессор с тактовой частотой 200 МГц. Такую машину можно перепрограммировать, например с помощью OpenWRT (небольшой Linux для встроенных систем). Как маршрутизатор, он имеет быструю сеть (100 Мбит / с). Предположим, вы хотите хэшировать некоторые данные (например, как часть некоторого программного обеспечения VPN - маршрутизатор выглядит как хороший кандидат для запуска VPN). С SHA-1 вы получите около 6 МБ / с при полной загрузке процессора. Это уже значительно меньше пропускной способности сети. SHA-512 даст вам не более 1,5 МБ / с на одном компьютере. В такой системе разница в производительности заметна. Кроме того, если я использую SHA-1 на моем маршрутизаторе Linksys для какого-либо протокола связи, тогда машина на другом конце ссылки также должна будет использовать SHA-1.

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

Ответ 2 · рейтинг 26 · Michael Aaron Safyan

И SHA1, и SHA512 являются хэш-функциями. Если вы используете их в качестве криптографического хэша, возможно, это хорошая причина для использования SHA512; однако есть приложения, которые используют эту функцию просто для идентификации объектов. Например, Git использует SHA1, чтобы дешево различать объекты. В этом случае, поскольку вероятность конфликта между двумя документами невероятно мала с SHA1, действительно нет оправдания дополнительным требованиям к пространству для SHA512, когда SHA1 более чем подходит для этой задачи.

Что касается криптографических хэшей и выбора использовать соль или нет, вам может быть интересно прочитать Не хэшируйте секреты. Даже с SHA512 использование соли - хорошая идея (и это дешево, так почему бы не сделать это?), Потому что вы можете угадать основные пароли и посмотреть, имеют ли они одинаковый хэш, но автор указывает, что HMAC - более безопасный механизм. В любом случае вам нужно будет определить затраты, связанные с дополнительным временем + пространством, и затраты, связанные с возможностью нарушения, и определить, насколько параноиком вы хотите быть. Как недавно обнаружила Microsoft, постоянная смена паролей - пустая трата времени деньги и не окупаются, поэтому, хотя паранойя обычно хороша, когда дело касается безопасности, вам действительно нужно посчитать, чтобы определить, имеет ли это смысл .... выгода от безопасности перевешивает время и хранилище расходы?

Ответ 3 · рейтинг 3 · Dean J

Если вам нужно что-то быстро хешировать или нужен только 160-битный хеш, вы должны использовать SHA-1.

Для быстрого сравнения записей базы данных друг с другом вы можете взять 100 полей и сделать из них хэш SHA-1, что даст 160 бит. Эти 160 бит представляют собой значения 10 ^ 50.

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы