基于先进加密标准(aes)的硬件密码机的制作方法

文档序号:7863107阅读:293来源:国知局
专利名称:基于先进加密标准(aes)的硬件密码机的制作方法
技术领域
本发明涉及数据加密方法和设备,具体地说,本发明涉及名为Rijndael或AES的对称钥分组密码算法及其相关的硬件或软件实施。更具体地说,本发明涉及用于加密或解密程序中的一种循环钥生成算法,以及为应付企图通过差分电源分析法攻击硬件或软件设施以搜寻密钥的防御技术。
背景技术
根据2001年11月26日的″联邦政府信息处理标准公开197″(FIPS 197),美国商务部国家标准技术局(NIST)在其先进数据加密标准(AES)中采用了Rijndael对称钥分组密码算法的一个子集。
AES算法以128、192和256位的密码钥匙对128位的数据块进行加密和解密。Rijndael算法还能处理大小为192或256的位块,并支持其它中等大小或更大的位块及中等长度或更长的的钥、以及任何长度的钥和任何大小的位块之间的运作。
该算法根据钥长度和块大小,以循环方式重复执行许多几乎相同的循环。AES128使用10循环、AES192使用12循环和AES256使用14循环分别完成一加密或一解密运作。通常,如钥长度Nk为32位字及块大小Nb为32位字,则Rijndael算法目前界定为Nr=max(Nk,Nb)+6,其中Nr为循环次数。
本文所述的发明适用于Rijndael的任何钥长度和任何块大小,包括AES所指定的128-位块,并且还适用于任何一种运作方式。这意味着可理解为引伸适用于Rijndael任何其它大小的块,本专利说明书的其余部分将涉及首选的AES实施例。
由Morris Dworkin(2001 12月)著作的NIST特别出版刊物800-38A,″对分组密码算法运作方式的推荐方法和技术″,载明了NIST批准使用的能与以任何一种对称钥分组密码算法为基础,譬如AES,结合使用的、五种机密运作方式。NIST正研究批准其它可行的运作方式。本发明所述的适用于任何运作方式。
AES的每个循环期间包含三主要步骤(a)修改文本块,(b)产生循环钥,和(c)以所修改过的文本块和所产生的循环钥作XOR逻辑运算,为下一循环提供初始的文本块。除二例外,各循环中的文本块的修改方式(S-box代换,行移位,列混合)亦相同。第一例外是在前钥混合运作(循环0)期间,其明文信息块与首Nb字先被密钥本身填装的一初循环钥作位逻辑XOR运算。(Nb=4为AES)这前钥混合运作为循环1提供开始的文本。第二例外发生在省去列混合运作的最后的循环。上述的FIPS 197文件详述循环中S-box代换、行移位、和列混合的运作细节。
初始密钥使用一个钥扩展程序产生循环钥集(钥排程表)。不管原密钥的长度(128,192或256位)是多少,AES的循环钥的长度总是跟块大小(128位=4个字)相同。早期的循环使用密钥字,直到它消失为止,然后各个连续循环的密钥字是先循环密钥字的函数。由钥扩展程序演算循环钥会随着不同的密钥长度而轻微地不同,由于,当各例使用同样的基本步骤(S-box代换,字节旋转,与一个取整常数作XOR逻辑运算),这些步骤为不同的钥长度出现不同的次数。为实现一直接了当的解密运作,可在加密时对各自的加密变换倒置和实施逆序。为加密和解密运作,钥排程表的形式依然是同样的,但应用上次序倒转。因此,适用于解密的第一循环钥等同来自加密运作的最后循环钥;适用于解密的第二循环钥等同来自加密运作的最后第二循环钥,等等。
钥排程的一种普遍方法是先计算为一通信段全部所需的循环钥,然后为每个循环保存他们在内存中的一钥检索表里。利用这种方法计算循环钥有一个长的初存取时间,但可更快地完成随后密码算法循环中循环钥的计算。此外,在这种情况下,解密循环像加密循环一样快速。但是,这种方法假设有充足的内存存储整个钥排程,并且可忍受长的初存取时间。
使用在其它硬件系统的另一方法涉及依照各循环的需要而产生″急速的″钥排程。由于这种方法不预先处理整个钥排程,故而至少在正向密码算法方向(加密)避免了长的初存取时间,以及大幅减少了循环钥对内存的要求。如设备只需要做加密或有内存和处理等局限,这种方法是特别有用的。但是,在反向密码算法方向(解密),用的循环钥是倒序的。即适用于解密的第一循环钥等同来自加密运作的最后循环钥。而且,循环钥是先循环钥的函数。现有的″急速的″钥扩展方法,在解密程序中有长的存取时间,特别是在早期的解密循环,因为″急速的″钥产生器必须在每循环重算所有在先的循环钥,直到计算出本解密循环的循环钥为止。如果可能,需要为除去这个逆向存取时间的一改善的钥生成程序。
当诸如AES之类的密码算法应用于现实世界时,必须首先实施在硬件或软件上。攻击者也许选择利用实施上的某一弱点,而不是设法发现密码算法上的某一数学弱点。这也许通过外在监视一密码算法系统运作期间所获得的、外泄的、能确定密钥的内部运作的信息。对密码算法系统实施攻击例子包括,利用分析由钥引起相关的执行时间和电源需求模式变化的计时和电源需求攻击。已知对各种各样实施攻击的一般对抗措施有抗干扰的芯片包装、物理屏蔽以阻止信号传播、输入和输出的过滤、计算技术以使调平运作定时或令其随机化、使指令序列独立于密钥或变动从一指令到下一指令的执行和增加电源需求模式的硬件噪声。
例如,授予Kocher等人的美国专利号6,327,661描述在密码算法之中合并变化莫测(随机或伪随机)的信息作为对抗的措施。注意,不是所有这些可能的防御措施适用于每个情况。例如,由于附密码机的智能卡的处理和内存限制,局限了许多可利用的对抗措施。最好有为智能卡和其它处理器或内存上有限制的应用实施而设的另外对抗措施,尤其在最初处理明文的最脆弱期间。
加密和解密是费时的运作。变换明文块成密文需要许多位元组、字节组和字符组的转换和代换,需时处理;和反之亦然。要不是相应增加硬件的处理能力,块大小和循环量的增加,令问题倾向于更坏。
假设安全性不减下,任何能利用某一实施以节省处理时间的方案是有利的。本发明的一目的是提供一种硬件或软件,其能作″急速的″钥排程方法,及能在反向密码算法方向(解密)中高效地产生AES/Rijndael循环钥。
本发明的另一目的是提供一种AES/Rijndael硬件密码机的实现,以提供对抗措施对付在早段密码算法加密期间,特别是在前钥匙混合阶段(循环0)被施以电源分析法的攻击。
本发明的再一目的是提供一种AES/Rijndael密码机的实现,以减少为处理密码算法的总时钟周期。

