CN106788976A - 一种aes加解密电路仿真分析方法及装置 - Google Patents
一种aes加解密电路仿真分析方法及装置 Download PDFInfo
- Publication number
- CN106788976A CN106788976A CN201611236322.1A CN201611236322A CN106788976A CN 106788976 A CN106788976 A CN 106788976A CN 201611236322 A CN201611236322 A CN 201611236322A CN 106788976 A CN106788976 A CN 106788976A
- Authority
- CN
- China
- Prior art keywords
- encryption
- decryption
- key
- aes
- data
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明实施例公开了一种AES加解密电路仿真分析方法及装置,用于解决现有的技术一般加上了数据冗余处理或者纠错码或者使用低轮AES加解密,数据冗余处理和纠错码一般用在高速的AES电路中,增加了模块,增加了不可确定性和复杂度,对于一些对速度要求没有那么高而对功耗面积比较敏感的设计来说不太适用的技术问题。
Description
技术领域
本发明涉及密码电路实现技术领域,尤其涉及一种AES加解密电路仿真分析方法及装置。
背景技术
AES(Advanced Encryption Standard,高级加密标准)是由美国国家标准与技术研究院2001年制定的新一代分组对称密码算法,用于取代原来的DES(Data EncryptionStandard,数据加密标准)。AES密码算法的数据分组长度为128比特,密钥长度有128,192和256比特三种。AES规定,根据这三种不同的密钥长度,加密过程分别需要进行10,12和14轮轮变换运算,每一个轮变换运算又包括字节替换,行移位,列混合和密钥加四个子运算,除了最后一轮。为了消除对称性,最后一轮轮变换不包含列混合运算,并且在第一轮轮变换运算之前加上一次密钥加运算。AES解密过程为加密过程的逆过程,因此也分别需要进行10,12和14轮轮变换运算,且每一轮轮变换包括逆字节替换,逆行移位,逆列混合和逆密钥加四个子运算,除了第一轮。第一轮轮变换不包括逆列混合运算,在最后一轮运算结束后还需要加上一次逆密钥加运算。
根据不同的应用需求,AES采用不同的实现架构。AES加/解密电路实现架构一般可分为两种:循环展开结构和全展开结构。循环展开结构中使用了Nk(1≤Nk≤Nr,Nr=10/12/14)个轮变换单元(包括独立的密钥加运算),与全展开结构相比,循环展开结构需要更小的电路面积,特别是当Nk=1时(Nk=1时又称为全循环结构),循环展开结构具有最小的电路面积。但循环展开结构需要迭代Nr/Nk次才能得到最终结果,因此数据处理速度比较低。循环展开结构用于要求电路面积小、数据速率不高的场合,如无线传感网,RFID等。循环展开结构还可以根据具体应用需求对电路面积和速度的进行折衷。全展开结构使用了Nr+1个轮变换电路单元,电路面积大,但数据不需要反馈,数据处理速度高。全展开结构还可以通过增加流水线级数的方式来加快数据处理速度。全展开结构适用于高速数据实时处理场合,如实时视频信号传输等。
现有的技术一般加上了数据冗余处理或者纠错码或者使用低轮AES加解密。数据冗余处理和纠错码一般用在高速的AES电路中,缺点就是增加了模块,增加了不可确定性和复杂度,对于高速加密处理的电路是比较好的,但是对于一些对速度要求没有那么高而对功耗面积比较敏感的设计来说不太适用。
发明内容
本发明实施例提供了一种AES加解密电路仿真分析方法及装置,解决了现有的技术一般加上了数据冗余处理或者纠错码或者使用低轮AES加解密,数据冗余处理和纠错码一般用在高速的AES电路中,增加了模块,增加了不可确定性和复杂度,对于一些对速度要求没有那么高而对功耗面积比较敏感的设计来说不太适用的技术问题。
本发明实施例提供的一种AES加解密电路仿真分析方法包括:
S1:通过JAVA对确定AES加解密算法进行是否可实现的仿真验证;
S2:确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块的划分;
S3:根据AES加解密功能结构模块通过编写的RTL代码生成AES加解密电路,并通过VCS仿真验证AES加解密电路是否可实现的仿真操作;
S4:通过DC综合软件对VCS仿真验证后的AES加解密电路进行时序和功耗分析。
优选地,
所述AES加解密算法包括:
输入待加密数据或待解密数据,将所述待加密数据或待加密数据与子密钥进行密钥运算操作;
加载加密控制信号或解密控制信号;
在所述加密控制信号的控制下通过单次加密迭代步骤在加解密迭代复用模块上进行10次加密迭代操作,并通过单次解密迭代步骤在所述解密控制信号的控制下在加解密迭代复用模块上进行10次解密迭代操作。
优选地,
所述步骤S2具体包括:
确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块分别为顶层电路结构模块、查找表模块、密钥扩展模块、轮常量发生器模块的划分。
优选地,
所述单次加密迭代步骤为:
a1:对输入的数据进行S盒置换操作;
a2:对经S盒置换输出的数据的每一行进行移字节操作;
a3:将经数据行移位变换输出的数据通过右乘一个矩阵进行混列变换操作;
a4:在加密控制信号的控制下,由密钥存储单元里存储的前一次加密迭代的子密钥获得本次加密迭代的子密钥;
a5:将经混列变换输出的数据与该次输入的子密钥进行密钥运算操作;
所述单次解密迭代步骤为:
b1:对输入的数据进行S盒逆置换操作;
b2:对经S盒逆置换输出的数据的每一行进行移字节的逆操作;
b3:在解密控制信号的控制下,由密钥存储单元里存储的前一次解密迭代的子密钥获得本次解密迭代的子密钥;
b4:将经数据行逆移位变换输出的数据与该次输入的子密钥进行密钥运算操作;
b5:将经密钥运算变换输出的数据通过右乘一个矩阵进行混列逆变换操作。
优选地,
所述步骤S4具体包括:
DC综合软件接收逻辑库对VCS仿真验证后的AES加解密电路进行约束,并与RTL代码进行逻辑综合生成网表,通过DC综合软件对所述网表进行时序和功耗分析。
本发明实施例中提供的一种AES加解密电路仿真分析装置,包括:
验证单元,用于通过JAVA对确定AES加解密算法进行是否可实现的仿真验证;
划分单元,用于确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块的划分;
仿真单元,用于根据AES加解密功能结构模块通过编写的RTL代码生成AES加解密电路,并通过VCS仿真验证AES加解密电路是否可实现的仿真操作;
分析单元,用于通过DC综合软件对VCS仿真验证后的AES加解密电路进行时序和功耗分析。
优选地,
所述验证单元具体包括:
验证子单元,具体用于通过JAVA对确定AES加解密算法子单元进行是否可实现的仿真验证;
AES加解密算法子单元具体包括:
输入模块,具体用于输入待加密数据或待解密数据;
密钥运算模块,具体用于将所述待加密数据或待加密数据与子密钥进行密钥运算操作;
加载模块,具体用于加载加密控制信号或解密控制信号;
加密迭代模块,具体用于在所述加密控制信号的控制下通过单次加密迭代步骤在加解密迭代复用模块上进行10次加密迭代操作;
解密迭代模块,具体用于通过单次解密迭代步骤在所述解密控制信号的控制下在加解密迭代复用模块上进行10次解密迭代操作。
优选地,
所述划分单元具体包括:
划分子单元,具体用于确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块分别为顶层电路结构模块、查找表模块、密钥扩展模块、轮常量发生器模块的划分。
优选地,
所述加密迭代模块具体包括:
加密S盒置换单元,具体用于对输入的数据进行S盒置换操作;
加密数据行移位单元,具体用于对加密S盒置换单元经S盒置换输出的数据的每一行进行移字节操作;
加密列混合单元,具体用于将经加密数据行移位单元变换输出的数据通过右乘一个矩阵进行混列变换操作;
加密子密钥获得单元,具体用于在加密控制信号的控制下,由密钥存储单元里存储的前一次加密迭代的子密钥获得本次加密迭代的子密钥;
加密密钥运算单元,具体用于将加密列混合单元经混列变换输出的数据与该次输入的子密钥进行密钥运算操作;
所述解密迭代模块具体包括:
解密S盒置换单元,具体用于对输入的数据进行S盒逆置换操作;
解密数据行移位单元,具体用于对经解密S盒置换单元逆置换输出的数据的每一行进行移字节的逆操作;
解密子密钥获得单元,具体用于在解密控制信号的控制下,由密钥存储单元里存储的前一次解密迭代的子密钥获得本次解密迭代的子密钥;
解密密钥运算单元,具体用于将解密数据行移位单元经数据行逆移位变换输出的数据与该次输入的子密钥进行密钥运算操作;
解密列混合单元,具体用于将解密密钥运算单元经密钥运算变换输出的数据通过右乘一个矩阵进行混列逆变换操作。
优选地,
所述分析单元具体包括:
生成子单元,具体用于DC综合软件接收逻辑库对VCS仿真验证后的AES加解密电路进行约束,并与RTL代码进行逻辑综合生成网表;
分析子单元,具体用于通过DC综合软件对所述网表进行时序和功耗分析。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中提供的一种AES加解密电路仿真分析方法及装置,其中一种AES加解密电路仿真分析方法包括:S1:通过JAVA对确定AES加解密算法进行是否可实现的仿真验证;S2:确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块的划分;S3:根据AES加解密功能结构模块通过编写的RTL代码生成AES加解密电路,并通过VCS仿真验证AES加解密电路是否可实现的仿真操作;S4:通过DC综合软件对VCS仿真验证后的AES加解密电路进行时序和功耗分析。本实施例中,通过逻辑综合来优化电路,实现了电路的低功耗,解决了现有的技术一般加上了数据冗余处理或者纠错码或者使用低轮AES加解密,数据冗余处理和纠错码一般用在高速的AES电路中,增加了模块,增加了不可确定性和复杂度,对于一些对速度要求没有那么高而对功耗面积比较敏感的设计来说不太适用的技术问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1本发明实施例中提供的一种AES加解密电路仿真分析方法的一个实施例的流程示意图;
图2本发明实施例中提供的一种AES加解密电路仿真分析方法的另一个实施例的流程示意图;
图3本发明实施例中提供的一种AES加解密电路仿真分析装置的一个实施例的流程示意图;
图4本发明实施例中提供的一种AES加解密电路仿真分析装置的另一个实施例的流程示意图;
图5本发明实施例中提供的一种AES加密过程对state的处理流程示意图;
图6本发明实施例中提供的一种AES加密过程对Round key的处理流程图;
图7本发明实施例中提供的一种Verilog代码顶层图;
图8本发明实施例中提供的一种字节替代流程示意图;
图9本发明实施例中提供的一种行移位流程示意图;
图10本发明实施例中提供的一种列混合流程示意图;
图11本发明实施例中提供的一种AES加解密电路在VCS中加入了测试脚本之后产生的电路图;
图12本发明实施例中提供的一种AES加解密电路在VCS中产生的波形图;
图13本发明实施例中提供的一种AES加密模块电路结构示意图;
图14本发明实施例中提供的一种AES解密模块电路结构示意图。
具体实施方式
本发明实施例提供了一种AES加解密电路仿真分析方法及装置,用于解决现有的技术一般加上了数据冗余处理或者纠错码或者使用低轮AES加解密,数据冗余处理和纠错码一般用在高速的AES电路中,增加了模块,增加了不可确定性和复杂度,对于一些对速度要求没有那么高而对功耗面积比较敏感的设计来说不太适用的技术问题。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例中提供的一种AES加解密电路仿真分析方法的一个实施例包括:
101、通过JAVA对确定AES加解密算法进行是否可实现的仿真验证;
102、确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块的划分;
103、根据AES加解密功能结构模块通过编写的RTL代码生成AES加解密电路,并通过VCS仿真验证AES加解密电路是否可实现的仿真操作;
104、通过DC综合软件对VCS仿真验证后的AES加解密电路进行时序和功耗分析。
上面是对一种AES加解密电路仿真分析方法进行详细的描述,下面将对一种AES加解密电路仿真分析方法的具体过程进行更详细的描述,请参阅图2,本发明实施例中提供的一种AES加解密电路仿真分析方法的另一个实施例包括:
201、通过JAVA对确定AES加解密算法进行是否可实现的仿真验证;
所述AES加解密算法包括:
输入待加密数据或待解密数据,将所述待加密数据或待加密数据与子密钥进行密钥运算操作;
加载加密控制信号或解密控制信号;
在所述加密控制信号的控制下通过单次加密迭代步骤在加解密迭代复用模块上进行10次加密迭代操作,并通过单次解密迭代步骤在所述解密控制信号的控制下在加解密迭代复用模块上进行10次解密迭代操作。
所述单次加密迭代步骤为:
a1:对输入的数据进行S盒置换操作;
a2:对经S盒置换输出的数据的每一行进行移字节操作;
a3:将经数据行移位变换输出的数据通过右乘一个矩阵进行混列变换操作;
a4:在加密控制信号的控制下,由密钥存储单元里存储的前一次加密迭代的子密钥获得本次加密迭代的子密钥;
a5:将经混列变换输出的数据与该次输入的子密钥进行密钥运算操作;
所述单次解密迭代步骤为:
b1:对输入的数据进行S盒逆置换操作;
b2:对经S盒逆置换输出的数据的每一行进行移字节的逆操作;
b3:在解密控制信号的控制下,由密钥存储单元里存储的前一次解密迭代的子密钥获得本次解密迭代的子密钥;
b4:将经数据行逆移位变换输出的数据与该次输入的子密钥进行密钥运算操作;
b5:将经密钥运算变换输出的数据通过右乘一个矩阵进行混列逆变换操作。
本设计的根源在于国家颁发的SM4标准协议,首先对算法进行分析,得到一个复杂的运算流,然后对运算流进行分析用java编程实现(验证算法和自己的理解是否正确),接着进行硬件设计。
AES加密过程是在一个4X4的字节矩阵上运行,这个矩阵又称为“体(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是区块中的一个Byte)。加密时,各轮AES加循环(除最后一轮处)均包含四个步骤:轮密钥加(AddRoundKey),字节替代(SubBytes),行位移(ShiftRows),列混合(MixColums)。方法包括:a、初始化数据,输入的待加密数据或待解密数据进行第一次迭代前,将其与子密钥进行密钥运算操作;b、加载加密控制信号或解密控制信号;c、在加密控制信号的控制下在加解密迭代复用模块上进行加密的9次迭代操作,在解密控制信号的控制下在加解密迭代复用模块上进行解密的9次迭代操作。
一、AES加密流程
AES加密的过程主要对两个量进行处理:state和round key,state的处理如图5所示,Round key处理过程如图6所示。
二、Verilog代码顶层:
经过代码阅读,把顶层图还有cell画进框图里面,Verilog代码顶层图如图7所示,其中源码框图如表1所示:
表1
三、处理过程:
AES加密处理主要还是4个过程,分别是:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)。解密过程分别为对应的逆操作。
1、SubBytes:
把矩阵的每个元素分成左右两个数,作为坐标在S-BOX中查找数值后替换。如图8所示:
2、Shiftrows:
对第n行进行左移n个单位,如图9所示:
3、Mixcolumns
基本的算法(还有其他的)为左乘一个特定矩阵,如图10所示:
4、Addroundkey
直接和对应坐标的round key相加。
AddRoundKey:此步骤中,回合密钥将与原矩阵合并。在每次的加密循环中,都会产生一把回合密钥,这把密钥大小会跟原矩阵一样,以与原矩阵中每个对应字节异或加法,在初始化的第一个回合中,State(状态变量)每个状态中的字节与对应Cipher_Key(变量名)的字节做异或(⊕)运算,生成的结果做为新的State,在后续的回合中State只与该回合中的Round Key做异或运算。
SubBytes:此步骤中,矩阵中的各个字节通过一个固定的S-BOX按公式2进行转换,即以State中16进制数为脚标去查S_box(查找表)中值,结果替换原State中的值。
ShiftRows:此步骤是对State的每一行进行左循环移位,移位次数与所在行n(0≤n≤3)有关,第n行移位n次。
MixColums:每一个起先的四个字节通过线性变换互相结合。每一直行的四个元素分别当作1,x,x2,x3的系数,合并即为GF(28)中的一个多项式,接着将此多项式和一个固定的多项式c(x)=3x2+x2+x+2在modulox4+1下相乘。或者通过左乘一个矩阵实现。
AES的解密过程与加密过程相反。
202、确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块分别为顶层电路结构模块、查找表模块、密钥扩展模块、轮常量发生器模块的划分;
硬件设计过程中首先是对电路模块进行划分,得到一个分好模块的顶层电路图。
请参阅图13,本发明实施例提供的一种AES加密电路模块结构示意图,AES加密电路一共由4个模块组成,分别是aes_cipher_top,aes_sbox,aes_key_expand_128,aes_rcon。
aes_cipher_top是顶层电路结构,字节替代模块、行位移模块、列混合模块、轮密钥加模块。
aes_sbox模块是一个查找表,在字节替代步奏中用密码流的脚标作为输入,输出结果将替代原密码流的值,实现字节替代。
aes_key_expand_128模块是密钥扩展模块,在每一次循环中产生新的密钥对每一次轮循环的密码流进行加密。
aes_rcon模块是轮常量发生器,在密钥扩展模块中使用。
电路运行时,只需要在key[127:0]和text_in[127:0]中输入128位的密钥和明文,并给ld一个下降沿,当done置一后就可以读取text_out[127:0]的密文。
请参阅图14,本发明实施例提供的一种AES解密电路模块结构示意图,AES解密电路一共由4个模块组成,分别是aes_decipher_top,aes_inv_sbox,aes_key_expand_128,aes_rcon。
aes_decipher_top是顶层电路结构,字节替代、行位移、列混合、轮密钥加步奏在这里进行,步奏与aes_cipher_top刚好相反。
aes_inv_sbox模块是一个查找表,在字节替代步奏中用密码流的脚标作为输入,输出结果将替代原密码流的值,实现字节替代。
aes_key_expand_128模块是密钥扩展模块,在每一次循环中产生新的密钥对每一次轮循环的密码流进行加密。
aes_rcon模块是轮常量发生器,在密钥扩展模块中使用。
电路运行时,只需要在key[127:0]和text_in[127:0]中输入128位的密钥和密文,并给ld一个下降沿,当done置一后就可以读取text_out[127:0]的明文。
203、根据AES加解密功能结构模块通过编写的RTL代码生成AES加解密电路,并通过VCS仿真验证AES加解密电路是否可实现的仿真操作;
硬件设计过程中首先是对电路模块进行划分,得到一个分好模块的顶层电路图,然后对每一个模块进行设计和验证(用VCS软件),当全部模块验证通过之后就将它们接入顶层的电路(顶层电路只有模块之间的连线信息),对整体进行仿真验证,当验证通过(波形图显示的输入输出和我们需要的一致)时,把RTL代码载入DC软件。
根据AES加解密功能结构模块通过编写的RTL代码生成AES加解密电路,并通过VCS仿真验证AES加解密电路是否可实现的仿真操作,图11是在VCS中加入了测试脚本之后产生的电路图:图12是在VCS中产生的波形图,通过对电路的输入添加激励源,产生输出。
其中AES加解密电路是由RTL级代码进行描述,编译器结合着工艺库生成的,与平时的板级的电路有些差别,板级的是实体电路,本发明生成的是网表,和实际电路有些差别,电路结构是由代码、约束文件和编译器还有工艺库共同生成的,电路结构在RTL代码中体现,通过编译器把结构优化成低功耗的电路,RTL代码可以把对电路的描述直接转换成能用的电路,电路实体结构是由RTL代码生成的,RTL代码是硬件语言,和软件语言有本质差别。
204、DC综合软件接收逻辑库对VCS仿真验证后的AES加解密电路进行约束,并与RTL代码进行逻辑综合生成网表,通过DC综合软件对所述网表进行时序和功耗分析。
DC中可以增加约束、对功耗、时序、面积进行约束,DC综合软件接收逻辑库对VCS仿真验证后的AES加解密电路进行约束,并与RTL代码进行逻辑综合生成网表,通过DC综合软件对所述网表进行时序和功耗分析,在DC软件中,我们加入tsmc 130nm的逻辑库、和对最终电路的约束,与RTL级代码进行逻辑综合(结果是一个网表),当网表生成的时候进行时序和功耗的报告,当报告不满足我们的要求时,打开网表的界面查看原因,对RTL级代码进行优化修改或更改约束条件,重复进行直到得到一个比较理想的结果,DC环境下通过report_timing命令产生的总体功耗报告:
DC环境下通过report_timing命令产生的部分功耗报告:
请参阅图3,本发明实施例提供的一种AES加解密电路仿真分析装置的一个实施例包括:
验证单元301,用于通过JAVA对确定AES加解密算法进行是否可实现的仿真验证;
划分单元302,用于确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块的划分;
仿真单元303,用于根据AES加解密功能结构模块通过编写的RTL代码生成AES加解密电路,并通过VCS仿真验证AES加解密电路是否可实现的仿真操作;
分析单元304,用于通过DC综合软件对VCS仿真验证后的AES加解密电路进行时序和功耗分析。
上面是对一种AES加解密电路仿真分析装置各单元进行详细的描述,下面将对一种AES加解密电路仿真分析装置各附加单元进行更详细的描述,请参阅图4,本发明实施例中提供的一种AES加解密电路仿真分析装置的另一个实施例包括:
验证单元401,用于通过JAVA对确定AES加解密算法进行是否可实现的仿真验证;
所述验证单元401具体包括:
验证子单元4011,具体用于通过JAVA对确定AES加解密算法子单元4012进行是否可实现的仿真验证;
AES加解密算法子单元4012具体包括:
输入模块40121,具体用于输入待加密数据或待解密数据;
密钥运算模块40122,具体用于将所述待加密数据或待加密数据与子密钥进行密钥运算操作;
加载模块40123,具体用于加载加密控制信号或解密控制信号;
加密迭代模块40124,具体用于在所述加密控制信号的控制下通过单次加密迭代步骤在加解密迭代复用模块上进行10次加密迭代操作;
解密迭代模块40125,具体用于通过单次解密迭代步骤在所述解密控制信号的控制下在加解密迭代复用模块上进行10次解密迭代操作。
所述加密迭代模块40124具体包括:
加密S盒置换单元401241,具体用于对输入的数据进行S盒置换操作;
加密数据行移位单元401242,具体用于对加密S盒置换单元401241经S盒置换输出的数据的每一行进行移字节操作;
加密列混合单元401243,具体用于将经加密数据行移位单元401242变换输出的数据通过右乘一个矩阵进行混列变换操作;
加密子密钥获得单元401244,具体用于在加密控制信号的控制下,由密钥存储单元里存储的前一次加密迭代的子密钥获得本次加密迭代的子密钥;
加密密钥运算单元401245,具体用于将加密列混合单元401243经混列变换输出的数据与该次输入的子密钥进行密钥运算操作;
所述解密迭代模块40125具体包括:
解密S盒置换单元401251,具体用于对输入的数据进行S盒逆置换操作;
解密数据行移位单元401252,具体用于对经解密S盒置换单元401251逆置换输出的数据的每一行进行移字节的逆操作;
解密子密钥获得单元401253,具体用于在解密控制信号的控制下,由密钥存储单元里存储的前一次解密迭代的子密钥获得本次解密迭代的子密钥;
解密密钥运算单元401254,具体用于将解密数据行移位单元401252经数据行逆移位变换输出的数据与该次输入的子密钥进行密钥运算操作;
解密列混合单元401255,具体用于将解密密钥运算单元401254经密钥运算变换输出的数据通过右乘一个矩阵进行混列逆变换操作。
划分单元402,用于确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块的划分;
所述划分单元402具体包括:
划分子单元4021,具体用于确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块分别为顶层电路结构模块、查找表模块、密钥扩展模块、轮常量发生器模块的划分。
仿真单元403,用于根据AES加解密功能结构模块通过编写的RTL代码生成AES加解密电路,并通过VCS仿真验证AES加解密电路是否可实现的仿真操作;
分析单元404,用于通过DC综合软件对VCS仿真验证后的AES加解密电路进行时序和功耗分析。
所述分析单元404具体包括:
生成子单元4041,具体用于DC综合软件接收逻辑库对VCS仿真验证后的AES加解密电路进行约束,并与RTL代码进行逻辑综合生成网表;
分析子单元4042,具体用于通过DC综合软件对所述网表进行时序和功耗分析。
本发明根据国家颁发的SM4标准协议,首先对算法进行分析,得到一个复杂的运算流,然后对运算流进行分析用java编程实现(验证算法和自己的理解是否正确),接着进行硬件设计,硬件设计过程中首先是对电路模块进行划分,得到一个分好模块的顶层电路图,然后对每一个模块进行设计和验证(用VCS软件),当全部模块验证通过之后就将它们接入顶层的电路(顶层电路只有模块之间的连线信息),对整体进行仿真验证,当验证通过(波形图显示的输入输出和我们需要的一致)时,把RTL代码载入DC软件,在DC软件中,加入tsmc130nm的逻辑库、和对最终电路的约束,与RTL级代码进行逻辑综合(结果是一个网表),当网表生成的时候进行时序和功耗的报告,当报告不满足我们的要求时,打开网表的界面查看原因,对RTL级代码进行优化修改或更改约束条件,重复进行直到得到一个比较理想的结果。
本发明公开了一种128位国密算法(AES)的加密方法及低功耗小面积硬件***设计,相关***包括:AES加密模块,用于利用获取到的AES高级加密标准密钥对输入的数据进行AES加密,获得AES密文数据;AES解密模块:用于对获取到的密文通过私钥进行解密,获得明文数据;密钥扩展模块:加密算法使用了一个由种子密钥字节数组生成的密钥调度表,从本质上讲,从一个原始密钥中生成多重密钥以代替使用单个密钥大大增加了比特位的扩散;替换表模块:使用替换表对一给定的一行密钥调度表进行逐字节替换。本发明公开的方法及***,可以在具有误码、需要纠错的应用中以较小的计算资源消耗(包括软件计算时的CPU时间消耗,硬件计算时的面积、功耗消耗)实现较好的AES加密和解密性能。方法包括:a、初始化数据,输入的待加密数据或待解密数据进行第一次迭代前,将其与子密钥进行密钥运算操作;b、加载加密控制信号或解密控制信号;c、在加密控制信号的控制下在加解密迭代复用模块上进行加密的10次迭代操作,在解密控制信号的控制下在加解密迭代复用模块上进行解密的10次迭代操作。本实施例中,通过JAVA对确定AES加解密算法进行是否可实现的仿真验证;确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块的划分;根据AES加解密功能结构模块通过编写的RTL代码生成AES加解密电路,并通过VCS仿真验证AES加解密电路是否可实现的仿真操作;通过DC综合软件对VCS仿真验证后的AES加解密电路进行时序和功耗分析,实现了简化AES算法设计的电路规模,减小电路设计的面积开销,降低功耗和成本等优点,解决了一般便携性设备或低功耗设备或对成本比较敏感的设计对AES加解密需求的问题,并且电路结构具有体积小功耗低可靠性强的特点,能够满足大部分的需要;采用了硬件复用的方法对轮循环部分进行硬件循环,避免了因循环次数增加而增加的硬件,结构稳定,易用性强;采用的非常科学的设计流程,采取迭代设计的方法,在设计的每一步都有验证工作,保证了最终的时序功耗面积能满足要求。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种AES加解密电路仿真分析方法,其特征在于,包括:
S1:通过JAVA对确定AES加解密算法进行是否可实现的仿真验证;
S2:确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块的划分;
S3:根据AES加解密功能结构模块通过编写的RTL代码生成AES加解密电路,并通过VCS仿真验证AES加解密电路是否可实现的仿真操作;
S4:通过DC综合软件对VCS仿真验证后的AES加解密电路进行时序和功耗分析。
2.根据权利要求1所述的AES加解密电路仿真分析方法,其特征在于,
所述AES加解密算法包括:
输入待加密数据或待解密数据,将所述待加密数据或待加密数据与子密钥进行密钥运算操作;
加载加密控制信号或解密控制信号;
在所述加密控制信号的控制下通过单次加密迭代步骤在加解密迭代复用模块上进行10次加密迭代操作,并通过单次解密迭代步骤在所述解密控制信号的控制下在加解密迭代复用模块上进行10次解密迭代操作。
3.根据权利要求2所述的AES加解密电路仿真分析方法,其特征在于,所述步骤S2具体包括:
确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块分别为顶层电路结构模块、查找表模块、密钥扩展模块、轮常量发生器模块的划分。
4.根据权利要求3所述的AES加解密电路仿真分析方法,其特征在于,
所述单次加密迭代步骤为:
a1:对输入的数据进行S盒置换操作;
a2:对经S盒置换输出的数据的每一行进行移字节操作;
a3:将经数据行移位变换输出的数据通过右乘一个矩阵进行混列变换操作;
a4:在加密控制信号的控制下,由密钥存储单元里存储的前一次加密迭代的子密钥获得本次加密迭代的子密钥;
a5:将经混列变换输出的数据与该次输入的子密钥进行密钥运算操作;
所述单次解密迭代步骤为:
b1:对输入的数据进行S盒逆置换操作;
b2:对经S盒逆置换输出的数据的每一行进行移字节的逆操作;
b3:在解密控制信号的控制下,由密钥存储单元里存储的前一次解密迭代的子密钥获得本次解密迭代的子密钥;
b4:将经数据行逆移位变换输出的数据与该次输入的子密钥进行密钥运算操作;
b5:将经密钥运算变换输出的数据通过右乘一个矩阵进行混列逆变换操作。
5.根据权利要求4所述的AES加解密电路仿真分析方法,其特征在于,所述步骤S4具体包括:
DC综合软件接收逻辑库对VCS仿真验证后的AES加解密电路进行约束,并与RTL代码进行逻辑综合生成网表,通过DC综合软件对所述网表进行时序和功耗分析。
6.一种AES加解密电路仿真分析装置,其特征在于,包括:
验证单元,用于通过JAVA对确定AES加解密算法进行是否可实现的仿真验证;
划分单元,用于确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块的划分;
仿真单元,用于根据AES加解密功能结构模块通过编写的RTL代码生成AES加解密电路,并通过VCS仿真验证AES加解密电路是否可实现的仿真操作;
分析单元,用于通过DC综合软件对VCS仿真验证后的AES加解密电路进行时序和功耗分析。
7.根据权利要求6所述的AES加解密电路仿真分析装置,其特征在于,
所述验证单元具体包括:
验证子单元,具体用于通过JAVA对确定AES加解密算法子单元进行是否可实现的仿真验证;
AES加解密算法子单元具体包括:
输入模块,具体用于输入待加密数据或待解密数据;
密钥运算模块,具体用于将所述待加密数据或待加密数据与子密钥进行密钥运算操作;
加载模块,具体用于加载加密控制信号或解密控制信号;
加密迭代模块,具体用于在所述加密控制信号的控制下通过单次加密迭代步骤在加解密迭代复用模块上进行10次加密迭代操作;
解密迭代模块,具体用于通过单次解密迭代步骤在所述解密控制信号的控制下在加解密迭代复用模块上进行10次解密迭代操作。
8.根据权利要求7所述的AES加解密电路仿真分析装置,其特征在于,所述划分单元具体包括:
划分子单元,具体用于确定根据JAVA验证后的AES加解密算法对应的数据逻辑架构进行的AES加解密功能结构模块分别为顶层电路结构模块、查找表模块、密钥扩展模块、轮常量发生器模块的划分。
9.根据权利要求8所述的AES加解密电路仿真分析装置,其特征在于,
所述加密迭代模块具体包括:
加密S盒置换单元,具体用于对输入的数据进行S盒置换操作;
加密数据行移位单元,具体用于对加密S盒置换单元经S盒置换输出的数据的每一行进行移字节操作;
加密列混合单元,具体用于将经加密数据行移位单元变换输出的数据通过右乘一个矩阵进行混列变换操作;
加密子密钥获得单元,具体用于在加密控制信号的控制下,由密钥存储单元里存储的前一次加密迭代的子密钥获得本次加密迭代的子密钥;
加密密钥运算单元,具体用于将加密列混合单元经混列变换输出的数据与该次输入的子密钥进行密钥运算操作;
所述解密迭代模块具体包括:
解密S盒置换单元,具体用于对输入的数据进行S盒逆置换操作;
解密数据行移位单元,具体用于对经解密S盒置换单元逆置换输出的数据的每一行进行移字节的逆操作;
解密子密钥获得单元,具体用于在解密控制信号的控制下,由密钥存储单元里存储的前一次解密迭代的子密钥获得本次解密迭代的子密钥;
解密密钥运算单元,具体用于将解密数据行移位单元经数据行逆移位变换输出的数据与该次输入的子密钥进行密钥运算操作;
解密列混合单元,具体用于将解密密钥运算单元经密钥运算变换输出的数据通过右乘一个矩阵进行混列逆变换操作。
10.根据权利要求9所述的AES加解密电路仿真分析装置,其特征在于,所述分析单元具体包括:
生成子单元,具体用于DC综合软件接收逻辑库对VCS仿真验证后的AES加解密电路进行约束,并与RTL代码进行逻辑综合生成网表;
分析子单元,具体用于通过DC综合软件对所述网表进行时序和功耗分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611236322.1A CN106788976A (zh) | 2016-12-28 | 2016-12-28 | 一种aes加解密电路仿真分析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611236322.1A CN106788976A (zh) | 2016-12-28 | 2016-12-28 | 一种aes加解密电路仿真分析方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106788976A true CN106788976A (zh) | 2017-05-31 |
Family
ID=58925336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611236322.1A Pending CN106788976A (zh) | 2016-12-28 | 2016-12-28 | 一种aes加解密电路仿真分析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106788976A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109274482A (zh) * | 2018-08-24 | 2019-01-25 | 广东工业大学 | 一种基于s盒优化的aes算法硬件电路实现方法 |
CN110059492A (zh) * | 2019-04-01 | 2019-07-26 | 南京航空航天大学 | 一种基于双路互补结构的可检错aes加密电路 |
CN109284585B (zh) * | 2018-08-17 | 2020-12-22 | 网宿科技股份有限公司 | 一种脚本加密方法、脚本解密运行方法和相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1921382B (zh) * | 2006-09-06 | 2010-05-12 | 华为技术有限公司 | 一种基于aes算法的加解密方法及加解密器 |
US8612772B1 (en) * | 2004-09-10 | 2013-12-17 | Altera Corporation | Security core using soft key |
CN105933106A (zh) * | 2016-04-08 | 2016-09-07 | 广东工业大学 | 基于aes的网络信息加密ip核的设计与实现方法 |
-
2016
- 2016-12-28 CN CN201611236322.1A patent/CN106788976A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8612772B1 (en) * | 2004-09-10 | 2013-12-17 | Altera Corporation | Security core using soft key |
CN1921382B (zh) * | 2006-09-06 | 2010-05-12 | 华为技术有限公司 | 一种基于aes算法的加解密方法及加解密器 |
CN105933106A (zh) * | 2016-04-08 | 2016-09-07 | 广东工业大学 | 基于aes的网络信息加密ip核的设计与实现方法 |
Non-Patent Citations (4)
Title |
---|
于岩: "基于FPGA的AES算法研究与应用", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
张德学等: "一种基于FPGA的AES加解密算法设计与实现", 《中国科学技术大学学报》 * |
王春蕾: ""AES密码硬件实现方法研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
陈茂: "AES算法IP化的仿真综合验证研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284585B (zh) * | 2018-08-17 | 2020-12-22 | 网宿科技股份有限公司 | 一种脚本加密方法、脚本解密运行方法和相关装置 |
CN109274482A (zh) * | 2018-08-24 | 2019-01-25 | 广东工业大学 | 一种基于s盒优化的aes算法硬件电路实现方法 |
CN110059492A (zh) * | 2019-04-01 | 2019-07-26 | 南京航空航天大学 | 一种基于双路互补结构的可检错aes加密电路 |
CN110059492B (zh) * | 2019-04-01 | 2023-01-31 | 南京航空航天大学 | 一种基于双路互补结构的可检错aes加密电路 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102025484B (zh) | 一种分组密码加解密方法 | |
CN101626289B (zh) | Aes加密芯片的设计方法及电脑加密机 | |
CN101952870B (zh) | 数据转换器和数据转换方法 | |
CN103051442B (zh) | 采用Feistel-PG结构的密码装置及加密方法 | |
CN102223228A (zh) | 基于fpga的aes加密芯片设计方法及嵌入式加密*** | |
CN103503362B (zh) | 数据处理装置、数据处理方法以及程序 | |
CN102204158A (zh) | 低等待时间的分块密码术 | |
CN110784307B (zh) | 轻量级密码算法scenery实现方法、装置及存储介质 | |
CN105007154B (zh) | 一种基于aes算法的加密解密装置 | |
Schaumont et al. | Unlocking the design secrets of a 2.29 Gb/s Rijndael processor | |
CN106788976A (zh) | 一种aes加解密电路仿真分析方法及装置 | |
CN103297223A (zh) | 基于动态可重构的自恢复容错aes结构及其加密方法 | |
Shahmirzadi et al. | New first-order secure AES performance records | |
CN104484615B (zh) | 适用于可重构阵列架构的基于空间随机化抗故障攻击方法 | |
Noor et al. | Resource shared galois field computation for energy efficient AES/CRC in IoT applications | |
CN104158652B (zh) | 基于数据冗余实时检错机制的循环展开结构aes加/解密电路 | |
Cheng et al. | A reconfigurable and compact hardware architecture of CLEFIA block cipher with multi-configuration | |
CN105049203A (zh) | 一种支持多工作模式的可配置3des加解密算法电路 | |
CN111914307A (zh) | 基于高层次综合的国密算法sm4加速处理方法及*** | |
CN104158650B (zh) | 基于数据冗余检错机制的aes加/解密电路 | |
Rao et al. | An efficient high speed AES implementation using Traditional FPGA and LabVIEW FPGA platforms | |
Balli et al. | The area-latency symbiosis: towards improved serial encryption circuits | |
Morioka et al. | Flexible architecture optimization and ASIC implementation of group signature algorithm using a customized HLS methodology | |
CN101355423A (zh) | 流密码生成方法 | |
Roldán Lombardía et al. | Six shades lighter: a bit-serial implementation of the AES family |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170531 |