基于aes的192比特位密钥扩展系统及方法

文档序号:7894763阅读:464来源:国知局
专利名称:基于aes的192比特位密钥扩展系统及方法
技术领域
本发明属于安全技术领域,涉及数据加密,特别涉及高级加密标准AES中的密钥扩展方法,可用于网络通信。
背景技术
2001年11月美国商务部国家标准技术局NIST公开的高级加密标准AES是用于无密级加密的一种算法。自公开以来,AES算法被广泛的应用于加密协议、通信终端以及服务器等闻端广品中。
AES算法采用了 Rijnddel对称密钥算法的子集,支持长度为128比特位的分组和长度为128、192和256比特位的密钥。该算法通过对初始密钥进行密钥扩展得到轮密钥,并用轮密钥对128位的数据块进行加密和解密。在AES算法中,根据初始密钥的长度不同,加密的轮数r有所不同;在初始密钥长度为128比特位、192比特位和256比特位的情况下,相应的轮数r分别为10、12和14。由于每一轮加密都需要不同的128比特位的轮密钥与数据块进行按位异或操作,而初始密钥长度只能为128比特位、192比特位或256比特位,无法为每轮加密提供不同的轮密钥,故该算法包含了密钥扩展算法,用于把初始密钥扩展成长度为1280比特位、1536比特位或1792比特位的数据串,从而生成加密所需要的所有轮密钥。目前广泛应用的密钥扩展方法有两种一种是《A Rijndael CryptoprocessorUsing Shared On-the-fly Key Scheduler》所使用的实时密钥扩展方法,即密钥扩展单元在进行密钥扩展的同时为加密进程提供轮密钥;这种方法的缺点在于轮密钥无法重用,因而对于数据量大、需要连续使用轮密钥的场合,持续执行密钥扩展操作所带来的功耗较大;另一种是《AES算法的一种优化的FPGA实现方法》所使用的预密钥扩展方法,即先进行密钥扩展生成所有的轮密钥并存储到内存中,再进行加密;在该方法中,由于加密流程要等待密钥扩展完成之后才能进行,从而增加了加密所需要的时间,降低了整个加密过程的效率。

发明内容
本发明的目的在于针对上述传统方法的不足,提出一种基于AES的192比特位密钥扩展系统及方法,以兼顾密钥扩展的实时性以及轮密钥的可重用性,实现密钥扩展的高效率和低功耗。为实现上述目的,本发明基于高级加密标准AES的192比特位密钥扩展系统,包括扩展计数单元,用于对序号η进行加I操作,并将序号η输出;暂存单元,由位宽均为32比特的52个寄存器构成,用于暂存初始密钥和轮密钥,保证密钥扩展进程能够即时取用;轮密钥存储单元,采用位宽为32比特位,深度为52的双口 SDRDM,用于存储初始密钥和轮密钥,保证在密钥扩展进行的同时能够为加密流程实时的提供轮密钥,并保证对后续数据块进行加密时无需密钥扩展即可直接读取已存储轮密钥;
循环寄存器,用于存储供字循环单元读取使用的32比特位的值;字循环单元,用于对循环寄存器中的值进行循环左移I个字节的操作,并将结果输出给替换寄存器;替换寄存器,用于存储供字节替换单元读取使用的32比特位的值;字节替换単元,用于将替换寄存器中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第O位这4个字节发送给S盒单元,并将S盒单元的返回值按照发送地址时的顺序从高到低组合后输出给按位异或単元;S盒单元,采用四个预存有S盒的R0M,用于将字节替换单元发送的四个地址在S盒中所对应的四个8比特位的值返回给字节替换单元;轮常数选择单元,用于根据序号n,从9个16进制的候选值:0,1,2,4,8,10,20,
40,80中选出ー个值输出给异或单元;异或寄存单元,包括位宽均为32比特位的O号寄存器、I号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器,用于存储异或单元所要使用的32比特位的值;异或单元,包括O号异或子単元、I号异或子単元、2号异或子単元、3号异或子单元、4号异或子単元和5号异或子単元,用于进行按位异或操作,并将所得结果作为轮密钥输出给暂存单元;循环控制単元,用于根据序号η决定下ー步是停止还是继续进行密钥扩展进程,若序号η为8,则结束密钥扩展进程,若轮号为0-7范围内的值,则继续执行密钥扩展进程。为实现上述目的,本发明基于高级加密标准AES中192比特位初始密钥的扩展方法,包括如下步骤I)将对密钥扩展进程进行计数的变量定义为序号η,其取值范围分为0-7以外的整数域和0-7之间的整数域这两种情况;2)将序号η归零,开始密钥扩展进程;3)将初始密钥从高位到低位分为6个32比特位的值,再按此顺序同时将这6个32比特位的数据存入地址为0,I,2,3,4,5的寄存器和一个专用于存储轮密钥的双ロ SDRDM中;4)执行字循环操作4. I)根据序号η确定寄存器地址d,若序号η为0_7之外的值,则寄存器地址d的值保持不变,否则按以下规律确定地址若序号η为O,则寄存器地址d为5 ;序号η每增加I,寄存器地址d的值就增加6 ;4. 2)从寄存器地址d所对应的寄存器中取值赋给循环寄存器,将循环寄存器中的32比特位值循环左移一个字节,并输出到替换寄存器中;5)执行字节替换操作5. I)将替换寄存器中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第O位这4个字节,分别发送给4个预存有S盒的R0M,这四个ROM再将接收到的地址值在S盒中对应的8比特位数值同时返回; 5. 2)将4个ROM返回的8比特位数值按照步骤5. I)中每个地址在原32比特位值中的位置从高到低的顺序,组合成一个新的32比特位的值作为字节替换操作的输出;
6)执行按位异或操作,并存储轮密钥6. I)根据序号η确定寄存器地址eO, el, e2, e3, e4和e5,若序号η为0-7之外的值,则寄存器地址e0,el, e2, e3, e4和e5中的值均保持不变,否则按以下规律确定地址若序号n为0,则寄存器地址eO, el, e2,e3,e4和e5依次被赋值0,1,2,3,4,5 ;序号η每增加I,则寄存器地址eO, el, e2, e3, e4和e5的值均增加6,若序号η为7,则寄存器地址e4和e5保持不变,其它寄存器地址正常增加;6. 2)从寄存器地址e0,el, e2, e3, e4和e5所对应的寄存器中取值,并分别赋给O号寄存器、I号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器;6. 3)根据序号η从9个16进制的候选值中选择轮常数值输出,即当序号η为0_7时,对应的轮常数值输出依次为1,2,4,8,10,20,40,80,否则,轮常数值输出为O ;6.4)根据序号η确定寄存器地址f0,fl,f2,f3,f4和f5的值,若序号η为0-7之外的值,则寄存器地址f0,fl, f2,f3,f4和f5中的值均保持不变,否则按以下规律确定地址若序号n为0,则寄存器地址f0,fl,f2,f3,f4和f5依次被赋值6,7,8,9,10,11 ;序号η每增加I,则寄存器地址f0,fl,f2,f3,f4和f5的值都增加6,若序号η为7,则寄存器地址f4和f5地址保持不变,其它寄存器地址正常增加;6. 5)对O号寄存器中的值和字节替换操作的输出执行按位异或操作,用此结果再与轮常数值输出进行按位异或后,将所得结果作为轮密钥的一列存入寄存器地址f0所对应的寄存器和双口 SDRDM中;6. 6)对I号寄存器中的值和寄存器地址f0所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址Π所对应的寄存器和双口 SDRDM中;6. 7)对2号寄存器中的值和寄存器地址fl所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f2所对应的寄存器和双口 SDRDM中;6. 8)对3号寄存器中的值和寄存器地址f2所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f3所对应的寄存器和双口 SDRDM中;6. 9)对4号寄存器中的值和寄存器地址f3所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f4所对应的寄存器和双口 SDRDM中;6. 10)对5号寄存器中的值和寄存器地址f4所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f5所对应的寄存器和双口 SDRDM中;此时完成了轮密钥的6列的存储;7)对序号η加1,若加I后的结果为8,则停止密钥扩展进程,否则重复步骤4)至步骤7)。本发明具有如下优点I)本发明通过简化密钥扩展循环的判断条件,以及减少密钥扩展的循环次数,与传统方法相比,在提高密钥扩展的效率的同时降低了密钥扩展的功耗。传统方法均采用高级加密标准AES中的密钥扩展算法,将初始密钥扩展得到的扩展密钥视作一个数组W[i] ,0 < i < 52,其中每个数组元素w[i]为轮密钥的一列,而编号i作为密钥扩展循环过程的主要参考对象;在初始密钥为192比特位的情况下,传统密钥扩展的循环依据编号i能否被6整除分成了两种情况,若编号i能被6整除,则w[i]=w[i-6] sub word(rot word(w [i -1 ])) rcon(i/6),否贝 lj, w[i]=w[i-6] w[i-l];其中,subword
表示对括号内的值进行字节替换操作,rotword表示对括号内的值进行字循环操作,rcon表示根据括号内的值选择轮常数;这种密钥扩展方法每循环一次仅产生轮密钥的一列,故而产生所有的12个轮密钥需要进行密钥扩展循环48次,且对条件“编号i是否能被6整除”的判断要进行48次,因而不仅效率较低,而且在实际应用中功耗也较大。
本发明中,密钥扩展循环的判断条件仅有I个,就是序号η ;即在正常执行的情况下,序号η的取值为0-7之间的8个整数值,密钥扩展的循环过程是依据序号η来选择操作数以及执行字循环、字节替换和按位异或操作,这样的循环每次产生轮密钥数组中的6列;通过这种循环方式,本发明的密钥扩展方法只需循环8次,即可完成所有轮密钥的生成,而对于轮号的判断也只需进行8次,不仅简化了密钥扩展循环的判断条件,而且减少了密钥扩展的循环次数,从而在提高了密钥扩展的效率的同时降低了密钥扩展的功耗;2)本发明具有较高的实用性。在实际应用中,由于环境以及电路故障等原因,可能造成序号η的值不在0-7之间的整数域内,从而使得整个密钥扩展过程都无法正常进行;对于这种情况,本发明中给出了对应的处理方式,使得其它的的操作不受序号η异常赋值的影响,从而降低了故障所带来的不良影响,提高了本发明的实用性;3)本发明通过暂存单元的定义,使得密钥扩展进程可以通过判定地址来选择性的读取暂存在其中的轮密钥,又通过运用寄存器地址d,e0,el,e2,e3,e4,e5,f0,fl,f2,f3,f4,f5的取值规律提高了密钥扩展中的运算操作数的选择和读取过程的效率;4)本发明由于将完成一个轮密钥扩展所需要的操作流程化,并在完成每个轮密钥扩展的同时,将轮密钥存入双口 SDRDM和暂存单元中,故在实时的为加密流程提供轮密钥的同时保证了轮密钥的可重用性,从而兼顾了高效率与低功耗;5)本发明通过使用4个S盒来完成字节替换,使得字节替换过程的实现易于并行实现,同时提高了密钥扩展的效率。


