浅析AES加密算法的硬件设计方法
发布时间:2022-07-06 10:48:03 所属栏目:安全 来源:互联网
导读:在信息安全领域,美国一直处于集成电路IP核[1-6]的垄断地位,近年,美国对华断供事件愈演愈烈,中兴、华为事件等美对华霸权行径也再次让全世界聚焦到芯片等处理器相关的信息安全领域[7]。 目前在安全领域,加密算法[14-17]主要通过软硬件方式设计实现,其中
|
在信息安全领域,美国一直处于集成电路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加密/解密的过程中,通过轮数据与轮密钥的异或,完成状态矩阵的构建时, 其中状态矩阵与轮密钥长度相等。 XOR:异或操作,操作符为。 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.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.2.2 行移位 如图2.5所示,在行变换(ShiftRow( ))中,状态矩阵的第2、3、4行字节是循环的,每行有不同的偏移量。第1行不用移位,第2行左移一位,第3行左移两位,第4行左移三位。 2.2.3 列混合 如图2.6,状态矩阵进行列混合(MixColumns( ))变换时,是逐列进行的,每列均会被处理成上的一个4项式,并用一个特定的矩阵去与该列相乘。 2.2.4 轮密钥加 如图2.1、2.7,轮密钥状态矩阵中的列与轮密文状态矩阵中对应的列进行异或操作(按列进行),生成新的轮密文状态矩阵,作为下一次加密的输入状态矩阵。 (编辑:伊春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
