SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在安全性能、速度性能等方面都优于RSA算法,在我国商用密码体系中被用来替换RSA算法。国家密码管理局于2010年12月17日发布了SM2算法,并要求现有的基于RSA算法的电子认证系统、密钥管理系统、应用系统进升级改造,使用SM2算法。

SM2算法和RSA算法简介

RSA公钥加密算法是美国计算机学家Ron Rivest、AdiShamir和Leonard Adleman于1977年提出,是最早的公钥加密算法之一,在全球范围被广泛使用。随着密码技术和计算机技术的发展,目前1024位RSA算法已经被证实存在被攻击的风险,美国NIST(国家标准技术研究院)在2010年要求全面禁用1024位RSA算法,升级到2048位RSA算法。此外,斯诺登事件爆发后,其泄露出的机密文档显示,RSA算法中可能存在NSA的预置后门,对RSA算法的安全性产生巨大影响。
SM2算法由国家密码管理局于2010年12月17日发布,是我国自主设计的公钥密码算法,基于更加安全先进的椭圆曲线密码机制,在国际标准的ECC椭圆曲线密码理论基础上进行自主研发设计,具备ECC算法的性能特点并实现优化改进。

SM2算法和RSA算法性能对比

SM2算法和RSA算法都属于公钥加密算法,但两者分别基于不同的数学理论基础。与RSA算法相比,SM2算法具有抗攻击性强、CPU 占用少、内容使用少、网络消耗低、加密速度快等特点。

1.SM2算法与RSA算法安全性能对比

RSA算法是基于大整数因子分解数学难题(IFP)设计的,其数学原理相对简单,在工程应用中比较易于实现,但它的单位安全强度相对较低。对大整数做因子分解的难度决定了RSA算法的可靠性,随着计算机运算速度的提高和分布式计算的发展,加上因子分解方法的改进,对低位数的密钥攻击已成为可能。
ECC(EllipticCurves Cryptography,椭圆曲线密码编码学)是由Koblitz和Miller两人于1985年提出,其数学基础是基于椭圆曲线上离散对数计算难题(ECDLP)。ECC算法的数学理论非常深奥和复杂,在工程应用中比较难以实现,但它的单位安全强度相对较高。用国际上公认的针对ECC算法最有效的攻击方法——Pollard rho方法去破译和攻击ECC算法,它的破译或求解难度基本上是指数级的。
因此,ECC算法的单位安全强度远高于RSA算法,可以用较少的计算能力提供比RSA算法更高的安全强度,而所需的密钥长度却远比RSA算法低。目前,基于ECC的SM2证书普遍采用256位密钥长度,加密强度等同于3072位RSA证书,远高于业界普遍采用的2048位RSA证书。
此外,为了提高安全强度必须不断增加密钥长度,ECC算法密钥长度增长速度较慢(例如:224-256-384),而RSA算法密钥长度则需呈倍数增长(例如:1024-2048-4096)。

2.SM2算法与RSA算法速度性能对比

在TLS握手过程中,更长的密钥意味着必须来回发送更多的数据以验证连接,产生更大的性能损耗和时间延迟。因此,ECC算法能够以较小的密钥和较少的数据传递建立HTTPS连接,在确保相同安全强度的前提下提升连接速度。经国外有关权威机构测试,在Apache和IIS服务器采用ECC算法,Web服务器响应时间比RSA算法快十几倍。

SM2算法的优化和先进性

SM2算法是我国基于ECC椭圆曲线密码理论自主研发设计,由国家密码管理局于2010年12月17日发布,在密码行业标准GMT 0003.1-2012 SM2 总则中推荐了一条256位曲线作为标准曲线,数字签名算法、密钥交换协议以及公钥加密算法都根据SM2总则选取的有限域和椭圆曲线生成密钥对;在数字签名、密钥交换方面区别于ECDSA、ECDH等国际算法,而是采取了更为安全的机制,提高了计算量和复杂性;在数字签名和验证、消息认证码的生成与验证以及随机数的生成等方面,使用国家密管理局批准的SM3密码杂凑算法和随机数生成器。SM3杂凑算法是我国自主设计的密码杂凑算法,安全性要高于MD5算法(128位)和SHA-1算法(160位),SM3算法的压缩函数与SHA-256具有相似结构,但设计更加复杂;SM4分组密码算法是我国自主设计的分组对称密码算法,与AES算法具有相同的密钥长度128位,在安全性上高于3DES算法,在实际应用中能够抵抗针对分组密码算法的各种攻击方法。

SM2算法的应用推广

密码算法的安全性是信息安全保障的核心,通过自主可控的国产密码技术保护重要数据的安全,是有效提升我国信息安全保障水平的重要举措。我国大力推动SM2国产密码算法替换目前所采用的RSA算法,一方面规避RSA算法存在的脆弱性和“预置后门”等安全风险,另一方面确保密码算法这一关键环节的自主可控,保障我国信息安全基础设施的安全可信。中办2018年36号文件《金融和重要领域密码应用与创新发展工作规划(2018-2022年)》以及相关法规文件均要求我国金融和重要领域密码应用采用SM2国产密码算法体系。
由于国密算法尚未实现广泛兼容,在主流浏览器、操作系统等终端环境中不受信任,面向互联网的产品应用中采用国产密码算法将无法满足可用性、易用性和全球通用性的需求,在实际应用中很难真正落地实施。那么面对这个难题,其实我国早有企业已制定比较完美的部署行动,成功帮助政企实现国密合规。

