高级加密标准算法的可编程数据加密引擎的制作方法

文档序号:7756042阅读:137来源:国知局
专利名称:高级加密标准算法的可编程数据加密引擎的制作方法
技术领域
本发明涉及一种用于执行高级加密标准(AES)的密码函数的可编程数据加密引擎。
相关申请本申请要求2001年12月18日申请的美国临时申请第60/341,634号的优先权。
背景技术
一种用于执行美国国家标准化协会(ANSI)高级加密标准(AES)的加密引擎加密和解密数据分组,通常128位(分组大小)使用多达256位的可变长度的密钥。通过使用用于加密但是改变了密钥位的编排顺序的相同密钥来完成解密,因此解密是加密过程的逆过程。
有许多不同的算法可用于实现AES;其中最突出的一种算法是Rijndael算法。本算法典型地接收四个,四字节,即32位的字,该算法在这四个四字节上执行一个字节替换(subbyte)变换,该变换包括在伽罗瓦域GF-1(28)上的乘法逆运算,和施加仿射(GF(2)上)变换。接着执行一个行移位变换,随后是一个施加列混合变换的列混合变换,并加上一个轮密钥。
这一系列步骤重复很多次。根据Rijndael算法,迭代的次数取决于密钥长度和分组大小。例如,对于密钥长度4个32位字(128位)和分组大小为4个32位字,则迭代次数为10;对于密钥长度6(192位)和分组大小4,则迭代次数为12,而对于密钥长度8(256位)和分组大小4,则迭代次数为14,其中密钥长度是该密钥中32位字的个数,而分组大小是一次要加密的32位字的个数。因此,例如,对于密钥长度4和分组大小4,则需要10次迭代或10轮运算,10个长度为4个32位字的轮密钥,每个轮密钥都需要由一个输入的长度为4个32位字的主密钥生成,一次迭代或一轮运算使用一个轮密钥。通过取决于密钥长度和轮数的一个或两个步骤,这些轮密钥被生成为四十个不同的子密钥。在生成轮密钥的过程中,第一字经过(a)字旋转,接着是字替换,伽罗瓦域的逆和仿射变换的组合,并且在GF(28)域加上一个Rcon[i](一个迭代相关值);(b)32位字的置换与(a)的结果异或。例如,对于10轮运算和密钥长度4,每四个子密钥的生成周期要经历步骤(a)和(b)。其他的密钥生成周期只经历(c)32位字的置换与先前的子密钥异或。因此周期0,4,8,12,16,20,24,28,32,36,40使用步骤(a)和(b),其它的周期只使用步骤(c)。典型地,这需要90个或更多的时钟周期处理每个字,或者360个时钟周期处理由四个字组成的每个分组,以及3600个时钟周期完成一个AES Rijndael算法。因此,对在四个32位字的128位的分组上运算的10M位的数据流来说,每秒需要281兆指令(MIPS)。

