【国密简介】

1. 国密算法介绍

国密算法,即国家商用密码算法。是由国家密码管理局认定和公布的密码算法标准及其应用规范,其中部分密码算法已经成为国际标准。如SM系列密码,SM代表商密,即商业密码,是指用于商业的,不涉及国家秘密的密码技术。

商用密码又很多,作为一览,我整理出下表,列举了常用的国际跟国产商密。
在这里插入图片描述
下面逐个介绍国密算法:

1.1 SM1是一种分组加密算法

对称加密算法中的分组加密算法,其分组长度,密钥长度都是128bit,算法安全保密强度跟AES相当,但是算法不公开,仅以IP核的形式存在于芯片中,需要通过加密芯片的接口进行调用。

采用才算法已经研制了系列芯片,智能IC卡,智能密码钥匙,加密卡,加密机等安全产品,广泛应用于电子政务,电子商务及国民经济的各个应用领域(包括 国家政务通,警务通等重要领域)。

1.2 SM2是非对称加密算法

它是基于椭圆曲线密码的公钥密码算法标准,其密钥长度是256bit包含数字签名,密钥交换和公钥加密,用于替换RSA/DH/ECDSA/ECDH等国际算法。可以满足电子认证服务系统等应用需求,由国家密码管理局于2010年12月17号发布。

SM2采用的是ECC 256位的一种,其安全强度比RSA 2048位高,且运算速度快于RSA。

1.3 SM3是一种密码杂凑算法

用于代替MD5/SHA-1/SHA-2等国际算法,适用于数字签名和验证,消息认证码的生成与验证以及随机数的生成,可以满足电子认证服务系统等应用需求,于2010年12月17日发布。

它是在SHA-256基础上改进实现的一种算法,采用Merkle-Damgard结构,消息分组长度位512bbit,输出的摘要值长度为256bit。

1.4 SM4是分组加密算法

跟SM1类似,是我国自主设计的分组对称密码算法,用于代替DES/AES等国际算法。SM4算法与AES算法具有相同的密钥长度,分组长度,都是128bit。于2012年3月21日发布,适用于密码应用中使用分组密码的需求。

1.5 SM7也是一种分组加密算法

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

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

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

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

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

2. 国密算法的安全性

SM2算法:SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。

SM3算法:SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性。SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。

SM4算法:SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。

随着国密算法推广的延伸,金融领域引入SM2、SM3、SM4等算法逐步替换原有的RSA、ECC等国外算法。现有银联银行卡联网、银联IC两项规范都引入了国密算法相关要求

### Tongsuo 国密开源库简介 Tongsuo 是一个支持中国国家密码局制定的标准(简称国密标准)的开源加密库。该库实现了多种国密算法,包括但不限于SM2椭圆曲线公钥密码算法SM3杂凑算法以及SM4分组密码算法[^1]。 ### 安装与配置 为了使用 Tongsuo 库,在大多数Linux发行版上可以通过包管理器安装依赖项并下载源码编译: ```bash git clone https://github.com/TongTech-Lab/tongsuo.git cd tongsuo ./config make && make install ``` 上述命令会克隆仓库到本地机器,并完成构建过程[^2]。 ### SM2加解密操作实例 对于基于ECC的非对称加密方案——即SM2而言,可以利用openssl命令行工具来进行简单的测试: #### 生成密钥对 ```bash openssl genpkey -algorithm sm2 -out sm2_key.pem ``` 此指令用于创建一对新的私钥和对应的公钥文件sm2_key.pem[^3]。 #### 数据加密 假设有一个名为`plaintext.txt`的纯文本文件需要被保护,则可执行如下命令实现其加密处理: ```bash openssl pkeyutl -encrypt -in plaintext.txt -pubin -inkey sm2_pub.key -rawin -out ciphertext.bin ``` 这里假定已提前提取出了公钥部分保存于`sm2_pub.key`之中[^4]。 #### 解密恢复原文本 当接收方收到经过编码的消息体ciphertext.bin之后,可通过下面的方式还原原始信息: ```bash openssl pkeyutl -decrypt -in ciphertext.bin -inkey sm2_key.pem -rawin -out recovered_plaintext.txt ``` 这一步骤需要用到之前产生的私钥来解锁消息内容[^5]。 ### SM3哈希函数应用案例 要计算任意输入数据string对应的一个固定长度摘要值,只需调用相应接口即可得到结果: ```python from hashlib import new as hash_new digest = hash_new('sm3') message = b'example message' digest.update(message) print(digest.hexdigest()) ``` 这段Python脚本展示了如何借助hashlib模块中的new()工厂方法获取指定名称为'sm3'的对象实例化对象,并传入待散列的数据流进行加工转换成十六进制字符串表示形式输出显示出来[^6]。 ### SM4对称加密实践指南 针对采用AES类结构设计而成的支持128位秘钥大小及相同尺寸区块模式下的高效序列变换机制—也就是常说作SM4来说,同样存在简便易懂的操作流程供开发者参考学习: #### 密钥初始化 先定义好用来参与运算的一串随机数作为种子材料: ```python import os key_material = os.urandom(16) # 获取16字节长的安全伪随机数值 iv_vector = bytes([0]*16) # 初始化向量IV设为空白填充型态 ``` #### 加密过程 接着把明文转化为密文表达方式存储起来: ```python from Crypto.Cipher import SM4 cipher_instance = SM4.new(key=key_material, mode=SM4.MODE_CBC, iv=iv_vector) encrypted_data = cipher_instance.encrypt(b'This is a secret.') ``` 此处引入PyCryptodome扩展库提供了更高级别的封装层使得API更加友好易于理解掌握[^7]。 #### 验证签名真伪 最后介绍关于数字证书体系下验证电子文档签署行为合法性的具体做法: ```bash openssl dgst -sm3 -sign sm2_key.pem -out signature.bin file_to_sign.txt openssl dgst -sm3 -verify sm2_pub.key -signature signature.bin file_to_sign.txt ``` 通过以上两步分别完成了对目标资源file_to_sign.txt施加数字指纹标记动作及其后续校验环节确认无误后返回OK字样提示成功[^8]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值