什么是GPG密钥更好的-RSA或DSA?


58

ssh-keygen默认情况下创建RSA密钥,但gpg --gen-key更喜欢DSA / ElGamal。

哪一种-RSA或DSA-更适合GPG?


1
另请参阅此StackOverflow问题以及对该问题重复副本的回答,该问题讨论了为什么 RSA在2010年以及今天已知的漏洞(所有这些都针对DSA)中比DSA安全得多。
亚当·卡兹

Answers:



25

RSA和DSA-误解和有用的信息
有一些较旧的 RSA参考文献和最新的 DSA参考文献,


2003年,RSA VS DSA签名-得主是... - RSA

因此,基本上,对于DSA而言,密钥生成的速度快得令人难以置信,如果您了解算法,这是有道理的。DSA的签名也更快,但幅度不大。RSA的强大优势是验证比DSA快得多

IETF的最新草案:用于DNSSEC的具有SHA-2的DSA,将于2010
年1月7日到期。它具有今天推动RSA上的DSA的某些原因。

与使用2048位密钥的RSA与SHA-256结合使用时,在DNSSEC中将SHA-256与DSA结合使用具有某些优点缺点DSA签名比RSA签名短得多;在此大小下,差异为512位与2048位。在使用2048位密钥的典型平台上,签名DSA的速度比RSA快三倍,但是验证RSA签名的速度比DSA快十倍以上

当DSA公钥和RSA公钥大小相同时,通常认为DSA的加密强度与RSA等效。如果发现新的攻击可以更好地与一种或其他算法配合使用,那么这种评估当然会在将来发生变化。

当前没有针对此文档选择的特定DSA参数集的已知攻击。当然,这种评估将来可能会改变。

但是,这只是目前的草案

每个人都喜欢RSA(!)的验证速度。



6

引用论坛讨论

我的建议是使用RSA签名密钥(“主”或“主”密钥)和RSA子密钥进行加密。使用RSA进行签名的原因主要是因为RSA允许您使用比DSA更大的哈希。DSA2还允许您使用更大的散列,但是与DSA2相比,支持RSA的时间更长。

我认为,如果您以标准方式使用它(即您不对大量数据进行加密),那么两者都会做得很好。

我个人选择RSA是因为我已经学习了算法,并且它是我见过的最漂亮的算法之一。


4

从DSS的当前版本开始,也可以使用SHA-2算法。但我无法确定GPG遵循哪个修订版。

关于当前的DSS规范(FIPS-186-3,第i页),可以使用SHS(FIPS-180-3,第iv页)中指定的任何哈希函数:

DSS:

FIPS批准的数字签名算法应与SHS中指定的适当哈希函数一起使用。

SHS:

该标准规定了五个安全哈希算法-SHA-1,SHA-224,SHA-256,SHA-384和SHA-512,用于计算电子数据(消息)的压缩表示。


问题是:两种算法都基于不被证明是安全的数学问题(RSA使用因数分解的问题,DSA使用离散对数问题),您不能说一个比另一个更安全,因为不是一个问题也没有解决。

但是,通过pgs已经说过,通过将DSA与SHA-1一起使用,您可能会遇到安全问题。


1

事实是,这对您可能并不重要:)作为准备生成密钥对的一部分,以及维护现有密钥对的一部分-无论您选择哪种非对称加密,您都应:1)检查当前推荐的密钥长度2)选择一个基数/模数来优化签名或验证-取决于将要执行的操作(应该优化用于发行TLS / SSL服务器证书的密钥,因为每个Web浏览器都会检查签名) ...用于签名软件的密钥也应进行类似的优化)3)确保您的密钥已过期-几年来一直使用同一密钥进行ssh-auth,即使您选择了密钥,也可能是重新生成密钥的时候了尺寸对于今天的应用仍然是合理的。

RSA和DSA都经过了实质性评估;如果您使用的是可实现的代码库(RSAREF,RSA commercial,Mozilla / Netscape,Microsoft,OpenSSL等),那么您可能不关心使用哪种密码系统,只要您正确使用并使用当前的最佳实践即可。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.