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

文档序号:10666299阅读:655来源:国知局
Cbc模式下的aes加解密装置及方法
【专利摘要】本发明公开了一种CBC模式下的AES加解密装置及其方法,该加解密装置包括:输入输出模块,接收上层的输入数据和控制信号并向上层发送处理好的数据和控制信号;反馈及累加模块,根据控制信号完成对输入和输出数据的反馈和累加;AES核模块,根据不同的控制信号完成对输入数据的加解密,所述AES核模块选用128bit密钥长度单模式,采用迭代运算对待加/解密数据进行加解密,每轮迭代运算包括行变换、字节替换、列混淆、轮密钥加,所述AES核模块采用加解密复用组合S盒结构,并采用双路AES报文级实现加解密,本发明实现了较小的面积和较高吞吐量,并且通过报文级并行处理的方法,能够通过双路实现1Gbps以上的吞吐量。
【专利说明】
CBC模式下的AES加解密装置及方法
技术领域
[0001] 本发明涉及一种AES加解密装置及方法,特别是涉及一种满足IGbps以上吞吐量 要求的双路AES反馈结构的CBC模式下的AES加解密装置及方法。
【背景技术】
[0002] AES (Advanced Encryption Standard,高级加密标准)算法自从 2001 年被 NIST 机构采纳为标准算法以来,因为安全性、复杂度、速度等方面的均衡性优点,被多种通信系 统采纳为加密算法。在吞吐量要求较高的通信场合,硬件实现比软件实现具有更高的速率。 随着SOC (片上系统)等技术的发展,系统的集成度越来越高,对于不同吞吐量及应用模式 的AES芯片实现与集成都有着相当的需求。
[0003]目前的AES硬件实现在兼容实现、高吞吐量和小面积实现等方面都具有一定的研 究成果,但在定制化应用方面,结合IGbps左右吞吐量和较高的安全性要求,还需要提出面 积、性能上均衡的结构设计。S盒是AES算法中影响安全、面积和功率的关键性构件。高速 算法通常采用查找表型S盒,造成极大的面积和功耗代价,并且因为查找表型S盒与功率的 线性相关度较高,从而影响其安全性。采用组合算法S盒的设计常常无法取得较高的吞吐 量,并且在CBC(Cypher block chaining,密码段链接)反馈模式中,无法实现实时的并行设 计。

【发明内容】

