[发明专利]一种SM4分组密码算法的加速方法及指令集处理器在审
申请号: | 202211280193.1 | 申请日: | 2022-10-19 |
公开(公告)号: | CN115658148A | 公开(公告)日: | 2023-01-31 |
发明(设计)人: | 何军;陈子钰;姜军;尹飞;蒋生健;李媛;范好好 | 申请(专利权)人: | 上海高性能集成电路设计中心 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/30;G06F21/60 |
代理公司: | 上海泰博知识产权代理有限公司 31451 | 代理人: | 钱文斌 |
地址: | 201210 上海市浦*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 sm4 分组 密码 算法 加速 方法 指令 处理器 | ||
1.一种SM4分组密码算法的加速方法,其特征在于,基于SM4扩展指令集,采用并行流水线和指令级并行技术加速实现SM4分组密码算法,所述SM4分组密码算法包括SM4密钥扩展算法和SM4加解密算法;所述SM4扩展指令集采用RISC架构,指令采用定长的32位格式,源操作数和目标操作数均为256位;所述SM4扩展指令集包括SM4轮密钥生成指令和SM4轮函数迭代指令;所述SM4轮密钥生成指令采用多个SM4轮密钥并行生成算法以加速所述SM4密钥扩展算法,所述SM4轮密钥并行生成算法以此前的4个32位的中间密钥K3~K0和与后续8个轮密钥相关的8个32位的算法固定参数CK7~CK0作为输入,在SM4轮密钥扩展过程中,执行一次就能完成8个轮密钥生成;所述SM4轮函数迭代指令采用多轮SM4迭代并行执行算法以加速所述SM4加解密算法,所述SM4迭代并行执行算法以两组不相关的当前4个中间字W3~W0、W’3~W’0和后续8轮运算使用的8个轮密钥rk7~rk0为输入,在SM4分组密码算法的加密/解密过程中,生成执行SM4加解密轮函数8轮后的两组不相关的4个中间字。
2.根据权利要求1所述的SM4分组密码算法的加速方法,其特征在于,所述采用并行流水线和指令级并行技术加速实现SM4分组密码算法时:
加密时包括以下步骤:
(A)采用通用处理器中的通用指令生成轮密钥迭代初值(K3,K2,K1,K0);
(B)以所述轮密钥迭代初值(K3,K2,K1,K0)和系统固定参数CK7~CK0为输入执行第1条SM4轮密钥生成指令,生成SM4分组密码算法的8个轮密钥rk7~rk0;
(C)以所述轮密钥rk7~rk4和系统固定参数CK15~CK8为输入执行第2条SM4轮密钥生成指令,生成SM4分组密码算法的8个轮密钥rk15~rk8;同时以所述轮密钥rk7~rk0和两组数据不相关的明文(W3,W2,W1,W0,W’3,W’2,W’1,W’0)为输入,执行第1条SM4轮函数迭代指令,完成SM4加密算法1~8次轮函数迭代,得到迭代工作字(W(7)3,W(7)2,W(7)1,W(7)0,W’(7)3,W’(7)2,W’(7)1,W’(7)0);
(D)以所述轮密钥rk15~rk12和系统固定参数CK23~CK16为输入执行第3条SM4轮密钥生成指令,生成SM4分组密码算法的8个轮密钥rk23~rk16;同时以所述轮密钥rk15~rk8和迭代工作字(W(7)3,W(7)2,W(7)1,W(7)0,W’(7)3,W’(7)2,W’(7)1,W’(7)0)为输入,执行第2条SM4轮函数迭代指令,完成SM4加密算法9~16次轮函数迭代,得到迭代工作字(W(15)3,W(15)2,W(15)1,W(15)0,W’(15)3,W’(15)2,W’(15)1,W’(15)0);
(E)以所述轮密钥rk23~rk20和系统固定参数CK31~CK24为输入执行第4条SM4轮密钥生成指令,生成SM4分组密码算法的8个轮密钥rk31~rk24;同时以所述轮密钥rk23~rk16和迭代工作字(W(15)3,W(15)2,W(15)1,W(15)0,W’(15)3,W’(15)2,W’(15)1,W’(15)0)为输入,执行第3条SM4轮函数迭代指令(VSM4R),完成SM4加密算法17~24次轮函数迭代,得到迭代工作字(W(23)3,W(23)2,W(23)1,W(23)0,W’(23)3,W’(23)2,W’(23)1,W’(23)0);
(F)以所述轮密钥rk31~rk24和迭代工作字(W(23)3,W(23)2,W(23)1,W(23)0,W’(23)3,W’(23)2,W’(23)1,W’(23)0)为输入,执行第4条SM4轮函数迭代指令,完成SM4加密算法25~32次轮函数迭代,得到迭代工作字(W(31)3,W(31)2,W(31)1,W(31)0,W’(31)3,W’(31)2,W’(31)1,W’(31)0);
(G)将所述迭代工作字(W(31)3,W(31)2,W(31)1,W(31)0,W’(31)3,W’(31)2,W’(31)1,W’(31)0)反序输出,得到加密算法的执行结果密文(Y3,Y2,Y1,Y0,Y’3,Y’2,Y’1,Y’0);解密时包括以下步骤:
(a)采用通用处理器中的通用指令生成轮密钥迭代初值(K3,K2,K1,K0);
(b)以所述轮密钥迭代初值(K3,K2,K1,K0)和系统固定参数CK31~CK0为源操作数据,依次执行SM4轮密钥生成指令4次,生成SM4分组密码算法的32个轮密钥rk31~rk0;
(c)以所述轮密钥rk31~rk0和密文(Y3,Y2,Y1,Y0,Y’3,Y’2,Y’1,Y’0)为输入,依次执行SM4轮函数迭代指令4次,完成SM4解密算法的32次轮函数迭代,得到迭代工作字(W(31)3,W(31)2,W(31)1,W(31)0,W’(31)3,W’(31)2,W’(31)1,W’(31)0);
(d)将所述迭代工作字(W(31)3,W(31)2,W(31)1,W(31)0,W’(31)3,W’(31)2,W’(31)1,W’(31)0)反序输出,得到解密算法的执行结果明文(W3,W2,W1,W0,W’3,W’2,W’1,W’0)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海高性能集成电路设计中心,未经上海高性能集成电路设计中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211280193.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:多接入点协作的管理方法及相关装置
- 下一篇:一种应急指挥系统