收藏 分享(赏)

AES专用指令处理器的研究与实现.doc

上传人:涵涵文库 文档编号:1395692 上传时间:2018-07-11 格式:DOC 页数:13 大小:1.60MB
下载 相关 举报
AES专用指令处理器的研究与实现.doc_第1页
第1页 / 共13页
AES专用指令处理器的研究与实现.doc_第2页
第2页 / 共13页
AES专用指令处理器的研究与实现.doc_第3页
第3页 / 共13页
AES专用指令处理器的研究与实现.doc_第4页
第4页 / 共13页
AES专用指令处理器的研究与实现.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、基金项目:国家自然科学基金项目(90718032 ,60903031) ,山东省自然科学基金项目 (ZR2010FM015),山东省优秀中青年科学家科研奖励基金项目(BS2010DX017),山东大学研究生自主创新基金项目(11150071613067)通信作者:贾智平 E-mail: 1AES 专用指令处理器的研究与实现夏辉 1 贾智平 1 张峰 1 李新 1 陈仁海 1 Edwin H. -M. Sha21(山东大学计算机科学与技术学院 山东济南 250101)2(美国德州大学达拉斯分校计算机科学系 德克萨斯 75083)(sprit_)The Application Specific I

2、nstruction Processor for AESXia Hui1,Jia Zhiping1,Zhang Feng 1,Li Xin1,Chen Renhai 1,and Edwin H.-M. Sha 21(School of Computer Science and Technology,Shandong University,Jinan,Shandong 250101,China)2(Department of Computer Science,University of Texas at Dallas,Richardson,Texas 75083,USA )Abstract En

3、cryption algorithm has been widely used in the embedded trusted computing domain, how to improve its execution efficiency has become an important issue. The Advanced Encryption Standard (AES) algorithm is a new encryption algorithm which has been widely adopted in the field of trust computation due

4、to its high security, low cost and high enforceability. This paper employs a new instruction set architecture (ISA) extension method to optimize this algorithmB ased on electronic system level (ESL) methodology, a commercial processor tool on the basis of language for instruction-set architectures (

5、LISA) is used to construct an efficient AES application specific instruction processor (AES_ASIP) with the objective to improve the AES algorithm execution efficiency Finally the AES_ASIP model is implemented to the FPGA (Field-Programmable Gate Array) platformA series of simulations have been condu

6、cted to evaluate the performance of the AES_ASIP model Experimental results show that our processor improves 58.4x% in the execution efficiency and saves 47.4x% in the code storage space compared to the ARM ISA processorKey words Advanced Encryption Standard;Electronic System Level;Instruction Set A

7、rchitecture; Application Specific Instruction Processor; Field-Programmable Gate Array摘 要 随着加密算法在嵌入式可信计算领域的广泛应用,如何提高其执行效率成为研究的热点问题高级加密标准 (AES) 凭借其在安全性、费用开销和可执行性等方面的内在优势,成为使用最为广泛的对称密钥加密算法文中采用指令集架构 (ISA) 扩展优化的方法对 AES 算法进行指令扩展优化基于电子系统级 (ESL) 方法设计流程,使用基于 LISA 语言的处理器生成工具构建了一个高效 AES 专用指令处理器 (AES_ASIP) 模型

8、,最终实现于 FPGA 中经过一系列的仿真和验证,对比 ARM 处理器指令集架构,实验结果显示 AES_ASIP 以增加少许硬件资源为代价,提高了算法 58.4x%的执行效率并节省了 47.4x%的指令代码存储空间关键词 AES;电子系统级;指令集架构;专用指令处理器;FPGA中图法分类号 TP391 文章类别:信息安全0 引言加密技术是一种保护秘密信息或敏感信息的重要手段加密算法被广泛应用于可信路由、TPM 可信根测量、实体认证、数字签名和数据加密传输等方面对称密钥加密技术凭借其安全性、高效性和灵活性, 已广泛用于保证数据在传输过程中的机密性在加/ 解密过程中通信双方使用共享的相同密钥,密基

9、金项目:国家自然科学基金项目(90718032 ,60903031) ,山东省自然科学基金项目 (ZR2010FM015),山东省优秀中青年科学家科研奖励基金项目(BS2010DX017),山东大学研究生自主创新基金项目(11150071613067)通信作者:贾智平 E-mail: 2 1码学界已经对该类加密技术进行了深入的研究此前最常用的对称密钥加密算法是数据加密标准(DES),它是一种使用 56 位密钥的分组密码加密算法,自 1977 年公布成为美国政府的商用加密标准以来已使用30 多年DES3的主要缺点是密钥长度较短,已不再适合当今分布式开放网络对数据加密安全性的要求新一代的数据加密标

10、准 AES1是美国国家标准技术研究所 NIST 旨在取代 DES 的新一代加密标准,Rijindael 算法最终被选作高级加密标准AES 算法汇聚了对数据加密的强安全性、高性能、高效率、易用和灵活等优点然而由于加密与解密过程占用较多的处理器资源,处理器的性能成为加密算法高效运行的主要限制因素虽然微处理器性能在不断提升,但在许多领域中加密算法的执行效率并不能符合所有的运算设计需求,尤其是在计算资源有限的嵌入式环境下由于嵌入式微处理器性能较低、运算速度较慢,加密算法在该类微处理器中运行的效率较低如何提高加密算法在嵌入式环境下的执行效率,保证数据高效安全传输成为国内外研究的热点问题本文针对 AES

11、算法,基于电子系统级方法学的设计流程,采用指令集架构扩展优化的方法,设计了该算法的专用指令处理器(AES_ASIP)模型,并最终将该处理器模型实现于 FPGA 中论文其余部分组织如下,第一部分介绍了该领域的相关工作;第二部分简单介绍 AES 加/解密算法,并具体介绍 AES 加密算法中复杂度较高的两个转换操作;第三部分详细分析指令集架构扩展优化设计方法;第四部分针对 AES 算法提出 5 条优化扩展指令,基于扩展后的指令集构建 AES 专用指令处理器模型,并设计新指令执行部件的硬件模型;第五部分实验仿真结果分析;第六部分对本文工作进行总结1 相关工作目前学术界存在三种提高密码算法执行效率的方式

12、:第一种是用纯软件方式优化密码算法的程序流程,使算法流程更加合理,运行更加高效Bertoni等人 2提出AES算法的优化版本来加速该算法在内存受限的32位处理器上的执行效率随着嵌入式环境下微处理器性能的不断提高,这种优化方式也相应地提高了密码算法的执行效率这种优化方式虽然灵活,但其优化空间非常狭隘,在同一类型的微处理器下优化幅度最多达到21%左右此外纯软件优化方式的实现需使用查找表,在数据的查找过程中,查找表容易受到基于cache的侧信道攻击,这种攻击方式致使加密算法运行过程中易将对称密钥泄露给攻击者;第二种是用纯硬件方式实现密码算法 3,将底层程序语言中一条或若干条连续指令用专门的硬件电路实

13、现基于该优化方法,Kuo等人 4提出基于专用集成电路( Application Special Integrated Circuit,ASIC) 的方式来实现AES算法,该方法仅用10 cycles即可完成AES-128算法,文章同时讨论了执行算法的芯片架构和优化设计这种优化方式可以快速实现密码算法,但其可扩展性较弱,占用的硬件资源较多,致使微处理器电路硬件成本大幅上升,且很难与其它运算模块相融合;第三种是采用指令集架构(ISA)扩展的方式对密码算法进行优化 5其面向特定的应用对处理器指令进行扩展,采用硬件实现影响密码算法性能的基本操作部件,并在指令集中添加相应的指令,最终生成专用指令处理器(

14、ASIP) 6,7基于该优化方法,Wu等人 8介绍了一种快速灵活的加密处理器协处理器,作者首先验证了协处理器作用于3DES算法上的优质效果,在保持灵活性的同时,也可以支持多种加密算法Sun等人 9为高效实现基于细粒度随机掩码操作分解的AES算法定义了三种扩展指令,并结合指令随机调度方法给出了AES算法完整的实现流程该优化方式融合了纯软件、硬件方式优化的优点,既保留软件实现的灵活性,又进一步地提升系统性能,以增加较少的硬件资源为代价换取算法执行效率的大幅提升和指令代码占用空间的大幅降低并且其扩展性较强,可以与其他运算模块相融合本文采用指令集架构扩展的方式来提高AES算法的执行效率,并设计出针对该

15、算法的专用指令处理器(AES_ASIP)模型,用以满足该算法在运算速度和内存空间有限的嵌入式环境下的需求对比ARM处理器指令集架构,经过一系列的仿真和验证,实验结果显示AES_ASIP以增加少许硬件资源为代价,提高了算法58.4x%的执行效率并节省了 47.4x%的指令代码存储空间42 AES 算法分析2.1 AES 算法简介AES 算法属于分组密码算法,它的输入分组、输出分组以及加解密过程中的中间分组都是 128 比特,使用 10、12 或 14 个轮( Nr 表示轮数),与轮数相对应输入密钥的长度 K 为 128,192 或 256 比特用Nk=4, 6,8 代表密钥串的字数(1 字=32

16、 比特),每一轮都需要一个和输入分组具有同样长度(128 比特)的扩展密钥 Key 的参与由于外部输入的密钥 K 长度有限,所以在 AES 算法操作过程中需使用密钥扩展(Key Expansion)例程把外部密钥 K 扩展成更长的比特串,以生成各轮的加轮密钥. 第一个轮密钥用作预备轮转换,剩下的轮密钥用作每一轮结尾的最后一个转换AES 算法在操作过程中运用四个转换:S 盒字节置换、行变换、列混淆和密钥加除最后一轮外,每一轮都使用四个可逆的转换,最后一轮仅用三个转换(无列混合转换). 在解密方,使用的是可逆转换:S 盒置换反演、行变换反演、列混淆反演和加轮密钥(这个转换是自身可逆的)图 1 表示

17、 AES 加解密流程Figure1 The description for AES algrithm图 1 AES 算法加解密流程(1) 加密变换设 X 是 128 比特明文输入,Y 是 128 比特的密文输出,则 AES 密文 Y 可以用下面的复合变换得出:(1)1210()()()()(NrrNrARSCSARSACSX其中表示复合运算这里 ANi(X)表示对 X 的一个变换 ANi(X)= X xor KNi (KNi 为第 i 轮的子密钥,为比特串的异或运算)S:S-box 字节置换,即对每一个字节用 S-box 做一个置换为了提升算法执行效率,S-box 是一个指定的转换表R:行变换

18、C :列混淆,列混淆中涉及到多项式乘法运算(2) 解密变换解密变换是加密变换的逆变换,这里不再详述2.2 AES 加密算法中耗时转换操作分析(1) S 盒字节置换 S-box SubBytes()5对输入矩阵的任一个元素 A 做如下变换 SA:(1)任意一个元素 A 从存储角度看都是一个八位的二进制数算出前四位所代表的十六进制数 x 和后四位所代表的十六进制数 y如 A=11000100 时,x=c, y=4(2)从 AES 算法给定的 S-box(16 行 16 列的矩阵,其中每个元素为一个字节) 中找出 SA=Sx,y 的值如 A:11000100 时,SA =Sx,y=S c,4=|29

19、|=00101001或直接通过下面的公式将A=b7b6b5b4b3b2b1b0 变为 SA=b7b6b5b4b3b2b1b0(2)(4)()mod8(6)od8(7)mod8 (063)iiiiix(2) 列混淆 MixColumns()AES 加密算法中列混淆是通过矩阵相乘实现的(矩阵 A 为列混淆变换矩阵) ,具体过程如下:12314123141234333444123ssaassssss 加密过程中列混淆变换矩阵与解密过程列混淆变换矩阵分别是:0011230099xebxddeb列混淆转换操作即把状态矩阵 state 的每一列转换成一个新的列每列当中的字节和常数变换矩阵都要化为带有 GF

20、(28)中系数的 8 比特的字(或多项式) 矩阵内字节的乘法是通过伽罗瓦域 GF(28)内的乘法即多项式相乘实现的,同时为了保证相乘后的元素仍然在域内,在 GF(28)中需要用模 m(x)=(10001101)或(x8+ x4+ x3+ x+1)除来实现,矩阵内的加法是通过异或操作实现的即对域内的任意一个八位的二进制数A= b7b6b5b4b3b2b1b0,转换成一个多项式 A=f(x) = b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2+ b1x + b0 与 x 相乘 10:(3)76543265432107431()xbxbxbxxbxf 若)()若对应域

21、内乘法为:A = 00000010 B = b7b6b5b4b3b2b1b0(4)76543210 0()(1)bA 若若乘以高于一次的多项式可以循环使用上式实现,因此 GF(28)乘法即为多个中间结果相加3 指令集架构扩展优化分析在设计新指令的过程中必须保证扩展后的指令要兼容原有模型(如 ARM 处理器指令集) 的指令格式,这样才能保证译码部件的正常执行例如:32 位处理器模型中,指令操作码和操作数位数之和最多为 32位,设计新指令时要考虑其操作码和操作数位数之和不能超过 32同时,新指令的执行部件不能过于复杂,如果新指令的执行部件过于复杂,执行过程中会产生较大时延,降低系统的运行速度综上各

22、方面因素考虑,得出新指令设计限制条件如下:(1) 新指令操作码长度和原有处理器模型中指令操作码长度相同;(2) 新指令的操作码和操作数总和不能超出原指令集的指令位数;(3) 新指令的执行部件不能过于复杂,新指令执行过程不能降低系统的运行速度;6(4) 新扩展的指令条数不能过多,降低由此带来的硬件资源开销在满足上述条件基础上,针对特定算法进行指令集架构扩展优化,能够极大地减少取址、译码的时间,使得原先 N 条指令的取址、译码过程现在仅需一条指令即可完成,即取址、译码过程可缩小(N-1)2个时钟周期从执行单元考虑,指令扩展前需要多个执行单元在多个时钟周期内协同完成的功能,在指令扩展后仅需一个新的执

23、行单元在一个时钟周期内就可以完成同时,在一定程度上能够避免因指令相关而产生的气泡效应A l g o r i t h m D e s c r i p t i o n i n C L a n g u a g eA l g o r i t h m D e s c r i p t i o n i n A s s e m b l y L a n g u a g eS y n t h e s i s , P b=a; a=b;编译成 ARM 汇编指令,具体含义为:mov r2, r0 mov r0, r1 使用新指令 swap 替换 swap r1, r2mov r1, r2设计新的汇编指令 swap ,

24、 替代上面三条指令新指令的功能是将源操作数 src1 和 src2 交换,即将源操作数 src1 的数值赋给 src2 同时将 src2 的数值赋给 src14.2 AES_ASIP 模型P i p e _ C t lP i p eF EI n s t r u c t i o n -F e t c hD CD e c o d e _C o m m o nE XD e c o d e _ Ju m pE XA L UD M E M_ R WA E S _ EXD e c o d e _A E S _ E XP r o g _ R A MR e g i s t e r sD a t a _ R A

25、 MFigure3 The Architecture of AES_ASIP图 3 AES 专用指令处理器模型架构图 3 所示的是针对 AES 加密算法设计的 AES_ASIP 处理器模型框图,模型指令集架构由 27 条指令构成如下表 1 所示:Table 1 The AES_ASIP ISA表 1 AES 专用指令处理器指令集架构Different Types InstructionsGeneral Purpose Instructions mov, add, sub, or, and, xor, shl, shr, nopJump Instructions jp, jeq, jne, jl

26、, jle, ja, jaeMemory Access Instructions stb, sth, stw, ldb, ldh, ldwAES Specific Instructions getbit, xor_5, ifand, matrixpos, swap模型硬件结构主要由数据存储器(Data_RAM)、代码存储器(Prog_RAM) 、寄存器堆(Registers) 和流水线(Pipe)四部分组成程序存储器地址空间定义在 0x0000-0x7FFF 范围内,大小 32K代码存储器地址空间定义在 0x8000-0xFFFF 范围内,大小 32K寄存器堆由 32 个通用寄存器(GPR03

27、1) 、1 个取址寄存器(FPR) 、1 个堆栈指针寄存器(SPR) 和 1 个链接寄存器(LR) 组成流水线部分采用三级流水线:取址(FE)、译码(DC) 和执行 (EX)流水线控制器(Pipe_Ctl)主要负责对跳转指令进行控制,跳转指令只需要将跳转地9址存储在取址寄存器(FPR)中,不需要经过执行部件,紧接着对流水线的缓存部分进行刷新,防止执行部件执行跳转指令在 AES_ASIP 处理器的译码、执行部件,添加了针对 AES 算法的专用指令译码器(Decode_AES_EX)和执行器(AES_EX),对扩展的指令进行专门的译码和执行表 2 表示新指令格式Table 2 The AES Sp

