一种轻量级8比特S盒的构造方法及其电路与流程

文档序号:25991432发布日期:2021-07-23 21:03阅读:344来源:国知局
一种轻量级8比特S盒的构造方法及其电路与流程
本发明提出了一种轻量级8比特s盒的构造方法及其电路,可应用于实现速度需求较高的密码算法,这类s盒的密码学性质安全、硬件实现代价小和运行速度快,属于通信
技术领域

背景技术
:s盒是一种多输出布尔函数,是构造密码算法极其重要的非线性部分,被广泛应用于多种密码方案中。在资源受限且通信速率要求较高的实际应用中,基于轻量级函数构造的8比特s盒具有极高的应用需求,这类s盒的硬件实现代价、运行速度和安全性具有同等重要的地位。本发明即提出了一种构造这类s盒的有效方法及小面积的电路实现。由于目前密码算法的设计一般仍遵循香农提出的混乱原则和扩散原则,大部分密码算法都采用了非线性s盒来达到混乱效果。s盒是定义在二元域上的具有n个输入、m个输出的布尔函数,本质上可看作如下映射通常简称为一个n×m的s盒。由于s盒是许多密码算法的唯一非线性模块,它的密码学性质将直接影响整个密码算法的安全性。例如,s盒的最大差分概率对应于密码算法的抵抗差分攻击的能力,最大差分概率越小的s盒安全性越高;s盒的最大线性概率对应于密码算法抵抗线性攻击的能力,最大线性概率越小的s盒抵抗线性攻击的能力越强,安全性越高;s盒代数免疫度对应于密码算法抵抗代数攻击的能力,一般认为代数免疫度高的s盒抵抗代数攻击的能力越强;s盒各组成分量的代数次数对应于密码算法抵抗立方攻击的能力,一般认为代数次数越高安全性越高。差分攻击、线性攻击、代数攻击以及立方攻击属于目前最有效几种攻击方法,因此上述密码学性质是s盒主要的安全性指标。随着s盒的规模m和n的值增大,一般认为生成的s盒的密码学性质越好,发现攻击所能利用的统计特性越困难。然而由于大s盒通常都采用查表实现,算法的存储量(至少为m2n比特)随着m和n的值增大。自aes算法以来比较流行的是8×8的s盒,这类s盒的研究结果丰富。其中最常用的构造方法是基于有限域gf(2n)上的逆映射f(x)=ax-1+b,利用该线性方法构造的s盒抵抗差分攻击、线性攻击及代数攻击的密码学性质都可以达到最佳情形。现有大部分密码算法如aes、camellia、sms4等都采用了这种类型的s盒。然而随着通信技术的迅速发展,尤其是射频识别设备、传感器网络等低成本低功耗资源受限的应用场景的需求扩大,已有8×8s盒的硬件实现开销过大根本无法适用,例如常用的基于有限域逆函数构造的密码学性质达到最优的8×8s盒的硬件实现平均需要至少500门。针对这类应用领域设计的4×4s盒也逐渐应用于密码算法,如lblock、present算法等。同时随着5g网络的普及,通信设备的多元化、通信速率的极速化和通信时延的极致化都对面向字节的密码算法的设计和参数选取提出了挑战,在这种应用场景下,用4×4的函数构造8×8的s盒是一种折中保证s盒硬件实现代价、运行速度和密码学性质的最优方法。目前用4×4的函数构造8×8的s盒的主要方法为随机生成或者直接迭代构造并测试,其安全性指标和性能难以保证。衡量s盒密码学安全性的指标可以如下定义:(1)差分概率函数和线性概率函数令f表示从到的函数。对任意的a,b,γa和定义f的差分概率函数dpf(a,b)和线性概率函数lpf(γa,γb)如下:其中,x·y表示x和y的比特乘积的校验值(0或者1)。(2)最大差分概率和线性概率最大差分概率p=maxa≠0,bdpf(a,b),最大线性概率(3)代数免疫度令f表示从到的函数,并定义f的代数免疫度为:其中deg表示布尔函数的代数次数,表示所有2n元布尔函数的集合,g表示任取的2n元布尔函数使得gr(f)集合中所有输入对应的输出都为0。技术实现要素:针对面向字节的密码算法应用,本发明构造的s盒设计理念注重提高硬件实现的效率,尤其是注重于减少硬件实现所占用的面积,同时需要保持s盒设计的其他密码安全指标具有好的性能。本发明的设计方法是用3轮平衡的feistel结构,其中feistel结构使用3个不同的4-比特输入4-比特输出的函数,以及比特级别的位置变换来保证分布的均匀性。本发明的技术方案如下:一种轻量级8比特s盒的构造方法,在4×4的函数迭代构造的基础上采用比特变换的方式构造8×8的s盒。进一步地,所述在4×4的函数迭代构造的基础上采用比特变换的方式构造8×8的s盒,包括:设x0x1x2x3x4x5x6x7为s盒的8比特输入信息,y0y1y2y3y4y5y6y7为s盒的8比特输出,将x4x5x6x7经过f0函数变换的输出分别异或x0x1x2x3并更新x0x1x2x3的值;将x0x1x2x3经过f1函数变换的输出分别异或x4x5x6x7并更新x4x5x6x7的值;将x4x5x6x7过f2函数变换的输出分别异或x0x1x2x3并更新x0x1x2x3的值;进行比特变换,将x0x1x2x3x4x5x6x7分别作为y0y1y2y3y4y5y6y7,输出。进一步地,所述f0函数采用以下计算方式:其中,x0x1x2x3为f0函数的输入,y0y1y2y3为f0函数的输出。进一步地,所述f1函数采用以下计算方式:其中,x0x1x2x3为f1函数的输入,y0y1y2y3为f1函数的输出。进一步地,所述f2函数采用以下计算方式:其中,x0x1x2x3为f2函数的输入,y0y1y2y3为f2函数的输出。一种采用上述方法构造的轻量级8比特s盒电路,其包括:输入端、f0函数模块、f1函数模块、f2函数模块、三个异或单元a0a1a2、比特变换单元b、输出端;其中:输入端包括x0x1x2x3x4x5x6x7,分为两个部分:x0x1x2x3和x4x5x6x7;x4x5x6x7与f0函数模块的输入端按比特连接,f0函数模块的输出端与异或单元a0的输入端按比特连接,x0x1x2x3作为另一部分输入与a0的输入端按比特连接;a0将两部分输入的各4个比特,依次异或生成4个比特的输出并更新x0x1x2x3;a0的输出端与f1函数模块的输入端按比特连接,f1函数模块的输出端与异或单元a1的输入端按比特连接,x4x5x6x7作为另一部分输入与a1的输入端按比特连接;a1将两部分输入的各4个比特,依次异或生成4个比特的输出并更新x4x5x6x7;a1的输出端与f2函数模块的输入端按比特连接,f2函数模块的输出端与异或单元a2的输入端按比特连接,a0的输出端与a2的输入端按比特连接;a2将两部分输入的各4个比特,依次异或生成4个比特的输出并更新x0x1x2x3;a1的输出端、a2的输出端与比特变换单元b的输入端相连,比特变换单元的变换方式为将x0x1x2x3x4x5x6x7分别作为y0y1y2y3y4y5y6y7,y0y1y2y3y4y5y6y7与s盒电路输出端相连。本发明的有益效果是:本发明提出的在4×4的函数迭代构造的基础上采用比特变换的方式构造8×8的s盒的方法,能够找到硬件实现代价小、速率高且密码学性质良好的s盒,在5g等场景中面向字节设计的算法中有很大的优势。附图说明图1是轻量级8比特s盒的硬件实现结构图。图2是图1中的f0函数模块结构图。图3是图1中的f1函数模块结构图。图4是图1中的f2函数模块结构图。具体实施方式下面通过具体实施例和附图,对本发明做进一步详细说明。本发明一个实施例的一种轻量级8-bits盒的构造方法,其步骤为:1)设x0x1x2x3x4x5x6x7为s盒的8比特输入信息,y0y1y2y3y4y5y6y7为s盒的8比特输出,将x4x5x6x7经过f0函数变换的输出分别异或x0x1x2x3并更新x0x1x2x3的值。2)将x0x1x2x3经过f1函数变换的输出分别异或x4x5x6x7并更新x4x5x6x7的值。3)将x4x5x6x7过f2函数变换的输出分别异或x0x1x2x3并更新x0x1x2x3的值。4)进行比特变换,即将x0x1x2x3x4x5x6x7分别作为y0y1y2y3y4y5y6y7,输出。这里f0和f1是近似完全线性(apn)函数,f0和f1是从misty算法借鉴的,f2是新引入的。具体的,f0、f1和f2见下面步骤5)~7)。5)设x0x1x2x3为f0函数的输入,y0y1y2y3为f0函数的输出,则具体的,4×4f0函数的内容如表1所示:表1x0123456789101112131415f0(x)00413120058076510246)设x0x1x2x3为f1函数的输入,y0y1y2y3为f1函数的输出具体的,4×4f1函数的内容如表2所示:表2x0123456789101112131415f1(x)01213457118141031591267)设x0x1x2x3为f2函数的输入,y0y1y2y3为f2函数的输出f2(x3||x2||x1||x0)=(y3||y2||y1||y0);具体的,4×4f2函数的内容如表3所示:表3x0123456789101112131415f2(x)11101813513118514398)按照步骤1)到7)构造的s盒的真值表为:{01,02,0d,f3,31,73,2f,df,c1,ec,89,4f,bb,d6,e5,2c,03,00,0e,b4,72,30,6d,d8,c7,aa,8e,4c,fd,d0,a2,6e,69,2a,76,92,09,0b,05,ee,a6,9b,f9,74,8d,f0,c5,46,9c,e1,37,bf,b7,8a,44,c3,68,2b,94,35,08,0a,a8,07,9a,a7,d5,5c,f1,8c,e9,7e,11,12,1e,fe,21,63,7d,82,62,20,3f,84,13,10,1d,b8,b6,8b,af,3c,9d,e0,d3,5f,79,3a,25,cf,19,1b,17,e3,ed,c0,f5,27,d7,ba,99,54,18,1a,a4,15,78,3b,c8,66,fc,d1,56,9e,c6,ab,64,b2,41,38,4d,8f,6b,52,75,f8,81,86,c9,67,a1,e7,ff,1f,87,80,ce,24,e6,a0,b9,1c,43,7a,4e,88,29,50,36,be,16,e2,fa,bd,3e,85,cb,cd,e4,2d,5b,32,c2,45,60,49,a5,14,fb,bc,83,7c,ca,cc,6f,a3,71,58,47,c4,4a,23,96,91,2e,de,f7,b1,06,a9,33,5a,98,55,48,61,ae,3d,7f,e8,22,4b,57,9f,59,70,ef,04,f6,b0,d9,6c,97,90,b5,0f,ad,ea,93,77,dd,db,65,b3,39,40,5d,d4,53,6a,da,dc,95,34,eb,ac,f2,0c,51,28,5e,d2,7b,42,26,f4}9)按照步骤1)到7)构造的s盒的每一个输出比特的anf(algebraicnormalforn,代数标准型)表达式是:10)通过s-盒组成函数的anf表达式可以发现,最后一步的比特级位置变换可以使得每一个输出比特分布地尽可能更加均匀,尤其是对y7和y5而言。11)按照步骤1)到7)构造的s盒的最大差分概率为2-5。12)按照步骤1)到7)构造的s盒的最大线性概率为2-4。13)按照步骤1)到7)构造的s盒每个输出比特的代数次数分别为{4,5,4,5,5,5,5,6}。14)按照步骤1)到7)构造的s盒的代数免疫度为2。15)按照步骤1)到7)构造的s盒的输入输出变量中能够保证代数次数为2的相互独立的隐含方程的个数是19,令x8x9x10x11x12x13x13x14x15表示y0y1y2y3y4y5y6y7,可以给出19个方程(equation0~equation18)的系数,项的顺序为1,xi,i=0,…,15,xixj,i=0,…,15,j=i+1…15。equationg:11110111111101011011000000000001111110000001010000000000001111001000001000000000010000000001000000001000000011000101101101001010101101011;equation1:00000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;equation2:000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;equation3:00000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;equation4:00000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000;equation5:000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000;equation6:00000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000;equation7:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000;equation8:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000;equation9:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000;equotion10:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000;equation11:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000;equation12:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000;equation13:10001000000000110000000000000000100000000100000000001000000000000000000000000000000000000000000000000000000000000000010100000000100000000;equation14:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000;equatiou15:01111111111101100011000000000000011110000101000000001000000111001000000000000000000000000000000000000000000001000100111000001000000100000;equation16:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000;equation17:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010;equation18:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001.16)相互独立的隐含方程可以完全描述步骤1)到7)构造的s盒,描述方法为:equation0=0,i=1,...,18.17)在s盒相互独立的隐含方程的描述中,总共包含38个二次项。18)按照步骤1)到7)构造的s盒是综合考虑了密码安全性、硬件实现面积和实现速度指标的优化方案。对硬件实现,本实施例构造的s盒的电子电路如图1所示,图1中的f0函数模块、f1函数模块、f2函数模块分别如图2~4所示。该s盒电路共调用了12个and2门,25个xor2门,1个nand2门,等价于占用90nmcmos工艺中的66个ge门。对于软件实现,本实施例构造的s-盒推荐使用查表实现,或者在需要同时处理许多独立分组的使用场景下使用bit-slice实现,bit-slice实现是在软件实现中模拟硬件实现的逻辑操作序列的技术。下面说明图1~4中的具体连接关系:如图1所示,该s盒电路包括输入端、f0函数模块、f1函数模块、f2函数模块、三个异或单元a0a1a2、比特变换单元b、输出端。输入端包括x0x1x2x3x4x5x6x7,可以被分为两个部分x0x1x2x3(与图1右上方的虚线椭圆内的4条线路从右到左依次对应)和x4x5x6x7(与图1左上方的虚线椭圆内的4条线路从右到左依次对应)。其中:x4x5x6x7与f0函数模块的输入端按比特连接,f0函数模块的输出端与异或单元a0的输入端按比特连接,x0x1x2x3作为另一部分输入与a0的输入端按比特连接。a0将两部分输入的各4个比特,依次异或生成4个比特的输出并更新x0x1x2x3。a0的输出端与f1函数模块的输入端按比特连接,f1函数模块的输出端与异或单元a1的输入端按比特连接,x4x5x6x7作为另一部分输入与a1的输入端按比特连接。a1将两部分输入的各4个比特,依次异或生成4个比特的输出并更新x4x5x6x7。a1的输出端与f2函数模块的输入端按比特连接,f2函数模块的输出端与异或单元a2的输入端按比特连接,a0的输出端与a2的输入端按比特连接。a2将两部分输入的各4个比特,依次异或生成4个比特的输出并更新x0x1x2x3。a1的输出端、a2的输出端与比特变换单元b的输入端相连,比特变换单元的变换方式为将x0x1x2x3x4x5x6x7分别作为y0y1y2y3y4y5y6y7,y0y1y2y3y4y5y6y7与s盒电路输出端相连。如图2所示,f0函数模块包括输入u0u1u2u3,五个异或运算单元c1、c2、c3、c4、c5,四个逻辑与运算单元d1、d2、d3、d4,输出v0v1v2v3。其中:u2、u0分别与d1的输入端相连,d1的输出端与c1的一输入端相连。u1与c1的另一输入端相连,c1的输出端与c3的一输入端相连。u2与c3的另一输入端相连,c3的输出端与输出v2相连。c1的输出端与d2的输入端相连,u3与d2的另一输入端相连,d2的输出端与输出v1相连。u3与c2的一输入端相连,u0与c2的另一输入端相连,c2的输出端与d4的一输入端相连。c3的输出端与d4的另一输入端相连,d4的输出端与v0相连。c3的输出端与c4的一输入端相连,u3与c4的另一输入端相连,c4的输出端与d3的一输入端相连。u2与c5的一输入端相连,c2的输出端与c5的另一输入端相连,c5的输出端与d3的另一输入端相连。d3的输出端与输出v3相连。如图3所示,f1函数模块包括输入u0u1u2u3,四个异或运算单元c6、c7、c8、c9,四个逻辑与运算单元d5、d6、d7、d8,输出v0v1v2v3。其中:u1与d5的一输入端连接,u0与d5的另一输入端连接,d5的输出端与c6的一输入端连接。u3与c6的一输入端连接,c6的输出端与输出v3连接。c6的输出端与d6的一输入端连接,u0与d6的另一输入端连接,d6的输出端与c7的一输入端连接。u2与c7的一输入端连接,c7的输出端与输出v2连接。c7的输出端与d7的一输入端连接,c6的输出端与d7的另一输入端连接,d7的输出端与c8的一输入端连接。u1与c8的另一输入端连接,c8的输出端与输出v1连接。c8的输出端与d8的一输入端连接,c7的输出端与d8的另一输入端连接,d8的输出端与c9的输入端连接。u0与c9的一输入端连接,c9的输出端与输出v0连接。如图4所示,f2函数模块包括输入u0u1u2u3,四个异或运算单元c10、c11、c12、c13,四个逻辑与运算单元d9、d10、d11、d12,一个nand运算单元e1,输出v0v1v2v3。其中:u3与d9的一输入端相连,u1与d9的另一输入端相连,d9的输出端与c13的输入端相连。u12与c12的一输入端相连,u0与c12的另一输入端相连,c12的输出端与d10的一输入端相连。u2与d10的另一输入端相连,d10的输出端与c13的一输入端相连。c13的输出端与输出v3相连。u3与c10的一输入端相连,c11与c10的另一输入端相连,c10与d11的一输入端相连。u2与d11的另一输入端相连,d11的输出端与输出v2相连。u1与c12的一输入端相连,u0与c12的另一输入端相连,c12的输出端与d12的一输入端相连。u13与d12的另一输入端相连,d12的输出端与输出v1相连。u2与c11的一输入端相连,u1与c11的另一输入端相连,c11的输出端与e1的一输入端相连。c11的输出端与e1的另一输入端相连,e1的输出端与输出v0相连。以上公开的本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例所公开的内容,本发明的保护范围以权利要求书界定的范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1