发明内容
本发明要解决的技术问题在于,针对现有技术的上述面S盒的面积大、功耗大的缺陷,提供一种S盒及其构造方法,面积小、功耗小。
本发明解决其技术问题所采用的技术方案是:构造一种S盒的构造方法,包括:
S10.将S盒的输入数据作为第一数据,并对第一数据进行同构变换以生成第二数据,以将域GF(28)中多项式基表示的元素转换成域GF(24)中两个基本基表示的元素;
S20.将所述第二数据在域GF(28)上进行求逆运算以生成第三数据;
S30.对所述第三数据进行仿射变换以生成第四数据,以将域GF(24)中两个冗余基表示的元素转换成一个域GF(28)中多项式基表示的元素,并将所述第四数据作为S盒的输出数据。
优选地,在所述步骤S10中,根据公式1进行同构变换:
out1=δf·in1 公式1
其中,in1为第一数据,out1为第二数据,
优选地,所述步骤S20包括:
S21.对所述第二数据进行求幂运算,以生成第一中间数据;
S22.对所述第一中间数据在域GF(24)上进行求逆运算,以生成第二中间数据;
S23.对所述第二中间数据进行两个GF(24)上的乘法运算,以生成第三数据。
优选地,在所述步骤S21中,根据下列公式计算第一中间数据:
d0=H1,2∨L1,2+H3,4∨L3,4+h2∨l2+h3l3;
d1=H1,2∨L1,2+H1,3L1,3+h3∨l3+h4∨l4;
d2=H1,3∨L1,3+H1,4L1,4+H2,3∨L2,3+h4∨l4;
d3=H1,4∨L1,4+H2,3∨L2,3+H2,4L2,4+h1∨l1;
d4=H2,4∨L2,4+H3,4∨L3,4+h1∨l1+h2l2;
其中,第二数据为{h,l},h=(h1,h2,h3,h4),l=(l1,l2,l3,l4),d=(d0,d1,d2,d3,d4)为第一中间数据,Li,j=li+lj,Hi,j=hi+hj,1≤i<j≤4,∨为逻辑或。
优选地,在所述步骤S22中,根据下列公式计算第二中间数据:
e0=(d1∨d4)(d2∨d3);
e1=((d4+1)(d1+d2))∨(d0d4(d2∨d3));
e2=((d3+1)(d2+d4))∨(d0d3(d1∨d4));
e3=((d2+1)(d1+d3))∨(d0d2(d1∨d4));
e4=((d1+1)(d3+d4))∨(d0d1(d2∨d3));
其中,e=(e0,e1,e2,e3,e4)为第二中间数据。
优选地,在所述步骤S23中,根据下列公式计算第三数据:
h0′=L1,4F1,4+L2,3F2,3;
l0′=H1,4F1,4+H2,3F2,3;
h1′=l1F0,1+L2,4F2,4;
l1′=h1F0,1+H2,4F2,4;
h2′=l2F0,2+L3,4F3,4;
l2′=h2F0,2+H3,4F3,4;
h3′=l3F0,3+L1,2F1,2;
l3′=h3F0,3+H1,2F1,2;
h4′=l4F0,4+L1,3F1,3;
l4′=h4F0,4+H1,3F1,3;
其中,第三数据为{h′,l′},h′=(h0′,h1′,h2′,h3′,h4′),l′=(l0′,l1′,l2′,l3′,l4′),Fm,n=fm+fn,0≤m<n≤4。
优选地,在所述步骤S30中,根据公式2进行仿射变换:
out3=δl·in3 公式2
其中,in3为第三数据,out3为第四数据,
本发明还构造一种S盒,包括:
同构变换模块,用于将S盒的输入数据作为第一数据,并对第一数据进行同构变换以生成第二数据,以将域GF(28)中多项式基表示的元素转换成域GF(24)中两个基本基表示的元素;
有限域求逆模块,用于将所述第二数据在域GF(28)上进行求逆运算以生成第三数据;
仿射变换模块,用于对所述第三数据进行仿射变换以生成第四数据,以将域GF(24)中两个冗余基表示的元素转换成一个域GF(28)中多项式基表示的元素,并将所述第四数据作为S盒的输出数据。
优选地,
所述同构变换模块,用于根据公式1对第一数据进行同构变换,以生成第二数据;
所述仿射变换模块,用于根据公式2对所述第三数据进行仿射变换,以生成第四数据;
out1=δf·in1 公式1
out3=δl·in3 公式2
其中,in1为第一数据,out1为第二数据,in3为第三数据,out3为第四数据,而且,
优选地,所述有限域求逆模块包括:
第一模块,用于对所述第二数据进行求幂运算,以生成第一中间数据;
第二模块,用于对所述第一中间数据在域GF(24)上进行求逆运算,以生成第二中间数据;
第三模块,用于对所述第二中间数据进行两个GF(24)上的乘法运算,以生成第三数据。
实施本发明的技术方案,利用伽罗瓦域GF(28)上的元素在PRR(Polynomial RingRepresentation,伽罗瓦域上的多项式环表示)下求逆的简易性,对元素进行了多次基变换:NB(Normal Bases,基本基)→PRR,PRR→RRB(Redundantly Represented Basis,冗余表示基),这种S盒的构造方法使得S盒在硬件实现时面积减小、功耗降低,减小了用户的实现代价。
具体实施方式
图1是本发明S盒的构造方法实施例一的流程图,该实施例的S盒的构造方法包括以下步骤:
S10.将S盒的输入数据作为第一数据,并对第一数据进行同构变换以生成第二数据,以将域GF(28)中多项式基表示的元素转换成域GF(24)中两个基本基表示的元素;
S20.将所述第二数据在域GF(28)上进行求逆运算以生成第三数据;
S30.对所述第三数据进行仿射变换以生成第四数据,以将域GF(24)中两个冗余基表示的元素转换成一个域GF(28)中多项式基表示的元素,并将所述第四数据作为S盒的输出数据。
其中,步骤S20具体包括:
S21.对所述第二数据进行求幂运算,以生成第一中间数据;
S22.对所述第一中间数据在域GF(24)上进行求逆运算,以生成第二中间数据;
S23.对所述第二中间数据进行两个GF(24)上的乘法运算,以生成第三数据。
实施该实施例的技术方案,利用伽罗瓦域GF(28)上的元素在PRR(PolynomialRing Representation,伽罗瓦域上的多项式环表示)下求逆的简易性,对元素进行了多次基变换:NB(Normal Bases,基本基)→PRR,PRR→RRB(Redundantly Represented Basis,冗余表示基),这种S盒的构造方法使得S盒在硬件实现时面积减小、功耗降低,减小了用户的实现代价。
具体地,在步骤S10中,可根据公式1进行同构变换;
out1=δf·in1 公式1
其中,in1为8比特的第一数据,out1为8比特的第二数据,
关于步骤S20,结合图2,输入数据为a,即,同构变换后输出的第二数据out1,且a={h,l}为一个8比特的数据,其中,
h=(h1,h2,h3,h4),
l=(l1,l2,l3,l4),
该数据是NB形式。数据a的处理需要经过三个阶段:Stage 1,Stage2,Stage3,最后得到10比特的输出数据a-1={h′,l′},其中,
h′=(h0′,h1′,h2′,h3′,h4′),
l′=(l0′,l1′,l2′,l3′,l4′),
该数据是RRB形式。
在Stage 1阶段,对数据a={h,l}进行求幂运算,所生成的第一中间数据为PRR表示下的a17。选取域GF(24)上一个二次不可约多项式的根α,给定不可约多项式α2+μα+ν,那么有以下三个等式成立,其均是NB形式,且选取的基为{α16,α}:
a=hα16+lα
a16=lα16+hα
a17=hlμ2+(h+l)2ν。
选取域GF(24)中基于PRR表示的模多项式为P(x)=x5+1(G(x)=x+1,H(x)=x4+x3+x2+x1+1,P(x)=G(x)·H(x)),那么由NB到PRR之间的同构映射为φ,其矩阵表达式为:
则Stage 1所输出的第一中间数据d的表达式为:
d=(d0,d1,d2,d3,d4)=φ(a17)=φ(hlμ2+(h+l)2ν)。
然后,选取μ=β4+β,ν=β,根据h和l在NB{β4,β3,β2,β1}下表示
h=h4β4+h3β3+h2β2+h1β1,l=l4β4+l3β3+l2β2+l1β1,可以得到如下等式:
d0=(h1l2+h2l1+h3l4+h4l3+h1l1+h4l4)+(h1+l1+h3+l3+h4+l4);
d1=(h1l2+h2l1+h1l3+h3l1+h2l2+h4l4)+(h1+l1+h2+l2+h3+l3+h4+l4);
d2=(h1l3+h3l1+h1l4+h4l1+h2l3+h3l2+h2l2)+(h1+l1+h2+l2+h4+l4);
d3=(h1l4+h4l1+h2l3+h3l2+h2l4+h4l2+h3l3)+(h2+l2+h3+l3+h4+l4);
d4=(h2l4+h4l2+h3l4+h4l3+h1l1+h3l3)+(h1+l1+h2+l2+h3+l3)。
在Stage 2阶段,对所输入的第一中间数据d在域GF(24)上进行求逆运算,输出第二中间数据e=(e0,e1,e2,e3,e4),该数据也是PRR表示形式的,其中:
e0=(d1∨d4)(d2∨d3);
e1=((d4+1)(d1+d2))∨(d0d4(d2∨d3));
e2=((d3+1)(d2+d4))∨(d0d3(d1∨d4));
e3=((d2+1)(d1+d3))∨(d0d2(d1∨d4));
e4=((d1+1)(d3+d4))∨(d0d1(d2∨d3))。
其中,符号∨表示为或运算a∨b=a+b+ab。
另外,F运算对输入的第二中间数据e=(e0,e1,e2,e3,e4)进行由PRR到RRB的变换,由于Stage 3阶段所需要的数据类型为RRB表示,我们需要对e的形式进行转化,得到数据f=(f0,f1,f2,f3,f4),其中,
f0=e0,f1=e1,f2=e2,f3=e3,f4=e4。
该F运算还具有另外一个逻辑运算功能,即产生数据:
Fm,n=fm+fn。
由于满足0≤m<n≤4,可以得到10种不同的Fm,n的值:F0,1,F0,2,F0,3,F0,4,F1,2,F1,3,F1,4,F2,3,F2,4,F3,4。
在Stage 3阶段,进行两个GF(24)上的乘法运算,且数据均为RRB表示形式。按照乘法规则,我们可以得到一个10比特的第三数据a-1={h′,l′},而且,h′=(h0′,h1′,h2′,h3′,h4′)和l′=(l0′,l1′,l2′,l3′,l4′),其中,
h0′=L1,4F1,4+L2,3F2,3,
l0′=H1,4F1,4+H2,3F2,3,
h1′=l1F0,1+L2,4F2,4,
l1′=h1F0,1+H2,4F2,4,
h2′=l2F0,2+L3,4F3,4,
l2′=h2F0,2+H3,4F3,4,
h3′=l3F0,3+L1,2F1,2,
l3′=h3F0,3+H1,2F1,2,
h4′=l4F0,4+L1,3F1,3,
l4′=h4F0,4+H1,3F1,3。
其中,L运算产生数据Li,j=li+lj,其中1≤i<j≤4,即能得到6种不同的值(L1,2,L1,3,L1,4,L2,3,L2,4,L3,4),参与Stage 1和Stage 3的运算。H运算产生数据Hi,j=hi+hj,其中1≤i<j≤4,即能得到6种不同的值(H1,2,H1,3,H1,4,H2,3,H2,4,H3,4),参与Stage 1和Stage 3的运算。
在上述实施例的基础上,经过数学公式推导,数据d的计算过程可以化简为:
d0=H1,2∨L1,2+H3,4∨L3,4+h2∨l2+h3l3;
d1=H1,2∨L1,2+H1,3L1,3+h3∨l3+h4∨l4,
d2=H1,3∨L1,3+H1,4L1,4+H2,3∨L2,3+h4∨l4,
d3=H1,4∨L1,4+H2,3∨L2,3+H2,4L2,4+h1∨l1,
d4=H2,4∨L2,4+H3,4∨L3,4+h1∨l1+h2l2,
其中,第二数据为{h,l},h=(h1,h2,h3,h4),l=(l1,l2,l3,l4),d=(d0,d1,d2,d3,d4)为第一中间数据,Li,j=li+lj,Hi,j=hi+hj,1≤i<j≤4,∨为逻辑或。
数据e的计算过程为:
e0=(d1∨d4)(d2∨d3);
e1=((d4+1)(d1+d2))∨(d0d4(d2∨d3));
e2=((d3+1)(d2+d4))∨(d0d3(d1∨d4));
e3=((d2+1)(d1+d3))∨(d0d2(d1∨d4));
e4=((d1+1)(d3+d4))∨(d0d1(d2∨d3));
其中,e=(e0,e1,e2,e3,e4)为第二中间数据。
数据a-1={h′,l′}的计算过程为:
h0′=L1,4F1,4+L2,3F2,3,
l0′=H1,4F1,4+H2,3F2,3,
h1′=l1F0,1+L2,4F2,4,
l1′=h1F0,1+H2,4F2,4,
h2′=l2F0,2+L3,4F3,4,
l2′=h2F0,2+H3,4F3,4,
h3′=l3F0,3+L1,2F1,2,
l3′=h3F0,3+H1,2F1,2,
h4′=l4F0,4+L1,3F1,3,
l4′=h4F0,4+H1,3F1,3,
其中,第三数据为{h′,l′},h′=(h0′,h1′,h2′,h3′,h4′),l′=(l0′,l1′,l2′,l3′,l4′),Fm,n=fm+fn,0≤m<n≤4。
在一个具体实施例中,例如,根据图3A所示的结构获取d0,根据图3B所示的结构获取e1,根据图3C所示的结构获取h0′,应理解,其它元素的获取也可通过相应的加法器、乘法器、或门等所组成的逻辑结构获得。
最后,在步骤S30中,根据公式2进行仿射变换,所得到的第四数据即为S盒的输出数据。
out3=δl·in3 公式2
其中,in3为第三数据,out3为第四数据,
图4是本发明S盒实施例一的逻辑结构图,该实施例的S盒包括同构变换模块10、有限域求逆模块20和仿射变换模块30,其中,同构变换模块10用于将S盒的输入数据作为第一数据,并对第一数据进行同构变换以生成第二数据,以将域GF(28)中多项式基表示的元素转换成域GF(24)中两个基本基表示的元素;有限域求逆模块20用于将所述第二数据在域GF(28)上进行求逆运算以生成第三数据;仿射变换模块30用于对所述第三数据进行仿射变换以生成第四数据,以将域GF(24)中两个冗余基表示的元素转换成一个域GF(28)中多项式基表示的元素,并将所述第四数据作为S盒的输出数据。
优选地,同构变换模块10用于根据公式1对第一数据进行同构变换,以生成第二数据;仿射变换模块30用于根据公式2对所述第三数据进行仿射变换,以生成第四数据;
out1=δf·in1 公式1
out3=δl·in3 公式2
其中,in1为第一数据,out1为第二数据,in3为第三数据,out3为第四数据,而且,
优选地,有限域求逆模块包括第一模块、第二模块和第三模块。其中,第一模块用于对所述第二数据进行求幂运算,以生成第一中间数据;第二模块用于对所述第一中间数据在域GF(24)上进行求逆运算,以生成第二中间数据;第三模块用于对所述第二中间数据进行两个GF(24)上的乘法运算,以生成第三数据。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何纂改、等同替换、改进等,均应包含在本发明的权利要求范围之内。