物联网应用的轻量级加密算法实现

摘要

物联网(IoT)应用使用具有有限硬件资源的设备,如无线传感器网络应用,以及具有充足硬件资源的设备,如卫星应用。主要挑战在于设计一种轻量级加密算法,使其能够在物联网应用中资源受限的设备上实现。本研究提出了一种轻量级加密算法,具备抵御侧信道攻击和nonce滥用攻击的能力。该轻量级加密算法采用类似AES的轮结构,并通过减少轮次来降低面积消耗并提供高吞吐量支持。该算法在软件和硬件上的实现验证了其轻量级特性。该轻量级加密算法提供了与高级加密标准(AES)算法相似的雪崩效应。该算法利用子算法对初始化向量(IV)进行随机化,并为每个密文生成随机化密钥。本文还将该加密算法与近期实现方案进行了资源消耗比较和安全分析。

关键词 ——数据加密,物联网,nonce滥用攻击

一、引言

物联网(IoT)的概念已被广泛应用于许多领域。随着第五代移动通信技术等先进通信服务的出现,通信技术已实现遍及生活各个领域的应用[1]。物联网中提供的通信服务需要安全服务来防止技术被滥用。这些安全服务包括真实性、机密性和完整性服务。其中,数据机密性是通过数据加密算法来保障安全所需的主要服务。高级加密标准(AES)算法已被广泛应用于各种场景并得到全球采用[2]。物联网的应用范围广泛,从硬件资源有限的无线传感器网络(WSN)[3],到硬件资源充足的卫星应用[4]均有涉及。然而,AES算法的硬件实现需要较多资源,不适用于硬件资源受限的应用场景。因此,研究人员正致力于轻量级加密算法的设计与实现,以保障通信安全[5‐7]。不同的硬件平台可用于实现安全算法,如现场可编程门阵列(FPGA)、数字信号处理器(DSP)等。然而,FPGA平台正越来越多地被用于通信系统的实现。因此,本文在FPGA硬件上实现了轻量级加密算法,并将其与在FPGA上实现的知名算法(如AES算法)进行了比较。

加密算法的安全性必须足以抵御任何主动或被动攻击。主动攻击通过向设备发送消息来试图破坏算法的安全性。相比之下,被动攻击则通过监听传输过程并尝试破坏安全性来实现。由于主动攻击需要与设备通信以攻击系统安全,因此是可检测的;而被动攻击无法被检测,因为它们仅基于接收来自安全系统的传输信息。诸如nonce滥用攻击之类的被动攻击已被应用于高级加密标准算法以破坏其安全性[8]。从这些攻击中获得的重要教训是应避免在输入向量的初始向量中使用固定不变的nonce。此外,为了维持安全服务,输入消息不应包含恒定值。侧信道攻击基于对硬件辐射的分析,包括电磁波和功耗。这些攻击可能部分破坏高级加密标准的安全性[9]。此类攻击之所以成功,是因为通过对辐射模式进行分析,并生成相应的数据。此外,对加密数据传输进行随机化处理对于防止此类攻击破坏系统安全非常有效。

AES算法在其子算法中采用十轮操作来实现加密算法。研究人员还分析发现,四轮操作即可产生足够的雪崩效应,可用于数据加密[10]。为选择新型认证加密算法而举办的CAESAR竞赛中,有一个候选算法采用了四轮实现方式进行认证加密[11]。POET算法中四轮的使用表明了四轮的有效性,而非必须使用十轮。本文采用了相同的策略,并对数据加密的雪崩效应进行了分析。因此,提出了一种具有随机化输入的新轻量级加密算法,以避免被动攻击。本文其余部分组织如下:第二节定义了轻量级加密算法的文献综述;第三节提供了轻量级加密算法的结构;第四节给出了轻量级加密算法的实现结果;第五节讨论了轻量级加密算法的安全性;第六节给出了轻量级加密算法的结论。

II. 相关工作

高级加密标准算法在数据加密的许多应用中都有所使用,并且还用于基于密码的数据认证[12‐13]以及认证加密算法[14‐16]。实现AES算法所使用的资源主要消耗资源用于加密算法的执行。因此,本研究重点在于使用类似高级加密标准的轮结构来实现加密算法的轻量级执行。加密算法的安全性受到多种攻击的威胁,例如被动攻击或主动攻击。因此,不仅在数据加密方面,而且在认证和认证加密算法中都必须保持安全。许多研究人员提出通过随机化初始化向量(IV)来防止nonce滥用攻击,以避免nonce重复[17‐19]。初始化向量(IV)由三个向量组成:nonce、常数向量和计数器向量。文献[17]中的作者使用GEFFE随机数生成器为初始化向量(IV)生成随机性。所提出的方法对初始化向量(IV)中的计数器向量进行随机化,而不对nonce和常数向量进行随机化。文献[18]中的作者使用右移函数和递增函数对向量进行旋转以实现数据随机化。所提出的方法通过循环右移函数对整个初始化向量(IV)进行随机化。文献[19]中的作者使用GEFFE算法和循环右移函数进行初始化向量(IV)的生成。此外,合成初始化向量(SIV)模式算法被用于避免针对认证加密算法(如GCM[20],和PCMAC[21])的nonce滥用攻击。

