openssl blowfish 密钥限制为 256 位?

openssl blowfish 密钥限制为 256 位?

如果我提供的密钥大于 64 个十六进制字符(64*4=256 位),则会出现以下错误。

在此处输入图片描述

根据这个官方文件,blowfish能够支持32到448位的密钥。

可变密钥长度:32 位至 448 位

是否有可能绕过此限制?出了什么问题?

实际密钥大小足够大,但我希望尽可能地提高安全性。

谢谢,

答案1

虽然算法本身支持最大 448 位的可变密钥长度,而 OpenSSL 的实现限制为 256 位。我发现有几页提到了这个限制;这个有一个很好的表格: http://etutorials.org/Programming/secure+programming/Chapter+5.+Symmetric+Encryption/5.18+Using+Variable+Key-Length+Ciphers+in+OpenSSL/

答案2

256 位和 448 位对称密钥之间没有任何有意义的加密差异。任何理智的人都不会试图暴力破解 256 位 blowfish 对称密码。

这是 1999 年写的,但仍然适用:https://www.schneier.com/crypto-gram-9902.html#snakeoil

答案3

实际上,openssl 程序中有一个小错误。它允许密钥长度最大为 256 位,但实际上,blowfish 密钥只使用了前 128 位。使用更长密钥的唯一方法是使用库编写程序。

通过在 enc 中使用 -p 选项,我们可以验证所使用的密钥是否为 128 位密钥:

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

结果 :

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

我最近发现了 stackexchange 的安全网站,并问了同样的问题。Brendan 给了我以下信息回答

我应该删除这个问题吗?

相关内容