SHA512 по сравнению с Blowfish и [закрытым] Bcrypt

Я сделал это в одном из моих проектов. Я использовал MDB для хранения данных о счетах и ​​использовал Excel для их рендеринга, предоставляя пользователю возможность адаптировать их.

В этом случае лучшее решение:

  1. Не использовать ADO / DAO в Excel . Я реализовал все как публичные функции в модулях MDB и вызывал их прямо из Excel. Вы можете возвращать даже сложные объекты данных, такие как массивы строк и т. Д., Вызывая функции MDB с необходимыми аргументами. Это похоже на архитектуру клиент-сервер современных веб-приложений: ваше веб-приложение выполняет рендеринг и взаимодействие с пользователем, база данных и средний уровень находятся на стороне сервера.

  2. Используйте формы Excel для взаимодействия с пользователем и для визуализации данных.

  3. У меня обычно есть последний лист с некоторыми областями имен для настроек: путь к файлам MDB, некоторые настройки (текущий пользователь, пароль при необходимости и т. Д.) - так что вы можете легко адаптировать свою реализацию Excel к различным местонахождение ваших "back-end" данных.

221
задан Peter Vandivier 20 July 2018 в 22:44
поделиться

5 ответов

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

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

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


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

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

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

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

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

Если, однако, дайджест выводится " и правильный метод на основе хешей, такой как PBKDF2, делает то же самое; в этом отношении эти два метода схожи.

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

и правильный метод на основе хешей, такой как PBKDF2, делает то же самое; в этом отношении эти два метода схожи.

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

318
ответ дан 23 November 2019 в 04:05
поделиться

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

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

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

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

49
ответ дан 23 November 2019 в 04:05
поделиться

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

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

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

Если вы хотите узнать больше о тема здесь несколько ссылок:

31
ответ дан 23 November 2019 в 04:05
поделиться

Blowfish не лучше, чем MD5 или SHA512, поскольку они служат для разных целей. MD5 и SHA512 - это алгоритмы хеширования, Blowfish - это алгоритм шифрования. Две совершенно разные криптографические функции.

4
ответ дан 23 November 2019 в 04:05
поделиться

Я бы порекомендовал реализацию криптографии Ульриха Дреппера на основе SHA-256 / SHA-512.

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

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

2
ответ дан 23 November 2019 в 04:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: