CN115883059A - 一种aes运算电路及方法 - Google Patents

一种aes运算电路及方法 Download PDF

Info

Publication number
CN115883059A
CN115883059A CN202111149845.3A CN202111149845A CN115883059A CN 115883059 A CN115883059 A CN 115883059A CN 202111149845 A CN202111149845 A CN 202111149845A CN 115883059 A CN115883059 A CN 115883059A
Authority
CN
China
Prior art keywords
key
data
module
transformation
aes
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.)
Pending
Application number
CN202111149845.3A
Other languages
English (en)
Inventor
胡展
常子奇
黄明强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Amicro Semiconductor Co Ltd
Original Assignee
Zhuhai Amicro Semiconductor Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhuhai Amicro Semiconductor Co Ltd filed Critical Zhuhai Amicro Semiconductor Co Ltd
Priority to CN202111149845.3A priority Critical patent/CN115883059A/zh
Publication of CN115883059A publication Critical patent/CN115883059A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种AES运算电路及方法,与现有技术相比,本发明通过流水线技术实现AES算法的轮内循环,即在当前轮的变换过程中,可以实现下一轮的部分变换,使得AES加解密流程耗费的时钟周期数较少,提高了数据加解密的效率;另外,由于只对当前密钥进行储存,节省了大量的存储单元,使得AES运算电路的面积大大缩小,有利于降低成本,提高市场竞争力。

Description

