一种分组密码算法实现的方法、装置和设备制造方法及图纸

技术编号:35097321 阅读:34 留言:0更新日期:2022-10-01 17:01
本申请公开了一种分组密码算法实现的方法、装置和设备。该方法包括:获取待加密的明文数据;利用第一分组密码算法对待加密的明文数据进行加密处理,获得密文数据,其中,利用指令集实现第一分组密码算法中轮函数的计算,轮函数包括非线性变换,指令集包括用于求解非线性变换的指令;输出密文数据。该方法可以提高分组密码算法实现的运算效率。组密码算法实现的运算效率。组密码算法实现的运算效率。

【技术实现步骤摘要】
一种分组密码算法实现的方法、装置和设备


[0001]本申请涉及计算机安全
,具体涉及分组密码算法实现的方法装置和设备。

技术介绍

[0002]分组密码算法是一种每次处理特定长度的一块数据的密码算法。例如,SM4算法是一种常用的分组密码算法,该算法主要用于数据加密。SM4算法包括加解密算法和密钥扩展算法,加解密算法和密钥扩展算法均采用32轮非线性迭代结构。
[0003]传统技术中,可以基于软件方式实现分组密码算法(例如,SM4算法),但这种实现方式中,需要执行大量操作以及执行相对应的大量指令,导致基于该方法实现分组密码算法时需要消耗更多的系统开销、且运算效率较低。

技术实现思路

