Насколько небезопасен соленый SHA1 по сравнению с соленым SHA512? - PullRequest
7 голосов
/ 18 сентября 2010

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

Ответы [ 4 ]

13 голосов
/ 20 сентября 2010

Известные в настоящее время недостатки SHA-1 не влияют на безопасность того, что вы пытаетесь сделать.Невозможность восстановить пароль из его хешированной версии зависит от «устойчивости к прообразу», которая, насколько нам известно, все еще полностью невозможна с SHA-1.Это также полностью невозможно с SHA-512, SHA-256 или даже MD4 или MD5.Научно-ориентированный разум может представить, что компьютеры смогут найти прообразы для MD4 или MD5 примерно в 2050 году;для SHA-1 это займет гораздо больше времени.

Теперь так получилось, что хотя пока не существует известного ярлыка для вычисления предизображений на SHA-1, также мало доказательств безопасности.Другими словами, если функция сжатия , используемая в SHA-1, неотличима от «случайного оракула», то она защищена от прообразов.Но известные недостатки SHA-1, которые (теоретически) приводят к столкновениям, также показывают, что его функция сжатия не является случайным оракулом.Следовательно, защита SHA-1 от прообразов больше не является «веской математической причиной, почему она не нарушает» убеждения.Это больше похоже на «Мех, я еще не нашел, как это сломать».

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

Обратите внимание, что соление полностью ортогонально этому вопросу.Соль предназначена для предотвращения распределения затрат между атаками на отдельные экземпляры паролей.Предварительно вычисленные таблицы (включая так называемые «радужные таблицы») являются своего рода совместным доступом (создание таблиц стоит дорого, но может использоваться для атаки 2, 10, 10000 паролей при незначительных дополнительных затратах на каждый атакованный пароль).Соление побеждает разделение.Солить это хорошо.Победа над совместным использованием важна, потому что возможна атака на один пароль: не из-за хэш-функции, а потому, что пароль - это то, что вписывается в человеческий мозг и поэтому поддается грубой силе («атака по словарю»).С чем-либо, связанным с паролями, у вас не возникнет проблем из-за слабых мест в хэш-функциях, а потому, что вы в первую очередь используете пароли.

5 голосов
/ 18 сентября 2010

В алгоритме SHA1 есть доказательства уязвимостей системы безопасности, которые могут привести к атаке.Я бы порекомендовал использовать вариант SHA2 (SHA 256 или SHA 512).

Что касается того, сколько времени понадобится кому-то, чтобы взломать пароль, хранящийся в переменных хешах, трудно сказать, не зная вычислительной мощностизлоумышленника, какова длина паролей, если они используют радужные таблицы, насколько случайны соли и т. д. Однако, если с алгоритмом что-то не так, это может привести к гораздо более простому способу поиска хэшированного значения илидругое значение, равное тому же хешу (называемому коллизией), как в случае MD5.

(Источник и дополнительная информация: http://en.wikipedia.org/wiki/SHA-1)

2 голосов
/ 18 сентября 2010

Если вам нужно перезаписать материал, чтобы заставить работать что-либо кроме SHA1, вам придется сбалансировать сложность переопределения материала (и повышенную вероятность ошибок) с силой алгоритма.

Если вы решитечтобы перейти к другому алгоритму хеширования, вы должны взглянуть на BCrypt.Это адаптируемый алгоритм хэширования затрат, разработанный так, чтобы быть «настолько медленным, насколько это необходимо».Это обеспечит большее увеличение необходимого времени взлома, чем SHA512.SHA512 разработан как криптографический хэш общего назначения, со скоростью, которая является одной из целей проектирования.

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

Сказав это, конечно, лучше использовать лучший из доступных алгоритмов.

1 голос
/ 18 декабря 2013

SHA1 и SH512 - это дайджесты сообщений , они были никогда , предназначенными для хэширования паролей (или получения ключей).(Хотя дайджест сообщения может использоваться в качестве стандартного блока для KDF, например, в PBKDF2 с HMAC-SHA1.)

Функция хеширования пароля должна защищать от атак по словарю и радужных таблиц.* В настоящее время единственной стандартной (как санкционировано NIST) функцией хеширования пароля или получения ключа является PBKDF2.Лучшим выбором, если использование стандарта не требуется, являются bcrypt и более новый scrypt.В Википедии есть страницы для всех трех функций:

Страница наhttps://crackstation.net/hashing-security.htm содержит подробное обсуждение безопасности пароля.

...