发明内容
本发明的目的由一钥生成程序的方法实现,该方法为用于密码算法的解密运作,以每一圈循环为基础,根据需要,在逆向″急速的″产生AES循环钥匙字w[i]。钥生成程序更适宜实施在硬件电路上,但如有需要,也可实施在软件上。反向钥生成由提供内存贮存源自加密运作期间的一在正向的钥扩展的最后的一Nk循环钥匙字集而实现。
然后,当钥生成程序电路设置为解密运作时,它通过″急速的″对已存储的循环钥匙字w[i]和w[i-1]作一XOR逻辑运算而获得在先的循环钥匙字w[i-Nk],其中的w[i-1]在施加XOR逻辑运算前,要是每当i mod Nk=0或每当Nk>6和imod Nk=4时,w[i-1]首先被一变换序列修改。在正向和反向的钥扩展程序中,施加于w[i-1]的变换序列是相同的。变换序列包括一循环字节移位、一S-box字节代换和每当i mod Nk=0时,与一取整常数作一XOR的逻辑运算。当Nk>6和i mod Nk=4时,变换序列只包括一S-box字节代换。
本发明的另一目的还由一预混合伪电路实现,其在分组密码算法最初的预混合XOR逻辑运算期间,引入伪随机噪声于硬件分组密码算法电路的整体电源需求信息中。这差别电源分析对抗措施掩藏了在密码算法加密第一循环之前,当明文与密钥混合,所有源自XOR闸开关的电源需求信息。该预混合伪电路只在最初的预混合XOR逻辑运算期间活跃,其特征在于其传播延迟相当相配预混合支电路的。伪电路包括一伪随机产生器和一XOR列阵。该伪随机产生器也许是,例如,一套线性反馈移位寄存器。该XOR列阵的第一输入连接到伪随机产生器的输出。XOR列阵的第二输入连接到像所述的预混合支电路接收的同一样密钥位。XOR列阵的输出反馈到伪随机生成程序。伪电路的伪随机生成程序和XOR列阵也许有与该预混合支电路一相同的字位宽度。
本发明的再一目的由一硬件分组密码算法电路实现,该电路的密码算法配置为,在开始执行密码算法加密循环序列以产生密文前,先执行由一结合预混合运作与第一密码算法加密循环的方法,以密码算法的一最初的预混合XOR运作以混合明文与密钥,因此,减少了为处理密码算法时所需的时钟周期达一循环周期。
当明文被装载时,以这个方法预先处理密钥以为密码算法第一加密循环产生循环钥字。再者,当明文被装载时,预混合XOR逻辑运算也同时执行。然后,以之前产生的第一循环钥字,对装载了的预混合明文执行密码算法加密的第一循环。