[0004]本申请提供一种分组密码算法实现的方法、装置和设备,可以提高分组密码算法实现的运算效率。
[0005]本申请实施例提供一种分组密码算法实现的方法,包括:获取待加密的明文数据;利用第一分组密码算法对所述待加密的明文数据进行加密处理,获得密文数据,其中,利用指令集实现所述第一分组密码算法中轮函数的计算,所述轮函数包括非线性变换,所述指令集包括用于求解所述非线性变换的指令;输出所述密文数据。
[0006]可选的,所述利用第一分组密码算法对所述待加密的明文数据进行加密处理,获得密文数据,其中,利用指令集实现所述第一分组密码算法中轮函数的计算,包括:获得所述非线性变换的输入数据,其中,所述非线性变换的输入数据是根据轮密钥和所述明文数据确定的,所述非线性变换的输入数据是第一有限域中的数据,所述第一有限域是所述第一密码分组算法的有限域;在第二有限域中,利用所述指令集对所述非线性变换的输入数据实现所述非线性变换,获得所述非线性变换的结果,其中,所述非线性变换的结果是所述第二有限域中的数据,所述第二有限域是第二分组密码算法的有限域,所述第二有限域与所述第一有限域存在同构关系,所述第一分组密码算法与所述第二分组密码算法不同;根据所述非线性变换的结果,获得所述密文数据,所述密文数据是所述第一有限域中的数据。
[0007]可选的,所述非线性变换包括第一仿射变换和第一逆仿射变换,所述在第二有限域中,利用所述指令集实现所述非线性变换,获得所述非线性变换的结果,包括:利用所述指令集中的第一指令对第一数据、第二数据和所述非线性变换的输入数据执行所述第一仿射变换,获得所述第一仿射变换结果,其中,所述第一数据是根据同构矩阵将预设矩阵映射至所述第二有限域中的数据,所述第二数据是根据所述同构矩阵将预设向量映射至所述第二有限域中的数据,所述同构矩阵用于指示所述同构关系;利用所述指令集中的第二指令对所述预设矩阵、所述预设向量和所述第一仿射变换结果执行所述第一逆仿射变换,获得所述非线性变换的结果。
[0008]可选的,所述非线性变换包括第一仿射变换、第二仿射变换和求逆变换,所述在第二有限域中,利用所述指令集实现所述非线性变换,获得所述非线性变换的结果,包括:利用所述指令集中的第一指令对第一数据、第二数据和所述输入数据的映射结果执行第一仿射变换,获得所述第一仿射变换结果,其中,所述输入数据的映射结果是根据同构矩阵将所述输入数据映射至所述第二有限域中的数据,所述第一数据是根据同构矩阵将预设矩阵映射至所述第二有限域中的数据,所述第二数据是根据所述同构矩阵将预设向量映射至所述第二有限域中的数据,所述同构矩阵用于指示所述同构关系;利用所述指令集中的第二指令对所述第一仿射变换结果执行所述求逆变换,获得所述求逆变换的结果;利用所述第一指令对所述第一数据、所述第二数据和所述求逆变换的结果执行第二仿射变换,获得所述非线性变换的结果。
[0009]可选的,所述轮函数还包括线性变换,所述根据所述非线性变换的结果,获得所述密文数据,包括:对所述非线性变换的结果执行所述线性变换,获得所述线性变换的结果;对所述线性变换的结果和所述第一分组密码算法的内部状态执行异或操作,获得所述轮函数的输出结果,所述第一分组密码算法的内部状态与所述非线性变换的输入数据关联;当所述轮密钥为所述第一分组密码算法中最后一轮迭代计算所利用的密钥时,对所述第一分组密码算法中最后四轮迭代计算获得的轮函数的输出结果的映射结果进行反序排列,并将所述反序排列获得的结果确定为所述密文数据,任意一轮迭代计算获得的轮函数的输出结果的映射结果是利用所述同构矩阵将所述任意一轮迭代计算获得的轮函数的输出结果映射至所述第一有限域中的结果。
[0010]可选的,所述对所述非线性变换的结果执行所述线性变换,获得所述线性变换的结果,包括:对所述非线性变换的结果执行循环移位操作,获得所述循环移位操作结果;利用所述第一指令根据线性预设矩阵集合对所述循环移位操作结果执行所述线性变换,获得所述线性变换的结果,所述预设矩阵集合所包括的预设矩阵的数目与所述循环移位操作的结果关联。
[0011]可选的,所述非线性变换包括第一仿射变换和第一逆仿射变换,所述在第二有限域中,利用所述指令集对所述非线性变换的输入数据实现所述非线性变换,获得所述非线性变换的结果,包括:
[0012]利用所述指令集中的第一指令对第一数据、第二数据和所述输入数据的映射结果执行所述第一仿射变换,获得所述第一仿射变换结果,其中,所述输入数据的映射结果是根据同构矩阵将所述输入数据映射至所述第二有限域中的数据,所述第一数据是根据同构矩阵将预设矩阵映射至所述第二有限域中的数据,所述第二数据是根据所述同构矩阵将预设向量映射至所述第二有限域中的数据,所述同构矩阵用于指示所述同构关系;对所述第一仿射变换结果执行循环移位操作,获得所述循环移位操作结果;利用所述指令集中的第二指令对所述循环移位操作结果、第三数据和第四数据执行所述第一逆仿射变换,获得所述非线性变换的结果,其中,所述第三数据是将预设矩阵集合与所述预设矩阵的点乘结果映射至所述第二有限域中的数据,所述第四数据是将所述预设矩阵集合和所述预设向量映射至所述第二有限域中的数据。
[0013]可选的,所述根据所述非线性变换的结果,获得所述密文数据,包括:对所述非线性变换的结果和所述第一分组密码算法的内部状态执行异或操作,获得所述轮函数的输出
结果,所述第一分组密码算法的内部状态与所述非线性变换的输入数据关联;当所述轮密钥为所述第一分组密码算法中最后一轮迭代计算所利用的密钥时,对所述第一分组密码算法中最后四轮迭代计算获得的轮函数的输出结果的映射结果进行反序排列,并将所述反序排列获得的结果确定为所述密文数据,任意一轮迭代计算获得的轮函数的输出结果的映射结果是利用所述同构矩阵将所述任意一轮迭代计算获得的轮函数的输出结果映射至所述第一有限域中的结果。
[0014]可选的,所述方法还包括:利用所述指令集中的第一指令和所述同构矩阵将所述非线性变换的输入数据映射至所述第二有限域中,获得所述输入数据的映射结果。
[0015]可选的,所述第一分组密码算法为国密SM4算法,所述第二分组密码算法为高级数据加密标准AES。
[0016]可选的,所述指令集为GFNI指令集,所述第一指令为VGF2P8本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分组密码算法实现的方法,其特征在于,包括:获取待加密的明文数据;利用第一分组密码算法对所述待加密的明文数据进行加密处理,获得密文数据,其中,利用指令集实现所述第一分组密码算法中轮函数的计算,所述轮函数包括非线性变换,所述指令集包括用于求解所述非线性变换的指令;输出所述密文数据。2.根据权利要求1所述的方法,其特征在于,所述利用第一分组密码算法对所述待加密的明文数据进行加密处理,获得密文数据,其中,利用指令集实现所述第一分组密码算法中轮函数的计算,包括:获得所述非线性变换的输入数据,其中,所述非线性变换的输入数据是根据轮密钥和所述明文数据确定的,所述非线性变换的输入数据是第一有限域中的数据,所述第一有限域是所述第一密码分组算法的有限域;在第二有限域中,利用所述指令集对所述非线性变换的输入数据实现所述非线性变换,获得所述非线性变换的结果,其中,所述非线性变换的结果是所述第二有限域中的数据,所述第二有限域是第二分组密码算法的有限域,所述第二有限域与所述第一有限域存在同构关系,所述第一分组密码算法与所述第二分组密码算法不同;根据所述非线性变换的结果,获得所述密文数据,所述密文数据是所述第一有限域中的数据。3.根据权利要求2所述的方法,其特征在于,所述非线性变换包括第一仿射变换和第一逆仿射变换,所述在第二有限域中,利用所述指令集实现所述非线性变换,获得所述非线性变换的结果,包括:利用所述指令集中的第一指令对第一数据、第二数据和所述非线性变换的输入数据执行所述第一仿射变换,获得所述第一仿射变换结果,其中,所述第一数据是根据同构矩阵将预设矩阵映射至所述第二有限域中的数据,所述第二数据是根据所述同构矩阵将预设向量映射至所述第二有限域中的数据,所述同构矩阵用于指示所述同构关系;利用所述指令集中的第二指令对所述预设矩阵、所述预设向量和所述第一仿射变换结果执行所述第一逆仿射变换,获得所述非线性变换的结果。4.根据权利要求2所述的方法,其特征在于,所述非线性变换包括第一仿射变换、第二仿射变换和求逆变换,所述在第二有限域中,利用所述指令集实现所述非线性变换,获得所述非线性变换的结果,包括:利用所述指令集中的第一指令对第一数据、第二数据和所述输入数据的映射结果执行第一仿射变换,获得所述第一仿射变换结果,其中,所述第一数据是根据同构矩阵将预设矩阵映射至所述第二有限域中的数据,所述第二数据是根据所述同构矩阵将预设向量映射至所述第二有限域中的数据,所述同构矩阵用于指示所述同构关系,所述输入数据的映射结果是根据同构矩阵将所述输入数据映射至所述第二有限域中的数据;利用所述指令集中的第二指令对所述第一仿射变换结果执行所述求逆变换,获得所述求逆变换的结果;利用所述第一指令对所述第一数据、所述第二数据和所述求逆变换的结果执行第二仿射变换,获得所述非线性变换的结果。
5.根据权利要求2至4任一项所述的方法,其特征在于,所述轮函数还包括线性变换,所述根据所述非线性变换的结果,获得所述密文数据,包括:对所述非线性变换的结果执行所述线性变换,获得所述线性变换的结果;对所述线性变换的结果和所述第一分组密码算法的内部状态执行异或操作,获得所述轮函数的输出结果,所述第一分组密码算法的内部状态与所述非线性变换的输入数据关联;当所述轮密钥为所述第一分组密码算法中最后一轮迭代计算所利用的密钥时,对所述第一分组密码算法中最后四轮迭代计算获得的轮函数的输出结果的映射结果进行反序排列,并将所述反序排列获得的结果确定为所述密文数据,任意一轮迭代计算获得的轮函数的输出结果的映射结果是利用所述同构矩阵将所述任意一轮迭代计算获得的轮函数的输出结果映射至所述第一有限域中的结果。6.根据权利要求5所述的方法,其特征在于,所述对所述非线性变换的结果执行所述线性变换,获得所述线性变换的结果,包括:对所述非线性变换的结果执行循环移位操作,获得所述循环移位操作结果;利用所述第一指令根据预设矩阵集合对所述循环移位操作结果执行所述线性变换,获得所述线性变换的结果,所述预设矩阵集合所包括的预设...

【专利技术属性】
技术研发人员:王宇辰洪澄
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1