ПОЧЕМУ ИСПОЛЬЗОВАТЬ SHA1 для хеширужных секретов, когда SHA-512 более безопасен?

StackOverflow https://stackoverflow.com/questions/2640566

  •  27-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top