当前位置: 首页 > 科技观察

AES加密算法的硬件设计方法分析_0

时间:2023-03-16 15:08:59 科技观察

在信息安全领域,美国一直处于集成电路IP核的垄断地位[1-6]。“华为”事件等美国对华霸权行为,再次让世界关注与芯片等处理器相关的信息安全[7]。目前在安全领域,加密算法[14-17]主要是通过硬件和软件来设计和实现的,其中软件容易受设备限制,相对不稳定,容易降低数据传输质量。安全领域的主流,这种方式更容易嵌入,适合完成复杂的功能,IP核复用性强,可靠性高,加密率高,综合成本低[7]。本文主要介绍一种基于FPGA(FieldProgrammableGateArray,现场可编程门阵列)的AES(AdvancedEncryptionStandard)算法的流水线结构设计,并完成其功能验证和性能评估[7-8]。1引言1.1研究背景及意义1977年,美国国家标准局确定DES[15](DataEncryptionStandard,数据加密标准)为FIPS(FederalInformationProcessingStandards,联邦信息处理标准),随后将DES应用于所有各行各业。随着密码破译技术的不断发展[16],DES的安全性和应用前景面临着巨大的挑战。研究人员已经证明,使用DES加解密不再是一种安全可靠的算法。因此,广泛要求设计一种安全级别更高、公开、自由的加密算法——AES[14,30](AdvancedEncryption),用于各种敏感信息领域。NIST(NationalInstituteofStandardsandTechnology,美国国家标准技术研究院)于1997年向全球征集新一代加密算法,必须满足以下条件(如图1.1所示):图1.1新一代加密算法算法需要满足的条件2000年,比利时的JoanDaemaen和VincentRijmen在Square算法的基础上设计的Rijndael算法通过了最终评选。2001年,NIST在FIPSPUB197[14]中公布了Rijndael设计的AES算法,次年成为美国联邦政府的新一代块加密标准。自2006年以来,AES被广泛应用于各个行业[7]。该算法具有以下优点:1)经过软件和硬件实现,在不同环境(有或无反馈)下均具有优异的性能。2)密钥扩展时间短。3)该算法可以用较小的内存实现,适合在内存较小的环境中使用。4)抗攻击能力强。5)内循环结构有利于提高指令级并行处理器的性能。1.2研究意义图1.2AES加密算法应用领域如图1.2所示,在互联网高速发展的今天,加上WiFi和蓝牙的成本和功耗逐渐降低,智能穿戴设备和智能家居极为普及,消费者上网的频率也越来越高。支付、电子商务、通信等日常事务,大量重要数据会通过各种计算机网络、移动终端等通信设备传输。然而,在互联网带来高效便捷的同时,个人数据的安全问题也愈演愈烈。为了防止个人数据被不法分子窃取和攻击,除了软件层面的安全防御外,更应该关注硬件层面的安全。防御。因此,处理器硬件加密速度和安全性的提升是处理器硬件安全不可或缺的一环[7,23-28]。在CPU处理器等硬件领域,随着加州大学伯克利分校RISC-V[7,14]指令集的开源,降低门槛的CPU设计,如加州大学的BOOM加州伯克利[18-19]、剑桥大学的LowRISC[20]、苏黎世联邦理工学院的PULPino[21]、意大利博洛尼亚大学的PULPino[21]、俄罗斯的RISC-VVHDL[22]等类似的处理器势必会被用在5G高速通信领域、AI(人工智能)、工业机器人、IOT、智能自动化,甚至国防等领域。同时,这些处理器的信息安全也必然会引起用户的关注[7]。2AES算法原理AES加密算法(又称Rijndael算法)采用对称加密体系,密钥分为128bits/192bits/256bits三种长度,简称AES-128/AES-192/AES-256(见表2.1)。算法采用SP结构(substitution/replacement),密钥长度分为128bits、192bits、256bits三种模式。加密过程的轮函数由4层组成(字节替换、行位移、列混淆、轮密钥加法),其中S-box使用GF()在有限域上的乘法逆运算,使其具有优良的线性偏差和差异均匀性[7,14]。本章简要介绍了AES算法中涉及的参数、加密过程、密钥扩展等。表2.1AES三种模式对应的密钥长度、包长度和迭代次数2.1AES中的参数、符号和功能介绍算法SubBytes():使用一个非线性字节替换表,对每个状态矩阵(S-box)中的字节独立操作,完成状态矩阵中的密码转换。ShiftRow():通过循环移位状态矩阵的最后三行不同的偏移量来完成状态矩阵的密码移位。Mixcolumns():列混淆,是加密过程中的变换步骤,取状态矩阵的所有列,将它们的数据(相互独立)混合,生成新的列。AddRoundKey():轮密钥加法,在AES加密/解密过程中,通过轮数据与轮密钥异或,当状态矩阵构建完成后,状态矩阵与轮的长度关键是平等的。XOR:异或运算,运算符是。InvsubBytes():解密过程中的转换,即SubBytes()的逆转换。InvShiftRows():解密时的变换,即ShirtRows()的逆变换。InvMixColumns():解密过程中的转换,即MixColumns()的逆转换。RotWord():在轮密钥扩展期间使用的函数,它采用四字节字并执行循环置换。Rcon[]:roundconstant,Rcon[j]为一个词,j为轮数,如表2.2所示:[7,14]表2.2RoundconstantRcon[j]2.2加密过程AES加密/解密过程为如图2.1所示,以“AES-128”模式为例。加密过程中第1至第9轮的操作完全相同。轮函数包括四个步骤:字节替换、行位移、列混合和轮密钥添加。第10轮没有柱混合。其中函数是密钥调度的函数[7]。图2.1AES加解密流程图图2.2密钥分组2.2.1字节替换字节替换(SubBytes())是一种独立的非线性字节替换,使用S-box对状态矩阵中的每个字节进行替换,如图2.3所示和2.4。S-box通过RAM[13]是可逆的。作为字节替换的“查找表”,在替换状态矩阵中的元素(字节)时,可以将字节的高4位作为“行坐标”,低4位作为“列坐标”,输出相应坐标的值作为替换值。比如加密时,状态矩阵的输出字节是0xAB(左),然后检查S盒的0xA行0xB列,得到值0x62(右),然后替换原来的0xAB[7,29]与0x62。图2.3S-box图2.4状态矩阵的字节替换过程2.2.2行移位如图2.5所示,在行变换(ShiftRow())中,状态矩阵的第2、3、4行字节分别为circular,每一行都有不同的偏移量。第1行不需要移位,第2行左移一位,第3行左移两位,第4行左移三位。图2.5行变换中循环移动状态矩阵的最后三行2.2.3列混合如图2.6所示,状态矩阵进行列混合变换(MixColumns())时,进行列混合column,而每一列都会被处理成上面的A4-term,并用一个特定的矩阵来乘以该列。图2.6状态矩阵中列混合操作2.2.4轮密钥加法如图2.1和2.7所示,将轮密钥状态矩阵中的列与轮密文状态矩阵中的对应列进行异或运算(按列),生成新一轮密文状态矩阵作为下一次加密的输入状态矩阵。图2.7轮密钥加状态矩阵变换图2.3密钥展开图2.8密钥展开2.4AES解密过程AES-128解密过程本质上是加密的逆过程(如图2.1、2.2),所以解密也需要10轮改造,限于篇幅,这里不做介绍,详见[7]。3.AES流水线结构RTL实现3.1流水线AES电路结构图3.1流水线结构AES总体结构图如图3.1所示。流水线设计将AES的加解密分开,各自进行流水线处理。它主要使用了大量的组合逻辑。“牺牲区域换速度”的策略[7]。3.2AES流水线结构加密电路图3.2为流水线结构AES加密电路,其端口信号说明如表3.1所示:表3.1加密单元端口信号图3.2流水线结构AES加密电路模块图AES-128需要10轮加密迭代次数(Round_0到Round_9),迭代前输入的128bits明文和初始128bits密钥进行AddRoundKey()(轮密钥加法)运算,结果作为第一轮(Round_0)迭代输入;-9轮每轮的变换顺序与步骤相同。将第一轮列混合生成的状态矩阵与第一轮生成的轮密钥进行异或,运算结果作为第二轮的输入,以此类推;第10轮少了一个列混合环节,但是为了和其他轮的运算时间对齐,使得第10轮的异或结果和生成的轮密钥不会错,所以一个寄存器shiftrow_delay专门用来延迟一枪。替换缺失的列混合链接,使得Shiftrow_delay的结果恰好与添加轮密钥时第10轮生成的轮密钥对齐(某种意义上可以有效防止侧信道攻击)[7]。KeyExpantion是密钥扩展模块,同样需要进行10轮计算(RoundkeyGen_0到RoundkeyGen_9),每轮执行三步:Rotword(),SubByte(),Rcon[j]异或,在第1到第9中各进行一次round,将key的round常量异或后生成的状态矩阵与数据列混合后的状态矩阵进行异或。第10轮是密钥的轮常量异或的状态矩阵和数据。来自延迟寄存器的状态矩阵进行异或运算,此时将valid_out信号拉高,输出密文[7]。解密电路设计请参考文献[7]。3.3性能评估通过FPGA测试验证,设计采用tt28nm工艺综合,流水线结构的AES设计面积为0.17mm2,约为循环迭代结构(0.018mm2)的10倍,这也是一个合理的结果。该结构的AES数据从输入到寄存器的关键路径占用0.39ns,从寄存器到输出的关键路径占用0.39ns,因此该结构的理论最大频率为:1GHz/0.39ns=2.56GHz[7].【结论】本文简要介绍了一种具有AES流水线结构的IP核设计方法。目前,使用与CPU具有相同来源和频率的时钟[2]。当然,建议和处理器时钟做异步处理,配合DMA(DirectMemoryAccess,直接内存访问),可以让AES工作在接近其最大频率(当然,这也是power之间的折衷)消耗和速度),从而最大程度地缓解CPU的压力,进一步提高吞吐量和加密效率。参考文献[1]科普中国.知识产权核心。[EB/OL]。https://baike.baidu.com/item/IP%E6%A0%B8#reference-[1]-677617-wrap[2]莫希特阿罗拉。硬件结构的艺术:数字电路的设计方法与技术[M].李海东,赖平,史谦等译.北京:机械工业出版社,2014.2[3]MichaelDCiletti.VerilogHDL高级数字设计[M].张雅琪,译。北京:电子工业出版社,2005[4]ZainalabedinNavabi.VerilogHDL数字设计与综合[M].夏玉文,译。北京:电子工业出版社,2009[5]JBhasker.VerilogHDL导论[M].夏玉文,译。北京:北京航空航天大学出版社,2008[6]蔡觉平.VerilogHDL数字集成电路高级编程[M].西安:西安电子科技大学出版社,2015.[7]马浩.高性能处理器安全模块的设计与优化[D].西安:西安电子科技大学硕士论文,2020.[8]张春生,面向SOPC的IP核设计与IP核复用技术研究[D].长沙:国防科技大学学报,2006:7-10.[9]梁颖.SOPC中FPGAIP核配置方案的研究与实现[D].西安:西安电子科技大学,2010:5-8.[10]孙涛.IP软核验证方法研究[D].北京:北京交通大学,2009:5-13.[12]任爱峰,罗峰,宋世全,等.基于FPGA的嵌入式系统设计[M].西安:西安电子科技大学出版社,2014:100-114.[13]戴强,戴子斌,李伟.基于增强延迟感知CSE算法的AESS盒电路优化设计[J].电子期刊,2019,47(01):129-136.[14]商务部长。联邦信息处理标准Publication-197-2001。高级加密标准(AES)[S]。美国:美国国家标准与技术研究院(NIST),2001年。可在http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf[15]GuLize,ZhengShihui,YangYixian获取。现代密码学教程(第二版)[M].北京:北京邮电大学出版社,2015:73-85.[16]郑东,赵庆兰,张英辉.密码学述评[J].西安邮电大学学报,2013,18(06):1-10.[17]胡向东、魏勤芳、胡蓉。应用密码学(第3版)[M].北京:清华大学出版社,2014:108-130.[18]Celio、Christopher和Patterson等人。伯克利无序机(BOOM):一种具有行业竞争力、可合成、参数化的RISC-V处理器[R],加州大学伯克利分校EECS系,2015年6月。[19]ChristopherCelio、DavidPatterson和KrsteAsanovi′c,伯克利无序机(BOOM)设计规范[R],加州大学伯克利分校EECS系,2016年12月。[20]GavinFerris、RobertMullins、WeiSong等人。开源64位SoC[EB/OL],https://www.lowrisc.org/,2020-3[21]PULPino用户手册[EB/OL],http://www.pulp-platform.org/documentation/,2016-8[22]俄罗斯GNSS传感器组件任何,RISC-VVHDL:片上系统[EB/OL],https://github.com/sergeykhbr/riscv_vhdl/,2020-3[23]ChristopherSchmitz,SebastianPape。LiSRA:信息安全决策支持的轻量级安全风险评估[J]。计算机与安全,2020,90.[24]刘洋.2019年国外信息安全形势综述[J].安全科学与技术,2019(12):8-13.[25]张焕国,林东岱,马建峰,等.网络空间安全述评[J].中国科学:情报学,2016,46(02):125-164.[26]雷新峰,宋书敏,薛锐,等.计算可靠的密码协议形式分析综述[J].计算机科学学报,2014,37(05):993-1016.[27]冯登国,徐静,兰晓.5G移动通信网络安全研究[J].软件学报,2018,29(06):1813-1825.[28]洪泽,洪峰,陈振骄。面向车联网信息安全的加密引擎芯片设计[J].网络安全技术与应用,2020(02):36-38.[29]时间破碎者。AES加密算法详解与实现[EB/OL].https://blog.csdn.net/qq_28205153/article/details/55798628.html/2017-02-19[30]J.Daemen,V.Rijmen.高级加密标准(AES)算法:Rijndael的设计[M].顾大午,徐盛波译,北京:清华大学出版社,2003:216-220