这可能是一个愚蠢的问题,但我到目前为止还没有找到答案......
我前段时间创建了一个密钥对,我可以看到
ls -l ~/.gnupg
-rw------- 1 xxx xxx 7912 sept. 24 20:08 gpg.conf
-rw------- 1 xxx xxx 1202 oct. 11 2014 pubring.gpg
-rw------- 1 xxx xxx 600 sept. 24 20:40 random_seed
-rw------- 1 xxx xxx 2580 oct. 11 2014 secring.gpg
-rw------- 1 xxx xxx 1280 oct. 11 2014 trustdb.gpg
因为secring.gpg
是 2580 位,所以我猜我有一个 2048 位密钥。
maven-gpg 插件证实了这一点,因为当我使用它时,它会记录
You need a passphrase to unlock the secret key for
user: xxx
2048-bit RSA key, ID 0F1F7C52, created 2014-10-11
但是,找到密钥长度的规范方法是什么?及其相关算法是什么?
答案1
但是,找到密钥长度的规范方法是什么?及其相关算法是什么?
您已经将其打印在屏幕上,尽管规范的方法是使用提供类似的输出来打印密钥列表gpg --list-secret-keys
(这稍微取决于所使用的 GnuPG 版本)。
2048-bit RSA key, ID 0F1F7C52, created 2014-10-11
您正在使用 2048 位 RSA 密钥。
算法很重要,有些算法需要更大的密钥才能达到相当的安全性,因为它们建立在不同的数学问题上。例如,RSA 需要相当与 DSA 相比,密钥较大(1024 位 DSA 密钥被认为没问题,而 1024 位 RSA 密钥则稍小),但受弱熵的影响较小。椭圆曲线加密提供“每位更高的安全性”,但比 RSA 和 DSA 更新,且有发烧分析经验。
由于 secring.gpg 是 2580 位,所以我猜我有一个 2048 位密钥。
其实不是,是 2580字节,所以你偏离了第 8 个因素。secring 不仅包含秘密主密钥,还包含
- 公钥(始终存储在 OpenPGP 中的密钥包中)
- 秘密子密钥包
- 子密钥的绑定签名
- 带有自签名的用户 ID 数据包
- 用户属性(目前只有使用该数据包的图像)
如果您好奇,您可以使用列出该文件中包含的所有数据包gpg --list-packets ~/.gnupg/secring.gpg
。
答案2
检测显示OpenPGPjs私钥长度位
# gpg --import your_armored.key
# gpg --list-secret-keys
/root/.gnupg/secring.gpg
------------------------
sec 4096R/1254E55E 2018-03-13
uid Hey <[email protected]>
ssb 4096R/BWC45268 2018-03-13
4096R 其 4096 位