DSA和RSA有什么区别?


Answers:


27

引用,https: //web.archive.org/web/20140212143556/http: //courses.cs.tamu.edu: 80/ pooch/ 665_spring2008/ Australian-sec-2006/less19.html

RSA
RSA加密和解密是可交换的,
因此在
给定RSA方案{(e,R),(d,p,q)}的情况下
,可以将其直接用作数字签名方案,以对消息M进行签名,计算:
S = M power d (mod R)
以验证签名,计算:
M = S power e(mod R)= M power ed(mod R)= M(mod R)

只需简单地颠倒使用指数的顺序即可将RSA用于加密和数字签名:秘密指数(d)创建签名,公共指数(e)供任何人验证签名。其他所有内容都是相同的。

DSA(数字签名算法)
DSA是ElGamal的一种变体,Schnorr算法创建了320位签名,但是512-1024位的安全性再次取决于计算离散对数的难度,这一点已被广泛接受

DSA密钥生成
首先是全球共享的选择键值(p,q,g):
选择一个大质数p = 2幂L
,其中L = 512至1024位,并且是64的倍数,
选择q,一个p-1的160位质数因数
选择g = h 每个
h1的幂(p-1)/ q ,
然后每个用户选择一个私钥并计算其公钥:
选择x计算y = g幂x(mod p)

DSA密钥生成与El Gamal有关,但比El Gamal更复杂。主要是因为使用了辅助的160位模数q,以帮助加快计算速度并减小结果签名的大小。

DSA签名创建和验证

以对消息进行
签名M生成随机签名密钥k,k计算
r =(g功率k(mod p))(mod q)
s = k-1.SHA(M)+ xr(mod q)
发送带有消息

以验证签名的签名(r,s),计算:
w = s-1(mod q)
u1 =(SHA(M).w)(mod q)
u2 = rw(mod q)
v =(g幂u1.y次幂u2(mod p))(mod q)
如果v = r则签名被验证

签名创建再次类似于ElGamal,使用每条消息的临时签名密钥k,但首先计算calc mod p,然后进行mod q以减小结果的大小。注意,哈希函数SHA的使用在这里是明确的。验证还包括比较两个计算,这又比El Gamal复杂一点,但与El Gamal有关。
请注意,几乎所有计算都是mod q,因此速度更快。
但是,与RSA相比,DSA只能用于数字签名

DSA安全性不仅
DSA中,在许多方案(任何需要选择随机数的方案)中都存在一个阈下信道。它强调了对“系统安全性”的需求,而不仅仅是一个好的算法。


您引用的链接已断开
Paul Wintz'May

82

在下面查看AVA的答案

我的旧答案似乎有误


那是否意味着如果要加密的数据量很大,使用RSA可以更快地运行?
WilliamKF

2
不,相反。DSA的签名速度更快(数学上或多或少等于加密),因此,如果您必须进行大量加密并经常解密,则DSA更快。
亨利

许多数据要在客户端进行加密,但只能在服务器上解密一次,因此DSA仍然可以胜出吗?
WilliamKF 2010年

30
DSA不加密。重复一次,DSA不加密。这是一个测验:DSA中的“ S”是什么意思?
总统詹姆斯·波尔克(James K. Polk)2010年

4
@GregS RSA能够加密与DSA不能加密主要是术语问题。我们称几种不同的算法为RSA,其中一些为符号(例如RSA-PSS),某些为加密(例如RSA-OAEP)。但是,我们给基于组的加密中的每个算法都赋予了不同的名称,调用了一种加密算法ElGamal加密,并调用了一种签名算法DSA。
CodesInChaos

24

顺便说一句,您不能使用DSA加密,只能签名。尽管它们在数学上是等效的(或多或少),但实际上您不能将DSA用作加密方案,而只能用作数字签名方案。


20

参考man ssh-keygen,DSA密钥的长度严格限制为1024位,以保持与NIST的FIPS 186-2兼容。但是,理论上可以使用更长的DSA密钥。FIPS 186-3明确允许它们。此外,使用1024位长的RSA或DSA密钥不再能保证安全性。

总而言之,当前最好使用2048位RSA密钥。

需要采取的更多预防措施

建立安全的SSH连接不仅仅需要选择安全的加密密钥对技术。鉴于爱德华·斯诺登(Edward Snowden)的国家安全局(NSA)启示,人们必须比以前认为足够的警惕性更高。

仅举一个例子,使用安全密钥交换算法同样重要。这是当前最佳的SSH强化实践的很好概述。


一些较旧的版本也ssh-keygen允许使用其他位大小的密钥(我自己使用ssh-keygen在RHEL上生成的2048位DSA密钥)。
Samveen

6

并且除了上述不错的答案。

  • DSA使用离散对数。
  • RSA使用整数分解。

RSA代表Ron R ivest,Adi S hamir和Leonard A dleman。

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.