一种AES数据加解密处理电路及方法与流程

文档序号:33699179发布日期:2023-03-31 17:39阅读:86来源:国知局
技术简介:
本发明针对传统AES加解密流程时钟周期多、电路面积大的问题,提出采用流水线技术实现轮内循环,将多轮运算重叠执行,减少时钟周期数;同时使用32bit处理模块替代传统64bit结构,显著缩小电路面积,提升效率并降低成本。
关键词:AES加解密流水线,32bit模块优化
一种aes数据加解密处理电路及方法
技术领域
1.本发明涉及数据加解密领域,具体涉及一种aes数据加解密处理电路及方法。


背景技术:

2.aes高级加密标准(advanced encryption standard,aes)作为一种加密方法,广泛应用于通用mcu中,特别是主打性价比的mcu,需要在保证电路可工作于规格要求的工作频率的前提条件下,尽可能缩小各个模块的面积,来控制mcu的成本价格,提高市场竞争力。
3.作为一种迭代加密算法,aes根据密钥的长度需要不同次数的轮变换。以待加解密的数据为128bit,密钥长度也为128bit的aes加解密流程为例,加密过程和解密过程都需要11轮数据处理(round0~round10),其中,round0称为初始轮(或第一轮),round1~round9均称为中间轮,round10称为最终轮。除第一轮外,每一轮都是接收上一轮处理过后的数据进行运算。传统的aes严格按照轮变换的顺序依次执行,无法做到轮内运算的切割,这样使得加解密流程需要耗费很多的时钟周期数。


技术实现要素:

