为什么我的 rsa 私钥中有“des-ede3-cbc”?

信息安全 密码学 openssl RSA 德斯
2021-09-08 07:40:51

我使用以下命令创建了一个 4096 位的 OpenSSL RSA 私钥和证书请求:

openssl req -newkey 4096

当我查看私钥时

openssl asn1parse -in privkey

我得到以下输出:

    0:d=0  hl=4 l=2446 cons: SEQUENCE          
    4:d=1  hl=2 l=  64 cons: SEQUENCE          
    6:d=2  hl=2 l=   9 prim: OBJECT            :PBES2
    17:d=2  hl=2 l=  51 cons: SEQUENCE          
    19:d=3  hl=2 l=  27 cons: SEQUENCE          
    21:d=4  hl=2 l=   9 prim: OBJECT            :PBKDF2
    32:d=4  hl=2 l=  14 cons: SEQUENCE          
    34:d=5  hl=2 l=   8 prim: OCTET STRING      [HEX DUMP]:XXXXXXXXX
    44:d=5  hl=2 l=   2 prim: INTEGER           :0800
    48:d=3  hl=2 l=  20 cons: SEQUENCE          
    50:d=4  hl=2 l=   8 prim: OBJECT            :des-ede3-cbc

困扰我的是 des-ede3-cbc 的部分。为什么我的 RSA 私钥中有 des-ede3-cbc?据我所知,“DES”是七十年代的加密标准,它被认为是被破坏的。

2个回答

您的私钥使用Triple DES 加密虽然 DES 很容易被破解,但 Triple DES 目前是安全的,尤其是在这种情况下。AES 被用来代替 Triple DES 并不是因为 Triple DES 被破坏了,而是因为它太慢了。在私钥加密的上下文中,这不是问题。

为什么我的 rsa 私钥中有 des-ede3-cbs?

因为你的私钥是用它加密的。

据我所知,“DES”是七十年代的加密标准,它被认为是被破坏的。

对。差不多。考虑使用 AES 重新加密它,如下所示:

$ openssl rsa -in desencryptedprivkey.pem -out aesencryptedprivkey.pem -aes128

编辑 2015-06-29:毕竟足够好
阅读布鲁诺的回答我现在意识到在默认模式下它实际上仍然是 112 位安全性。这很好。
(让我不确定的是,您可以使用 1、2 或 3 个密钥运行三重 DES。而且我不确定这真的是 3 密钥版本。但事实证明它确实是。) - 有关详细信息,请参阅 Bruno Rohée 答案下的评论。

编辑 2015-07-03:某些条款和条件可能适用正如@dave_thompson_085
的评论线程中所讨论的那样,它并不是很明确。

虽然 128 位 AES 确实优于 112 位 Triple-DES(如果只是为了速度而不是为了实际安全),但两种加密都存在弱密钥拉伸。-- 至少在 OpenSSL 中实现它的方式。

这意味着将加密密码转换为一个 128 位 AES 密钥或三个 56 位 DES 密钥的机制不是最先进的。

密钥拉伸的目的是将相对较弱的密码(例如,Asdf123!将其转换为强加密密钥)。但是 OpenSSL 使用弱密钥拉伸。

而且 AFAIK 无法传递更强的关键拉伸参数。

因此,正如 Dave 所建议的,目前最实用的建议是:考虑几乎不存在密钥拉伸,并使用非常强的密码。