SHA512 против Blowfish и Bcrypt [закрыто]
Я смотрю на алгоритмы хэширования, но не могу найти ответ.
- Bcrypt использует Blowfish
- Blowfish лучше, чем MD5
- Q: но Blowfish лучше, чем SHA512?
спасибо..
обновление:
Я хочу уточнить, что я понимаю разницу между хэширования и шифрования. Что побудило меня задать вопрос таким образом в этой статье,где автор ссылается на осуществляется как "адаптивное хеширование"
поскольку bcrypt основан на Blowfish, я был вынужден думать, что Blowfish-это алгоритм хэширования. Если это шифрование, как указали ответы, то мне кажется, что ему не должно быть места в этой статье. Хуже всего то, что он заключает, что bcrypt является лучшим.
Меня также смущает то, что класс phpass (используемый для хэширования паролей, я считаю) использует bcrypt (т. е. blowfish, т. е. шифрование). Исходя из этого новая информация, которую вы, ребята, говорите мне (blowfish-это шифрование), этот класс звучит неправильно. Я что-то упустил?
6 ответов:
достаточно сказать, является ли bcrypt или SHA-512 (в контексте соответствующего алгоритма, такого как PBKDF2)достаточно. И ответ да, любой алгоритм достаточно безопасен, что нарушение произойдет через недостаток реализации, а не криптоанализ.
Если вы настаиваете на том, чтобы знать, что "лучше", SHA-512 имел углубленные обзоры NIST и других. Это хорошо, но были признаны недостатки, которые, хотя и не эксплуатируются сейчас, привели к SHA-3 конкурс на новые хэш-алгоритмы. Кроме того, имейте в виду, что изучение хэш-алгоритмов "новее", чем у шифров, и криптографы все еще изучают их.
несмотря на то, что bcrypt в целом не имел такого пристального внимания, как сам Blowfish, я считаю, что основанный на шифре с хорошо понятной структурой дает ему некоторую внутреннюю безопасность, которой не хватает для аутентификации на основе хэша. Кроме того, проще использовать общие графические процессоры в качестве инструмента для атаки хэшей на основе SHA-2; из-за своих требований к памяти, оптимизируя bcrypt требует более специализированного оборудования как FPGA с некоторым бортовым RAM.
Примечание: bcrypt-это алгоритм, который использует Blowfish внутри. Это не сам алгоритм шифрования. Он используется для необратимого затемнения паролей, так же как хэш-функции используются для выполнения "одностороннего хэша".
криптографические хэш-алгоритмы разработаны так, чтобы их невозможно было отменить. Другими словами, задается только вывод хэша функция, это должно занять "навсегда", чтобы найти сообщение, которое будет производить тот же хэш-выход. Фактически, должно быть вычислительно невозможно найти любые два сообщения, которые производят одно и то же хэш-значение. В отличие от шифра, хэш-функции не параметризуются с помощью ключа; один и тот же вход всегда будет производить один и тот же выход.
Если кто-то имеет пароль, хеш значение, хранящееся в таблице паролей, они проходят проверку подлинности. В частности, из-за необратимости хэш-функция, предполагается, что пользователь не является злоумышленником, который завладел хэшем и перевернул его, чтобы найти рабочий пароль.
Теперь рассмотрим, осуществляется. Он использует Blowfish для шифрования магической строки, используя ключ "производный" от пароля. Позже, когда пользователь вводит пароль, ключ извлекается снова, и если зашифрованный текст, созданный шифрованием с помощью этого ключа, соответствует сохраненному зашифрованному тексту, пользователь аутентифицируется. Зашифрованный текст хранится в таблице "пароль", но производный ключ никогда не сохраняется.
чтобы взломать криптографию здесь, злоумышленник должен будет восстановить ключ из зашифрованного текста. Это называется атакой "известного открытого текста", так как атака знает магическую строку, которая была зашифрована, но не используемый ключ. Blowfish был тщательно изучен, и до сих пор не известно ни одной атаки, которая позволила бы злоумышленнику найти ключ с одним известным открытым текстом.
Так же, как и необратимые алгоритмы на основе криптографии переваривает, bcrypt производит необратимый выход, от пароля, соли и фактора стоимости. Его сила заключается в сопротивлении Blowfish известным атакам открытого текста, что аналогично "первой атаке перед изображением" на алгоритме дайджеста. Так как он может быть использован вместо хэш-алгоритм для защиты паролей bcrypt смутно упоминается как сам алгоритм "хэш".
предполагая, что радужные таблицы были сорваны правильным использованием соли, любой действительно необратимый функция сводит злоумышленника к методу проб и ошибок. И скорость, с которой злоумышленник может проводить испытания, определяется скоростью этого необратимого "хэш-алгоритма". Если используется одна итерация хэш-функции, злоумышленник может сделать миллионы проб в секунду, используя оборудование, которое стоит порядка $ 1000, проверяя все пароли длиной до 8 символов за несколько месяцев.
Если, однако, выход дайджеста "кормится назад" тысячи времен, то он примет сотни лет для того чтобы испытать тот же набор паролей на этом оборудовании. Bcrypt достигает того же эффекта" усиления ключа", повторяя внутри своей процедуры вывода ключа, и правильный метод на основе хэша, такой как PBKDF2, делает то же самое; в этом отношении два метода похожи.
Итак, моя рекомендация bcrypt исходит из предположений 1) что Blowfish имеет такой же уровень проверки, как семейство хэш-функций SHA-2, и 2) что криптоаналитические методы для шифров лучше развиты, чем те, что для хэш-функций.
Я согласен с ответом Эриксона, с одной оговоркой: для целей аутентификации пароля bcrypt is далеко лучше, чем одной итерации из SHA-512-просто потому, что он намного медленнее. Если вы не понимаете, почему медлительность является преимуществом в этой конкретной игре, прочитайте статью, на которую вы ссылаетесь снова (прокрутите вниз до "скорость-это именно то, что вы не хотите, чтобы хэш-функция пароля.").
вы можете, конечно, построить безопасный пароль хэширования алгоритм вокруг SHA-512, повторяя его тысячи раз, так же, как работает алгоритм MD5 PHK. Ульрих Дреппер сделал именно это, для крипты glibc (). Однако нет особой причины делать это, если у вас уже есть протестированная реализация bcrypt.
Blowfish-это не алгоритм хэширования. Это алгоритм шифрования. Это означает, что вы можете зашифровать что-то с помощью blowfish, а затем позже вы можете расшифровать его обратно в обычный текст.
SHA512-это алгоритм хеширования. Это означает, что (в теории) после того, как вы хэш-Вход вы не можете вернуть исходное обратно.
Это 2 разные вещи, предназначенные для использования для разных задач. Нет никакого "правильного" ответа на " это blowfish лучше чем криптография SHA512?" вы могли бы также спросить "разве яблоки лучше кенгуру?"
Если вы хотите прочитать еще по теме вот некоторые ссылки:
Blowfish не лучше, чем MD5 или SHA512, так как они служат разным целям. MD5 и SHA512-это алгоритмы хэширования, Blowfish-это алгоритм шифрования. Две совершенно разные криптографические функции.
Я бы рекомендовал реализацию крипты на основе SHA-256/SHA-512 Ульриха Дреппера.
мы портировали эти алгоритмы на Java, и вы можете найти свободно лицензионную версию их в ftp://ftp.arlut.utexas.edu/java_hashes/.
обратите внимание, что большинство современных (L)Юнисов поддерживают алгоритм Drepper в своих /etc/shadow файлах.
Я только что наткнулся на это:
http://codahale.com/how-to-safely-store-a-password/
может ли автор этой статьи ошибаться?
Comments