Назад | Перейти на главную страницу

Ключ openssl blowfish ограничен 256 битами?

Я получаю следующую ошибку, если даю ключ, длина которого превышает 64 шестнадцатеричных символа (64 * 4 = 256 бит).

Согласно этому официальный документ, blowfish может поддерживать ключ от 32 до 448 бит.

Переменная длина ключа: от 32 до 448 бит

Можно ли обойти это ограничение? В чем дело?

Фактический размер ключа достаточно велик, но я хотел бы иметь максимальную безопасность.

Спасибо,

Между 256-битным и 448-битным симметричным ключом нет значимой криптографической разницы. Никто в здравом уме не будет пытаться перебрать 256-битный симметричный шифр blowfish.

Это было написано в 1999 году, но остается верным: https://www.schneier.com/crypto-gram-9902.html#snakeoil

В то время сам алгоритм поддерживает переменную длину ключа до 448 бит, реализация OpenSSL ограничена 256 битами. Я нашел несколько страниц, посвященных этому ограничению; у этого есть хорошая таблица: http://etutorials.org/Programming/secure+programming/Chapter+5.+Symmetric+Encryption/5.18+Using+Variable+Key-Length+Ciphers+in+OpenSSL/

Собственно, в программе openssl есть небольшая ошибка. Он позволяет использовать ключ длиной до 256 бит, но на самом деле только первые 128 бит используются для ключа blowfish. Единственный способ использовать более длинный ключ - написать программу с использованием библиотеки lib.

Используя параметр -p в enc, мы можем проверить, что используемый ключ является 128-битным:

echo toto | openssl enc -bf-cbc -K 000000000000000000000000000000000000000000000000000000 -iv 0 -a -p

Результат:

salt=801D670000000000
key=00000000000000000000000000000000
iv =0000000000000000
5XAXlTvP0ZE=

Недавно я обнаружил сайт безопасности stackexchange и задал тот же вопрос. Брендан дал мне следующее ответ.

Стоит ли удалить этот вопрос?