Морская рыба в строительстве Меркле-Дамгард? - PullRequest
2 голосов
/ 20 февраля 2011

Существует ли библиотека, которая использует Blowfish в построении Меркля-Дамгарда для построения криптографического хэша?Меня не интересует хеширование паролей, а криптографический хэш общего назначения.(В приложении, где мы уже используем Blowfish.)

Ответы [ 2 ]

3 голосов
/ 21 февраля 2011

Свертывание собственного крипто-кода - ОЧЕНЬ ОЧЕНЬ ПЛОХАЯ идея. Прочитайте, повторите это громко, сделайте это снова.

Особенно для хэш-функций.Криптографы по всему миру в настоящее время находятся в процессе разработки новой хеш-функции в рамках конкурса SHA-3 .Он начался в 2007 году, предположительно закончится в 2012 году, и несколько десятков (более вероятно, сотен) умных людей, которые специализируются на криптографическом дизайне (читай: PhD и более), усердно работают над этим.Предполагая, что вы можете самостоятельно в течение нескольких недель добиться большего успеха, чем все эти люди в течение пяти лет, грани нелепости.Оказывается, создание защищенной хеш-функции - сложная проблема (с теоретической точки зрения мы даже не знаем, может ли реально существовать защищенная хеш-функция).Создать защищенный блочный шифр довольно просто.

Разработчик Blowfish (Брюс Шнайер) - один из разработчиков Skein , одного из кандидатов на SHA-3.Обратите внимание, что он не использовал Blowfish для этого.Обратите внимание, что он также опубликовал в 1998 году блочный шифр Twofish , который является кандидатом на процесс выбора AES, как весьма продвинутый преемник Blowfish;Twofish был гораздо более тщательно изучен, чем Blowfish, поэтому даже для симметричного шифрования вы не должны использовать Blowfish, а Twofish (или, что еще лучше, использовать AES, также известный как «Rijndael», который предпочтительнее, чем Twofish).

1 голос
/ 21 февраля 2011

Blowfish проблематично использовать в качестве функции сжатия хеша по нескольким причинам.:

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

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

Если вы не останетесь без внимания, посмотрите конструкции хеша с двойной длиной блока, такие как Tandem Davies-Meyer и В ряд Дэвис-Мейер .Однако я бы настоятельно предложил бы использовать вместо этого реализацию функции из семейства SHA-2 - их также легко найти, они быстры и считаются безопасными.Вы ничего не получите, повторно используя Blowfish в качестве хэш-функции.

...