转载自https://blog.csdn.net/hcnetbee/article/details/53692579,部分内容和排版稍作修改。

国密算法由国家密码局发布,包含SM1\ SM2\ SM3\ SM4\ SSF33算法;国际算法由美国的安全局发布,是现今最通用的商用算法。本文以分组密码算法(DES和SM4)、公钥密码算法(RSA和SM2)、摘要算法(SM3)为例,和大家谈谈国际算法和国密算法的区别。

1.分组密码算法——国际DES、国产SM4

  分组密码就是将明文数据按固定长度进行分组,然后在同一密钥控制下逐组进行加密,从而将各个明文分组变换成一个等长的密文分组的密码。其中二进制明文分组的长度称为该分组密码的分组规模。

  分组密码的实现原则如下:

  (1)必须实现起来比较简单,知道密钥时加密和脱密都十分容易,适合硬件和(或)软件实现.

  (2)加脱密速度和所消耗的资源和成本较低,能满足具体应用范围的需要.

  分组密码的设计基本遵循混淆原则和扩散原则。

  混淆原则就是将密文、明文、密钥三者之间的统计关系和代数关系变得尽可能复杂,使得敌手即使获得了密文和明文,也无法求出密钥的任何信息;即使获得了密文和明文的统计规律,也无法求出明文的任何信息。

  扩散原则就是应将明文的统计规律和结构规律散射到相当长的一段统计中去。也就是说让明文中的每一位影响密文中的尽可能多的位,或者说让密文中的每一位都受到明文中的尽可能多位的影响。

  DES算法

  DES算法是在美国NSA(国家安全局)资助下由IBM公司开发的密码算法,其初衷是为政府非机密的敏感信息提供较强的加密保护。它是美国政府担保的第一种加密算法,并在1977年被正式作为美国联邦信息处理标准。DES主要提供非军事性质的联邦政府机构和私营部门使用,并迅速成为名声最大,使用最广的商用密码算法。

  DES算法的整体结构图:

        SM4算法

2006年我国公布了无限局域网产品使用的SM4密码算法。这是我国第一次公布自己的商用密码算法。

SM4算法的整体结构图:

国际的DES算法和国产的SM4算法的目的都是为了加密保护静态储存和传输信道中的数据,主要特性如下:

  从算法上看,国产SM4算法在计算过程中增加非线性变换,理论上能大大提高其算法的安全性,并且由专业机构进行了密码分析,民间也对21轮SM4进行了差分密码分析,结论均为安全性较高。

  DES算法 SM4算法
计算基础 二进制 二进制
算法结构 使用标准的算数和逻辑运算,先替代后置换,不含非线性变换 基本轮函数加迭代,含非线性变换
加解密算法是否相同
计算轮数 16轮(3DES为16轮*3) 32轮
分组长度 64位 128位
秘钥长度 64位(3DES为128位) 128位
有效秘钥长度 56位(3DES为112位) 128位
实现难度 易于实现 易于实现
实现性能 软件实现慢,硬件实现快 软硬件实现都快
安全性 较低(3DES较高) 算法较新,未经现实检验

2.公钥密码算法——国际RSA、国产SM2

公钥密码学与其他密码学完全不同, 使用这种方法的加密系统,不仅公开加密算法本身,也公开了加密用的密钥。

  公钥密码系统与只使用一个密钥的对称传统密码不同,算法是基于数学函数而不是基于替换和置换。公钥密码学是非对称的,它使用两个独立的密钥,即密钥分为公钥和私钥,因此称双密钥体制。双钥体制的公钥可以公开,因此称为公钥算法。

  公钥算法的出现,给密码的发展开辟了新的方向。公钥算法虽然已经历了20多年的发展,但仍具有强劲的发展势头,在鉴别系统和密钥交换等安全技术领域起着关键的作用

  公钥算法的加密与解密由不同的密钥完成,并且从加密密钥得到解密密钥在计算上是不可行的。通常,公钥算法的两个密钥中任何一个都可以作为加密而另一个用作解密,但不是所有的公钥算法都是如此。

        RSA算法

  RSA算法由Rivest、Shamir、Adleman于1978年首次发表,是迄今为止最容易理解和实现的公钥算法,已经受住了多年深入的攻击,其理论基础是一种特殊的可逆模幂运算,其安全性基于分解大整数的困难性。

  RSA算法既可用于加密,又可用于数字签名,已得到广泛采用,并被许多标准化组织(如ISO、ITU、IETF和SWIFT等)接纳。目前许多国家标准仍采用RSA算法或它的变型。

  RSA算法的实现如下:

  (1) 实现者寻找出两个大素数p和q

  (2) 实现者计算出n=pq 和φ(n)=(p-1)(q-1)

  (3) 实现者选择一个随机数e (0<e<></e<>

  (4) 实现者使用辗转相除法计算d=e-1(modφ(n))

  (5) 实现者在目录中公开n和e作为公钥

  密码分析者攻击RSA体制的关键点在于如何分解n。若分解成功使n=pq,则可以算出φ(n)=(p-1)(q-1),然后由公开的e,解出秘密的d。所以说RSA算法的安全性基于分解大整数的困难性。

        SM2算法

  SM2算法由国家密码管理局于2010年12月17日发布,全称为椭圆曲线算法。椭圆曲线并不是椭圆,之所以称为椭圆曲线是因为它们是用三次方程来表示的,并且该方程与计算椭圆周长的方程相似。一般而言,椭圆曲线的三次方程形为:

  y^2+axy+by=x^3+cx^2+dx+e

[其中a,b,c,d和e是满足某些条件的实数,因为方程中的指数最高是3,所以我们称之为三次方程,或者说方程的次数为3]

  SM2算法使用的方程为:y^2= x^3 + ax + b

  SM2算法实现如下:

  (1) 选择Ep(a,b)的元素G,使得G的阶n是一个大素数

  (2) G的阶是指满足nG=O的最小n值

  (3) 秘密选择整数k,计算B=kG,然后公开(p,a,b,G,B),B为公钥,保密k,k为私钥

  加密M:先把消息M变换成为Ep(a,b)中一个点Pm,然后,选择随机数r,计算密文Cm={rG,Pm+rP),如果r使得rG或者rP为O,则要重新选择r。

  解密Cm: (Pm+rP)-k(rG)=Pm+rkG-krG=Pm

  SM2算法的安全性基于一个数学难题”离散对数问题ECDLP”实现,即考虑等式Q=KP,其中Q、P属于Ep(a,b),K<p,则:1) p="" 已知q和p,计算k,是困难的。

  现今对椭圆曲线研究的时间短,经过许多优秀的数学家的努力,至今一直没有找到亚指数级算法。正是由于目前所知求解ECDLP的最好方法是指数级的,这使得我们选用SM2算法作加解密及数字签名时,所要求的密钥长度比RSA要短得多。

  国际的RSA算法和国产的SM2算法的主要特性对比如下:

国际RSA算法和国产SM2算法比较
  RSA算法 SM2算法
计算结构 基于特殊的可逆模幂运算 基于椭圆曲线
复杂度 亚指数级 完全指数级
相同安全性能所需公钥位数 较多 较少(160位的SM2与1024位的RSA具有相同安全等级)
秘钥生成速度 较RSA算法快百倍以上
解密加密速度 一般 较快
安全性难度 基于分解大整数的难度 基于离散对数问题ECDLP数学难题

 

 3.摘要算法——国产SM3

  摘要函数在密码学中具有重要的地位,被广泛应用在数字签名,消息认证,数据完整性检测等领域。摘要函数通常被认为需要满足三个基本特性:碰撞稳固性,原根稳固性和第二原根稳固性。

  2005年,Wang等人给出了MD5算法和SHA-1算法的碰撞攻击方法,现今被广泛应用的MD5算法和SHA-1算法不再是安全的算法。

  SM3密码摘要算法是中国国家密码管理局2010年公布的中国商用密码杂凑算法标准。SM3算法适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法。SM3算法采用Merkle-Damgard结构,消息分组长度为512位,摘要值长度为256位。

  SM3算法的压缩函数与SHA-256的压缩函数具有相似的结构,但是SM3算法的设计更加复杂,比如压缩函数的每一轮都使用2个消息字。

  现今为止,SM3算法的安全性相对较高。

国密SM1\ SM2\ SM3\ SM4\ SSF33算法和国际RSA算法的对应关系相关推荐

  1. android 国密签名,关于国密 (sm2,sm3,sm4)在Linux、python、Android、java、ios中的...

    国密即国家密码局认定的国产密码算法.主要有SM1,SM2,SM3,SM4和最新的sm9.在国内环境主要使用的国家密码局认定的算法. SM2算法:SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法, ...

  2. 国密算法SM1/SM2/SM3/SM4

    原创不易,转载请注明出处. 国密算法由国家密码局发布,今天大概介绍4中国密算法,分别是SM1,SM2,SM3,SM4.他们之间异同通过下表展示. 算法名称 算法分类 算法是否公开 明文最大长度(bit ...

  3. 爬虫逆向基础,认识 SM1/SM2/SM3/SM4/SM7/SM9/ZUC 国密算法

    文章目录 [01x00] 简介 [02x00]算法概述 [03x00]算法详解 [03x01]SM1 分组加密算法 [03x02]SM2 椭圆曲线公钥加密算法 [03x03]SM3 杂凑算法 [03x ...

  4. SM? SM1? SM2? SM3? SM4?

    最近看了一个项目的代码,用到了SM2,SM3,SM4,瞬间懵逼,一会用SM2,一会用SM3,一会又用SM4,SM??? 简单来说,SM2,SM3,SM4 是国家密码局认定的国产密码算法,当然除了这几个 ...

  5. 国密算法(SM1,SM2,SM3,SM4)和国际算法对应关系

    加密领域主要有国际算法和国密算法两种体系.国密算法是国家密码局认定的国产密码算法.国际算法是由美国安全局发布的算法.由于国密算法安全性高等一系列原因.国内的银行和支付机构都推荐使用国密算法. 国密与国 ...

  6. SM1 SM2 SM3 SM4加密算法

    2010 年开始,我国国家密码管理局就已经开始陆续发布了一系列国产加密算法,这其中就包括 SM1.SM2.SM3 .SM4.SM7.SM9.ZUC(祖冲之加密算法)等,SM 代表商密,即商业密码,是指 ...

  7. 国密算法 SM2 SM3 SM4 及密钥生成

    国密算法 SM2 SM3 SM4 方式一:SM2密钥在线生成 SM2密钥在线生成工具 如果你没线下生成工具,可用下面2种线上生成方式之一: 1. sm2密钥在线生成(const.net.cn) 2.  ...

  8. OpenSSL 1.1.1 新特性: 全面支持国密SM2/SM3/SM4加密算法

    OpenSSL项目最近6个月添加了许多新特性, 包括对中国SM2/SM3/SM4算法的支持: SM2椭圆曲线: https://github.com/openssl/openssl/pull/4793 ...

  9. 国密 sm2,sm3,sm4 算法纯 JavaScript 实现

    2014 年国务院办公厅就颁发了<国务院办公厅转发密码局等部门关于金融领域密码应用指导意见>,指出在我国涉及到金融领域信息安全的产品和系统要自主可控,在金融领域使用国产加密标准是机构走向合 ...

最新文章

  1. qpsk调制解调matlab_本科毕业设计课题—QPSK相干解调的MATLAB仿真(3)
  2. java处理日期时间 相加减
  3. 吴恩达《Machine Learning》精炼笔记 6:关于机器学习的建议
  4. 程序异常是python语言基本控制结构_计算机二级python 知识点篇(程序的控制结构)...
  5. oracle的多线程怎么实现,创建线程的两个方法(Oracle官网说两种,所以我们就别说什么三种四种了)...
  6. Opencv3学习(6)---距离变换
  7. 统计数字字符和空格 (15 分)
  8. Centos 系统swap虚拟内存添加与删除配置
  9. JAVA基础系列:Object类
  10. python类中包含一个特殊的变量、它表示当前对象自身_知到APP教师职场礼仪第七单元章节测试网课答案大学课后答案...
  11. 【GYM-100889 D】Dicy Numbers【数学推导求解】
  12. think-cell丨Images图像丨教程
  13. SPSS软件数据中心化、标准化和归一化
  14. unity 暂停按钮_Unity VideoPlayer教程之 视频播放暂停切换
  15. TM4C123-使用ROM中的函数库
  16. 计算机基础快捷键的使用
  17. 嵌入式技术学习路线摘要
  18. CSS 文本超过部分显示省略号,解决数字或英文不换行问题
  19. 2022年10月 基于WPF的智能制造MES系统框架-菜单栏的设计
  20. linux floppy 虚拟,Floppylinux

热门文章

  1. 全国计算机信息高新技术考试办公软件应用,全国计算机信息高新技术考试办公软件中级操作员考试题库(189页)-原创力文档...
  2. 多路选择器(4选1)
  3. LLC谐振电路(三)电路结构原理
  4. 市域社会治理平台规划建设方案 PPT
  5. Apache Tomcat安装教程
  6. 免费企业邮箱和收费企业邮箱有哪些区别?企业邮箱如何申请!
  7. 十六.激光和惯导LIO-SLAM框架学习之配置自用传感器实时室外跑LIO-SAM框架
  8. CP1E-N30DR-A拆机图片
  9. 福建最新建筑施工八大员之(安全员)考试题库真题及答案
  10. OKHttp使用详解 (B)