在信息安全领域,美国一直处于集成电路IP核[1-6]的垄断地位,近年,美国对华“断供”事件愈演愈烈,“中兴”、“华为”事件等美对华霸权行径也再次让全世界聚焦到芯片等处理器相关的信息安全领域[7]。
目前在安全领域,加密算法[14-17]主要通过软硬件方式设计实现,其中软件易受设备限制且较不稳定,容易降低数据传输质量,而通过设计专用芯片的方式实现加密算法是当前信息安全领域的主流,该方法更易于嵌入,适用于完成复杂功能,IP核复用性强,具有高可靠性、高加密速率、总体成本较低等优点[7]。
本文主要介绍基于FPGA(Field Programmable Gate Array,现场可编程门阵列)的一种AES(Advanced Encryption Standard,高级加密标准)算法的流水线结构设计,并完成其功能验证与性能评估[7-8]。
1引 言
1.1研究背景和意义
美国国家标准局于1977年将DES[15](Data Encryption Standard,数据加密标准)确定为FIPS(Federal Information Processing Standards,联邦信息处理标准),随后将DES应用于各行各业。随着密码破译技术[16]的不断发展,DES的安全性与应用前景面临极大的挑战,研究人员证明采用DES加解密不再是安全可靠的算法,因此,国际广泛需要设计一个安全等级更高、公开的、免费的加密算法-AES[14,30](Advanced Encryption)来适用各大信息敏感领域。NIST(National Institute of Standards and Technology,美国国家标准技术研究机构)于1997年向全世界征集新一代的加密算法,该算法需满足如下(如图1.1所示)条件:
图1.1 新一代加密算法需满足的条件
2000年,来自比利时的Joan Daemaen 和Vincent Rijmen以Square算法为原型设计的Rijndael算法通过最终评选。2001年,NIST将Rijndael设计的AES算法发布于FIPS PUB 197[14],次年成为新一代美国联邦政府的区块加密标准,从2006年起,AES广泛应用到于各行各业[7],该算法具备以下优点:
1)在不同环境中(有无反馈)软硬件实现后的性能表现优异。
2)较短的密钥拓展时间。
3)使用很小的内存就可以实现该算法,适合在内存较小的环境中使用。
4)抗攻击能力强。
5)内部循环结构有益于指令级并行处理器提升性能。
1.2研究意义
图1.2 AES加密算法应用领域
如图1.2,当今互联网高速发展,加之WiFi与蓝牙的成本与功耗逐渐降低,智能穿戴设备与智能家居极度普及,消费者越来越频繁地进行在线网络支付、电子商务、通信等日常事务,因此大量的重要数据会通过各种计算机网络与移动终端等通信设备进行传输。但在互联网络带来高效便利的同时,个人数据的安全问题也随之加剧,为避免个人数据遭受不法分子的窃取与攻击,除了在软件层面要进行安全防御外,更要重视硬件层面的安全防御。因此对处理器硬件加密速度与安全性的提升,是处理器硬件安全方面不可或缺的一部分[7, 23-28]。
在CPU处理器等硬件领域,随着加州大学伯克利分校对RISC-V[7,14]指令集的开源,一个降低门槛的精简指令集的CPU设计,例如加州大学伯克利分校的BOOM[18-19]、剑桥大学的LowRISC[20]、苏黎世联邦理工学院与意大利博洛尼亚大学的PULPino[21]、俄罗斯的RISC-V VHDL[22]等类似的处理器,势必会在5G高速通信领域、AI(人工智能)、工业机器人、IOT物联网、智能自动化甚至国防等领域大面积应用,与此同时这些处理器的信息安全问题也必然会引起用户的重视[7]。
2AES算法原理
AES加密算法(又称Rijndael算法)采用对称密码体制,密钥分为128bits/192bits/256bits三种长度,简称为AES-128/AES-192/AES-256(如表2.1)。该算法使用SP结构(替代/置换),密钥长度分为128bits、192bits、256bits三种模式,加密过程的轮函数由4层组成(字节替换、行位移、列混淆、轮密钥加),其中S-box使用有限域上GF()的乘法逆运算,使其具备优异的线性偏差与差分均匀性[7,14]。
本章简要介绍了AES的算法中涉及到的参数等、加密过程、密钥拓展等。
表2.1 AES三种模式下对应的密钥长度、分组长度、迭代次数
2.1 AES算法中参数、符号和函数介绍
SubBytes( ):使用对每个状态矩阵中字节独立操作的非线性字节替换表(S-box)完成对状态矩阵中的密码转换。
ShiftRow( ):通过用不同的偏移量循环移动状态矩阵的最后三行来完成状态矩阵的密码转换。
Mixcolumns( ):列混淆,是加密过程中的转换步骤,它获取状态矩阵的所有列并混合它们的数据(彼此独立)以生成新列。
AddRoundKey( ):轮密钥加,在AES加密/解密的过程中,通过轮数据与轮密钥的异或,完成状态矩阵的构建时, 其中状态矩阵与轮密钥长度相等。
InvsubBytes( ):解密过程中的转换,即SubBytes( )的逆变换。
InvShiftRows( ):解密过程中的转换,即ShirtRows( )的逆变换。
InvMixColumns( ):解密过程中的转换,即MixColumns( )的逆变换。
RotWord( ):在轮密钥拓展过程中使用的函数,它接受一个四字节的字并执行循环排列。
Rcon [ ] : 轮常量,Rcon[j]为一个字,j为轮数,如表2.2所示:[7,14]
表2.2 轮常量Rcon[j]
2.2加密过程
AES加密/解密流程如图2.1所示,以“AES-128”模式为例。
加密过程中第1至9轮的操作完全一致,轮函数由四个步骤组成:字节替换、行位移、列混合、轮密钥加,第10轮没有列混合这一环节。其中函数是密钥调度的一个函数[7]。
图2.1 AES加密/解密流程图
图2.2 密钥分组
2.2.1 字节替换
字节替换(SubBytes( ))是独立的非线性字节替换,使用S-box对状态矩阵中的每个字节进行替换,如图2.3与2.4。S-box通过RAM实现[13]是可逆的,作为字节代换的“查找表”,状态矩阵中的元素(字节)在进行替换时,可将该字节的高4bits看作“行坐标”,低4bits作为“列坐标”,将对应坐标的值作为替换后的值输出。例如加密时状态矩阵输出的字节为0xAB(左边),则查S盒的第0xA行和0xB列,得到值为0x62(右边),然后用0x62替换原有的0xAB[7,29]。
图2.3 S-box
图2.4状态矩阵的字节替换过程
2.2.2 行移位
如图2.5所示,在行变换(ShiftRow( ))中,状态矩阵的第2、3、4行字节是循环的,每行有不同的偏移量。第1行不用移位,第2行左移一位,第3行左移两位,第4行左移三位。
图2.5行变换中循环移动状态矩阵的后三行
2.2.3 列混合
如图2.6,状态矩阵进行列混合(MixColumns( ))变换时,是逐列进行的,每列均会被处理成上的一个4项式,并用一个特定的矩阵去与该列相乘。
图2.6 状态矩阵中列混合的操作
2.2.4 轮密钥加
如图2.1、2.7,轮密钥状态矩阵中的列与轮密文状态矩阵中对应的列进行异或操作(按列进行),生成新的轮密文状态矩阵,作为下一次加密的输入状态矩阵。
图2.7 状态矩阵的轮密钥加变换图
2.3密钥拓展
图2.8 密钥拓展
2.4 AES解密过程
AES-128解密过程本质是加密的逆过程(如图2.1,2.2),因此解密也需要进行10轮变换,篇幅有限,这里不展开介绍,具体请参考文献[7]。
3AES流水线结构RTL实现
3.1 流水线AES电路结构
图3.1流水线结构的AES整体结构图
如图3.1所示,流水线设计将AES的加密与解密单独分开,并且各自做流水线处理,主要使用大量的组合逻辑,采用“牺牲面积换取速度”的策略[7]。
3.2 AES流水线结构加密电路
如图3.2为流水线结构AES加密电路,现对其端口信号说明,如表3.1:
表3.1 加密单元端口信号
图3.2 流水线结构AES加密电路模块图
AES-128需要加密迭代10轮(Round_0至Round_9),在迭代之前,输入的128bits明文会与初始的128bits密钥进行AddRoundKey( )(轮密钥加)操作,其结果会作为迭代的第一轮(Round_0)输入;从第1-9轮每轮的变换次序与步骤相同,第1轮列混合产生的状态矩阵会与第1轮产生的轮密钥进行异或,其运算结果会作为第2轮的输入,以此类推;第10轮则少一个列混合的环节,但是为了和其它轮的操作时间对齐,使得其结果和第10轮产生的轮密钥异或不会出错,所以特意使用一个寄存器Shiftrow_delay延时一拍来代替少了的列混合环节,这样从Shiftrow_delay出来的结果再进行轮密钥加时,就刚好与第10轮产生的轮密钥对齐(在某种意义上可以有效的防止侧信道攻击)[7]。
KeyExpantion是密钥拓展模块,它也是需要10轮运算(RoundkeyGen_0至RoundkeyGen_9),它每轮都依次进行三个步骤:Rotword()、SubByte()、Rcon[j]异或,在第1到第9轮,每轮密钥在进行轮常量异或完之后产生的状态矩阵会与数据列混合之后的状态矩阵进行异或操作,第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(Direct Memory Access,直接存储器访问 )使用,这会使得AES工作在接近自身最大频率(当然这也是一个功耗与速度的折中),从而能够最大化缓解CPU的压力,进一步的提升吞吐量与加密效率。
参考文献
[1] 科普中国. IP核. [EB/OL].https://baike.baidu.com/item/
IP%E6%A0%B8#reference-[1]-677617-wrap
[2] Mohit Arora. The Art of Hardware Architecture: Design Methods and Techniques for Digital Circuits[M]. 李海东,来萍,师谦等译. 北京:机械工业出版社,2014.2
[3] Michael D Ciletti. Verilog HDL高级数字设计[M]. 张雅绮,译. 北京:电子工业出版社,2005
[4] ZainalabedinNavabi. Verilog HDL数字设计与综合[M]. 夏宇闻,译. 北京:电子工业出版社,2009
[5] J Bhasker. Verilog HDL入门[M]. 夏宇闻,译. 北京:北京航空航天大学出版社,2008
[6] 蔡觉平.Verilog HDL数字集成电路高级程序设计[M].西安:西安电子科技大学出版社,2015.
[7] 马浩. 高性能处理器安全模块的设计与优化[D]. 西安:西安电子科技大学硕士论文,2020.
[8] 张春生, 面向SOPC的IP核设计与IP核复用技术研究[D].长沙:国防科技大学学位论文,2006:7-10.
[9] 梁颖. SOPC中FPGA IP核配置方案研究与实现[D].西安:西安电子科技大学学位论文,2010:5-8.
[10] 孙涛. IP软核验证方法研究[D].北京:北京交通大学学位论文,2009:5-13.
[12] 任爱锋,罗丰,宋士权等.基于FPGA的嵌入式系统设计[M].西安:西安电子科技大学出版社,2014:100-114.
[13] 戴强,戴紫彬,李伟.基于增强型延时感知CSE算法的AES S盒电路优化设计[J].电子学报,2019,47(01):129-136.
[14] Secretary of Commerce. Federal Information Processing Standards Publication-197-2001. ADVANCED ENCRYPTION STANDARD (AES) [S]. America:National Institute of Standards and Technology (NIST),2001.Available at http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
[15] 谷利泽,郑世慧,杨义先.现代密码学教程(第2版)[M].北京:北京邮电大学出版社,2015:73-85.
[16] 郑东,赵庆兰,张应辉.密码学综述[J].西安邮电大学学报,2013,18(06):1-10.
[17] 胡向东,魏琴芳,胡蓉.应用密码学(第3版)[M].北京:清华大学出版社,2014:108-130.
[18] Celio, Christopher and Patterson, et al. The Berkeley Out-of-Order Machine (BOOM): An Industry-Competitive, Synthesizable, Parameterized RISC-V Processor[R], EECS Department, University of California, Berkeley, June 2015.
[19] Christopher Celio, David Patterson, and Krste Asanovi′c, The Berkeley Out-of-Order Machine (BOOM) Design Specification[R],EECS Department, University of California, Berkeley,December 2016.
[20] Gavin Ferris, Robert Mullins, Wei Song et al. Open source 64-bit SoC[EB/OL],
https://www.lowrisc.org/, 2020-3
[21] PULPino User Manul[EB/OL], http://www.pulp-platform.org/documentation/, 2016-8
[22] Russia GNSS Sensor Company, RISC-V VHDL: System-on-chip[EB/OL],
https://github.com/sergeykhbr/riscv_vhdl/, 2020-3
[23] Christopher Schmitz,Sebastian Pape. LiSRA: Lightweight Security Risk Assessment for decision support in information security[J]. Computers & Security,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] TimeShatter. 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