一种AES运算电路及方法
技术领域
本发明涉及密码电路技术领域,具体涉及一种AES运算电路及方法。
背景技术
AES高级加密标准(Advanced Encryption Standard,AES)作为一种加密方法,广泛应用于通用MCU中,特别是主打性价比的MCU,需要在保证电路可工作于规格要求的工作频率的前提条件下,尽可能缩小各个模块的面积,来控制MCU的成本价格,提高市场竞争力。
传统的AES密钥处理电路,是用寄存器或者sram等存储单元,在数据加密和解密之前,将各轮对应密钥先预刷新之后,按顺序存储于存储单元之中。在此后的加解密过程中,从存储单元中再寻址读出当前轮数对应的密钥。以待加解密的数据位宽为128bit,密钥长度也为128bit为例,总共要进行11轮的数据加密,11轮的数据解密处理,需要11组每组长度为128bit的密钥。所以在进行数据加密和解密操作之前,CPU会先发送一个key_start信号,通知AES模块进行密钥运算并将11轮密钥依次写进存储单元,一共需要消耗11×128bit=1408bit的存储单元。显然,传统的AES密钥处理电路需要较多的存储单元,不利于降低成本。
此外,作为一种迭代加密算法,AES根据密钥的长度需要不同次数的轮变换。同样以待加解密的数据为128bit,密钥长度也为128bit的AES加解密流程为例,加密过程和解密过程都需要11轮数据处理(round0~round10),其中,round0称为初始轮(或第一轮),round1~round9均称为中间轮,round10称为最终轮。除第一轮外,每一轮都是接收上一轮处理过后的数据进行运算。传统的AES严格按照轮变换的顺序依次执行,无法做到轮内运算的切割,这样使得加解密流程需要耗费很多的时钟周期数,效率较低。
发明内容
为解决上述问题,本发明提供了一种AES运算电路及方法,大大缩小了密钥处理电路和数据加解密处理电路的面积,且提高了数据加解密的效率,有利于成本控制。本发明的具体技术方案如下:
一种AES运算电路,所述运算电路包括:总线接口模块,用于主机与从机之间的数据交互;FIFO模块,与总线接口模块连接,用于数据缓存;数据流控制模块,与FIFO模块和数据加解密处理模块连接,用于控制FIFO模块和数据加解密处理模块之间的数据交互;数据加解密处理模块,与数据流控制模块连接,通过轮内流水线技术实现数据加解密;密钥处理模块,与总线接口模块和数据加解密处理模块连接,用于为数据加解密处理模块提供当前密钥;其中,密钥处理模块只对当前密钥进行储存。
与现有技术相比,本技术方案通过流水线技术实现AES算法的轮内循环,即在当前轮的变换过程中,可以实现下一轮的部分变换,使得AES加解密流程耗费的时钟周期数较少,提高了数据加解密的效率;另外,由于只对当前密钥进行储存,节省了大量的存储单元,使得AES运算电路的面积大大缩小,有利于降低成本。
进一步地,所述FIFO模块包括输入缓存FIFO模块和输出缓存FIFO模块;其中,所述输入缓存FIFO模块用于缓存总线接口模块从主机传输而来的待加解密数据;所述输出缓存FIFO模块用于缓存数据加解密处理模块传输而来的已加解密数据。
进一步地,所述数据加解密处理模块包括:第一计数器,用于对数据加解密过程中的时钟周期个数进行计数并输出当前子轮数,每计数预设次数将当前子轮数归零重计;第二计数器,与所述第一计数器连接,接收所述第一计数器输出的当前子轮数,用于根据当前子轮数对流水线轮数进行计数;第一级加解密电路,与所述第二计数器连接,用于根据流水线轮数、当前子轮数和AES方向对待加解密数据进行第一轮的异或运算以及第二轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,所述AES方向包括数据加密方向和数据解密方向;所述第一轮和第二轮分别表示AES数据加解密轮数中的初始轮和中间轮;第二级加解密电路,与所述第二计数器和所述第一级加解密电路连接,用于根据流水线轮数、当前子轮数和AES方向对所述第一级加解密电路输出的数据进行第N-1轮的列混合变换/逆列混合变换和异或运算以及第N轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,N表示AES数据加解密轮数,N为正整数且大于2,N的最大值由密钥长度决定;第三级加解密电路,与所述第二计数器和所述第二级加解密电路连接,用于根据流水线轮数和当前子轮数对所述第二级加解密电路输出的数据进行异或运算,然后输出已加解密数据。该技术方案通过流水线技术实现AES算法的轮内循环,即在当前轮的变换过程中,可以实现下一轮的部分变换,使得AES加解密流程耗费的时钟周期数较少,提高了数据加解密的效率。
进一步地,所述第一计数器每接收一次AES模块使能则对时钟周期个数计数一次;每计数预设次数,所述第一计数器产生一次密钥刷新使能,然后将当前子轮数归零重计。在计数预设次数后,当前密钥所有位数已完成变换,产生密钥刷新使能即可刷新当前密钥,同时,当前子轮数归零重计可使得相应模块正确选择刷新后的当前密钥的对应位数。
进一步地,所述第二计数器每接收预设次数的当前子轮数则对流水线轮数计数一次;当流水线轮数达到N的最大值且总的时钟周期个数达到预设值时,所述第二计数器产生一个已加解密数据有效标志信号。
进一步地,所述第一级加解密电路包括:第一数据选择器,用于根据当前子轮数选择待加解密数据的对应位数以及当前密钥的对应位数,并输出至第一异或运算模块;第一异或运算模块,与所述第一数据选择器连接,用于对待加解密数据的对应位数以及当前密钥的对应位数进行异或运算;第二数据选择器,与所述第二计数器连接,用于根据流水线轮数选择对应轮数的异或运算结果输出至第一寄存器;第一寄存器,与所述第二数据选择器连接,用于储存经所述第二数据选择器选择后的数据,若此时流水线轮数达到N的最大值且总的时钟周期个数达到预设值,则第一寄存器将接收到的数据输出为已加解密数据,否则第一寄存器将接收到的数据暂存直至被下一模块读取;第三数据选择器,与所述第一寄存器连接,用于根据当前子轮数选择所述第一寄存器中的异或运算结果的对应位数,然后传输至S盒变换模块;S盒变换模块,与所述第三数据选择器连接,用于根据AES方向对所述第三数据选择器输出的数据进行S盒变换/逆S盒变换;数据合并模块,与所述S盒变换模块连接,用于对所述S盒变换模块输出的数据进行合并;行移位变换模块,与所述数据合并模块连接,用于根据AES方向对合并后的数据进行行移位变换/逆行移位变换;第四数据选择器,与所述行移位变换模块连接,用于根据当前子轮数选择所述行移位变换模块中的变换结果的对应位数并输出至下一级电路;其中,所述第一异或运算模块和S盒变换模块的数据处理位宽为第一预设位宽,所述行移位变换模块的数据处理位宽为第二预设位宽,所述第二预设位宽为所述第一预设位宽的整数倍,所述第一寄存器的存储空间为第一预设值,所述第一预设值的大小与所述第二预设位宽的大小相等,所述对应位数的大小与所述第一预设位宽的大小相等。该技术方案可以在一轮流水中实现待加解密数据的异或运算、S盒变换/逆S盒变换以及行移位变换/逆行移位变换,实现了AES算法的轮内循环,减少了AES加解密流程耗费的时钟周期数。
进一步地,所述数据合并模块包括第二寄存器和第三寄存器,其中,第二寄存器,与所述S盒变换模块连接,用于储存所述S盒变换模块输出的数据;第三寄存器,分别与所述S盒变换模块和所述第二寄存器连接,用于在所述第一寄存器的存储空间不足时,接收所述S盒变换模块输出的数据,同时也接收所述第一寄存器中的数据,然后将所有数据进行合并;其中,所述第二寄存器的存储空间为第二预设值,所述第三寄存器的存储空间为第一预设值,所述第二预设值小于所述第一预设值,所述第二预设值为所述第一预设位宽的整数倍。该技术方案将S盒变换/逆S盒变换后的数据进行合并,使得行移位变换模块可以一次性完成数据的行移位变换/逆行移位变换,减少了AES加解密流程耗费的时钟周期数。
进一步地,所述第二级加解密电路包括:列混合变换模块,与所述第四数据选择器连接,用于根据AES方向对所述行移位变换模块中的变换结果的对应位数进行列混合变换/逆列混合变换;第五数据选择器,用于根据当前子轮数选择当前密钥的对应位数;密钥逆列混合变换模块,与所述第五数据选择器连接,用于在数据解密时对所述第五数据选择器输出的当前密钥的对应位数进行逆列混合变换;第六数据选择器,与所述第五数据选择器和所述密钥逆列混合变换模块连接,用于根据AES方向选择所述第五数据选择器或所述密钥逆列混合变换模块输出的数据并传输给第二异或运算模块;第二异或运算模块,与所述第六数据选择器和所述列混合变换模块连接,用于对所述列混合变换模块和所述第六数据选择器输出的数据进行异或运算;所述第二级加解密电路还包括所述第二数据选择器、所述第一寄存器、所述第三数据选择器、所述S盒变换模块、所述数据合并模块、所述行移位变换模块以及所述第四数据选择器;其中,所述列混合变换模块、密钥逆列混合变换模块和第二异或运算模块的数据处理位宽均为第一预设位宽。该技术方案可以在一轮流水中实现待加解密数据的列混合变换/逆列混合变换、异或运算、S盒变换/逆S盒变换以及行移位变换/逆行移位变换,实现了AES算法的轮内循环,减少了AES加解密流程耗费的时钟周期数。
进一步地,所述第三级加解密电路包括:第七数据选择器,用于根据当前子轮数选择当前密钥的对应位数;第三异或运算模块,与所述第七数据选择器和所述第四数据选择器连接,用于对所述行移位变换模块中的变换结果的对应位数与当前密钥的对应位数进行异或运算;所述第三级加解密电路还包括所述第二数据选择器和所述第一寄存器;其中,所述第二数据选择器分别与所述第一异或运算模块、所述第二异或运算模块和所述第三异或运算模块连接;其中,所述第三异或运算模块的数据处理位宽为第一预设位宽。由于前一级电路已经将S盒变换/逆S盒变换以及行移位变换/逆行移位变换全部完成,该技术方案只需实现异或操作,减少了AES加解密流程耗费的时钟周期数。
进一步地,所述第一预设位宽的大小为32bit,所述第二预设位宽和第一预设值的大小为128bit,所述第二预设值的大小为96bit。该技术方案采用32bit而非64bit(需由两个32bit组成)数据处理位宽的异或运算模块、S盒变换模块以及列混合变换模块,使得数据加解密处理模块的面积大大缩小,有利于控制成本,提高市场竞争力。
进一步地,所述密钥处理模块包括:密钥预刷新控制状态机模块,用于产生密钥预刷新使能,以控制密钥变换模块进行密钥预刷新,并在密钥预刷新完成后输出密钥预刷新完成中断信号;第一或门,与密钥预刷新控制状态机模块连接,对密钥预刷新使能和数据加解密处理模块产生的密钥刷新使能作或运算;密钥变换模块,与第一或门连接,用于密钥刷新,以更新密钥寄存器中的密钥;数据选择器,与密钥变换模块连接,根据数据选择信号选择相应的密钥传输给密钥寄存器;密钥寄存器,与数据选择器连接,用于储存当前密钥。该技术方案使用密钥变换模块对加解密过程中所需的密钥进行刷新,并用刷新后的密钥更新密钥寄存器中的密钥,由于只对当前密钥进行储存,节省了大量的存储单元,使得密钥处理模块的面积大大缩小,有利于降低成本。
进一步地,所述密钥变换模块包括密钥正变换模块和密钥反变换模块,其中,密钥正变换模块,与第一或门连接,用于接收密钥预刷新使能或密钥刷新使能,在数据加密过程以及密钥预刷新过程中进行一轮密钥正变换;密钥反变换模块,用于接收密钥刷新使能,以在数据解密过程中进行一轮密钥反变换。使得密钥可以在同一个密钥寄存器中来回刷新,节省多余的存储单元。
进一步地,所述数据选择器包括第八数据选择器和第九数据选择器,其中,第八数据选择器,与密钥正变换模块和密钥反变换模块连接,用于接收密钥正变换模块的输出和密钥反变换模块的输出,并根据AES方向,选择密钥正变换模块或密钥反变换模块的输出作为第九数据选择器的输入;第九数据选择器,与第八数据选择器和总线接口模块连接,用于接收第八数据选择器的输出和总线接口模块的初始密钥,并根据初始密钥配置完成信号,选择第八选择器的输出或初始密钥作为密钥寄存器的输入;其中,所述AES方向包括数据加密方向和数据解密方向。
进一步地,所述密钥处理模块还包括第二或门,与密钥预刷新控制状态机模块和总线接口模块连接,用于接收总线接口模块的初始密钥配置完成信号和密钥预刷新控制状态机模块输出的密钥预刷新完成中断信号,并对初始密钥配置完成信号和密钥预刷新完成中断信号作或运算,以生成密钥寄存器写使能来控制密钥寄存器的写入。
进一步地,所述密钥预刷新控制状态机模块包括状态机和第三计数器;所述状态机用于控制第三计数器对密钥预刷新使能的脉冲个数进行计数。
一种AES运算方法,该方法通过所述AES运算电路实现,所述方法包括:数据加解密处理模块在获取待加解密数据后,根据AES方向,通过轮内流水线技术对待加解密数据进行加密或解密;其中,每经过一轮流水,数据加解密处理模块产生一次密钥刷新使能,使得密钥处理模块刷新密钥并传输给数据加解密处理模块进行加解密;其中,密钥处理模块只对当前密钥进行储存。
与现有技术相比,本技术方案通过流水线技术实现AES算法的轮内循环,即在当前轮的变换过程中,可以实现下一轮的部分变换,使得AES加解密流程耗费的时钟周期数较少,提高了数据加解密的效率;另外,由于只对当前密钥进行储存,节省了大量的存储单元,使得AES运算电路的面积大大缩小,有利于降低成本。
进一步地,所述轮内流水线技术具体包括:步骤S1,根据AES方向,数据加解密处理模块通过所述第一级加解密电路对待加解密数据进行第一轮的异或运算以及第二轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,所述AES方向包括包括数据加密方向和数据解密方向;所述第一轮和第二轮分别表示AES数据加解密轮数中的初始轮和中间轮;步骤S2,数据加解密处理模块通过所述第二级加解密电路对所述第一级加解密电路输出的数据进行第N-1轮的列混合变换/逆列混合变换和异或运算以及第N轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,N表示AES数据加解密轮数,N为正整数且大于2,N的最大值由密钥长度决定;步骤S3,数据加解密处理模块通过所述第三级加解密电路对所述第二级加解密电路输出的数据进行异或运算,然后输出已加解密数据。该技术方案通过流水线技术实现AES算法的轮内循环,即在当前轮的变换过程中,可以实现下一轮的部分变换,使得AES加解密流程耗费的时钟周期数较少,提高了数据加解密的效率。
进一步地,所述步骤S1的方法具体包括:步骤S11,数据加解密处理模块接收到AES模块使能后,使得所述第一计数器开始输出当前子轮数,然后选择待加解密数据和当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1;其中,待加解密数据和当前密钥具有相同长度的数据位宽,且是第一预设位宽的整数倍;步骤S12,根据AES方向,数据加解密处理模块选择待加解密数据和当前密钥下一对应的第一预设位宽的位数进行异或运算,同时对上一步骤的异或运算结果进行S盒变换/逆S盒变换,随后当前子轮数加1;步骤S13,以此类推,在当前子轮数达到预设次数时,数据加解密处理模块根据AES方向对上一步骤的异或运算结果进行S盒变换/逆S盒变换,同时对所有S盒变换/逆S盒变换后的结果进行行移位变换/逆行移位变换。该技术方案可以在一轮流水中实现待加解密数据的异或运算、S盒变换/逆S盒变换以及行移位变换/逆行移位变换,实现了AES算法的轮内循环,减少了AES加解密流程耗费的时钟周期数。
进一步地,所述步骤S13中,根据AES方向对所有S盒变换/逆S盒变换后的数据进行行移位变换/逆行移位变换之前还包括:数据加解密处理模块将每次S盒变换/逆S盒变换后的结果传输至所述第二寄存器中,在当前子轮数达到预设次数时,数据加解密处理模块将此时的S盒变换/逆S盒变换后的结果以及储存在所述所述第二寄存器中的结果一起传输至所述第三寄存器中进行合并,然后再把合并后的数据传输给所述行移位变换模块。该技术方案将S盒变换/逆S盒变换后的数据进行合并,使得行移位变换模块可以一次性完成数据的行移位变换/逆行移位变换,减少了AES加解密流程耗费的时钟周期数。
进一步地,在当前子轮数达到预设次数时,所述第一计数器产生一次密钥刷新使能,同时也使得所述第二计数器对流水线轮数计数一次,然后当前子轮数归零重计。在计数预设次数后,当前密钥所有位数已完成变换,产生密钥刷新使能即可刷新当前密钥,同时,当前子轮数归零重计可使得相应模块正确选择刷新后的当前密钥的对应位数。
进一步地,所述步骤S2的方法具体包括:步骤S21,根据流水线轮数、当前子轮数以及AES方向,数据加解密处理模块通过第四数据选择器选择行移位变换/逆行移位变换后的结果中对应的第一预设位宽的位数进行列混合变换/逆列混合变换,然后与当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1;步骤S22,数据加解密处理模块选择行移位变换/逆行移位变换后的结果中下一对应的第一预设位宽的位数进行列混合变换/逆列混合变换,然后与当前密钥下一对应的第一预设位宽的位数进行异或运算,同时对上一步骤的异或运算结果进行S盒变换/逆S盒变换,随后当前子轮数加1;步骤S23,以此类推,在当前子轮数达到预设次数时,数据加解密处理模块根据AES方向对上一步骤的异或运算结果进行S盒变换/逆S盒变换,同时对所有S盒变换/逆S盒变换后的结果进行行移位变换/逆行移位变换;步骤S24,待所述第一计数器产生密钥刷新使能,且所述第二计数器对流水线轮数计数后,数据加解密处理模块使得当前子轮数归零重计,然后重复执行步骤S21至步骤S24,直至完成第N轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,N取最大值。该技术方案可以在一轮流水中实现待加解密数据的列混合变换/逆列混合变换、异或运算、S盒变换/逆S盒变换以及行移位变换/逆行移位变换,实现了AES算法的轮内循环,减少了AES加解密流程耗费的时钟周期数。
进一步地,在执行步骤S2的过程中,如果AES方向为数据解密方向,则在进行异或运算之前,先对当前密钥对应的第一预设位宽的位数进行逆列混合变换。
进一步地,所述步骤S3的方法具体包括:步骤S31,根据当前子轮数,数据加解密处理模块通过第四数据选择器选择行移位变换/逆行移位变换后的结果和当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1;步骤S32,以此类推,当数据加解密处理模块完成行移位变换/逆行移位变换后的结果和当前密钥所有位数的异或运算后,所述第一寄存器输出已加解密数据。由于前一级电路已经将S盒变换/逆S盒变换以及行移位变换/逆行移位变换全部完成,该技术方案只需实现异或操作,减少了AES加解密流程耗费的时钟周期数。
进一步地,如果AES方向为数据加密方向,则数据加解密处理模块接收初始密钥作为当前密钥,并在所述第一计数器产生密钥刷新使能后,接收刷新后的密钥作为当前密钥,直至初始密钥刷新到最终密钥;如果AES方向为数据解密方向,则数据加解密处理模块接收最终密钥作为当前密钥,并在所述第一计数器产生密钥刷新使能后,接收刷新后的密钥作为当前密钥,直至最终密钥刷新到初始密钥。
进一步地,如果AES方向为数据加密方向,则密钥处理模块对密钥进行一轮密钥正变换,所述密钥正变换指的是将密钥寄存器中的初始密钥依次刷新到最终密钥;如果AES方向为数据解密方向,则密钥处理模块对密钥进行一轮密钥反变换,所述密钥反变换指的是将密钥寄存器中的最终密钥依次刷新到初始密钥。基于密钥的正反变换,使得密钥可以在同一个密钥寄存器中来回刷新,节省多余的存储单元。
进一步地,在数据加密或解密过程开始之前,密钥处理模块根据AES模块使能和初始密钥配置完成信号,将密钥寄存器中的密钥更新为初始密钥。
进一步地,如果AES方向为数据解密方向,则在将密钥寄存器中的密钥刷新到初始密钥之后,密钥处理模块根据密钥预刷新使能进行密钥预刷新;所述密钥预刷新是指在数据解密过程之前先对密钥寄存器中的密钥进行一轮正变换,将密钥寄存器中的密钥更新为最终密钥。
附图说明
图1为现有技术中AES数据加解密流程示意图。
图2为本发明一种实施例所述AES运算电路。
图3为本发明一种实施例所述数据加解密处理模块。
图4为本发明一种实施例所述密钥处理模块。
图5为本发明一种实施例所述密钥处理方法流程图。
图6为本发明一种实施例所述数据加解密处理方法流程图。
图7为本发明一种实施例所述数据加密流水线设计。
图8为本发明一种实施例所述数据解密流水线设计。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细描述。为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。
除非另作定义,本发明所涉及的技术术语或科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一种”、“该”等词语并不表示数量限制,可以表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含,如:包含了一系列步骤或模块的过程、方法、系统产品或者设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或模块,或者还可以包括对于这些过程、方法、产品或设备固有的其他步骤或单元。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是用于区别类似的对应,不代表针对对象的特定排序。
现有技术中,AES数据加解密的流程如图1所示。以待加解密的数据为128bit,密钥长度也为128bit的AES数据加解密流程为例,加密过程(图1左侧部分从plain text到cipher text过程)和解密过程(图1右侧部分从cipher text到plain text过程)都需要11轮数据处理(round0~round10)。
加密过程中,round0(称为初始轮或第一轮)进行的操作是输入待加密数据与初始密钥KEY0的异或运算;round1~round9均称为中间轮,共有9轮中间轮,每轮中间轮均对上一轮处理过后的数据进行执行4项操作:SBOX变换(S盒变换)、SHIFT ROWS变换(行移位变换)、MIX COLUMNS变换(列混合变换)以及分别与中间密钥KEY1~KEY9进行异或运算;round10称为最终轮,对round9处理过后的数据进行SBOX变换、SHIFT ROWS变换和与最终密钥KEY10进行异或运算。round10结束后,数据加密流程结束。
解密过程中,round0进行的操作是输入的待解密数据与最终密钥KEY10的异或运算;round1~round9每轮中间轮均对上一轮处理过后的数据进行执行4项操作:INV SBOX变换(逆S盒变换)、INV SHIFT ROWS(逆行移位变换)变换、INV MIX COLUMNS变换(逆列混合变换)、分别与INV MIX COLUMNS变换之后的中间密钥INV_MIX_COLUMNS(KEY9~KEY1)进行异或运算;round10对round9处理过后的数据进行INV SBOX变换、INV SHIFT ROWS变换和与初始密钥KEY0进行异或运算。round10结束后,数据解密流程结束。
图1所示的现有的AES数据加解密严格按照轮变换的顺序依次执行,无法做到轮内运算的切割,这样使得加解密流程需要耗费很多的时钟周期数,效率较低;且,现有的AES数据加解密电路采用的是较大数据处理位宽的模块,导致电路面积较大,提高了成本;且,现有的AES密钥处理电路在每次刷新密钥后,会将每个密钥都储存到存储单元中,对存储单元的需求量大,同样提高了成本。
因此,本发明实施例提供一种经过电路面积优化和数据加解密流程优化的AES运算电路,如图2所示,所述运算电路包括:总线接口模块,用于主机与从机之间的数据交互;FIFO模块,与总线接口模块连接,用于数据缓存;数据流控制模块,与FIFO模块和数据加解密处理模块连接,用于控制FIFO模块和数据加解密处理模块之间的数据交互;数据加解密处理模块,与数据流控制模块连接,通过轮内流水线技术实现数据加解密;密钥处理模块,与总线接口模块和数据加解密处理模块连接,用于为数据加解密处理模块提供当前密钥;其中,密钥处理模块只对当前密钥进行储存。
作为其中一种实施方式,所述FIFO模块包括输入缓存FIFO模块和输出缓存FIFO模块。其中,所述输入缓存FIFO模块用于缓存总线接口模块从主机传输而来的待加解密数据;所述输出缓存FIFO模块用于缓存数据加解密处理模块传输而来的已加解密数据。
作为其中一种实施方式,所述数据加解密处理模块包括:第一计数器、第二计数器、第一级加解密电路、第二级加解密电路和第三级加解密电路。
如图3所示,第一计数器,用于对数据加解密过程中的时钟周期个数进行计数并输出当前子轮数,每计数预设次数将当前子轮数归零重计。需要说明的是,所述第一计数器每接收一次CPU(或者说是主机)配置而来的AES模块使能则对时钟周期个数计数一次,且在计数预设次数后,产生一次密钥刷新使能输出至图2所示的密钥处理模块中,使密钥处理模块刷新当前密钥,然后当前子轮数归零重计。其中,当前子轮数用于表示电路在当前流水线轮数下处于第几时刻,使得以当前子轮数作为选通信号的数据选择器可以正确选择该时刻下,当前密钥和/或待加解密数据对应的位数进行输出。在所述第一计数器计数预设次数后,由于当前密钥的所有位数均已参与运算,因此将当前子轮数归零,这样才能在当前密钥刷新后重新发挥作用。
如图3所示,第二计数器,与所述第一计数器连接,接收所述第一计数器输出的当前子轮数,用于根据当前子轮数对流水线轮数进行计数。需要说明的是,所述第二计数器每接收预设次数的当前子轮数则对流水线轮数计数一次。其中,流水线轮数的含义与传统AES数据加解密轮数的含义有所区别,例如,传统AES数据加解密轮数的第一轮只进行异或运算,而本发明的第一轮流水不仅会进行传统AES数据加解密轮数的第一轮,还会实现传统AES数据加解密轮数第二轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换。即,每一轮流水(除最后一轮)都会涉及到传统AES数据加解密方法中两轮的运算。所述当前子轮数即是对一轮流水的细分,本发明对一轮流水中的每个时钟周期都规划了相应的数据加解密操作。另外,当流水线轮数达到N的最大值且总的时钟周期个数达到预设值时,所述第二计数器产生一个已加解密数据有效标志信号并传输给图2所示的数据流控制模块,使得已加解密数据可以通过数据流控制模块传输出去。
作为一种较优的实施方式,本发明采用32bit处理位宽的异或运算模块、S盒变换模块和列混合变换模块。相比于传统AES数据加解密电路,本发明无需使用2个32bit处理位宽的模块组成64bit处理位宽的模块,大大缩小了电路面积,有利于控制成本,提高市场竞争力。
如图3所示,第一级加解密电路,与所述第二计数器连接,用于根据流水线轮数、当前子轮数和AES方向对待加解密数据进行第一轮的异或运算以及第二轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,所述AES方向包括数据加密方向和数据解密方向;所述第一轮和第二轮分别表示AES数据加解密轮数中的初始轮和中间轮。需要说明的是,所述第一级加解密电路用于实现第一轮流水,如果CPU配置的是数据加密方向,则可以用于实现数据加密,如果CPU配置的是数据解密方向,则可以用于实现数据解密。
所述第一级加解密电路包括:
第一数据选择器,用于根据当前子轮数选择待加解密数据的对应位数以及当前密钥的对应位数,并输出至第一异或运算模块。仍然以待加解密的数据为128bit,密钥长度也为128bit的AES数据加解密流程为例,由于本发明主要的运算模块采用32bit数据处理位宽,因此,需要将128bit的待加解密数据和当前密钥分成4次处理。前述当前子轮数即是用来选择待加解密数据和当前密钥的对应位数进行操作,具体的:当前子轮数为0时(即第一子轮),所述第一数据选择器选择待加解密数据和当前密钥的[31:0]bit进行异或运算;当前子轮数为1时,选择待加解密数据和当前密钥的[63:32]bit进行异或运算;当前子轮数为2时,选择待加解密数据和当前密钥的[95:64]bit进行异或运算;当前子轮数为3时,选择待加解密数据和当前密钥的[127:96]bit进行异或运算。
第一异或运算模块,与所述第一数据选择器连接,用于对待加解密数据的对应位数以及当前密钥的对应位数进行异或运算。
第二数据选择器,与所述第二计数器连接,用于根据流水线轮数选择对应轮数的异或运算结果输出至第一寄存器。如果选通信号是第一轮流水,则选择所述第一异或运算模块的结果。
第一寄存器,与所述第二数据选择器连接,用于储存经所述第二数据选择器选择后的数据。需要说明的是,如果此时流水线轮数达到N的最大值且总的时钟周期个数达到预设值,说明数据加解密已经完成,那么第一寄存器将接收到的数据输出为已加解密数据,否则第一寄存器将接收到的数据暂存直至被下一模块读取,其中,第一寄存器的存储容量为128bit,与待加解密数据的长度一致。
第三数据选择器,与所述第一寄存器连接,用于根据当前子轮数选择所述第一寄存器中的异或运算结果的对应位数,然后传输至S盒变换模块。具体的,当前子轮数为1(第二子轮)时,待加解密数据和当前密钥的[63:32]bit正在进行异或运算,而第一寄存器中已经储存着待加解密数据和当前密钥的[31:0]bit的异或运算结果。所以,当前子轮数为1时,将当前子轮数为0时的[31:0]bit的异或运算结果传输给S盒变换模块执行计算。以此类推,在当前子轮的异或运算过程中,同时进行上一子轮的S盒变换/逆S盒变换。
S盒变换模块,与所述第三数据选择器连接,用于根据AES方向对所述第三数据选择器输出的数据进行S盒变换/逆S盒变换。如果AES方向为数据加密方向,则执行S盒变换,如果AES方向为数据解密方向,则执行逆S盒变换。
数据合并模块,与所述S盒变换模块连接,用于对所述S盒变换模块输出的数据进行合并。所述数据合并模块包括第二寄存器和第三寄存器,第二寄存器的存储空间小于第三存储器。其中,第二寄存器为96bit,与所述S盒变换模块连接,用于储存所述S盒变换模块输出的前96bit的数据。第三寄存器为128bit,分别与所述S盒变换模块和所述第二寄存器连接,用于接收所述S盒变换模块输出的后32bit的数据,同时也接收所述第一寄存器中的数据,然后将所有数据合并成完整的128bit。需要注意的是,所述数据合并操作并不单独占用任一时钟周期,在S盒变换模块完成数据的计算后,S盒变换模块会实时将数据传输到数据合并模块中。
行移位变换模块,与所述数据合并模块连接,用于根据AES方向对合并后的数据进行行移位变换/逆行移位变换。所述行移位变换模块的数据处理位宽为128bit,如果AES方向为数据加密方向,则执行行移位变换,如果AES方向为数据解密方向,则执行逆行移位变换。需要说明的是,当前子轮数为4时(第5子轮),S盒变换模块在执行最后的[127:96]bit的计算。在该子轮中,当S盒变换模块完成计算后,数据合并模块实时将数据进行合并,然后传输给行移位变换模块完成行移位变换/逆行移位变换。此时,即在第5子轮,第一级加解密电路完成第一轮流水,所述第二计数器对流水线轮数加1,所述第一计数器输出密钥刷新使能以使得密钥处理模块刷新当前密钥,同时将当前子轮数归零重计。
第四数据选择器,与所述行移位变换模块连接,用于根据当前子轮数选择所述行移位变换模块中的变换结果的对应位数并输出至下一级电路。所述第四数据选择器充当下一级电路的衔接模块,具体的,是充当上下两轮流水的衔接模块,其将上一轮流水的结果传输至下一轮流水进行计算。需要注意的是,此时的当前子轮数已经归零。
如图3所示,第二级加解密电路,与所述第二计数器和所述第一级加解密电路连接,用于根据流水线轮数、当前子轮数和AES方向对所述第一级加解密电路输出的数据进行第N-1轮的列混合变换/逆列混合变换和异或运算以及第N轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,N表示AES数据加解密轮数,N为正整数且大于2,N的最大值由密钥长度决定。需要强调的是,N表示的是传统AES数据加解密方法中的轮数。当密钥长度为128bit时,N的最大值为11,即数据加解密需要11轮变换才能完成。需要说明的是,所述第二级加解密电路用于实现第2-10轮流水,且同样可以实现数据加密和数据解密两个过程。
所述第二级加解密电路包括:
列混合变换模块,与所述第四数据选择器连接,用于根据AES方向对所述行移位变换模块中的变换结果的对应位数进行列混合变换/逆列混合变换。
第五数据选择器,用于根据当前子轮数选择当前密钥的对应位数。需要注意的是,当前密钥已刷新为第二轮流水的密钥。
密钥逆列混合变换模块,与所述第五数据选择器连接,用于在数据解密时对所述第五数据选择器输出的当前密钥的对应位数进行逆列混合变换。此模块只在数据解密过程中发挥作用。
第六数据选择器,与所述第五数据选择器和所述密钥逆列混合变换模块连接,用于根据AES方向选择所述第五数据选择器或所述密钥逆列混合变换模块输出的数据并传输给第二异或运算模块。如果AES方向为数据加密方向,则选择第五数据选择器输出的当前密钥,如果AES方向为数据解密方向,则选择密钥逆列混合变换模块输出的变换后的当前密钥。
第二异或运算模块,与所述第六数据选择器和所述列混合变换模块连接,用于对所述列混合变换模块和所述第六数据选择器输出的数据进行异或运算。该异或运算模块用于执行第2-10轮流水的异或运算,即所述第二数据选择器的选通信号为2-10时,数据加解密处理模块都会选择所述第二级加解密电路执行数据加解密流程。
需要说明的是,所述第二级加解密电路还包括所述第二数据选择器、所述第一寄存器、所述第三数据选择器、所述S盒变换模块、所述数据合并模块、所述行移位变换模块以及所述第四数据选择器。上述模块的功能与在第一级加解密电路中描述的一致。
如图3所示,第三级加解密电路,与所述第二计数器和所述第二级加解密电路连接,用于根据流水线轮数和当前子轮数对所述第二级加解密电路输出的数据进行异或运算,然后输出已加解密数据。所述第三级加解密电路用于实现最后一轮流水,当N取到最大值时,数据加解密处理模块从第二级加解密电路切换到第三级加解密电路。
所述第三级加解密电路包括:
第七数据选择器,用于根据当前子轮数选择当前密钥的对应位数。此时当前密钥为最终密钥。
第三异或运算模块,与所述第七数据选择器和所述第四数据选择器连接,用于对所述行移位变换模块中的变换结果的对应位数与当前密钥的对应位数进行异或运算。在最后一轮流水中,除了异或运算已无其他操作,因此每次异或运算后的结果都储存在所述第一寄存器中。当所有数据完成异或运算,表明数据已经完成加解密,第一寄存器将数据输出到数据流控制模块中,随后再经由总线接口模块传输给主机。
需要说明的是,所述第三级加解密电路还包括所述第二数据选择器和所述第一寄存器。上述模块的功能与在第一级加解密电路中描述的一致。其中,所述第二数据选择器分别与所述第一异或运算模块、所述第二异或运算模块和所述第三异或运算模块连接。
与现有技术相比,本发明实施例所述的数据加解密处理模块通过流水线技术实现AES算法的轮内循环,即在当前轮的变换过程中,可以实现下一轮的部分变换,使得AES加解密流程耗费的时钟周期数较少,提高了数据加解密的效率。另外,该模块采用32bit而非64bit(需由两个32bit组成)数据处理位宽的异或运算模块、S盒变换模块以及列混合变换模块,使得数据加解密处理模块的面积大大缩小,有利于控制成本,提高市场竞争力。
作为其中一种实施方式,如图4所示,所述密钥处理电路包括:
密钥预刷新控制状态机模块,用于产生密钥预刷新使能,以控制密钥变换模块进行密钥预刷新,并在密钥预刷新完成后输出密钥预刷新完成中断信号。所述密钥预刷新控制状态机模块由一个状态机和一个计数器组成。所述状态机是数字电路中常用的用于完成特定操作的控制中心,该状态机包含3个状态:
S0:等待由CPU配置的密钥开始预刷新信号的到来,并在信号到来后跳转到S1;
S1:发送密钥预刷新使能,并控制第三计数器对其脉冲个数进行计数。当密钥预刷新使能的脉冲个数达到预设值后(以待加解密的数据位宽为128bit,密钥长度为128bit的AES流程为例,需要产生10个密钥预刷新使能脉冲),停止发送密钥预刷新使能,跳转到S2;
S2:发出密钥预刷新完成中断信号,并清零第三计数器的计数值,返回S0状态。需要说明的是,此时密钥寄存器中的密钥刷新为最终密钥,而且只有当AES方向配置为数据解密方向时,才会接收到CPU输入的密钥开始预刷新信号。
第一或门,与密钥预刷新控制状态机模块连接,对密钥预刷新使能和密钥刷新使能作或运算。其中,密钥刷新使能来自于数据加解密处理模块,密钥预刷新使能来自于密钥预刷新控制状态机模块。
密钥变换模块,包括密钥正变换模块和密钥反变换模块;其中,密钥正变换模块,与第一或门连接,用于接收密钥预刷新使能或密钥刷新使能,在数据加密过程以及密钥预刷新过程中进行一轮密钥正变换;密钥反变换模块,用于接收密钥刷新使能,以在数据解密过程中进行一轮密钥反变换。所述密钥正变换模块和密钥反变换模块均由S盒变换模块、异或运算模块和rcon参数变换模块组成,这些模块用于实现密钥的运算,且为现有技术。
数据选择器,包括第八数据选择器和第九数据选择器。其中,第八数据选择器,与密钥正变换模块和密钥反变换模块连接,用于接收密钥正变换模块的输出和密钥反变换模块的输出,然后根据AES方向,选择密钥正变换模块或密钥反变换模块的输出作为第九数据选择器的输入;第九数据选择器,与第八数据选择器连接,用于接收第八数据选择器的输出和CPU配置的初始密钥,然后根据初始密钥配置完成信号,选择第八选择器的输出或初始密钥作为密钥寄存器的输入;其中,所述AES方向包括数据加密方向和数据解密方向。其中,初始密钥和初始密钥配置完成信号均由CPU配置而来,在CPU配置好初始密钥后,就会产生一个初始密钥配置完成信号,并通过总线接口模块来通知密钥处理模块进行相应的操作。
密钥寄存器,与第九数据选择器连接,用于储存当前密钥。密钥寄存器在每次获得刷新后的密钥时,将密钥传输给数据加解密处理模块进行数据的加密或解密。另外,当密钥正变换模块和密钥反变换模块需要对密钥进行刷新时,也会从密钥寄存器中读取出当前密钥。
第二或门,与密钥预刷新控制状态机模块连接,用于接收CPU的初始密钥配置完成信号和密钥预刷新控制状态机模块输出的密钥预刷新完成中断信号,并对初始密钥配置完成信号和密钥预刷新完成中断信号作或运算,以生成密钥寄存器写使能来控制密钥寄存器的写入。当第二或门接收的是初始密钥配置完成信号,那么密钥寄存器写使能控制密钥寄存器写入CPU配置而来的初始密钥,当第二或门接收的是密钥预刷新完成中断信号,那么密钥寄存器写使能控制密钥寄存器写入密钥正变换模块输出的最终密钥。
与现有技术相比,本密钥处理模块使用密钥变换模块对加解密过程中所需的密钥进行刷新,并用刷新后的密钥更新密钥寄存器中的密钥,由于只对当前密钥进行储存,节省了大量的存储单元,使得密钥处理模块的面积大大缩小,有利于降低成本。
本发明实施例提供一种AES运算方法,该方法通过上述AES运算电路实现,所述方法包括:数据加解密处理模块在获取待加解密数据后,根据AES方向,通过轮内流水线技术对待加解密数据进行加密或解密;其中,每经过一轮流水,数据加解密处理模块产生一次密钥刷新使能,使得密钥处理模块刷新密钥并传输给数据加解密处理模块进行加解密;其中,密钥处理模块只对当前密钥进行储存。
参照图2,主机将待加解密的数据传输给总线接口模块后,会进入输入缓存FIFO模块中缓存,然后通过数据流控制模块传输给数据加解密处理模块进行数据加解密。在这个过程中,每过一轮流水,数据加解密处理模块会产生一次密钥刷新使能,使得密钥处理模块刷新加解密过程所需的密钥。在完成所有流水轮之后,数据流控制模块将已加解密数据送入输出缓存FIFO模块中,然后总线接口模块将其传输回主机。其中,总线接口模块除了传输加解密数据外,还负责传输主机配置的基本信号,包括AES模块使能、AES方向、初始密钥、初始密钥配置完成信号以及密钥开始预刷新信号。上述过程为AES数据加解密的基本流程,下面对密钥处理模块和数据加解密处理模块的工作方法进行详细地介绍。
由于数据加解密过程需要用到密钥,因此先对密钥处理方法进行介绍。参照图5,本发明实施例提供一种密钥处理方法,所述方法包括:在数据加密或解密过程中,密钥处理模块对密钥进行一轮刷新,并使用每次刷新后的密钥更新密钥寄存器中的密钥,直至密钥刷新次数达到预设次数;其中,密钥寄存器只储存当前密钥。
需要说明的是,一轮刷新指的是一轮密钥正变换或一轮密钥反变换。以待加密或解密的数据位宽为128bit,密钥长度也为128bit的AES加解密流程为例,加密或解密需要经历从第1轮流水pipeline round0到第11轮流水pipeline round10共10次密钥变换,有key0到key10共11组密钥。其中,key0称为初始密钥,key10称为最终密钥;假设现在加密或解密进行到第4轮流水pipeline round3,那么key3就称为当前密钥,所述当前密钥储存在密钥寄存器中。在这个例子中,一轮密钥变换(一轮密钥正变换或一轮密钥反变换)包含10次密钥变换,下文也将以此为例展开说明。
在数据加密或解密过程开始之前,密钥处理模块根据AES模块使能(AES运算电路的工作使能,图4中未示出)和初始密钥配置完成信号,将密钥寄存器中的密钥更新为初始密钥key0。所述初始密钥key0由CPU直接配置,当AES模块使能开启且初始密钥配置完成信号到来时,密钥处理模块更新密钥寄存器中的密钥为初始密钥值key0。
做好加解密前的准备后,密钥处理模块需要判断当前进行的是加密还是解密流程,以执行相应的方法。所述密钥处理模块的AES方向若配置为数据加密方向,则对密钥进行一轮密钥正变换,对密钥寄存器的值进行动态刷新,所述密钥正变换指的是将初始密钥依次刷新到最终密钥,即从key0刷新到key1再到key2直至key10;所述密钥处理模块的AES方向若配置为数据解密方向,则对密钥进行一轮密钥反变换,所述密钥反变换指的是将最终密钥依次刷新到初始密钥,即从key10刷新到key9再到key8直至key0。
其中,所述密钥正变换的变换方法如下:
w0_nxt = sbox[rot(w3)] ^ w0 ^ rcon;
w1_nxt = w1 ^ w0_nxt;
w2_nxt = w2 ^ w1_nxt;
w3_nxt = w3 ^ w2_nxt;
其中,w0、w1、w2和w3组成正变换前的密钥key,由前述可知,key0到key10中每个key为128bit的数据,所以w0、w1、w2和w3均为32bit,且w0[31:0]=key[127:96]、w1[31:0]=key[95:64]、w2[31:0]=key[63:32]、w3[31:0]=key[31:0];
sbox操作采用查表法或变换法,优选地,在本实施例中采用变换法;
rot(w3)代表将w3的高8bit与低24bit交换位置,即rot(w3)={w3[23:0],w3[31:24]};
^符号代表异或操作;
rcon为可变参数,用于生成w0_nxt,AES规范规定,在加密过程中需要10次正变换,rcon依次是:32’h100_0000、32’h200_0000、32’h400_0000、32’h800_0000、32’h1000_0000、32’h2000_0000、32’h4000_0000、32’h8000_0000、32’h1b00_0000、32’h3600_0000;
w0_nxt、w1_nxt、w2_nxt和w3_nxt组成正变换后的密钥key_nxt,且w0_nxt[31:0]=key_nxt[127:96]、w1_nxt[31:0]=key_nxt[95:64]、w2_nxt[31:0]=key_nxt[63:32] 、w3_nxt[31:0]=key_nxt[31:0]。
所述反变换的变换方法如下:
w0_nxt = sbox[rot(w3 ^ w2)] ^ w0 ^ rcon;
w1_nxt = w1 ^ w0;
w2_nxt = w2 ^ w1;
w3_nxt = w3 ^ w2;
其中,w0、w1、w2和w3组成反变换前的密钥key;
rcon为可变参数,用于生成w0_nxt,AES规范规定,在解密过程中需要10次反变换,rcon依次是:32’h3600_0000、32’h1b00_0000、32’h8000_0000、32’h4000_0000、32’h2000_0000、32’h1000_0000、32’h1000_0000、32’h400_0000、32’h200_0000、32’h100_0000。
基于密钥的正反变换,使得密钥可以在同一个密钥寄存器中来回刷新,节省多余的存储单元。所述密钥寄存器的大小等于一个密钥key的大小,在本实施例中,密钥寄存器的大小为128bit。需要说明的是,每完成一次密钥刷新,密钥寄存器将最新的密钥传输给数据加解密处理模块进行数据的加密或解密,然后等待数据加解密处理模块的密钥刷新使能以继续对密钥进行下一次刷新,直至密钥刷新次数达到预设次数。所述密钥刷新次数由密钥预刷新控制状态机模块的第三计数器对密钥刷新使能计数得到。
需要说明的是,所述密钥处理模块的AES方向若配置为数据解密方向,则在将密钥寄存器中的密钥刷新到初始密钥之后,密钥处理模块根据密钥预刷新使能信号进行密钥预刷新,所述密钥预刷新指的是在数据解密之前先对密钥进行一轮正变换,将密钥寄存器中的密钥更新为最终密钥,否则无法实现所谓的密钥反变换。优选地,在密钥预刷新过程中,完成一轮完整的正变换后直接将密钥寄存器中的密钥更新为最终密钥,不需要对中间过程的密钥进行更新。当所述密钥处理模块的AES方向配置为数据加密方向时,不需要进行密钥预刷新。
在执行一轮密钥变换的过程中,仅当密钥刷新使能有效时,才对密钥进行刷新。若为加密方向,则用一次正变换之后的密钥来更新密钥寄存器;若为解密方向,则用一次密钥反变换之后的密钥来更新密钥寄存器。一次密钥变换之后,判断当前刷新次数是否达到预设次数(比如当密钥长度为128bit时,预设次数为10),若达到预设次数,说明一轮完整的数据加密或解密已进行完毕,一轮完整的密钥正变换或反变换也进行完毕,返回等待CPU配置初始密钥。若当前密钥刷新次数未达到预设次数,则等待数据加解密处理模块的密钥刷新使能到来。
与现有技术相比,本AES密钥处理方法在一轮密钥刷新过程中,只对当前密钥进行储存,从而节省大量的存储单元,使得密钥处理模块的面积大大缩小,有利于降低成本。
基于上述密钥处理方法,本发明实施例提供一种数据加解密处理方法,如图6所示,所述方法包括:
步骤S1,根据AES方向,数据加解密处理模块通过所述第一级加解密电路对待加解密数据进行第一轮的异或运算以及第二轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,所述AES方向包括包括数据加密方向和数据解密方向;所述第一轮和第二轮分别表示AES数据加解密轮数中的初始轮和中间轮。
作为其中一种实施方式,所述步骤S1的方法具体包括:
步骤S11,数据加解密处理模块接收到AES模块使能后,使得所述第一计数器开始输出当前子轮数,然后选择待加解密数据和当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1;其中,待加解密数据和当前密钥具有相同长度的数据位宽,且是第一预设位宽的整数倍。仍然以待加解密的数据为128bit,密钥长度也为128bit的AES数据加解密流程为例,由于本发明主要的运算模块采用32bit数据处理位宽,因此,需要将128bit的待加解密数据和当前密钥分成4次处理,即所述第一预设位宽为32bit。
参照图7,AES数据加密流水线设计,当密钥长度为128bit时,完成数据加密共需54个时钟周期t0-t53,包含11轮流水pipeline round0-pipeline round10,其中pipelineround0-pipeline round9每轮流水耗费5个时钟周期,pipeline round10耗费4个时钟周期。所述第一级加解密电路执行的是第一轮流水pipeline round0。
步骤S11对应的是t0时刻(此时当前子轮数为0,表示pipeline round0的第一子轮),将待加密数据的[31:0]bit与初始密钥的[31:0]进行异或运算,然后第一计数器计数一次,当前子轮数变为1。其中,初始密钥即KEY0,由CPU直接配置。
步骤S12,根据AES方向,数据加解密处理模块选择待加解密数据和当前密钥下一对应的第一预设位宽的位数进行异或运算,同时对上一步骤的异或运算结果进行S盒变换/逆S盒变换,随后当前子轮数加1。
参照图7,步骤S12对应的是t1时刻,将待加密数据的[63:32]bit与初始密钥的[63:32]进行异或运算,并对t0时刻的异或结果进行S盒变换,然后当前子轮数变为2。
步骤S13,以此类推,在当前子轮数达到预设次数时,数据加解密处理模块根据AES方向对上一步骤的异或运算结果进行S盒变换/逆S盒变换,同时对所有S盒变换/逆S盒变换后的结果进行行移位变换/逆行移位变换。
参照图7,t2时刻,将待加密数据的[95:64]bit与初始密钥的[95:64]进行异或运算,并对t1时刻的异或运算结果进行S盒变换,然后当前子轮数变为3;
t3时刻,将待加密数据的[127:96]bit与初始密钥的[127:96]进行异或运算,并对t2时刻的异或运算结果进行S盒变换,然后当前子轮数变为4;
t4时刻,对t3的异或运算结果进行S盒变换,同时对t1-t4时刻的S盒变换结果进行行移位变换。此时第一轮流水pipeline round0结束,所述第一计数器产生一次密钥刷新使能以刷新初始密钥KEY0为中间密钥KEY1,同时所述第二计数器对流水线轮数计数一次,进入第二轮流水pipeline round1,然后当前子轮数归零重计。pipeline round0结束之后,即t4时刻后,传统AES数据加密流程round0(待加密数据与初始密钥的异或运算)完成,以及round1中的S盒变换和行移位变换完成。
作为其中一种实施方式,所述步骤S13中,根据AES方向对所有S盒变换/逆S盒变换后的数据进行行移位变换/逆行移位变换之前还包括:数据加解密处理模块将每次S盒变换/逆S盒变换后的结果传输至所述第二寄存器中,在当前子轮数达到预设次数时,数据加解密处理模块将此时的S盒变换/逆S盒变换后的结果以及储存在所述所述第二寄存器中的结果一起传输至所述第三寄存器中进行合并,然后再把合并后的数据传输给所述行移位变换模块。
步骤S2,数据加解密处理模块通过所述第二级加解密电路对所述第一级加解密电路输出的数据进行第N-1轮的列混合变换/逆列混合变换和异或运算以及第N轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,N表示AES数据加解密轮数,N为正整数且大于2,N的最大值由密钥长度决定。
作为其中一种实施方式,所述步骤S2的方法具体包括:
步骤S21,根据流水线轮数、当前子轮数以及AES方向,数据加解密处理模块通过第四数据选择器选择行移位变换/逆行移位变换后的结果中对应的第一预设位宽的位数进行列混合变换/逆列混合变换,然后与当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1。
参照图7,步骤S21对应的是t5时刻(此时当前子轮数为0,表示pipeline round1的第一子轮),对t4时刻的行移位变换结果的[31:0]bit进行列混合变换,再与中间密钥KEY1的[31:0]进行异或运算,然后当前子轮数变为1。
步骤S22,数据加解密处理模块选择行移位变换/逆行移位变换后的结果中下一对应的第一预设位宽的位数进行列混合变换/逆列混合变换,然后与当前密钥下一对应的第一预设位宽的位数进行异或运算,同时对上一步骤的异或运算结果进行S盒变换/逆S盒变换,随后当前子轮数加1。
参照图7,步骤S22对应的是t6时刻,对t4时刻的行移位变换结果的[63:32]bit进行列混合变换,再与中间密钥KEY1的[63:32]进行异或运算,并对t5时刻的异或运算结果进行S盒变换,然后当前子轮数变为2。
步骤S23,以此类推,在当前子轮数达到预设次数时,数据加解密处理模块根据AES方向对上一步骤的异或运算结果进行S盒变换/逆S盒变换,同时对所有S盒变换/逆S盒变换后的结果进行行移位变换/逆行移位变换。
参照图7,t7时刻,对t4时刻的行移位变换结果的[95:64]bit进行列混合变换,再与中间密钥KEY1的[95:64]进行异或运算,并对t6时刻的异或运算结果进行S盒变换,然后当前子轮数变为3;
t8时刻,对t4时刻的行移位变换结果的[127:96]bit进行列混合变换,再与中间密钥KEY1的[127:96]的异或运算,并对t7时刻的异或运算结果进行S盒变换,然后当前子轮数变为4;
t9时刻,对t8时刻的异或运算结果进行S盒变换,对t6-t9时刻的S盒变换结果进行行移位变换。此时第二轮流水pipeline round1结束,所述第一计数器产生一次密钥刷新使能以刷新中间密钥KEY1为中间密钥KEY2,同时所述第二计数器对流水线轮数计数一次,进入第三轮流水pipeline round2,然后当前子轮数归零重计。pipeline round1结束之后,即t9时刻后,传统AES数据加密流程round1的列混合变换和异或运算完成,以及round2中的S盒变换和行移位变换完成。
步骤S24,待所述第一计数器产生密钥刷新使能,且所述第二计数器对流水线轮数计数后,数据加解密处理模块使得当前子轮数归零重计,然后重复执行步骤S21至步骤S24,直至完成第N轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,N取最大值。
参照图7,pipeline round2-9执行流程与pipeline round1相同,不再赘述。pipeline round9结束之后,即t49时刻后,传统AES加密流程中round9的列混合变换和异或运算完成,以及round10中的S盒变换和行移位变换完成。需要说明的是,t49时刻后,进入第11轮流水pipeline round10,此时的密钥刷新为最终密钥KEY10。
步骤S3,数据加解密处理模块通过所述第三级加解密电路对所述第二级加解密电路输出的数据进行异或运算,然后输出已加解密数据。
作为其中一种实施方式,所述步骤S3的方法具体包括:
步骤S31,根据当前子轮数,数据加解密处理模块通过第四数据选择器选择行移位变换/逆行移位变换后的结果和当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1。
参照图7,步骤S31对应的是t50时刻(此时当前子轮数为0,表示pipeline round10的第一子轮),将t49时刻的行移位变换结果的[31:0]bit与最终密钥KEY10的[31:0]进行异或运算,然后当前子轮数变为1。
步骤S32,以此类推,当数据加解密处理模块完成行移位变换/逆行移位变换后的结果和当前密钥所有位数的异或运算后,所述第一寄存器输出已加解密数据。
参照图7,t51时刻,将t49时刻的行移位变换结果的[63:32]bit与最终密钥KEY10的[63:32]进行异或运算;t52时刻,将t49时刻的行移位变换结果的[95:64]bit与最终密钥KEY10的[95:64]进行异或运算;t53时刻,将t49时刻的行移位变换结果的[127:96]bit与最终密钥KEY10的[127:96]进行异或运算。此时pipeline round10结束,即在t53时刻之后,加密流程完成,所述第一寄存器输出已加密数据。
需要说明的是,在流水线开始之前,如果AES方向为数据加密方向,则数据加解密处理模块接收初始密钥作为当前密钥,并在所述第一计数器产生密钥刷新使能后,接收刷新后的密钥作为当前密钥,直至初始密钥刷新到最终密钥。如果AES方向为数据解密方向,则数据加解密处理模块接收最终密钥作为当前密钥,并在所述第一计数器产生密钥刷新使能后,接收刷新后的密钥作为当前密钥,直至最终密钥刷新到初始密钥。
作为另一种实施例,参照图8,AES数据解密流水线设计,仍然以待加解密的数据为128bit,密钥长度也为128bit的AES数据加解密流程为例,完成解密共需54个时钟周期,包含11轮流水。AES数据解密流水线具体如下:
t0时刻将待解密数据的[31:0]bit与最终密钥KEY10的[31:0]进行异或运算;
t1时刻将待解密数据的[63:32]bit与最终密钥KEY10的[63:32]进行异或运算,并对t0时刻的异或运算结果进行逆S盒变换;
t2时刻将待解密数据的[95:64]bit与最终密钥KEY10的[95:64]进行异或运算,并对t1时刻的异或运算结果进行逆S盒变换;
t3时刻将待解密数据的[127:96]bit与最终密钥KEY10的[127:96]进行异或运算,并对t2时刻的异或运算结果进行逆S盒变换;
t4时刻对t3时刻的异或运算结果进行逆S盒变换,并对t1-t4时刻的逆S盒变换进行逆行移位变换。此时,第一轮流水pipeline round0结束,在t4时刻后,传统AES数据解密过程round0(待解密数据与最终密钥KEY10异或运算)完成,以及round1中逆S盒变换和逆行移位变换完成。
下面进入AES数据解密流水线的第二轮流水pipeline round1,其过程与上述AES数据加密流水线的过程类似,但是多了一个对当前密钥(除了最终密钥和初始密钥)进行逆列混合变换的步骤,如下:
t5时刻对t4时刻的逆行移位变换结果的[31:0]bit进行逆列混合变换,再将其与逆列混合变换后的KEY9[31:0]bit进行异或运算;
t6时刻对t4时刻的逆行移位变换结果的[63:32]bit进行逆列混合变换,再将其与逆列混合变换后的KEY9[63:32]bit进行异或运算,并对t5时刻的异或运算结果进行逆S盒变换;
t7时刻对t4时刻的逆行移位变换结果的[95:64]bit进行逆列混合变换,再将其与逆列混合变换后的KEY9[95:64]bit进行异或运算,并对t6时刻的异或运算结果进行逆S盒变换;
t8时刻对t4时刻的逆行移位变换结果的[127:96]bit进行逆列混合变换,再将其与逆列混合变换后的KEY9[127:96]bit进行异或运算,并对t7时刻的异或运算结果进行逆S盒变换;
t9时刻对t8时刻的异或结果进行逆S盒变换,对t6-t9时刻的逆S盒变换结果进行逆行移位变换。pipeline round1结束之后,即t9时刻后,传统AES数据解密过程round1中的逆列混合变换、异或运算完成,round2中的逆S盒变换、逆行移位变换完成。pipelineround2~pipeline round9执行流程与pipeline round1相同。pipeline round9结束之后,即t49时刻后,传统AES数据解密过程中round9中的逆列混合变换、异或运算完成,round10中的逆S盒变换、逆行移位变换完成。
t50时刻将t49时刻的逆行移位变换结果的[31:0]bit与初始密钥KEY0的[31:0]进行异或运算;
t51时刻将t49时刻的逆行移位变换结果的[63:32]bit与初始密钥KEY0的[63:32]进行异或运算;
t52时刻将t49时刻的逆行移位变换结果的[95:64]bit与初始密钥KEY0的[95:64]进行异或运算;
t53时刻将t49时刻的逆行移位变换结果的[127:96]bit与初始密钥KEY0的[127:96]进行异或运算。pipeline round 10结束之后,即t53时刻之后,解密流程完成,所述第一寄存器输出已解密数据。
与现有技术相比,本发明实施例所述的数据加解密处理方法通过流水线技术实现AES算法的轮内循环,即在当前轮的变换过程中,可以实现下一轮的部分变换,使得AES加解密流程耗费的时钟周期数较少,提高了数据加解密的效率。
另外,在本发明的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。这些程序可以存储于计算机可读取存储介质(比如ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质)中。该程序在执行时,执行包括上述各方法实施例的步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (27)

1.一种AES运算电路,其特征在于,所述运算电路包括:
总线接口模块,用于主机与从机之间的数据交互;
FIFO模块,与总线接口模块连接,用于数据缓存;
数据流控制模块,与FIFO模块和数据加解密处理模块连接,用于控制FIFO模块和数据加解密处理模块之间的数据交互;
数据加解密处理模块,与数据流控制模块连接,通过轮内流水线技术实现数据加解密;
密钥处理模块,与总线接口模块和数据加解密处理模块连接,用于为数据加解密处理模块提供当前密钥;
其中,密钥处理模块只对当前密钥进行储存。
2.根据权利要求1所述的一种AES运算电路,其特征在于,所述FIFO模块包括输入缓存FIFO模块和输出缓存FIFO模块;其中,
所述输入缓存FIFO模块用于缓存总线接口模块从主机传输而来的待加解密数据;
所述输出缓存FIFO模块用于缓存数据加解密处理模块传输而来的已加解密数据。
3.根据权利要求1所述的一种AES运算电路,其特征在于,所述数据加解密处理模块包括:
第一计数器,用于对数据加解密过程中的时钟周期个数进行计数并输出当前子轮数,每计数预设次数将当前子轮数归零重计;
第二计数器,与所述第一计数器连接,接收所述第一计数器输出的当前子轮数,用于根据当前子轮数对流水线轮数进行计数;
第一级加解密电路,与所述第二计数器连接,用于根据流水线轮数、当前子轮数和AES方向对待加解密数据进行第一轮的异或运算以及第二轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,所述AES方向包括数据加密方向和数据解密方向;所述第一轮和第二轮分别表示AES数据加解密轮数中的初始轮和中间轮;
第二级加解密电路,与所述第二计数器和所述第一级加解密电路连接,用于根据流水线轮数、当前子轮数和AES方向对所述第一级加解密电路输出的数据进行第N-1轮的列混合变换/逆列混合变换和异或运算以及第N轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,N表示AES数据加解密轮数,N为正整数且大于2,N的最大值由密钥长度决定;
第三级加解密电路,与所述第二计数器和所述第二级加解密电路连接,用于根据流水线轮数和当前子轮数对所述第二级加解密电路输出的数据进行异或运算,然后输出已加解密数据。
4.根据权利要求3所述的一种AES运算电路,其特征在于,所述第一计数器每接收一次AES模块使能则对时钟周期个数计数一次;每计数预设次数,所述第一计数器产生一次密钥刷新使能,然后将当前子轮数归零重计。
5.根据权利要求4所述的一种AES运算电路,其特征在于,所述第二计数器每接收预设次数的当前子轮数则对流水线轮数计数一次;当流水线轮数达到N的最大值且总的时钟周期个数达到预设值时,所述第二计数器产生一个已加解密数据有效标志信号。
6.根据权利要求5所述的一种AES运算电路,其特征在于,所述第一级加解密电路包括:
第一数据选择器,用于根据当前子轮数选择待加解密数据的对应位数以及当前密钥的对应位数,并输出至第一异或运算模块;
第一异或运算模块,与所述第一数据选择器连接,用于对待加解密数据的对应位数以及当前密钥的对应位数进行异或运算;
第二数据选择器,与所述第二计数器连接,用于根据流水线轮数选择对应轮数的异或运算结果输出至第一寄存器;
第一寄存器,与所述第二数据选择器连接,用于储存经所述第二数据选择器选择后的数据,若此时流水线轮数达到N的最大值且总的时钟周期个数达到预设值,则第一寄存器将接收到的数据输出为已加解密数据,否则第一寄存器将接收到的数据暂存直至被下一模块读取;
第三数据选择器,与所述第一寄存器连接,用于根据当前子轮数选择所述第一寄存器中的异或运算结果的对应位数,然后传输至S盒变换模块;
S盒变换模块,与所述第三数据选择器连接,用于根据AES方向对所述第三数据选择器输出的数据进行S盒变换/逆S盒变换;
数据合并模块,与所述S盒变换模块连接,用于对所述S盒变换模块输出的数据进行合并;
行移位变换模块,与所述数据合并模块连接,用于根据AES方向对合并后的数据进行行移位变换/逆行移位变换;
第四数据选择器,与所述行移位变换模块连接,用于根据当前子轮数选择所述行移位变换模块中的变换结果的对应位数并输出至下一级电路;
其中,所述第一异或运算模块和S盒变换模块的数据处理位宽为第一预设位宽,所述行移位变换模块的数据处理位宽为第二预设位宽,所述第二预设位宽为所述第一预设位宽的整数倍,所述第一寄存器的存储空间为第一预设值,所述第一预设值的大小与所述第二预设位宽的大小相等,所述对应位数的大小与所述第一预设位宽的大小相等。
7.根据权利要求6所述的一种AES运算电路,其特征在于,所述数据合并模块包括第二寄存器和第三寄存器,其中,
第二寄存器,与所述S盒变换模块连接,用于储存所述S盒变换模块输出的数据;
第三寄存器,分别与所述S盒变换模块和所述第二寄存器连接,用于在所述第一寄存器的存储空间不足时,接收所述S盒变换模块输出的数据,同时也接收所述第一寄存器中的数据,然后将所有数据进行合并;
其中,所述第二寄存器的存储空间为第二预设值,所述第三寄存器的存储空间为第一预设值,所述第二预设值小于所述第一预设值,所述第二预设值为所述第一预设位宽的整数倍。
8.根据权利要求6所述的一种AES运算电路,其特征在于,所述第二级加解密电路包括:
列混合变换模块,与所述第四数据选择器连接,用于根据AES方向对所述行移位变换模块中的变换结果的对应位数进行列混合变换/逆列混合变换;
第五数据选择器,用于根据当前子轮数选择当前密钥的对应位数;
密钥逆列混合变换模块,与所述第五数据选择器连接,用于在数据解密时对所述第五数据选择器输出的当前密钥的对应位数进行逆列混合变换;
第六数据选择器,与所述第五数据选择器和所述密钥逆列混合变换模块连接,用于根据AES方向选择所述第五数据选择器或所述密钥逆列混合变换模块输出的数据并传输给第二异或运算模块;
第二异或运算模块,与所述第六数据选择器和所述列混合变换模块连接,用于对所述列混合变换模块和所述第六数据选择器输出的数据进行异或运算;
所述第二级加解密电路还包括所述第二数据选择器、所述第一寄存器、所述第三数据选择器、所述S盒变换模块、所述数据合并模块、所述行移位变换模块以及所述第四数据选择器;
其中,所述列混合变换模块、密钥逆列混合变换模块和第二异或运算模块的数据处理位宽均为第一预设位宽。
9.根据权利要求8所述的一种AES运算电路,其特征在于,所述第三级加解密电路包括:
第七数据选择器,用于根据当前子轮数选择当前密钥的对应位数;
第三异或运算模块,与所述第七数据选择器和所述第四数据选择器连接,用于对所述行移位变换模块中的变换结果的对应位数与当前密钥的对应位数进行异或运算;
所述第三级加解密电路还包括所述第二数据选择器和所述第一寄存器;其中,所述第二数据选择器分别与所述第一异或运算模块、所述第二异或运算模块和所述第三异或运算模块连接;
其中,所述第三异或运算模块的数据处理位宽为第一预设位宽。
10.根据权利要求6-9任一项所述的一种AES运算电路,其特征在于,所述第一预设位宽的大小为32bit,所述第二预设位宽和第一预设值的大小为128bit,所述第二预设值的大小为96bit。
11.根据权利要求4所述的一种AES运算电路,其特征在于,所述密钥处理模块包括:
密钥预刷新控制状态机模块,用于产生密钥预刷新使能,以控制密钥变换模块进行密钥预刷新,并在密钥预刷新完成后输出密钥预刷新完成中断信号;
第一或门,与密钥预刷新控制状态机模块连接,对密钥预刷新使能和数据加解密处理模块产生的密钥刷新使能作或运算;
密钥变换模块,与第一或门连接,用于密钥刷新,以更新密钥寄存器中的密钥;
数据选择器,与密钥变换模块连接,根据数据选择信号选择相应的密钥传输给密钥寄存器;
密钥寄存器,与数据选择器连接,用于储存当前密钥。
12.根据权利要求11所述的一种AES运算电路,其特征在于,所述密钥变换模块包括密钥正变换模块和密钥反变换模块,其中,
密钥正变换模块,与第一或门连接,用于接收密钥预刷新使能或密钥刷新使能,在数据加密过程以及密钥预刷新过程中进行一轮密钥正变换;
密钥反变换模块,用于接收密钥刷新使能,以在数据解密过程中进行一轮密钥反变换。
13.根据权利要求12所述的一种AES运算电路,其特征在于,所述数据选择器包括第八数据选择器和第九数据选择器,其中,
第八数据选择器,与密钥正变换模块和密钥反变换模块连接,用于接收密钥正变换模块的输出和密钥反变换模块的输出,并根据AES方向,选择密钥正变换模块或密钥反变换模块的输出作为第九数据选择器的输入;
第九数据选择器,与第八数据选择器和总线接口模块连接,用于接收第八数据选择器的输出和总线接口模块的初始密钥,并根据初始密钥配置完成信号,选择第八选择器的输出或初始密钥作为密钥寄存器的输入;
其中,所述AES方向包括数据加密方向和数据解密方向。
14.根据权利要求11所述的一种AES运算电路,其特征在于,所述密钥处理模块还包括第二或门,与密钥预刷新控制状态机模块和总线接口模块连接,用于接收总线接口模块的初始密钥配置完成信号和密钥预刷新控制状态机模块输出的密钥预刷新完成中断信号,并对初始密钥配置完成信号和密钥预刷新完成中断信号作或运算,以生成密钥寄存器写使能来控制密钥寄存器的写入。
15.根据权利要求11所述的一种AES运算电路,其特征在于,所述密钥预刷新控制状态机模块包括状态机和第三计数器;所述状态机用于控制第三计数器对密钥预刷新使能的脉冲个数进行计数。
16.一种AES运算方法,其特征在于,该方法通过权利要求1至15任一项所述AES运算电路实现,所述方法包括:
数据加解密处理模块在获取待加解密数据后,根据AES方向,通过轮内流水线技术对待加解密数据进行加密或解密;其中,每经过一轮流水,数据加解密处理模块产生一次密钥刷新使能,使得密钥处理模块刷新密钥并传输给数据加解密处理模块进行加解密;其中,密钥处理模块只对当前密钥进行储存。
17.根据权利要求16所述的一种AES运算方法,其特征在于,所述轮内流水线技术具体包括:
步骤S1,根据AES方向,数据加解密处理模块通过所述第一级加解密电路对待加解密数据进行第一轮的异或运算以及第二轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,所述AES方向包括包括数据加密方向和数据解密方向;所述第一轮和第二轮分别表示AES数据加解密轮数中的初始轮和中间轮;
步骤S2,数据加解密处理模块通过所述第二级加解密电路对所述第一级加解密电路输出的数据进行第N-1轮的列混合变换/逆列混合变换和异或运算以及第N轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,N表示AES数据加解密轮数,N为正整数且大于2,N的最大值由密钥长度决定;
步骤S3,数据加解密处理模块通过所述第三级加解密电路对所述第二级加解密电路输出的数据进行异或运算,然后输出已加解密数据。
18.根据权利要求17所述的一种AES运算方法,其特征在于,所述步骤S1的方法具体包括:
步骤S11,数据加解密处理模块接收到AES模块使能后,使得所述第一计数器开始输出当前子轮数,然后选择待加解密数据和当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1;其中,待加解密数据和当前密钥具有相同长度的数据位宽,且是第一预设位宽的整数倍;
步骤S12,根据AES方向,数据加解密处理模块选择待加解密数据和当前密钥下一对应的第一预设位宽的位数进行异或运算,同时对上一步骤的异或运算结果进行S盒变换/逆S盒变换,随后当前子轮数加1;
步骤S13,以此类推,在当前子轮数达到预设次数时,数据加解密处理模块根据AES方向对上一步骤的异或运算结果进行S盒变换/逆S盒变换,同时对所有S盒变换/逆S盒变换后的结果进行行移位变换/逆行移位变换。
19.根据权利要求18所述的一种AES运算方法,其特征在于,所述步骤S13中,根据AES方向对所有S盒变换/逆S盒变换后的数据进行行移位变换/逆行移位变换之前还包括:
数据加解密处理模块将每次S盒变换/逆S盒变换后的结果传输至所述第二寄存器中,在当前子轮数达到预设次数时,数据加解密处理模块将此时的S盒变换/逆S盒变换后的结果以及储存在所述所述第二寄存器中的结果一起传输至所述第三寄存器中进行合并,然后再把合并后的数据传输给所述行移位变换模块。
20.根据权利要求19所述的一种AES运算方法,其特征在于,在当前子轮数达到预设次数时,所述第一计数器产生一次密钥刷新使能并传输给密钥处理模块,同时也使得所述第二计数器对流水线轮数计数一次,然后当前子轮数归零重计。
21.根据权利要求20所述的一种AES运算方法,其特征在于,所述步骤S2的方法具体包括:
步骤S21,根据流水线轮数、当前子轮数以及AES方向,数据加解密处理模块通过第四数据选择器选择行移位变换/逆行移位变换后的结果中对应的第一预设位宽的位数进行列混合变换/逆列混合变换,然后与当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1;
步骤S22,数据加解密处理模块选择行移位变换/逆行移位变换后的结果中下一对应的第一预设位宽的位数进行列混合变换/逆列混合变换,然后与当前密钥下一对应的第一预设位宽的位数进行异或运算,同时对上一步骤的异或运算结果进行S盒变换/逆S盒变换,随后当前子轮数加1;
步骤S23,以此类推,在当前子轮数达到预设次数时,数据加解密处理模块根据AES方向对上一步骤的异或运算结果进行S盒变换/逆S盒变换,同时对所有S盒变换/逆S盒变换后的结果进行行移位变换/逆行移位变换;
步骤S24,待所述第一计数器产生密钥刷新使能,且所述第二计数器对流水线轮数计数后,数据加解密处理模块使得当前子轮数归零重计,然后重复执行步骤S21至步骤S24,直至完成第N轮的S盒变换/逆S盒变换和行移位变换/逆行移位变换;其中,N取最大值。
22.根据权利要求21所述的一种AES运算方法,其特征在于,在执行步骤S2的过程中,如果AES方向为数据解密方向,则在进行异或运算之前,先对当前密钥对应的第一预设位宽的位数进行逆列混合变换。
23.根据权利要求21所述的一种AES运算方法,其特征在于,所述步骤S3的方法具体包括:
步骤S31,根据当前子轮数,数据加解密处理模块通过第四数据选择器选择行移位变换/逆行移位变换后的结果和当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1;
步骤S32,以此类推,当数据加解密处理模块完成行移位变换/逆行移位变换后的结果和当前密钥所有位数的异或运算后,所述第一寄存器输出已加解密数据。
24.根据权利要求18、20、21或23所述的一种AES运算方法,其特征在于,如果AES方向为数据加密方向,则数据加解密处理模块接收初始密钥作为当前密钥,并在所述第一计数器产生密钥刷新使能后,接收刷新后的密钥作为当前密钥,直至初始密钥刷新到最终密钥;如果AES方向为数据解密方向,则数据加解密处理模块接收最终密钥作为当前密钥,并在所述第一计数器产生密钥刷新使能后,接收刷新后的密钥作为当前密钥,直至最终密钥刷新到初始密钥。
25.根据权利要求24所述的一种AES运算方法,其特征在于,如果AES方向为数据加密方向,则密钥处理模块对密钥进行一轮密钥正变换,所述密钥正变换指的是将密钥寄存器中的初始密钥依次刷新到最终密钥;如果AES方向为数据解密方向,则密钥处理模块对密钥进行一轮密钥反变换,所述密钥反变换指的是将密钥寄存器中的最终密钥依次刷新到初始密钥。
26.根据权利要求25所述的一种AES运算方法,其特征在于,在数据加密或解密过程开始之前,密钥处理模块根据AES模块使能和初始密钥配置完成信号,将密钥寄存器中的密钥更新为初始密钥。
27.根据权利要求26所述的一种AES运算方法,其特征在于,如果AES方向为数据解密方向,则在将密钥寄存器中的密钥刷新到初始密钥之后,密钥处理模块根据密钥预刷新使能进行密钥预刷新;所述密钥预刷新是指在数据解密过程之前先对密钥寄存器中的密钥进行一轮正变换,将密钥寄存器中的密钥更新为最终密钥。
CN202111149845.3A 2021-09-29 2021-09-29 一种aes运算电路及方法 Pending CN115883059A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111149845.3A CN115883059A (zh) 2021-09-29 2021-09-29 一种aes运算电路及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111149845.3A CN115883059A (zh) 2021-09-29 2021-09-29 一种aes运算电路及方法