[0004] 为克服上述现有技术存在的不足,本发明之一目的在于提供一种CBC模式下的 AES加解密装置及方法,采用20个S盒最小周期算法,采用组合S盒、加密和解密功能兼 容,通过紧凑设计,选择128bit长度密钥这一部分协议指定的MAC (接入介质)层的密钥长 度,实现了较小的面积和较高吞吐量,并且通过报文级并行处理的方法,能够通过双路实现 IGbps以上的吞吐量。
[0005] 为达上述及其它目的,本发明提出一种CBC模式下的AES加解密装置,包括:
[0006] 输入输出模块,接收上层的输入数据和控制信号并向上层发送处理好的数据和控 制信号;
[0007] 反馈及累加模块,根据控制信号完成对输入和输出数据的反馈和累加;
[0008] AES核模块,根据不同的控制信号完成对输入数据的加解密,所述AES核模块选用 128bit密钥长度单模式,采用迭代运算对待加/解密数据进行加解密,每轮迭代运算包括 行变换、字节替换、列混淆、轮密钥加,所述AES核模块采用加解密复用组合S盒结构,并采 用双路AES报文级实现加解密。
[0009] 进一步地,所述输入输出模块接收来自上层的报文头标志(hd)、输入数据控制信 号(ld)、加解密控制信号(enc)、输入数据(Data_in)、输入密钥(Key_in)、初始向量(IV) 输入,向上层传递工作状态标志(Idle)和输出数据(Data_out)。
[0010] 进一步地,所述反馈及累加模块包括多路器(203、204、205、206)以及累加器 (201、202),所述报文头标志〇1(1)经所述输入输出模块连接至多路器(203、204)的控制端, 加解密控制信号(enc)经所述输入输出模块连接至多路器(205、206)的控制端,初始向 量(IV)经所述输入输出模块连接至多路器(203、204)的1输入端,当前输入数据(Data_ in (i))经所述输入输出模块连接至累加器(201)的一输入端和多路器(205)的O输入端, 前一时刻输入数据(Data_in(i-1))经所述输入输出模块连接至所述多路器(204)的0输 入端,前一时刻输出数据(Data_out(i-l))连接至多路器(203)的0输入端,多路器(203) 的输出连接至累加器(201)的另一输入端,累加器(201)的输出连接至多路器(205)的1 输入端,多路器(205)的输出端连接至所述AES核模块,多路器(204)的输出端连接至累加 器(202)的一输入端,当前输出数据(Data_out(i))连接至多路器(206)的1输入端和累 加器(202)的另一输入端,累加器(202)的输出端连接至多路器(206)的0输入端,多路器 (206)的输出连接至所述输入输出模块,累加器(201)输出的AES输入控制信号连接至所述 AES核模块,所述密钥输入(Keyjn)经所述输入输出模块连接至所述AES核模块,所述AES 核模块将加解密结束信号连接至所述输入输出模块。
[0011] 进一步地,所述AES核模块为两个相同的对称结构,所有AES核模块和所述输入输 出模块间的连线均是双路控制的,并共用同一个输入输出模块向外输出。
[0012] 进一步地,所述AES核模块每轮运算调用20个组合逻辑S盒,16个S盒分配给主 状态矩阵计算,4个S盒分配给密钥拓展用于并行产生下一轮运算产生密钥。
[0013] 进一步地,所述AES核模块于每轮运算的第1个时钟周期,主状态矩阵挂起,密钥 拓展产生用于首轮运算的密钥,之后10个时钟周期完成加密/解密运算。
[0014] 进一步地,所述组合S盒调用两个多路器、一个求逆运算、一个仿射和一个逆仿射 模块,加密时加解密控制信号(enc)控制多路器输出选择依次进行求逆运算和仿射,解密 时加解密控制信号(enc)控制多路器输出选择依次进行逆仿射和求逆运算。
[0015] 为达到上述目的,本发明还提供一种CBC模式下的AES加密方法,包括如下步骤:
[0016] 步骤一,第一周期,当AES核模块为idle状态时,向输入输出控制模块发送的加解 密结束信号(fin)为高电平,所述输入输出模块接收上层的数据输入控制信号(Id),所述 数据输入控制信号(Id)为高电平时,开始读入数据;
[0017] 步骤二,第二周期,输入数据在报文头标志(hd)和加解密控制信号(enc)控制下 进行反馈与累加模块的运算;
[0018] 步骤三,于第3周期,所述AES核模块读入本次加密运算的明文、密钥和加解密控 制信号(enc);
[0019] 步骤四,第4周期计算首轮所需加密密钥,第5-14周期进行10轮加密迭代运算, 每轮迭代运算包括行变换、S变换、列混淆、轮密钥加步骤,最后一轮运算跳过列混淆,第14 周期得到加密结果通过所述输入输出控制模块输出给上层,计算完成后加解密结束信号 (fin)置高电平;
[0020] 进一步地,步骤二中,若报文头标志(hd)为高电平,多路选择器(203)输出初始向 量(IV),累加器(201)输出初始向量(IV)与输入数据(Datajn)的异或结果,多路选择器 (205)输出异或结果至AES核模块;报文头标志(hd)为低电平时,多路选择器(203)输出上 一次AES核模块输出(Data_out(i-l)),累加器(201)输出AES核模块的上一次输出(Data_ out(i-l))和当前输入(Datajn)的异或结果,多路选择器(205)输出异或结果至AES核模 块作为AES核模块的输入。
[0021] 为达到上述目的,本发明还提供一种CBC模式下的AES解密方法,包括如下步骤:
[0022] 步骤一,第1周期,将AES输入控制信号(kid)置为高,指示AES核模块读入数据;
[0023] 步骤二,AES核模块读入本次解密运算的密文、密钥和加解密控制信号(enc);
[0024] 步骤三,第3周期计算首轮所需解密密钥,第4到13周期进行10轮解密运算,每轮 解密运算包括行变换、S变换、列混淆、轮密钥加步骤,最后一轮跳过列混淆,第13周期得到 解密结果输出到所述输入输出控制模块,计算完成后,将加解密结束信号(fin)置高电平;
[0025] 步骤四,反馈及累加模块在报文头标志(hd)和加解密控制信号(enc)控制下进行 累加运算并输出。
[0026] 与现有技术相比,本发明一种CBC模式下的AES加解密装置及方法通过采用20个 S盒最小周期算法,采用组合S盒,加密和解密功能兼容,并通过紧凑设计,选择128bit长 度密钥这一部分协议指定的MC(接入介质)层的密钥长度,实现了较小的面积和较高吞吐 量,并且通过报文级并行处理的方法,能够通过双路实现IGbps以上的吞吐量,适用于各类 网络路由器等高吞吐量场合的应用。
【附图说明】
[0027] 图1为本发明一种CBC模式下的AES加解密装置的结构示意图;
[0028] 图2为本发明的状态跳转示意图;
[0029] 图3为本发明中S变换采用的组合逻辑S盒结构图;
[0030] 图4为本发明中AES核模块的电路调用结构示意图;
[0031] 图5为本发明的密钥与状态矩阵并行处理示意图;
[0032] 图6为本发明一种CBC模式下的AES加密方法的步骤流程图;
[0033] 图7为本发明一种CBC模式下的AES解密方法的步骤流程图。
【具体实施方式】
[0034] 以下通过特定的具体实例并结合【附图说明】本发明的实施方式,本领域技术人员可 由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同 的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离 本发明的精神下进行各种修饰与变更。
[0035] 图1为本发明一种CBC模式下的AES加解密装置的结构示意图。如图1所示,本 发明一种CBC模式下的AEC加解密装置,包括:输入输出模块10 (I/OControl)、反馈及累加 模块20和AES核模块30,输入输出模块10接收上层的输入数据和控制信号并向上层发送 处理好的数据和控制信号,反馈及累加模块20根据控制信号完成对输入和输出数据的反 馈和累加,AES核模块30根据不同的控制信号完成对输入数据的加解密。
[0036] 来自上层的报文头标志hd(指示报文头)、输入数据控制信号Id(指示数据读 入)、加解密控制信号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_xorl连接至多 路器205的1输入端,多路器205的输出端连接至AES核模块30,多路器204的输出端连接 至累加器202的一输入端,当前输出数据Data_out (i)连接至多路器206的1输入端和累 加器202的另一输入端,累加器202的输出端连接至多路器206的0输入端,多路器206的 输出连接至输入输出模块l〇,AES输入控制信号kid连接至AES核模块30 (图中未示出); 密钥输入Key_in经输入输出模块10连接至AES核模块30, AES核模块30将加解密结束信 号fin(finl/fin2)连接至输入输出模块10,其高电平触发本发明进入空闲状态,上层可以 经Data_out端口读取数据,AES核模块30选用128bit密钥长度单模式,并采用加解密复 用组合S盒结构,采用双路AES报文级并行处理,实现对数据的加解密。
[0037] 本发明的输入既包含Data_in(i)又包括Data_in(i_l),因 Data_in在输入输出模 块中为寄存器结构,在进行某轮运算时,上一次运算的Data_in(i_l)将不会被保留,因而 需要另外一组寄存器来动态存储上一轮Data_in的值。但Data_out(i)和Data_out(i_l) 因为输出发生在连续两个周期,故而可以共用同一个输出端口。
[0038] 在此需说明的是,本发明中AES核模块为两个相同的对称结构,图1中连线为简洁 性考虑仅以一片AES核模块的连线示例。实际设计中所有AES核模块和输入输出模块间的 连线均是双路控制的,并共用同一个输入输出模块向外输出。两片AES core的忙闲状态是 相互独立的,由两个fin信号反馈给输入输出模块,计算任务通过输入输出模块动态分配 给两片AES core。Idle信号在有一片AES core为闲的状态下即可触发,并请求数据输入, 每次输入一组128bit的Data_in和一组128bit的Key_in。在两片均为闲的状态,输入输 出模块前后两周期内读入两组Data_in和Key_in先向约定的AES corel输入数据,下一周 期再向AES core2输入数据。输出数据时,若两片AES core同时完成计算,在前后两个周 期内依次输出AES corel和AES_core2的计算结果。
[0039] 以下配合图1说明本发明的工作过程:
[0040] 1、加密过程
[0041] 第1周期:当AES核模块30为idle (闲)状态时,向输入输出模块10发送的加 解密结束信号fin为高电平,表示可以接收数据。输入输出模块10接收上层HLEQiigher layer entity)的数据输入控制信号ld,数据输入控制信号Id为高电平时,开始读入数据。
[0042] 第2周期:输入数据在报文头标志hd和加解密控制信号enc控制下进行累加模 块的运算。加解密控制信号enc为高电平时,此时进行加密计算,若HLE输入信号报文头 标志hd为高电平,指示当前加密数据为报文头,多路选择器203输出IV,累加器201输出 IVQnitial vector初始向量)与输入数据Data_in的异或结果Data_xorl,多路选择器 205输出异或结果Data_xorl至AES核模块30 ;报文头标志hd为低电平时,说明此时计算 需接受上一轮运算的反馈,多路选择器203输出上一次AES核模块输出Data_out (i-Ι),累 加器201输出AES核模块30的上一次输出Data_out (i-1)和当前输入Data_in的异或结 果,多路选择器205输出Data_xorl至AES核模块30作为AES加密算法的输入。当累加器 201输出的AES输入控制信号kid (累加模块对AES输入的控制信号,用来使AES核模块进 入读数模式)置为高时,累加器准备向AES核模块输入信号。
[0043] 第3周期:AES核模块读入本次加密运算的明文、密钥和加解密控制信号enc ;fin 置为0,表不开始工作;
[0044] 第4-14周期:第4周期计算首轮所需加密密钥。5-14周期进行10轮加密迭代运 算。每轮迭代运算包括行变换、字节替换、列混淆、轮密钥加等步骤,最后一轮运算(第14周 期)跳过列混淆。14周期得到加密结果Data_out通过输入输出控制模块10输出给HLE。 计算完成后加解密结束信号fin置高电平,表明可以进行下一次计算。
[0045] 2、解密过程:
[0046] 第1周期:与加密过程相同。并将AES输入控制信号kid置为高,指示AES核模块 读入数据。
[0047] 第2周期:AES核模块读入本次解密运算的密文、密钥和加解密控制信号enc,加解 密结束信号fin置为0,表示开始工作;计算完成后,加解密结束信号fin置高电平,表明可 以进行下一次计算。
[0048] 第3-13周期:第3周期计算首轮所需解密密钥。4到13周期进行10轮解密运算, 每轮解密运算包括行变换、S变换、列混淆、轮密钥加等步骤,最后一轮(13周期)跳过列混 淆。13周期得到解密结果输出到输入输出控制模块10。计算完成后,加解密结束信号fin 置高电平,表明可以进行下一次计算。
[0049] 第14周期:反馈及累加模块20在报文头标志hd和加解密控制信号enc控制下进 行累加运算并输出。加解密控制信号enc为低电平表明此时进行解密运算,若HLE输入信 号报文头标志hd为高电平,指示当前解密数据为报文头,多路选择器204输出IV,累加器 202输出IV与输入数据Data_out (i)的异或结果Data_xor2,多路选择器206输出异或结 果Data_x〇r2至输入输出控制模块10 ;报文头标志hd为低电平时,说明此时运算需接受上 一轮计算的反馈,多路选择器204输出上一轮输入数据Data_in(i-1),累加器202输出上一 轮输入数据Data_in(i_l)与当前AES核模块的输出Data_out(i)的异或结果Data_xor2, 多路选择器206输出异或结果Data_xor2至输入输出控制模块10,并将其作为对HLE的输 出。
[0050] 图2为本发明的状态跳转示意图。本发明主状态机主要包括Idle、Load(读数)、 Xor (累加)和Encrypt/Decrypt (加/解密)等状态,如图2所示。当有一路加解密结束信 号fin为高时进入Idle状态向上层请求数据,即finl = 1或fin2 = 1均跳转至Idle状 态;上层数据准备好后数据输入控制信号Id置高即Id = 1进入数据载入Loadl状态;读 入上层数据后对加解密控制信号enc状态进行判断是进入累加状态Xor或向AES core输 入数据,当加解密控制信号enc信号为1时,先进入累加状态Xor,累加完成后将kid置1, 再进入load2状态,当加解密控制信号enc信号为0时,直接进入数据载入load2状态;数 据载入完即进入加解密Encrypt/Decrypt状态进行加密或解密运算;完成加密或解密运算 后,再次对加解密控制信号enc进行判断是否经过Xor状态,若加解密控制信号enc为1时 (加密),则直接将加解密结束信号fin置1,进入Idle状态,若加解密控制信号enc为0, 则先进入累加 Xor状态,然后再将加解密结束信号fin置1进入Idle状态。
[0051] 图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(2 S)有限域上的求逆运算转换 到GF(24)上进行。也就是说,每个S盒设计结构上需要调用两个多路器、一个求逆运算、一 个仿射和一个逆仿射模块。
[0052] 图4为本发明中AES核模块的电路调用结构示意图。括号内为调用该模块个数。 图中各部分的含义如下:
[0053] CBC : CBC 顶层控制
[0054] AES :AES 实现模块
[0055] Sbos:S 盒结构
[0056] MixColumn :列混淆模块
[0057] Key-expand :密钥拓展模块
[0058] Mux :双路选择器
[0059] G8_inverse :有限域 GF (28)上求逆
[0060] Affine :仿射变换函数
[0061] Affine Inverse :逆仿射变换
[0062] Mix :列混淆控制
[0063] Inv Mix :逆列混淆控制
[0064] Rcon :轮常数函数
[0065] G8_G4 :GF(2S)到 GF(24)上变换
[0066] G4 - inverse :有限域 GF O 上求逆
[0067] Gsquare :GF(24)平方运算
[0068] Gmule :GF(24)常数乘法运算
[0069] Gmul4 :GF (24)乘法运算
[0070] Xtime :GF (2s)上左移一位
[0071] X2time :GF(2S)上左移两位
[0072] 除第1个周期用于产生首轮密钥外,行变换、S变换和列混淆和轮密钥加都在1个 周期内完成。128bit输入数据在AES计算中被存储于一个4X4的状态矩阵中。每个周期 中处理4次列混淆运算,故设计结构需调用四个MixColumn (列混淆)模块。将16个矩阵 元素都进行S变换,并产生4个密钥,从而采用20个S盒算法,每轮分配16个S盒进行主 状态矩阵的计算,4个S盒用于产生下一轮计算的密钥。
[0073] 如图5所示,本发明中,密钥拓展的计算与主状态机的计算并行完成,一次AES加 /解密运算共需11个周期完成。
[0074] 图6为本发明一种CBC模式下的AES加密方法的步骤流程图。如图6所示,本发 明一种CBC模式下的AES加密方法,包括如下步骤:
[0075] 步骤601,当AES核模块为idle (空闲)状态时,向输入输出控制模块发送的加解 密结束信号fin为高电平,表示可以接收数据。输入输出模块接收上层HLE(higher layer entity)的数据输入控制信号ld,数据输入控制信号Id为高电平时,开始读入数据,该步骤 完成在第1周期。
[0076] 步骤602,输入数据在报文头标志hd和加解密控制信号enc控制下进行反馈与累 加模块的运算。加解密控制信号enc为高电平时,此时进行加密计算,若HLE输入信号报文 头标志hd为高电平,指示当前加密数据为报文头,多路选择器203输出IV,累加器201输 出IVQnitial vector初始向量)与输入数据Data_in的异或结果Data_xorl,多路选择器 205输出异或结果Data_xorl至AES核模块30 ;报文头标志hd为低电平时,说明此时计算 需接受上一轮运算的反馈,多路选择器203输出上一次AES核模块输出Data_out (i-Ι),累 加器201输出AES核模块30的上一次输出Data_out (i-1)和当前输入Data_in的异或结 果,多路选择器205输出Data_xorl至AES核模块30作为AES加密算法的输入。当累加器 205输出的AES输入控制信号kid (累加模块对AES输入的控制信号,用来使AES核模块进 入读数模式)置为高时,累加器准备向AES核模块输入信号,本步骤实现在第2周期。
[0077] 步骤603,于第3周期,AES核模块读入本次加密运算的明文、密钥和加解密控制信 号enc ;f in置为0,表不开始工作。
[0078] 步骤604,第4周期计算首轮所需加密密钥。第5-14周期进行10轮加密迭代运 算。每轮迭代运算包括行变换、S变换、列混淆、轮密钥加等步骤,最后一轮运算跳过列混淆。 第14周期得到加密结果Data_out通过输入输出控制模块10输出给HLE。计算完成后加解 密结束信号fin置高电平,表明可以进行下一次计算。
[0079] 图7为本发明一种CBC模式下的AES解密方法的步骤流程图。如图7所示,本发 明一种CBC模式下的AES解密方法,包括如下步骤:
[0080] 步骤701,将将AES输入控制信号kid置为高,指示AES核模块读入数据,该步骤实 现在第1周期。
[0081] 步骤702,AES核模块读入本次解密运算的密文、密钥和加解密控制信号enc,加解 密结束信号fin置为0,表示开始工作;计算完成后,加解密结束信号fin置高电平,表明可 以进行下一次计算,该步骤实现在第2周期。
[0082] 步骤703,第3周期计算首轮所需解密密钥。第4到13周期进行10轮解密运算, 每轮解密运算包括行变换、S变换、列混淆、轮密钥加等步骤,最后一轮(13周期)跳过列混 淆。第13周期得到解密结果输出到输入输出控制模块10。计算完成后,加解密结束信号 fin置高电平,表明可以进行下一次计算。
[0083] 步骤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_l)与当前AES核模块的输出Data_out(i)的异或结果Data_xor2,多路选择 器206输出异或结果Data_xor2至输入输出控制模块10,并将其作为对HLE的输出。
[0084] 通过本发明如上设计组合逻辑S盒高吞吐量AES核模块单路吞吐量超过800Mbps, 从而在主模块CBC的控制下,双路流水线吞吐量超过lGbps。满足设计需求。
[0085] 本发明经过modelsim软件进行功能仿真,能够实现加解密,输入输出及反馈控 制等全部功能。之后经过ISE套件进行FPGA布线仿真,AES核模块单独运行,最高频率为 71. 9Mhz,单路最高吞吐率依据公式1计算可以达到837Mbps。双路并行超过I. 6Gbps。在 加入反馈控制后,双路超过I. 4Gbps。计入全部的读取周期后,吞吐率依然在IGbps以上。 测试结果提现出本算法在代价和性能方面取得了较好的均衡,功能性可靠。
[0086] 吞叶量二处理位数X最高频率 - 处理时钟周期 (公式1)
[0087] 可见,本发明一种CBC模式下的AES加解密装置及方法通过采用20个S盒最小周 期算法,采用组合S盒,加密和解密功能兼容,并通过紧凑设计,选择128bit长度密钥这一 部分协议指定的MAC(接入介质)层的密钥长度,实现了较小的面积和较高吞吐量,并且通 过报文级并行处理的方法,能够通过双路实现IGbps以上的吞吐量,适用于各类网络路由 器等高吞吐量场合的应用,可以通过FPGA配置到嵌入式系统,也可作为IP核应用于数字芯 片和片上系统,具有广阔的使用前景。
[0088] 与现有技术相比,本发明具有如下有益效果:
[0089] LAES核模块采用加解密复用组合S盒结构。组合S盒具有比查找表S盒更高的 安全性能,并且面积较小,功耗较低。加解密复用型S盒进一步减小模块面积。
[0090] 2.整体采用双路AES报文级并行处理。因为组合S盒关键路径较长的缺点,造成 吞吐量相对较低,而无法使用于高吞吐量的场合。虽然可以通过多路AES并行处理来弥补 这一缺陷,但AES-CBC因为前后两次运算的相关性,导致无法将一个完成的CBC加密/解密 链拆分进行并行处理。但在报文级处理时,不同报文间不具有这种CBC的反馈相关性。通过 上层的fifo(first in first out)结构,可允许对前后两段甚至多段不同长度的报文进行 并行处理,两路紧凑结构的AES加密模块互相独立进行加/解密运算,忙闲状态相互独立, 在低速率下甚至可以同时处理上行和下行数据,将可满足一般家庭网关等多个安全协议的 速率要求。
[0091] 3. AES核模块每轮运算调用20个S盒(Substitution-box,置换盒),16个S盒分 配给主状态矩阵计算,4个S盒分配给密钥拓展用于并行产生下一轮运算产生密钥。第1个 时钟周期,主状态矩阵挂起,密钥拓展模块产生用于首轮运算的密钥,之后10个时钟周期 完成加密/解密运算,实现该种结构下的理论最少计算周期。从而使双路报文处理达到较 高吞吐量要求。
[0092] 4. AES核模块选用128bit密钥长度单模式实现,以满足大多数协议要求。采用加 解密复用设计,S盒、行变换、列混淆等结构均包含加解密门级复用设计,进一步减小整体面 积。
[0093] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本 领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此, 本发明的权利保护范围,应如权利要求书所列。
【主权项】
1. 一种CBC模式下的AES加解密装置,包括: 输入输出模块,接收上层的输入数据和控制信号并向上层发送处理好的数据和控制信 号; 反馈及累加模块,根据控制信号完成对输入和输出数据的反馈和累加; AES核模块,根据不同的控制信号完成对输入数据的加解密,所述AES核模块选用 128bit密钥长度单模式,采用迭代运算对待加/解密数据进行加解密,每轮迭代运算包括 行变换、字节替换、列混淆、轮密钥加,所述AES核模块采用加解密复用组合S盒结构,并采 用双路AES报文级实现加解密。2. 如权利要求1所述的一种CBC模式下的AES加解密装置,其特征在于:所述输入输 出模块接收来自上层的报文头标志(hd)、输入数据控制信号(Id)、加解密控制信号(enc)、 输入数据(Data_in)、输入密钥(Key_in)、初始向量(IV)输入,向上层传递工作状态标志 (Idle)和输出数据(Data_out)。3. 如权利要求2所述的一种CBC模式下的AES加解密装置,其特征在于:所述反馈及 累加模块包括多路器(203、204、205、206)以及累加器(201、202),所述报文头标志〇1(1)经 所述输入输出模块连接至多路器(203、204)的控制端,加解密控制信号(enc)经所述输入 输出模块连接至多路器(205、206)的控制端,初始向量(IV)经所述输入输出模块连接至多 路器(203、204)的1输入端,当前输入数据(Data_in(i))经所述输入输出模块连接至累加 器(201)的一输入端和多路器(205)的0输入端,前一时刻输入数据(Data_in(i-1))经所 述输入输出模块连接至所述多路器(204)的0输入端,前一时刻输出数据(Data_out(i-l)) 连接至多路器(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)为高电平,所述输入输出模块接收上层的数据输入控制信号(Id),所述数据 输入控制信号(Id)为高电平时,开始读入数据; 步骤二,第二周期,输入数据在报文头标志(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-l)),累加器(201)输出AES核模块的上一次输出(Data_out(i-l))和当前输入 (Data_in)的异或结果,多路选择器(205)输出异或结果至AES核模块作为AES核模块的输 入。10. -种CBC模式下的AES解密方法,包括如下步骤: 步骤一,第1周期,将AES输入控制信号(kid)置为高,指示AES核模块读入数据; 步骤二,AES核模块读入本次解密运算的密文、密钥和加解密控制信号(enc); 步骤三,第3周期计算首轮所需解密密钥,第4到13周期进行10轮解密运算,每轮解 密运算包括行变换、S变换、列混淆、轮密钥加步骤,最后一轮跳过列混淆,第13周期得到解 密结果输出到所述输入输出控制模块,计算完成后,将加解密结束信号(fin)置高电平; 步骤四,反馈及累加模块在报文头标志(hd)和加解密控制信号(enc)控制下进行累加 运算并输出。
【文档编号】H04L9/06GK106034022SQ201510109337
【公开日】2016年10月19日
【申请日】2015年3月12日
【发明人】王凡琦, 庄健敏, 张钊锋, 封松林
【申请人】中国科学院上海高等研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1