国密算法是中国国家密码管理局制定的标准,包括SM1、SM2、SM3、SM4等,广泛应用于电子政务、金融等领域,保障信息安全与自主可控能力。
什么国密算法?是什么机构制定的规范?
国密算法,即国家密码算法,是由中国国家密码管理局制定和公布的密码算法标准及其应用规范。
这些算法标准包括临时加密算法、非临时加密算法、杂凑算法等多种类型,目的在国家保障信息安全方面,减少对外部密码产品的依赖,并提升网络信息安全和自主可控能力。
国密算法不仅适用于中国国内的信息系统,还在国际上得到认可和应用。
国家密谋的发展背景
国密算法的推出背景是加强国家信息安全,减少对外部密码技术的依赖,尤其是在国际政治形势复杂多变的大环境下。
随着信息技术的发展和网络应用的普及,对信息安全的重要性程度极大增加,国家密码算法因此成为国家战略的重要组成部分。
国家密码算法的主要组成
| 密码分类 | 二级密码分类 | 国产商用密码 | 国际商用密码 |
|---|---|---|---|
| 对称加密 | 分组加密/块加密 | SM1/SCB2 SM4/SMS4 SM7 | DES IDEA AES RC5 RC6 |
| 对称加密 | 序列加密/流加密 | ZUC(祖冲之算法) SSF46 | RC4 |
| 非对称/公钥加密 | 大数分解 | RSA DSA ECDSA Rabin | |
| 非对称/公钥加密 | 离散对数 | SM2 SM9 | DH DSA ECC ECDH |
| 密码杂凑/散列 | SM3 | MD5 SHA-1 SHA-2 |
国家密码算法主要包括以下几种:
- SM1:终极加密算法,128位密钥长度,备份加密。
- SM2:非精确加密算法,基于椭圆曲线算法,256位密钥长度。
- SM3:杂凑算法,用于数字签名和验证,消息认证码的生成与验证。
- SM4:临时加密算法,用于替代 DES/AES 等国际算法。
国密算法的应用场景
国密算法被广泛评估中国的电子政务、电子商务、金融等多个领域,用于保护重要信息流转的数据安全。
例如,在金融领域,国密算法被用于SSL证书来交易双方的身份认证和数据传输保密性。
国家密码算法与国际标准的联系
国家密码算法中的一些算法如SM2、SM3、SM4已被纳入国际标准,这表明国家密码算法在国际上也得到了认可。
国密算法详解
SM1 算法详解
SM1是一种分组加密算法,加密算法中的分组加密算法,其分组长度、密钥长度均为128bit,算法安全保密强度与AES相当,但算法不公开,仅以IP加密的形式存在于芯片上中,需要通过加密芯片的接口进行调用。
SM2 算法详解
SM2是基于椭圆曲线密码的公钥密码算法标准,其密钥长度256bit,包含数字签名、密钥交换和公钥加密,用于替换RSA/DH/ECDSA/ECDH等国际算法。可以满足电子认证服务系统等应用需求,由国家密码管理局于2010年12月17号发布。
SM3 算法详解
SM3是一种密码杂凑算法,用于替代MD5/SHA-1/SHA-2等国际算法,适用于数字签名和验证、消息认证码的生成与验证以及随机数的生成,可以满足电子认证服务系统等应用需求,于2010年12月17日发布。
SM4算法详解
SM4是分组加密算法,与SM1类似,是我国自主设计的分组加密算法,用于替代DES/AES等国际算法。SM4算法与AES算法具有相同的分组长度、分组长度,均为128bit。 2012年3月21日发布,适用于密码应用中使用分组密码的需求。
国家密码算法的应用案例
国家密码算法在多个领域内发挥着重要作用,例如:
- 在金融领域,国家加密算法被用于SSL证书来交易双方的身份认证和数据传输的保密性。
- 在车联网领域,国密算法被用于车辆货车T-BOX存储和传输数据的加密。
- 在数据存储领域,国密算法被用于保证数据的安全存储。
国家密码算法与国际密码算法的比较
| 算法类型 | 算法名称 | 分组长度 | 密钥长度 | 核心技术特点 / 安全性对比 |
|---|---|---|---|---|
| 对称加密 | 国密 SM4 | 128位 | 128位 | 安全强度与AES-128相当,采用非线性迭代分组结构。 |
| 对称加密 | 国际 AES | 128位 | 128/192/256位 | 国际通用标准,利用置换组合架构,加解密速度极快。 |
| 非对称加密 | 国密 SM2 | 结构不分块 | 256位 | 基于椭圆曲线密码原理,256位安全强度超过2048位RSA。 |
| 非对称加密 | 国际 RSA | 2048/4096位 | 2048/4096位 | 基于大整数因子分解困难原理,密钥较长,运算开销相对较大。 |
| 非对称加密 | 国际 ECC | 结构不分块 | 256/384位 | 国际主流椭圆曲线算法,相同密钥长度下安全强度与SM2相近。 |
| 杂凑算法 | 国密 SM3 | 512位分块 | 256位输出 | 输出长度与SHA-256相同,增加了非线性函数,抗碰撞能力强。 |
| 杂凑算法 | 国际 SHA-256 | 512位分块 | 256位输出 | 国际通用摘要算法,属于SHA-2系列,广泛应用于证书签名。 |
国密算法与国际算法在技术上基于相似原理,但参数与细节存在差异。国密算法在分组长度、密钥长度、安全性、爆炸速度等方面都与国际同类算法相似的对比。
国家密码算法在未来会有哪些新的发展趋势
| 发展方向 | 核心趋势 |
|---|---|
| 自主可控 | 满足国产化战略,加速替代国外通用算法。 |
| 技术创新 | 开展抗量子密码研究,攻克潜在算力威胁。 |
| 国际认可 | 推进国际标准制定,扩大海外落地范围。 |
| 行业落地 | 深入物联网与数字经济,加速密评合规进程。 |
| 性能提升 | 优化硬件适配与算法结构,提高处理速度。 |
| 长期防御 | 动态升级现有机制,应对密码学新挑战。 |
了解国密算法
基于Go语言的国密算法:
同济研究院国密算法
SM2: 国密椭圆曲线算法库
- 支持加密和不加密的pem文件格式(加密方法参见RFC5958, 具体实现参加代码)
- 支持证书的生成,证书的读写(接口兼容rsa和ecdsa的证书)
- 支持证书链的操作(接口兼容rsa和ecdsa)
- 支持crypto.Signer接口
SM3: 国密Hash算法库(摘要算法)
- 支持基础的sm3Sum操作
- 支持hash.Hash接口
SM4: 国密分组密码算法库
- 支持Generate Key, Encrypt, Decrypt基础操作
- 提供Cipher.Block接口
- 支持加密和不加密的pem文件格式(加密方法为pem block加密, 具体函数为x509.EncryptPEMBlock)
Fabric的国密扩展方法
一种是基于Fabric本身扩展国密包。这种改法不用对Golang标准库做任何地改动,所有的修改都在Fabric项目源码上进行;
其一,把国密的库进行移植,封装gm-crypto;
其二,扩展Fabric现有的bccsp模块;
其三,修改x509证书相关的地方。
Fabric-CA主要是为了实现对加入联盟链的成员的身份控制以及数据生成保管。Fabric-CA中,Lib,主要是接口的实现,主要在解析申请证书请求以及签发证书流程要替换为国密算法;Util,该包数据工具类,主要在证书的编解码等操作中扩展国密算法;Vendor中,替换对Fabric的包的引用,提供对国密算法的支持
在Fabric中扩展国密算法,大概有以下几个方面:
- 第一,Fabric框架扩展支持国密算法;
- 第二,Fabric-CA扩展支持国密算法;
- 第三,Fabric-SDK扩展支持国密算法;
- 第四,fabric-baseimage、fabric-baseos镜像扩展支持国密算法;
- 第五,Fabirc框架扩展支持加载.so库。”
另一种方法是基于Golang标准库扩展国密。这种方案是直接扩充Golang标准库,改法更为清晰。



京公网安备11010502031690号
网站经营企业工商营业执照
