4.为解决上述问题,本发明提供了一种aes数据加解密处理电路及方法,使得aes加解密流程耗费的时钟周期数较少,且大大缩小了电路面积,有利于成本控制。本发明的具体技术方案如下:一种aes数据加解密处理电路,所述电路包括:第一计数器,用于对数据加解密过程中的时钟周期个数进行计数并输出当前子轮数,每计数预设次数将当前子轮数归零重计;第二计数器,与所述第一计数器连接,接收所述第一计数器输出的当前子轮数,用于根据当前子轮数对流水线轮数进行计数;第一级加解密电路,与所述第二计数器连接,用于根据流水线轮数、当前子轮数和aes方向对待加解密数据进行第一轮的异或运算以及第二轮的s盒变换/逆s盒变换和行移位变换/逆行移位变换;其中,所述aes方向包括数据加密方向和数据解密方向;所述第一轮和第二轮分别表示aes数据加解密轮数中的初始轮和中间轮;第二级加解密电路,与所述第二计数器和所述第一级加解密电路连接,用于根据流水线轮数、当前子轮数和aes方向对所述第一级加解密电路输出的数据进行第n-1轮的列混合变换/逆列混合变换和异或运算以及第n轮的s盒变换/逆s盒变换和行移位变换/逆行移位变换;其中,n表示aes数据加解密轮数,n为正整数且大于2,n的最大值由密钥长度决定;第三级加解密电路,与所述第二计数器和所述第二级加解密电路连接,用于根据流水线轮数和当前子轮数对所述第二级加解密电路输出的数据进行异或运算,然后输出已加解密数据。与现有技术相比,本技术方案通过流水线技术实现aes算法的轮内循环,即在当前轮的变换过程中,可以实现下一轮的部分变换,使得aes加解密流程耗费的时钟周期数较少,提高了数据加解密的效率。
5.进一步地,所述第一计数器每接收一次aes模块使能则对时钟周期个数计数一次;每计数预设次数,所述第一计数器产生一次密钥刷新使能,然后将当前子轮数归零重计。在
计数预设次数后,当前密钥所有位数已完成变换,产生密钥刷新使能即可刷新当前密钥,同时,当前子轮数归零重计可使得相应模块正确选择刷新后的当前密钥的对应位数。
6.进一步地,所述第二计数器每接收预设次数的当前子轮数则对流水线轮数计数一次;当流水线轮数达到n的最大值且总的时钟周期个数达到预设值时,所述第二计数器产生一个已加解密数据有效标志信号。
7.进一步地,所述第一级加解密电路包括:第一数据选择器,用于根据当前子轮数选择待加解密数据的对应位数以及当前密钥的对应位数,并输出至第一异或运算模块;第一异或运算模块,与所述第一数据选择器连接,用于对待加解密数据的对应位数以及当前密钥的对应位数进行异或运算;第二数据选择器,与所述第二计数器连接,用于根据流水线轮数选择对应轮数的异或运算结果输出至第一寄存器;第一寄存器,与所述第二数据选择器连接,用于储存经所述第二数据选择器选择后的数据,若此时流水线轮数达到n的最大值且总的时钟周期个数达到预设值,则第一寄存器将接收到的数据输出为已加解密数据,否则第一寄存器将接收到的数据暂存直至被下一模块读取;第三数据选择器,与所述第一寄存器连接,用于根据当前子轮数选择所述第一寄存器中的异或运算结果的对应位数,然后传输至s盒变换模块;s盒变换模块,与所述第三数据选择器连接,用于根据aes方向对所述第三数据选择器输出的数据进行s盒变换/逆s盒变换;数据合并模块,与所述s盒变换模块连接,用于对所述s盒变换模块输出的数据进行合并;行移位变换模块,与所述数据合并模块连接,用于根据aes方向对合并后的数据进行行移位变换/逆行移位变换;第四数据选择器,与所述行移位变换模块连接,用于根据当前子轮数选择所述行移位变换模块中的变换结果的对应位数并输出至下一级电路;其中,所述第一异或运算模块和s盒变换模块的数据处理位宽为第一预设位宽,所述行移位变换模块的数据处理位宽为第二预设位宽,所述第二预设位宽为所述第一预设位宽的整数倍,所述第一寄存器的存储空间为第一预设值,所述第一预设值的大小与所述第二预设位宽的大小相等,所述对应位数的大小与所述第一预设位宽的大小相等。该技术方案可以在一轮流水中实现待加解密数据的异或运算、s盒变换/逆s盒变换以及行移位变换/逆行移位变换,实现了aes算法的轮内循环,减少了aes加解密流程耗费的时钟周期数。
8.进一步地,所述数据合并模块包括第二寄存器和第三寄存器,其中,第二寄存器,与所述s盒变换模块连接,用于储存所述s盒变换模块输出的数据;第三寄存器,分别与所述s盒变换模块和所述第二寄存器连接,用于在所述第一寄存器的存储空间不足时,接收所述s盒变换模块输出的数据,同时也接收所述第一寄存器中的数据,然后将所有数据进行合并;其中,所述第二寄存器的存储空间为第二预设值,所述第三寄存器的存储空间为第一预设值,所述第二预设值小于所述第一预设值,所述第二预设值为所述第一预设位宽的整数倍。该技术方案将s盒变换/逆s盒变换后的数据进行合并,使得行移位变换模块可以一次性完成数据的行移位变换/逆行移位变换,减少了aes加解密流程耗费的时钟周期数。
9.进一步地,所述第二级加解密电路包括:列混合变换模块,与所述第四数据选择器连接,用于根据aes方向对所述行移位变换模块中的变换结果的对应位数进行列混合变换/逆列混合变换;第五数据选择器,用于根据当前子轮数选择当前密钥的对应位数;密钥逆列混合变换模块,与所述第五数据选择器连接,用于在数据解密时对所述第五数据选择器输出的当前密钥的对应位数进行逆列混合变换;第六数据选择器,与所述第五数据选择器和
所述密钥逆列混合变换模块连接,用于根据aes方向选择所述第五数据选择器或所述密钥逆列混合变换模块输出的数据并传输给第二异或运算模块;第二异或运算模块,与所述第六数据选择器和所述列混合变换模块连接,用于对所述列混合变换模块和所述第六数据选择器输出的数据进行异或运算;所述第二级加解密电路还包括所述第二数据选择器、所述第一寄存器、所述第三数据选择器、所述s盒变换模块、所述数据合并模块、所述行移位变换模块以及所述第四数据选择器;其中,所述列混合变换模块、密钥逆列混合变换模块和第二异或运算模块的数据处理位宽均为第一预设位宽。该技术方案可以在一轮流水中实现待加解密数据的列混合变换/逆列混合变换、异或运算、s盒变换/逆s盒变换以及行移位变换/逆行移位变换,实现了aes算法的轮内循环,减少了aes加解密流程耗费的时钟周期数。
10.进一步地,所述第三级加解密电路包括:第七数据选择器,用于根据当前子轮数选择当前密钥的对应位数;第三异或运算模块,与所述第七数据选择器和所述第四数据选择器连接,用于对所述行移位变换模块中的变换结果的对应位数与当前密钥的对应位数进行异或运算;所述第三级加解密电路还包括所述第二数据选择器和所述第一寄存器;其中,所述第二数据选择器分别与所述第一异或运算模块、所述第二异或运算模块和所述第三异或运算模块连接;其中,所述第三异或运算模块的数据处理位宽为第一预设位宽。由于前一级电路已经将s盒变换/逆s盒变换以及行移位变换/逆行移位变换全部完成,该技术方案只需实现异或操作,减少了aes加解密流程耗费的时钟周期数。
11.进一步地,所述第一预设位宽的大小为32bit,所述第二预设位宽和第一预设值的大小为128bit,所述第二预设值的大小为96bit。该技术方案采用32bit而非64bit(需由两个32bit组成)数据处理位宽的异或运算模块、s盒变换模块以及列混合变换模块,使得aes数据加解密处理电路的面积大大缩小,有利于控制成本,提高市场竞争力。
12.一种aes数据加解密处理方法,所述方法通过所述aes数据加解密处理电路实现,所述方法包括:步骤s1,根据aes方向,aes数据加解密处理电路通过所述第一级加解密电路对待加解密数据进行第一轮的异或运算以及第二轮的s盒变换/逆s盒变换和行移位变换/逆行移位变换;其中,所述aes方向包括包括数据加密方向和数据解密方向;所述第一轮和第二轮分别表示aes数据加解密轮数中的初始轮和中间轮;步骤s2,aes数据加解密处理电路通过所述第二级加解密电路对所述第一级加解密电路输出的数据进行第n-1轮的列混合变换/逆列混合变换和异或运算以及第n轮的s盒变换/逆s盒变换和行移位变换/逆行移位变换;其中,n表示aes数据加解密轮数,n为正整数且大于2,n的最大值由密钥长度决定;步骤s3,aes数据加解密处理电路通过所述第三级加解密电路对所述第二级加解密电路输出的数据进行异或运算,然后输出已加解密数据。与现有技术相比,本技术方案通过流水线技术实现aes算法的轮内循环,即在当前轮的变换过程中,可以实现下一轮的部分变换,使得aes加解密流程耗费的时钟周期数较少,提高了数据加解密的效率。
13.进一步地,所述步骤s1的方法具体包括:步骤s11,aes数据加解密处理电路接收到aes模块使能后,使得所述第一计数器开始输出当前子轮数,然后选择待加解密数据和当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1;其中,待加解密数据和当前密钥具有相同长度的数据位宽,且是第一预设位宽的整数倍;步骤s12,根据aes方向,aes数据加解密处理电路选择待加解密数据和当前密钥下一对应的第一预设位宽的位数进行异或运算,同时对上一步骤的异或运算结果进行s盒变换/逆s盒变换,随后当前子轮
数加1;步骤s13,以此类推,在当前子轮数达到预设次数时,aes数据加解密处理电路根据aes方向对上一步骤的异或运算结果进行s盒变换/逆s盒变换,同时对所有s盒变换/逆s盒变换后的结果进行行移位变换/逆行移位变换。该技术方案可以在一轮流水中实现待加解密数据的异或运算、s盒变换/逆s盒变换以及行移位变换/逆行移位变换,实现了aes算法的轮内循环,减少了aes加解密流程耗费的时钟周期数。
14.进一步地,所述步骤s13中,根据aes方向对所有s盒变换/逆s盒变换后的数据进行行移位变换/逆行移位变换之前还包括:aes数据加解密处理电路将每次s盒变换/逆s盒变换后的结果传输至所述第二寄存器中,在当前子轮数达到预设次数时,aes数据加解密处理电路将此时的s盒变换/逆s盒变换后的结果以及储存在所述所述第二寄存器中的结果一起传输至所述第三寄存器中进行合并,然后再把合并后的数据传输给所述行移位变换模块。该技术方案将s盒变换/逆s盒变换后的数据进行合并,使得行移位变换模块可以一次性完成数据的行移位变换/逆行移位变换,减少了aes加解密流程耗费的时钟周期数。
15.进一步地,在当前子轮数达到预设次数时,所述第一计数器产生一次密钥刷新使能,同时也使得所述第二计数器对流水线轮数计数一次,然后当前子轮数归零重计。在计数预设次数后,当前密钥所有位数已完成变换,产生密钥刷新使能即可刷新当前密钥,同时,当前子轮数归零重计可使得相应模块正确选择刷新后的当前密钥的对应位数。
16.进一步地,所述步骤s2的方法具体包括:步骤s21,根据流水线轮数、当前子轮数以及aes方向,aes数据加解密处理电路通过第四数据选择器选择行移位变换/逆行移位变换后的结果中对应的第一预设位宽的位数进行列混合变换/逆列混合变换,然后与当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1;步骤s22,aes数据加解密处理电路选择行移位变换/逆行移位变换后的结果中下一对应的第一预设位宽的位数进行列混合变换/逆列混合变换,然后与当前密钥下一对应的第一预设位宽的位数进行异或运算,同时对上一步骤的异或运算结果进行s盒变换/逆s盒变换,随后当前子轮数加1;步骤s23,以此类推,在当前子轮数达到预设次数时,aes数据加解密处理电路根据aes方向对上一步骤的异或运算结果进行s盒变换/逆s盒变换,同时对所有s盒变换/逆s盒变换后的结果进行行移位变换/逆行移位变换;步骤s24,待所述第一计数器产生密钥刷新使能,且所述第二计数器对流水线轮数计数后,aes数据加解密处理电路使得当前子轮数归零重计,然后重复执行步骤s21至步骤s24,直至完成第n轮的s盒变换/逆s盒变换和行移位变换/逆行移位变换;其中,n取最大值。该技术方案可以在一轮流水中实现待加解密数据的列混合变换/逆列混合变换、异或运算、s盒变换/逆s盒变换以及行移位变换/逆行移位变换,实现了aes算法的轮内循环,减少了aes加解密流程耗费的时钟周期数。
17.进一步地,在执行步骤s2的过程中,如果aes方向为数据解密方向,则在进行异或运算之前,先对当前密钥对应的第一预设位宽的位数进行逆列混合变换。
18.进一步地,所述步骤s3的方法具体包括:步骤s31,根据当前子轮数,aes数据加解密处理电路通过第四数据选择器选择行移位变换/逆行移位变换后的结果和当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1;步骤s32,以此类推,当aes数据加解密处理电路完成行移位变换/逆行移位变换后的结果和当前密钥所有位数的异或运算后,所述第一寄存器输出已加解密数据。由于前一级电路已经将s盒变换/逆s盒变换以及行移位变换/逆行移位变换全部完成,该技术方案只需实现异或操作,减少了aes加解密流程
耗费的时钟周期数。
19.进一步地,如果aes方向为数据加密方向,则aes数据加解密处理电路接收初始密钥作为当前密钥,并在所述第一计数器产生密钥刷新使能后,接收刷新后的密钥作为当前密钥,直至初始密钥刷新到最终密钥;如果aes方向为数据解密方向,则aes数据加解密处理电路接收最终密钥作为当前密钥,并在所述第一计数器产生密钥刷新使能后,接收刷新后的密钥作为当前密钥,直至最终密钥刷新到初始密钥。
附图说明
20.图1为现有技术中aes数据加解密流程示意图。
21.图2为本发明一种实施例所述aes数据加解密处理电路。
22.图3为aes高级加密标准电路示意图。
23.图4为本发明一种实施例所述aes数据加解密处理方法流程图。
24.图5为本发明一种实施例所述aes数据加密流水线设计。
25.图6为本发明另一种实施例所述aes数据解密流水线设计。
具体实施方式
26.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细描述。为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。
27.除非另作定义,本发明所涉及的技术术语或科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一种”、“该”等词语并不表示数量限制,可以表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含,如:包含了一系列步骤或模块的过程、方法、系统产品或者设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或模块,或者还可以包括对于这些过程、方法、产品或设备固有的其他步骤或单元。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是用于区别类似的对应,不代表针对对象的特定排序。
28.现有技术中,aes数据加解密的流程如图1所示。以待加解密的数据为128bit,密钥长度也为128bit的aes数据加解密流程为例,加密过程(图1左侧部分从plain text到cipher text过程)和解密过程(图1右侧部分从cipher text到plain text过程)都需要11轮数据处理(round0~round10)。
29.加密过程中,round0称为初始轮(或第一轮),进行的操作是输入的待加密数据与初始密钥key0的异或运算;round1~round9均称为中间轮,共有9轮中间轮,每轮中间轮均对上一轮处理过后的数据进行执行4项操作:sbox变换(s盒变换)、shift rows变换(行移位变换)、mix columns变换(列混合变换)、分别与中间密钥key1~key9进行异或运算;round10称为最终轮,对round9处理过后的数据进行sbox变换、shift rows变换和与最终密钥key10进行异或运算。round10结束后,数据加密流程结束。
30.解密过程中,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结束后,数据解密流程结束。
31.图1所示的现有的aes数据加解密严格按照轮变换的顺序依次执行,无法做到轮内运算的切割,这样使得加解密流程需要耗费很多的时钟周期数,效率较低;且,现有的aes数据加解密电路采用的是较大数据处理位宽的模块,导致电路面积较大,提高了成本。
32.为了克服上述技术缺陷,本发明实施例提供了一种aes数据加解密处理电路。如图2所示,该电路中包含多个由外部模块输入的信号,如待加解密数据、当前密钥、aes模块使能和aes方向。为帮助理解本发明,下文先对aes高级加密标准电路进行简单的介绍。
33.参照图3,aes高级加密标准电路包括总线接口模块、输入缓冲fifo模块、输出缓冲fifo模块、数据流控制模块、数据加解密变换模块和密钥处理模块。其中,总线接口模块接收待加解密的数据,通过输入缓冲fifo模块和数据流控制模块,给到数据加解密变换模块进行加密或解密。数据加解密变换模块所需要的当前密钥则是密钥处理模块根据密钥刷新使能刷新而来的。至于aes模块使能和aes方向则是cpu配置的,无需赘述。
34.本发明实施例即是对数据加解密变换模块的改进,所述aes数据加解密处理电路包括:第一计数器、第二计数器、第一级加解密电路、第二级加解密电路和第三级加解密电路。
35.如图2所示,第一计数器,用于对数据加解密过程中的时钟周期个数进行计数并输出当前子轮数,每计数预设次数将当前子轮数归零重计。需要说明的是,所述第一计数器每接收一次cpu配置而来的aes模块使能则对时钟周期个数计数一次,且在计数预设次数后,产生一次密钥刷新使能输出至图3所示的密钥处理模块中,使密钥处理模块刷新当前密钥,然后当前子轮数归零重计。其中,当前子轮数用于表示电路在当前流水线轮数下处于第几时刻,使得以当前子轮数作为选通信号的数据选择器可以正确选择该时刻下,当前密钥和/或待加解密数据对应的位数进行输出。在所述第一计数器计数预设次数后,由于当前密钥的所有位数均已参与运算,因此将当前子轮数归零,这样才能在当前密钥刷新后重新发挥作用。
36.如图2所示,第二计数器,与所述第一计数器连接,接收所述第一计数器输出的当前子轮数,用于根据当前子轮数对流水线轮数进行计数。需要说明的是,所述第二计数器每接收预设次数的当前子轮数则对流水线轮数计数一次。其中,流水线轮数的含义与传统aes数据加解密轮数的含义有所区别,例如,传统aes数据加解密轮数的第一轮只进行异或运算,而本发明的第一轮流水不仅会进行传统aes数据加解密轮数的第一轮,还会实现传统aes数据加解密轮数第二轮的s盒变换/逆s盒变换和行移位变换/逆行移位变换。即,每一轮流水(除最后一轮)都会涉及到传统aes数据加解密方法中两轮的运算。所述当前子轮数即是对一轮流水的细分,本发明对一轮流水中的每个时钟周期都规划了相应的数据加解密操作。另外,当流水线轮数达到n的最大值且总的时钟周期个数达到预设值时,所述第二计数器产生一个已加解密数据有效标志信号并传输给图3所示的数据流控制模块,使得已加解密数据可以通过数据流控制模块传输出去。
37.作为一种较优的实施方式,本发明采用32bit处理位宽的异或运算模块、s盒变换模块和列混合变换模块。相比于传统aes数据加解密电路,本发明无需使用2个32bit处理位
宽的模块组成64bit处理位宽的模块,大大缩小了电路面积,有利于控制成本,提高市场竞争力。
38.如图2所示,第一级加解密电路,与所述第二计数器连接,用于根据流水线轮数、当前子轮数和aes方向对待加解密数据进行第一轮的异或运算以及第二轮的s盒变换/逆s盒变换和行移位变换/逆行移位变换;其中,所述aes方向包括包括数据加密方向和数据解密方向;所述第一轮和第二轮分别表示aes数据加解密轮数中的初始轮和中间轮。需要说明的是,所述第一级加解密电路用于实现第一轮流水,如果cpu配置的是数据加密方向,则可以用于实现数据加密,如果cpu配置的是数据解密方向,则可以用于实现数据解密。
39.所述第一级加解密电路包括:第一数据选择器,用于根据当前子轮数选择待加解密数据的对应位数以及当前密钥的对应位数,并输出至第一异或运算模块。仍然以待加解密的数据为128bit,密钥长度也为128bit的aes数据加解密流程为例,由于本发明主要的运算模块采用32bit数据处理位宽,因此,需要将128bit的待加解密数据和当前密钥分成4次处理。前述当前子轮数即是用来选择待加解密数据和当前密钥的对应位数进行操作,具体的:当前子轮数为0时(即第一子轮),所述第一数据选择器选择待加解密数据和当前密钥的[31:0]bit进行异或运算;当前子轮数为1时,选择待加解密数据和当前密钥的[63:32]bit进行异或运算;当前子轮数为2时,选择待加解密数据和当前密钥的[95:64]bit进行异或运算;当前子轮数为3时,选择待加解密数据和当前密钥的[127:96]bit进行异或运算。
[0040]
第一异或运算模块,与所述第一数据选择器连接,用于对待加解密数据的对应位数以及当前密钥的对应位数进行异或运算。
[0041]
第二数据选择器,与所述第二计数器连接,用于根据流水线轮数选择对应轮数的异或运算结果输出至第一寄存器。如果选通信号是第一轮流水,则选择所述第一异或运算模块的结果。
[0042]
第一寄存器,与所述第二数据选择器连接,用于储存经所述第二数据选择器选择后的数据。需要说明的是,如果此时流水线轮数达到n的最大值且总的时钟周期个数达到预设值,说明数据加解密已经完成,那么第一寄存器将接收到的数据输出为已加解密数据,否则第一寄存器将接收到的数据暂存直至被下一模块读取,其中,第一寄存器的存储容量为128bit,与待加解密数据的长度一致。
[0043]
第三数据选择器,与所述第一寄存器连接,用于根据当前子轮数选择所述第一寄存器中的异或运算结果的对应位数,然后传输至s盒变换模块。具体的,当前子轮数为1(第二子轮)时,待加解密数据和当前密钥的[63:32]bit正在进行异或运算,而第一寄存器中已经储存着待加解密数据和当前密钥的[31:0]bit的异或运算结果。所以,当前子轮数为1时,将当前子轮数为0时的[31:0]bit的异或运算结果传输给s盒变换模块执行计算。以此类推,在当前子轮的异或运算过程中,同时进行上一子轮的s盒变换/逆s盒变换。
[0044]
s盒变换模块,与所述第三数据选择器连接,用于根据aes方向对所述第三数据选择器输出的数据进行s盒变换/逆s盒变换。如果aes方向为数据加密方向,则执行s盒变换,如果aes方向为数据解密方向,则执行逆s盒变换。
[0045]
数据合并模块,与所述s盒变换模块连接,用于对所述s盒变换模块输出的数据进行合并。所述数据合并模块包括第二寄存器和第三寄存器,第二寄存器的存储空间小于第
三存储器。其中,第二寄存器为96bit,与所述s盒变换模块连接,用于储存所述s盒变换模块输出的前96bit的数据。第三寄存器为128bit,分别与所述s盒变换模块和所述第二寄存器连接,用于接收所述s盒变换模块输出的后32bit的数据,同时也接收所述第一寄存器中的数据,然后将所有数据合并成完整的128bit。需要注意的是,所述数据合并操作并不单独占用任一时钟周期,在s盒变换模块完成数据的计算后,s盒变换模块会实时将数据传输到数据合并模块中。
[0046]
行移位变换模块,与所述数据合并模块连接,用于根据aes方向对合并后的数据进行行移位变换/逆行移位变换。所述行移位变换模块的数据处理位宽为128bit,如果aes方向为数据加密方向,则执行行移位变换,如果aes方向为数据解密方向,则执行逆行移位变换。需要说明的是,当前子轮数为4时(第5子轮),s盒变换模块在执行最后的[127:96]bit的计算。在该子轮中,当s盒变换模块完成计算后,数据合并模块实时将数据进行合并,然后传输给行移位变换模块完成行移位变换/逆行移位变换。此时,即在第5子轮,第一级加解密电路完成第一轮流水,所述第二计数器对流水线轮数加1,所述第一计数器输出密钥刷新使能以刷新当前密钥,同时将当前子轮数归零重计。
[0047]
第四数据选择器,与所述行移位变换模块连接,用于根据当前子轮数选择所述行移位变换模块中的变换结果的对应位数并输出至下一级电路。所述第四数据选择器充当下一级电路的衔接模块,具体的,是充当上下两轮流水的衔接模块,其将上一轮流水的结果传输至下一轮流水进行计算。需要注意的是,此时的当前子轮数已经归零。
[0048]
如图2所示,第二级加解密电路,与所述第二计数器和所述第一级加解密电路连接,用于根据流水线轮数、当前子轮数和aes方向对所述第一级加解密电路输出的数据进行第n-1轮的列混合变换/逆列混合变换和异或运算以及第n轮的s盒变换/逆s盒变换和行移位变换/逆行移位变换;其中,n表示aes数据加解密轮数,n为正整数且大于2,n的最大值由密钥长度决定。需要强调的是,n表示的是传统aes数据加解密方法中的轮数。当密钥长度为128bit时,n的最大值为11,即数据加解密需要11轮变换才能完成。需要说明的是,所述第二级加解密电路用于实现第2-10轮流水,且同样可以实现数据加密和数据解密两个过程。
[0049]
所述第二级加解密电路包括:列混合变换模块,与所述第四数据选择器连接,用于根据aes方向对所述行移位变换模块中的变换结果的对应位数进行列混合变换/逆列混合变换。
[0050]
第五数据选择器,用于根据当前子轮数选择当前密钥的对应位数。需要注意的是,当前密钥已刷新为第二轮流水的密钥。
[0051]
密钥逆列混合变换模块,与所述第五数据选择器连接,用于在数据解密时对所述第五数据选择器输出的当前密钥的对应位数进行逆列混合变换。此模块只在数据解密过程中发挥作用。
[0052]
第六数据选择器,与所述第五数据选择器和所述密钥逆列混合变换模块连接,用于根据aes方向选择所述第五数据选择器或所述密钥逆列混合变换模块输出的数据并传输给第二异或运算模块。如果aes方向为数据加密方向,则选择第五数据选择器输出的当前密钥,如果aes方向为数据解密方向,则选择密钥逆列混合变换模块输出的变换后的当前密钥。
[0053]
第二异或运算模块,与所述第六数据选择器和所述列混合变换模块连接,用于对
所述列混合变换模块和所述第六数据选择器输出的数据进行异或运算。该异或运算模块用于执行第2-10轮流水的异或运算,即所述第二数据选择器的选通信号为2-10时,aes数据加解密处理电路都会选择所述第二级加解密电路执行数据加解密流程。
[0054]
需要说明的是,所述第二级加解密电路还包括所述第二数据选择器、所述第一寄存器、所述第三数据选择器、所述s盒变换模块、所述数据合并模块、所述行移位变换模块以及所述第四数据选择器。上述模块的功能与在第一级加解密电路中描述的一致。
[0055]
如图2所示,第三级加解密电路,与所述第二计数器和所述第二级加解密电路连接,用于根据流水线轮数和当前子轮数对所述第二级加解密电路输出的数据进行异或运算,然后输出已加解密数据。所述第三级加解密电路用于实现最后一轮流水,当n取到最大值时,aes数据加解密处理电路从第二级加解密电路切换到第三级加解密电路。
[0056]
所述第三级加解密电路包括:第七数据选择器,用于根据当前子轮数选择当前密钥的对应位数。此时当前密钥为最终密钥。
[0057]
第三异或运算模块,与所述第七数据选择器和所述第四数据选择器连接,用于对所述行移位变换模块中的变换结果的对应位数与当前密钥的对应位数进行异或运算。在最后一轮流水中,除了异或运算已无其他操作,因此每次异或运算后的结果都储存在所述第一寄存器中。当所有数据完成异或运算,表明数据已经完成加解密,第一寄存器将数据输出到外部。
[0058]
需要说明的是,所述第三级加解密电路还包括所述第二数据选择器和所述第一寄存器。上述模块的功能与在第一级加解密电路中描述的一致。其中,所述第二数据选择器分别与所述第一异或运算模块、所述第二异或运算模块和所述第三异或运算模块连接。
[0059]
与现有技术相比,本发明实施例所述的aes数据加解密处理电路通过流水线技术实现aes算法的轮内循环,即在当前轮的变换过程中,可以实现下一轮的部分变换,使得aes加解密流程耗费的时钟周期数较少,提高了数据加解密的效率。另外,该电路采用32bit而非64bit(需由两个32bit组成)数据处理位宽的异或运算模块、s盒变换模块以及列混合变换模块,使得aes数据加解密处理电路的面积大大缩小,有利于控制成本,提高市场竞争力。
[0060]
如图4所示,本发明实施例提供一种aes数据加解密处理方法,所述方法包括:步骤s1,根据aes方向,aes数据加解密处理电路通过所述第一级加解密电路对待加解密数据进行第一轮的异或运算以及第二轮的s盒变换/逆s盒变换和行移位变换/逆行移位变换;其中,所述aes方向包括包括数据加密方向和数据解密方向;所述第一轮和第二轮分别表示aes数据加解密轮数中的初始轮和中间轮。
[0061]
作为其中一种实施方式,所述步骤s1的方法具体包括:步骤s11,aes数据加解密处理电路接收到aes模块使能后,使得所述第一计数器开始输出当前子轮数,然后选择待加解密数据和当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1;其中,待加解密数据和当前密钥具有相同长度的数据位宽,且是第一预设位宽的整数倍。仍然以待加解密的数据为128bit,密钥长度也为128bit的aes数据加解密流程为例,由于本发明主要的运算模块采用32bit数据处理位宽,因此,需要将128bit的待加解密数据和当前密钥分成4次处理,即所述第一预设位宽为32bit。
[0062]
参照图5,aes数据加密流水线设计,当密钥长度为128bit时,完成数据加密共需54
个时钟周期t0-t53,包含11轮流水pipeline round0-pipeline round10,其中pipeline round0-pipeline round9每轮流水耗费5个时钟周期,pipeline round10耗费4个时钟周期。所述第一级加解密电路执行的是第一轮流水pipeline round0。
[0063]
步骤s11对应的是t0时刻(此时当前子轮数为0,表示pipeline round0的第一子轮),将待加密数据的[31:0]bit与初始密钥的[31:0]进行异或运算,然后第一计数器计数一次,当前子轮数变为1。其中,初始密钥即key0,由cpu直接配置。
[0064]
步骤s12,根据aes方向,aes数据加解密处理电路选择待加解密数据和当前密钥下一对应的第一预设位宽的位数进行异或运算,同时对上一步骤的异或运算结果进行s盒变换/逆s盒变换,随后当前子轮数加1。
[0065]
参照图5,步骤s12对应的是t1时刻,将待加密数据的[63:32]bit与初始密钥的[63:32]进行异或运算,并对t0时刻的异或结果进行s盒变换,然后当前子轮数变为2。
[0066]
步骤s13,以此类推,在当前子轮数达到预设次数时,aes数据加解密处理电路根据aes方向对上一步骤的异或运算结果进行s盒变换/逆s盒变换,同时对所有s盒变换/逆s盒变换后的结果进行行移位变换/逆行移位变换。
[0067]
参照图5,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盒变换和行移位变换完成。
[0068]
作为其中一种实施方式,所述步骤s13中,根据aes方向对所有s盒变换/逆s盒变换后的数据进行行移位变换/逆行移位变换之前还包括:aes数据加解密处理电路将每次s盒变换/逆s盒变换后的结果传输至所述第二寄存器中,在当前子轮数达到预设次数时,aes数据加解密处理电路将此时的s盒变换/逆s盒变换后的结果以及储存在所述所述第二寄存器中的结果一起传输至所述第三寄存器中进行合并,然后再把合并后的数据传输给所述行移位变换模块。
[0069]
步骤s2,aes数据加解密处理电路通过所述第二级加解密电路对所述第一级加解密电路输出的数据进行第n-1轮的列混合变换/逆列混合变换和异或运算以及第n轮的s盒变换/逆s盒变换和行移位变换/逆行移位变换;其中,n表示aes数据加解密轮数,n为正整数且大于2,n的最大值由密钥长度决定。
[0070]
作为其中一种实施方式,所述步骤s2的方法具体包括:步骤s21,根据流水线轮数、当前子轮数以及aes方向,aes数据加解密处理电路通过第四数据选择器选择行移位变换/逆行移位变换后的结果中对应的第一预设位宽的位数进行列混合变换/逆列混合变换,然后与当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1。
[0071]
参照图5,步骤s21对应的是t5时刻(此时当前子轮数为0,表示pipeline round1的第一子轮),对t4时刻的行移位变换结果的[31:0]bit进行列混合变换,再与中间密钥key1的[31:0]进行异或运算,然后当前子轮数变为1。
[0072]
步骤s22,aes数据加解密处理电路选择行移位变换/逆行移位变换后的结果中下一对应的第一预设位宽的位数进行列混合变换/逆列混合变换,然后与当前密钥下一对应的第一预设位宽的位数进行异或运算,同时对上一步骤的异或运算结果进行s盒变换/逆s盒变换,随后当前子轮数加1。
[0073]
参照图5,步骤s22对应的是t6时刻,对t4时刻的行移位变换结果的[63:32]bit进行列混合变换,再与中间密钥key1的[63:32]进行异或运算,并对t5时刻的异或运算结果进行s盒变换,然后当前子轮数变为2。
[0074]
步骤s23,以此类推,在当前子轮数达到预设次数时,aes数据加解密处理电路根据aes方向对上一步骤的异或运算结果进行s盒变换/逆s盒变换,同时对所有s盒变换/逆s盒变换后的结果进行行移位变换/逆行移位变换。
[0075]
参照图5,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盒变换和行移位变换完成。
[0076]
步骤s24,待所述第一计数器产生密钥刷新使能,且所述第二计数器对流水线轮数计数后,aes数据加解密处理电路使得当前子轮数归零重计,然后重复执行步骤s21至步骤s24,直至完成第n轮的s盒变换/逆s盒变换和行移位变换/逆行移位变换;其中,n取最大值。
[0077]
参照图5,pipeline round2-9执行流程与pipeline round1相同,不再赘述。pipeline round9结束之后,即t49时刻后,传统aes加密流程中round9的列混合变换和异或运算完成,以及round10中的s盒变换和行移位变换完成。需要说明的是,t49时刻后,进入第11轮流水pipeline round10,此时的密钥刷新为最终密钥key10。
[0078]
步骤s3,aes数据加解密处理电路通过所述第三级加解密电路对所述第二级加解密电路输出的数据进行异或运算,然后输出已加解密数据。
[0079]
作为其中一种实施方式,所述步骤s3的方法具体包括:步骤s31,根据当前子轮数,aes数据加解密处理电路通过第四数据选择器选择行移位变换/逆行移位变换后的结果和当前密钥对应的第一预设位宽的位数进行异或运算,随后当前子轮数加1。
[0080]
参照图5,步骤s31对应的是t50时刻(此时当前子轮数为0,表示pipeline round10
的第一子轮),将t49时刻的行移位变换结果的[31:0]bit与最终密钥key10的[31:0]进行异或运算,然后当前子轮数变为1。
[0081]
步骤s32,以此类推,当aes数据加解密处理电路完成行移位变换/逆行移位变换后的结果和当前密钥所有位数的异或运算后,所述第一寄存器输出已加解密数据。
[0082]
参照图5,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时刻之后,加密流程完成,所述第一寄存器输出已加密数据。
[0083]
需要说明的是,在流水线开始之前,如果aes方向为数据加密方向,则aes数据加解密处理电路接收初始密钥作为当前密钥,并在所述第一计数器产生密钥刷新使能后,接收刷新后的密钥作为当前密钥,直至初始密钥刷新到最终密钥。如果aes方向为数据解密方向,则aes数据加解密处理电路接收最终密钥作为当前密钥,并在所述第一计数器产生密钥刷新使能后,接收刷新后的密钥作为当前密钥,直至最终密钥刷新到初始密钥。
[0084]
作为另一种实施例,参照图6,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盒变换和逆行移位变换完成。
[0085]
下面进入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盒变换、逆行移位变换完成。pipeline round2~pipeline round9执行流程与pipeline round1相同。pipeline round9结束之后,即t49时刻后,传统aes数据解密过程中round9中的逆列混合变换、异或运算完成,round10中的逆s盒变换、逆行移位变换完成。
[0086]
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时刻之后,解密流程完成,所述第一寄存器输出已解密数据。
[0087]
与现有技术相比,本发明实施例所述的aes数据加解密处理方法通过流水线技术实现aes算法的轮内循环,即在当前轮的变换过程中,可以实现下一轮的部分变换,使得aes加解密流程耗费的时钟周期数较少,提高了数据加解密的效率。
[0088]
另外,在本发明的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0089]
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。这些程序可以存储于计算机可读取存储介质(比如rom、ram、磁碟或者光盘等各种可以存储程序代码的介质)中。该程序在执行时,执行包括上述各方法实施例的步骤。
[0090]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!