基于轻量型AES加密算法的浮空器平台数据传输方案

2023-07-06 12:42张馨方周江华
计算机测量与控制 2023年6期
关键词:浮空器轻量明文

张馨方,周江华

(1.中国科学院 空天信息创新研究院,北京 100094;2.中国科学院大学 航空宇航学院,北京 100094)

0 引言

近年来,在大气环境实时监测、自然灾害监视和区域侦察监视等方面,距地面18~35km 高的平流层浮空器得到了广泛的应用[1-2]。国内外在长航时平流层浮空器方面取得较大突破,谷歌公司的Loon 气球最大飞行航时已超过300天[3]。平流层浮空器在远离本土执行长航时任务时,其数据安全传输问题也随之显现。一方面,常规的浮空器平台的数据传输方式为明文无线传输,安全性较更低[4],若其敏感数据被泄露将会留下严重的安全隐患。另一方面,平流层浮空器平台的处理器大多采用微型嵌入式系统,由于微型嵌入式系统计算能力弱且资源性能有限[5],使其所需的安全技术方法也更苛刻。因此,需要一种不但能够实现平台数据安全传输,而且速度快、效率高且实时性强的数据传输方法。

加密算法是目前实现数据安全传输主流的技术之一,根据算法使用密钥的不同,通常将加密算法分为对称加密算法和非对称加密算法[6]。与非对称加密算法相比,对称加密算法运算量更小、性能更强且加密速度更快。AES(高级加密标准)是目前世界上最常见且使用最广泛的对称分组密码算法之一[7],经过AES加密算法处理后的数据保留了明文的数据格式,其数据长度也不会发生改变,更不会破坏浮空器平台数据的传输结构,在通信容量有限的系统中具有不可替代的优势。

AES加密算法是一类安全性能强、移植操作简单并且应用前景广阔的加密方法,因此,对该算法的研究与改进是近年来的研究热点之一。N.Gangurde[8]等人将AES加密算法与QR 码结合,设计了一套安全可靠的票务系统,防止了用户隐私的泄露;Y.W.Ke[9]等人提出了一种基于时间自动机的嵌入式实时操作系统中密码可行性的定量判断方法,验证了AES加密算法运行在嵌入式实时操作系统上的可行性;M.Gupta[10]等人提出通过将算法中的S盒拆分为上下两部分,利用多线程任务并行在双S 盒中查找代换字节,但由于引入了双S盒,该方法在提高运行速度的同时扩大了对处理器的内存占用;Z.Rahman[11]等人提出了一种基于混沌映射和三维S盒的密钥轮换技术来提高AES加密算法的安全性,确保物联网下智能家居数据传输系统的可靠性,但是提高算法安全性的同时由于添加了新的算法并且提高了S盒维度,使得算法计算量增大且运行时间增长。

综上所述,AES加密算法在不同领域得到了广泛应用,然而,若直接将该算法应用到浮空器平台这一微型嵌入式系统时,受到嵌入式系统处理器计算速度和性能资源的限制,将会导致算法运行速度降低。为了保障浮空器飞行时敏感数据得到安全高效传输,本文对AES加密算法进行改进与优化,提出了基于轻量型AES加密算法的浮空器平台数据传输方案,通过减少轮函数的循环次数和将行移位变换改为列移位变换以实现轻量型AES加密算法,减少数据加解密过程中消耗的时间。经过实验验证,该方案在保证尽可能高的算法安全性的同时提高了数据加解密速度。

1 典型浮空器平台数据安全传输需求

平流层浮空器平台的数据传输系统以无线传输方式作为其通信媒介,实现浮空器平台与地面监控中心的点对点双向通信,传输模型如图1所示。其中,浮空器作为被监控对象,由处理器与各类传感器节点和执行机构节点共同组成平台嵌入式系统,完成平台下行数据的采集与处理;地面监控中心由地面上位机软件组成,负责指令的发送以及实时显示各类飞行数据,完成人机交互;无线传输模块由浮空器平台传输终端和地面传输终端两部分组成,二者通过特定的ID进行身份识别,完成平台与地面之间的数据传输。

图1 浮空器平台数据传输模型

本文提出的数据传输方案通过在平台嵌入式系统和上位机软件中内置轻量型AES加密算法,实现平台下行数据和上行指令的加密和解密。以保证即使关键数据在远距离无线传输过程中被恶意截取,对方在没有密钥的情况下也难以破解密文获取到有用的信息,从而实现浮空器平台的安全性,方案整体设计如图2所示。

图2 方案整体设计图

一方面,对于浮空器下行数据而言:首先,平台在自身嵌入式系统中内置轻量型AES加密模块,对采集到的各项下行数据进行加密处理,通过串口传输将密文数据发送到平台传输终端;其次,平台传输终端按照既定的通信协议将密文数据进行打包发送到地面传输终端;最后,地面传输终端通过串口将接收到的密文发送到上位机软件,利用上位机软件内置的轻量型AES加密算法完成数据解密处理,并实现各项下行数据的实时显示以及在线监测平台状态等功能。

另一方面,对于地面监控中心上行指令而言:首先,通过上位机软件内置的轻量型AES模块对上行指令进行加密处理,并以密文形式传输至地面无线传输终端;其次,地面无线传输终端按照既定的通信协议将密文指令进行打包发送到平台无线传输终端;最后,平台无线传输终端通过串口将密文指令发送到平台处理器,处理器根据内置的轻量型AES加密算法解密出原有指令内容,并实施相应动作,从而实现地面远距离对高空平台的控制。

2 轻量型AES加密算法

2.1 轻量型AES加密算法原理

2.1.1 原理介绍

高级加密标准(AES,advanced encryption standard)由美国国家标准与技术研究院在2001年发布,是目前对称加密算法中研究热点之一。AES加密算法采用分组加密的方式,分组长度固定为128位,即16字节[12-13]。算法通常有3种密钥长度,即128比特、192比特和256比特,不同的密钥长度对应不同的加密轮数,如表1所示。

表1 AES加密算法参数

AES加密算法利用混淆和代换的工作原理,将明文数据元素代换成为另一个不相关的元素,并对明文数据元素进行重新排列和组合,从而生成密文。以AES-128加密算法为例:首先,在初始阶段利用混淆的原理,对128位初始密钥经过十轮密钥扩展操作以生成后续需要的轮密钥;其次,进行十轮算法迭代,前九轮的迭代依次按照字节代换、行移位、列混淆以及轮密钥加操作进行,第十的轮迭代只进行字节代换、行移位以及轮密钥加操作,不进行列混合操作;最后,输出大小同样为128位的密文。算法在每轮迭代过程中进行的4个可逆变换统称为轮函数,它是AES加密算法实现高安全度的核心部分。

本文提出的轻量型AES加密算法在AES-128算法的基础上做出改进。在保证算法安全性的前提下,通过寻找轮函数循环的局部最优次数和将状态矩阵行移位变换改为列移位变换,即通过轮函数优化和行移位优化两个操作对AES加密算法进行改进,从而在保证算法安全性的同时提高算法加解密速度。

2.1.2 轮函数优化

轮函数迭代是保证加密算法安全性最重要的步骤,随着轮函数循环次数的增加,算法抵御网络攻击的能力也随之增强[14]。然而,随着轮函数循环次数增加的同时,算法的计算量也会随之变大,从而导致算法的运行速度降低。因此,轻量型AES加密算法旨在寻找既能够最大限度保证算法安全性,又可以提升算法运行速度的轮函数循环的局部最优次数,以达到平衡算法的安全性与运行速度的目的。

轮密钥扩展的发散程度对选取可行的轮函数循环次数具有一定的参考意义[15]。根据AES 加密算法的原理可知每轮密钥扩展后的比特差(bit difference,不同数据相同位相异的总和)越大,安全性越高。为了进一步明确轮函数循环的局部最优次数,该实验利用线性同余法随机生成了100个初始密钥及100个与初始密钥相差一位比特的对比密钥,共同构成100组密钥对;通过计算100组密钥对经过十轮密钥扩展后每轮比特差的变化情况,以选取轮函数循环的局部最优次数具体流程如图3所示。

图3 轮函数优化流程

1)构建初始密钥矩阵:利用线性同余法随机生成100×16的二维初始密钥矩阵A,记作A=[100][16],矩阵的各行代表初始密钥,各列代表密钥中的各个元素。线性同余方法是目前应用广泛的伪随机数生成算法之一[16]。一般形式为:对任意初始值X0,满足0≤X0<M,随机数序列由如下递推公式(1)确定:

式中,M为模数并且M>0;A为乘子且0<A<M;C为增量且0≤C<M。取M=232,A=2 140 13,C=2 531 011,X0取系统当前时间值。

2)生成对比密钥矩阵:通过判断初始密钥矩阵A中某列元素的奇偶性,若该元素为偶数,对其进行加一操作;反之,对其进行减一操作,以确定与初始密钥相差一位比特的二维对比密钥矩阵B,记作B=[100][16]。

3)执行密钥扩展:对初始密钥矩阵A和对比密钥矩阵B分别进行十轮密钥扩展,并将结果存储在四维矩阵W[100][11][4][4]和V[100][11][4][4]之中。密钥扩展将128位的原密钥转换为4*4矩阵形式,并将矩阵中的列向量存储在W[0]-W[3]中;基于W[0]-W[3]通过公式(2)和(3)依次求解出W[j],生成十个子密钥。

公式(3)中引入的G函数对列向量W重新排列后执行S盒代换,并用第一个字节与轮系数进行异或运算,生成新的列向量W’。一方面可以增强扩展密钥的非线性,提高密钥安全性;另一方面,可以消除算法中的对称性,使得密文数据更不容易被破解。

4)计算比特差:首先,将W和V矩阵中对应元素进行异或得到矩阵CMP[100][11][4][4],该步骤的目的是得到两个矩阵中每个对应元素之间相差的比特数;其次,统计CMP[100][11][4][4]各个元素中为“1”的位数得到矩阵COUNT[100][11][4][4],即W和V矩阵中对应元素的比特差;最后,通过对四维矩阵COUNT[100][11][4][4]进行降维操作,最终得到SUM2[100][11]矩阵,该矩阵行值代表100组密钥,列值代表每组密钥经过密钥扩展后的比特差。

5)统计频次:得到的二维矩阵SUM2[100][11]后,找到矩阵每行元素中的最大值及其所在列数,即可得到100组密钥经过密钥扩展后各轮的比特差峰值情况。

为了选取更多的实验样本,该实验将上述步骤重复进行10次,即通过总计1 000组密钥经过各轮密钥扩展后比特差的变化情况以确定轮函数循环的局部最优次数,最终实验结果如图4所示。

图4 各轮密钥扩展后比特差峰值图

从图4中可知,1 000组密钥在最初只相差一位比特差的情况下,在第四轮密钥扩展后开始出现比特差峰值,即此时密钥的混淆程度最大,说明经过前三轮密钥扩展后密钥各位已基本得到完全扩散;从第五轮密钥扩散之后,各轮的比特差峰值次数基本维持在200次左右,并且在第五轮密钥扩展后比特差峰值次数达到最大,占整体试验次数的20.3%,并在第七轮密钥扩展后比特差峰值次数达到了第二次小高峰,占整体实验次数的17.3%。

J.Daemen[17]指出可以从加密算法抗击捷径攻击的能力出发考虑算法的轮函数的循环次数,并且证实对于AES-128加密算法而言,目前尚未发现能够对具有轮函数循环六次以上的简化版本实施的捷径攻击方法。综上分析,本文将该理论研究与实验结果相结合,选取前七轮作为轻量型AES加密算法的轮函数循环的局部最优次数。

2.1.3 行移位优化

轻量型AES加密算法将AES加密算法中的行移位变换改为列移位变换,其执行方式与行移位基本相同,目的在于打破AES加密算法常规的执行方式以优化算法结构并提升算法安全性,从而使密文数据更难被破解。列移位变换是一种线性变换,通过公式(4)有规则地对状态矩阵进行字节移动实现:

式中,Nb取4。状态矩阵由4*4个字节构成,在加密过程中,保持矩阵的第一列不变,将第二行向下移动一个字节、第三行向下移动二个字节、第四行向上移动一个字节,如图3所示。列移位处理后,得到的状态矩阵如图5所示。

图5 状态矩阵图

解密时:保持矩阵的第一列不变,第二行向上移动一个字节、第三行向上移动二个字节、第四行向下移动一个字节,如5五所示。列移位处理后,得到的状态矩阵如图6所示。

图6 状态矩阵图

2.2 轻量型AES加密算法设计

轻量型AES 加密算法在AES-128 算法的基础上,对AES-128的处理速度和效率进行优化提高。该算法采用7次轮函数循环,除最后一轮外,前六轮次都包含字节代换(SubByte)、列位移变换(ColumnRow)、列混合(MixColumn)、轮密钥加(AddRoundKey)4个处理步骤,另外,最后一轮不包含列混合操作,算法具体实现流程如图7所示。

图7 轻量型AES加密算法流程图

2.2.1 字节代换

字节代换作为轻量型AES加密算法的第一步,是整个算法中唯一的非线性变换,关键在于S盒的构造。S盒是一个具有很强代数结构的16×16矩阵[19,18],设计中包含3个步骤:首先,初始化矩阵的第一行是 {00},{01}…{0F},第二行是{10},{11}… {1F},其次,将矩阵中每个元素的值代换为其在有限域GF(28)上的逆乘法;最后,利用公式(5)对每个元素执行仿射变换:

在加密过程中,字节代换是将状态矩阵中的每个字节代换为S盒矩阵中的另一个字节。取状态矩阵中每个字节的高四位作为S盒行值,低四位作为S盒列值,根据行值和列值确定该字节所对应的S盒中的字节,并用S盒中该位置的字节代换状态矩阵中的元素,作为新的字节输出;在解密过程中,字节代换的逆运算为逆字节代换。逆S盒的生成与S盒生成步骤相反,初始化S盒进行逆仿射变换后,对每个字节在有限域上取乘法逆运算,完成逆字节代换步骤并输出结果。

2.2.2 列移位

列移位操作是对状态矩阵中各个元素进行重新排列以打破原状态矩阵中的元素之间的统计关系。列移位是整个轻量型AES加密算法中独具特色的操作,利用列移位变换来代替原AES加密算法中的行移位变化,使得黑客攻击难以预测算法正在执行的操作方式。列移位变换的执行方式与行移位相同,并在此基础上做了一些改进,具体操作与2.1.2行移位优化章节一致。

2.2.3 列混合

列混合变换是数据混淆的关键步骤,该步骤将列移位后的状态矩阵与常数矩阵相乘,得到混淆后新的状态矩阵,运算过程如公式(6)所示:

在具体计算中,列混合变换可视为将原状态矩阵中的每一列与常数矩阵相乘,得到与原状态矩阵对应的新状态矩阵,即将原状态矩阵中每列所有元素的加权和赋值给新状态矩阵中对应的元素,从而输入的每个字节都会影响到输出的4个字节,第j(0≤j<3)列可表示为:

列混合变换的逆变换为列混合变换的逆。逆变换是将矩阵中的每一列与常数矩阵相乘,该常数矩阵与列混合变换中的常数矩阵互为逆矩阵,从而便可恢复出原状态矩阵中的元素值,逆列混合变换的计算过程如公式(8)所示:

2.2.4 轮密钥加

在轮函数转换中,每轮将生成一个通过密钥扩展获得的新密钥。轮密钥加是将128位新生成的轮密钥与状态矩阵中的数据进行逐位异或操作,轮密钥加操作的计算如公式(9)所示:

由于异或运算的逆操作是其自身,因此轮密钥加的逆运算与轮密钥加的运算过程一致。

3 实验验证与分析

