CN106034022A - Cbc模式下的aes加解密装置及方法 - Google Patents

Cbc模式下的aes加解密装置及方法 Download PDF

Info

Publication number
CN106034022A
CN106034022A CN201510109337.0A CN201510109337A CN106034022A CN 106034022 A CN106034022 A CN 106034022A CN 201510109337 A CN201510109337 A CN 201510109337A CN 106034022 A CN106034022 A CN 106034022A
Authority
CN
China
Prior art keywords
input
data
encryption
aes
module
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
Application number
CN201510109337.0A
Other languages
English (en)
Other versions
CN106034022B (zh
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.)
Shanghai Advanced Research Institute of CAS
Original Assignee
Shanghai Advanced Research Institute of CAS
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 Shanghai Advanced Research Institute of CAS filed Critical Shanghai Advanced Research Institute of CAS
Priority to CN201510109337.0A priority Critical patent/CN106034022B/zh
Publication of CN106034022A publication Critical patent/CN106034022A/zh
Application granted granted Critical
Publication of CN106034022B publication Critical patent/CN106034022B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种CBC模式下的AES加解密装置及其方法,该加解密装置包括:输入输出模块,接收上层的输入数据和控制信号并向上层发送处理好的数据和控制信号;反馈及累加模块,根据控制信号完成对输入和输出数据的反馈和累加;AES核模块,根据不同的控制信号完成对输入数据的加解密,所述AES核模块选用128bit密钥长度单模式,采用迭代运算对待加/解密数据进行加解密,每轮迭代运算包括行变换、字节替换、列混淆、轮密钥加,所述AES核模块采用加解密复用组合S盒结构,并采用双路AES报文级实现加解密,本发明实现了较小的面积和较高吞吐量,并且通过报文级并行处理的方法,能够通过双路实现1Gbps以上的吞吐量。

Description

