一种用于可变长度密钥的改进SM4加密系统及方法
摘要文本
本发明提出一种用于可变长度密钥的改进SM4加密系统及方法,基于改进的密钥导出函数使SM4中的密钥扩展算法支持任意长度密钥的输入,可完成导出密钥计算、密钥扩展、明文处理。本发明支持任意长度的输入密钥,密钥长度至少应大于等于128bit,增加了国密商用密码SM4的灵活性,使SM4能够应用于更多场景中,对于国内密码技术的发展与应用具有积极作用,同时提升国内密码产业的竞争力;另外,增加输入的密钥长度,提升密码算法的安全性,128bit密钥长度的SM4算法与AES‑128bit安全性相当,密钥长度越长,破解算法需要的计算资源越多,提高了算法安全性。
申请人信息
- 申请人:北京新数科技有限公司
- 申请人地址:100012 北京市朝阳区红军营南路15号院2号楼1层111室
- 发明人: 北京新数科技有限公司
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 一种用于可变长度密钥的改进SM4加密系统及方法 |
| 专利类型 | 发明申请 |
| 申请号 | CN202311395073.0 |
| 申请日 | 2023/10/26 |
| 公告号 | CN117527194A |
| 公开日 | 2024/2/6 |
| IPC主分类号 | H04L9/06 |
| 权利人 | 北京新数科技有限公司 |
| 发明人 | 任利娜; 李超德; 黄彪 |
| 地址 | 北京市朝阳区红军营南路15号院2号楼1层111室 |
专利主权项内容
1.一种用于可变长度密钥的改进SM4加密系统,基于改进的密钥导出函数使SM4中的密钥扩展算法支持任意长度密钥的输入,其特征在于:该系统包括导出密钥计算模块、密钥扩展模块、明文处理模块。SM4算法中对称密钥为MK,128bit≤len(MK)≤512bit,为对称密钥生成一个导出密钥,令其中FK为导出密钥,且len(FK)=128bit;取n个字节tag=0x01,tag=0x02,...;对于每个i从1到n,执行以下步骤:121.导出密钥计算模块,该模块完成以下操作:(1)计算K(i)=SM3(tag||MK||int(i)),其中int(i)为计数器i的32比特大端表示;计算其中K(i,j)表示K(i)的第(32(j-1)+1)bit至(32j)bit的比特串,j=1,2,3,4;/>其中B表示长度为32bit的比特串;计算K′(i)=K′(i,1)||K′(i,2)||K′(i,3)||K′(i,4),其中||表示为拼接符号;i(2)计算导出密钥(3)计算中间密钥2.密钥扩展模块,该模块完成以下操作:(1)输入任意比特的密钥MK,系统参数PK,PK,PK,PK,固定参数CK,CK,...,CK,其中MK的长度为128~512bit;计算FK=(FK,FK,FK,FK)与中间密钥FK′;计算导出密钥与系统参数的异或:获取子密钥:/>其中k=0,1,2,...,31;012301310123其中函数T的计算过程为:令执行非线性变换τ,输入A=(a,a,a,a),输出B=τ(A)=(Sbox(a),Sbox(a),Sbox(a),Sbox(a)),其中Sbox()表示8bit输入输出的S盒;将输出结果B作为线性变换L的输入,输出012301233.明文处理模块,该模块完成对称加密,首先,将明文分为4个32bit的字X,X,X,X,并进行32轮的轮操作,将轮操作的结果的4个字进行反序变换后组成128bit的密文。轮函数与密钥扩展中的T函数过程基本一致,不同之处在于其中k=0,1,2,...,31;T′函数将线性变换L替换为/>1234