Publications (1)

Publication Number Publication Date
CN115883059A true CN115883059A (zh) 2023-03-31

Family

ID=85756017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111149845.3A Pending CN115883059A (zh) 2021-09-29 2021-09-29 一种aes运算电路及方法

Country Status (1)

Country Link
CN (1) CN115883059A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116436709A (zh) * 2023-06-14 2023-07-14 浪潮电子信息产业股份有限公司 一种数据的加解密方法、装置、设备和介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116436709A (zh) * 2023-06-14 2023-07-14 浪潮电子信息产业股份有限公司 一种数据的加解密方法、装置、设备和介质
CN116436709B (zh) * 2023-06-14 2023-08-29 浪潮电子信息产业股份有限公司 一种数据的加解密方法、装置、设备和介质

Similar Documents

Publication Publication Date Title
CN110321162B (zh) 基于粗粒度可重构计算单元的present加密算法实现方法及系统
US7606365B2 (en) Encryption/decryption system and key scheduler with variable key length
CN101350714B (zh) 采用混合rijndael s-box的有效高级加密标准数据路径
CN106506142B (zh) 一种低复杂度的aes一体化加解密器实现方法
CN110059493B (zh) 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及系统
US20090168999A1 (en) Method and apparatus for performing cryptographic operations
CN103812641A (zh) 一种实现sm4分组对称密码算法的系统
KR20050053379A (ko) AES Rijndael(라인달) 알고리즘을 빠르게구현하는 암호/복호 장치 및 그 방법
CN101702709A (zh) 一种适用于mips处理器的aes加密单元
CN113078996B (zh) Sm4密码算法的fpga优化实现方法、系统及应用
US10237066B1 (en) Multi-channel encryption and authentication
CN115883059A (zh) 一种aes运算电路及方法
CN103746796A (zh) 一种实现智能卡sm4密码算法的协处理器
CN115883058A (zh) 一种aes数据加解密处理电路及方法
JPH10333569A (ja) 暗号処理装置、icカード及び暗号処理方法
CN105049203B (zh) 一种支持多工作模式的可配置3des加解密算法电路
CN102857334B (zh) 一种实现aes加解密的方法及装置
US20100027781A1 (en) Method and apparatus for enhancing performance of data encryption standard (des) encryption/decryption
CN109039608B (zh) 一种基于双S核的8-bitAES电路
CN102780557B (zh) 一种选择门优化的aes加解密方法及装置
Rachh et al. Efficient implementations of S-box and inverse S-box for AES algorithm
KR100425956B1 (ko) 동작 진행 중 라운드 키 계산 방식을 이용한 seed 암호 및 복호 회로
CN212115336U (zh) Sm4/aes双模加密电路
JP4761652B2 (ja) データ暗号化回路
CN115883060A (zh) 一种aes密钥处理电路及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination