DSA和RSA有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DSA和RSA有什么区别?相关的知识,希望对你有一定的参考价值。

它们似乎都是需要公钥和私钥的加密算法。为什么我会选择一个与另一个在我的客户端服务器应用程序中提供加密?

答案

引用,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次幂d(mod R) 验证签名,计算: M = S power e(mod R)= M power e.d(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 power(p-1)/ q 对于任何h1 然后每个用户选择一个私钥并计算他们的公钥: 选择x compute y = g power x(mod p) DSA密钥生成与El Gamal相关,但有点复杂。主要是因为使用辅助160位模数q来帮助加速计算并减小所得签名的大小。

DSA签名创建和验证 签署消息M. 生成随机签名密钥k,k compute r =(g power k(mod p))(mod q) s = k-1.SHA(M)+ x.r(mod q) 发送带有消息的签名(r,s) 验证签名,计算: w = s-1(mod q) u1 =(SHA(M).w)(mod q) u2 = r.w(mod q) v =(g power u1.y power u2(mod p))(mod q) 如果v = r则验证签名

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

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

另一答案

检查AVA's answer below

我的老答案似乎不对

另一答案

顺便说一下,你不能用DSA加密,只能签名。虽然它们在数学上是等效的(或多或少),但您不能在实践中将DSA用作加密方案,仅作为数字签名方案。

另一答案

参考man ssh-keygen,DSA密钥的长度仅限于1024位,以保持与NIST的FIPS 186-2兼容。尽管如此,理论上可以使用更长的DSA密钥; FIPS 186-3明确允许它们。此外,1024位长RSA或DSA密钥不再保证安全性。

总之,2048位RSA密钥是目前最好的选择。

更多的预防措施

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

仅举一个例子,使用安全密钥交换算法同样重要。这是当前best SSH hardening practices的一个很好的概述。

另一答案

除了以上不错的答案。

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

RSA代表Ron Rivest,Adi Shamir和Leonard Adleman。

以上是关于DSA和RSA有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

理解OpenSSH的RSA和DSA认证过程

OpenSSH的RSA/DSA密钥认证系统

RSA DSA

RSA/DSA 密钥的工作原理

实现免密码输入 ssh 登录

openssl speed和openssl rand