AES算法中Sbox和列混合单元的优化及FPGA实现
基于FPGA的高级加密标准AES设计与实现
基于FPGA的高级加密标准AES设计与实现【摘要】确保网络与通信安全的最重要的工具就是加密,对称加密中又以AES加密算法最为重要,目前已成为标准,研究AES加密算法对于防范信息安全泄密具有重要意义。
本文对AES加密算法做简单的介绍,并利用硬件描述语言进行设计,设计采用流水线的思想,AES-128算法共有10轮,在每一轮之间都插入流水线寄存器,提高系统工作频率,最终下载到FPGA芯片CycloneIII系列的EP3C120F484I7器件中,经验证功能正确。
【关键词】AES;流水线;状态矩阵;FPGAAbstract:The most important tool to encrypt the security of networks and communications,is the symmetric encryption algorithm,AES is the Advanced Encryption Standard,which is now the most famous Symmetric encryption algorithm,it is meaningful to research this algorithm.This paper introduces the principle of AES encryption algorithm and the detailed description of the FPGA implementation,to make the optimization to achieve the best speed,the design of the state are designed by pipeline technology.we used the hardware description language to design each modules,fianly examed in the FPGA chip of CycloneIII EP3C120F484I7.Keywords:AES;pipelines;state;FPGA1.前言现如今,信息安全一直都是热门话题,而密码学又是信息安全的重要组成部分,研究密码学具有重要意义。
AES算法C语言讲解与实现
AES算法C语言讲解与实现AES(Advanced Encryption Standard)是一种对称加密算法,被广泛应用于各种应用中,如保护通信、数据安全等。
AES算法采用分组密码的方式,将明文数据分成若干个大小相等的分组,然后对每个分组进行加密操作。
1. 密钥扩展(Key Expansion):AES算法中使用的密钥长度分为128位、192位和256位三种,密钥长度不同,密钥扩展的轮数也不同。
根据密钥长度,需要扩展成多少个轮密钥。
扩展过程中需要进行字节代换、循环左移、模2乘法等操作。
2. 子密钥生成(Subkey Generation):根据密钥扩展的结果,生成每一轮需要使用的子密钥。
3. 字节替换(SubBytes):将每个字节替换为S盒中对应的值。
S盒是一个固定的预先计算好的查找表。
4. 行移位(ShiftRows):对矩阵的行进行循环左移,左移的位数根据行数而定。
5. 列混合(MixColumns):将每列的四个字节进行混合。
混合操作包括乘法和异或运算。
6. 轮密钥加(AddRoundKey):将每一轮得到的结果与轮密钥进行异或运算。
以上就是AES算法的六个步骤的实现过程,下面我们来具体讲解一下。
首先,我们需要定义一些辅助函数,如字节代换函数、循环左移函数等。
```cuint8_t substitution(uint8_t byte) return sBox[byte];void shiftRows(uint8_t *state)uint8_t temp;//第二行循环左移1位temp = state[1];state[1] = state[5];state[5] = state[9];state[9] = state[13];state[13] = temp;//第三行循环左移2位temp = state[2];state[2] = state[10];state[10] = temp;temp = state[6];state[6] = state[14];state[14] = temp;//第四行循环左移3位temp = state[15];state[15] = state[11];state[11] = state[7];state[7] = state[3];state[3] = temp;void mixColumns(uint8_t *state)int i;uint8_t temp[4];for(i = 0; i < 4; i++)temp[0] = xTime(state[i * 4]) ^ xTime(state[i * 4 + 1]) ^ state[i * 4 + 1] ^state[i * 4 + 2] ^ state[i * 4 + 3];temp[1] = state[i * 4] ^ xTime(state[i * 4 + 1]) ^xTime(state[i * 4 + 2]) ^state[i * 4 + 2] ^ state[i * 4 + 3];temp[2] = state[i * 4] ^ state[i * 4 + 1] ^ xTime(state[i * 4 + 2]) ^xTime(state[i * 4 + 3]) ^ state[i * 4 + 3];temp[3] = xTime(state[i * 4]) ^ state[i * 4] ^ state[i * 4 + 1] ^state[i * 4 + 2] ^ xTime(state[i * 4 + 3]);state[i * 4] = temp[0];state[i * 4 + 1] = temp[1];state[i * 4 + 2] = temp[2];state[i * 4 + 3] = temp[3];}```接下来,我们实现密钥扩展和子密钥生成的过程。
基于FPGA的AES算法芯片设计实现
基于FPGA的AES算法芯片设计实现引言密码模块作为安全保密系统的重要组成部分,其核心任务就是加密数据。
分组密码算法AES 以其高效率、低开销、实现简单等特点目前被广泛应用于密码模块的研制中。
密码模块一般被设计成外接在主机串口或并口的一个硬件设备或是一块插卡,具有速度快,低时延的特点。
而从整体发展趋势来看,嵌入式密码模块由于灵活,适用于多种用户终端、通信设备和武器平台,将会得到更加广泛的应用。
基于FPGA 实现的嵌入式密码模块与以往的主流硬件实现方式(如DSP 芯片、单片机)相比,具有低成本、高速度、微功耗、微小封装以及保密性强等优点,与ASIC 相比具有设计灵活、成本低、周期短等优点。
另一个明显的优点在于:在对时间代价和空间代价的取舍上,基于FPGA 实现的加密技术提供了多种实现方案,分别对时间代价和空间代价有不同的偏重,有利于在各种应用环境中进行优化。
硬件实现无论是ASIC 方案还是FPGA 方案,数据处理速度的提高都离不开优化技术,包括算法轮函数和设计结构的优化。
AES 算法的快速实现方案包括:优化S 盒的结构(如使用复合域、查表等方法),列混合与密钥加的结合,以及采用流水线技术等。
表1 为几种典型的AES 算法实现性能对比情况。
AES 算法结构AES 是一个迭代型的分组密码,包含了轮变换对状态的重复作用。
用State表示待加密状态,CipherKey 表示初始加密密钥,ExpandedKey 表示扩展密钥,其加密过程描述如下:Round(State,ExpandedKey) --轮变换{SubByte(State);--字节代替表1 几种典型的AES 算法实现性能对比。
AES加密算法的改进及FPGA实现
CHAIShao?jie,ZHANGCai?zhen
(SchoolofElectronicandInformationEngineering,LanzhouJiaotongUniversity,Lanzhou730070,China)
Abstract:Inordertoimprovetheconfidentialityofdatatransmissionandtheefficiencyofencryptionand decryption,thetraditionalAESencryptionalgorithm isimprovedbyusingdigitalenvelopetechnology.The AESencryptionalgorithm iscombinedwiththeRSA encryptionalgorithm inasymmetricencryption.The sensitivekeyinformationkeyisencryptedseparatelybyusingthefeatureofone?waypermutationtransforma tionoftrapdoorinRSAencryptionalgorithm.Finally,itisimplementedbasedonFPGA.Theexperimental verificationresultsshowthatthedataencryptionanddecryptionalgorithm iscompletedthroughtheim provedprogram,whichcanachievezeroerrorrateand1.62Mb/sencryptionanddecryptionspeed.Itis nearly25.56% higherthantheresearchresultsinliterature[2]whichhadachievedtheexpectedeffect.
基于FPGA的AES加密算法的高速实现
基于FPGA的AES加密算法的高速实现马肃王击摘要:介绍AES算法的原理以及基于FPGA的高速实现。
结合算法和FPGA的特点,采用查表法优化处理了字节代换运算、列混合运算。
同时,为了提高系统工作速度,在设计中应用了内外结合的流水线技术,并应用Altera公司的开发工具及芯片进行实际开发。
关键词: AES; FPGA; 查表法; 流水线技术;中图分类号: B, 文献标识码: TP271+.5High speed implementation of AES algorithm based onFPGAMaSu WangJiAbstract: This paper describes the design of AES and fast implementations of AES on hardware based on FPGA.Based on the characteristic of AES and FPGA,the implementation of subbytes, mixcolumns is optimized by using the method of look-up tables.For making it work faster,the pipelining method is taken in the design.The develop tools and IC are from the Altera company.Keywords: AES; FPGA; method of look-up tables; Pipeline Technology1 引言随着信息技术的迅速发展,信息已成为当今社会的一种重要资源。
但当人们享受信息资源带来的巨大便利的同时,也承受着信息被篡改、泄漏、伪造的威胁,安全问题日益严重。
安全风险制约着信息的有效使用,信息安全对现代社会健康有序的发展,保障国家安全和社会稳定有着重要作用。
类AES分组密码统一框架及其FPGA实现.
类AES分组密码统一框架及其FPGA实现杨宏志韩文报董博(信息工程大学信息工程学院郑州450002摘要通过将AES算法模块化、运算一般化,给出了类AES算法的统一框架。
在此框架下不仅可以同时实现AES 的加密、解密,而且可以通过外部参数动态设定分组算法,使得密码算法的使用更加灵活、安全。
给出了算法的FPGA 实现。
结果表明设计方案可行,速度较高。
关键词AES,FPGA,分组密码中图法分类号TP309文献标识码AUnified Framework for Block Cipher Resembling AES Algorithm and its FPGA Implementation YANG Hong-zhi HAN Wen-hao DONG 130(Institute of Information Engineering,Information EngineeringUniversity,Zhengzhou 450002,ChinaAbstract AES algorithm WflS modularized and the operation of it was generalized.A unified framework was proposed for block cipher resembling AES algorithm.In this framework,not only AES encryption or decryption Can be realized, but also the specific block cipher algorithm Call be set through external parameters.The use of cryptographic algorithms is more flexible and security.FPGA realimtion for the unified framework was also given.The testing results show the scheme is feasible and has a higher speed.Keywords AES,FPGA,BIock cipher1引言Kerckhoffs假设秘密必须全寓于密钥中,算法的安全性不依赖于算法实现细节的保密[1]。
使用FPGA实现AES算法的优化设计
使用FPGA实现AES算法的优化设计信息安全是计算机科学技术的热点研究领域,数据加密则是信息安全的重要手段。
随着可编程技术的飞速发展及高速集成电路的不断出现,采用FPGA实现加密算法已受到越来越广泛的关注和重视。
与传统的软件加密方法相比,硬件加密的优点是:(1)安全性好,不易被攻击;(2)计算速度快,效率高;(3)成本低,性能可靠。
加密系统中体现数据传输速度的一个重要性能指标是数据吞吐量,计算公式为:(数据长度M/时钟个数N)×时钟频率F。
提高数据吞吐量是改善加密系统性能的关键,也是加密算法硬件实现技术的重要内容。
AES算法作为DES算法的替代者应用非常广泛,其硬件实现方法已有不少讨论,主要是通过提高算法频率来提高吞吐量。
但是在实际运行中,为了保证整个加密系统的稳定性,通常全局时钟频率较低,不可能达到算法的仿真频率,如PCI接口电路时钟频率只有33MHz,因此实际数据吞吐量仍然较低。
本文根据AES算法的结构特点及硬件系统的特点,提出一种快速的AES算法IP核设计方法。
该方法采用优化设计轮函数和流水线技术,在较低的系统时钟频率下,通过减少分组运算时钟数目来获得更高的吞吐量和更快的传输速度。
1 AES算法AES是美国国家标准与技术研究所(NIST)提出的高级加密标准。
2000年10月,NIST 宣布将比利时人Joan Daemen和Vicent Rijinen提交的Rijndael算法作为高级加密标准(AES)。
该算法设计简单,与公钥密码算法不同,没有复杂的乘法运算,易于实现,灵活性强,轮函数良好的并行特性有利于硬件设计与实现。
AES算法是一种迭代型分组密码,其分组长度和密钥长度均可变,各自可以独立指定为128bit、192bit、256bit。
本文主要讨论分组长度和密钥长度为128bit的情况。
AES算法是将输入的明文(或密文)分成16个字节,在第一个Add Round Keys变换后进。
AES算法的FPGA实现
本栏目责任编辑:谢媛媛开发研究与设计技术随着计算机和通信网络的广泛应用,信息的安全性已受到人们的普遍重视。
信息安全己不仅仅局限于政治、军事以及外交等领域,而且也与人们的日常生活息息相关。
现在,密码学理论和技术已得到了迅速的发展,它是信息科学和技术中的一个重要研究领域。
1997年4月15日美国国家标准技术研究所NIST征集AES(AdvancedEncryptionStandard)算法,以取代DES。
DES密钥长度为56位,存在密钥过短的缺陷,3DES是一种由DES衍生出来的算法,虽然增加了密钥长度,但3DES的加密和解密时间消耗较大。
AES的基本要求是比3DES快,至少和3DES一样安全,分组长度128位,密钥长度为128位,192位,256位。
比利时密码专家JoanDaemen和VincentRijmen提出的"Rijndael数据加密算法”成为AES算法的标准。
经过多年来的分析和测试,至今没有发现AES的明显缺点,也没有找到明显的安全漏洞。
AES能够抵抗目前已知的各种攻击方法的攻击。
AES已于2002年生效,可以用软件也可以用硬件实现,实际使用中根据具体的应用环境两种情况都有。
软件实现是靠CPU的运算来实现算法,易受使用条件限制,加密速度慢,易受到破坏,影响数据传输质量。
硬件实现是用专用芯片实现密码算法,通过芯片对数据进行加密。
加密专用芯片是实现信息安全与保密的基础核心产品,具有高保密性高,加密速率高,易于实现复杂功能,易于嵌入总体成本低等优点,因此在复杂系统和大数据量加密系统中,一般都使用硬件来实现AES加密。
AES加密芯片网络通信安全方面有着广范的应用。
1有限域:简单的背景知识有限域的运算域F上的多项式形如:b(x)=bn-1xn-1+bn-2xn-2+b2x2+b1x+b0,x称为多项式的变元,bi是系数,而我们只需研究GF(2)即可,以一例说明GF(2)的表示例:十六进制数“57”对应的二进制数为01010111;看作一个字节,对应的多项式为x6+x4+x2+x+1。
AES加密算法的一种优化的FPGA实现方法
AES加密算法的一种优化的FPGA实现方法
刘珍桢
【期刊名称】《现代电子技术》
【年(卷),期】2007(30)23
【摘要】介绍AES算法的原理并阐述了明文分组和密钥长度都是128 b的情况下基于FPGA的设计和实现.结合算法和FPGA的特点,采用查表法优化处理了字节代换运算、列混合运算和密钥扩展运算.同时,为了提高系统工作速度,在设计中应用了流水线技术,但由于流水线结构不能用于反馈模式,因此,实现时使用的是电码本模式(ECB)的工作方式.利用QuartusⅡ开发工具给出仿真结果,时钟频率达70.34 MHz.最后做了应用分析.
【总页数】4页(P103-106)
【作者】刘珍桢
【作者单位】电子科技大学,电子工程学院,四川,成都,610054
【正文语种】中文
【中图分类】TP309
【相关文献】
1.一种GPON-AES的FPGA优化实现 [J], 李涛;成晓雄;王文华;周健
2.一种GPON-AES的FPGA优化实现 [J], 李涛;王勇;周健
3.AES加密算法的FPGA优化实现 [J], 彭景斌;谭敏生
4.一种优化的AES算法及其FPGA实现 [J], 张伟;高俊雄;王耘波;武文斌
5.一种基于FPGA的AES加密算法优化设计 [J], 齐忠兵;李斌;王子复
因版权原因,仅展示原文概要,查看原文内容请购买。
AES的S-BOX构造优化
AES的S-BOX构造优化之前写过SBOX的构造,后来看到别⼈的优秀思路,借鉴过来重新改了⼀点。
主要是将矩阵运算改为列运算之和,提⾼了效率。
#include<iostream>#include<fstream>#include <iomanip>using namespace std;unsigned char exp[256], log[256], inv[256];unsigned char GFmul(unsigned char a, unsigned char b){//GF(2^8) 乘法unsigned char result = 0;if((b&1) == 1)result = a;b >>= 1;for(int i = 1; i < 8; i ++){if(a > 127){a = (a << 1) ^ 0x1b;}else{a <<= 1;}if((b&1) == 1){result ^= a;}b >>= 1;}return result;}void generateMulTab(){//选择⽣成元3作为构造乘法表的基础const int N = 3;exp[1] = N;log[N] = 1;unsigned char tmp = N;for(int i = 2; i < 256; i ++){tmp = GFmul(tmp, N);exp[i] = tmp;log[tmp] = i;}}void generateMulInverse(){//利⽤exp来构造乘法逆元inv[0] = 0;inv[1] = 1;//若3^m * 3^n = 1 = 3^255,则 m + n = 255for(int i = 1; i < 255; i ++){inv[exp[i]] = exp[255-i];}}unsigned char SBoxValue(unsigned char x){//返回SBOX对应的值unsigned char y = inv[x];unsigned char result = 0;unsigned char c = 0x1f; //常数矩阵的第⼀列while(y){//将矩阵运算转化为列运算之和,因为y只是⼀个"⼀维"的矩阵if(y&1){//yi 表⽰是否要加上对应ci的列result ^= c;}y >>= 1;//循环左移为下⼀列元素c = (c<<1) | (c>>7);}result ^= 0x63;return result;}int main(){//单元测试,输出SBOX的全部值generateMulTab();generateMulInverse();unsigned char SBox[16][16];for(int i = 0; i < 16; i ++){for(int j = 0; j < 16; j ++){unsigned char tmp = i*16 + j;SBox[i][j] = SBoxValue(tmp);}}ofstream write("Test.txt");for(int i = 0; i < 16; i ++){for(int j = 0; j < 16; j ++){write<<setiosflags(ios::left)<<setw(4)<<hex<<(int)SBox[i][j]; }write<<endl;}write.close();return0;}C++。
AES加密的资源优化设计及FPGA实现
AES加密的资源优化设计及FPGA实现殷伟凤【期刊名称】《计算机与现代化》【年(卷),期】2012(0)11【摘要】This paper presents a compact hardware architecture for the AES algorithm which aims at reducing hardware resources without using a memory. The architecture only requires one combined S-box for encryption, decryption and key expansion which implements the multiplicative inverse in the composite field GF(24). In addition, the optimized combined MixColumns module has a lower gate count than other designs that implement mix columns operation. VHDL code is developed for the implementation of 128-bit data encryption with Device Cyclone of Altera Family.%针对目前广泛应用的低功耗低速嵌入式设备,以减少面积为目标,本文给出一个精简的实现AES加密算法的硬件结构.在字节置换模块的设计中,改进采用查找表的方法而只用组合逻辑实现,采用将GF(28)域中的元素映射为复合域GF(24)来求逆的方法,大量减少资源占用;对混合列计算进行优化设计;最后,采用Altera的Cyclone芯片基于VHDL语言实现AES加密算法,并给出仿真结果.【总页数】5页(P145-148,189)【作者】殷伟凤【作者单位】浙江传媒学院电子信息学院,浙江杭州310018【正文语种】中文【中图分类】TP309;TP368.1【相关文献】1.一种基于FPGA的AES加密算法优化设计 [J], 齐忠兵;李斌;王子复2.基于FPGA的AES加密算法设计与实现 [J], 窦贤振3.全通用AES加密算法的FPGA实现 [J], 李炽阳; 雷倩倩; 杨延飞4.AES加密算法的改进及FPGA实现 [J], 柴绍杰;张彩珍5.AES加密算法的FPGA优化设计 [J], 陈超因版权原因,仅展示原文概要,查看原文内容请购买。
AES加密算法的一种优化的FPGA实现方法
随着密码分析水平,芯片处理能力和计算技术的不断进步,DES的安全强度已经难以适应新的安全需要,其实现速度、代码大小和跨平台性均难以继续满足应用需求。
因此,NIST(美国国家标准与技术研究所)筹划AES(高级数据加密标准)算法,旨在取代DES,以保护21世纪敏感政府信息的新型加密标准。
Rijndael算法以其简洁、高效、安全和原则性的设计被接纳为AES,并于2001年11月26日正式公布在FIPS(Federal Information Processing Standards)出版的FIPS-PUB 197中。
作为DES的继承者,AES自从被接纳为标准之日起就已经被工业界、银行业和行政部门作为事实上的密码标准。
随着网络传输速度提升为gigabits数量级,业界对算法的执行速度的要求也越来越高,基于软件的密码算法便显得性能不足,需要采用硬件加密的方式,他采用一些特殊的优化技术(如流水线和查找表等),可极大地提高数据的流量并减少密钥的生成时间。
另外,用硬件实现加密算法及与之相关的密钥生成过程,并且封装到芯片中,因为他们不易被外部攻击者读取或更改,会有较高的物理安全性。
因此,基于硬件的密码算法就受到业界的普遍关注。
以FPGA为代表的可重构硬件以其自身所固有的特点——既具有硬件的安全性和高速性又有软件的灵活性和易维护性,已经成为分组密码算法硬件实现的热点研究方向。
本文介绍AES加密算法的一种FPGA实现的方法以及对其加密速度的优化处理技巧。
2 AES加密算法简介AES是一种迭代分组密码,采用的是代替/置换网络(SPN)。
他将明文分组长度固定为128 b,而且仅支持128,196或256 b的密钥长度,本文仅对密钥长度为128 b的情况进行讨论。
AES加密算法的实现包括密钥扩展过程和加密过程。
加密过程又包括一个作为初始轮的初始密钥加法(AddRoundKey),接着进行9次轮变换(Round),最后再使用一个轮变换(F inalRound),如图1所示。
AES算法中S-box和列混合单元的优化及FPGA实现
AES算法中S-box和列混合单元的优化及FPGA实现
夏克维;李冰
【期刊名称】《现代电子技术》
【年(卷),期】2009(032)024
【摘要】由于AES算法的硬件实现较为复杂,在此提出一种优化算法中S-box和列混合单元的方法.其中S-box通过组合和有限域映射的方法进行优化,列混合单元使用算式重组的方法进行优化.这些优化设计通过组合逻辑实现,经过仿真并在Xilinx Spartan 3系列FPGA上进行综合验证,可以将结构简化,使AES电路面积得到优化,明显节约硬件资源.
【总页数】4页(P11-14)
【作者】夏克维;李冰
【作者单位】东南大学,集成电路学院,江苏,南京,210096;东南大学,集成电路学院,江苏,南京,210096
【正文语种】中文
【中图分类】TN710
【相关文献】
1.AES算法中密钥扩展和列混合单元的可重构设计 [J], 高娜娜;宋丽华
2.基于FPGA的AES算法硬件实现优化及IP核应用 [J], 龚向东;王佳;张准;王坤
3.基于CPLD/FPGA的AES算法混合流水实现 [J], 彭艮鹏;刘常澍;李志华
4.基于FPGA的AES算法中行位移与列混淆混合设计 [J], 彭关礼;肖顺文
5.实现AES算法中S-BOX和INV-S-BOX的高效方法 [J], 韩少男;李晓江
因版权原因,仅展示原文概要,查看原文内容请购买。
一种AES算法的FPGA设计与快速实现
一种AES算法的FPGA设计与快速实现
吴瑕;周焰;谷京朝
【期刊名称】《系统工程与电子技术》
【年(卷),期】2007(29)10
【摘要】针对AES算法特点,提出一种适于FPGA实现的改进的快速AES算法.本方案采用轮内流水线结构和密钥并行处理,ECB操作模式,并且可在一块芯片上同时支持128、192、256 bit三种密钥长度,因而在占用相对较少的逻辑资源下提高了系统吞吐率,并且极大的增强了其安全性和使用周期.通过优化的逻辑层次和时序设计,较好地解决了并行处理中的子密钥与轮函数的时序节拍与控制关系,给出了仿真图.实验结果表明该设计相比其他一些设计具有更高性能.
【总页数】4页(P1773-1776)
【作者】吴瑕;周焰;谷京朝
【作者单位】空军雷达学院研究生管理大队,湖北,武汉,430019;空军雷达学院信息与指挥自动化工程系,湖北,武汉,430019;空军雷达学院信息与指挥自动化工程系,湖北,武汉,430019
【正文语种】中文
【中图分类】TP309
【相关文献】
1.一种乘同余伪随机序列快速实现的FPGA设计 [J], 陈帅
2.AES算法的密码分析与快速实现 [J], 韦宝典
3.AES算法的一种快速实现方法 [J], 刘秀莲
4.AES算法的快速实现 [J], 魏菊霞
5.一种改进的AES算法及其性能分析 [J], 刘晓陆
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
①加法为按位异或。
②乘法为多项式相乘后用q(z)取模,按公式
P(z)=n(z)o d(x)mod q(z)进行运算; ③求逆根据公式公式口·a-1=1 mod g(z),计算
GF(24)上元素a的逆a~;
构造GF(24)上的一次多项式妇+C,并利用上述
GF(24)上的加法、乘法和求逆运算进行运算,得到
1 1 0O 0 1 1 1
1 1 1 O O0 1 1
1 1 1 1 O OO 1
0
㈦1 0㈤1 0:1|]
M,一M_1一I o 1 o o 1 o 1 o l(5) 1 ㈦㈦1
12
万方数据
图1 S—box/逆S—box模块
S—box硬件实现时的主要部件是乘法求逆。在有 限域GF(28)上,乘法求逆是一种相当复杂的函数.直接 在域GF(28)上生成S—box盒,组合逻辑复杂度高,会 使电路中逻辑电路的门数大大增加。根据有限域的性 质,利用域GF(28)与GF[(24)2]的同构变换,把 GF(28)上的求逆转化在GF[(24)2]上的求逆运算,从 而生成S—box单元。可以降低逻辑关系运算的复杂度, 优化S—box的面积。
在此首先通过在S—box和逆S—box中共用一个 look—up列表,简化非线性单元的复杂度,然后通过选
收稿日期:2009一06—18
万方数据
择合适的即约多项式,进行域GF(28)到GF(24)的同构 映射,对S—box的算法进行优化,并采用组合逻辑电路 实现,使优化后的S—box在同等频率条件下较显著地 减少了硬件资源的消耗。同时介绍了一种减小列混合 (MixColumn)单元硬件复杂度的方案,可以明显地减 少列混合单元的设计面积。
步骤(1)中的线性变换T满足:玎一一E。
其中:
Y=T-1{户[3:o],qE3:o]}
(10)
1OO 0 1 0 OO
OOO O1 1 O 1
O 1 O O1 1 O 1
O 1O OO 1 1 O T-1=
O 1O l 1 1 O 1
l /~
●●■ 、J
O0 1 Ol l OO
0 l 1 1 1 OO1
如图4所示。 这种模块设计可以通过部分分享硬件来同时实现
out。=Ez 3 1 1]·[口b f d]T
(15)
以及:
’
out,一[E B D 9]·Ea b c d]T
(16)
在设计中,可以将两式重组并表示如下:
out。一2(口+6)+b+(f+d)
(17)
和:
out,=4(2(口+6)+2(C+d)+(口+f))+
2(口+6)+b+(f+d)
(18)
裹1对式(11)和式(12)的重组操作
步骤
操作
步骤
操作
1
Z01一a—l-b
6
∞6一W2+W4+t啦
2
∞2=a+f
7
"W7一"6×2
3
W3=c+d批=∞l×2
9
out,一”3+t£,4+b
5
讹=w3×2
10
out,=Out.-+撕
,7删7丫:。 占
u{7、 ’l一 丫、7 7W爪 . 7厂Wh
11
源。所以非常需要一种减少硬件复杂性的方法。
就如AES标准所描述的那样,S—box的操作过程
可以表示为:
Y=M·multiplicative_inverse(x)+c (1) 其中:
1 1 1 1 1 OO0
O1 1 11 1 OO
OO1 1 111 O
O O O11 1 1 1
M=
(2)
1 OOO 1 1 1 1
在这种设计方案中,求逆运算模块中所选用的即约
万方数据
多项式户(z)和本源多项式q(z)不同,减低了求逆模块 的复杂度。根据理论分析,本文中用到的户(z)和口(z) 不会减低AES算法的安全性。
2列混合单元的优化设计
在列混合(MixColumn)和逆列混合(InvMix
Column)的操作中,由以下两式定义了两个主要操作:
所采用有限域GF(28)上的乘法求逆电路模块优化 过程如图2所示。优化的乘法求逆过程可表述如下:
(1)通过线性变换丁将GF(28)的输入X映射到 域GF(2 4)上的元素b,(;
(2)构建相应的域GF(2 4)的一次多项式,定义域 GF(24)上的加法、乘法和求逆运算。利用域(;F(2 4)上 的加法、乘法和求逆运算,得到域GF(24)上元素b,C的 逆元素P,q;
c
,、
一。,,
t束w
十
} 。,一
7\
.。厂了]
‘一n[7'O]冈out[7"O,]
图3 字节一列混合模块
图3中:X,模块(AES中的乘法器)的计算公 式为:
out[-7:o]一{in[-6:43,in['3:o]A{inE7],inE7], 0,in[Z]),in[Z])
更进一步,会发现,要建立一个全局的逆选择列混 合模块,需要将4个字节一列混合模块集成在一起,形成 一个全新的字一列混合模块(Word—MixColumn模块),
OO l O 1 1 O 1
(3)通过域GF(24)上的运算,求b,c的逆P,q。首 先构建GF(24),g(z)一一+X+l作为域GF(24)上的
本源多项式,口(z),d(z),已(z)E-GF(24)。其中,
口(z)=a323如222+alz+ao,d(z)一d323+d222+
dlz+do,P(z)=e323+e222+elz+eo定义域GF(24) 上的加法、乘法、逆运算。
仿真并在Xilinx Spartan 3系列FPGA上进行综合验证,可以将结构简化,使AES电路面积得到优化,明显节约硬件资源。
关键词:AES算法;S—box;列混合;结构优化;FPGA实现
中图分类号:TN710
文献标识码:B
文章编号:1004—373X(2009)24—011一04
Optimization of S—box and MixColumn Blocks in AES Encryption Algorithm and FPGA Implementation
与此同时,市场迫切需要AES的FPGA和ASIC 的硬件解决方案,因为其与用软件实现相比更安全而且 更省电。在一些应用,如:信用卡,手机,PDA等中,硬 件的复杂度是影响成本和能耗的一个非常重要的因素。 因此。在加密和解密中都非常需要优化AES的主要操 作部分。在AES算法中,S—box是惟一的非线性单 元,在加密解密,特别是字节替代和逆字节替代操作时 需要分别执行S—box和逆S—box。建立一个16×16 的S—box,以往通常采用查找表的方式实现,占用大量 硬件资源。因此,对S—box进行优化是实现高效AES 的重要步骤。
GF(24)上的元素b,f的逆P,q,由式(7)可得: (如+f)一1=6(8b2+缸+C2)-124-
(f+6)(8b2+bc+f2)_1
(12)
P=6(8b2+&+C2)一
(13)
q=(f+6)(8b2+bc+f2)一1
(14)
P,q的计算是S—box中最复杂的逻辑运算,占用
了大量的逻辑关系,关于P,q的分量元素计算是由上述 算法中的分量元素代入式(13)、式(14)求得。
Keywords:AES encryption algorithm;S—box;mix column;optimization;FPGA implementation
美国国家标准与技术局(National Institute of Standard and Technology,NIST)于1997年1月提出 发展AES(Advanced Encryption Standard)加密算法, 并于同年9月12日推出AES的早期基本算法。在研 究了一系列早期算法之后,Rijndael算法被确定为先进 加密标准(Advanced Encryption Standard,AES)。由 于其较高的保密级别,AES算法被用来替代DES和 3一DES,以适应更为严苛的数据加密需要。
将式(15)和式(16)所做的操作及结果列于表1中,
由步骤1~步骤5处理的结果得到out。,接着由out。和 硼。得到out,。因此,在执行过程中,操作所用到的硬件
资源及其所得结果可以应用到步骤9,步骤10中。如
图3所示,这种新型结构(字节一列混合模块)仅需8个
加法器和4个乘法器。与原方案相比,此设计大大减少 了硬件复杂度并显著节省了资源的消耗。
在一个高速128 b的AES设计中,一般需要总共 20个S—box模块和16个逆S—box模块。其中,16个 S—box模块用于实现字节替代的功能,4个S—box用 于实现密钥扩展的功能,而16个逆S—box模块用于实 现逆字节替代功能。在这种情形下,如果字节替代和逆 字节替代时使用不同的列表,就会占用大量的硬件资
过GF(28)上的即约多项式户(z)一.372十A丁+j;构造线 性变换T。根据式(8)将GF(28)的输入z映射到
GF(24)上的元素b,C:
{bE3:ol,cE3:03}一如
(8)
式中:B是GF(24)上的常量元素;T是一个8×8的矩
阵,矩阵的元素是0或l,T矩阵由B的取值决定;A取
1,B取8;
XIA Kewei。I.1 Bing (Institute of Integrated Circuit,Southeast University,Naming,210096.China)
Abstract:AES encryption algorithm is an advanced encryption algorithm.Because the structure of it is complex,an optimi— zation of the algorithm is presented.The implementation of S—box and MixColumn blocks in the AES encryption is optimized by the combinational logic method.The circuit design is successfully synthesized in the Xilinx Spartan 3 FPGA device and the area of AES circuit is finely optimized.