国密算法介绍

长沙火山 长沙火山     2023-03-08     255

关键词:

一、前言

加密是通过“加密算法”将明文加密成密文,可以通过“密钥”和“解密算法”将密文还原成明文。

密码学中应用最为广泛的三类算法:

  • 对称算法(分组密码算法):AES/DES/SM4
  • 非对称算法(公钥密码算法):RSA/SM2
  • 摘要算法(杂凑算法):MD5/SHA-I/SM3

二、国密算法的意义

随着金融安全上升到国家安全高度,近年来国家有关机关和监管机构站在国家安全和长远战略的高度提出了推动国密算法应用实施、加强行业安全可控的要求。摆脱对国外技术和产品的过度依赖,建设行业网络安全环境,增强我国行业信息系统的“安全可控”能力显得尤为必要和迫切。

密码算法是保障信息安全的核心技术,尤其是最关键的银行业核心领域长期以来都是沿用3DES、SHA-1、RSA、AES等国际通用的密码算法体系及相关标准。2010年底,国家密码管理局公布了我国自主研制的“椭圆曲线公钥密码算法”(SM2算法)。为保障重要经济系统密码应用安全,国家密码管理局于2011年发布了《关于做好公钥密码算法升级工作的通知》,要求“自2011年3月1日起,在建和拟建公钥密码基础设施电子认证系统和密钥管理系统应使用国密算法。自2011年7月1日起,投入运行并使用公钥密码的信息系统,应使用SM2算法。”

三、国密算法概述

国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。

SM1:为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

SM2:非对称加密,基于ECC(椭圆加密算法)。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC256位(SM2采用的就是ECC256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。即SM2>RSA2048,安全度高且运算速度块。

SM3:消息摘要,可以用MD5作为对比理解。该算法已公开。校验结果为256位。

SM4:对称加密,密钥长度和分组长度均为128位。无线局域网标准的分组数据算法。

由于SM1、SM4加解密的分组大小为128bit,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。

算法名称算法类别应用领域特点
SM1对称(分组)加密算法芯片分组长度、密钥长度均为 128 比特
SM2非对称(基于椭圆曲线 ECC)加密算法数据加密ECC 椭圆曲线密码机制 256 位,相比 RSA 处理速度快,消耗更少
SM3散列(hash)函数算法完整性校验安全性及效率与 SHA-256 相当,压缩函数更复杂
SM4对称(分组)加密算法数据加密和局域网产品分组长度、密钥长度均为 128 比特,计算轮数多
SM7对称(分组)加密算法非接触式 IC 卡分组长度、密钥长度均为 128 比特
SM9标识加密算法(IBE)端对端离线安全通讯加密强度等同于 3072 位密钥的 RSA 加密算法
ZUC对称(序列)加密算法移动通信 4G 网络流密码

四、国密算法介绍

1. SM1 分组加密算法

SM1 为分组加密算法,对称加密,分组长度和密钥长度都为 128 位,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。算法安全保密强度及相关软硬件实现性能与 AES 相当,该算法不公开,仅以 IP 核的形式存在于芯片中,调用该算法时,需要通过加密芯片的接口进行调用,采用该算法已经研制了系列芯片、智能 IC 卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域),一般了解的人比较少,爬虫工程师也不会遇到这种加密算法。

2. SM2 椭圆曲线公钥加密算法

SM2 为椭圆曲线(ECC)公钥加密算法,非对称加密,SM2 算法和 RSA 算法都是公钥加密算法,SM2 算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换 RSA 算法,在不少 gov 网站会见到此类加密算法。我国学者对椭圆曲线密码的研究从 20 世纪 80 年代开始,目前已取得不少成果,SM2 椭圆曲线公钥密码算法比 RSA 算法有以下优势:

SM2RSA
安全性256 位 SM2 强度已超过 RSA-2048一般
算法结构基本椭圆曲线(ECC)基于特殊的可逆模幂运算
计算复杂度完全指数级亚指数级
存储空间(密钥长度)192-256 bit2048-4096 bit
秘钥生成速度较 RSA 算法快百倍以上
解密加密速度较快一般
3. SM3 杂凑算法

SM3 为密码杂凑算法,采用密码散列(hash)函数标准,用于替代 MD5/SHA-1/SHA-2 等国际算法,是在 SHA-256 基础上改进实现的一种算法,消息分组长度为 512 位,摘要值长度为 256 位,其中使用了异或、模、模加、移位、与、或、非运算,由填充、迭代过程、消息扩展和压缩函数所构成。在商用密码体系中,SM3 主要用于数字签名及验证、消息认证码生成及验证、随机数生成等。据国家密码管理局表示,其安全性及效率要高于 MD5 算法和 SHA-1 算法,与 SHA-256 相当。

4. SM4 分组加密算法

SM4 为无线局域网标准的分组加密算法,对称加密,用于替代 DES/AES 等国际算法,SM4 算法与 AES 算法具有相同的密钥长度和分组长度,均为 128 位,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。加密算法与密钥扩展算法都采用 32 轮非线性迭代结构,解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

SM4DESAES
计算轮数3216(3DES 为 16*3)10/12/14
密码部件S 盒、非线性变换、线性变换、合成变换标准算术和逻辑运算、先替换后置换,不含线性变换S 盒、行移位变换、列混合变换、圈密钥加变换(AddRoundKey)
5. SM7 分组加密算法

SM7 为分组加密算法,对称加密,该算法不公开,应用包括身份识别类应用(非接触式 IC 卡、门禁卡、工作证、参赛证等),票务类应用(大型赛事门票、展会门票等),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通等)。爬虫工程师基本上不会遇到此类算法。

6. SM9 标识加密算法

SM9 为标识加密算法(Identity-Based Cryptography),非对称加密,标识加密将用户的标识(如微信号、邮件地址、手机号码、QQ 号等)作为公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,适用于互联网应用的各种新兴应用的安全保障,如基于云技术的密码服务、电子邮件安全、智能终端保护、物联网安全、云存储安全等等。这些安全应用可采用手机号码或邮件地址作为公钥,实现数据加密、身份认证、通话加密、通道加密等。在商用密码体系中,SM9 主要用于用户的身份认证,据新华网公开报道,SM9 的加密强度等同于 3072 位密钥的 RSA 加密算法。

7. ZUC 祖冲之算法

ZUC 为流密码算法,对称加密,该机密性算法可适用于 3GPP LTE 通信中的加密和解密,该算法包括祖冲之算法(ZUC)、机密性算法(128-EEA3)和完整性算法(128-EIA3)三个部分。已经被国际组织 3GPP 推荐为 4G 无线通信的第三套国际加密和完整性标准的候选算法。

五、加密算法安全性比较

1. SM2和RSA

256位的SM2>2048位的RSA

2. SM3/MD5/SHA-1

MD5输出长度128bit

SHA-1输出长度160bit

SM3输出长度256bit

输出长度越长,安全性越高,所以SM3>SHA-1>MD5

3. SM4/AES/3DES

对称加密算法用于实现数据的加密和解密运算。要保证一个对称加密算法的安全性的基本条件是其具备氹的密钥长度,SM4密钥长度为128bit,分组长度为128bit。所以安全性:SM4>AES>3DES

六、总结

国密算法也不完全是安全的,对算法的攻击,一种常见的手段是SCA(side channel attack,边信道攻击)。RSA/AES/DES都可以被攻破,SM2/SM4也一样。

所以金融领域的产品,特别是银行的移动端产品,都要求必须经过算法的安全认证,那么带有独立算法引擎的安全硬件–加密机就非常重要了。也就是银行中的密管平台系统。

嵌入式设备中支持国密算法的方法

如今国密系列算法的应用已不仅仅局限于金融和电信等领域,诸如车载设备,消费类电子设备等越来越多的产品开始要求有国密算法的支持。但是国密算法的开源资料和应用案例少之又少,如何快速高效的在自己的设备中加入国... 查看详情

国密算法的ekey的使用--简述(代码片段)

一、龙脉GMTools的使用1、产品介绍  mTokenGM3000国密身份认证锁是龙脉科技自主研发设计支持国密算法、完全遵照国家密码管理局颁布的《智能IC卡及智能密码钥匙密码应用接口规范》要求设计的USBKey,采用国产高性能智能卡芯... 查看详情

嵌入式设备中支持国密算法的方法

上一篇文章中我们为大家介绍了嵌入式设备中支持国密算法的几种方法。本篇我们详细的介绍一下第一种方法:移植Miracl库的具体操作步骤。第一步获取源码MIRACL密码库是开源软件,可以直接到官网下载,也可在csdn等论坛中获... 查看详情

什么是国密ssl证书?和普通ssl证书有什么区别?