CBC模式下的AES加解密装置及方法
技术领域
本发明涉及一种AES加解密装置及方法,特别是涉及一种满足1Gbps以上吞吐量要求的双路AES反馈结构的CBC模式下的AES加解密装置及方法。
背景技术
AES(Advanced Encryption Standard,高级加密标准)算法自从2001年被NIST机构采纳为标准算法以来,因为安全性、复杂度、速度等方面的均衡性优点,被多种通信系统采纳为加密算法。在吞吐量要求较高的通信场合,硬件实现比软件实现具有更高的速率。随着SOC(片上系统)等技术的发展,系统的集成度越来越高,对于不同吞吐量及应用模式的AES芯片实现与集成都有着相当的需求。
目前的AES硬件实现在兼容实现、高吞吐量和小面积实现等方面都具有一定的研究成果,但在定制化应用方面,结合1Gbps左右吞吐量和较高的安全性要求,还需要提出面积、性能上均衡的结构设计。S盒是AES算法中影响安全、面积和功率的关键性构件。高速算法通常采用查找表型S盒,造成极大的面积和功耗代价,并且因为查找表型S盒与功率的线性相关度较高,从而影响其安全性。采用组合算法S盒的设计常常无法取得较高的吞吐量,并且在CBC(Cypherblock chaining,密码段链接)反馈模式中,无法实现实时的并行设计。
发明内容
为克服上述现有技术存在的不足,本发明之一目的在于提供一种CBC模式下的AES加解密装置及方法,采用20个S盒最小周期算法,采用组合S盒、加密和解密功能兼容,通过紧凑设计,选择128bit长度密钥这一部分协议指定的MAC(接入介质)层的密钥长度,实现了较小的面积和较高吞吐量,并且通过报文级并行处理的方法,能够通过双路实现1Gbps以上的吞吐量。
为达上述及其它目的,本发明提出一种CBC模式下的AES加解密装置,包括:
输入输出模块,接收上层的输入数据和控制信号并向上层发送处理好的数据和控制信号;
反馈及累加模块,根据控制信号完成对输入和输出数据的反馈和累加;
AES核模块,根据不同的控制信号完成对输入数据的加解密,所述AES核模块选用128bit密钥长度单模式,采用迭代运算对待加/解密数据进行加解密,每轮迭代运算包括行变换、字节替换、列混淆、轮密钥加,所述AES核模块采用加解密复用组合S盒结构,并采用双路AES报文级实现加解密。
进一步地,所述输入输出模块接收来自上层的报文头标志(hd)、输入数据控制信号(ld)、加解密控制信号(enc)、输入数据(Data_in)、输入密钥(Key_in)、初始向量(IV)输入,向上层传递工作状态标志(Idle)和输出数据(Data_out)。
进一步地,所述反馈及累加模块包括多路器(203、204、205、206)以及累加器(201、202),所述报文头标志(hd)经所述输入输出模块连接至多路器(203、204)的控制端,加解密控制信号(enc)经所述输入输出模块连接至多路器(205、206)的控制端,初始向量(IV)经所述输入输出模块连接至多路器(203、204)的1输入端,当前输入数据(Data_in(i))经所述输入输出模块连接至累加器(201)的一输入端和多路器(205)的0输入端,前一时刻输入数据(Data_in(i-1))经所述输入输出模块连接至所述多路器(204)的0输入端,前一时刻输出数据(Data_out(i-1))连接至多路器(203)的0输入端,多路器(203)的输出连接至累加器(201)的另一输入端,累加器(201)的输出连接至多路器(205)的1输入端,多路器(205)的输出端连接至所述AES核模块,多路器(204)的输出端连接至累加器(202)的一输入端,当前输出数据(Data_out(i))连接至多路器(206)的1输入端和累加器(202)的另一输入端,累加器(202)的输出端连接至多路器(206)的0输入端,多路器(206)的输出连接至所述输入输出模块,累加器(201)输出的AES输入控制信号连接至所述AES核模块,所述密钥输入(Key_in)经所述输入输出模块连接至所述AES核模块,所述AES核模块将加解密结束信号连接至所述输入输出模块。
进一步地,所述AES核模块为两个相同的对称结构,所有AES核模块和所述输入输出模块间的连线均是双路控制的,并共用同一个输入输出模块向外输出。
进一步地,所述AES核模块每轮运算调用20个组合逻辑S盒,16个S盒分配给主状态矩阵计算,4个S盒分配给密钥拓展用于并行产生下一轮运算产生密钥。
进一步地,所述AES核模块于每轮运算的第1个时钟周期,主状态矩阵挂起,密钥拓展产生用于首轮运算的密钥,之后10个时钟周期完成加密/解密运算。
进一步地,所述组合S盒调用两个多路器、一个求逆运算、一个仿射和一个逆仿射模块,加密时加解密控制信号(enc)控制多路器输出选择依次进行求逆运算和仿射,解密时加解密控制信号(enc)控制多路器输出选择依次进行逆仿射和求逆运算。
为达到上述目的,本发明还提供一种CBC模式下的AES加密方法,包括如下步骤:
步骤一,第一周期,当AES核模块为idle状态时,向输入输出控制模块发送的加解密结束信号(fin)为高电平,所述输入输出模块接收上层的数据输入控制信号(ld),所述数据输入控制信号(ld)为高电平时,开始读入数据;
步骤二,第二周期,输入数据在报文头标志(hd)和加解密控制信号(enc)控制下进行反馈与累加模块的运算;
步骤三,于第3周期,所述AES核模块读入本次加密运算的明文、密钥和加解密控制信号(enc);
步骤四,第4周期计算首轮所需加密密钥,第5-14周期进行10轮加密迭代运算,每轮迭代运算包括行变换、S变换、列混淆、轮密钥加步骤,最后一轮运算跳过列混淆,第14周期得到加密结果通过所述输入输出控制模块输出给上层,计算完成后加解密结束信号(fin)置高电平;
进一步地,步骤二中,若报文头标志(hd)为高电平,多路选择器(203)输出初始向量(IV),累加器(201)输出初始向量(IV)与输入数据(Data_in)的异或结果,多路选择器(205)输出异或结果至AES核模块;报文头标志(hd)为低电平时,多路选择器(203)输出上一次AES核模块输出(Data_out(i-1)),累加器(201)输出AES核模块的上一次输出(Data_out(i-1))和当前输入(Data_in)的异或结果,多路选择器(205)输出异或结果至AES核模块作为AES核模块的输入。
为达到上述目的,本发明还提供一种CBC模式下的AES解密方法,包括如下步骤:
步骤一,第1周期,将AES输入控制信号(kld)置为高,指示AES核模块读入数据;
步骤二,AES核模块读入本次解密运算的密文、密钥和加解密控制信号(enc);
步骤三,第3周期计算首轮所需解密密钥,第4到13周期进行10轮解密运算,每轮解密运算包括行变换、S变换、列混淆、轮密钥加步骤,最后一轮跳过列混淆,第13周期得到解密结果输出到所述输入输出控制模块,计算完成后,将加解密结束信号(fin)置高电平;
步骤四,反馈及累加模块在报文头标志(hd)和加解密控制信号(enc)控制下进行累加运算并输出。
与现有技术相比,本发明一种CBC模式下的AES加解密装置及方法通过采用20个S盒最小周期算法,采用组合S盒,加密和解密功能兼容,并通过紧凑设计,选择128bit长度密钥这一部分协议指定的MAC(接入介质)层的密钥长度,实现了较小的面积和较高吞吐量,并且通过报文级并行处理的方法,能够通过双路实现1Gbps以上的吞吐量,适用于各类网络路由器等高吞吐量场合的应用。
附图说明
图1为本发明一种CBC模式下的AES加解密装置的结构示意图;
图2为本发明的状态跳转示意图;
图3为本发明中S变换采用的组合逻辑S盒结构图;
图4为本发明中AES核模块的电路调用结构示意图;
图5为本发明的密钥与状态矩阵并行处理示意图;
图6为本发明一种CBC模式下的AES加密方法的步骤流程图;
图7为本发明一种CBC模式下的AES解密方法的步骤流程图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明一种CBC模式下的AES加解密装置的结构示意图。如图1所示,本发明一种CBC模式下的AEC加解密装置,包括:输入输出模块10(I/OControl)、反馈及累加模块20和AES核模块30,输入输出模块10接收上层的输入数据和控制信号并向上层发送处理好的数据和控制信号,反馈及累加模块20根据控制信号完成对输入和输出数据的反馈和累加,AES核模块30根据不同的控制信号完成对输入数据的加解密。
来自上层的报文头标志hd(指示报文头)、输入数据控制信号ld(指示数据读入)、加解密控制信号enc(指示加密/解密)、输入数据Data_in(加密为明文/解密为密文)、输入密钥Key_in、初始向量IV输入连接至输入输出模块10,输入输出模块10向上层传递工作状态标志Idle和输出数据Data_out(加密为密文/解密为明文);报文头标志hd经输入输出模块10连接至反馈及累加模块20的多路器203、204的控制端,加解密控制信号enc经输入输出模块10连接至反馈及累加模块20的多路器205、206的控制端,初始向量IV经输入输出模块10连接至反馈及累加模块20的多路器203、204的1输入端,当前输入数据Data_in(i)经输入输出模块10连接至反馈及累加模块20的累加器201的一输入端和多路器205的0输入端,前一时刻输入数据Data_in(i-1)经输入输出模块10连接至多路器204的0输入端,前一时刻输出数据Data_out(i-1)连接至多路器203的0输入端,多路器203的输出连接至累加器201的另一输入端,累加器201的输出Data_xor1连接至多路器205的1输入端,多路器205的输出端连接至AES核模块30,多路器204的输出端连接至累加器202的一输入端,当前输出数据Data_out(i)连接至多路器206的1输入端和累加器202的另一输入端,累加器202的输出端连接至多路器206的0输入端,多路器206的输出连接至输入输出模块10,AES输入控制信号kld连接至AES核模块30(图中未示出);密钥输入Key_in经输入输出模块10连接至AES核模块30,AES核模块30将加解密结束信号fin(fin1/fin2)连接至输入输出模块10,其高电平触发本发明进入空闲状态,上层可以经Data_out端口读取数据,AES核模块30选用128bit密钥长度单模式,并采用加解密复用组合S盒结构,采用双路AES报文级并行处理,实现对数据的加解密。
本发明的输入既包含Data_in(i)又包括Data_in(i-1),因Data_in在输入输出模块中为寄存器结构,在进行某轮运算时,上一次运算的Data_in(i-1)将不会被保留,因而需要另外一组寄存器来动态存储上一轮Data_in的值。但Data_out(i)和Data_out(i-1)因为输出发生在连续两个周期,故而可以共用同一个输出端口。
在此需说明的是,本发明中AES核模块为两个相同的对称结构,图1中连线为简洁性考虑仅以一片AES核模块的连线示例。实际设计中所有AES核模块和输入输出模块间的连线均是双路控制的,并共用同一个输入输出模块向外输出。两片AES core的忙闲状态是相互独立的,由两个fin信号反馈给输入输出模块,计算任务通过输入输出模块动态分配给两片AES core。Idle信号在有一片AES core为闲的状态下即可触发,并请求数据输入,每次输入一组128bit的Data_in和一组128bit的Key_in。在两片均为闲的状态,输入输出模块前后两周期内读入两组Data_in和Key_in先向约定的AES core1输入数据,下一周期再向AES core2输入数据。输出数据时,若两片AES core同时完成计算,在前后两个周期内依次输出AES core1和AES_core2的计算结果。
以下配合图1说明本发明的工作过程:
1、加密过程
第1周期:当AES核模块30为idle(闲)状态时,向输入输出模块10发送的加解密结束信号fin为高电平,表示可以接收数据。输入输出模块10接收上层HLE(higher layer entity)的数据输入控制信号ld,数据输入控制信号ld为高电平时,开始读入数据。
第2周期:输入数据在报文头标志hd和加解密控制信号enc控制下进行累加模块的运算。加解密控制信号enc为高电平时,此时进行加密计算,若HLE输入信号报文头标志hd为高电平,指示当前加密数据为报文头,多路选择器203输出IV,累加器201输出IV(initial vector初始向量)与输入数据Data_in的异或结果Data_xor1,多路选择器205输出异或结果Data_xor1至AES核模块30;报文头标志hd为低电平时,说明此时计算需接受上一轮运算的反馈,多路选择器203输出上一次AES核模块输出Data_out(i-1),累加器201输出AES核模块30的上一次输出Data_out(i-1)和当前输入Data_in的异或结果,多路选择器205输出Data_xor1至AES核模块30作为AES加密算法的输入。当累加器201输出的AES输入控制信号kld(累加模块对AES输入的控制信号,用来使AES核模块进入读数模式)置为高时,累加器准备向AES核模块输入信号。
第3周期:AES核模块读入本次加密运算的明文、密钥和加解密控制信号enc;fin置为0,表示开始工作;
第4-14周期:第4周期计算首轮所需加密密钥。5-14周期进行10轮加密迭代运算。每轮迭代运算包括行变换、字节替换、列混淆、轮密钥加等步骤,最后一轮运算(第14周期)跳过列混淆。14周期得到加密结果Data_out通过输入输出控制模块10输出给HLE。计算完成后加解密结束信号fin置高电平,表明可以进行下一次计算。
2、解密过程:
第1周期:与加密过程相同。并将AES输入控制信号kld置为高,指示AES核模块读入数据。
第2周期:AES核模块读入本次解密运算的密文、密钥和加解密控制信号enc,加解密结束信号fin置为0,表示开始工作;计算完成后,加解密结束信号fin置高电平,表明可以进行下一次计算。
第3-13周期:第3周期计算首轮所需解密密钥。4到13周期进行10轮解密运算,每轮解密运算包括行变换、S变换、列混淆、轮密钥加等步骤,最后一轮(13周期)跳过列混淆。13周期得到解密结果输出到输入输出控制模块10。计算完成后,加解密结束信号fin置高电平,表明可以进行下一次计算。
第14周期:反馈及累加模块20在报文头标志hd和加解密控制信号enc控制下进行累加运算并输出。加解密控制信号enc为低电平表明此时进行解密运算,若HLE输入信号报文头标志hd为高电平,指示当前解密数据为报文头,多路选择器204输出IV,累加器202输出IV与输入数据Data_out(i)的异或结果Data_xor2,多路选择器206输出异或结果Data_xor2至输入输出控制模块10;报文头标志hd为低电平时,说明此时运算需接受上一轮计算的反馈,多路选择器204输出上一轮输入数据Data_in(i-1),累加器202输出上一轮输入数据Data_in(i-1)与当前AES核模块的输出Data_out(i)的异或结果Data_xor2,多路选择器206输出异或结果Data_xor2至输入输出控制模块10,并将其作为对HLE的输出。
图2为本发明的状态跳转示意图。本发明主状态机主要包括Idle、Load(读数)、Xor(累加)和Encrypt/Decrypt(加/解密)等状态,如图2所示。当有一路加解密结束信号fin为高时进入Idle状态向上层请求数据,即fin1=1或fin2=1均跳转至Idle状态;上层数据准备好后数据输入控制信号ld置高即ld=1进入数据载入Load1状态;读入上层数据后对加解密控制信号enc状态进行判断是进入累加状态Xor或向AES core输入数据,当加解密控制信号enc信号为1时,先进入累加状态Xor,累加完成后将kld置1,再进入load2状态,当加解密控制信号enc信号为0时,直接进入数据载入load2状态;数据载入完即进入加解密Encrypt/Decrypt状态进行加密或解密运算;完成加密或解密运算后,再次对加解密控制信号enc进行判断是否经过Xor状态,若加解密控制信号enc为1时(加密),则直接将加解密结束信号fin置1,进入Idle状态,若加解密控制信号enc为0,则先进入累加Xor状态,然后再将加解密结束信号fin置1进入Idle状态。
图3为本发明中S变换采用的组合逻辑S盒结构图。本发明中,AES核模块每轮运算调用20个S盒(Substitution-box,置换盒),16个S盒分配给主状态矩阵计算,4个S盒分配给密钥拓展用于并行产生下一轮运算产生密钥。第1个时钟周期,主状态矩阵挂起,密钥拓展产生用于首轮运算的密钥,之后10个时钟周期完成加密/解密运算,实现该种结构下的理论最少计算周期。从而使双路报文处理达到较高吞吐量要求。每个S盒结构如图3所示。可通过enc信号控制,进行S变换或逆S变换。组合S盒结构主要包括Affine(仿射)变换和求逆运算。加密时加解密控制信号enc控制多路器输出选择1输入端的数据依次进行求逆运算和仿射,解密时加解密控制信号enc控制多路器输出选择0输入端的数据依次进行逆仿射和求逆运算。本发明求逆运算算法是将GF(28)有限域上的求逆运算转换到GF(24)上进行。也就是说,每个S盒设计结构上需要调用两个多路器、一个求逆运算、一个仿射和一个逆仿射模块。
图4为本发明中AES核模块的电路调用结构示意图。括号内为调用该模块个数。图中各部分的含义如下:
CBC:CBC顶层控制
AES:AES实现模块
Sbos:S盒结构
MixColumn:列混淆模块
Key-expand:密钥拓展模块
Mux:双路选择器
G8-inverse:有限域GF(28)上求逆
Affine:仿射变换函数
Affine Inverse:逆仿射变换
Mix:列混淆控制
Inv Mix:逆列混淆控制
Rcon:轮常数函数
G8_G4:GF(28)到GF(24)上变换
G4—inverse:有限域GF(24)上求逆
Gsquare:GF(24)平方运算
Gmule:GF(24)常数乘法运算
Gmul4:GF(24)乘法运算
Xtime:GF(28)上左移一位
X2time:GF(28)上左移两位
除第1个周期用于产生首轮密钥外,行变换、S变换和列混淆和轮密钥加都在1个周期内完成。128bit输入数据在AES计算中被存储于一个4×4的状态矩阵中。每个周期中处理4次列混淆运算,故设计结构需调用四个MixColumn(列混淆)模块。将16个矩阵元素都进行S变换,并产生4个密钥,从而采用20个S盒算法,每轮分配16个S盒进行主状态矩阵的计算,4个S盒用于产生下一轮计算的密钥。
如图5所示,本发明中,密钥拓展的计算与主状态机的计算并行完成,一次AES加/解密运算共需11个周期完成。
图6为本发明一种CBC模式下的AES加密方法的步骤流程图。如图6所示,本发明一种CBC模式下的AES加密方法,包括如下步骤:
步骤601,当AES核模块为idle(空闲)状态时,向输入输出控制模块发送的加解密结束信号fin为高电平,表示可以接收数据。输入输出模块接收上层HLE(higher layer entity)的数据输入控制信号ld,数据输入控制信号ld为高电平时,开始读入数据,该步骤完成在第1周期。
步骤602,输入数据在报文头标志hd和加解密控制信号enc控制下进行反馈与累加模块的运算。加解密控制信号enc为高电平时,此时进行加密计算,若HLE输入信号报文头标志hd为高电平,指示当前加密数据为报文头,多路选择器203输出IV,累加器201输出IV(initial vector初始向量)与输入数据Data_in的异或结果Data_xor1,多路选择器205输出异或结果Data_xor1至AES核模块30;报文头标志hd为低电平时,说明此时计算需接受上一轮运算的反馈,多路选择器203输出上一次AES核模块输出Data_out(i-1),累加器201输出AES核模块30的上一次输出Data_out(i-1)和当前输入Data_in的异或结果,多路选择器205输出Data_xor1至AES核模块30作为AES加密算法的输入。当累加器205输出的AES输入控制信号kld(累加模块对AES输入的控制信号,用来使AES核模块进入读数模式)置为高时,累加器准备向AES核模块输入信号,本步骤实现在第2周期。
步骤603,于第3周期,AES核模块读入本次加密运算的明文、密钥和加解密控制信号enc;fin置为0,表示开始工作。
步骤604,第4周期计算首轮所需加密密钥。第5-14周期进行10轮加密迭代运算。每轮迭代运算包括行变换、S变换、列混淆、轮密钥加等步骤,最后一轮运算跳过列混淆。第14周期得到加密结果Data_out通过输入输出控制模块10输出给HLE。计算完成后加解密结束信号fin置高电平,表明可以进行下一次计算。
图7为本发明一种CBC模式下的AES解密方法的步骤流程图。如图7所示,本发明一种CBC模式下的AES解密方法,包括如下步骤:
步骤701,将将AES输入控制信号kld置为高,指示AES核模块读入数据,该步骤实现在第1周期。
步骤702,AES核模块读入本次解密运算的密文、密钥和加解密控制信号enc,加解密结束信号fin置为0,表示开始工作;计算完成后,加解密结束信号fin置高电平,表明可以进行下一次计算,该步骤实现在第2周期。
步骤703,第3周期计算首轮所需解密密钥。第4到13周期进行10轮解密运算,每轮解密运算包括行变换、S变换、列混淆、轮密钥加等步骤,最后一轮(13周期)跳过列混淆。第13周期得到解密结果输出到输入输出控制模块10。计算完成后,加解密结束信号fin置高电平,表明可以进行下一次计算。
步骤704,反馈及累加模块在报文头标志hd和加解密控制信号enc控制下进行累加运算并输出。加解密控制信号enc为低电平表明此时进行解密运算,若HLE输入信号报文头标志hd为高电平,指示当前解密数据为报文头,多路选择器204输出IV,累加器202输出IV与输入数据Data_out(i)的异或结果Data_xor2,多路选择器206输出异或结果Data_xor2至输入输出控制模块10;报文头标志hd为低电平时,说明此时运算需接受上一轮计算的反馈,多路选择器204输出上一轮输入数据Data_in(i-1),累加器202输出上一轮输入数据Data_in(i-1)与当前AES核模块的输出Data_out(i)的异或结果Data_xor2,多路选择器206输出异或结果Data_xor2至输入输出控制模块10,并将其作为对HLE的输出。
通过本发明如上设计组合逻辑S盒高吞吐量AES核模块单路吞吐量超过800Mbps,从而在主模块CBC的控制下,双路流水线吞吐量超过1Gbps。满足设计需求。
本发明经过modelsim软件进行功能仿真,能够实现加解密,输入输出及反馈控制等全部功能。之后经过ISE套件进行FPGA布线仿真,AES核模块单独运行,最高频率为71.9Mhz,单路最高吞吐率依据公式1计算可以达到837Mbps。双路并行超过1.6Gbps。在加入反馈控制后,双路超过1.4Gbps。计入全部的读取周期后,吞吐率依然在1Gbps以上。测试结果提现出本算法在代价和性能方面取得了较好的均衡,功能性可靠。
可见,本发明一种CBC模式下的AES加解密装置及方法通过采用20个S盒最小周期算法,采用组合S盒,加密和解密功能兼容,并通过紧凑设计,选择128bit长度密钥这一部分协议指定的MAC(接入介质)层的密钥长度,实现了较小的面积和较高吞吐量,并且通过报文级并行处理的方法,能够通过双路实现1Gbps以上的吞吐量,适用于各类网络路由器等高吞吐量场合的应用,可以通过FPGA配置到嵌入式系统,也可作为IP核应用于数字芯片和片上系统,具有广阔的使用前景。
与现有技术相比,本发明具有如下有益效果:
1.AES核模块采用加解密复用组合S盒结构。组合S盒具有比查找表S盒更高的安全性能,并且面积较小,功耗较低。加解密复用型S盒进一步减小模块面积。
2.整体采用双路AES报文级并行处理。因为组合S盒关键路径较长的缺点,造成吞吐量相对较低,而无法使用于高吞吐量的场合。虽然可以通过多路AES并行处理来弥补这一缺陷,但AES-CBC因为前后两次运算的相关性,导致无法将一个完成的CBC加密/解密链拆分进行并行处理。但在报文级处理时,不同报文间不具有这种CBC的反馈相关性。通过上层的fifo(first in first out)结构,可允许对前后两段甚至多段不同长度的报文进行并行处理,两路紧凑结构的AES加密模块互相独立进行加/解密运算,忙闲状态相互独立,在低速率下甚至可以同时处理上行和下行数据,将可满足一般家庭网关等多个安全协议的速率要求。
3.AES核模块每轮运算调用20个S盒(Substitution-box,置换盒),16个S盒分配给主状态矩阵计算,4个S盒分配给密钥拓展用于并行产生下一轮运算产生密钥。第1个时钟周期,主状态矩阵挂起,密钥拓展模块产生用于首轮运算的密钥,之后10个时钟周期完成加密/解密运算,实现该种结构下的理论最少计算周期。从而使双路报文处理达到较高吞吐量要求。
4.AES核模块选用128bit密钥长度单模式实现,以满足大多数协议要求。采用加解密复用设计,S盒、行变换、列混淆等结构均包含加解密门级复用设计,进一步减小整体面积。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

Claims (10)

1.一种CBC模式下的AES加解密装置,包括:
输入输出模块,接收上层的输入数据和控制信号并向上层发送处理好的数据和控制信号;
反馈及累加模块,根据控制信号完成对输入和输出数据的反馈和累加;
AES核模块,根据不同的控制信号完成对输入数据的加解密,所述AES核模块选用128bit密钥长度单模式,采用迭代运算对待加/解密数据进行加解密,每轮迭代运算包括行变换、字节替换、列混淆、轮密钥加,所述AES核模块采用加解密复用组合S盒结构,并采用双路AES报文级实现加解密。
2.如权利要求1所述的一种CBC模式下的AES加解密装置,其特征在于:所述输入输出模块接收来自上层的报文头标志(hd)、输入数据控制信号(ld)、加解密控制信号(enc)、输入数据(Data_in)、输入密钥(Key_in)、初始向量(IV)输入,向上层传递工作状态标志(Idle)和输出数据(Data_out)。
3.如权利要求2所述的一种CBC模式下的AES加解密装置,其特征在于:所述反馈及累加模块包括多路器(203、204、205、206)以及累加器(201、202),所述报文头标志(hd)经所述输入输出模块连接至多路器(203、204)的控制端,加解密控制信号(enc)经所述输入输出模块连接至多路器(205、206)的控制端,初始向量(IV)经所述输入输出模块连接至多路器(203、204)的1输入端,当前输入数据(Data_in(i))经所述输入输出模块连接至累加器(201)的一输入端和多路器(205)的0输入端,前一时刻输入数据(Data_in(i-1))经所述输入输出模块连接至所述多路器(204)的0输入端,前一时刻输出数据(Data_out(i-1))连接至多路器(203)的0输入端,多路器(203)的输出连接至累加器(201)的另一输入端,累加器(201)的输出连接至多路器(205)的1输入端,多路器(205)的输出端连接至所述AES核模块,多路器(204)的输出端连接至累加器(202)的一输入端,当前输出数据(Data_out(i))连接至多路器(206)的1输入端和累加器(202)的另一输入端,累加器(202)的输 出端连接至多路器(206)的0输入端,多路器(206)的输出连接至所述输入输出模块,累加器(201)输出的AES输入控制信号连接至所述AES核模块,所述密钥输入(Key_in)经所述输入输出模块连接至所述AES核模块,所述AES核模块将加解密结束信号连接至所述输入输出模块。
4.如权利要求3所述的一种CBC模式下的AES加解密装置,其特征在于:所述AES核模块为两个相同的对称结构,所有AES核模块和所述输入输出模块间的连线均是双路控制的,并共用同一个输入输出模块向外输出。
5.如权利要求4所述的一种CBC模式下的AES加解密装置,其特征在于:所述AES核模块每轮运算调用20个组合逻辑S盒,16个S盒分配给主状态矩阵计算,4个S盒分配给密钥拓展用于并行产生下一轮运算产生密钥。
6.如权利要求5所述的一种CBC模式下的AES加解密装置,其特征在于:所述AES核模块于每轮运算的第1个时钟周期,主状态矩阵挂起,密钥拓展产生用于首轮运算的密钥,之后10个时钟周期完成加密/解密运算。
7.如权利要求6所述的一种CBC模式下的AES加解密装置,其特征在于:所述组合S盒调用两个多路器、一个求逆运算、一个仿射和一个逆仿射模块,加密时加解密控制信号(enc)控制多路器输出选择依次进行求逆运算和仿射,解密时加解密控制信号(enc)控制多路器输出选择依次进行逆仿射和求逆运算。
8.一种CBC模式下的AES加密方法,包括如下步骤:
步骤一,第一周期,当AES核模块为idle状态时,向输入输出控制模块发送的加解密结束信号(fin)为高电平,所述输入输出模块接收上层的数据输入控制信号(ld),所述数据输入控制信号(ld)为高电平时,开始读入数据;
步骤二,第二周期,输入数据在报文头标志(hd)和加解密控制信号(enc)控制下进行反馈与累加模块的运算;
步骤三,于第3周期,所述AES核模块读入本次加密运算的明文、密钥和加解密控制信号(enc);
步骤四,第4周期计算首轮所需加密密钥,第5-14周期进行10轮加密迭 代运算,每轮迭代运算包括行变换、S变换、列混淆、轮密钥加步骤,最后一轮运算跳过列混淆,第14周期得到加密结果通过所述输入输出控制模块输出给上层,计算完成后加解密结束信号(fin)置高电平。
9.如权利要求8所述的一种CBC模式下的AES加密方法,其特征在于,步骤二中,若报文头标志(hd)为高电平,多路选择器(203)输出初始向量(IV),累加器(201)输出初始向量(IV)与输入数据(Data_in)的异或结果,多路选择器(205)输出异或结果至AES核模块;报文头标志(hd)为低电平时,多路选择器(203)输出上一次AES核模块输出(Data_out(i-1)),累加器(201)输出AES核模块的上一次输出(Data_out(i-1))和当前输入(Data_in)的异或结果,多路选择器(205)输出异或结果至AES核模块作为AES核模块的输入。
10.一种CBC模式下的AES解密方法,包括如下步骤:
步骤一,第1周期,将AES输入控制信号(kld)置为高,指示AES核模块读入数据;
步骤二,AES核模块读入本次解密运算的密文、密钥和加解密控制信号(enc);
步骤三,第3周期计算首轮所需解密密钥,第4到13周期进行10轮解密运算,每轮解密运算包括行变换、S变换、列混淆、轮密钥加步骤,最后一轮跳过列混淆,第13周期得到解密结果输出到所述输入输出控制模块,计算完成后,将加解密结束信号(fin)置高电平;
步骤四,反馈及累加模块在报文头标志(hd)和加解密控制信号(enc)控制下进行累加运算并输出。
CN201510109337.0A 2015-03-12 2015-03-12 Cbc模式下的aes加解密装置及方法 Active CN106034022B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510109337.0A CN106034022B (zh) 2015-03-12 2015-03-12 Cbc模式下的aes加解密装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510109337.0A CN106034022B (zh) 2015-03-12 2015-03-12 Cbc模式下的aes加解密装置及方法

