一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种国密SM4分组密码算法的加密优化方法及装置

2022-06-01 08:44:10 来源:中国专利 TAG:

一种国密sm4分组密码算法的加密优化方法及装置
技术领域
1.本发明属于加密优化技术领域,具体涉及一种国密sm4分组密码算法的加密优化方法及装置。
背景技术
2.本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
3.随着计算机网络和通信的高速发展,安全多方计算使用场景日益丰富,在电子选举、门限签名、电子拍卖等众多场景下都需要用到安全多方计算。sm4算法是商用分组密码算法标准,应用范围十分广泛。因此,利用安全多方计算高效地实现sm4算法加密不仅用途广泛,也是生产生活中的迫切需求。
4.但据发明人了解,目前互不信任的双方在不知道对方所掌握的消息下获得sm4加密后的密文过程较为复杂,具有较大的线上交互规模,运算速度低,运算成本高,且双方各自所持有的消息容易泄露。


技术实现要素:

5.本发明为了解决上述问题,提出了一种国密sm4分组密码算法的加密优化方法及装置,本发明采用了普及率最高的姚氏乱码电路协议作为安全多方计算协议,利用姚氏乱码电路协议的优化和sm4算法门电路实现的优化,能够实现sm4算法的安全多方加密,且减少线上交互规模,进而加快了运算速度,降低了运算成本。
6.根据一些实施例,本发明采用如下技术方案:
7.一种国密sm4分组密码算法的加密优化方法,包括以下步骤:
8.每一轮加密过程中,对轮函数进行以下优化:
9.复用aes的s盒中的非线性变换部分作为sm4算法的s盒的非线性变换部分;
10.将非线性变换之前的仿射变换和线性变换合成一个仿射变换,将非线性变换之后的线性变换和仿射变换合成一个仿射变换;
11.通过启发式算法减少两个新的仿射变换所需的异或门个数;
12.将线性层部分转换为矩阵,并通过启发式算法减少门电路所需异或门个数。
13.作为可选择的实施方式,还包括利用aby库作为姚氏乱码电路实现的平台,利用乱码行缩减技术、freexor技术或半门技术对姚氏乱码电路进行优化的步骤。
14.作为进一步的限定,所述步骤与每一轮加密过程中,对轮函数进行的优化步骤并行。
15.作为可选择的实施方式,复用aes的s盒中的非线性变换部分作为sm4算法的s盒的非线性变换部分的具体过程包括:先对sm4算法的s盒的输入进行仿射变换,然后进入aes算法的s盒,再对aes算法的s盒的输出进行仿射变换,得到sm4算法的s盒的输出。
16.作为进一步的限定,对于aes算法的s盒,将求逆部分分解成一个顶层线性变换、非
线性变换和一个底层线性变换的组合。
17.作为进一步的限定,所述启发式算法为启发式的贪心算法。
18.作为可选择的实施方式,将线性层部分转换为矩阵的具体过程包括,将线性变换用矩阵表示,使用启发式的贪心算法,找到减少异或门数量以实现线性变换的电路。
19.一种国密sm4分组密码算法的加密优化装置,包括:
20.非线性层优化模块,被配置为复用aes的s盒中的非线性变换部分作为sm4算法的s盒的非线性变换部分;将非线性变换之前的仿射变换和线性变换合成一个仿射变换,将非线性变换之后的线性变换和仿射变换合成一个仿射变换;通过启发式算法减少两个新的仿射变换所需的异或门个数;
21.线性层优化模块,被配置为将线性层部分转换为矩阵,并通过启发式算法减少门电路所需异或门个数。
22.一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成上述方法中的步骤。
23.一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成上述方法中的步骤。
24.与现有技术相比,本发明的有益效果为:
25.本发明采用了普及率最高的姚氏乱码电路协议作为安全多方计算协议。和传统的sm4算法的安全多方计算相比,本发明从两个方向进行优化,使得计算更加高效。
26.本发明采用aby库方案,可以轻松的实现乱码行缩减、freexor和half gate等目前对姚氏乱码电路优化的主流方案,不断降低查找表规模,把大量的线上交互运算转移到本地计算,大大减少了安全多方计算两方互相通信的消息量,从而提高了计算速度。
27.本发明通过对sm4算法门电路非线性层和线性层的优化,可以减少sm4算法电路实现中与门的数量,并减少其他门(异或门)数量。
28.本发明能够实现互不信任的双方在不知道对方所掌握的消息下获得sm4加密后的密文。不仅保证了sm4算法加密的正确性,也确保通信双方各自所持有的消息没有被泄露。因安全多方计算的高速发展和国密对称密码算法sm4算法的快速普及,新型sm4算法的姚氏乱码电路实现适用于科学研究和工商业等多种环境和场合。本发明不仅实现了sm4算法的安全多方加密,与传统实现方法相比,通过多种优化方式减少线上交互规模,进而加快了运算速度,降低了运算成本。
29.此外,本发明对电路的实现和优化方法具有简洁化、模块化、独立化等特征,密码技术人员能够快速了解本发明工作原理并熟练使用该工具。同时,本发明对电路的实现和优化方法对目前几乎所有的对称加密算法适用,可以将本发明的实现和优化方法移植到其他密码算法的安全多方计算和电路优化过程中。
30.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
31.构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
32.图1为本实施例的优化步骤示意图;
33.图2为本实施例的效果图。
具体实施方式
34.下面结合附图与实施例对本发明作进一步说明。
35.应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
36.需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
37.首先进行术语解释,以使得本领域技术人员能够了解本发明的技术方案。
38.术语解释:
39.国密:sm4分组密码算法是我国政府采用的一种分组密码算法标准,由国家密码管理局发布,相关标准为gm/t 0002-2012《sm4分组密码算法》,已成为中国国家密码标准gb/t 32907-2016。
40.分组密码:加密方与解密方有相同密钥的一种加密体制,同一个密钥可以同时用作消息的加密和解密。
41.姚氏乱码电路:安全多方计算允许一个群组在不披露任意参与方私有输入的条件下实现联合计算。姚氏乱码电路协议是众多安全多方计算协议中普及率最高的协议。
42.另外,介绍一下必要

