国密算法

国密

中国国家密码管理局规范地址:https://oscca.gov.cn/sca/xxgk/bzgf.shtml

国密算法是指由 中国国家密码管理局 发布的密码算法标准,旨在保障国家信息安全。

其中部分密码算法已经成为国际标准。如SM系列密码,SM代表商密,即商业密码,是指用于商业的、不涉及国家秘密的密码技术。

商用密码是指能够实现商用密码算法的加密、解密和认证等功能的技术(包括密码算法编程技术和密码算法芯片、加密卡等的实现技术)。

商用密码技术是商用密码的核心,国家将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护商用密码技术的秘密。

商用密码应用领域十分广泛,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加密保护。比如:商用密码可用于企业门禁管理、企业内部的各类敏感信息的传输加密、存储加密,防止非法第三方获取信息内容;也可用于各种安全认证、网上银行、数字签名等。

推广国密算法意义

  1. 自主可控,不用依赖于国外的技术。
  2. 安全性更高,目前来说国密算法不会被破解,重要信息不会存在泄露危险。
  3. 性能更好,更符合国情。

国密算法分类

国密算法包括了对称加密算法,椭圆曲线非对称加密算法,杂凑算法等等。其中:

  • SM1:对称加密算法,加密强度为128位,采用硬件实现。
  • SM2:公钥私钥算法,其加密强度为256位。
  • SM3:密码杂凑算法,杂凑值长度为32字节,和 SM2 算法同期公布。
  • SM4:对称加密算法,随WAPI标准一起公布,可使用软件实现,加密强度为128位。

国际标准加密算法由美国的安全局发布,是现今最通用的商用算法。我们就以分组密码算法(DES和SM4)、公钥密码算法(RSA和SM2)、摘要算法(SM3)为例,和大家谈谈国际算法和国密算法的区别。

密码分类 国产商用密码 国际商用密码
对称加密:分组加密/块加密 SM1/SCB2、SM4/SMS4、SM7 DES、IDEA、AES、RC5、RC6
对称加密:序列加密/流加密 ZUC(祖冲之算法)、SSF46 RC4
非对称加密:大数分解 RSA、DSA、ECDSA、Rabin
非对称加密:离散对数 SM2、SM9 DH、DSA、ECC、ECDH
密码杂凑/散列/hash SM3 MD5、SHA-1、SHA-2

SM1 分组加密算法

SM1 算法是国密算法中的一种对称加密算法,其特点是加解密使用相同密钥。

SM1 算法分组长度、密钥长度都是128bit,算法安全保密强度跟 AES 相当,但是算法不公开,仅以 IP核(Intellectual Property Core,一种预先做好的集成电路功能模块)的形式存在于芯片中,需要通过加密芯片的接口进行调用。

SM1 算法主要用于小数据量的加密保护,因此被广泛用于研制智能IC卡、智能密码钥匙、门禁卡、加密卡等安全产品。

SM2 公钥密码算法——国际RSA

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

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

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

SM2 算法

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

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

SM2 算法使用的方程为:y2=x3+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 算法的主要特性对比如下:

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

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算法的安全性基于分解大整数的困难性。

SM3 摘要算法——国际 MD5/SHA-1/SHA-2

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

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

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

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

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

SM4 分组密码算法——国际DES

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

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

  1. 必须实现起来比较简单,知道密钥时加密和脱密都十分容易,适合硬件和(或)软件实现
  2. 加脱密速度和所消耗的资源和成本较低,能满足具体应用范围的需要

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

  • 混淆原则就是将密文、明文、密钥三者之间的统计关系和代数关系变得尽可能复杂,使得敌手即使获得了密文和明文,也无法求出密钥的任何信息;即使获得了密文和明文的统计规律,也无法求出明文的任何信息。
  • 扩散原则就是应将明文的统计规律和结构规律散射到相当长的一段统计中去。也就是说让明文中的每一位影响密文中的尽可能多的位,或者说让密文中的每一位都受到明文中的尽可能多位的影响。

DES

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

SM4

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

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

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

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

SM7 分组加密算法

该算法没有公开。SM7适用于非接IC卡应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通、公交一卡通)。

SM9 基于标识的非对称密码算法

用椭圆曲线对实现的基于标识的数字签名算法、密钥交换协议、密钥封装机制和公钥加密与解密算法,包括数字签名生成算法和验证算法,并给出了数字签名与验证算法及其相应的流程。可以替代基于数字证书的PKI/CA体系。

SM9主要用于用户的身份认证,SM9的加密强度等同于3072位密钥的RSA加密算法,于2016年3月28日发布。

祖冲之密码算法 流加密算法

它是中国自主研究的流密码算法,该机密性算法可适用于3GPP LTE通信中的加密和解密,该算法包括祖冲之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三个部分。目前已有对ZUC算法的优化实现,有专门针对128-EEA3和128-EIA3的硬件实现与优化,由国家密码管理局于2012年3月21日发布。

Reference


国密算法
https://flepeng.github.io/035-密码学-国密算法/
作者
Lepeng
发布于
2023年3月8日
许可协议