当我们在Linux/Unix系统(windows下需用git的bash工具)中通过生成ssh认证密钥时,你要(用-t type来)选择创建一对RSA或者DSA密钥。这两者之间有什么区别?是什么原因让人们选择其中一个而不选另外一个?

Go with RSA

DSA(用于数字签名算法)的签名生成速度很快,验证速度很慢,加密时更慢,但解密时速度很快,安全性与RSA密钥相等,而密钥长度相等。此为一些重要的话,现在是一些观点。

RSA算法(可用于加密和数字签名)的安全性基于这样的事实:大整数的因式分解被认为是‘难以破解’(困难的),而DSA安全性基于离散对数问题。今天已知用于分解大整数块的最快算法是通用数字场筛(可以理解为对简单合理筛或二次筛的改进算法),也是解决有限域中的离散对数问题的最快算法,该算法以DSA指定的大素数为模。

现在,如果安全性可以被认为是平等的,那么我们当然会赞成更快的算法,但是,再一次,没有明确的赢家。

如果你的计算机安装了OpenSSL,请运行。您将看到DSA在生成签名时执行的很快,但在验证具有相同密钥长度的签名时速度要慢得多。通常来说你想要验证得(速度)更快,如果你处理的是一个已签名的文件,(而如果你的)签名只生成一次,这很好,但文件签名最终可能会被用户频繁地验证(这就不好了,因为验证速度很慢)。

两者都支持某种形式的加密方法,开箱即用的RSA和使用EI GAMAL(一种基于Diffie-Hellman密钥交换的非对称加密算法)的DSA。DSA解密速度通常很快,但加密较慢,而RSA则相反。同样,您会希望解密速度更快,因为一个加密文档可能会被频繁解密。

从商业角度来看,RSA显然是赢家,商业RSA证书比DSA证书被更广泛地部署。

关键是:(当查看)说DSA密钥必须长1024位,才能符合NIST(美国国家标准技术研究院)的FIPS 186-2(数字签名标准).因此,虽然理论上可能有更长的DSA密钥(FIPS 186-2也明确允许它们),但你仍然受限于1024位。

        今天,你最好使用RSA 2048位密钥(也可以直接生成4096位的RSA密钥)

FIPS 186-4规定了三种可用于数据保护的数字签名生成和验证技术:数字签名算法(DSA),椭圆曲线数字签名算法(ECDSA)和Rivest-Shamir Adelman算法( RSA)。

后记

实际上,OpenSSH 7.0及以上版本默认禁用了ssh-dss(DSA)公钥算法。官方没有给出具体的解释,但其中可能有OpenSSH,DSA密钥位数生成的原因,同时生成签名时随机性差,可能会泄漏私钥,且以现在机算机的算力,DSA 1024-bit已经实际上可破解,建议不使用。

RSA算法与DSA算法的区别相关推荐

  1. 奇妙的安全旅行之DSA算法

    hi,大家好,我是开发者FTD.今天我们来介绍一下非对称加密算法中的DSA算法. DSA 算法简介 DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名 ...

  2. 腾讯云SSL证书RSA算法和ECC算法区别对比及选择攻略

    腾讯云SSL证书支持RSA算法和ECC算法两种,RSA算法和ECC算法有什么不同?如何选择?SSL证书大全网从密钥长度.CPU占用.内存占用.网络消耗.加密效率.抗攻击性和兼容范围来详细对比下SSL证 ...

  3. RSA算法和DH算法的区别

    同是非对称算法,非对称算法的根本原理就是单向函数,f(a)=b,但是用b很难得到a. RSA算法 RSA算法是基于大数难于分解的原理.不但可以用于认证,也可以用于密钥传输.那么用户A和B如何利用RSA ...

  4. python实现RSA数字签名(纯算法实现)

    python实现RSA数字签名(纯算法实现) 一:什么是数字签名 数字签名是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明.它是一种类 ...

  5. php dsa 签名,openssl使用DSA算法生成签名实例详解_PHP教程

    文章给大家介绍基于openssl使用DSA算法生成签名实例,生成签名方法很简单,我们需要懂得中间的原理就比较复杂了,大家一起来看看吧. 命令: openssl> dgst -dss1 -sign ...

  6. java dsa算法_DSA算法

    DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard). DSA ...

  7. 用DSA算法实现数字签名

    下面是一个在JAVA语言中,使用DSA签名算法来进行进行数字签名的一个示例. DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名算法的变种,被美国NI ...

  8. SSH无密码登录失败之DSA算法问题

    场景 A机器将自己ssh生成的dsa.pub公钥给B机器后,A机器再登陆B机器发现依旧需要输入密码. 检查~/.ssh目录和~/.ssh/*的权限均无问题 问题分析 检查B机器日志,ubuntu的ss ...

  9. dsa签名 linux_openssl使用DSA算法生成签名

    命令: openssl> dgst -dss1 -sign C.pri -out signature.bin s.txt 解释 C.pri是DSA算法生成的私钥文件 s.txt是制作签名的原文 ...

最新文章

  1. SAP Return to External Vendor
  2. 地摊经济和夜经济-国情讲坛·周荣江:城市生态谋定治理转型
  3. 打印机显示发送任务到服务器失败,G-FAX单机版操作指引-AOFAX—传真服务器.DOC
  4. 微信扫码下载iosAPP
  5. OpenVINO 部署 Mask-RCNN 实例分割
  6. 钉钉作弊,被判5年!
  7. pyspark 编写 UDF函数
  8. Linux中Docker部署Redis
  9. Audition报错:“无法应用设备设置,因为发生了以下错误:MME设备内部错误“
  10. es统计有多少个分组_ElasticSearch 分组查询的几个例子
  11. 闭合导线计算matlab代码,【求助】闭合导线简易平差Matlab代码需要大神帮忙
  12. edge浏览器怎么设置html5,win10怎么把edge浏览器设置为默认浏览器方法
  13. linux java 缓存服务器,linux服务器缓存环境memcached筹建及应用(java)
  14. matlab建立三层蒸发模型,水文模型三层蒸发模型的问题(初学者)
  15. 王者荣耀7月4号服务器维护,王者荣耀7月4日更新了什么 7月4日更新维护公告
  16. Oracle CTAS
  17. DiskGenius安装教程
  18. 绘制动态心形图案::R语言绘制心形图
  19. java宠物之王-龙灵传说,《宠物之王-龙灵传说》的流程攻略(上)
  20. C语言游戏之贪吃蛇--链表实现

热门文章

  1. 鸟类南飞,去的是哪个“南方”?
  2. 从Richard Young教授的系列研究看超级增强子发现背后的故事 (附超级增强子鉴定代码)
  3. Airflow使用入门指南
  4. 微信 for Mac 3.1.0 测试版发布(附安装包),新增「发朋友圈」功能
  5. 如何使Xcode占用更少的空间 Xcode占用空间太大解决方法
  6. vue框架可以配合php做企业站,基于Vue和PHP打造前后端分离的通用管理系统(一)...
  7. NOI入门级:基础算法 贪心法
  8. python下载邮件附件_Python - 从电子邮件附件下载excel文件然后解析它
  9. Qt工作笔记-使用hiredis连接及查询Redis
  10. Spring Boot中@ConfigurationProperties与@PropertySource的基本使用(读取指定的properties文件)