SHA512 против Blowfish и Bcrypt

Я ищу алгоритмы хеширования, но не нашел ответа.

  • Bcrypt использует Blowfish
  • Blowfish лучше, чем MD5
  • Q: но Blowfish лучше, чем SHA512?

Благодаря..

Обновить:

Я хочу уточнить, что я понимаю разницу между хешированием и шифрованием. То, что побудило меня задать вопрос таким образом, – это статья , в которой автор ссылается на bcrypt как «адаптивное хеширование»,

Поскольку bcrypt основан на Blowfish, мне приходилось думать, что Blowfish – это алгоритм hashирования. Если это шифрование, как указывали ответы, то мне кажется, что в этой статье не должно быть места. Хуже всего то, что он заключает, что bcrypt – лучший. Что меня сейчас путает, так это то, что class phpass (используемый для hashирования паролей, который я считаю) использует bcrypt (т.е. blowfish, т.е. шифрование). Основываясь на этой новой информации, вы, ребята, говорите мне (blowfish – это шифрование), этот class звучит неправильно. Я что-то упускаю?

    6 Solutions collect form web for “SHA512 против Blowfish и Bcrypt”

    Достаточно сказать, достаточно ли bcrypt или SHA-512 (в контексте соответствующего алгоритма, такого как PBKDF2). И ответ «да», либо алгоритм достаточно безопасен, что нарушение будет происходить через недостаток реализации, а не криптоанализ.

    Если вы настаиваете на том, чтобы узнать, что «лучше», SHA-512 провела глубокие обзоры NIST и других. Это хорошо, но недостатки были признаны, что, пока они не используются, привели к конкуренции SHA-3 за новые алгоритмы хеширования. Кроме того, имейте в виду, что изучение алгоритмов хеширования является «более новым», чем изучение шифров, и криптографы все еще узнают о них.

    Несмотря на то, что в целом в bcrypt не так много внимания, как Blowfish, я считаю, что основанный на шифре с хорошо понятной структурой дает ему некоторую неотъемлемую безопасность, которой не хватает hash-аутентификация. Кроме того, проще использовать обычные графические процессоры в качестве инструмента для атаки на hashи на основе SHA-2; из-за требований к памяти, для оптимизации bcrypt требуется более специализированное оборудование, например, FPGA с некоторым встроенным ОЗУ.


    Примечание. Bcrypt – это алгоритм, который использует Blowfish внутренне. Это не алгоритм шифрования. Он используется для необратимого скрытия паролей, так же как хеш-функции используются для «одностороннего hashа».

    Криптографические алгоритмы хеширования не могут быть отменены. Другими словами, учитывая только вывод hash-функции, он должен «навсегда» найти сообщение, которое будет выдавать один и тот же hash-вывод. На самом деле, должно быть вычислительно невозможно найти любые два сообщения, которые производят одно и то же значение hash-функции. В отличие от шифрования хеш-функции не параметризуются ключом; тот же вход всегда будет выводить один и тот же вывод.

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

    Теперь рассмотрим bcrypt. Он использует Blowfish для шифрования магической строки, используя ключ «полученный» из пароля. Позже, когда пользователь вводит пароль, ключ выводится снова, и если зашифрованный текст, созданный путем шифрования с этим ключом, совпадает с сохраненным зашифрованным текстом, пользователь аутентифицируется. Зашифрованный текст сохраняется в таблице «пароль», но производный ключ никогда не сохраняется.

    Чтобы разбить криптографию здесь, злоумышленнику придется восстановить ключ из зашифрованного текста. Это называется атакой «известного-открытого текста», поскольку атака знает магическую строку, которая была зашифрована, но не используется ключ. Blowfish изучен широко, и пока не известно об атаках, которые позволили бы злоумышленнику найти ключ с одним известным открытым текстом.

    Таким образом, как и криптографические дайджесты, основанные на необратимых алгоритмах, bcrypt выводит необратимый результат: пароль, соль и коэффициент затрат. Его сила заключается в устойчивости Blowfish к известным атакам открытого текста, что аналогично «первой предварительной атаке изображения» на алгоритме дайджеста. Поскольку он может быть использован вместо алгоритма hashирования для защиты паролей, bcrypt путано называют «hash-алгоритмом».

    Предполагая, что радужные столы были сорваны путем правильного использования соли, любая действительно необратимая функция уменьшает атакующего до проб и ошибок. И скорость, которую атакующий может совершать, определяется скоростью этого необратимого алгоритма «hash». Если используется одна итерация хеш-функции, злоумышленник может производить миллионы испытаний в секунду с использованием оборудования стоимостью порядка 1000 долларов США, проверяя все пароли длиной до 8 символов в течение нескольких месяцев.

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

    Итак, моя рекомендация по bcrypt проистекает из предположений 1), что Blowfish имеет такой же уровень контроля, что и семейство hash-функций SHA-2, и 2) что криптоаналитические методы для шифров лучше развиты, чем для hash-функций.

    Я согласен с ответом Эриксона с одной оговоркой: для проверки подлинности с паролем, bcrypt намного лучше, чем одна итерация SHA-512, просто потому, что она намного медленнее. Если вы не понимаете, почему медленность является преимуществом в этой конкретной игре, прочитайте статью, к которой вы привязались снова (прокрутите вниз до « Скорость – это именно то, чего вы не хотите в hash-функции пароля »).

    Вы можете, конечно, создать алгоритм hashирования безопасного пароля вокруг SHA-512, повторив его тысячи раз, точно так же, как работает алгоритм MD5 MD5. Ульрих Дреппер сделал именно это , для glrypt crypt (). Однако нет особых причин для этого, если у вас уже есть проверенная реализация bcrypt.

    Blowfish не является алгоритмом hashирования. Это алгоритм шифрования. Это означает, что вы можете зашифровать что-то с помощью blowfish, а затем позже вы можете расшифровать его обратно до обычного текста.

    SHA512 является алгоритмом хеширования. Это означает, что (теоретически) после ввода ввода вы не сможете вернуть исходный вход снова.

    Это две разные вещи, предназначенные для разных задач. Не существует «правильного» ответа на вопрос: «это лучшая волна, чем SHA512?» Вы могли бы также спросить: «Яблоки лучше, чем кенгуру?»

    Если вы хотите прочитать еще кое-что по теме, вот некоторые ссылки:

    • Blowfish
    • SHA512

    Blowfish не лучше, чем MD5 или SHA512, поскольку они служат различным целям. MD5 и SHA512 являются алгоритмами hashирования, Blowfish – алгоритм шифрования. Две совершенно разные криптографические функции.

    Я бы порекомендовал реализацию шифрования на основе SHA-256 / SHA-512 на основе Ulrich Drepper.

    Мы перенесли эти алгоритмы на Java, и вы можете найти их свободно лицензированную версию на ftp://ftp.arlut.utexas.edu/java_hashes/ .

    Обратите внимание, что большинство современных (L) Unices поддерживают алгоритм Дреппера в файлах / etc / shadow.

    Я просто натолкнулся на это:

    http://codahale.com/how-to-safely-store-a-password/

    Может ли автор этой статьи ошибиться?

    Давайте будем гением компьютера.