背景技术:

43.在密码学中,分组密码是一种对固定长度的比特组进行加密的确定性算法,也是许多密码算法协议设计中的基本组件,并被广泛地应用于加密大量数据。分组密码采用单个密钥,即同一个密钥可以同时用于加密和解密,加密方和解密方持有同一个密钥。
44.sm4算法分组长度为128比特,密钥长度为128比特,加密算法与密钥扩展算法均采用了非线性迭代结构,运算轮数为32轮。数据解密和数据加密的算法结构相同,只是轮密钥使用顺序相反,解密轮密钥是加密轮密钥的逆序。
45.设输入为x0,x1,x2,x3,每个xi(i=0,1,2,3)都是32比特,轮密钥rk为32比特,则轮函数f可表示为:
[0046][0047]
其中表示32比特异或。t是一个可逆变换,由非线性变换τ和线性变换l复合而成。
[0048]
非线性变换τ由4个并行的s盒组成。s盒为固定的8比特输入8比特输出的置换,记为sbox(
·
)。设输入为a=(a0,a1,a2,a3),每个ai(i=0,1,2,3)为8比特,输出为b=(b0,b1,b2,b3),每个bi(i=0,1,2,3)为8比特,则:
[0049]
(b0,b1,b2,b3)=τ(a)=(sbox(a0),sbox(a1),sbox(a2),sbox(a3))
[0050]
sbox数据为:
[0051][0052]
线性变换l的输入是非线性变换τ的输出。设输入b为32比特,输出c为32比特,则:
[0053][0054]
其中<<<代表左循环移位。
[0055]
加密算法:
[0056]
设明文输入为(x0,x1,x2,x3),密文输出为(y0,y1,y2,y3),轮密钥为rki,i=0,1,2,...,31,则加密算法运算过程如下:
[0057]
x
i 4
=f(xi,x
i 1
,x
i 2
,x
i 3
,rki),i=0,1,2,...,31
[0058]
然后再经过反序变换得到密文:
[0059]
(y0,y1,y2,y3)=(x
35
,x
34
,x
33
,x
32
)
[0060]
解密算法:
[0061]
解密算法与加密算法结构相同,不同的是轮密钥使用顺序反序。
[0062]
密钥扩展算法:
[0063]
设初始密钥为mk=(mk0,mk1,mk2,mk3),mki(i=0,1,2,3)为32比特,初始密钥异或系统参数后,进入轮函数。轮函数与加密算法轮函数类似,但线性变换稍有不同。
[0064]
安全多方计算允许一个群组在不披露任意参与方私有输入的条件下实现联合计算。参与方约定一个待计算的函数,随后应用安全多方计算协议,将每个人的秘密输入协议中,联合计算得到函数的输出,同时不泄露私有输入。安全多方计算最早由姚期智教授于20世纪80年代提出,并同时提出了姚氏乱码电路(gc)协议。姚氏乱码电路是最基础和广为人知的安全多方计算协议。姚氏乱码电路协议将函数表示为查找表,假设电路生成方和电路计算方各拥有一个门的一个输入,对于一个门的两个输入比特,电路生成方随机选择两个密钥,并用这两个密钥加密这个门的输出比特,生成一个查找表,再经过随机置换后发送给电路计算方。电路计算方通过不经意传输获得对应密钥完成解密从而进行解密获得这个门输出的真实值,且电路计算方无法获得电路生成方的输入值。
[0065]
下面介绍本发明的主要内容:
[0066]
本发明采用了普及率最高的姚氏乱码电路协议作为安全多方计算协议。和传统的
sm4算法的安全多方计算相比,本发明从两个方向进行优化,使得计算更加高效。
[0067]
第一个方向是姚氏乱码电路协议的优化。本发明采用aby库方案,可以轻松的实现乱码行缩减、freexor和half gate等目前对姚氏乱码电路优化的主流方案,不断降低查找表规模,把大量的线上交互运算转移到本地计算,大大减少了安全多方计算两方互相通信的消息量,从而提高了计算速度。
[0068]
第二个方向是sm4算法门电路实现的优化。姚氏乱码电路协议的运行时间主要受电路中门的数量的影响,特别是与门数量。因此本发明着重减少sm4算法电路实现中与门的数量,然后减少其他门(异或门)数量。对于sm4算法轮函数中的非线性层部分,本发明利用高级加密标准aes算法的s盒和sm4算法s盒结构相似这一特点,将sm4算法的s盒表示成:对输入进行仿射变换,经过aes的s盒,再进行仿射变换的形式,最终可以使用116个门(包含与门、异或门、非门,其中32个为与门,84个为异或门,非门不计数)实现sm4算法的s盒门电路。aes的s盒可以表示成线性变换 非线性变换 线性变换的形式。因此,本发明选择复用aes的s盒中的非线性变换部分,然后将非线性变换之前的仿射变换和线性变换合成一个仿射变换,将非线性变换之后的线性变换和仿射变换合成一个仿射变换,再通过启发式算法减少实现这两个新的仿射变换所需的异或门个数。对于sm4算法轮函数中的线性层部分,本发明将其转换成矩阵之后,通过启发式算法减少实现其门电路所需异或门个数,从原来所需128个异或门减少到88个。
[0069]
具体实现过程如图1所示:
[0070]
在第一个方向,即姚氏乱码电路协议的优化上,在姚氏乱码电路中,电路生成方对每一条导线wi指定两个密钥和分别代表真实值为0和1时的密钥。而对整个布尔电路,每个门的输入导线wi,wj,输出w
t
,电路生成方构建加密查找表:
[0071][0072][0073][0074][0075]
g表示相应门输出的真实值,目前一般采用哈希函数实现加密算法enc。为了便捷的采用目前对姚氏乱码电路优化的多种方法,本实施例采用aby库作为姚氏乱码电路实现的基本框架,并简单介绍采用的三种目前主流的对姚氏乱码电路的优化方法。
[0076]
第一种为乱码行缩减技术,将查找表中的加密算法替换为对输入导线的级联求哈希值,再异或输出导线的密钥,即:
[0077][0078][0079]
[0080][0081]
然后适当的选择k
t
的值,使得乱码表四个密文中的第一个密文(经过标志置换排序后的第一个密文)永远为0,因此电路生成方不再需要向电路计算方发送第一个密文。
[0082]
第二种为freexor技术,该技术要求姚氏乱码电路生成所有导线的两个密钥时,这两个密钥的偏移量(异或值)相等。对于一个异或门,异或门的输出导线的密钥分别为两个输入导线的密钥的异或值。因此,电路计算方获得一个异或门的两个输入的密钥后,可以不需任何加解密处理直接获得输出导线的密钥。freexor技术使得所有异或门的查找表规模降为0,大大减少了线上交互信息量,显著提高计算速度。
[0083]
第三种为半门技术,为对与门优化的一个技术,且与freexor技术兼容。半门技术将每个与门表示成两个半门的异或的结果。每个半门都是一个与门,且参与方之一已知此半门的一个输入。半门的乱码表包含2个密文,应用乱码行缩减技术可减少为1个,因此可以使用两个密文表示与门的查找表。
[0084]
考虑到如果安全多方计算中的一方知道sm4算法加密的密钥,那么他可以在本地计算所有的轮密钥,而不需要与其他方进行线上交互,从而大大减少线上交互成本和计算时间,所以我们以此作为安全多方计算的场景,这也是实际中最常见的场景,即:电路生成方拥有明文,电路计算方拥有密钥,电路计算方在不知道明文的情况下获得sm4算法加密之后的密文。因此,在本发明中,电路计算方拥有密钥,并在本地运行密钥扩展算法获得轮密钥,再通过不经意传输(oblivious transfer)协议获得对应的密钥(导线标签)值。
[0085]
sm4算法采用了广义feistel结构,每一轮加密都是对自身状态的一个迭代变化,所以我们考虑轮函数中各组件的优化情况。在轮函数中,我们主要针对s盒(非线性层τ)和线性层进行优化。
[0086]
在第二个方向,即sm4算法门电路实现的优化上:
[0087]
考虑到如果安全多方计算中的一方知道sm4算法加密的密钥,那么他可以在本地计算所有的轮密钥,而不需要与其他方进行线上交互,从而大大减少线上交互成本和计算时间,所以我们以此作为安全多方计算的场景,这也是实际中最常见的场景,即:电路生成方拥有明文,电路计算方拥有密钥,电路计算方在不知道明文的情况下获得sm4算法加密之后的密文。因此,在本发明中,电路计算方拥有密钥,并在本地运行密钥扩展算法获得轮密钥,再通过不经意传输(oblivious transfer)协议获得对应的密钥(导线标签)值。
[0088]
sm4算法采用了广义feistel结构,每一轮加密都是对自身状态的一个迭代变化,所以我们考虑轮函数中各组件的优化情况。在轮函数中,本实施例主要针对s盒(非线性层τ)和线性层进行优化。
[0089]
首先,优化s盒:
[0090]
sm4算法的s盒,是对输入进行一个仿射变换,然后对结果在不可约多项式上求逆,再进行仿射变换。而aes算法的s盒是对输入在不可约多项式上求逆再进行仿射变换。因此两个算法s盒的构造方式非常相似。因此,可以利用aes算法的s盒的门电路实现方式,进行改造,以获得sm4算法的s盒的电路实现。具体来说,先对sm4算法的s盒的输入进行仿射变换,然后进入aes算法的s盒,再对aes算法的s盒的输出进行仿射变换,即可得到sm4算法的s盒的输出。即:
[0091]ssm4
(x)=m2·saes
(m1·
x c1) c2[0092]
m1和m2是在f(2)上8
×
8的矩阵,x、c1和c2是在f(2)上的列向量。具体值如下:
[0093][0094]
对于aes算法的s盒,可以将求逆部分分解成一个顶层线性变换、非线性变换、一个底层线性变换的组合。具体结构如下:
[0095]saes
(x)=b
·
f(u
·
x) t
[0096]
其中,u为顶层线性变换,可以表示成一个f(2)上22
×
8的矩阵。f为非线性变换,输入为22比特,输出为18比特,包含了32个与门和30个异或门。b为底层线性变换,可以表示成一个f(2)上8
×
18的矩阵。t=[11000110]
t
。u和b的具体值如下:
[0097][0098][0099]
将aes算法的s盒的表达式带入到sm4算法的s盒中,可以得到:
[0100]ssm4
(x)=(m2·
b)
·f·
((u
·
m1)
·
x u
·
c1) m2·
t c2[0101]
我们可以将m2·
b合成一个f(2)上8
×
18矩阵,将u
·
m1合成一个f(2)上22
×
8的矩阵。具体值如下:
[0102][0103][0104]u·
c1=[1 1 1 1 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0]
t
[0105]
m2·
t c2=[1 1 0 1 0 0 1 1]
t
[0106]
然后我们寻找实现u
·
m1和m2·
b这两个线性变换的异或门尽可能少的电路。使用启发式的贪心算法,我们寻找到一个23个异或门实现u
·
m1的电路和一个31个异或门实现m2·
b的电路。因此使用116个门(其中32个与门,84个异或门)可实现sm4算法的s盒的电路。
[0107]
线性层的优化:
[0108]
线性变换l的输入是非线性变换τ的输出。设输入b为32比特,输出c为32比特,则:
[0109][0110]
其中《《《代表左循环移位。因此,原始的一次轮函数的线性变换需要128个异或门。为了尽可能的减少异或门的个数,提高协议运行速度,我们把线性变换用矩阵表示,然后使用与上一节相同的启发式的贪心算法,找到了一条88个异或门实现线性变换的电路。线性变换的矩阵表示如下:
[0111][0112]
指定交互的两方分别为电路生成方server和电路计算方client。电路生成方拥有sm4加密的明文,电路计算方拥有sm4加密的密钥,并在本地计算出轮密钥。对于轮密钥所对
应的比特,电路计算方client通过不经意传输协议获得电路生成方server产生的密钥。分别在程序中输入明文和密钥,将自动完成client和server两方的交互并得到密文。
[0113]
如图2所示,左边终端作为电路生成方server,右边终端作为电路计算方client。为了尽可能避免网络时延的影响,在本实施例中,使用localhost(127.0.0.1),端口7766实现双方通信。我们采用国家标准gb/t39207-2016提供的sm4算法的运算示例,电路生成方拥有128比特明文0x0123456789abcdeffedcba9876543210,电路计算方拥有128比特密钥0x0123456789abcdeffedcba9876543210,电路生成方和电路计算方分别经过1.01秒和0.97秒获得密文0x681edf34d206965e86b3e94f536e4246。
[0114]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0115]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0116]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0117]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0118]
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献