...全性,已成为政府企业网站提升数据安全的标配。而国密SSL证书由于加密算法不同,安全等级更高,逐渐受到越来越多用户的信赖和认可。那么国密SSL证书有哪些特点,它和传统SSL证书的区别是什么呢?本文... 查看详情

区块链安全钱包设计实现

1.方案概述设计并实现一款基于国密算法的区块链安全钱包,首先使用国密算法完成基于国密算法的区块链的设计和实现,然后完成工作在此区块链上的区块链安全钱包。基于国密算法SM2、SM3和SM4实现区块链安全钱包最主要的功... 查看详情

整理sm2国密算法

//////国密SM2算法(ECC算法)加密器///签名部分采用SM3算法进行摘要计算///publicclassSm2Encryptor//////SM2算法默认用户ID,目前开放平台不会使用非默认用户ID///publicconststringDefaultUserId="1234567812345678";publicstringGetAsymmetricType()return"SM2 查看详情

国密算法环境配置

国密算法环境配置参考链接openssl配置:https://blog.csdn.net/bruce135lee/article/details/81811403openssl命令:https://www.cnblogs.com/rocedu/p/14891816.html#opensslgmssl-tasslgmssl配置:https://blog.csdn.net/zyhse/article/details/112350363 查看详情

国密算法

算法分类国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。SM1为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。SM2为非对称加... 查看详情

sm2国密算法工具qt版,彻底搞懂国密算法的使用(代码片段)

网上有很多网友问国密算法SM2怎么使用?什么是压缩公钥和非压缩公钥?xB和yB这参数是什么?怎么使用SM2做加解密?如何签名和验签?有没有工具来验证下?这里分享个自己用QT造的一个小工具,简单... 查看详情

sm2国密ssl证书为https加密提速

...规模访问故障和巨大安全风险。因此,GDCA致力于推广国密SSL证书,实现国际SSL证书无缝切换到国产SSL证书的应对方案,保护重要领域数据传输安全。SM2,正是一种由我国自主设计的非对称公钥密码算法,相较... 查看详情

国密算法+mysql

...OpenSSL”库的BabaSSL,加上MySQL的TLS设置,提供使用国密的算法的MySQL。Bab 查看详情

提供使用国密算法的mysql

...求,比以往都要紧迫,借鉴徐老师的这篇文章《国密算法+MySQL》,学习创建使用国密算法的MySQL数据库。中国加密标准的SM1、SM2、SM3、SM4、SM7、SM9等,借助国际加密标准,我们可以利用来自开源的加密库实... 查看详情

sm2国密证书合法性验证

...过的X509证书都是基于RSA-SHA1算法的,目前国家在大力推行国密算法,未来银行发行的IC卡也都是基于PBOC3.0支持国密算法的,因此我们来学习一下如何验证SM2国密证书的合法性。至于SM2与SM3的算法实现不在本文讨论范围之内,可以... 查看详情

openssl加解密以及国密算法(代码片段)

国密算法国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。1、SM1为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进... 查看详情

信息安全工程师笔记-国产密码算法(国密)概念

国产密码算法国产密码算法有SM1分组密码算法、SM2椭圆曲线公钥密码算法、SM3密码杂凑算法、SM4分组算法、SM9标识密码算法。算法名称算法特征描述SM1对称加密,分组长度和密钥长度都为128比特SM2非对称加密,用于公钥... 查看详情

国密算法的ekey基本使用的说明(代码片段)

概述本次需要进行的实验研究是国密算法的ekey的使用。对于一个或者多个应用来说,每个应用可以包含一个或多个容器(Container),每个容器中可以存放两对分别用于加密和签名的密钥对,以及两个相应的证书或证书链。每一个容... 查看详情

sm2算法基于mbedtls开源库国密算法的使用(代码片段)

...存储以及sm2公私钥的生成。【sm2算法】基于mbedtls开源库国密算法的使用(一)_我想月薪过万的博客-CSDN博客https://blog.csdn.net/qq_41885673/article/details/123192953?spm=1001.2014.3001.5 查看详情

国密浏览器是什么?有哪些?有什么特点?

国密浏览器是什么?有哪些?有什么特点?今天我们小编就给大家详细回答这三个问题。国密浏览器是什么?国密浏览器就是指支持国密SSL协议和加密证书的浏览器,使用国密算法SSL证书的站点,在国密浏... 查看详情