为了验证所提出的轻量型AES加密算法应用于浮空器平台数据传输的安全性和高效性,实验使用C 语言在KEIL5软件中编写AES加密算法和轻量型AES加密算法,并在主频为168MHz、FLASH 内存为1 M、基于Cortex-M4内核的STM32F407处理器上实现算法的模拟和仿真。实验选取2021年浮空器平台的飞行数据作为加密算法的明文测试数据源。首先,对输入的浮空器平台明文数据进行字节填充和矩阵旋转两步预处理操作;其次,基于STM32嵌入式处理器利用轻量型AES加密算法对不同大小明文数据源进行加解密实验并得到各个数据源的传输结果;最后,从算法安全性和运行速度两方面对AES加密算法与轻量型AES加密算法进行对比分析。

3.1 数据预处理

在执行轻量型AES加密算法之前,需对明文数据进行预处理操作以减少明文数据之间的统计关系,增强明文数据的扩散程度。预处理的流程包括字节填充和明文矩阵旋转。

Step1:字节填充

字节填充是对明文数据处理的第一个步骤,填充的目的是确保明文数据为分组长度16字节的整数倍,以保证明文数据可全部转换为4*4字节的矩阵。字节填充的具体步骤如图8所示。

图8 字节填充流程图

在进行字节填充流程中,首先计算得到待处理的明文数据的长度;其次,判断明文数据长度是否为16字节的整数倍,如若明文数据长度不足为16字节的整数倍,则用0将数据长度补齐为16字节整数倍;最后,输出完成字节填充后的明文数据。

Step2:明文矩阵旋转

预处理步骤的第二步是将完成字节填充流程后的明文数据分为若干4*4字节大小的矩阵,并依次对各个矩阵逆时针旋转90°以进一步增强明文数据内部的混淆程度。该步骤的输入为若干4*4字节大小的明文矩阵。矩阵旋转是对明文数据内部的字节进行重新排列,不仅可以打破原有明文数据间的统计关系,还能够补偿后续在减少轮函数循环次数过程中所削弱的算法安全性。明文矩阵逆时针旋转90°的操作如图9所示。

图9 逆时针旋转操作图

3.2 实验结果

在实验过程中,选取10kB、20kB、30kB、40kB、50kB、60kB六种不同大小的数据源利用轻量型AES加密算法分别对各个数据源进行十次处理后,取10次结果的平均值作为实验结果。具体实验结果详见表2。

表2 加密算法实验测试结果

由表2可知,经过轻量型AES加密算法处理后的数据与明文相比,其准确率随着明文数据源的增大逐渐减小:对30kB以内的小数据量明文数据源进行传输时完整实现了加解密操作,成功保证了数据准确无误传输;由于受到嵌入式系统处理器性能的限制,在对数据量为40~60kB大小的数据源传输时存在误差,数据加密完整率平均达到99%左右。综上分析,本文提出的轻量型AES加密算法能够保证各个大小的数据源稳定完整传输,适合应用于浮空器平台数据传输。

3.3 性能分析

3.3.1 统计分析

在明文数据源中存在的重复字节可能会泄露某些重要信息,因此密文数据必须具有均匀分布的字节以保证数据的安全性。为了测试轻量型AES加密算法的加密效果,统计了各个数据源在加密前后数据内容的变化,以描述明文和密文中的字节分布情况[20],如图10和图11所示,图10中明文数据的字节分布出现了明显的峰值,这些峰值反映了明文数据中重要数据信息的细节;而经过加密处理后的密文数据的字节分布图11呈现无规律的均匀分布,有效地隐藏了明文数据源中的统计信息,说明轻量型AES加密算法可以有效地抵御基于数据统计的攻击。

图10 明文数据分布直方图

图11 密文数据分布直方图

3.3.2 信息熵

信息熵一种衡量数据随机性水平的指标,用来表示数据的混乱程度。熵值越大表明数据越混乱所包含的有效信息越少,信息熵计算公式如下[21]:

式中,p(mi)表示数值为mi出现的概率。由于密文数据值以字节为单位进行表示,所以其取值范围为[0,255],对应的理想信息熵值为8。表3 列出了对不同大小数据源使用AES加密算法和轻量型AES加密算法加密后的密文信息熵及其二者之间的熵差(信息熵差值的绝对值)。从表中可以看出,AES加密算法和轻量型AES加密算法加密后二者的密文信息熵相近皆与理想信息熵值接近,并且最大熵差小于0.01,说明本文提出的加密算法能够有效防止明文数据源的信息泄露,可以有效地抵抗基于信息熵的攻击。

表3 密文信息熵

3.3.3 运行时间分析

算法加解密运行时间是衡量加密算法性能的重要参数[22]。本文的主要目标是提供一种用于嵌入式微型系统上的加密算法,并且该算法在对浮空器平台上数据进行加密和解密时处理速度更为高效快捷。通过输入不同大小的明文数据源,对AES加密算法和轻量型AES加密算法各自的加密和解密的时间进行测试与统计,测试结果如表4所示。

表4 算法运行时间

实验结果表明:在对各个不同大小数据源加解密过程中,轻量型AES加密算法的运行时间都低于AES加密算法,并且对各个数据源多次测试取平均值后,轻量型AES加密算法的加密时间比AES加密算法少46.33ms,而解密时间则少50.83ms,新算法的运行速度更快。

为了进一步分析明文数据源大小对算法运行时间的影响,该实验以数据源的大小(kB)为横坐标,算法运行时间(ms)为纵坐标,绘制了利用轻量型AES加密算法和AES加密算法对不同大小的数据源执行加密和解密过程中算法运行时间的对比图,如图12所示。

图12 算法加密过程运行时间

其中,轻量型AES加密算法和AES加密算法在执行加密和解密过程中算法的运行时间皆随数据源大小的增加而上升,但由于轻量型AES加密算法减少了轮函数的循环次数,使得每个数据源的加解密时间都有所缩短,并且在数据源小于40kB时,轻量型AES加密算法和AES加密算法执行加解密过程中所需要的运行时间与数据源大小基本呈线性增长,在数据源大于40kB时,受到处理器性能和资源的限制,轻量型AES加密算法和AES加密算法执行加解密过程所需要的运行时间皆有所增加。

如图13所示,以数据源的大小(kB)为横坐标,算法运行时间差(ms)为纵坐标,绘制了轻量型AES加密算法和AES加密算法在执行加密过程和解密过程中算法运行时间差。当输入的数据源越大时,AES加密算法比轻量6型AES加密算法的运行时间越长,二者的运行时间差随着数据源增大而加大。因此,与AES 加密算法相比,轻量型AES加密算法运行速度有所提升。

图13 算法加解密过程运行时间差

4 结束语

针对AES加密算法研究应用到球载微型嵌入式系统中难以平衡算法安全性和速度相互制约而引起的无法保证浮空器平台数据实时回传到地面监控终端的问题,提出了一种基于轻量型AES加密算法的浮空器平台数据安全传输方案。该方案通过对AES加密算法进行改进和优化以保证能够在算法安全性和速度之间取得平衡。一方面,将在执行加密算法之前加入了字节填充和矩阵旋转操作并且行移位变换改为列移位变换以增强算法的安全性;另一方面,减少算法中轮函数的循环次数以提高算法运行速度,从而保证平台数据能够实现实时传输。实验结果表明,该算法实现了不同大小数据源的稳定可靠传输,数据传输完成率可达98%以上;相比于AES加密算法,该加密算法在保障数据安全传输的同时,加密速度提高了24.5%,解密速度提高了24.2%,有效地实现了浮空器平台数据可靠、安全且快速传输。

猜你喜欢
浮空器轻量明文
并继竿之我见(四)
——轻量竿只有新手才用?
基于副气囊的平流层浮空器高度控制
北约测试可改善战场网络系统的“氦风筝”新型浮空器
轻量新能源汽车应用开关磁阻电机系统匹配的研究
我对轻量型并继竿的看法
奇怪的处罚
奇怪的处罚
四部委明文反对垃圾焚烧低价竞争
基于AD7891的浮空器高速数据采集系统设计