侧信道攻击使得许多算法的安全性变得脆弱;这些攻击可通过每次会话使用新密钥或采用数据掩码技术[22‐23]来避免。本文利用每次会话的新密钥生成概念中的密钥随机化,以防止差分功耗分析(DPA)[24]等侧信道攻击。AES算法已在现场可编程门阵列(FPGA)上实现[25‐28]。通过采用流水线架构和并行实现,使用了多种技术以实现高效设计。这些技术旨在减少占用面积并提高算法的吞吐量。该轻量级加密方案在实现时占用更小的面积,为物联网提供了轻量级解决方案。此外,相比高级加密标准(AES)算法,该轻量级加密算法具有更高的吞吐量。

III. 轻量级加密算法

轻量级加密算法由三个部分组成。第一部分为初始向量随机化过程。第二部分为用于密钥随机化的密钥生成。第三部分是一种称为分组函数的新型分组密码函数,类似于AES算法。该轻量级加密算法的输入包括明文、密钥和初始向量。密钥用于分组函数中以生成密钥流,并作为输入提供给密钥生成。

明文被输入到分组函数以生成密钥流。该加密算法采用128位的密钥长度。轻量级加密算法的框图如图1所示。

A. 初始向量随机化算法

初始时,使用随机化过程生成初始向量以保护算法免受现代攻击(如nonce滥用攻击)的影响。初始向量包含一个称为nonce的常数向量,但轻量级加密算法会对初始向量中的nonce进行随机化。首先,初始向量加一增量;其次,将得到的初始向量进行循环右移以实现初始向量的旋转;第三,将旋转后的初始向量使用替换盒子(S‐box)算法通过替换过程进行替换。生成的初始向量与来自分组函数的明文输出以及新生成的密钥进行异或运算。

示意图0

B. 分组函数算法

分组函数由四轮实现组成,所有轮次均采用相同的算法。其中,第二轮额外增加了与生成的密钥的异或函数,第三轮则与初始向量进行异或操作。每一轮都包含使用S盒和置换表的替换操作。S盒替换与高级加密标准(AES)算法中的替换相同,置换表替换与DES算法中使用的相同。用于异或操作的密钥K‐1由算法的密钥生成部分产生,IV‐1则由初始向量随机化生成。分组函数的图示说明见图2。

示意图1

C. 密钥生成算法

密钥生成利用一种算法,从主密钥为每次密文生成产生一个新密钥。主密钥经过替换后,根据最低有效位(LSB)进行循环右移或循环左移,然后使用S盒进行替换。主密钥的替换结果与循环移位后的替换结果进行异或运算,生成新密钥。此外,对于下一个数据块,生成的密钥将与初始IV进行异或运算,得到新的初始密钥,用于生成下一次密文生成所需的新密钥。该加密算法的流程如图3所示。

示意图2

IV. 轻量级加密算法的实现

实验结果通过软件和硬件实现完成。该实现使用 MATLAB仿真软件在软件上进行,以计算结果。算法在执行所有步骤后产生的雪崩效应如表I所示。该表还表明,通过仅改变明文中的一个比特,算法生成了完全不同的密文。这提供了随机化以及抵御现代攻击的额外优势。

K1/IV1 用于生成密文‐1,K2/IV2 用于生成密文‐2,依此类推。

表I. 轻量级加密算法的雪崩效应分析
明文 = “00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00”
Sub1 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63
Per1 00 00 FF FF FF FF 00 00 00 00 00 00 FF FF FF FF
Sub2 63 63 16 16 16 16 63 63 63 63 63 63 16 16 16 16
Perm2 00 00 C3 F0 C3 F0 3C 0F 00 00 3C 0F FF FF C3 F0
XOR_K1 A8 FB FD 8A 0D 4F 70 C6 9E 67 1B D7 0C E1 1B 10
Sub3 C2 0F 54 7E D7 84 51 B4 0B 85 AF 0E FE F8 AF 密文A
Perm3 8D 6F BA 0D 11 2E 3B 0C 50 BF 7D 7A D8 BB 4A E2
XOR_IV_1 22 F6 08 85 6C 7B 63 6E EF 1F 01 A1 C4 CB 0F 55
Sub4 93 42 30 97 50 21 FB 9F DF C0 7C 32 1C 1F 76 FC
Perm4 93 C1 4A E3 26 33 BB BF 03 AD 11 AF D3 96 97 84
密文 93C14AE32633BBBF03AD11AFD3969784

