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

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

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

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

35
задан orokusaki 8 June 2012 в 17:57
поделиться

3 ответа

Чаще всего 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.

42
ответ дан 27 November 2019 в 06:59
поделиться

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

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

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

3
ответ дан 27 November 2019 в 06:59
поделиться

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

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

24
ответ дан 27 November 2019 в 06:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: