256比特位密钥扩展系统及方法技术方案

技术编号:7704189 阅读:661 留言:0更新日期:2012-08-25 01:11
本发明专利技术公开了一种基于高级加密标准AES的256比特位密钥扩展系统及方法,主要解决现有256比特AES加密算法中密钥扩展过程的低效率以及高功耗问题。其实现过程是:在密钥扩展的第一轮对初始密钥进行存储,取前4列作为该轮密钥扩展的轮密钥,并进行字循环、字节替换、按位异或操作;根据序号n执行新一次字节替换和二次按位异或操作;将两次按位异或操作结果作为轮密钥存储在本地寄存器和外部存储单元中,供加密流程读取使用;之后每轮都对前一轮所得轮密钥重复上述操作,直到得到所有14个轮密钥,结束密钥扩展。本发明专利技术能够兼顾密钥扩展的实时性以及轮密钥的可重用性,实现高效率和低功耗的密钥扩展,适用于AES加密算法的256比特密钥扩展过程。

【技术实现步骤摘要】

本专利技术属于安全
,涉及数据加密,特别涉及高级加密标准AES中的密钥扩展方法,可用于网络通信。
技术介绍
高级加密标准AES是美国国家标准技术研究所NIST旨在取代数据加密标准DES,于2001年11月公开的加密算法。目前,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实现方法》所使用的预密钥扩展方法,即先进行密钥扩展生成所有的轮密钥并存储到内存中,再进行加密;在该方法中,由于加密流程要等待密钥扩展完成之后才能进行,从而增加了加密所需要的时间,降低了整个加密过程的效率。
技术实现思路
本专利技术的目的在于针对上述传统方法的不足,提出一种,以兼顾密钥扩展的实时性以及轮密钥的可重用性,降低密钥扩展的功耗,提高密钥扩展的效率。为实现上述目的,本专利技术256比特位密钥扩展系统,包括扩展计数单元,用于对序号η进行加I操作,并将序号η输出;暂存单元,由位宽均为32比特的60个寄存器构成,用于暂存初始密钥和轮密钥,保证密钥扩展进程能够即时取用;轮密钥存储单元,采用位宽为32比特位,深度为60的双口 SDRDM,用于存储初始密钥和轮密钥,保证在密钥扩展进行的同时能够为加密流程实时的提供轮密钥,并保证对后续数据块进行加密时无需密钥扩展即可直接读取已存储轮密钥;循环寄存器,用 于存储供字循环单元读取使用的32比特位的值;字循环单元,用于对循环寄存器中的值进行循环左移I个字节的操作,并将结果输出给替换寄存器;替换寄存器,用于存储供字节替换单元读取使用的32比特位的值;字节替换单元,用于根据序号η执行字节替换操作若序号η为0_5,则将替换寄存器中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第O位这4个字节发送给S盒单元,并将S盒单元的返回值按照发送地址时的顺序从高到低组合后作为字节替换的一次输出,发送给异或单元;在替换寄存器被异或单元重新赋值之后,再执行一次上述操作,并将结果作为字节替换单元的二次输出,发送给异或单元;若序号η为6,则将替换寄存器中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第O位这4个字节发送给S盒单元,并将S盒单元的返回值按照发送地址时的顺序从高到低组合后作为字节替换的一次输出,发送给异或单元;S盒单元,采用四个预存有S盒的R0M,用于将字节替换单元发送的四个地址在S盒中所对应的四个8比特位的值返回给字节替换单元;轮常数选择单元,用于根据序号n,从8个16进制的候选值0,1,2,4,8,10,20,40中选出一个值输出给异或单元;异或寄存单元,包括位宽均为32比特位的O号寄存器、I号寄存器、2号寄存器、3号寄存器、4号寄存器、5号寄存器、6号寄存器和7号寄存器,用于存储异或单元所要使用的32比特位的值;异或单元,包括O号异或子单元、I号异或子单元、2号异或子单元、3号异或子单元、4号异或子单元、5号异或子单元、6号异或子单元和7号异或子单元,其中O号异或子单元、I号异或子单元、2号异或子单元和3号异或子单元用于进行按位异或操作,并将所得结果作为轮密钥输出给暂存单元,4号异或子单元、5号异或子单元、6号异或子单元和7号异或子单元则用于在序号η为0-5之间的整数值时,执行按位异或操作,并将所得结果作为新的轮密钥输出给暂存单元;循环控制单元,用于根据序号η决定下一步是停止还是继续进行密钥扩展进程,若序号η为7,则结束密钥扩展进程,若轮号为0-6范围内的值,则继续执行密钥扩展进程。为实现上述目的,本专利技术256比特位密钥扩展方法,包括如下步骤I)将对密钥扩展进程进行计数的变量定义为序号η,其取值范围分为0-6以外的整数域和0-6之间的整数域这两种情况;2)将序号η归零,开始密钥扩展进程;3)将初始密钥从高位到低位分为8个32比特位的值,再按此顺序同时将这8个32比特位的数据存入地址为0,1,2,3,4,5,6,7的寄存器和一个专用于存储轮密钥的双口SDRDM 中;4)执行字循环操作4. I)根据序号η确定寄存器地址d,若序号η为0_6之外的值,则寄存器地址d的值保持不变,否则按以下规律确定地址若序号η为O,则寄存器地址d为7 ;序号η每增加I,寄存器地址d的值就增加8 ;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.1)根据序号η确定寄存器地址eO, el, e2, e3,若序号η为0_6之外的值,贝丨J寄存器地址eO,el, e2, e3中的值均保持不变,否则按以下规律确定地址若序号η为0,则寄存器地址eO, el, e2, e3依次被赋值0,1,2,3 ;序号η每增加1,则寄存器地址e0,el,e2,e3的值均增加8 ;6. 2)从寄存器地址e0,el, e2, e3所对应的寄存器中取值,并分别赋给O号寄存器、I号寄存器、2号寄存器、3号寄存器;6. 3)根据序号η从8个16进制的候选值中选择轮常数值输出,即当序号η为0_6时,对应的轮常数值输出依次为1,2,4,8,10,20,40,否则,轮常数值输出为O ;6. 4)根据序号η确定寄存器地址f0,fl, f2, f3的值,若序号η为0-6之外的值,则寄存器地址f0,fl, f2, f3中的值均保持不变,否则按以下规律确定地址若序号η为0,则本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种256比特位密钥扩展系统,包括 扩展计数单元(I),用于对序号η进行加I操作,并将序号η输出; 暂存单元(2),由位宽均为32比特的60个寄存器构成,用于暂存初始密钥和轮密钥,保证密钥扩展进程能够即时取用; 轮密钥存储单元(3),采用位宽为32比特位,深度为60的双口 SDRDM,用于存储初始密钥和轮密钥,保证在密钥扩展进行的同时能够为加密流程实时的提供轮密钥,并保证对后续数据块进行加密时无需密钥扩展即可直接读取已存储轮密钥; 循环寄存器(4),用于存储供字循环单元(5)读取使用的32比特位的值; 字循环单元(5),用于对循环寄存器(4)中的值进行循环左移I个字节的操作,并将结果输出给替换寄存器(6); 替换寄存器出),用于存储供字节替换单元(7)读取使用的32比特位的值; 字节替换单元(7),用于根据序号η执行字节替换操作若序号η为0-5,则将替换寄存器¢)中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第O位这4个字节发送给S盒单元⑶,并将S盒单元⑶的返回值按照发送地址时的顺序从高到低组合后作为字节替换的一次输出,发送给异或单元(11);在替换寄存器被异或单元重新赋值之后,再执行一次上述操作,并将结果作为字节替换单元(7)的二次输出,发送给异或单元(11);若序号η为6,则将替换寄存器¢)中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第O位这4个字节发送给S盒单元(8),并将S盒单元(8)的返回值按照发送地址时的顺序从高到低组合后作为字节替换的一次输出,发送给异或单元(11); S盒单元(8),采用四个预存有S盒的ROM,用于将字节替换单元(7)发送的四个地址在S盒中所对应的四个8比特位的值返回给字节替换单元(7); 轮常数选择单元(9),用于根据序号n,从8个16进制的候选值0,1,2,4,8,10,20,40中选出一个值输出给异或单元(11); 异或寄存单元(10),包括位宽均为32比特位的O号寄存器、I号寄存器、2号寄存器、3号寄存器、4号寄存器、5号寄存器、6号寄存器和7号寄存器,用于存储异或单元(11)所要使用的32比特位的值; 异或单元(11),包括O号异或子单元、I号异或子单元、2号异或子单元、3号异或子单元、4号异或子单元、5号异或子单元、6号异或子单元和7号异或子单元,其中,O号异或子单元、I号异或子单元、2号异或子单元和3号异或子单元用于进行按位异或操作,并将所得结果作为轮密钥输出给暂存单元(2),4号异或子单元、5号异或子单元、6号异或子单元和7号异或子单元则用于在序号η为0-5之间的整数值时,执行按位异或操作,并将所得结果作为新的轮密钥输出给暂存单元(2); 循环控制单元(12),用于根据序号η决定下一步是停止还是继续进行密钥扩展进程,若序号η为7,则结束密钥扩展进程,若轮号为0-6范围内的值,则继续执行密钥扩展进程。2.根据权利要求I所述的256比特位密钥扩展系统,其中所述的4个S盒,分别为O号ROM、I 号 ROM、2 号 ROM 和 3 号 ROM ; O号R0M,采用位宽为8比特,深度为256,且预存有S盒的R0M,用于接收字节替换单元(7)发送过来的第31位到第24位的地址,并将该地址所对应的8比特位值输出给字节替换单元⑵; I号ROM,采用位宽为8比特,深度为256,且预存有S盒的ROM,用于接收字节替换单元(7)发送过来的第23位到第16位的地址,并将该地址所对应的8比特位值输出给字节替换单元⑵; 2号ROM,采用位宽为8比特,深度为256,且预存有S盒的ROM,用于接收字节替换单元(7)发送过来的第15位到第8位的地址,并将该地址所对应的8比特位值输出给字节替换单元⑵;3号ROM,采用位宽为8比特,深度为256,且预存有S盒的ROM,用于接收字节替换单元(7)发送过来的第7位到第O位的地址,并将该地址所对应的8比特位值输出给字节替换单 元(7) ο3.根据权利要求I所述的256比特位密钥扩展系统,其中异或寄存单元(10)存储异或单元(11)所要使用的32比特位的值,是用O号寄存器存储O号异或子单元所要使用的32比特位的值,用I号寄存器存储I号异或子单元所要使用的32比特位的值,用2号寄存器存储2号异或子单元所要使用的32比特位的值,用3号寄存器存储3号异或子单元所要使用的32比特位的值,用4号寄存器存储4号异或子单元所要使用的32比特位的值,用5号寄存器存储5号异或子单元所要使用的32比特位的值,用6号寄存器存储6号异或子单元所要使用的32比特位的值,用7号寄存器存储7号异或子单元所要使用的32比特位的值。4.根据权利要求I所述的256比特位密钥扩展系统,其中所述的O号异或子单元、I号异或子单元、2号异或子单元和3号异或子单元用于进行按位异或操作,并将所得结果作为轮密钥输出给暂存单元(2),是由O号异或子单元对O号寄存器中的值、字节替换单元(11)的输出和轮常数选择单元(9)的输出进行按位异或后,将所得结果作为轮密钥的第127位到第96位,同时输出给I号异或子单元和暂存单元(2);由I号异或子单元将I号寄存器中的值和O号异或子单元的输出进行按位异或,并将结果作为轮密钥的第95位到第64位,同时输出给2号异或子单元和暂存单元(2);由2号异或子单元将2号寄存器中的值和I号异或子单元的输出进行按位异或,并将结果作为轮密钥的第63位到第32位,同时输出给3号异或子单元和暂存单元(2);由3号异或子单元将3号寄存器中的值和2号异或子单元的输出进行按位异或,并将结果作为轮密钥的第31位到第O位,同时输出给替换寄存器(6)和暂存单元(2);此时完成了本循环的一个轮密钥的存储;5.根据权利要求I所述的256比特位密钥扩展系统,其中所述的4号异或子单元、5号异或子单元、6号异或子单元和7号异或子单元用于在序号η为0-5之间的整数值时,执行按位异或操作,并将所得结果作为新的轮密钥输出给暂存单元(2),是由4号异或子单元对4号寄存器中的值和字节替换单元(11)的二次输出进行按位异或,将所得结果作为另一个轮密钥的第127位到第96位,同时输出给5号异或子单元和暂存单元(2);由5号异或子单元将5号寄存器中的...

【专利技术属性】
技术研发人员:郝跃赵哲斐史江一邸志雄李康赵彦尚
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1