用 `$ openssl enc --help` 看到的各种密码方法解释命名

信息安全 密码学 加密
2021-08-14 19:05:24

我对这种多样性感到困惑,也许在这里概述。我试图理解约定。

趋势A:实力?

$2^8$, $2^7$ -- 看起来很清楚,但为什么要使用 192 或 40 进行算法呢?指的是同样的问题?它是吗?

趋势B:背景?

埃斯?desx, des 但有 x? 有没有一些母算法?主要名称:aes、des 和 rc,为什么?

趋势 C:结局

.*cbf, .*ofb, .*cbc——共同的结尾是什么意思?

趋势D:单数奇数

数字结尾如 1 或 8 是什么意思?

趋势 E:奇怪的臃肿

为什么用 bf 和河豚来膨胀?历史遗产?

$ openssl enc --help
-aes-128-cbc               -aes-128-cfb               -aes-128-cfb1
-aes-128-cfb8              -aes-128-ecb               -aes-128-ofb
-aes-192-cbc               -aes-192-cfb               -aes-192-cfb1
-aes-192-cfb8              -aes-192-ecb               -aes-192-ofb
-aes-256-cbc               -aes-256-cfb               -aes-256-cfb1
-aes-256-cfb8              -aes-256-ecb               -aes-256-ofb
-aes128                    -aes192                    -aes256
-bf                        -bf-cbc                    -bf-cfb
-bf-ecb                    -bf-ofb                    -blowfish
-cast                      -cast-cbc                  -cast5-cbc
-cast5-cfb                 -cast5-ecb                 -cast5-ofb
-des                       -des-cbc                   -des-cfb
-des-cfb1                  -des-cfb8                  -des-ecb
-des-ede                   -des-ede-cbc               -des-ede-cfb
-des-ede-ofb               -des-ede3                  -des-ede3-cbc
-des-ede3-cfb              -des-ede3-cfb1             -des-ede3-cfb8
-des-ede3-ofb              -des-ofb                   -des3
-desx                      -desx-cbc                  -rc2
-rc2-40-cbc                -rc2-64-cbc                -rc2-cbc
-rc2-cfb                   -rc2-ecb                   -rc2-ofb
-rc4                       -rc4-40
2个回答

OpenSSL 文档中有这些含义的列表

它们似乎显示为算法名称-密钥大小-加密模式当省略密钥大小时,似乎意味着该算法只有一个有效的密钥大小,因此包含它没有意义。

如果您实际上是在尝试选择一种算法,您可能需要AES(标准)和 OpenSSL 的默认CBC 模式(比ECB更安全)。

算法名称

有些名称中有数字以区分版本。例如,RC2RC4都是由 Ron Rivest 制造的,而 RC4 是更新的。您在哈希算法中看到类似的东西,其中 MD4 被 MD5 替换(并且 MD6 正在进行中)。

他们似乎更喜欢河豚的“bf”,所以我猜这-blowfish可能是为了方便或向后兼容。

DESX显然是一种基于DES的算法,但具有更大的密钥大小。

关键尺寸

密钥大小以位为单位,通常更长的密钥更强,但用它加密会更慢。因此,具有 128 位密钥的 AES 比具有 256 位密钥的 AES 更快,但安全性较低。

大多数算法似乎使用 2 的幂作为密钥大小,但没有什么要求它们这样做。例如,DES 使用 56 位密钥。

加密方式

加密模式是我不太了解的东西,无法解释。你应该看看维基百科的文章

某些加密模式末尾的 1 或 8 指定密码反馈中使用的位数

RE 192, 40: 192 是 128 + 64,所以我想这是大小和二次幂之间的权衡。40 可能是历史/向后兼容的:直到 90 年代的某个时候(我相信;我今年可能错了)美国有一项法律规定,使用超过 40 位的密钥实现加密的软件出口是非法的。

AES 是“高级加密标准”,DES 是“数据加密标准”,维基百科说“RC”来自“Ron's Code”(如 RSA 的发明者 Ron Rivest)

结尾是分组密码的操作模式。本质上,数据被分成块。CBC 是“密码块链接”,OFB 是“输出反馈”,CFB 是“密码反馈”。你可以在这里阅读更多:http ://en.wikipedia.org/wiki/Block_cipher_modes_of_operation

我不确定(例如)-aes-128-cfb 和 -aes-128-cfb1 之间有什么区别:可能是一个小的变化,他们想要同时支持两者?

最后一点:我想各种各样的算法主要是为了兼容性。不同的算法对不同的场景更好,这就是为什么有这么多在使用,他们希望尽可能多地兼容,我猜。

希望这可以帮助!