发明内容
因此本发明的一个目的是提供一种用于执行高级加密标准(AES)密码函数的改进的可编程数据加密引擎。
本发明的另一目的是提供一种使用Rijndael算法执行高级加密标准(AES)密码函数的改进的可编程数据加密引擎。
本发明的另一目的是提供一种可用软件实现的用于执行高级加密标准(AES)密码函数的改进的可编程数据加密引擎。
本发明的另一目的是提供一种速度快一个数量级的用于执行高级加密标准(AES)密码函数的改进的可编程数据加密引擎。
本发明的另一目的是提供一种用于执行高级加密标准(AES)密码函数的改进的可编程数据加密引擎,其非常灵活并能够被编程用于许多不同的置换和应用。
本发明的特征在于一种用于执行高级加密标准(AES)算法的密码函数的可编程数据加密引擎,包括一个响应第一数据分组的第一并行查询表,用于实现AES选择功能并执行在GF-1(28)的乘法逆运算以及施加GF(2)仿射变换以得到一个字节替换变换。一个第二并行查询表,其变换一个字节替换变换以获得一个行移位变换。一个伽罗瓦域乘法器,其变换行移位变换以得到一个列混合变换,然后加上一个轮密钥,导致产生第一数据分组的高级加密标准密码函数。
在一个优选实施例中,存在一个为伽罗瓦域乘法器提供多个轮密钥的密钥生成器。密钥生成器可包括一个响应一个主密钥以生成轮密钥的密钥生成器电路。密钥生成器电路可包括一个第三并行查询表,用于旋转主密钥以得到一个旋转后的子密钥。密钥生成器电路可包括一个第四并行查询表,用于执行在GF-1(28)的乘法逆运算并施加GF(2)仿射变换以得到轮密钥。第一和第二并行查询表以及第一伽罗瓦域乘法器可执行多轮变换,为每一轮生成一个轮密钥。每个轮密钥可包括多个子密钥。伽罗瓦域乘法器可包括一个乘法器电路,用于在伽罗瓦域上将两个带系数的多项式相乘以获得它们的乘积;一个响应乘法器电路的伽罗瓦域线性变换器电路,用于预测该多项式对一个不可约分多项式的模余数;一个存储电路,用来为伽罗瓦域线性变换器电路提供一组系数,以对一个预定的不可约分多项式预测模余数;以及一个伽罗瓦域加法器电路,用于在伽罗瓦域将乘法器电路的乘积与带系数的第三多项式相加,以在单个周期中执行乘法和加法运算。并行查询表系统可包括一个存储器,存储在该存储器中的多个查询表,一个存放在查询表中要查询的值的行索引寄存器,一个存储表示在该存储器中存储的每个查询表的起始地址的值的列索引寄存器,以及一个地址转换电路,响应列索引寄存器和行索引寄存器,为行索引寄存器中的每个值同时生成一个地址,以并行定位每个查询表中的那些值的函数。
本发明的特征还在于一种执行高级加密标准(AES)算法的密码函数的可编程数据加密引擎。存在一种并行查询表系统,在第一模式响应第一数据分组,以实现AES选择功能并执行在GF-1(28)的乘法逆运算以及施加GF(2)仿射变换以得到一个字节替换变换,且在第二模式响应该字节替换变换以变换该字节替换变换来得到一个行移位变换。伽罗瓦域乘法器变换该行移位变换得到一个列混合变换,再加上一个轮密钥,导致产生第一数据分组的高级加密标准加密函数。
在一个优选实施例中,该并行查询表系统可以在第三模式响应主密钥以得到一个子密钥,并且可以在第四模式响应该子密钥以生成一个轮密钥。


根据下面对一个优选的实施方案的描述和参考附图,本领域技术人员将想到本发明其它的目的、特征及优点,其中图1是一个根据本发明的高级加密标准(AES)加密引擎的框图;图2是说明基本AES加密算法的原理框图;图3是说明图2所示的AES密码算法的字节替换变换的原理框图;图4是说明图2所示的AES密码算法的行移位变换的原理框图;图5是说明根据图2所示的AES密码算法的列混合变换和轮密钥加法的原理框图;图6是根据本发明图1所示的AES加密引擎的更详细的原理框图;图7是图6所示的SBOX并行查询表的更详细的原理框图;图8是图6所示的行移位并行查询表的更详细的原理框图;图9是图6所示的列混合伽罗瓦域乘法器的更详细的原理框图;图10是说明实现AES算法的列混合函数的伽罗瓦域转换器的编程的原理图;图11是根据本发明的AES加密引擎的原理框图,其中单个并行查询表被用于执行密码S-盒和行移位运算;图12是根据本发明的AES加密引擎的原理框图,其中单个并行查询表被用于执行密码S-盒和行移位运算以及生成轮密钥的字旋转和S-盒运算。
图13是可用于实现本发明的伽罗瓦域乘法/乘法-加法/乘法-累加系统的简化框图;图14是图13所示的伽罗瓦域乘法/乘法-加法/乘法-累加系统的更详细的示图;以及图15是可用于实现本发明的可重新配置的并行查询表系统的简化框图。
具体实施例方式
除了下面公开的一个或多个优选实施例,本发明可以有其它的实施例,并且可以以不同的方式应用或实施。因此,应当理解为本发明并不局限于以下说明中陈述或附图中示意的详细结构和部件配置的应用。
图1所示是一个根据本发明具有相关输入电路12和输出电路14的AES加密引擎10。由高级加密标准(AES)加密引擎10执行的AES算法如图2所示,其中输入数据分组16首先经过SBOX(S-盒)变换18,然后是行移位变换20,接着是添加密钥23的列混合变换22。在24的输出通过线26反馈很多次,反馈次数取决于所选择的特定AES算法。例如,在下面的表I中

