贾荣媛,王宜怀,王小宁
(苏州大学 计算机科学与技术学院, 江苏 苏州 215000)
窄带物联网(narrowband internet of things,NB-IoT)自标准被建立以来因其具有广覆盖、高容量、灵活部署、低功耗和低成本等特点而得到了迅猛发展[1-3]。随着窄带物联网终端感知节点数目的急剧增加及窄带网络的开放性,终端感知节点易受到节点冒充、信息窃取、消息篡改等攻击,其安全问题面临严峻的挑战,这迫切需要研究和解决[4,5]。加密技术是保证网络信息安全的常用措施,高度优化的AES(advanced encryption standard)强分组加密算法是当前终端感知节点加密的研究方向之一[6,7]。文献[8,9]通过减少AES加密轮数和设计替换表来提高AES的运行效率。然而,虽然改进的AES在运行效率方面有很大的改进,但是其安全性也随之降低。混沌序列因其可被序列化成某个范围内的正整数而被广泛应用于数据加密领域[10,11]。因此本文针对现有基于AES的加密算法无法在时间消耗和安全性两方面具有良好表现的问题,提出了基于AES与混沌序列的轻量级加密算法——LCHAOSAES(lightweight chaos AES),并根据窄带物联网应用架构给出加密模型,从理论和实验两方面验证LCHAOSAES算法的可行性,为今后窄带物联网应用安全的研究提供思路。
AES是美国政府采用的对称密钥分组加密算法,它能抵抗除了暴力攻击以外的所有已知类型的攻击。该算法灵活,数据块和密钥长度可以是128、192和256位,对应着的加密轮数Nr分别是10、12和14。由于窄带物联网终端感知节点的资源有限,因此本文对占用资源较低的数据块长度为128位的AES_128进行改进。图1描述了AES_128加密实现过程,图中Nr[i](0≤i≤10)表示第i轮运算,Key为种子密钥,K[i](0≤i≤10)表示第i轮密钥。AES_128每个数据块和密钥长度均为16个字节,加密过程由4个基本轮函数组成:SubBytes,ShiftRows,MixCo-lumns和AddRoundkey。
图1 经典AES_128加密实现过程
SubBytes是一个非线性函数,具有混淆字节的作用,可用S盒查表法提高运算速度;ShiftRows是一个线性函数,使得每行字节的顺序发生变化;MixColumns是将每个字节利用GF(28)域上算术特性进行一个替换;Add-RoundKey是一个简单的XOR操作,它的轮密钥由种子密钥计算得出。
混沌加密因其具有速度快、简单、实时性高等特点被广泛应用于信息加密领域,其利用混沌系统产生的混沌序列具有随机性、非周期性、易于交叉和对初始状态极易敏感等特点。本文使用的混沌系统性是:Logistic映射和Tent映射。
一维Logistic映射的非线性方程如下表示
yn+1=λyn+1(1-yn)
(1)
在Logistic映射中,当形态参数λ=4时,Logistic映射对迭代的初值异常敏感,此时被称为满映射混沌状态。Logistic映射生成的混沌序列与噪声相似,序列的混沌状态高度依赖于映射的初始值y0和形态参数λ。因此,在一个Logistic映射中即使y0或λ发生了极微小的变化,Logistic映射也可经过较少次数的迭代生成完全不同的混沌序列。
Tent映射是一种分段线性映射,其方程如下
(2)
Tent映射可以通过确定形态参数μ的值,利用初始值x0迭代得出一个具体的数值混沌序列。当μ∈(1.4,2)且μ趋近于2时,Tent映射产生的混沌序列的随机性较好。
为了解决现有基于AES的加密算法无法在提高运行效率的同时保证算法的安全性的问题,本文分别从简化AES以降低复杂度和构建混沌密钥生成系统以提高算法安全性两方面入手对AES进行改进,继而提出了一种基于AES与混沌序列的轻量级加密算法——LCHAOSAES。本节主要对明文块长度为128位的AES_128进行改进。
2.1.1 精简加密轮数
张尧等[9]通过实验证明将AES_128加密算法的加密轮数设置为6轮即可抵抗已知的捷径攻击,为了进一步确保算法的安全性,将加密轮数设置为7轮。然而,本文从最大程度简化AES_128加密算法的角度出发,将加密轮数设置为6轮,即LCHAOSAES的加密轮数为6。
2.1.2 优化轮函数
MixColumns操作涉及有限域GF(28)上的乘法运算,会为NB-IoT终端感知节点带来大量的计算负担。因此,在设计LCHAOSAES时,本文省略1至5轮中的ShiftRows操作,采用查表法代替SubBytes和MixColumns提高算法的运行效率,查表法依然可以用SubBytes操作实现。
令SubBytes输入为矩阵A,操作用函数S(A)表示,其输出结果为矩阵B;MixColumns将矩阵B作为输入,其输出结果为矩阵C。为整合SubBytes和MixColumns而设计快速替换表的过程如下:
对于矩阵B可表示为
Bij=S(Aij), (0≤i,j≤3)
(3)
矩阵C可表示为
(4)
由式(3)和式(4)可得
(5)
由式(5)可以看出,SubBytes和MixColumns实际上是对01×S(A)、02×S(A)和03×S(A)(×代表有限域GF(28)上的乘法)3种数据进行操作。S(A)表示利用表S(S盒)进行SubBytes操作,而表2S和3S可由表S获得,因此预存S、2S和3S这3张表就可以用查表法代替大量的乘法运算来降低算法的复杂度。LCHAOSAES加密过程如图2所示,图中Nr[i](0≤i≤6)表示第i轮运算,Key为种子密钥,K[i](0≤i≤6)表示第i轮密钥。
图2 LCHAOSAES加密过程
一维Logistic映射在初值敏感性、非周期性和伪随机性方面具有良好表现。LCHAOSAES算法通过构建Logistic和Tent混沌密钥生成系统生成随机性较高的混沌序列,并利用该序列为每个AES_128明文分组生成不同的种子密钥。这样,所有明文分组的种子密钥各不相同,从而构成“一次一密”的加密系统。
LCHAOSAES在加解密两端以相同的参数构建完全一致的混沌系统,通过多次迭代产生动态的种子密钥,并利用此密钥加解密。图3描述了LCHAOSAES算法构建混沌密钥生成系统的过程。具体描述如下:
图3 LCHAOSAES算法构建混沌密钥生成系统的过程
(1)利用初始化参数构建混沌系统
通过对称密钥加密体制传递密钥,发送方和接收方的密钥包含:Logistic映射λ和初始值y0,Tent映射的控制参数μ和x0,基本迭代次数N。目的是使得发送方和接收方可以利用λ、μ、y0,x0和N构建相同的混沌系统。
(2)将明文分组
将明文以16字节为单位长度进行分组并根据待加密明文的长度length计算明文的分块参数m和n。m表示明文分块的组数,m=length/16;n表示明文分块后剩余的字节数,n=length%16。Logistic和Tent的迭代次数分别由m和n控制,也使得该密钥生成系统与明文长度紧密联系。
(3)产生混沌序列与合成种子密钥
为了使混沌序列充分离散化,本文分别将Logistic映射迭代N+m次、Tent映射迭代N+n次,而后每加密一个数据块都将Logistic和Tent每个映射再连续迭代8次以分别获得8个混沌实数。将每个实数小数部分的前4位数组成整数并对256取模,取模后的两组数交叉组合,最后形成的16个字节的实数便是LCHAOSAES数据块的种子密钥,即每个明文块的种子密钥各不相同。
(4)动态加密和尾端处理
对明文加密时,利用步骤(3)产生的种子密钥对m个明文块逐块加密以得到相应的m个密文块;利用步骤(3)产生的种子密钥的前n个字节与剩余的n个字节的明文块异或即可得到n个字节的尾密文。这种尾端处理机制能极大地减小计算量。
按照以上步骤对明文加密后,依次将密文块与尾密文合并以得到与明文长度相等的密文,如图4所示。
从技术科学角度分析,窄带物联网应用架构可以抽象为NB-IoT终端(ultimate-equipment,UE)、NB-IoT信息邮局(information post office,MPO)、NB-IoT人机交互系统(human-computer interaction system,HCI)3个组成部分, 如图5所示。 UE是以MCU为核心, 具有NB-IoT通信、数据采集、控制、运算等功能的软硬件实体。如燃气表、水表等。MPO是一种基于NB-IoT协议的信息传送系统,是NB-IoT基站(eNodeB),核心网(core network)和设备管理平台(device management server)的总称,是UE与HCI信息交互的媒介。HCI是实现具体应用功能的软硬件系统, 使人们能够利用通用计算机(PC)、 平板电脑、 手机等设备实现对例如智能家居、物流等控制的功能。图5中数据传输过程(1)和(2)表示上行数据传输过程,(3)和(4)代表下行数据传输过程,其中过程(1)和(3)使用的是NB-IoT通信技术。
图4 基于混沌序列的加密过程
从应用开发的角度来看,开发者只需要对UE和HCI端的软硬件进行设计。而对于数据是如何在MPO内部传输的这个问题将由运营商解决。所以开发者在进行软件设计时应着重考虑UE、以及HCI的软硬件环境及资源。
在图5的窄带物联网应用架构中,数据被窃取可能发生在任意一个网络通信过程中,例如过程(1)、(2)(3)、(4)以及MPO内部。
每个UE都有唯一一个国际移动设备身份码IMEI(international mobile equipment identity),是15位数字组成的“电子串号”。每一个UE的通信模组都将拥有一个全球唯一的IMEI。本文利用IMEI为每一个UE的加密密钥生成固定的基本迭代次数N以降低密钥管理的难度。综合窄带物联网应用架构以及每个UE的IMEI号本文提出了应用环境下的加密模型,如图6所示。
图5 窄带物联网应用架构
图6 窄带物联网加密模型
当UE要发送数据到HCI时,首先获取IMEI号的后三位数记为number,其次根据number的值设置LCHAOSAES算法的基本迭代次数:若number<100,则N=100;否则,N=number。在确定密钥信息后,UE和HCI共享同一密钥。UE利用LCHAOSAES对数据加密产生的密文,经由MPO转发发送至HCI,HCI收到密文后用密钥对密文解密以得到明文。
本文在这一部分将通过分析密钥空间和敏感性来验证LCHAOSAES的安全性,并将结果与AES_128和LAES[9]的安全性进行对比。接下来本文将统计3种算法加密同一个明文所用的时间,并将统计结果进行对比,算法花费的时间越少效率越高。
本文实验环境有两个:一是在64位PC机(主频为3.20 GHz)上运行的VS2012平台VC++编译器,PC机操作系统为Windows10,在该环境下本文进行密钥敏感性验证和算法性能实验;二是本文提出的窄带物联网加密模型的UE,UE主控芯片的型号是MKL36Z64VLH4,时钟频率为48 MHz,Flash大小为64 KB。UE使用的通信模组是华为推出的Quectel BC95,它为NB-IoT通信提供了一系列的AT命令集,UE可通过这些指令与MPO通信,也可以获取模组的IMEI号,UE的硬件结构如图7所示。本文将在窄带物联网的加密模型上对LCHAOSAES、AES_128以及LAES进行效率测试。
图7 UE硬件实物图
4.2.1 密钥空间
密钥空间的大小影响着加密算法抵抗穷尽密钥搜索攻击的能力。LCHAOSAES的种子密钥由多个参数控制,分别是Logistic映射的控制参数λ和初始值y0,Tent映射的控制参数μ和初始值x0,以及基本迭代次数N。double类型的数据可以得到小数点后15位有效数字[12],那么各参数的空间大小见表1。
表1 各参数空间大小
LCHAOSAES密钥空间大小为
RLCHAOSAES=Rλ×Ry0×Rμ×Rx0×RN≈2.32×1062
(6)
理论上AES_128和LAES算法密钥空间大小是2128≈3.40×1038。因此,LCHAOSAES密钥空间的大小远远大于AES_128和LAES。并且LCHAOSAES的迭代次数取决于UE模块的IMEI和明文长度,因此其密钥空间具有不确定性,这进一步增加了破解密文信息的难度。
4.2.2 密钥敏感性
密钥敏感性是衡量加密算法安全性常用的方法之一[13],即密钥要满足雪崩准则,当密钥发生细微变化后,密文中有大约一半的比特发生变化。为了验证LCHAOSAES、AES_128以及LAES密钥的敏感性,本文分别进行了两个实验:第一个实验检测3种加密算法对同一明文加密后得到密文的比特变化率,明文长度为1000字节,进行40次实验取得的平均结果如图8所示;第二个实验检测密钥发生微小变化后的密文比特变化率,进行40次实验取得的平均结果如图9所示。
图8 加密后的密文比特率变化
图9 密钥发生变化后的密文比特率变化
分析图8和图9的结果可知,两个实验的密文比特的变化率最高的都是LCHAOSAES,其次是AES_128。因此LCHAOSAES在雪崩性分析中表现得更好。在进行图9的实验时,密钥仅发生了10-8的微小变化,而LCHAOSAES密文的比特变化率却达到了51.1%,说明密钥雪崩现象明显,从而验证了LCHAOSAES密钥的敏感性优于AES_128和LAES,即安全性高于AES_128和LAES。
软件性能即是评估算法在各个平台上的运行效率。本文利用C语言分别实现LCHAOSAES、AES_128和LAES。在64位PC端(主频为3.20 GHz)上对1000个字节的.txt文本数据进行50次加密实验并记录每次加密所花费的时间。每种算法经过50次加密求得的平均时间见表2。
从表2中可知,AES_128在加密时花费的时间最多,而LAES的时间最少。由于LCHAOSAES在轻量化的同时要提高安全性,所以其加密速度略低于LAES是不可避免的,但是总体来说它比AES_128效率还要高出35%。
表2 各算法加密明文花费的平均时间/ms
本文将上述3种算法移植到NB-IoT加密模型的UE芯片中。UE主芯片(MKL36Z64VLH4)的时钟频率为48 MHz,Flash大小为64 KB。各算法对不同长度明文加密所花费的平均时间如图10所示。
图10 加密不同长度数据所花费的平均时间
从图10可以看出,LCHAOSAES加密时花费的时间明显少于AES_128,但是略高于LAES。随着明文长度的增加,3种算法加密时间也逐渐增多。其中,AES_128增加的速度最快,而LCHAOSAES和LAES时间增长幅度较小。虽然LCHAOSAES的效率略低于LAES,但从表2可以得出它比AES_128高出35%的结论,所以LCHAOSAES是轻量级的加密算法。
为了解决窄带物联网面临的数据安全问题,而现有基于AES的加密算法无法满足窄带物联网的特性,本文提出了基于AES与混沌序列的轻量级加密算法,并根据NB-IoT应用架构提出了加密模型。本文通过减少AES_128的加密轮数以及合并轮函数来提高算法运行效率;此外,使用Logistic和Tent映射构建混沌密钥生成系统为每个明文块加密提供不同的种子密钥以提高算法的安全性和确保密文的长度与明文相同;通过在加密模型上对LCHAOSAES进行理论分析和实验可知,LCHAOSAES的安全性明显高于AES_128和LAES,运行效率略比AES_128高出35%。因此,LCHAOSAES具有高效率和高安全性的特点可被用作窄带物联网终端节点的数据加密算法。同时,其在加密模型上的良好表现进一步验证了它的可用性。
此外,为提高LCHAOSAES的运行效率而设计的字节替换表将占用1792字节的内存。虽然目前的MCU处理器足以容纳1792个字节,但本文工作者计划在未来的工作中解决这个问题。