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

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

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

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


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


Ответы (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.

person Thomas Pornin    schedule 15.04.2010
comment
@Thomas спасибо за отличную информацию. Я просто использую SHA512 для защиты паролем на частной машине в colo, потому что мне не нужны соленые данные (по какой-то причине ОКР), но я хочу, чтобы они были защищены от взлома (по крайней мере, на некоторое время). Безопасность - это проблема, но нет риска потери номеров кредитных карт и т. Д. - person orokusaki; 16.04.2010
comment
@Thomas Вау, был впечатлен вашим ответом, поэтому я проверил ваш сайт и резюме. Доктор философии в этом материале а. Как ты думаешь, мой пароль - плохая идея? - person orokusaki; 16.04.2010
comment
@orokusaki: для защиты паролем частной машины в colo криптография избыточна. Если потенциальные злоумышленники действительно мотивированы, физический доступ к системе - это все, что им нужно (например, для установки устройства регистрации ключей, когда вы вводите свой пароль). Поэтому вы можете использовать все, что заставляет вас чувствовать себя в безопасности. - person Thomas Pornin; 16.04.2010
comment
Мне все еще интересно, является ли SHA1 или SHA256 более безопасным. Например, если я использую PBKDF2 с 10 000 итераций, какова разница в безопасности, если таковая имеется, между использованием SHA1 или SHA256 в качестве алгоритма хеширования? - person joshreesjones; 07.02.2016
comment
Хорошая новость ... в том, что соревнование окончено. У нас есть победитель: Keccak (csrc.nist.gov /groups/ST/hash/sha-3/winner_sha-3.html). Не могли бы вы обновить последний абзац? - person Stephan; 30.05.2016

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

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

person Michael Aaron Safyan    schedule 14.04.2010
comment
@Michael Я действительно имел в виду: почему люди до сих пор используют SHA1 в качестве устройства безопасности (не для целей контрольной суммы или других). - person orokusaki; 15.04.2010
comment
@orokusaki; вы можете обновить вопрос, чтобы сказать это. :-) - person Dean J; 15.04.2010
comment
@ Дин Дж. Я думал, что часть more secure? в названии и вопросе позаботится об этом. Что еще я мог иметь в виду в отношении sha1 и безопасности? - person orokusaki; 15.04.2010
comment
@orokusaki: зачем использовать стул, если диван удобнее? - person Javier; 15.04.2010
comment
@ Хавьер, садись на стул и кушетку. Я иду спать :) - person orokusaki; 15.04.2010
comment
@orokusaki; вы можете легко не знать, что хэши используются вне соображений безопасности. Поскольку вы должны были разъяснить это обоим людям, которые напечатали для вас ответ, кажется очевидным, что вы не были достаточно ясны в первый раз. - person Dean J; 15.04.2010
comment
@Dean J Верно, но также стоит отметить, что большинство населения не знает первую строчку конституции, но она предназначена для тех, кто ее читает. - person orokusaki; 15.04.2010
comment
Ссылка на статью boston.com о том, почему смена паролей теперь скрыта за стеной платежеспособности. Вот альтернатива npr: npr.org/templates/story/story. php? storyId = 125914112 - person slm; 30.01.2012

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

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

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

person Dean J    schedule 14.04.2010