我有一个密钥长度为 DSA/1024 的 GPG 密钥。我可以创建密钥长度更大的子密钥,例如 RSA/2048。根据延斯·艾拉特这是其他人目前实践中采用的方法。
那么这真的是一种更高的安全性吗?使用 RSA/2048 主密钥的 RSA/2048 子密钥进行签名或加密与使用 DSA/1024 主密钥的 RSA/2048 子密钥进行签名或加密有什么区别吗?
我已经为我的 DSA/1024 主密钥创建了 RSA/2048 子密钥,并将它们导出以导入 Android 手机上的 OpenKeychain。但 OpenKeychain 抱怨“此密钥不安全”。OpenKeychain 是否在这里出错了,或者创建密钥长度大于主密钥的子密钥真的没有帮助吗?
答案1
正如我在链接的答案中已经指出的那样,要做出的决定是
- 失去所有认证
- 保留您的所有认证,但面临有人能够撤销您的密钥、颁发新的认证、签名和生成新密钥的风险;但至少发送到您的新加密子密钥的消息是安全的。
事实上,这不是我会采取的方法。事实上,不久前我撤销了我的旧密钥,并选择创建一个新的、更强大的密钥。
考虑到您关于 Openkeychain 警告不安全密钥的问题——这是完全正确的。如另一个答案(及以上)所述,添加子密钥不会使您的主密钥更强大——它只是为明确定义的用例增加了一些安全性。Openkeychain 对所有小于 2048 位的 RSA、DSA 和 elGamal 密钥发出警告。
DSA 密钥通常被认为存在问题,因为它们对强随机数生成器的要求很高。尤其是对于 RSA 主密钥,我会选择 4096 位大小:与必须考虑计算工作量的高流量服务器不同,OpenPGP 密钥很少使用(即使你对发送的每条消息进行签名,每天也只有几十次,而每秒有数百个请求)。