Aes混合列变换的制作方法

文档序号:6410530阅读:680来源:国知局
专利名称:Aes混合列变换的制作方法
技术领域
本发明涉及用于执行高级加密标准(AES)算法的方法和装置,确切的说,涉及用于在该算法的每一加密和解密轮回(round)中执行矩阵乘法运算的方法和装置,该矩阵乘法运算构成所述AES混合列变换。
本发明特别地、但并不排他地用于诸如安装在智能卡和其它设备中的加密设备,在所述智能卡和其它设备中,处理器和存储器资源比较有限并且加密算法的许多运算在专用的ASIC或FPGA硬件中执行。
AES算法广泛应用于以安全方式对将要传送的数据进行加密。一种应用是在个人信息和/或金融信息从智能卡向卡读取设备的传送过程中。存储在卡上的机密数据除非以加密形式否则不可将该数据从卡中还原,以确保如此还原该数据而不被未授权的第三方中途截取或读取。只有授权的读取者能够将数据从卡上还原。
同样,由读卡器提供的将存储在卡中的数据必须以加密形式传送给卡,并由卡解密用于存储并随后还原。
尽管在部署了现有技术的处理器和存储器电路的常规计算机系统中执行AES算法是相对直接的,然而在智能卡应用中,处理器和存储器资源是非常有限的,并且许多函数必须在诸如ASIC或FPGA的专用硬件中执行。
因此,需要硬件执行在AES算法中所需的程序,该AES算法的执行需要使用最少的硬件资源。
本发明的一个目的是提供一种用于实施混合列变换的合适电路,在用于加密及解密的标准AES(Rijindael)加密算法中部署了所述混合列变换。
根据一个方面,本发明提供用于(m×n)矩阵乘以(1×n)或(m×1)矩阵的乘法的逻辑电路,其中m是行的数目,n是列的数目,并且其中具有n个元素的每一个相继行m都是在前行的一个预先确定的行置换,该电路包括n个乘法电路,每一个乘法电路都具有输入和输出,该输出返回所述输入乘以一个预先确定的被乘数所得的值;
n个逻辑电路,每一个逻辑电路都用于执行第一输入和第二输入的预先确定的逻辑组合,以提供一个逻辑输出,所述第一输入连接至所述n个乘法电路中的一个相应的电路的输出;n个寄存器,用于接收所述逻辑输出;反馈逻辑,用于根据相应于所述预先确定的行置换的反馈计划,把每一个寄存器的内容都发送到第二输入中所选择的一个输入;以及控制装置,用于相继地向所述n个乘法电路中的每一个乘法电路提供(1×n)或(m×1)矩阵中的每一个元素来作为输入。
现在将通过实施例和参考附图描述本发明实施方案,其中

图1是流程图,举例说明了使用AES分组(block)密码算法执行加密运算;以及图2是用于执行混合列变换的功能逻辑分组的示意图。
图1示出了用于将明文加密成密文的AES算法。可以使用128位、192位或者256位密匙(key)对连续128位输入数据分组进行操作来执行AES算法。本发明可适用于所有这类实施方案。现在将在使用128位密匙的基本实施方案的环境中描述图1。
在初始轮回15中,将输入明文10的初始128位分组与原始128位密匙12XOR合并11。然后在加密轮回28中,根据所定义的AES算法,来源于该初始轮回15的输出13经过多个反复的变换阶段,该加密轮回28包括子字节变换20,移位行变换21和混合列变换22。
从初始(源)密匙12导出25的新的128位轮回密钥26与来自混合列变换22的输出进行XOR合并23。反馈来自XOR组合23的输出以更多次的经过加密轮回28,该次数取决于该算法的特定实施方案。
对于每一个通过加密轮回28的连续的重复,新的轮回密钥26’都根据AES轮回密钥进程从已存在的轮回密钥26中导出。
当使用128位加密密匙时加密轮回28的重复的次数(Nr-1)为九,当使用192位加密密匙时该次数为十一,而当使用256位加密密匙时该次数为十三。
在经过了必要的(Nr-1)次加密轮回28之后,在判定框24的控制下进入最终轮回(Nr)。最终轮回30包括另一个子字节变换31,另一个移位行变换32,以及用从在前的轮回密钥产生35的最终轮回密钥36对以上结果进行随后的XOR组合33。其输出包括加密算法的密文输出39。
本发明具体地涉及混合列变换22的执行。经过轮回28、30,正被处理的128位分组通常被表示为16个根据如下型式的,如Srow,column的4×4矩阵中的8位分组,
在混合列变换22中,该状态(state)的列被视为在GF(28)上的多项式并用预先确定的固定多项式a(x)乘以(x4+1)的模数,该预定的固定多项式给出a(x)=a3x3+a2x2+a1x+a0,其中,表示为十六进制的值,a3=03ha2=01ha1=01ha0=02h.
该多项式与(x4+1)是互质的(co-prime),因此是可逆的。
对于加密,对于在每一列中的s,该混合列变换因此可以表示为SR,C→S’R,C。
s′0,cs′1,cs′2,cs′3,c=a0a3a2a1a1a0a3a2a2a1a0a3a3a2a1a0s0,cs1,cs2,cs3,c02030101010203010101020303010102s0,cs1,cs2,cs3,c]]>该矩阵乘法的求值方法为s’0,c={02}*s0,c{03}*s1,cs2,cs3,cs’1,c=s0,c{02}*s1,c{03}*s2,cs3,cs’2,c=s0,cs1,c{02}*s2,c{03}s3,cs’3,c={03}*s0,cs1,cs2,c{02}*s3,c在加密期间,要求该运算的逆向操作。由以下矩阵乘法给出s′0,cs′1,cs′2,cs′3,c=b0b3b2b1b1b0b3b2b2b1b0b3b3b2b1b0s0,cs1,cs2,cs3,c=0E0B0B09090E0E0D0D090E0B0B0D090Es0,cs1,cs2,cs3,c]]>该矩阵乘法的求值方法为s’0,c={0E}*s0,c{0B}*s1,c{0D}*s2,c{09}*s3,cs’1,c={09}*s0,c{0E}*s1,c{0B}*s2,c{0D}*s3,cs’2,c={0D}*s0,c{09}*s1,c{0E}*s2,c{0B}*s3,cs’3,c={0B}*s0,c{0D}*s1,c{09}*s2,c{0E}*s3,c应当注意到,该混合列变换矩阵具有特殊的属性每一相继行都是在前行的一个移位(shifted)或旋转(rotated)的行。通常,一行中的每一个元素都出现在每一个行中但是在该行中不同的位置,特别地,对于混合列变换矩阵,每一行的每一个元素的不同位置构成了单位置右移位或旋转。
根据本发明,已经认识到该属性允许使用明显减少的硬件完成将要达到的状态s的每一列的乘法。
图2举例说明了适用于m×n矩阵乘以1×n矩阵的硬件逻辑50的示范性实施方案,其中该m×n矩阵的具有n个元素每一相继行之间的关系是预先确定的的行移位。对于AES混合列变换,m=4,n=4,并且所述预先确定的关系是一个单右移位。
逻辑50包括四个8位的乘法电路60...63,四个8位的XOR门70...73和四个反馈/输出寄存器80...83,表示为MixCol0...MixCol3。每一个乘法电路70...73适用于将输入乘以矩阵系数C0,C1,C2,C3之一。如下文所述,使用用以执行两个输入的适当的逻辑组合所要求的逻辑元素的任一适当组合可以实现每一个XOR门70...73。
对于加密轮回,C0...C3的值分别为以上定义的a0...a3。对于解密轮回,C0...C3的值分别为以上定义的b0...b3。将每一个乘法电路60...63的输出耦合到相应的XOR门70...73的第一输入。将每一个XOR门70...73的输出耦合到相应的MixCol寄存器80...83。按照反馈计划(feedback plan)90...93,将每一个MixCol寄存器80...83的输出耦合到XOR门70...73中的一个的第二输入,所述反馈计划相应于定义了所述矩阵的相继行之间的关系的行移位功能。在这种情形下,反馈计划90...93实现矩阵ar,c(加密)和br,c(解密)-更通常的是矩阵cr,c的相继行之间的右移位功能。
在电路50的运算期间,在相继的周期上把s0c,s1c,s2c,s3c顺序地提供给乘法逻辑60...63。在每一个列乘法的开始,将寄存器MixCol0至MixCol3均预先设置为零。
在第一个循环后MixCol0=c0.s0cMixCol1=c1.s0cMixCol2=c2.s0cMixCol3=c3.s0c在第二个循环后
MixCol0=c0.s1cc1.s0cMixCol1=c1.s1cc2.s0cMixCol2=c2.s1cc3.s0cMixCol3=c3.s1cc0.s0c在第三个循环后MixCol0=c0.s2cc1.s1cc2.s0cMixCol1=c1.s2cc2.s1cc3.s0cMixCol2=c2.s2cc3.s1cc0.s0cMixCol3=G3.s2cc0.s1cc1.s0c在第四个循环后MixCol0=c0.s3cc1.s2cc2.s1cc3.s0cMixCol1=c1.s3cc2.s2cc3.s1cc0.s0cMixCol2=c2.s3cc3.s2cc0.s1cc1.s0cMixCol3=c3.s3cc0.s2cc1.s1cc2.s0c重排这些输出,根据反馈计划90...93给出以下输出MixCol1=s′0,cMixCol2=s′1,cMixCol3=s′2,cMixCol0=s′0,c这就是所要求的结果。
应当注意到,一般来说,矩阵中的行数m决定了所要求的循环的次数,而列数n决定了所要求的逻辑组(乘法器60...63,XOR门70...73,和寄存器80...83)的数目。
可以使用任一合适的逻辑执行该乘法逻辑60...63。在一个优选实施方案中,该逻辑是为加密以及解密而提供的,包含符合以下一览表的某个逻辑。
对于c0×s0,c而言,将来自个乘法逻辑60...63的输出定义为ecycle,bit,且对于加密,d=0,对于解密,d=1e07=s6XNOR NAND(d,s45)e06=s5XNOR NAND(d,s347)e05=s4XNOR NAND(d,s238)e04=s37XNOR NAND(d,s125)e03=s27XNOR NAND(d,s0157)e02=s17XNOR NAND(d,s0567)e01=s0XNOR NAND(d,s67)e01=s7XNOR NAND(d,s56)类似地,对于c1×s1,ce17=s7XNOR NAND(d,s4)e16=s6XNOR NAND(d,s37)e15=s5XNOR NAND(d,s267)e14=s4XNOR NAND(d,s1567)e13=s3XNOR NAND(d,s056)e12=s2XNOR NAND(d,s57)e11=s1XNOR NAND(d,s6)e10=s0XNOR NAND(d,s5)类似地,对于c2×s2,ce27=s7XNOR NAND(d,s45)e26=s6XNOR NAND(d,s347)e25=s5XNOR NAND(d,s236)e24=s4XNOR NAND(d,s125)e23=s3XNOR NAND(d,s015)e22=s2XNOR NAND(d,s0567)e21=s1XNOR NAND(d,s67)e20=s0XNOR NAND(d,s56)
类似地,对于c3×s3,ce37=s67XNOR NAND(d,s4)e36=s56XNOR NAND(d,s37)e35=s45XNOR NAND(d,s287)e34=s347XNOR NAND(d,s1567)e33=s23XOR s7XNOR NAND(d,s056)e32=s12XOR s7XNOR NAND(d,s57)e31=s01XNOR NAND(d,s6)e30=s07XNOR NAND(d,s5)其中a57=a5XOR a7a07=a0XOR a7a34=a3XOR a4a567=a7XOR a56a125=a12XOR a5a1567=a17XOR a56a37=a3XOR a7a67=a6XOR a7a23=a2XOR a3a056=a0XOR a56a267=a2XOR a67a27=a2XOR a7a56=a5XOR a6a12=a1XOR a2a347=a34XOR a7a0157=a01XOR a57a17=a1XOR a7a45=a4XOR a5a01=a0XOR a1a236=a23XOR a6a0567=a07XOR a56这要求23个XOR门,32个XNOR门以及32个NAND门。
其它实施方案按照设计也是落在随附的权利要求范围内。
权利要求
1.一种用于(m×n)矩阵乘以(1×n)或(m×1)矩阵的乘法的逻辑电路,其中m是行的数目,n是列的数目,并且其中每一个具有n个元素的相继行m都是在前行的预先确定的行置换,该电路包括n个乘法电路(60…63),每一个电路都具有输入和输出,该输出返回由所述输入乘以一个预先确定的被乘数所得的值;n个逻辑电路(70…73),每一个都用于执行第一输入和第二输入的预先确定的逻辑组合,以提供一个逻辑输出,所述第一输入耦合至所述n个乘法电路中的一个相应的电路的输出;n个寄存器(80…83),用于接收所述逻辑输出;反馈逻辑,用于根据相应于所述预先确定的行置换的反馈计划把每一个寄存器的内容都发送到第二输入中所选择的一个输入;以及控制装置,用于相继地向n个乘法电路中的每一个乘法电路提供(1×n)或(m×1)矩阵中的每一个元素来作为输入。
2.如权利要求1所述的逻辑电路,其中该反馈逻辑提供相应于所述预先确定的行置换的反馈计划,所述预先确定的行置换为行移位。
3.如权利要求2所述的逻辑电路,其中所述行移位是单一元素右移位。
4.如权利要求1所述的逻辑电路,其中所述n个逻辑电路均适于执行所述第一输入和所述第二输入的XOR组合。
5.如权利要求1所述的逻辑电路,其中所述预先确定的被乘数中的每一个被乘数均相应于在AES Rijindael混合列变换函数中的一个元素。
6.如权利要求5所述的逻辑电路,其中数字m=4,数字n=4时,用于第一乘法电路的被乘数=02,用于第二乘法电路的被乘数=03,用于第三乘法电路的被乘数=01,用于第四乘法电路的被乘数=01。
7.如权利要求5所述的逻辑电路,其中数字m=4,数字n=4时,用于第一乘法电路的被乘数=0E,用于第二乘法电路的被乘数=0B,用于第三乘法电路的被乘数=0D,用于第四乘法电路的被乘数=09。
8.如权利要求6或7所述的逻辑电路,其中所述四个被乘数可在权利要求6中的值和权利要求7中的值之间切换。
9.如权利要求1所述的逻辑电路,其中所述控制装置适于在n或m个运算循环的每一个运算循环上,分别相继地向所述n个乘法电路中的每一个乘法电路提供所述(1×n)或(m×1)矩阵中的每一个相继元素来作为输入。
10.如权利要求1所述的逻辑电路,其中所述n个乘法电路中的每一个乘法电路、所述n个逻辑电路中的每一个逻辑电路以及所述n个寄存器中的每一个寄存器都至少是八位宽。
11.如权利要求1所述的逻辑电路,其中所述控制装置还包括用于在每第n个循环之后提供所述n个寄存器的内容来作为所述逻辑电路的输出的装置。
12.如权利要求1所述的逻辑电路,其中所述控制装置还包括用于在第一个计算循环之前复位所述寄存器中的每个一寄存器的装置。
13.如权利要求1所述的逻辑电路,其中具有n个元素的每个相继行m都是其最接近的在前行的一个预先确定的行置换。
14.一种AES混合列变换电路,该电路并入了权利要求1至13中任一权利要求所述的逻辑电路。
15.一种AES加密和/或解密引擎,该引擎并入了权利要求1至13中任一权利要求所述的逻辑电路,用于执行混合列变换。
16.一种参考附图基本上在此描述的设备。
全文摘要
一种用于执行AES Rijindael混合列变换的简化的逻辑电路,利用变换矩阵的相继行中的每一行和其在前行之间的公共关系。一种用于执行(m×n)矩阵乘以(1×n)或(m×1)矩阵的乘法的逻辑电路,其中m是行的数目,n是列的数目,并且其中具有n个元素的每一个相继行m都是其在前行的一个预先确定的行置换,该电路包括n个乘法电路;n个逻辑电路;n个寄存器,用于接收来自所述逻辑电路的逻辑输出;反馈逻辑,用于根据相应于相继矩阵行之间的公共关系的反馈计划,把每一个寄存器的内容发送到所述逻辑电路的输入中的一个选定的输入;以及控制装置,用于相继地向n个乘法电路中的每一个电路提供(1×n)或(m×1)矩阵中的每一个元素来作为输入。
文档编号G06F7/72GK1659512SQ03813105
公开日2005年8月24日 申请日期2003年6月4日 优先权日2002年6月7日
发明者G·T·M·胡伯特 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1