在表I中,黄色高亮值显示了算法各个步骤中数值的变化。明文1被设置为零,而明文2仅有一个比特变化,以显示两个明文之间的最小变化。接下来,图4展示了标准AES算法(10轮)与轻量级加密算法(仅四轮)在块处理时间生成上的比较。结果清楚地表明,与标准算法相比,预期修改中的输出时间显著减少。最后,图4还展示了轻量级加密算法与AES在最多16个块的密文生成总加密时间上的比较。此处,轻量级加密算法的总加密时间包括密钥扩展时间(Ki和IV)、轻量级加密算法处理时间以及加密时间(包含Ki、明文和IV_i的异或操作)。结果表明,该轻量级加密算法在MATLAB软件上的性能相较于广泛使用的AES算法有了显著提升。

使用Xilinx Virtex‐6系列实现硬件实现,并通过 Modelsim软件进行仿真。仿真结果如图5所示。硬件实现获得的结果与先前的实现在表II中进行了比较。Modelsim上的仿真显示了使用相同明文的Xilinx FPGA实现,生成了完全不同的密文。即使使用相同的明文,轻量级加密算法也能产生随机化效果。通过硬件实现生成的密钥和初始向量与通过MATLAB实现生成的相同。该轻量级加密算法在预计算密钥和初始向量的情况下,生成密文需要五个时钟周期。如果密钥和初始向量作为算法的一部分生成,则该算法需要七个时钟周期。此外,在本工作中,我们预先计算密钥和初始向量以减少时钟周期。该实现与AES的实现进行了对比,以比较实现资源。详细的比较总结见表II。该实现还与FPGA上的AES实现[25‐27],以及新的并行架构算法[15],和抗随机数误用算法[11][28]进行了比较。该轻量级加密算法用于生成单个密文的实现。同样地,也给出了并行生成十个密文的实现;在吞吐量和面积占用方面,轻量级加密算法的实现优于其他算法。此外,与先前的算法相比,该轻量级加密算法提供了更好的实现效率。

V. 安全讨论

本节对轻量级加密算法的安全攻击进行了详细分析。

暴力破解攻击通过尝试所有可能的组合来破坏算法的安全性。在高级加密标准算法中,需要 $2^{128}$ 种组合来猜测密钥并破坏其安全性。而在轻量级加密算法中,每条密文需要 $2^{256}$ 种组合才能破坏该轻量级加密算法的安全性。这种组合数量的增加是由于使用了初始向量和密钥所致。

已知明文攻击需要获取明文信息以突破安全性。轻量级加密算法使用通过随机化生成的随机初始向量(IV)。IV和密钥与块函数的输出进行异或运算以生成密文。密文的生成不仅依赖于分组函数,还依赖于密钥生成和IV生成过程中的随机化。因此,即使在已知密钥攻击中密钥被泄露的情况下,也难以破坏该算法的安全性。攻击者无法破坏该算法的安全性,因为要破解算法安全性,IV生成至少需要尝试$2^{128}$种组合。许多算法在IV中使用的固定nonce是导致nonce滥用攻击成功的原因。而轻量级加密算法不使用固定nonce,因此nonce滥用攻击对该轻量级加密算法无效。此外,侧信道攻击利用的是设备发出的电磁辐射或功耗与内部操作之间的关系。由于轻量级加密算法具有随机化特性,使得攻击者在使用侧信道攻击时更难猜测其行为。

VI. 结论

本文提出了一种轻量级加密算法,该算法通过使用较少的时钟周期实现高吞吐量的轻量级实现。该轻量级加密算法对输入和密钥进行随机化,以避免nonce滥用和侧信道攻击的影响。该轻量级加密算法与著名算法的性能进行了比较。实现结果表明,该轻量级加密算法在面积占用和吞吐量方面具有更好的性能。

表II. 基于现场可编程门阵列的AES算法实现比较结果
序号 算法
1 I. B. Dhaou 等人 [25]
2 J. C. Resende 等人 [26]
3 Y. 王 等 [27]
4 PCMAC [15]
5 POET [11]
6 AES‐GCM [28]
7 轻量级加密 (1 密文)
8 轻量级加密 (10 密文)
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