Publications (2)

Publication Number Publication Date
CN106034022A true CN106034022A (zh) 2016-10-19
CN106034022B CN106034022B (zh) 2019-11-26

Family

ID=57151269

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510109337.0A Active CN106034022B (zh) 2015-03-12 2015-03-12 Cbc模式下的aes加解密装置及方法

Country Status (1)

Country Link
CN (1) CN106034022B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108197504A (zh) * 2017-12-28 2018-06-22 湖南国科微电子股份有限公司 一种可控数据加解密系统及方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7818563B1 (en) * 2004-06-04 2010-10-19 Advanced Micro Devices, Inc. Method to maximize hardware utilization in flow-thru IPsec processing
CN102223228A (zh) * 2011-05-11 2011-10-19 北京航空航天大学 基于fpga的aes加密芯片设计方法及嵌入式加密系统
CN102801519A (zh) * 2012-07-10 2012-11-28 记忆科技(深圳)有限公司 一种实现aes加解密的方法及装置
CN103516512A (zh) * 2013-10-21 2014-01-15 深圳市芯通信息科技有限公司 基于aes算法的加解密方法及加解密器
US20140208099A1 (en) * 2013-01-21 2014-07-24 Alcatel-Lucent Canada Inc. Service plane encryption in ip/mpls networks
CN104284208A (zh) * 2014-10-23 2015-01-14 航天数字传媒有限公司 通过aes-cbc算法进行并行加密的方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7818563B1 (en) * 2004-06-04 2010-10-19 Advanced Micro Devices, Inc. Method to maximize hardware utilization in flow-thru IPsec processing
CN102223228A (zh) * 2011-05-11 2011-10-19 北京航空航天大学 基于fpga的aes加密芯片设计方法及嵌入式加密系统
CN102801519A (zh) * 2012-07-10 2012-11-28 记忆科技(深圳)有限公司 一种实现aes加解密的方法及装置
US20140208099A1 (en) * 2013-01-21 2014-07-24 Alcatel-Lucent Canada Inc. Service plane encryption in ip/mpls networks
CN103516512A (zh) * 2013-10-21 2014-01-15 深圳市芯通信息科技有限公司 基于aes算法的加解密方法及加解密器
CN104284208A (zh) * 2014-10-23 2015-01-14 航天数字传媒有限公司 通过aes-cbc算法进行并行加密的方法及系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
刘建立: "AES加密机制在IPSec协议中的应用研究及其硬件实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
刘楠: "面向CBC模式的AES高速芯片设计与实现", 《电子技术应用》 *
刘航: "工作于CBC模式的AES算法可重配置硬件实现", 《计算机应用》 *
朱金修: "基于FPGA技术的高性能AES_CBC算法的实现研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108197504A (zh) * 2017-12-28 2018-06-22 湖南国科微电子股份有限公司 一种可控数据加解密系统及方法
CN108197504B (zh) * 2017-12-28 2022-01-11 湖南国科微电子股份有限公司 一种可控数据加解密系统及方法