图1是AES/Rijndael加密算法载明的输入字节xy的S-box代换值表。
图2为一对十六进制操作数的XOR逻辑运算结果表。
图3是采自FIPS-197所示一128位密钥在加密方向的先有技术钥扩展例子表。
图4是本发明如图3同样为128位密钥,但在反向(解密)的一钥扩展实施例。
图5是采自FIPS-197所示一192位密钥在加密方向的先有技术钥扩展例子表。
图6是本发明如图5同样为192位密钥,但在反向(解密)的一钥扩展实施例。
图7是采自FIPS-197所示一256位密钥在加密方向的先有技术钥扩展例子表。
图8是本发明如图6同样为256位密钥,但在反向(解密)的一钥扩展实施例。
图9A和9B是本发明的钥生成程序的一硬件原理图。
图10是为图9A和9B的钥生成程序的循环钥变换的一硬件原理图。
图11是为循环钥变换序列的S-BOX硬件的另一具体实施例,其中同样的S-box功能实施在不同电源需求模式的四种不同的方式,并且由一台随机生成程序(LFSR)控制通过四个S-BOX的可变通道。
图12是用于图11具体实施例的控制信道,以转换任何256随机号输入成24信道排列选择的一个查寻表。
图13是本发明的一伪电路硬件实施例的电路原理图,该伪电路在AES预混合(循环0)运作期间,引入随机电源需求噪声,作为对抗措施。
图14是以资料和密钥输入信道说明在第一循环时,预混合运作和″急速的″钥排程同时发生的一张电路原理图。
图15是同时执行预混合/钥排程运作的一流程图。
具体实施例方式
本发明最好实施在硬件电路上,作为一微型控制器或其它系统电路,例如一个智能卡的密码机。该密码机也许是一个设计成执行AES运作的特定用途集成电路(ASIC),或是在固件上编有执行AES运作程序指令的一般多用途硬件处理装置。本发明通常与大型系统电路分享内存,并可在软件上实施。
AES/Rijndael算法对一密钥执行一钥扩展程序以产生钥排程表。该钥扩展程序产生一共Nb(Nr+1)字,其中块大小Nb=4为AES标准,但在其它Rijndael实施上是可以不同的,其中循环的次数Nr目前定为[max(Nk,Nb)+6],Nk为密钥大小,单位为32位(4字节)的字。每个循环钥包括Nb字,所产生的钥排程表是一线性数组的字,以[wi]表示,其中i在范围0=<i<Nb(Nr+1)。对于加密,需要在正向方向的循环钥字,从i=0到Nb(Nr+1)。但是,对于解密,需要在反向方向的循环钥字,起点为i=Nb(Nr+1)。
FIPS-197所描述的正向钥扩展伪码如下KeyExpansion(byte key[4*Nk],word w[Nb*(Nr+1)],Nk)begin word tempi=0 while(i<Nk)w[i]=word(key[4*i],key[4*i+1],key[4*i+2],key[4*i+3])i=i+1 end while i=Nk while(i<Nb*(Nr+1))temp=w[i-1]if(i mod Nk=0)temp=SubWord(RotWord(temp))xor Rcon[i/Nk]else if(Nk>6 and i mod Nk=4)temp=SubWord(temp)end if w[i]=w[i-Nk]xortemp i=i+1 end while endSubWord()是一函数,其取一个4-字节输入字,并对其中每个字节,运用S-box表(图1)以产生一输出字。字节由4-位的十六进制值0到f组成的xy对代表。每对xy从S-box表产生输出对。例如,字节{53}由代换字节{ed}替代。AES标准(FIPS-197)载明一用于反密码算法的反S-box。本发明的钥排程的好处是,循环钥能以反向产生而不需用反S-box,但只需用在正向方向相同的S-Box。
函数RotWord()取字[a0,a1,a2,a3]作为输入,执行循环排列,和产生字[a1,a2,a3,a0]。取整常数的字列阵Rcon[i]包含值[xi-1,{00},{00},{00}],其中x={02},xi-1是x在对有限域GF(28),以不可约分的多项式次数8m(x)=x8+x4+x3+x1+x+1={01}{1b},作模数简化后的乘幂。(以m(x)作模数简化确保结果可由一字节代表。)作为参考,前十个取整常数(首先i=1)如下


为了方便起见,图2是十六进制值0到f的XOR(逻辑算符)函数表。注意该XOR函数是位逻辑运算(等效模数2的加法)的。二个字节{a7a6.a5.a4.a3.a2.a1ao}和{b7b6b5b4b3b2b1bo}的总和是{C7C6C5C4C3C2C1C0},其中每个ci=ai XOR bi。这些字节可由一对十六进制表示法的十六进制值所表达。值得注意的是,本发明的反向钥扩展程序利用XOR函数的特性,即ci=ai XOR bi当且仅当ai=ci XOR bi。
从以上伪码得出,正向钥扩展程序由以密钥填装扩展钥的前Nk字开始。每个随后而来的字w[i]等于前面的字w[i-1]与前Nk个位置的字w[i-Nk]的XOR运算结果。如字是在Nk倍数的位置(也就是其中i mod Nk=0),则在与w[i-Nk]作XOR运算之前,把变换序列运用于w[i-1]。该变换序列包括字(即RotWord()函数)字节的一循环移位,接着,对字的所有四个字节(即SubWord()函数),应用S-box查表,再接着,以取整常数Rcon[i/Nk]为该字作XOR逻辑运算。
另外,在Rijndael密码算法算法中,当密钥为256位(Nk=8)或更大(Nk>6)时,如果i-4是Nk的倍数(即i mod Nk=4),则在与w[i-Nk]作XOR逻辑运算之前,把S-box查寻函数SubWord()运用于w[i-1]。
图3、5和7分别为128位、192位和256位密钥的正向钥扩展程序例。
本发明的反向钥扩展方法反向“急速地”(也即根据需要逐个取整地(round-by-round basis))产生取整密钥。反向钥扩展程序的伪码是如下=============================================ReverseKeyExpansion(word w[Nb*(Nr+1)],Nk)begin word temp i=Nb*(Nr+1)-1 while(i>Nk)temp=w[i-1]if(i mod Nk=0)temp=SubWord(RotWord(temp))xor Rcon[i/Nk]else if(Nk>6 and i mod Nk=4)temp=SubWord(temp)end if w[i-Nk]=w[i]xor temp i=i-1 end while end该反向钥扩展程序需要保存早先从正向扩展程序获得的循环钥的最后的Nk字在内存。在逆序,这些最后循环钥字是等效用于反密码算法的首循环钥字。每个随后反向(即,i的减少)产生的字,w[i-Nk]等于比w[i]早Nk个位置的字及它可被变换序列适当地修改的毗邻字w[i-1]的XOR逻辑运算结果。为应用变换序列的条件,该变换序列本身与正向钥扩展的一致。函数SubWord()、RotWord()和XOR及取整常数的字列阵Rcon[i]同前述的正向钥扩展描述的一样。如字是在Nk倍数的位置(即,其中i mod Nk=0)应用于w[i-1]的变换序列包括字节的一循环移位(即,RotWord()函数);接着应用S-box查表于字的所有四个字节(即,SubWord()函数);再接着以对应循环钥匙Rcon[i/Nk]作XOR逻辑运算。另外,在Rijndael反向密码算法算中,当密钥为256位(Nk=8)或更大(Nk>6)时,如果i-4是Nk的倍数(即i mod Nk=4),则与w[i-Nk]作XOR逻辑运算之前,把S-box查寻函数SubWord()运用于w[i-1]。
图4、6和8以及图4、5和7分别为128位、192位、和256位的正向钥扩展程序以及反向钥扩展程序例。比较图3和4,我们能看到在AES产生为循环0预混合和随后10循环需要同样的44个循环钥字,w
到[43]。(每循环使用4个循环钥字,因为AES块大小,Nb是4个32位字或256位。)在正向方向,扩展从4个密钥字w
到w[3]开始。在反向,早先从正向钥扩展获得和保存在内存最后的4个字,w[40]到[43],以逆序派生出其它的循环钥字w[39]到w
。在每个方向,每隔4个字,即当i是4(=Nk)的倍数,应用相同的变换序列于w[i-1]。以同样的i值比较图3和4的列,证实在反向的变换序列(图4)和应用在正向钥扩展方向(图3)的是相同的。正向和反向钥扩展上的区别在字的最后二个栏。XOR的运作明显是对称的,因为在该二个方向,最后的二个栏是相反的,在正向方向(图3)w[i-Nk]用以产生w[i],但在反向(图4)w[i]用以产生w[Nk]。同样地,以同样的192位密钥比较图5和6,证实反向钥扩展和正向钥扩展同样为预混合的循环0、12运算循环和等效的反向相反密码算法循环产生同样的52个循环钥字。同样地,图7和8证实,反向钥扩展正确地使用从正向扩展获得及保存的8个字,反向产生60个循环钥字。注意,在反向使用同样的SubWord()变换。本发明不用亦不需要用为反向钥扩展用的一S-box反运算表。
图9A和9B关于钥排程表电路,包括存储Nk字(可达8个)的多输入寄存器110到117。这些是正向加密密钥的首Nk字。为反向加密,这些寄存器用从先加密循环所装载及存储在系统内存最后的Nk循环字。输入寄存器110到117通过选择复用器130到137,供给这些最初的字值到用以装载字的循环钥寄存器150到157。循环钥寄存器150到157的输出标明为rk1到rk4和rk1b到rk4b。
这些输出被重复到复用器130到137和输入到一对复用器17和18的输入作处理。当复用器17接收w[i-1]的字,其中如适当索引i则由变换序列处理;复用器18接收为正向钥扩展方向的w[i-Nk]或为反向钥扩展方向的w[i]。通过变换电路19或沿字总线20绕过它后,并依照由复用器21的选择,由此二个字被输入到XOR闸23,其结果keystrand-next成为下一轮的钥字,更新了循环钥寄存器150。
图10所示为适当时应用变换序列于循环钥字w[i-1]的一变换电路19。由复用器17选择作为keycloud[31:0]输入的字w[i-1],由4×4字节复用器25分割和旋转。各个字节然后被输入到当中的一个S-box270到274,其中可运用查表法或门部件作为实施。各个S-BOX输出结果为一字节。一取整常数XOR电路29接收被变换的字的第一字节,并相加对应于i/Ink的某一取整常数。为了产生正确循环钥常数,电路29接受两个索引位元组i[3:0]和keysize[1:0]标识(例00为128位钥,01为192位钥,10为256位钥)。被变换的字由复用器31再结合。当Nk=8,从S-Boxes 270到274的一可供选择信道,略过取整常数增加块,并且当i mod8=4时恢复原来未旋转字节的正确排序。这个供选择信道将被变换的字(临时的)与复用器32结合。未变换的字w[i-1]沿信道33避过变换。由复用器35选择正确的临时字。
图11为应付企图通过电源分析法攻击钥排程电路的防御措施,其中使用不同类型的S-box实施。例如,使用各有不同电源需求信息的SRAM、ROM、积云电路和计算电路以提供功能。如S-BOX为4个,有4!=24不同的排列变化。由随机地改变字节通过不同单元的次序,电源需求特征可有24种不同的形式。在图11,一字输入37分割成字节,接着输入到不同的S-box 410到413。这些然后被再结合以产生S-BOX变换的输出字45。
由一随机生成程序47和控制信号选择生成程序49共同控制的一套位元组选择复用器390到393和他们的补集430到433,以产生可选信道排列及恢复原字逆排列。该随机生成程序47也许是带某经选择的多项式设置以控制生成的一线性反馈移位寄存器。选择控制信号生成程序49根据图12表所示的运作。从随机生成程序47的各9位元LFSR范围输出,可选择24种信道排列的当中一种,并输出对应的选择SEL和反选择SEL-1控制信号。其它信道排列实施可藉改变选择控制信号生成程序49的函数表或另外改变LFSR的大小或改变其它随机生成程序47的特定伪随机函数。也许以查表作为选择控制信号生成程序49的实施。
图13是在预混合(取整0)运作期间,伪电路引入电源需求噪声,作为另外一种对抗电源需求和计时分析的防御措施。该伪电路的传播延迟相配最初XOR预混合列阵的,并引入最好是由一套线性反馈移位寄存器51和53组成的随机生成程序以产生伪随机噪声。复用器组件55-57的延迟特性与真正的输入电路对应组件的相配。
密码算法处理真正的明文时,不使用XOR列阵59的字输出,但反馈该输出到随机生成程序51和53的输入。它相配真正的XOR列阵的特性(及字宽),但由于随机生成,有不同的输入。随机生成程序还接受一字连一字的明文输入,为使伪信号与明文有一些关联(但与密钥没有关联),以使过滤伪特征更加困难。
图14和15是关于在第一循环之前,即使当为密码算法第一循环而产生循环钥字的同时,也可执行结合明文块与密钥的预混合运作。输入缓冲器71接受一128位明文块。同样的,输入缓冲器72接受首128位的密钥。这些块单元处理成32位字,然后以复用器75以移位元方式送进预混合XOR列阵73。在最后的循环(或解密的第一循环),由依照AES算法规格编程的复用器77选择略过钥混合运作。然后继续进行AES循环1的S-box变换79、列混合运作81和使用循环钥的钥XOR运作83。随后循环在输入84得到从一早先循环的块的变换字。为对一变换字作钥XOR逻辑运算的keystrand来自前述的钥排程。钥排程的运作是这样的,在循环0预混合运作(preroundl)期间,产生第一循环钥(图15 prestepkey_1到prestepkey_4),以便随后的循环,包括第一roundm,在不需等待下已经有循环钥字可供利用。
权利要求
1.在配置上基于先进加密标准(AES)-Rijndael分组密码算法而执行一个钥扩展程序的一种钥生成程序方法,其特征在于以从一指定的Nk字密钥,产生一Nb(Nr+1)循环钥字w[i]的钥排程,其中Nb是密码算法之中以字为单位的块的大小,而Nr是用于密码算法的循环次数,钥生成程序配置成以每一圈循环为基础,根据需要,″急速的″产生循环钥匙字w[i],其改善包括一种为使反向″急速的″产生循环钥字的方法,使所述的循环钥字能用于密码算法的解密运作上,所述的方法包括步骤如下提供内存为存储最后的一Nk字循环钥集;在正向加密运作期间,执行一钥扩展程序,以获得所述的最后Nk字循环钥集并存储在所述的内存中;设置为解密运作的钥生成程序;和通过对已存储循环钥匙字w[i]和w[i-1]的XOR逻辑运算,″急速的″派生出在先的循环钥匙字w[i-Nk],其中每当i mod Nk=0或每当Nk>6和i mod Nk=4,则w[i-1]作XOR逻辑运算之前,w[i-1]先被变换序列修改;该变换序列包括一循环字节移位、和当i mod Nk=0,一S-box字节代换及与一取整常数作XOR逻辑运算,而当Nk>6和i mod Nk=4,变换序列仅有S-box字节代换;应用于w[i-1]的前述变换序列,不管是在钥扩展程序的正向还是反向,亦是一致的,并且依照AES-Rijndael分组密码算法执行。
2.根据权利要求1所述的钥生成方法,其特征在于所述的钥生成程序以硬件电路为实施。
3.根据权利要求2所述的钥生成方法,其特征在于所述的多个S-box提供执行S-box字节代换,各个S-box有依照AES-Rijndael指定的同样功能,但用不同的硬件实现不同的电源需求信息,其中一伪随机生成程序选择可变的信道到不同的S-box,为使各字节在钥扩展程序中被代换。
4.根据权利要求3所述的钥生成方法,其特征在于所述的伪随机生成程序是一线性反馈移位寄存器,以提供一n位伪随机输出,及提供以伪随机输出寻址、和提供与伪随机输出相应的信道选择控制信号的一查寻表。
5.根据权利要求1所述的钥生成方法,其特征在于所述的硬件分组密码算法电路有一预混合支电路,其在开始执行密码算法加密循环序列以产生密文前,先执行最初的预混合XOR运作以混合明文与密钥,并实施对差分电源需求分析攻击一种防御的方法在预混合XOR运作期间,一预混合伪电路处于运行状态,该伪电路特征为其传播延迟极相配所述的预混合支电路,该伪电路并由一伪随机生成程序和一XOR列阵组成,XOR列阵以第一输入连接到伪随机生成程序的输出,并以第二输入连接到以接收所述的预混合支电路相同的密钥位,再以输出反馈到伪随机生成程序,其中该伪电路引入伪随机电源需求噪声到整体电源需求信息,该整体电源需求信息来自最初预先混合XOR运算期间,硬件分组密码算法电路所有XOR闸的开关。
6.根据权利要5所述的钥生成方法,其特征在于所述的伪随机生成器包括一组线性反馈移位寄存器。
7.根据权利要5所述的钥生成方法,其特征在于所述的伪随机生成器和伪电路的XOR数组具有与预混合支电路相同的字宽位。
8.根据权利要求1所述的钥生成方法,其特征在于所述的一硬件分组密码算法电路配置成执行密码算法,其在开始执行密码算法加密循环序列以产生密文前,先执行最初的预混合XOR运作以混合明文与密钥,其改良包括一种方法使预混合运作与密码算法加密第一循环运作相结合,所述的方法包括步骤如下当明文被装载时,为密码算法第一加密循环产生循环钥字而预先处理密钥,再者,当明文被装载时,预混合XOR逻辑运算也同时执行;和以之前产生的第一循环钥字,对装载了的预混合明文执行密码算法加密的第一循环。
全文摘要
本发明涉及Rijndael-AES先进加密标准(AES)的一种密码算法及其相关的实施方法。其一改良为,解密循环钥(w[i])是以每一圈循环为基础,从先前加密钥排程运作所保存的最后的Nk循环钥所产生。因此,减小了存取时间和内存的要求。用于AES以生成钥以及用于密码算法运作的S-boxes(4文档编号H04L9/06GK1672352SQ03817511
公开日2005年9月21日 申请日期2003年5月23日 优先权日2002年5月23日
发明者D·L·斯尼尔 申请人:爱特梅尔股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1