28、ecific instructions表 2 针对 AES 扩展的新指令格式Instruction FormatOpcode 010010 dest src2 bitpos xxxxxxgetbit31 26 25 21 20 16 15 11 10 0Opcode 010010 src1 src2 src3 src4 src5 dest xxor_531 26 25 22 21 18 17 14 13 10 9 6 5 1 0Opcode 010010 src1 src2 xor_src1 xor_src2 xxxxxxifand31 26 25 21 20 16 15 11 10 6 5

29、0Opcode 010010 dest src1 src2 src3 src4 xmatrixpos31 26 25 21 20 16 15 11 10 6 5 1 0Opcode 010010 src1 src2 xxxxxxswap31 26 25 21 20 16 15 04.3 新指令执行部件的硬件模型图 4-8 分别表示与 5 条新指令相对应的执行部件硬件模型r s hrsd3 25r 0i01m u x53 20 x 0 0 0 10 * 55A _ g e t b i t _ E X _ i nr 1 _ a d d r3 253 2a d d rd a t aR e g i s

30、 t e r sFigure4 The Micro-architecture of getbit Instruction图 4 getbit 指令执行部件硬件模型图 4 表示 getbit 指令执行部件图中 r0, i,r1_addr 是输入信号,通过移位部件 rsh,将 r0 寄存器中的数据右移 i 位,然后通过与门将移位的结果与 0x0001 相与,只取移位后的最低有效位输出结果根据多路选择器 mux 控制输出,A_getbit_EX_in 是控制信号,由译码阶段控制输出,决定输入地址 r1_addr 是否有效如果 A_getbit_EX_in 为 1,则多路选择器 mux 选择将与结果保

31、存到 r1 寄存器中;如果为 0 则多路选择器 mux 选择一个无效的地址,不进行任何寄存器存储操作01m u x5r 2r 5r 4r 3r 63 23 20 * 5A _ x o r _ 5 _ E X _ i nr 1 _ a d d r55a d d rd a t aR e g i s t e r s10Figure5 The Micro-architecture of xor_5 Instruction图 5 xor_5 指令执行部件硬件模型图 5 表示 xor_5 指令执行部件图 中 r2, r3, r4, r5, r6, r1_addr 是输入信号,r2, r3, r4, r5,

32、 r6 寄存器的数据通过五元异或部件执行异或操作A_xor_5_EX_in 是控制信号,由译码阶段控制输出,决定输入地址r1_addr 是否有效如果 A_xor_5_EX_in 为 1,则多路选择器 mux 选择将结果保存到 r1 寄存器中;如果为0 则多路选择器 mux 选择一个无效的地址,不进行任何寄存器存储操作01m u x3 2 0 2 1 3 1 . . .3 23 20 * 55r 0r 1r 2r 3i f a n d _ e x er 2 _ a d d ra d d rd a t aR e g i s t e r s3 23 2553 2Figure6 The Micro-a

33、rchitecture of ifand Instruction图 6 ifand 指令执行部件硬件模型图 6 表示 ifand 指令执行部件图中 r0,r1, r2, r3, r2_addr 是执行部件的输入信号,输出结果通过多路选择器 mux 选择输出,ifand_exe 是控制信号,由译码阶段发出控制命令,决定是否执行 ifand 操作从上图电路可以看出,r0 与 r1 以及 ifand_exe 与操作的结果如果为 1,则多路选择器 mux 选择将 r2和 r3 异或结果输出到 r2 寄存器中;与操作的结果如果为 0,则多路选择器 mux 选择输出一个无效地址,不进行任何存储操作55in

34、1 0+j 5r 13 21 6m u x1 60 * 1 6r 101A _ m a t i x p o s _ E X _ i n3 21 63 2a d d rD a t a _ R A Md a t aFigure7 The Micro-architecture of matrixpos Instruction图 7 matrixpos 指令执行部件硬件模型图 7 表示 matrixpos 指令执行部件图中 r1, i, n, j 是输入信号,经过一个乘法器和一个加法器,计算出矩阵的位置为 r1+i*n+jA_getbit_EX_in 是控制信号,由译码阶段控制输出,如果为 1 则多路选择器mux 选择将计算的有效地址传送到数据内存 Data_RAM 的地址线,根据地址将内存数据存储到寄存器 r1中;如果为 0 则传送一个无效地址,不进行任何读操作

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 期刊/会议论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报