对于算法AES-128,密钥长度为4,分组大小为4,轮数或迭代次数为10,而对于AES-192,密钥长度为6,分组大小为4,迭代次数为12,对于AES-256,迭代次数为14。每进行一轮运算引入一个新的密钥。AES算法的字节替换变换是利用S-盒实现的,其中数据分组16由四个字30,32,34,36组成,每个字有四个字节,S00-S03,S10-S13,S20-S23和S30-S33。S-盒变换首先取GF-1(28)的乘法逆运算,然后施加由图3中方框38所示的矩阵表达式定义的GF(2)仿射变换。输出是数据分组16的字节替换变换17。字节替换变换17(图4)接着经过行移位变换,其中第一行30a根本不旋转,第二行32a旋转一个字节,第三行34a旋转两个字节,而第四行36a旋转三个字节。移位操作由示意图40说明,导致产生经行移位变换的数据分组19,其中出现了相同的值,只是在行32b,34b和36b分别移动了一个,两个和三个位置。列混合变换和轮密钥加法如图5所示,数据分组19接着由列混合变换矩阵42一次乘一列,本例中所示是列混合变换矩阵乘第二列44。再加上轮密钥,即本例中的列46,得到第一数据分组16的全部的高级加密标准密码函数48。
在一个实施例中,根据本发明,AES加密引擎10可包括一张用来执行S-盒变换的并行查询表60,一张用来执行行移位变换的并行查询表62,以及一个用来执行列混合和密钥加法运算的伽罗瓦域乘法器64。每次迭代提供一个不同的密钥或轮密钥。例如,在一个AES128算法的实现中将有10轮运算,每轮运算将需要提供一个密钥。每次迭代引入一个不同的轮密钥66。轮密钥从通过输入端71引入的主密钥70借助密钥生成器电路72中的密钥生成器68生成,密钥生成器电路72包括字旋转并行查询表74和S-盒并行查询表76。字旋转并行查询表74只取一个字(a0,a1,a2,a3)作为输入并执行循环置换后返回字(a1,a2,a3,a0)。S-盒并行查询表76执行S-盒功能,类似于在图3详细说明的图2中的S-盒功能18。一旦密钥或子密钥生成并像图6那样存储在密钥存储器80中,每执行一次迭代或轮运算,这些密钥就每次被用作一个轮密钥,其中一个轮密钥包括四个字,每个字有四个8位字节。
S-盒并行查询表60的操作如图7所示,其中由4个8位字节组成的数据字90递交给地址转换电路92,该电路寻找存储器94中的特殊地址,然后以某一相关的关系读出以产生依据字节替换变换生成的数据字90’,得到图3中的数据分组17。行移位并行查询表62,通过经地址转换电路102将图8所示的数据字100施加到存储器104中的特定地址位置,然后相关地读出这些数据字,以产生如图4所示的字节旋转配置106,来执行图4所示的字节旋转。
列混合伽罗瓦域乘法器64可用图9所示的四个伽罗瓦域乘法器线性变换器110,112,114和116来实现,这样每一个变换器处理数据分组126中的一列118,120,122,124,因此能够立刻处理整个数据分组。每个伽罗瓦域乘法器线性变换器110-116包括三个寄存器RA,RB,RC,所有四个变换器都操作相同的三个寄存器,因此讨论伽罗瓦域乘法器线性变换器110足够说明所有四个变换器的操作。所示的伽罗瓦域乘法器线性变换器110在四个周期上运算,标识为周期1,2,3和4。在周期1中完成一个乘法和加法运算,而在周期2,3和4中,进行乘法累加运算。寄存器RA接收列混合变换矩阵128。寄存器DB接收列118中的字节而寄存器RC接收密钥130,K0-K3。在第一个周期中,在矩阵128第一位置的值与列118中的值S00相乘然后加上密钥K0构成输出Z0。下一个周期中,来自矩阵128的下一个值03与列118中的下一个值S10相乘然后加到输出Z0上以完成乘法累加运算。在下面两个周期与该矩阵中的下两个值和该列中的下两个值执行类似的运算。最后的输出表示为ZN=(((02S00k0)03S10)01S20)01S30其中=伽罗瓦域加法,且=伽罗瓦域乘法变换。每个伽罗瓦域乘法线性变换器110-116被如图10所示编程,其中圆圈140表示允许异或门的连接。该编程执行AES伽罗瓦域GF-1(28)不可约分多项式(x8+x4+x3+x+1)。字旋转并行查询表74可以用与图8所示的行移位并行查询表62类似的方式实现。且密钥生成器68中的S-盒并行查询表76可如同图7所示的S-盒并行查询表60那样实现。
尽管迄今为止所示的实施例都使用两张单独的并行查询表执行AES加密引擎中的S-盒和行移位运算,并使用第三和第四并行查询表在轮密钥生成时执行字旋转和S-盒运算,但这并不是对本发明的限制。例如,如图11所示,输入电路12a可以通过一个配置控制电路150与单个并行查询表61互联,该配置控制电路150根据线152上的指令配置并行查询表61用于S-盒运算或者行移位运算。由于这些运算发生在不同的时间,因此同样的并行查询表可做双份工作,在不同的时间执行每个功能,从而节约了硬件。另外,图12中的并行查询表61a在配置电路154的控制下可以有四种不同模式的用法,S-盒和行移位用于密码轮运算,而字旋转和S-盒用于密钥生成。这样配置电路154响应线156上的指令能将并行查询表61a配置成执行密码S-盒,密码行移位,密钥字旋转或密钥S-盒运算。在出现密码运算的第一和第二模式中,并行查询表61a的输出将直接到达伽罗瓦域乘法器64。在执行密钥生成、字旋转和S-盒功能的第三和第四模式,并行查询表61a的输出将传递到伽罗瓦域乘法器64可以访问的密钥存储器80a中。尽管图12使用包括实际逻辑电路的模式转换电路154,但这不是对本发明的必要限制。本发明可简化实现四个并行查询表(PLUT)被作为一个272位的线性并行查询表(PLUT)来处理。其中,密码和轮密钥生成器可共享一个256位的S-盒PLUT。作为两种无记忆字节旋转运算的行移位和字移位变换可共享同样的16字节查询表。通过将要查询的值加上一个起始地址可得到并行查询表中的准确地址。因此模式转换电路可简单地实现为两个并行查询表的起始地址。并行查询表的运算在由stein等人于2002年4月24日申请的标题为“可配置的并行查询表系统”(AD-305J)的美国专利申请中进行了详细的说明。
图13所示为一个实现本发明的伽罗瓦域乘法/乘法-加法/乘法-累加系统210,其能够选择性地将寄存器214和寄存器216中的数值相乘并将它们的乘积提供给输出寄存器211,或者将寄存器214和寄存器216中的数值相乘,并将它们的乘积与寄存器215中的数值求和,然后将结果提供给输出寄存器211。
在详细说明图13所示系统210的图14的实施方案之前,下面先简要地讨论一下伽罗瓦域乘法和加法的特性和运算。
伽罗瓦域GF(n)是一组元素,在其上能够执行两个二进制运算。加法和乘法必须满足交换律、结合律和分配律。一个具有有限数目元素的域是一个有限域。二元域的一个例子是在模2加法和模2乘法下的集合{0,1},并表示为GF(2)。模2加法和乘法运算由下图所示的表格定义。第一行和第一列表示对伽罗瓦域加法器和乘法器的输入。例如,1+1=0和1*1=1。
模2加法(XOR)

