李 晨,王布宏,田继伟,郭戎潇
(空军工程大学 信息与导航学院,西安 710077)
无人机凭借其机动性好、价格低廉、方便快捷、无人驾驶等特点[1],在军事领域和民用领域都发挥着越来越重要的作用.无人机在给我们的生产生活方式带来各种便利的同时,其面临的安全问题也逐渐暴露出来[2,3].目前无人机面临的攻击和威胁主要集中在:无线信号劫持与干扰、GPS (Global Positioning System,全球定位系统)欺骗、传感器攻击、通信网络攻击,这些都可能导致无人机的飞行能力下降或轨迹异常,并造成信息泄露[4,5].
无人机系统的实时控制和通信能力使得其具有广阔的发展空间和应用前景,但同时也容易遭受可能的数据攻击.在无人机系统中,主控制器根据各种传感器采集到的数据,向动力系统下达相应的指令,以保障无人机的正常飞行和工作[6].因此,传感器所采集到的虚假数据很可能使无人机做出错误的决策,影响无人机的飞行安全.在现有的研究中,攻击者可以通过各种方式对传感器进行欺骗,如在传感器反馈链路中截获并注入虚假数据,或使机载处理器过载,从而导致传感器与控制器之间的通信中断[7].另外,由于技术和成本的限制,一般机载传感器往往无法对正常和异常的信息进行检测和区分.传感器是无人机感知自身状态和外界变化的基础,一旦出现异常或者故障,可能会造成无人机不按指令正常飞行,继而导致事故发生,因此针对无人机飞行数据的异常检测是至关重要的[8].
异常检测方法主要可分为3大类,基于知识的异常检测方法、基于物理模型的异常检测方法和基于数据驱动的异常检测方法[9].前两种方法需要充分了解领域知识或系统结构才能达到较好的检测效果,然而无人机的各个子系统很难建立精确的物理模型,同时无人机实际飞行数据中异常样本较少,一般只能较好的检测已知的异常模式,因此检测适用性、抗干扰能力较差[9,10].基于数据驱动的异常检测方法可以细分为基于相似性的方法、基于统计的方法、基于分类的方法、基于预测的方法[10].文献[11]研究分析了无人机控制系统状态估计中数据攻击带来的安全威胁,提出了新息序列驱动的无人机控制系统数据攻击的检测方法,该方法建立在对传感器十分了解的基础上,并且不能自适应检测数据中出现的新的异常模式.文献[12]提出了一种用于虚假数据注入攻击检测的神经网络自适应结构,该设计利用扩展卡尔曼滤波优化神经网络的权值,提高了神经网络的学习速度,然而该实验所设计的攻击较为简单,因而适用度不高.文献[13]提出一种用于无人机异常检测的长短期记忆(LSTM)递归神经网络方法,通过预测结果和预测不确定性的估计来实现异常检测,但其实验对象为单维数据变量,而且易受参数选取的影响不能有效检测.
无人机在飞行过程中产生的传感器数据是典型的时间序列,基于预测的异常检测方法可以根据历史信息提前计算出下一时刻的飞行状态.如果预测数据与实际传感器数据有较大偏差,则此刻无人机可能遭受攻击出现异常.LSTM神经网络对非线性和非平稳时间序列具有较强的逼近能力[14],一般的统计方法需要人工分析预测误差来确定阈值,如:余弦相似度、欧氏距离,本文选用OCSVM具有更好的适应性,并能较好地处理只有单样本分类问题.基于历史无人机传感器数据,通过LSTM模型训练出预测样本,并将预测前后的差值序列作为样本送至OCSVM检测模型,训练出超平面分类器,根据距离函数值的正负,判断是否为异常点.实验结果表明该检测模型能有效判定针对无人机传感器的数据攻击,并具有较好的检测效果.
循环神经网络(Recurrent Neural Network,RNN)是一种用来处理时间序列数据的深度学习方法,广泛应用于语音识别、机器翻译、自然语言建模描述等诸多领域[15].但在实际运用中,由于原始RNN存在梯度消失和梯度爆炸现象[14],因而无法处理过长序列.Hochreiter & Schmidhuber提出了LSTM[16],作为一种改进型的RNN,通过3个门控状态控制信息传输,遗忘不重要信息,长期记忆需要的信息,有效解决了RNN存在的长依赖问题.LSTM具有较强的长期记忆能力,更适合分析时间序列,在时间序列异常的检测中发挥着越来越大的作用.
图1 LSTM单元的结逻辑架构示意图Fig.1 LSTM unit logical architecture diagram
普通RNN的隐含层节点结构简单,只有一个Sigmoid或Tanh激活函数,只是把上一次的状态作为本次的输入一起输出.LSTM在状态的更新做了灵活地选择,遗忘门用于丢弃部分存储信息,输入门用于控制新信息的比例完成状态的更新,输出门用于控制此时存储信息的输出部分.
如图1所示为LSTM单元的逻辑架构图,当t时刻的数据X输入LSTM时,便与t-1时刻的长期状态Ct-1和输出ht-1一起参与运算,得到t时刻LSTM的输出ht,ht便为所求t时刻的预测数据,则LSTM具体更新公式为:
it=σ(Wi·[ht-1,xt]+bi)
(1)
ot=σ(Wo·[ht-1,xt]+bo)
(2)
ft=σ(Wf·[ht-1,xt]+bf)
(3)
Ct=ft⊗Ct-1+it⊗tanh(Wc·[ht-1,xt]+bc)
(4)
ht=ot⊗tanh(Ct)
(5)
Wi、Wo、Wf分别为输入门、输出门、遗忘门的权重系数,bi、bo、bf为偏置矢量,σ(·)为Sigmoid激活函数,tanh(·)为双曲正切函数.通过这样的门结构,使得LSTM神经网络具有保持长期依赖信息的能力,有效增加了记忆的长度,适用于长时间序列问题的处理.
一类支持向量机(OCSVM)是Schölkopf[17]等提出的一种用于解决有限数据分类问题的无监督机器学习方法.该模型旨在把样本通过核函数[18]映射到高维特征空间,在高维特征空间中构造线性判别函数来实现样本的分类,同时具有较好的泛化能力.
对于给定的不含标签的 k 个训练样本,其中有小部分属于孤立点,OCSVM目标是确定正常样本的边界,即最优超平面,也就是要找到函数F(x),使得样本中大部分取值为+1,而在孤立点上的取值为-1.分类问题可以看做是,在映射的高维特征空间中寻找最优分类超平面,对应于F(x)决定样本点所属的区域.
OCSVM可以转化为寻求最小化目标函数:
(6)
其中:xi为样本数据,n为训练集数量,ζi为松弛因子,ν为权衡参数,φ为原始空间到特征空间映射,w和ρ分别为特征空间中超平面的法向量和补偿.
引入拉格朗日乘子和径向基函数,可将约束条件下的目标优化问题转化为特征空间的对偶问题[19]:
(7)
K(xi,xj)=exp(-γ‖xi-xj‖2)
(8)
约束条件为:
(9)
由上式可求出:
(10)
决策函数为:
(11)
对于训练数据xi,F(xi)表明它在高维空间位于超平面的正负方向,正的为正常样本,负的为异常样本.
本文用时间序列X={X1,X2,…,Xn}表示提取后的无人机传感器数据,n为序列长度.对于每个时刻有:
XkT=(x1,x2,x3) , 1≤k≤n
(12)
其中Xk是一个三维列向量,代表了无人机某一时刻的位置信息.
本文旨在解决无人机传感器数据的异常判定问题,为了解决此问题,需要建立异常数据的检测阈值.图2展示了异常检测模型建立的流程图.
图2 异常检测模型框架Fig.2 Overall framework of anomaly detection model
模型在训练阶段,将提取数据进一步归一化后得到序列数据S={S1,S2,…,Sn},然后将处理后的无人机飞行数据输入到LSTM神经网络进行预测,则可以得到相对应预测序列P={P1,P2,…,Pn},再将预测前后的数据序列做差得到:
DK=PK-SK, 1≤k≤n
(13)
模型在测试阶段,将测试数据Xk输入模型,经过模型分类求解后,如若差值对应的距离函数值F(DK)为正,则Xk被判定为正常数据;如若差值对应的距离函数值F(DK)为负,则Xk被判定为异常数据.
由于接收的无人机传感器数据存在一定的数据缺失和数据噪声,为了保证LSTM神经网络预测的准确性,需要对数据进行预处理.
考虑到通信链路和收发设备的影响,无人机传感器数据在生成、传输和采集过程中都有可能掺杂有噪声数据,使数据在较小范围内产生随机偏差,由于无人机机动性较强,本文默认噪声影响相对较小不作处理.
而在传输的过程中,由于链路的不可靠性,信号可能会无法解析或者传输数据的校验字段出现损坏,都将导致无人机传感器数据无法有效获取,从而出现无人机传感器数据的缺失.故数据缺失较多的无人机传感器数据不能选取为训练样本,否则会降低LSTM神经网络预测的准确性,进而降低模型的检测概率.
若某一趟飞行数据仅缺少少量传感器数据或者不缺少传感器数据,则将这一趟飞行数据选取为训练样本.对缺失的少量无人机传感器数据,本文采用插值法进行补齐,具体方法为:计算缺失值前后数据的斜率,根据斜率补齐缺失的传感器数据.
无人机传感器数据包括了经度、纬度、高度、俯仰角、偏航角、滚转角等信息,本文主要研究了无人机位置数据的异常检测,因此提取经度、纬度、高度作为三维数据特征.
为了消除指标之间量纲的不良影响,同时为了减短模型的训练时长、使训练过程尽快收敛,进一步将序列元素在每个维度中做归一化处理,这里选用最大最小标准化方法:
(14)
通常无人机执行任务时的飞行计划是已知的,而且训练集中包含了无人机的各种飞行状态,故可通过训练集采集的传感器数据确定最大最小值,进一步对数据进行归一化处理.
无人机传感器数据是具有时间相关性的一系列数据,它任一时刻的高度、纬度、经度、角速度和角加速度等信息都与历史时刻和未来时刻相关.为了实现对无人机传感器数据的预测,本文从输入层、LSTM层、全连接层和输出层的角度设计了一种基于LSTM神经网络的预测模型,如图3所示.
图3 LSTM预测模型Fig.3 Prediction model of LSTM
LSTM层:利用LSTM能捕获数据的时序性,并能解决梯度消失问题,将其自动学习无人机传感器数据的抽象特征,设置隐藏层神经元个数分别为40,80,20.同时,为了提高模型的泛化能力,避免过拟合,设置dropout比例.
全连接层:全连接层将其输入特征重新拟合,通过权重矩阵提取以前全部数据的局部特征,能够将网络的输出值映射成目标输出值.为了较好提取并保留特征,设置全连接层的神经元个数为10.
输出层:输出层通过线性激活函数输出预测结果.
为了解决无人机传感器数据攻击检测阈值的自适应问题,本文将传感器数据预测序列和实际序列做差,得到差值序列为DK=PK-SK;将差值序列DK输入OCSVM程序求解,根据训练集可以求得 OCSVM的超平面分布;根据测试集可以求得每个差值到超平面的矢量距离函数值.其中,距离函数的正负就是判定数据异常与否的依据.为了使样本在特征空间中线性可分,需要利用核函数将样本从原始空间映射到一个更高维的特征空间.本文采用高斯核函数,其表达式为:
K(xi,xj)=exp(-γ‖xi-xj‖2)
(15)
其中,xi和xj是输入OCSVM的任意两个样本,γ是高斯核参数.
为正确评估分析模型的检测效果,可将实验结果分为4类,如表1所示.本文采用检测率(TNR)、召回率(TPR)和准确率(ACC)作为评价指标,检测率TNR是指被模型判定为异常样本的数目占实际异常样本数目的比例,召回率TPR是指被模型判定为正常样本的数目占实际正常样本数目的比例,准确率ACC是指被模型正确预测的样本数目占实际总样本数目的比例.上述3个指标的值越大,LSTM-OCSVM异常检测模型的性能越佳.
表1 样本分类结果Table 1 Classification results of sample
评价指标具体计算如下:
(16)
(17)
(18)
本文实验采用Tensorflow深度学习框架,使用Python 语言编程实现,实验运行环境为JetBrains PyCharm Community Edition和MATLAB 2016a软件, 操作系统为Windows 10(64位),内存为8 GB,处理器为Intel(R) Core(TM) i7-6500U 2.59GHz.
本文选用的实验数据来自于Zurich大学机器人和感知小组[20],通过无人机在城市街道上方低空飞行采集,包含了GPS和惯性测量端元(Inertial measurement unit,IMU)传感器数据、地面街景图像数据.根据时间戳的特性,选取了等时间间隔的80000条无人机位置数据,其中前60000条数据作为训练样本,后20000条数据分为40组,每组实验500条数据进行测试.选取的无人机飞行数据包含了爬升、下降、变向等运动,具有一定的代表性,其中的一条测试轨迹如图4所示.针对无人机传感器的数据攻击主要有重放攻击、DOS攻击、数据篡改攻击,本文假定攻击已经成功,攻击数据由模拟生成并加到测试数据段中,具体如下:
高度偏差(数据篡改):前150条、后150条数据不作任何处理;对中间200条飞行数据的高度信息进行篡改,以0.5英尺为倍数,逐步改变高度信息.具体来说,第151条数据的高度信息增加0.5英尺,第152条数据的高度信息增加1英尺,依次类推直至第350条数据.
随机位置偏移(数据篡改):前150条、后150条数据不作任何处理;中间200条飞行数据,在经度纬度上加入均值为0,标准差为0.00001的高斯白噪声.
航迹消失(DOS攻击):前150条、后150条数据不作任何处理;在150条数据350条数据之间发动DOS攻击,大量占用传输信道,造成控制端没有任何数据反馈.
图4 无人机轨迹示意图Fig.4 UAV trajectory diagram
航迹替换(重放攻击):前150条、后150条数据不作任何处理;中间200条飞行数据,攻击者发动重放攻击,将之前监测记录的第126条-第150条数据段连续发送了8次给控制端.
在LSTM神经网络中,通过单变量控制法观察预测前后样本的均方误差值和运行时间,分别确定出训练次数epochs=40,每组样本数batch_size=100,dropout比率为0.2,优化器选择Adam时,LSTM预测效果较好.特别地,对于滑动窗口长度的选择,既要充分考虑无人机传感器数据的时间相关性,同时也要考虑运算时间.如若滑动窗口太小,则LSTM神经网络会失去大量的时间相关信息,使得预测效果不佳;如若滑动窗口太长,LSTM神经网络会捕捉到大量的时间相关信息,但也会预测过拟合,大大降低预测的时效性.本文以预测前后样本的均方误差和LSTM神经网络完成一轮训练所需的时间作为衡量指标,对不同时间长度的滑动窗口作以对比,如图5所示.由于无人机飞行机动性较大,滑动窗口长度对应的预测效果好坏也有波动,综合考虑预测时效以及预测准确度,这里选择滑动窗口长度为9.
图5 滑动窗口长度效果对比Fig.5 Comparison of sliding window length
在OCSVM检测模型中,需要调节响应参数(ν,γ)来达到理想的检测效果.本文采用通过大量实验观测并计算检测准确率,最终取权衡参数ν=0.1,高斯核参数γ=0.1.
如图6-图9所示为对应4种攻击的检测判定图.其中,图6描述的是注入高度偏差攻击后的检测判定图,横坐标取500
图6 高度偏差攻击检测图Fig.6 Detection of height deviation
个时刻,纵坐标取距离函数,阈值为0.在该图中,对于异常样本,150时刻350时刻对应的距离函数值共有185个<0,故检测率为92.5%;对于正常样本,在其余300时刻对应的距离函数值共有291个≥0,故召回率为97%;对于总样本,预测结果和实际样本一致的有476个,故准确率为95.2%.
图7 随机位置偏移检测图Fig.7 Detection of random offset
同理,如图7-图9所示,随机位置偏差攻击的检测率为87.5%,召回率为82.6%,准确率为84.6%;DOS攻击的检测率为99%,召回率为97%,准确率为97.8%;重放攻击的检测率为87.5%,召回率为91.3%,准确率为89.8%.
图8 DOS攻击检测图Fig.8 Detection of DOS attack
实验中,一共用LSTM-OCSVM异常检测模型测试了40段无人机飞行数据,取40次实验的均值作为异常检测的结果.表2列出了该模型的异常检测结果.从表2中可以看出,LSTM-OCSVM模型的检测率均可达86.2%以上,召回率可达83.0%以上,准确率可达84.6%以上.另外,对于DOS攻击的检测效果最佳,这是因为航迹出现了消失,停留在发动攻击前的时刻,并于攻击结束后发生位置跳变,因此也最容易被检测;对于随机偏差攻击的检测效果相对较差,这是因为本身数据采集就含有噪声,如若为了攻击的隐蔽性加入的攻击变量不大,此时确实较难检测.计算可得,针对上述4种攻击,平均检测率为91.1%,平均召回率为90.7%,平均准确率为90.675%.
图9 重放攻击检测图Fig.9 Detection of replay attack
表2 异常检测结果Table 2 Results of anomaly detection
本文考虑了无人机传感器数据的时间相关性,提取了经度、纬度、高度作为特征数据,利用LSTM神经网络对位置数据进行了预测,并将预测前后的差值序列输入OCSVM分类器训练,可以得到包含正常样本的超平面,根据测试样本差值计算到超平面的距离函数值进行检测.我们利用真实采集的无人机传感器数据并构造了含有攻击的测试数据,实验结果表明,LSTM可用于检测针对无人机传感器数据的DOS攻击、重放攻击、高度偏差攻击、随机偏移攻击,且适用性较好.
然而,由于无人机具有动态变化性,随着飞行控制指令的改变,传感器数据可能会有较大波动,造成错误检测,同时对于攻击造成的微小状态变化不易检测.该模型针对随机位置偏移攻击和重放攻击检测率并不够高,下一步工作是继续改进检测模型提升对上述两种攻击的检测精度,并考虑研究攻击的实时检测.