图I为本发明192比特位密钥扩展系统结构图;图2为本发明192比特位密钥扩展方法流程图;图3为本发明192比特位密钥扩展方法中的字循环操作子流程图;图4为本发明192比特位密钥扩展方法中的字节替换操作子流程图;图5为本发明192比特位密钥扩展方法中的按位异或操作子流程图。
具体实施例方式参照图1,本发明基于高级加密标准AES的192比特位密钥扩展系统包括扩展计数单元I、暂存单元2、轮密钥存储单元3、循环寄存器4、字循环单元5、替换寄存器6、字节替换单元7、S盒单元8、轮常数选择单元9、异或寄存单元10、异或单元11、循环控制单元12,该S盒单元8包括4个预存有S盒的ROM 0号ROM、I号R0M、2号ROM和3号ROM ;该异或寄存单元10包括6个位宽为32比特位的寄存器0号寄存器、I号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器;该异或单元11包括6个异或子单元0号异或子单元、I号异或子单元、2号异或子单元、3号异或子单元、4号异或子单元和5号异或子单元。其中扩展计数单元1,用于对序号η进行加一操作,并将序号η同时输出给循环控制单元12、轮常数选择单元9和暂存单元2。暂存单元2,由位宽均为32比特的52个寄存器构成,用于暂存初始密钥和轮密钥,保证密钥扩展进程能够即时取用,此外还用于根据序号η 选择轮密钥输出给轮密钥存储单元3和异或寄存器单元10,其中的轮密钥,是指密钥扩展进程所产生的12个128比特位数,用于为高级加密标准AES中加密算法的每轮加密提供不同的128比特位数。轮密钥存储单元3,采用位宽为32比特位,深度为52的双口 SDRAM,用于存储初始密钥和轮密钥,使得加密流程能够在密钥扩展进行的同时取得已存储的轮密钥,并保证后续数据加密时无需密钥扩展即可直接读取已存储轮密钥。循环寄存器4,位宽为32比特位,用于存储供字循环单元5读取使用的值。字循环单元5,用于将循环寄存器4中的值进行循环左移I个字节并输出给替换寄存器6。替换寄存器6,用于存储供字节替换单元7读取使用的32比特位的值。字节替换单元7,用于进行字节替换操作,首先将替换寄存器6中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第O位这4个字节发送给S盒单元8,之后将S盒单元8的返回值按照从O号ROM到3号ROM的顺序组合后得到字节替换操作的结果,并输出给按位异或单元。S盒单元8中的O号ROM、I号ROM、2号ROM和3号ROM均存有S盒,每个ROM位宽为8比特,深度为256,用于接收字节替换单元7发送过来的地址,并将地址在S盒中对应的值返回给字节替换单元7,其中O号ROM接收字节替换单元7发送过来的第31位到第24位的地址,并将该地址所对应的8比特位值输出给字节替换单元7 ;I号ROM接收字节替换单元7发送过来的第23位到第16位的地址,并将该地址所对应的8比特位值输出给字节替换单元7 ;2号ROM接收字节替换单元7发送过来的第15位到第8位的地址,并将该地址所对应的8比特位值输出给字节替换单元7 ;3号ROM接收字节替换单元7发送过来的第7位到第O位的地址,并将该地址所对应的8比特位值输出给字节替换单元7。轮常数选择单元9,用于根据序号n,从9个16进制的候选值0,1,2,4,8,10,20,40,80中选出一个值输出给异或单元11,即当序号η为0-7时,对应的输出依次为1,2,4,8,10,20,40,80,否则,输出为O ;其中,轮常数为AES标准中的密钥扩展算法所采用的概念,每个轮常数由序号η计算得来,因序号η取值范围有限,故直接采用计算结果作为轮常数的候选值,需要说明的是O并非轮常数值,而是为了防止序号η异常而设置的候选值。异或寄存单元10,包括位宽均为32比特位的O号寄存器、I号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器,用于存储异或单元11所要使用的32比特位的值,其中,O号寄存器存储O号异或子单元所要使用的32比特位的值,I号寄存器存储I号异或子单元所要使用的32比特位的值,2号寄存器存储2号异或子单元所要使用的32比特位的值,3号寄存器存储3号异或子单元所要使用的32比特位的值,4号寄存器存储4号异或子单元所要使用的32比特位的值,5号寄存器存储5号异或子单元所要使用的32比特位的
值异或单元11,包括O号异或子单元、I号异或子单元、2号异或子单元、3号异或子单元、4号异或子单元和5号异或子单元,用于进行按位异或操作,并将所得结果作为轮密钥输出给暂存单元2,其中O号异或子单元,对O号寄存器中的值、字节替换单元11的输出和轮常数选择单元9的输出进行按位异或后,将所得结果作为轮密钥一列同时输出给I号异或子单元和暂存单元2 ;I号异或子单元,将I号寄存器中的值和O号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列同时输出给2号异或子单元和暂存单元2 ;2号异或子单元,将2号寄存器中的值和I号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列同时输出给3号异或子单元和暂存单元2 ;3号异或子单元,将3号寄存器中的值和2号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列同时输出给4号异或子单元和暂存单元2 ;4号异或子单元,将4号寄存器中的值和3号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列同时输出给4号异或子单元和暂存单元2 ;5号异或子单元,将5号寄存器中的值和4号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列输出给暂存单元2 ;此时完成了轮密钥的6列的暂存,这6列可能会分成两种情况作为轮密钥,一种是前4列作为一个轮密钥,后两列作为另一个轮密钥的第127位到第64位,另一种是前两列作为一个轮密钥的第63位到第O位,后四列作为另一个轮密钥。循环控制单元12,根据序号η决定下一步是停止还是继续进行密钥扩展进程,若序号η为8,则结束密钥扩展进程,若轮号为0-7范围内的值,则继续执行密钥扩展进程。参照图2,本发明的基于AES的192比特位密钥扩展方法,包括如下步骤步骤1,将对密钥扩展进程进行计数的变量定义为序号η,其取值范围分为0-7以外的整数域和0-7之间的整数域这两种情况。步骤2,将序号η归零,开始密钥扩展进程。步骤3,将初始密钥从高位到低位分为6个32比特位的值,再按此顺序同时将这6个32比特位的数据存入地址为0,1,2,3,4,5的寄存器和一个专用于存储轮密钥的双口SDRAM 中。步骤4,执行字循环操作。参照图3,本步骤的实现如下4. I)根据序号η确定寄存器地址d,若序号η为0-7之外的值,则寄存器地址d的值保持不变,否则按以下规律确定地址若序号η为O,则寄存器地址d为5 ;序号η每增加1,寄存器地址d的值就增加6,例如,若序号η为5,则寄存器地址d的值就为35 ;若序号η为6,则寄存器地址d的值增加为41。
4. 2)从寄存器地址d所对应的寄存器中取值赋给循环寄存器,将循环寄存器中的32比特位值循环左移一个字节,并输出到替换寄存器中。步骤5,执行字节替换操作。参照图4,本步骤的实现如下5. I)将替换寄存器中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第O位这4个字节,并将第31位到第24位地址发送给O号R0M,将第23位到第16位地址发送给I号R0M,将第15位到第8位地址发送给2号ROM,将第7位到第O位地址发送给3号R0M,这4个ROM再分别将接收到的地址值在S盒中对应的4个8比特位数值输出。
5. 2)将4个ROM的输出值按照步骤5. I)中发送地址时的顺序从高到低组合成一个32比特位的值作为字节替换操作的输出,即将O号ROM、I号ROM、2号ROM和3号ROM的返回值依次作为最高字节、次高字节、第三字节和第四字节组合成32比特位的值。步骤6,执行按位异或操作。参照图5,本步骤的实现如下6. I)根据序号η确定寄存器地址eO, el, e2, e3, e4和e5,若序号η为0-7之外的值,则寄存器地址e0,el, e2, e3, e4和e5中的值均保持不变,否则按以下规律确定地址若序号n为0,则寄存器地址eO, el, e2,e3,e4和e5依次被赋值0,1,2,3,4,5 ;序号η每增加I,则寄存器地址e0,el, e2, e3, e4和e5的值均增加6,例如,若序号η为5,则寄存器地址eO的值为30,el的值为31,e2的值为32,e3的值为33,e4的值为34,e5的值为35 ;若序号η为6,则寄存器地址eO的值增加为36,el的值增加为37,e2的值增加为38,e3的值增加为39,e4的值增加为34,e5的值增加为40 ;若序号为7,则寄存器地址e4和e5保持不变,其它地址正常增加;6. 2)从不同寄存器地址所对应的寄存器中取值赋给不同的寄存器6. 2a)从寄存器地址eO所对应的寄存器中取值赋给O号寄存器;6. 2b)从寄存器地址el所对应的寄存器中取值赋给I号寄存器;6. 2c)从寄存器地址e2所对应的寄存器中取值赋给2号寄存器;6. 2d)从寄存器地址e3所对应的寄存器中取值赋给3号寄存器;6. 2e)从寄存器地址e4所对应的寄存器中取值赋给4号寄存器;6. 2f)从寄存器地址e5所对应的寄存器中取值赋给5号寄存器;6. 3)根据序号η从9个16进制的候选值中选择轮常数值输出,即当序号η为0_7时,对应的轮常数值输出依次为1,2,4,8,10,20,40,80,否则,轮常数值输出为O ;6. 4)根据序号η确定寄存器地址f0,f 1,f2,f3,f4和f5的值,若序号η为0-7之外的值,则寄存器地址fo,fl, f2, f3,f4和f5中的值均保持不变,否则按以下规律确定地址若序号n为0,则寄存器地址f0,fl,f2,f3,f4和f5依次被赋值6,7,8,9,10,11 ;序号η每增加1,则寄存器地址f0, fl, f2, f3,f4和f5的值都增加6,例如,若序号η为3,则寄存器地址f0的值为24、fl的值为25、f2的值为26、f3的值为27、f4的值为28、f5的值为29 ;若号η为4,则寄存器地址f0的值增加为30,fl的值增加为31,f2的值增加为32,f3的值增加为33,f4的值增加为34,f5的值增加为35 ;
若序号为7,则寄存器地址e4和e5保持不变,其它地址正常增加;6.5)对O号寄存器中的值和字节替换操作的输出执行按位异或操作,用此结果再与轮常数值输出进行按位异或后,将所得结果作为轮密钥一列存入寄存器地址 所对应的寄存器和双口 SDRAM中;6. 6)对指定的两个寄存器中的值执行按位异或操作,并将所得结果作为轮密钥的一列存入寄存器 和双口 SDRAM中6. 6a)对I号寄存器中的值和寄存器地址f0所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址Π所对应的寄存器和双口 SDRAM中;6. 6b)对2号寄存器中的值和寄存器地址f I所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f2所对应的寄存器和双口 SDRAM中;6. 6c)对3号寄存器中的值和寄存器地址f2所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f3所对应的寄存器和双口 SDRAM中;6. 6d)对4号寄存器中的值和寄存器地址f3所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f4所对应的寄存器和双口 SDRAM中;6. 6e)对5号寄存器中的值和寄存器地址f4所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f5所对应的寄存器和双口 SDRAM中,此时完成了轮密钥的6列的存储,这6列可能会分成两种情况作为轮密钥,一种是前4列作为一个轮密钥,后两列作为另一个轮密钥的第127位到第64位,另一种是前两列作为一个轮密钥的第63位到第O位,后四列作为另一个轮密钥。步骤7,对序号η加1,若加I后的结果为8,则停止密钥扩展进程,否则重复步骤4)至步骤7)。本发明的密钥扩展方法的优势可以通过理论推导进一步说明推导1,令生成全部轮密钥所需时间为Tk ;且本发明采用《AES算法的一种优化的FPGA实现方法》的加密流程方法,所需时间为Tc ;则可知《AES算法的一种优化的FPGA实现方法》完成128比特位的数据加密所需总时间为Tk+Tc ;而在本发明中,因轮密钥扩展与AES加密流程同时进行,完成同样的128比特位的数据的加密所需要的总时间仅为Tc ;每加密128比特位的数据,节省了 Tk ;因而本发明与《AES算法的一种优化的FPGA实现方法》中的密钥扩展方法相比,更高效。推导2,令本发明的方法在实际应用中产生12个轮密钥的功耗与《A RijndaelCryptoprocessor Using Shared On-the-fly Key Scheduler))中的正向密钥扩展方法产生12个轮密钥的功耗均为p;且待加密数据长度为X比特位,其中X > 128。如前所述,本发明中的轮密钥在产生之后会被存储到内存中,在完成第一个128比特位数据的加密之后,因后续数据所需轮密钥是相同的,故无需再进行密钥扩展,只需直接读取内存中的轮密钥即可;这样加密X比特位的数据,应用本发明的密钥扩展单元的功耗仅为P ;而对于《A Rijndael Cryptoprocessor Using Shared On-the-fly Key Scheduler》中的正向密钥扩展方法,每加密128比特位数据,均需进行密钥扩展;其加密X比特位数据的功耗则为x/128.p;因而与《A Rijnddel Cryptoprocessor Using Shared On-the-fly Key
Scheduler))中的正向密钥扩展方法相比,本发明功耗更低。
权利要求
1.一种基于AES的192比特位密钥扩展系统,包括 扩展计数单元(I),用于对序号η进行加I操作,并将序号η输出; 暂存单元(2),由位宽均为32比特的52个寄存器构成,用于暂存初始密钥和轮密钥,保证密钥扩展进程能够即时取用; 轮密钥存储单元(3),采用位宽为32比特位,深度为52的双口 SDRDM,用于存储初始密钥和轮密钥,保证在密钥扩展进行的同时能够为加密流程实时的提供轮密钥,并保证对后续数据块进行加密时无需密钥扩展即可直接读取已存储轮密钥; 循环寄存器(4),用于存储供字循环单元(5)读取使用的32比特位的值;字循环单元(5),用于对循环寄存器(4)中的值进行循环左移I个字节的操作,并将结果输出给替换寄存器(6); 替换寄存器出),用于存储供字节替换单元(7)读取使用的32比特位的值; 字节替换单元(7),用于将替换寄存器¢)中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第O位这4个字节发送给S盒单元(8),并将S盒单元(8)的返回值按照发送地址时的顺序从高到低组合后输出给异或单元(11); S盒单元(8),采用四个预存有S盒的ROM,用于将字节替换单元(7)发送的四个地址在S盒中所对应的四个8比特位的值返回给字节替换单元(7); 轮常数选择单元(9),用于根据序号n,从9个16进制的候选值0,1,2,4,8,10,20,40,80中选出一个值输出给异或单元(11);异或寄存单元(10),包括位宽均为32比特位的O号寄存器、I号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器,用于存储异或单元(11)所要使用的32比特位的值;异或单元(11),包括O号异或子单元、I号异或子单元、2号异或子单元、3号异或子单元、4号异或子单元和5号异或子单元,用于进行按位异或操作,并将所得结果作为轮密钥输出给暂存单元⑵; 循环控制单元(12),用于根据序号η决定下一步是停止还是继续进行密钥扩展进程,若序号η为8,则结束密钥扩展进程,若轮号为0-7范围内的值,则继续执行密钥扩展进程。
2.根据权利要求I所述的基于AES的192比特位密钥扩展系统,其中所述的4个S盒,分别为O号ROM、I号ROM、2号ROM和3号ROM ; O号R0M,采用位宽为8比特,深度为256,且预存有S盒的R0M,用于接收字节替换单元(7)发送过来的第31位到第24位的地址,并将该地址所对应的8比特位值输出给字节替换单元⑵; I号R0M,采用位宽为8比特,深度为256,且预存有S盒的R0M,用于接收字节替换单元(7)发送过来的第23位到第16位的地址,并将该地址所对应的8比特位值输出给字节替换单元⑵; 2号R0M,采用位宽为8比特,深度为256,且预存有S盒的R0M,用于接收字节替换单元(7)发送过来的第15位到第8位的地址,并将该地址所对应的8比特位值输出给字节替换单元⑵; 3号R0M,采用位宽为8比特,深度为256,且预存有S盒的R0M,用于接收字节替换单元(7)发送过来的第7位到第O位的地址,并将该地址所对应的8比特位值输出给字节替换单元(7) ο
3.根据权利要求I所述的基于AES的192比特位密钥扩展系统,其中异或寄存单元(10)存储异或単元(11)所要使用的32比特位的值,是用O号寄存器存储O号异或子単元所要使用的32比特位的值,用I号寄存器存储I号异或子単元所要使用的32比特位的值,用2号寄存器存储2号异或子単元所要使用的32比特位的值,用3号寄存器存储3号异或子単元所要使用的32比特位的值,用4号寄存器存储4号异或子単元所要使用的32比特位的值,用5号寄存器存储5号异或子単元所要使用的32比特位的值。
4.根据权利要求I所述的基于AES的192比特位密钥扩展系统,其中异或单元(11)进行按位异或操作,并将所得结果作为轮密钥输出给暂存単元(2),是由6个子单元依次完成,即 由O号异或子单元对O号寄存器中的值、字节替换単元(11)的输出和轮常数选择单元(9)的输出进行按位异或后,将所得结果作为轮密钥的一列,同时输出给I号异或子単元和暂存单元⑵; 由I号异或子单元将I号寄存器中的值和O号异或子単元的输出进行按位异或,并将结果作为轮密钥的一列,同时输出给2号异或子単元和暂存单元(2); 由2号异或子单元将2号寄存器中的值和I号异或子単元的输出进行按位异或,并将结果作为轮密钥的一列,同时输出给3号异或子単元和暂存单元(2); 由3号异或子单元将3号寄存器中的值和2号异或子単元的输出进行按位异或,并将结果作为轮密钥的一列,同时输出给4号异或子単元和暂存单元(2); 由4号异或子单元将4号寄存器中的值和3号异或子単元的输出进行按位异或,并将结果作为轮密钥的一列,同时输出给5号异或子単元和暂存单元(2); 由5号异或子单元将5号寄存器中的值和4号异或子単元的输出进行按位异或,并将结果作为轮密钥的一列,输出给暂存单元(2)。
5.根据权利要求I所述的基于AES的192比特位密钥扩展系统,其中所述的轮密钥,是指密钥扩展进程所产生的12个128比特位数,用于为高级加密标准AES中加密算法的每轮加密提供不同的128比特位数。
6.一种基于AES的192比特位密钥扩展方法,包括如下步骤 1)将对密钥扩展进程进行计数的变量定义为序号n,其取值范围分为0-7以外的整数域和0-7之间的整数域这两种情况; 2)将序号η归零,开始密钥扩展进程; 3)将初始密钥从高位到低位分为6个32比特位的值,再按此顺序同时将这6个32比特位的数据存入地址为0,1,2,3,4,5的寄存器和一个专用于存储轮密钥的双ロ SDRDM中; 4)执行字循环操作4. I)根据序号η确定寄存器地址d,若序号η为0-7之外的值,则寄存器地址d的值保持不变,否则按以下规律确定地址 若序号η为0,则寄存器地址d为5 ; 序号η每增加1,寄存器地址d的值就增加6 ;4. 2)从寄存器地址d所对应的寄存器中取值赋给循环寄存器,将循环寄存器中的32比特位值循环左移一个字节,并输出到替换寄存器中;.5)执行字节替换操作 .5.I)将替换寄存器中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第O位这4个字节,分别发送给4个预存有S盒的ROM,这四个ROM再将接收到的地址值在S盒中对应的8比特位数值同时返回; . 5.2)将4个ROM返回的8比特位数值按照步骤6)中每个地址在原32比特位值中的位置从高到低的顺序,组合成一个新的32比特位的值作为字节替换操作的输出; .6)执行按位异或操作,并存储轮密钥 .6.I)根据序号η确定寄存器地址eO,el, e2, e3, e4和e5,若序号n为0_7之外的值,则寄存器地址e0,el, e2, e3, e4和e5中的值均保持不变,否则按以下规律确定地址 若序号η为0,则寄存器地址eO, el, e2,e3,e4和e5依次被赋值0,1,2,3,4,5 ; 序号η每增加1,则寄存器地址eO,el,e2,e3,e4和e5的值均增加6,若序号η为7,则寄存器地址e4和e5保持不变,其他寄存器地址正常增加; .6. 2)从寄存器地址eO,el,e2,e3,e4和e5所对应的寄存器中取值,并分别赋给O号寄存器、I号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器; .6. 3)根据序号η从9个16进制的候选值中选择轮常数值输出,即当序号η为0_7时,对应的轮常数值输出依次为1,2,4,8,10,20,40,80,否则,轮常数值输出为O ; .6. 4)根据序号η确定寄存器地址f0,f 1,f2,f3,f4和f5的值,若序号η为0_7之外的值,则寄存器地址f0,fl,f2, f3,f4和f5中的值均保持不变,否则按以下规律确定地址若序号η为0,则寄存器地址f0, fl, f2,f3,f4和f5依次被赋值6,7,8,9,10,11 ;序号η每增加1,则寄存器地址f0,f 1,f2,f3,f4和f5的值都增加6,若序号η为7,则寄存器地址f4和f5地址保持不变,其他寄存器地址正常增加; . 6. 5)对O号寄存器中的值和字节替换操作的输出执行按位异或操作,用此结果再与轮常数值输出进行按位异或后,将所得结果作为轮密钥的一列存入寄存器地址f0所对应的寄存器和双口 SDRDM中; .6. 6)对I号寄存器中的值和寄存器地址f0所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址Π所对应的寄存器和双口 SDRDM中; .6. 7)对2号寄存器中的值和寄存器地址fl所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f2所对应的寄存器和双口 SDRDM中; .6.8)对3号寄存器中的值和寄存器地址f2所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f3所对应的寄存器和双口 SDRDM中; .6.9)对4号寄存器中的值和寄存器地址f3所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f4所对应的寄存器和双口 SDRDM中; .6.10)对5号寄存器中的值和寄存器地址f4所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f5所对应的寄存器和双口 SDRDM中;此时完成了轮密钥的6列的存储; .7)对序号η加1,若加I后的结果为8,则停止密钥扩展进程,否则重复步骤4)至步骤7)。
全文摘要
本发明公开了一种基于高级加密标准AES的192比特位密钥扩展系统及方法,主要解决现有192比特AES加密算法中密钥扩展过程的低效率以及高功耗问题。其实现过程是在密钥扩展的第一轮对初始密钥进行存储,取前4列作为该轮密钥扩展的轮密钥,并进行字循环、字节替换、按位异或操作;将所得结果作为轮密钥同时存储在本地寄存器和外部存储单元中,供加密流程读取使用;之后每轮都对前一轮所得轮密钥重复上述操作,直到得到所有12个轮密钥,结束密钥扩展。本发明能够兼顾密钥扩展的实时性以及轮密钥的可重用性,实现高效率和低功耗的密钥扩展,适用于AES加密算法的192比特密钥扩展过程。
文档编号H04L9/06GK102624520SQ20121013239
公开日2012年8月1日 申请日期2012年5月2日 优先权日2012年5月2日
发明者史江一, 李康, 赵哲斐, 赵彦尚, 邸志雄, 郝跃 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1