模2乘法(AND)

通常,如果p是任何一个素数,则GF(p)是一个具有p个元素的有限域,并且GF(pm)是一个具有pm个元素的扩展域。另外,该域的各个元素可以通过一个域元素α自乘到不同幂次生成一个域元素α的各个幂次。例如GF(256)有256个元素,这256个元素都可以通过基本元素α自乘到256个不同幂次生成。
另外,系数是二进制的多项式属于GF(2)。如果一个多项式不能被GF(2)上次数大于零小于m的任何多项式整除,则说GF(2)上的m次多项式是不可约分的。多项式F(X)=X2+X+1是一个不可约分的多项式,因为它不能被X或X+1整除。一个整除X2m-1+1的m次不可约分多项式被称为一个基本多项式。对于给定的m,可以有一个以上基本多项式。经常用于大多数通信标准的一个m=8的基本多项式的例子为F(X)=x8+x4+x3+x2+x+1。
由于伽罗瓦域加法与模加运算一样,因此容易用软件实现。例如,如果29和16是GF(28)上的两个元素,则它们的加法运算可以简单地通过下面的XOR运算完成29(11101)16(10000)=13(01101)。
另一方面,伽罗瓦域乘法要稍微复杂一些,如下面的例子所示,其通过基本元素α的重复乘法来计算GF(24)的所有元素。为了生成GF(24)的域元素,如下选择一个次数m=4的基本多项式G(X)G(X)=X4+X+1。为了使乘法为求模运算,使得该乘法的结果仍然是域中的元素,任何具有第五位组(bit set)的元素通过使用如下的恒等式F(α)=α4+α+1=0生成一个4位结果。通过设置α4=1+α,重复使用本恒等式生成域中不同的元素。因此,域中的元素可以列举如下{0,1,α,α2,α3,1+α,α+α2,α2+α3,1+α+α3,...1+α3}由于α是GF(24)的基本元素,其可设置为2,以生成GF(24)的域元素为{0,1,2,4,8,3,6,12,11...9}。
可以看出伽罗瓦域多项式乘法能够由两个基本步骤实现。第一个步骤是计算代数展开的多项式乘积c(x)=a(x)*b(x),而且收集类似的幂(加法相当于相应项之间的XOR运算)以给出c(x)。
例如c(x)=(a3x3+a2x2+a1x1+a0)*(b3x3+b2x2+b1x1+b0)c(x)=c6x6+c5x5+c4x4+c3x3+c2x2+c1x1+c0其中表IIc0=a0*b0c1=a1*b0a0*b1c2=a2*b0a1*b1a0*b2c3=a3*b0a2*b1a1*b2a0*b3c4=a3*b1a2*b2a1*b3c5=a3*b2a2*b3c6=a3*b3第二个步骤是计算d(x)=c(x)mod p(x),其中p(x)是一个不可约分的多项式。
举例说明,通过多项式乘法对一个不可约分多项式求模来实现乘法运算。例如(如果p(x)=x8+x4+x3+x+1){57}*{83}={c1}因为每个{*}字节都是其单个位值(0或1)按顺序{b7,b6,b5,b4,b3,b2,b1,b0}的连接,并使用多项式表示解释为有限元素b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x1+b0x0=∑bixi第一步(x6+x4+x2+x+1)(x7+x+1)=x13x11x9x8x7x7x5x3x2xx6x4x2xx=x13x11x9x8x6x5x4x31第二步x13+x11+x9+x8+x6+x5+x4+x3+1mod(x8+x4+x3+x+1)=x7+x6+1根据本发明如图2所示的一种改进的伽罗瓦域乘法器系统10,包括一个二进制多项式乘法器电路12,用来将寄存器14中的两个二进制多项式和寄存器16中的多项式相乘以得到它们的乘积,由表II定义的16项多项式c(x)给出。乘法器电路12实际上包括多个乘法器单元12a,12b,12c...12n。
表IIIc14=a7*b7c13=a7*b6a6*b7c12=a7*b5a6*b6a5*b7c11=a7*b4a6*b5a5*b6a4*b7c10=a7*b3a6*b4a5*b5a4*b6a3*b7c9=a7*b2a6*b3a5*b4a4*b5a3*b6a2*b7
c8=a7*b1a6*b2a5*b3a4*b4a3*b5a2*b6a1*b7c7=a7*b0a6*b1a5*b2a4*b3a3*b4a2*b5a1*b6a0*b7c6=a6*b0a5*b1a4*b2a3*b3a2*b4a1*b5a0*b6c5=a5*b0a4*b1a3*b2a2*b3a1*b4a0*b5c4=a4*b0a3*b1a2*b2a1*b3a0*b4c3=a3*b0a2*b1a1*b2a0*b3c2=a2*b0a1*b1a0*b2c1=a1*b0a0*b1c0=a0*b0每一项包括一个由*表示的AND函数,每一对项通过由表示的逻辑异或XOR合并。本乘积递交给伽罗瓦域线性变换器电路18,其包括许多伽罗瓦域线性变换器部件18a,18b,18c...18n,每个部件由16*8个单元35组成,响应乘法器电路12产生的乘积,以在一个周期中预测该多项式乘积对一个预定的不可约分多项式的模余数。乘法运算在部件18a,18b,18c...18n中执行。本伽罗瓦域线性变换器电路及其每个变换器部件以及它的乘法器功能的结构和运算,在由stein等人于2002年1月18日申请的标题为“伽罗瓦域线性变换器”的美国临时申请第10/051,533号(AD-239J)和由stein等人于2001年11月30日申请的标题为“伽罗瓦域乘法器系统”的美国临时申请第60/334,510号(AD-240J)中进行了详细的说明,它们的全部内容在此引入作为参考。每个伽罗瓦域线性变换器部件在一个周期中通过用多项式乘积除以一个不可约分多项式来预测模余数。这个不可约分多项式可以是,例如,下表IV所示的任何一个多项式。
表IVGF(21)0x3(x+1)
GF(22)0x7(x2+x+1)GF(23)0xB(x3+x+1)0xD(x3+x2+1)GF(24)0x13(x4+x+1)0x19(x4+x3+1)GF(25)0x25(x5+x2+1)0x29(x5+x3+1)0x2F(x5+x3+x2+x+1)0x37(x5+x4+x2+x+1)0x3B(x5+x4+x3+x+1)0x3D(x5+x4+x3+x2+1)GF(26)0x43(x6+x+1)0x5B(x6+x4+x3+x+1)0x61(x6+x5+1)0x67(x6+x5+x2+x+1)0x6D(x6+x5+x3+x2+1)0x73(x6+x5+x4+x+1)GF(27)0x83(x7+x+1)
0x89(x7+x3+1)0x8F(x7+x3+x2+x+1)0x91(x7+x4+1)0x9D(x7+x4+x3+x2+1)0XA7(x7+x5+x2+x+1)0xAB(x7+x5+x3+x1+1)0XB9(x7+x5+x4+x3+1)0xBF(x7+x5+x4+x3+x2+x+1)0XC1(x7+x6+1)0xCB(x7+x6+x3+x+1)0XD3(x7+x6+x4+x+1)0XE5(x7+x6+x5+x2+1)0XF1(x7+x6+x5+x4+1)0XF7(x7+x6+x5+x4+x2+x+1)0xFD(x7+x6+x5+x4+x3+x2+1)GF(28)0x11D(x8+x4+x3+x2+1)0x12B(x8+x5+x3+x+1)0x12D(x8+x5+x3+x2+1)0x14D(x8+x6+x3+x2+1)0x15F(x8+x6+x4+x3+x2+x+1)0x163(x8+x6+x5+x+1)0x165(x8+x6+x5+x2+1)0x169(x8+x6+x5+x3+1)0x171(x8+x6+x5+x4+1)0x187(x8+x7+x2+x+1)0x18D(x8+x7+x3+x2+1)0x1A9(x8+x7+x5+x3+1)
0x1C3(x8+x7+x6+x+1)0x1CF(x8+x7+x5+x3+x2+x+1)0x1E7(x8+x7+x6+x5+x2+x+1)0x1F5(x8+x7+x5+x4+x2+1)表IV示出了本伽罗瓦域乘法器在GF(28)能够执行所有等于和低于28的幂。对于低次多项式,高于所选幂次的系数为0,例如,如果实现GF(25),则GF(25)和GF(28)之间的系数为0,因此该幂次之上不要预测。
对于本特例,已经选择了组合GF(28)中的不可约分或者基本多项式0x11D。带有存储单元226的存储电路220提供给伽罗瓦域线性变换器电路一组系数,用于为该特殊的基本或不可约分多项式预测模余数。
根据本发明的GF乘法的一个例子如下GF()乘法之前 GF8()乘法之后多项式0x11d 多项式0x11d45230001h 45230001hGF()GF()57340001h 57340001hxx xx xx xxh72920001h根据本发明,图14中的第三寄存器215中包括一个在伽罗瓦域带系数的第三多项式。典型的是,每一个寄存器214,216和215都可以包括四个8位字节部分,因此每个寄存器总共可容纳4个字节或32位。寄存器215的输出传送给伽罗瓦域加法器电路219,本实施例中加法器电路219包括总线217和许多异或门219’,每个异或门对应总线217的每一位。在伽罗瓦域线性变换器电路218中获得的乘积在总线221上传送,这样在输出寄存器电路211的Mpy寄存器223可以获得简单乘积,而在总线221上的乘积与第三多项式的合并在包括异或电路219’的加法器电路219中合并,以在输出寄存器电路211的Mpa寄存器225中提供乘法和加法或乘法和累加的结果。例如,如果将伽罗瓦域乘法器系统210的输出循环反馈到输入寄存器电路215,同时两个新值传送到输入寄存器电路214和216,则执行乘法和累加(MAC)运算。另一方面,如果将伽罗瓦域乘法器系统210的输出循环反馈到输入寄存器电路214,同时两个新值传送到输入寄存器电路215和216,则执行乘法和加法(MPA)运算。通过这种方式,寄存器214和216中多项式的所有乘法以及它们与寄存器215中的多项式的加法都是在一个运算周期中完成的。伽罗瓦域乘法器系统210在由stein等人于2002年8月26日申请的“伽罗瓦域乘法/乘法-加法/乘法-累加”的美国专利申请(AD-299J)中进行了更详细的说明,在此引入作为参考。
图15所示,实现本发明的一个可配置的并行查询表系统310,其中包括一个行索引寄存器R2,312和一个列索引寄存器R1,314,一个地址转换电路316和一个包含多个查询表的存储器318。存储器318的输出端传递到输出寄存器320。存储器318包括多个查询表,且行索引寄存器312存有在那些查询表中要查询的值。例如,行索引寄存器312可存有在存储器318的查询表中要查询的角度,其中每个查询表有不同的功能,对那些角度求正弦值、余弦值、正切值等等运算之一。列索引寄存器314中存有表示存储在存储器中的每个查询表的起始地址的值。例如,如果存储器318存有8个查询表,每个查询表有64个字节,那些与列30,32,34,36,38,40,42,44相重合的查询表的起始点为0,64,128,192,256,320,384和448。地址转换电路316将行索引寄存器312中的值与每个查询表的起始地址的表示合并,以同时为索引寄存器中的每个值生成一个地址,来并行定位地定位每个查询表中那些值的函数。并行查询表系统310在由stein等人于2002年4月24日申请的标题为“可重新配置的并行查询表系统”的美国申请第10/131,007号(AD-305J)中进行了更详细的说明,其内容在此引入作为参考。
尽管本发明的详细特征在一些附图中示出而没有在其它附图中示出,这仅仅是为了方便,因为根据本发明每个特征都可以与任何或所有其它特征相结合。在此使用的词“包括”、“包含”、“具有”以及“带有”应取广义而不应局限到任何物理互连。此外,本申请中公开的任何实施方案并不认为是唯一可能的实施方案。
本领域的技术人员将想到其它的实施方案,它们包含在以下的权利要求书中。
权利要求
1.一种用于执行高级加密标准(AES)算法的密码函数的可编程数据加密引擎,包括一个响应于第一数据分组的第一并行查询表,用于实现AES选择功能并执行在GF-1(28)的乘法逆运算以及应用GF(2)仿射变换来获得字节替换变换;一个用于变换所述字节替换变换以获得行移位变换的第二并行查询表,以及一个伽罗瓦域乘法器,用于变换所述行移位变换以获得一个列混合变换,并加上一个轮密钥,导致产生所述第一数据分组的高级加密标准密码函数。
2.根据权利要求1的可编程数据加密引擎,还包括一个为所述伽罗瓦域乘法器提供多个轮密钥的密钥生成器。
3.根据权利要求2的可编程数据加密引擎,其中所述密钥生成器包括一个响应一个主密钥以生成所述轮密钥的密钥生成器电路。
4.根据权利要求3的可编程数据加密引擎,其中所述密钥生成器电路包括一个用于旋转所述主密钥以获得一个旋转后的子密钥的第三并行查询表系统。
5.根据权利要求4的可编程数据加密引擎,其中所述密钥生成器电路包括一个用于在GF-1(28)执行乘法逆运算,并应用GF(2)仿射变换以获得所述轮密钥的第四并行查询表系统。
6.根据权利要求5的可编程数据加密引擎,其中所述第一和第二并行查询表及所述第一伽罗瓦域乘法器执行多轮变换,且为每一轮产生一个轮密钥。
7.根据权利要求6的可编程数据加密引擎,其中每个所述轮密钥包括多个子密钥。
8.根据权利要求1的可编程数据加密引擎,其中所述伽罗瓦域乘法器包括一个乘法器电路,用于在伽罗瓦域将两个带系数的多项式相乘以得到它们的乘积;一个伽罗瓦域线性变换器电路,响应所述乘法器电路,用于预测该多项式乘积对一个不可约分多项式的模余数;一个存储电路,用于为所述伽罗瓦域线性变换器电路提供一组系数,以对一个预定的不可约分多项式预测模余数;以及一个伽罗瓦域加法器电路,用于将所述乘法器电路的所述乘积与一个带系数的第三多项式在伽罗瓦域相加,以在单个周期内执行乘法和加法运算。
9.根据权利要求1的可编程数据加密引擎,其中每个所述并行查询表包括一个存储器;存储在所述存储器中的多个查询表;一个用于存放在所述查询表要查询的值的行索引寄存器;一个用于存储表示存储在所述存储器中的每个所述查询表的起始地址的值的列索引寄存器;以及一个地址转换电路,响应所述列索引寄存器和所述行索引寄存器,同时为所述行索引寄存器中的每个值生成一个地址,以并行定位每个查询表中的那些值的函数。
10.一种用于执行高级加密标准(AES)算法的密码函数的可编程数据加密引擎,包括一个并行查询表系统,在第一模式响应第一数据分组,以实现AES选择功能并执行在GF-1(28)的乘法逆运算以及施加GF(2)仿射变换以获得字节替换变换,在第二模式响应所述字节替换变换,以变换所述字节替换变换来得到行移位变换;以及一个伽罗瓦域乘法器,用于变换所述行移位变换以获得列混合变换,并加上一个轮密钥,导致产生所述第一数据分组的高级加密标准加密函数。
11.根据权利要求10的可编程数据加密引擎,其中所述并行查询表系统在第三模式响应一个主密钥以得到一个子密钥,并且在第四模式响应所述子密钥生成一个轮密钥。
12.根据权利要求11的可编程数据加密引擎,其中所述并行查询表系统包括一个用于实现所述字节替换/字替换变换的第一并行查询表,以及一个用于实现所述行移位/字旋转变换的第二并行查询表。
全文摘要
一种执行高级加密标准(AES)算法的密码函数的可编程数据加密引擎,包括一个并行查询表系统,在第一模式响应第一数据分组以实现AES选择功能并执行在GF
文档编号H04L9/06GK1898896SQ02827580
公开日2007年1月17日 申请日期2002年12月18日 优先权日2001年12月18日
发明者尤塞弗·斯坦, 哈伊姆·普里莫 申请人:阿纳洛格装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1