CN102624520A - 基于aes的192比特位密钥扩展系统及方法 - Google Patents
基于aes的192比特位密钥扩展系统及方法 Download PDFInfo
- Publication number
- CN102624520A CN102624520A CN2012101323947A CN201210132394A CN102624520A CN 102624520 A CN102624520 A CN 102624520A CN 2012101323947 A CN2012101323947 A CN 2012101323947A CN 201210132394 A CN201210132394 A CN 201210132394A CN 102624520 A CN102624520 A CN 102624520A
- Authority
- CN
- China
- Prior art keywords
- value
- register
- xor
- address
- sequence number
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000003892 spreading Methods 0.000 claims description 81
- 238000003860 storage Methods 0.000 claims description 37
- 230000001351 cycling effect Effects 0.000 claims description 12
- 238000000151 deposition Methods 0.000 claims description 3
- 238000004422 calculation algorithm Methods 0.000 abstract description 13
- 238000005457 optimization Methods 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000009931 harmful effect Effects 0.000 description 1
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于高级加密标准AES的192比特位密钥扩展系统及方法,主要解决现有192比特AES加密算法中密钥扩展过程的低效率以及高功耗问题。其实现过程是:在密钥扩展的第一轮对初始密钥进行存储,取前4列作为该轮密钥扩展的轮密钥,并进行字循环、字节替换、按位异或操作;将所得结果作为轮密钥同时存储在本地寄存器和外部存储单元中,供加密流程读取使用;之后每轮都对前一轮所得轮密钥重复上述操作,直到得到所有12个轮密钥,结束密钥扩展。本发明能够兼顾密钥扩展的实时性以及轮密钥的可重用性,实现高效率和低功耗的密钥扩展,适用于AES加密算法的192比特密钥扩展过程。
Description
技术领域
本发明属于安全技术领域,涉及数据加密,特别涉及高级加密标准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比特位密钥扩展系统,包括:
扩展计数单元,用于对序号n进行加1操作,并将序号n输出;
暂存单元,由位宽均为32比特的52个寄存器构成,用于暂存初始密钥和轮密钥,保证密钥扩展进程能够即时取用;
轮密钥存储单元,采用位宽为32比特位,深度为52的双口SDRDM,用于存储初始密钥和轮密钥,保证在密钥扩展进行的同时能够为加密流程实时的提供轮密钥,并保证对后续数据块进行加密时无需密钥扩展即可直接读取已存储轮密钥;
循环寄存器,用于存储供字循环单元读取使用的32比特位的值;
字循环单元,用于对循环寄存器中的值进行循环左移1个字节的操作,并将结果输出给替换寄存器;
替换寄存器,用于存储供字节替换单元读取使用的32比特位的值;
字节替换单元,用于将替换寄存器中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第0位这4个字节发送给S盒单元,并将S盒单元的返回值按照发送地址时的顺序从高到低组合后输出给按位异或单元;
S盒单元,采用四个预存有S盒的ROM,用于将字节替换单元发送的四个地址在S盒中所对应的四个8比特位的值返回给字节替换单元;
轮常数选择单元,用于根据序号n,从9个16进制的候选值:0,1,2,4,8,10,20,40,80中选出一个值输出给异或单元;
异或寄存单元,包括位宽均为32比特位的0号寄存器、1号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器,用于存储异或单元所要使用的32比特位的值;
异或单元,包括0号异或子单元、1号异或子单元、2号异或子单元、3号异或子单元、4号异或子单元和5号异或子单元,用于进行按位异或操作,并将所得结果作为轮密钥输出给暂存单元;
循环控制单元,用于根据序号n决定下一步是停止还是继续进行密钥扩展进程,若序号n为8,则结束密钥扩展进程,若轮号为0-7范围内的值,则继续执行密钥扩展进程。
为实现上述目的,本发明基于高级加密标准AES中192比特位初始密钥的扩展方法,包括如下步骤:
1)将对密钥扩展进程进行计数的变量定义为序号n,其取值范围分为0-7以外的整数域和0-7之间的整数域这两种情况;
2)将序号n归零,开始密钥扩展进程;
3)将初始密钥从高位到低位分为6个32比特位的值,再按此顺序同时将这6个32比特位的数据存入地址为0,1,2,3,4,5的寄存器和一个专用于存储轮密钥的双口SDRDM中;
4)执行字循环操作:
4.1)根据序号n确定寄存器地址d,若序号n为0-7之外的值,则寄存器地址d的值保持不变,否则按以下规律确定地址:
若序号n为0,则寄存器地址d为5;
序号n每增加1,寄存器地址d的值就增加6;
4.2)从寄存器地址d所对应的寄存器中取值赋给循环寄存器,将循环寄存器中的32比特位值循环左移一个字节,并输出到替换寄存器中;
5)执行字节替换操作:
5.1)将替换寄存器中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第0位这4个字节,分别发送给4个预存有S盒的ROM,这四个ROM再将接收到的地址值在S盒中对应的8比特位数值同时返回;
5.2)将4个ROM返回的8比特位数值按照步骤5.1)中每个地址在原32比特位值中的位置从高到低的顺序,组合成一个新的32比特位的值作为字节替换操作的输出;
6)执行按位异或操作,并存储轮密钥:
6.1)根据序号n确定寄存器地址e0,e1,e2,e3,e4和e5,若序号n为0-7之外的值,则寄存器地址e0,e1,e2,e3,e4和e5中的值均保持不变,否则按以下规律确定地址:
若序号n为0,则寄存器地址e0,e1,e2,e3,e4和e5依次被赋值0,1,2,3,4,5;
序号n每增加1,则寄存器地址e0,e1,e2,e3,e4和e5的值均增加6,若序号n为7,则寄存器地址e4和e5保持不变,其它寄存器地址正常增加;
6.2)从寄存器地址e0,e1,e2,e3,e4和e5所对应的寄存器中取值,并分别赋给0号寄存器、1号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器;
6.3)根据序号n从9个16进制的候选值中选择轮常数值输出,即当序号n为0-7时,对应的轮常数值输出依次为1,2,4,8,10,20,40,80,否则,轮常数值输出为0;
6.4)根据序号n确定寄存器地址f0,f1,f2,f3,f4和f5的值,若序号n为0-7之外的值,则寄存器地址f0,f1,f2,f3,f4和f5中的值均保持不变,否则按以下规律确定地址:
若序号n为0,则寄存器地址f0,f1,f2,f3,f4和f5依次被赋值6,7,8,9,10,11;
序号n每增加1,则寄存器地址f0,f1,f2,f3,f4和f5的值都增加6,若序号n为7,则寄存器地址f4和f5地址保持不变,其它寄存器地址正常增加;
6.5)对0号寄存器中的值和字节替换操作的输出执行按位异或操作,用此结果再与轮常数值输出进行按位异或后,将所得结果作为轮密钥的一列存入寄存器地址f0所对应的寄存器和双口SDRDM中;
6.6)对1号寄存器中的值和寄存器地址f0所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f1所对应的寄存器和双口SDRDM中;
6.7)对2号寄存器中的值和寄存器地址f1所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f2所对应的寄存器和双口SDRDM中;
6.8)对3号寄存器中的值和寄存器地址f2所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f3所对应的寄存器和双口SDRDM中;
6.9)对4号寄存器中的值和寄存器地址f3所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f4所对应的寄存器和双口SDRDM中;
6.10)对5号寄存器中的值和寄存器地址f4所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f5所对应的寄存器和双口SDRDM中;此时完成了轮密钥的6列的存储;
7)对序号n加1,若加1后的结果为8,则停止密钥扩展进程,否则重复步骤4)至步骤7)。
本发明具有如下优点:
1)本发明通过简化密钥扩展循环的判断条件,以及减少密钥扩展的循环次数,与传统方法相比,在提高密钥扩展的效率的同时降低了密钥扩展的功耗。
传统方法均采用高级加密标准AES中的密钥扩展算法,将初始密钥扩展得到的扩展密钥视作一个数组W[i],0≤i<52,其中每个数组元素w[i]为轮密钥的一列,而编号i作为密钥扩展循环过程的主要参考对象;在初始密钥为192比特位的情况下,传统密钥扩展的循环依据编号i能否被6整除分成了两种情况,若编号i能被6整除,则 否则, 其中,subword表示对括号内的值进行字节替换操作,rotword表示对括号内的值进行字循环操作,rcon表示根据括号内的值选择轮常数;这种密钥扩展方法每循环一次仅产生轮密钥的一列,故而产生所有的12个轮密钥需要进行密钥扩展循环48次,且对条件“编号i是否能被6整除”的判断要进行48次,因而不仅效率较低,而且在实际应用中功耗也较大。
本发明中,密钥扩展循环的判断条件仅有1个,就是序号n;即在正常执行的情况下,序号n的取值为0-7之间的8个整数值,密钥扩展的循环过程是依据序号n来选择操作数以及执行字循环、字节替换和按位异或操作,这样的循环每次产生轮密钥数组中的6列;通过这种循环方式,本发明的密钥扩展方法只需循环8次,即可完成所有轮密钥的生成,而对于轮号的判断也只需进行8次,不仅简化了密钥扩展循环的判断条件,而且减少了密钥扩展的循环次数,从而在提高了密钥扩展的效率的同时降低了密钥扩展的功耗;
2)本发明具有较高的实用性。
在实际应用中,由于环境以及电路故障等原因,可能造成序号n的值不在0-7之间的整数域内,从而使得整个密钥扩展过程都无法正常进行;对于这种情况,本发明中给出了对应的处理方式,使得其它的的操作不受序号n异常赋值的影响,从而降低了故障所带来的不良影响,提高了本发明的实用性;
3)本发明通过暂存单元的定义,使得密钥扩展进程可以通过判定地址来选择性的读取暂存在其中的轮密钥,又通过运用寄存器地址d,e0,e1,e2,e3,e4,e5,f0,f1,f2,f3,f4,f5的取值规律提高了密钥扩展中的运算操作数的选择和读取过程的效率;
4)本发明由于将完成一个轮密钥扩展所需要的操作流程化,并在完成每个轮密钥扩展的同时,将轮密钥存入双口SDRDM和暂存单元中,故在实时的为加密流程提供轮密钥的同时保证了轮密钥的可重用性,从而兼顾了高效率与低功耗;
5)本发明通过使用4个S盒来完成字节替换,使得字节替换过程的实现易于并行实现,同时提高了密钥扩展的效率。
附图说明
图1为本发明192比特位密钥扩展系统结构图;
图2为本发明192比特位密钥扩展方法流程图;
图3为本发明192比特位密钥扩展方法中的字循环操作子流程图;
图4为本发明192比特位密钥扩展方法中的字节替换操作子流程图;
图5为本发明192比特位密钥扩展方法中的按位异或操作子流程图。
具体实施方式
参照图1,本发明基于高级加密标准AES的192比特位密钥扩展系统包括:扩展计数单元1、暂存单元2、轮密钥存储单元3、循环寄存器4、字循环单元5、替换寄存器6、字节替换单元7、S盒单元8、轮常数选择单元9、异或寄存单元10、异或单元11、循环控制单元12,该S盒单元8包括4个预存有S盒的ROM:0号ROM、1号ROM、2号ROM和3号ROM;该异或寄存单元10包括6个位宽为32比特位的寄存器:0号寄存器、1号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器;该异或单元11包括6个异或子单元:0号异或子单元、1号异或子单元、2号异或子单元、3号异或子单元、4号异或子单元和5号异或子单元。其中:
扩展计数单元1,用于对序号n进行加一操作,并将序号n同时输出给循环控制单元12、轮常数选择单元9和暂存单元2。
暂存单元2,由位宽均为32比特的52个寄存器构成,用于暂存初始密钥和轮密钥,保证密钥扩展进程能够即时取用,此外还用于根据序号n选择轮密钥输出给轮密钥存储单元3和异或寄存器单元10,其中的轮密钥,是指密钥扩展进程所产生的12个128比特位数,用于为高级加密标准AES中加密算法的每轮加密提供不同的128比特位数。
轮密钥存储单元3,采用位宽为32比特位,深度为52的双口SDRAM,用于存储初始密钥和轮密钥,使得加密流程能够在密钥扩展进行的同时取得已存储的轮密钥,并保证后续数据加密时无需密钥扩展即可直接读取已存储轮密钥。
循环寄存器4,位宽为32比特位,用于存储供字循环单元5读取使用的值。
字循环单元5,用于将循环寄存器4中的值进行循环左移1个字节并输出给替换寄存器6。
替换寄存器6,用于存储供字节替换单元7读取使用的32比特位的值。
字节替换单元7,用于进行字节替换操作,首先将替换寄存器6中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第0位这4个字节发送给S盒单元8,之后将S盒单元8的返回值按照从0号ROM到3号ROM的顺序组合后得到字节替换操作的结果,并输出给按位异或单元。
S盒单元8中的0号ROM、1号ROM、2号ROM和3号ROM均存有S盒,每个ROM位宽为8比特,深度为256,用于接收字节替换单元7发送过来的地址,并将地址在S盒中对应的值返回给字节替换单元7,其中:
0号ROM接收字节替换单元7发送过来的第31位到第24位的地址,并将该地址所对应的8比特位值输出给字节替换单元7;
1号ROM接收字节替换单元7发送过来的第23位到第16位的地址,并将该地址所对应的8比特位值输出给字节替换单元7;
2号ROM接收字节替换单元7发送过来的第15位到第8位的地址,并将该地址所对应的8比特位值输出给字节替换单元7;
3号ROM接收字节替换单元7发送过来的第7位到第0位的地址,并将该地址所对应的8比特位值输出给字节替换单元7。
轮常数选择单元9,用于根据序号n,从9个16进制的候选值:0,1,2,4,8,10,20,40,80中选出一个值输出给异或单元11,即当序号n为0-7时,对应的输出依次为1,2,4,8,10,20,40,80,否则,输出为0;其中,轮常数为AES标准中的密钥扩展算法所采用的概念,每个轮常数由序号n计算得来,因序号n取值范围有限,故直接采用计算结果作为轮常数的候选值,需要说明的是0并非轮常数值,而是为了防止序号n异常而设置的候选值。
异或寄存单元10,包括位宽均为32比特位的0号寄存器、1号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器,用于存储异或单元11所要使用的32比特位的值,其中,0号寄存器存储0号异或子单元所要使用的32比特位的值,1号寄存器存储1号异或子单元所要使用的32比特位的值,2号寄存器存储2号异或子单元所要使用的32比特位的值,3号寄存器存储3号异或子单元所要使用的32比特位的值,4号寄存器存储4号异或子单元所要使用的32比特位的值,5号寄存器存储5号异或子单元所要使用的32比特位的值。
异或单元11,包括0号异或子单元、1号异或子单元、2号异或子单元、3号异或子单元、4号异或子单元和5号异或子单元,用于进行按位异或操作,并将所得结果作为轮密钥输出给暂存单元2,其中:
0号异或子单元,对0号寄存器中的值、字节替换单元11的输出和轮常数选择单元9的输出进行按位异或后,将所得结果作为轮密钥一列同时输出给1号异或子单元和暂存单元2;
1号异或子单元,将1号寄存器中的值和0号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列同时输出给2号异或子单元和暂存单元2;
2号异或子单元,将2号寄存器中的值和1号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列同时输出给3号异或子单元和暂存单元2;
3号异或子单元,将3号寄存器中的值和2号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列同时输出给4号异或子单元和暂存单元2;
4号异或子单元,将4号寄存器中的值和3号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列同时输出给4号异或子单元和暂存单元2;
5号异或子单元,将5号寄存器中的值和4号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列输出给暂存单元2;此时完成了轮密钥的6列的暂存,这6列可能会分成两种情况作为轮密钥,一种是前4列作为一个轮密钥,后两列作为另一个轮密钥的第127位到第64位,另一种是前两列作为一个轮密钥的第63位到第0位,后四列作为另一个轮密钥。
循环控制单元12,根据序号n决定下一步是停止还是继续进行密钥扩展进程,若序号n为8,则结束密钥扩展进程,若轮号为0-7范围内的值,则继续执行密钥扩展进程。
参照图2,本发明的基于AES的192比特位密钥扩展方法,包括如下步骤:
步骤1,将对密钥扩展进程进行计数的变量定义为序号n,其取值范围分为0-7以外的整数域和0-7之间的整数域这两种情况。
步骤2,将序号n归零,开始密钥扩展进程。
步骤3,将初始密钥从高位到低位分为6个32比特位的值,再按此顺序同时将这6个32比特位的数据存入地址为0,1,2,3,4,5的寄存器和一个专用于存储轮密钥的双口SDRAM中。
步骤4,执行字循环操作。
参照图3,本步骤的实现如下:
4.1)根据序号n确定寄存器地址d,若序号n为0-7之外的值,则寄存器地址d的值保持不变,否则按以下规律确定地址:
若序号n为0,则寄存器地址d为5;
序号n每增加1,寄存器地址d的值就增加6,例如,若序号n为5,则寄存器地址d的值就为35;若序号n为6,则寄存器地址d的值增加为41。
4.2)从寄存器地址d所对应的寄存器中取值赋给循环寄存器,将循环寄存器中的32比特位值循环左移一个字节,并输出到替换寄存器中。
步骤5,执行字节替换操作。
参照图4,本步骤的实现如下:
5.1)将替换寄存器中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第0位这4个字节,并将第31位到第24位地址发送给0号ROM,将第23位到第16位地址发送给1号ROM,将第15位到第8位地址发送给2号ROM,将第7位到第0位地址发送给3号ROM,这4个ROM再分别将接收到的地址值在S盒中对应的4个8比特位数值输出。
5.2)将4个ROM的输出值按照步骤5.1)中发送地址时的顺序从高到低组合成一个32比特位的值作为字节替换操作的输出,即将0号ROM、1号ROM、2号ROM和3号ROM的返回值依次作为最高字节、次高字节、第三字节和第四字节组合成32比特位的值。
步骤6,执行按位异或操作。
参照图5,本步骤的实现如下:
6.1)根据序号n确定寄存器地址e0,e1,e2,e3,e4和e5,若序号n为0-7之外的值,则寄存器地址e0,e1,e2,e3,e4和e5中的值均保持不变,否则按以下规律确定地址:
若序号n为0,则寄存器地址e0,e1,e2,e3,e4和e5依次被赋值0,1,2,3,4,5;
序号n每增加1,则寄存器地址e0,e1,e2,e3,e4和e5的值均增加6,例如,若序号n为5,则寄存器地址e0的值为30,e1的值为31,e2的值为32,e3的值为33,e4的值为34,e5的值为35;若序号n为6,则寄存器地址e0的值增加为36,e1的值增加为37,e2的值增加为38,e3的值增加为39,e4的值增加为34,e5的值增加为40;
若序号为7,则寄存器地址e4和e5保持不变,其它地址正常增加;
6.2)从不同寄存器地址所对应的寄存器中取值赋给不同的寄存器:
6.2a)从寄存器地址e0所对应的寄存器中取值赋给0号寄存器;
6.2b)从寄存器地址e1所对应的寄存器中取值赋给1号寄存器;
6.2c)从寄存器地址e2所对应的寄存器中取值赋给2号寄存器;
6.2d)从寄存器地址e3所对应的寄存器中取值赋给3号寄存器;
6.2e)从寄存器地址e4所对应的寄存器中取值赋给4号寄存器;
6.2f)从寄存器地址e5所对应的寄存器中取值赋给5号寄存器;
6.3)根据序号n从9个16进制的候选值中选择轮常数值输出,即当序号n为0-7时,对应的轮常数值输出依次为1,2,4,8,10,20,40,80,否则,轮常数值输出为0;
6.4)根据序号n确定寄存器地址f0,f1,f2,f3,f4和f5的值,若序号n为0-7之外的值,则寄存器地址f0,f1,f2,f3,f4和f5中的值均保持不变,否则按以下规律确定地址:
若序号n为0,则寄存器地址f0,f1,f2,f3,f4和f5依次被赋值6,7,8,9,10,11;
序号n每增加1,则寄存器地址f0,f1,f2,f3,f4和f5的值都增加6,例如,若序号n为3,则寄存器地址f0的值为24、f1的值为25、f2的值为26、f3的值为27、f4的值为28、f5的值为29;若号n为4,则寄存器地址f0的值增加为30,f1的值增加为31,f2的值增加为32,f3的值增加为33,f4的值增加为34,f5的值增加为35;
若序号为7,则寄存器地址e4和e5保持不变,其它地址正常增加;
6.5)对0号寄存器中的值和字节替换操作的输出执行按位异或操作,用此结果再与轮常数值输出进行按位异或后,将所得结果作为轮密钥一列存入寄存器地址f0所对应的寄存器和双口SDRAM中;
6.6)对指定的两个寄存器中的值执行按位异或操作,并将所得结果作为轮密钥的一列存入寄存器和双口SDRAM中:
6.6a)对1号寄存器中的值和寄存器地址f0所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f1所对应的寄存器和双口SDRAM中;
6.6b)对2号寄存器中的值和寄存器地址f1所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址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位到第0位,后四列作为另一个轮密钥。
步骤7,对序号n加1,若加1后的结果为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 KeyScheduler》中的正向密钥扩展方法,每加密128比特位数据,均需进行密钥扩展;其加密x比特位数据的功耗则为因而与《A Rijnddel CryptoprocessorUsing Shared On-the-fly Key Scheduler》中的正向密钥扩展方法相比,本发明功耗更低。
Claims (6)
1.一种基于AES的192比特位密钥扩展系统,包括:
扩展计数单元(1),用于对序号n进行加1操作,并将序号n输出;
暂存单元(2),由位宽均为32比特的52个寄存器构成,用于暂存初始密钥和轮密钥,保证密钥扩展进程能够即时取用;
轮密钥存储单元(3),采用位宽为32比特位,深度为52的双口SDRDM,用于存储初始密钥和轮密钥,保证在密钥扩展进行的同时能够为加密流程实时的提供轮密钥,并保证对后续数据块进行加密时无需密钥扩展即可直接读取已存储轮密钥;
循环寄存器(4),用于存储供字循环单元(5)读取使用的32比特位的值;
字循环单元(5),用于对循环寄存器(4)中的值进行循环左移1个字节的操作,并将结果输出给替换寄存器(6);
替换寄存器(6),用于存储供字节替换单元(7)读取使用的32比特位的值;
字节替换单元(7),用于将替换寄存器(6)中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第0位这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比特位的0号寄存器、1号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器,用于存储异或单元(11)所要使用的32比特位的值;
异或单元(11),包括0号异或子单元、1号异或子单元、2号异或子单元、3号异或子单元、4号异或子单元和5号异或子单元,用于进行按位异或操作,并将所得结果作为轮密钥输出给暂存单元(2);
循环控制单元(12),用于根据序号n决定下一步是停止还是继续进行密钥扩展进程,若序号n为8,则结束密钥扩展进程,若轮号为0-7范围内的值,则继续执行密钥扩展进程。
2.根据权利要求1所述的基于AES的192比特位密钥扩展系统,其中所述的4个S盒,分别为0号ROM、1号ROM、2号ROM和3号ROM;
0号ROM,采用位宽为8比特,深度为256,且预存有S盒的ROM,用于接收字节替换单元(7)发送过来的第31位到第24位的地址,并将该地址所对应的8比特位值输出给字节替换单元(7);
1号ROM,采用位宽为8比特,深度为256,且预存有S盒的ROM,用于接收字节替换单元(7)发送过来的第23位到第16位的地址,并将该地址所对应的8比特位值输出给字节替换单元(7);
2号ROM,采用位宽为8比特,深度为256,且预存有S盒的ROM,用于接收字节替换单元(7)发送过来的第15位到第8位的地址,并将该地址所对应的8比特位值输出给字节替换单元(7);
3号ROM,采用位宽为8比特,深度为256,且预存有S盒的ROM,用于接收字节替换单元(7)发送过来的第7位到第0位的地址,并将该地址所对应的8比特位值输出给字节替换单元(7)。
3.根据权利要求1所述的基于AES的192比特位密钥扩展系统,其中异或寄存单元(10)存储异或单元(11)所要使用的32比特位的值,是用0号寄存器存储0号异或子单元所要使用的32比特位的值,用1号寄存器存储1号异或子单元所要使用的32比特位的值,用2号寄存器存储2号异或子单元所要使用的32比特位的值,用3号寄存器存储3号异或子单元所要使用的32比特位的值,用4号寄存器存储4号异或子单元所要使用的32比特位的值,用5号寄存器存储5号异或子单元所要使用的32比特位的值。
4.根据权利要求1所述的基于AES的192比特位密钥扩展系统,其中异或单元(11)进行按位异或操作,并将所得结果作为轮密钥输出给暂存单元(2),是由6个子单元依次完成,即:
由0号异或子单元对0号寄存器中的值、字节替换单元(11)的输出和轮常数选择单元(9)的输出进行按位异或后,将所得结果作为轮密钥的一列,同时输出给1号异或子单元和暂存单元(2);
由1号异或子单元将1号寄存器中的值和0号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列,同时输出给2号异或子单元和暂存单元(2);
由2号异或子单元将2号寄存器中的值和1号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列,同时输出给3号异或子单元和暂存单元(2);
由3号异或子单元将3号寄存器中的值和2号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列,同时输出给4号异或子单元和暂存单元(2);
由4号异或子单元将4号寄存器中的值和3号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列,同时输出给5号异或子单元和暂存单元(2);
由5号异或子单元将5号寄存器中的值和4号异或子单元的输出进行按位异或,并将结果作为轮密钥的一列,输出给暂存单元(2)。
5.根据权利要求1所述的基于AES的192比特位密钥扩展系统,其中所述的轮密钥,是指密钥扩展进程所产生的12个128比特位数,用于为高级加密标准AES中加密算法的每轮加密提供不同的128比特位数。
6.一种基于AES的192比特位密钥扩展方法,包括如下步骤:
1)将对密钥扩展进程进行计数的变量定义为序号n,其取值范围分为0-7以外的整数域和0-7之间的整数域这两种情况;
2)将序号n归零,开始密钥扩展进程;
3)将初始密钥从高位到低位分为6个32比特位的值,再按此顺序同时将这6个32比特位的数据存入地址为0,1,2,3,4,5的寄存器和一个专用于存储轮密钥的双口SDRDM中;
4)执行字循环操作:
4.1)根据序号n确定寄存器地址d,若序号n为0-7之外的值,则寄存器地址d的值保持不变,否则按以下规律确定地址:
若序号n为0,则寄存器地址d为5;
序号n每增加1,寄存器地址d的值就增加6;
4.2)从寄存器地址d所对应的寄存器中取值赋给循环寄存器,将循环寄存器中的32比特位值循环左移一个字节,并输出到替换寄存器中;
5)执行字节替换操作:
5.1)将替换寄存器中的值作为地址分为从第31位到第24位、从第23位到第16位、从第15位到第8位和从第7位到第0位这4个字节,分别发送给4个预存有S盒的ROM,这四个ROM再将接收到的地址值在S盒中对应的8比特位数值同时返回;
5.2)将4个ROM返回的8比特位数值按照步骤6)中每个地址在原32比特位值中的位置从高到低的顺序,组合成一个新的32比特位的值作为字节替换操作的输出;
6)执行按位异或操作,并存储轮密钥:
6.1)根据序号n确定寄存器地址e0,e1,e2,e3,e4和e5,若序号n为0-7之外的值,则寄存器地址e0,e1,e2,e3,e4和e5中的值均保持不变,否则按以下规律确定地址:
若序号n为0,则寄存器地址e0,e1,e2,e3,e4和e5依次被赋值0,1,2,3,4,5;
序号n每增加1,则寄存器地址e0,e1,e2,e3,e4和e5的值均增加6,若序号n为7,则寄存器地址e4和e5保持不变,其他寄存器地址正常增加;
6.2)从寄存器地址e0,e1,e2,e3,e4和e5所对应的寄存器中取值,并分别赋给0号寄存器、1号寄存器、2号寄存器、3号寄存器、4号寄存器和5号寄存器;
6.3)根据序号n从9个16进制的候选值中选择轮常数值输出,即当序号n为0-7时,对应的轮常数值输出依次为1,2,4,8,10,20,40,80,否则,轮常数值输出为0;
6.4)根据序号n确定寄存器地址f0,f1,f2,f3,f4和f5的值,若序号n为0-7之外的值,则寄存器地址f0,f1,f2,f3,f4和f5中的值均保持不变,否则按以下规律确定地址:
若序号n为0,则寄存器地址f0,f1,f2,f3,f4和f5依次被赋值6,7,8,9,10,11;
序号n每增加1,则寄存器地址f0,f1,f2,f3,f4和f5的值都增加6,若序号n为7,则寄存器地址f4和f5地址保持不变,其他寄存器地址正常增加;
6.5)对0号寄存器中的值和字节替换操作的输出执行按位异或操作,用此结果再与轮常数值输出进行按位异或后,将所得结果作为轮密钥的一列存入寄存器地址f0所对应的寄存器和双口SDRDM中;
6.6)对1号寄存器中的值和寄存器地址f0所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f1所对应的寄存器和双口SDRDM中;
6.7)对2号寄存器中的值和寄存器地址f1所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f2所对应的寄存器和双口SDRDM中;
6.8)对3号寄存器中的值和寄存器地址f2所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f3所对应的寄存器和双口SDRDM中;
6.9)对4号寄存器中的值和寄存器地址f3所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f4所对应的寄存器和双口SDRDM中;
6.10)对5号寄存器中的值和寄存器地址f4所对应的寄存器中的值执行按位异或操作,将所得结果作为轮密钥的一列存入寄存器地址f5所对应的寄存器和双口SDRDM中;此时完成了轮密钥的6列的存储;
7)对序号n加1,若加1后的结果为8,则停止密钥扩展进程,否则重复步骤4)至步骤7)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210132394.7A CN102624520B (zh) | 2012-05-02 | 2012-05-02 | 基于aes的192比特位密钥扩展系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210132394.7A CN102624520B (zh) | 2012-05-02 | 2012-05-02 | 基于aes的192比特位密钥扩展系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102624520A true CN102624520A (zh) | 2012-08-01 |
CN102624520B CN102624520B (zh) | 2014-10-29 |
Family
ID=46564213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210132394.7A Expired - Fee Related CN102624520B (zh) | 2012-05-02 | 2012-05-02 | 基于aes的192比特位密钥扩展系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102624520B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106850214A (zh) * | 2017-03-13 | 2017-06-13 | 上海新储集成电路有限公司 | 一种并行加解密方法 |
CN107688729A (zh) * | 2017-07-27 | 2018-02-13 | 大唐高鸿信安(浙江)信息科技有限公司 | 基于可信主机的应用程序保护系统及方法 |
CN109302280A (zh) * | 2018-08-02 | 2019-02-01 | 哈尔滨工程大学 | 一种aes密钥扩展方法 |
CN110034918A (zh) * | 2019-03-15 | 2019-07-19 | 深圳市纽创信安科技开发有限公司 | 一种sm4加速方法和装置 |
CN111400730A (zh) * | 2020-03-11 | 2020-07-10 | 西南石油大学 | 一种基于弱关联性的aes密钥扩展方法 |
CN112558885A (zh) * | 2020-12-24 | 2021-03-26 | 展讯半导体(成都)有限公司 | 功能手机的存储器使用方法及相关产品 |
CN113688414A (zh) * | 2021-10-25 | 2021-11-23 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、系统、存储介质及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1445681A (zh) * | 2003-05-01 | 2003-10-01 | 南京邮电学院 | 高安全等级对称密钥算法的加密、解密方法及加密器 |
CN1672352A (zh) * | 2002-05-23 | 2005-09-21 | 爱特梅尔股份有限公司 | 基于先进加密标准(aes)的硬件密码机 |
US20050213756A1 (en) * | 2002-06-25 | 2005-09-29 | Koninklijke Philips Electronics N.V. | Round key generation for aes rijndael block cipher |
CN101938351A (zh) * | 2010-09-16 | 2011-01-05 | 北京航空航天大学 | 一种实现分组密码加密的密钥扩展方法 |
-
2012
- 2012-05-02 CN CN201210132394.7A patent/CN102624520B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1672352A (zh) * | 2002-05-23 | 2005-09-21 | 爱特梅尔股份有限公司 | 基于先进加密标准(aes)的硬件密码机 |
US20050213756A1 (en) * | 2002-06-25 | 2005-09-29 | Koninklijke Philips Electronics N.V. | Round key generation for aes rijndael block cipher |
CN1445681A (zh) * | 2003-05-01 | 2003-10-01 | 南京邮电学院 | 高安全等级对称密钥算法的加密、解密方法及加密器 |
CN101938351A (zh) * | 2010-09-16 | 2011-01-05 | 北京航空航天大学 | 一种实现分组密码加密的密钥扩展方法 |
Non-Patent Citations (1)
Title |
---|
刘珍桢: "AES加、解密算法的FPGA优化设计", 《电子科技大学硕士学位论文》, 10 September 2007 (2007-09-10) * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106850214A (zh) * | 2017-03-13 | 2017-06-13 | 上海新储集成电路有限公司 | 一种并行加解密方法 |
CN107688729A (zh) * | 2017-07-27 | 2018-02-13 | 大唐高鸿信安(浙江)信息科技有限公司 | 基于可信主机的应用程序保护系统及方法 |
CN109302280A (zh) * | 2018-08-02 | 2019-02-01 | 哈尔滨工程大学 | 一种aes密钥扩展方法 |
CN109302280B (zh) * | 2018-08-02 | 2021-11-23 | 哈尔滨工程大学 | 一种aes密钥扩展方法 |
CN110034918A (zh) * | 2019-03-15 | 2019-07-19 | 深圳市纽创信安科技开发有限公司 | 一种sm4加速方法和装置 |
CN110034918B (zh) * | 2019-03-15 | 2023-10-20 | 深圳市纽创信安科技开发有限公司 | 一种sm4加速方法和装置 |
CN111400730A (zh) * | 2020-03-11 | 2020-07-10 | 西南石油大学 | 一种基于弱关联性的aes密钥扩展方法 |
CN111400730B (zh) * | 2020-03-11 | 2022-03-08 | 西南石油大学 | 一种基于弱关联性的aes密钥扩展方法 |
CN112558885A (zh) * | 2020-12-24 | 2021-03-26 | 展讯半导体(成都)有限公司 | 功能手机的存储器使用方法及相关产品 |
CN112558885B (zh) * | 2020-12-24 | 2022-11-22 | 展讯半导体(成都)有限公司 | 功能手机的存储器使用方法及相关产品 |
CN113688414A (zh) * | 2021-10-25 | 2021-11-23 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、系统、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN102624520B (zh) | 2014-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102710415B (zh) | 一种利用对称密码算法进行数据加解密的方法及查表装置 | |
CN102624520A (zh) | 基于aes的192比特位密钥扩展系统及方法 | |
CN105490802B (zh) | 基于gpu的改进sm4并行加解密通信方法 | |
US7860241B2 (en) | Simple universal hash for plaintext aware encryption | |
Almuhammadi et al. | A comparative analysis of AES common modes of operation | |
EP3345335B1 (en) | Homomorphic based method and system for securely aggregating data | |
CN1938980A (zh) | 用于密码加密处理数据的方法和设备 | |
RU2000122712A (ru) | Способ шифрования, устройство шифрования, способ дешифрирования и устройство дешифрирования | |
CN102012993A (zh) | 一种数据选择加密解密方法及装置 | |
CN101394268B (zh) | 基于广义信息域的高级加密系统及方法 | |
US10686587B2 (en) | Method for safeguarding the information security of data transmitted via a data bus and data bus system | |
CN102594548A (zh) | 一种实现数据分段加密、解密的方法 | |
CN1972237A (zh) | 基于动态加密算法的vpn系统 | |
Panda | Data security in wireless sensor networks via AES algorithm | |
US20180316490A1 (en) | Key sequence generation for cryptographic operations | |
CN112367342A (zh) | 一种分布式光伏运维数据的加密传输方法及系统 | |
KR101095386B1 (ko) | 이산화된 카오스 함수를 이용한 암호 시스템 | |
US11240022B1 (en) | Passive encryption rotation keys | |
CN106034021A (zh) | 轻量级双模兼容aes加解密模块及其方法 | |
PH12022552174A1 (en) | Blockchain-based random number generation method, system and storage medium | |
Bao et al. | A key management scheme based on grouping within cluster | |
CN102647272B (zh) | 256比特位密钥扩展系统及方法 | |
US20120321079A1 (en) | System and method for generating round keys | |
Srivastava et al. | AES-128 Performance in TinyOS with CBC algorithm (WSN) | |
CN102546152A (zh) | 一种实现数据多级加密、解密的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141029 Termination date: 20190502 |
|
CF01 | Termination of patent right due to non-payment of annual fee |