而密信APP作为全球独家支持国密SM2证书采用S/MIME国际标准和国家标准用国密算法加密邮件和数字签名邮件,当然也支持RSA邮件证书用RSA算法加密邮件和数字签名邮件。密信APP中文版默认自动配置国密SM2邮件证书,其他语言版本默认自动配置RSA邮件证书。密信APP自动获取收件人的加密证书公钥,并自动根据收件人是否有国密证书而自动采用相应的加密算法来签名和加密邮件,实现全自动自适用加密算法,满足用户的国密合规和全球信任应用需求。

RSA算法和SM2算法对比相关推荐

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

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

  2. 前端vue使用XXTEA进行对称加解密。同时对比rsa算法和xxtea算法的优缺点。

    目录: rsa和xxtea加密算法对比,以及优缺点 XXTEA算法的优缺点: RSA算法的优缺点: 前端使用XXTEA rsa和xxtea加密算法对比,以及优缺点 之前项目中使用的是RSA加密:

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

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

  4. Dijkstra算法和Floyd算法对比分析

    转载:http://blog.csdn.net/liuyanling_cs/article/details/56330652 首先,Dijkstra算法与Floyd算法都是广度优先搜索的算法.都可以用 ...

  5. 【最小生成树】Prim算法和Kruskal算法的区别对比

    Prim算法和Kruskal算法都是从连通图中找出最小生成树的经典算法- 从策略上来说,Prim算法是直接查找,多次寻找邻边的权重最小值,而Kruskal是需要先对权重排序后查找的- 所以说,Krus ...

  6. RSA算法和RSA数字签名算法的实现

    RSA算法和RSA数字签名算法的实现 http://blog.chinaunix.net/uid-21880738-id-1813146.html 顾婷婷 李涛 (四川大学计算机系(西区) 成都 61 ...

  7. 数据结构与算法之美笔记——基础篇(下):图、字符串匹配算法(BF 算法和 RK 算法、BM 算法和 KMP 算法 、Trie 树和 AC 自动机)

    图 如何存储微博.微信等社交网络中的好友关系?图.实际上,涉及图的算法有很多,也非常复杂,比如图的搜索.最短路径.最小生成树.二分图等等.我们今天聚焦在图存储这一方面,后面会分好几节来依次讲解图相关的 ...

  8. Widar2.0:SAGE算法和SAGE算法在在无线信道参数估计中的应用

    Widar2.0:SAGE算法和SAGE算法在在无线信道参数估计中的应用 C1 本文背景 C2 SAGE算法 C2.1 EM算法 C2.2 SAGE算法 C2.3 SAGE算法和SAGE算法在在无线信 ...

  9. matlab 牛顿 科特斯的代码,SIMP算法和BESO算法的关键技术研究

    摘要: 各项正交惩罚材料变密度法(SIMP算法)和双向渐进结构优化方法(BESO算法)是目前结构拓扑优化领域中应用较为广泛的两种算法.以SIMP算法和BESO算法为研究对象,通过算例分析了其各自的特性 ...

  10. RSA算法和RSA数字签名算法

    一.引言 随着网络技术的飞速发展,信息安全性已成为亟待解决的问题.公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,较好地解决了传统密码体制在网络通信中 ...

最新文章

  1. Chromosome-scale assemblies of plant genomes using nanopore long reads and optical maps
  2. VC中BSTR和CString的使用
  3. 光速OFFER,为AI奔赴,商汤2022届校招提前批正式启动!
  4. 怎么上传文件到kk服务器,VS Code 关于SFTP上传文件到多服务器的配置
  5. 本机连接opc server有部分数据不刷新_实时数据库PI在企业MES系统中的应用
  6. kotlin字符串数组_Kotlin程序读取,遍历,反向和排序字符串数组
  7. Pytorch:variable中grad属性和backward函数grad_variables参数的含义
  8. Removing Nesting By Returning Early
  9. 苹果发布的Mac Pro就是“渣渣”?网友疯狂吐槽
  10. Typora设置高亮
  11. 计算机毕业设计java+jsp报刊订阅信息网站(源码+系统+mysql数据库+Lw文档)
  12. 【成神之路】Nuxt入门
  13. 宠物小精灵之收服(二维01背包)
  14. 20系列和30系列显卡下的tensorflow-gpu环境配置,避坑指南
  15. 2021年高处安装、维护、拆除考试试卷及高处安装、维护、拆除证考试
  16. Python基础笔记——函数
  17. 盲盒系统的玩法运营如何盈利
  18. 循环结构简单题之分硬币
  19. tooth的用法_关于tooth的用法总结大全
  20. 混合策略纳什均衡——附例题及解析

热门文章

  1. Ctfmon.exe是什么进程?
  2. 天堂2单机版进去显示服务器维护,天堂2五章单机版设置完成后却玩不了 高手解决一下...
  3. mysql的inndob引擎崩溃
  4. htc328d屏幕排线怎么换_HTC T328D解锁详细图文教程
  5. 项目连接DB2报错:必需的字符转换器不可用。 ERRORCODE=-4220, SQLSTATE=null
  6. 服务器超级电容什么作用,超级电容器基础知识(原理_应用_功能_分类_优缺点)...
  7. C语言冒泡排序算法详解
  8. 记事本写小程序C语言,抖音上用记事本编写爱心小程序教程
  9. 尔雅课堂 美学原理课后练习题库
  10. chrome 安装 gliffy 绘图插件以及使用