Also Published As

Publication number Publication date
CN106034022B (zh) 2019-11-26

Similar Documents

Publication Publication Date Title
CN105099672B (zh) 混合加密方法及实现该方法的装置
CN101588233B (zh) 一种无线传感器网络节点应用中aes协处理器中的模块复用方法
CN102710415B (zh) 一种利用对称密码算法进行数据加解密的方法及查表装置
CN104639314A (zh) 基于aes加密/解密算法的装置和流水控制方法
CN106921487A (zh) 可重构s盒电路结构
CN101478392B (zh) 利用vlsi实现128位密钥长度aes算法的装置
CN103812641A (zh) 一种实现sm4分组对称密码算法的系统
CN207184503U (zh) 可重构s盒电路结构
CN106034021B (zh) 轻量级双模兼容aes加解密模块及其方法
CN102801519A (zh) 一种实现aes加解密的方法及装置
Guan et al. Implementation of SM4 on FPGA: Trade-off analysis between area and speed
Banik et al. Compact circuits for combined AES encryption/decryption
CN107181586A (zh) 可重构s盒电路结构
CN101729242A (zh) 对称分组密码的生成方法及其装置
CN102752107B (zh) 实现rc4加/解密的装置及其方法
CN104219045B (zh) Rc4 流密码生成器
CN206585573U (zh) 可重构s盒电路结构
CN103427981A (zh) 一种实现加密、解密的方法以及装置
CN101588234B (zh) 一种aes中列混合变换模块的加解密复用方法
CN109150497A (zh) 一种高性能小面积的xts-sm4加密电路
CN102857334B (zh) 一种实现aes加解密的方法及装置
CN101515853B (zh) 信息终端及其信息安全装置
CN109150495A (zh) 一种轮变换复用电路及其aes解密电路
CN108933652A (zh) 一种普通轮变换运算单元、普通轮变换电路及aes解密电路
CN106034022A (zh) Cbc模式下的aes加解密装置及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant