发明内容
本发明针对现有技术的上述缺陷,提供一种基于深度学习的无线局域网入侵检测,适用于基于WiFi组网的无线局域网,针对该网络的特点采用基于LSTM的循环神经网络,采用LSTM循环神经网络对具有时序特点的无线局域网网络数据流量进行分类预测,识别出目标网络中的入侵行为,对可能发生的信息安全问题进行预警和预防,设计针对无线传感器网络入侵检测的有效***,保障无线局域网的保密性、可用性和完整性,提高无线局域网的安全级别。
本发明解决上述技术问题的技术方案是,一种基于深度学习的无线局域网入侵检测***,包括数据收集模块、RNN学习模块、RNN验证模块、采集预处理模块、识别模块和结果处理模块,其中数据收集模块负责采集无线局域网数据作为样本,并进行数据集构建和划分,RNN学习模块读取数据集进行模型和参数学习构建习得模型,RNN验证模块根据数据收集模块提供的验证数据对习得模型进行验证和测试,验证和测试结果反馈给RNN学习模块进行优化,采集预处理模块实时采集目标网络数据包,对数据包进行过滤并处理成满足RNN神经网络要求的数据结构,同时向数据收集模块提供脱敏后的数据,识别模块从RNN学习模块获取习得模型对脱敏数据进行分类预测,结果处理模块根据识别模块分类预测的输出判断目标网络流量序列的类别,根据设置的优先级和处理方法进行不同粒度的防御处理。
其中,模型为基于LSTM的神经网络模型,模型形态基本固定,习得模型主要习得该模型中各部分的权重参数与偏差值,同时对采用的超参数进行微调。不同粒度的防御处理具体可为,根据识别出的网络流量序列的类别进行相关处理,例如,识别出为恶意流量,根据用户对该类型流量配置的对应动作进行防御处理,如为未授权用户则主动断开连接等。根据用户配置,不同用户对不同恶意流量的处理优先级不同。
本发明进一步,数据收集模块将数据集按照比例随机划分为训练集、验证集和测试集,每个数据帧被处理为含有多个属性的一维向量,其中最后一个属性为该数据帧所对应的类别标签,其余属性分别对应虚拟冗长帧中形成的特征向量属性。RNN学习模块根据长短时记忆循环神经网络LSTM分类预测模型构建前向网络计算图,将训练集按序列顺序输入到前向网络中,得到序列的预测值,根据序列预测值计算损失函数,更新权重参数和偏置参数以最小化损失函数。识别模块从RNN学习模块获取计算图和学习参数构建前向传播网络,将采集预处理模块提供的数据作为输入向量输入到前向传播网络中,获取对该网络流量序列数据类型的分类预测概率。
对数据包进行过滤并处理成满足RNN神经网络要求的数据结构具体包括,过滤掉抓取数据中非目标网络的数据包以及目标网络中的非关键数据包,将过滤后的数据包按照802.11MAC帧格式进行解析,按每个802.11帧对应一个序列时间步的规制对解析数据进行序列划分,并按照预定长度分片,提取解析数据中各字段的数据,构建虚拟冗长帧并将提取的数据写入其中,形成等长的待处理数据;按缺失值补齐虚拟冗长帧中缺失的字段,将虚拟冗长帧中的字段映射为输入数据对应的属性,按照各属性的类型转换为含有多个属性的一维向量。
其中,LSTM分类预测模型包括,输入层、隐藏层、输出层,其中,输入层由一系列神经元构成,用以获取输入数据的特征向量,隐藏层由两层LSTM层构成,每层LSTM层分别具有多个神经元,每个神经元对应一个LSTM记忆块,记忆块包含了自连接的状态神经元以及输入门、输出门和遗忘门,在同一时间步的LSTM层之间,采用正则化方法减少过拟合的影响,例如可采用dropout正则化方法,在学习过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。输出层为具有多个神经元的全连接层,分别对应需要预测的目标类别,通过归一化指数函数softmax激活函数,将隐藏层的输出转换为与分类预测类别相关的概率分布预测值
为加快神经网络的训练速度,根据公式:
确定原始损失函数,其中,
为对真实类别y
t时间步t的预测值,T为当前序列的最大时间步。
进一步LSTM记忆块根据公式:
it=σ(Wi·xt+Ui·ht-1+bi)
ft=σ(Wf·xt+Uf·ht-1+bf)
ot=σ(Wo·xt+Uo·ht-1+bo)
ct=at⊙it+ct-1⊙ft
对LSTM记忆块结构模型向量进行更新,其中,c
t、f
t、i
t和o
t分别为时间步t的状态神经元向量、遗忘门向量、输入门向量和输出门向量,a
t和h
t为当前时间步的输入结点向量和输出结点向量,x
t为当前时间步的LSTM记忆块的输入向量,ct-1和ht-1分别表示时间步t-1的状态向量和输出结点向量,φ和σ分别表示双曲正切tanh激活函数和sigmoid激活函数,⊙表示求向量的哈达玛积,W
*与U
*分别表示下标
所示对应结点对时间步t输入向量和t-1时间步输出结点向量的权重矩阵(下标
可为c,i,f,o其中之一),bc,bi,bf,bo分别表示状态神经元、输入门、遗忘门和输出门对应的偏差值向量。
本发明还提出一种基于深度学习的无线局域网入侵检测方法,数据收集模块负责采集无线局域网数据作为样本,并进行数据集构建和划分,RNN学习模块读取数据集进行模型和参数学习构建习得模型,RNN验证模块根据数据收集模块提供的验证数据对习得模型进行验证和测试,验证和测试结果反馈给RNN学习模块进行优化,采集预处理模块实时采集目标网络数据包,对数据包进行过滤并处理成满足RNN神经网络要求的数据结构,同时向数据收集模块提供脱敏后的数据,识别模块从RNN学习模块获取习得模型对脱敏数据进行分类预测,结果处理模块根据识别模块分类预测的输出判断目标网络流量序列的类别,根据设置的优先级和处理方法进行不同粒度的处理。
具体的,识别模块从RNN学习模块获取计算图和学习好的参数构建前向传播网络,将采集预处理模块采集并处理好的数据作为输入向量输入到前向传播网络中,最终输出对该网络流量序列数据的类型的分类预测概率;所述结果处理模块获取识别模块的输出结果,判断该网络流量序列的类别,然后根据预设的优先级和处理方法进行不同粒度的处理,处理方法包括但不限于向责任人发出警报,接入目标网络实施防御等手段。
本发明利用LSTM循环神经网络挖掘无线局域网络流量数据之间存在的潜在关联关系,而不是对单条数据帧进行识别预测,提升了***预测判断所依照的信息量,增大了入侵检测***的处理粒度,有效降低误判率,同时不涉及网络负载数据,使得用户隐私能够得到有效保护。
本发明特别是适用于WiFi组网的智能家居***。相较于传统入侵检测技术,本发明不涉及网络负载数据,能够提供良好的用户隐私保护,采用机器学习方法,能够通过数据自动化的学习适用的模型;采用深度学习,一般不需要事先对数据进行特征分析和数据预处理,只需要将数据转换为神经网络接受的数据结构即可,采用循环神经网络,能够挖掘网络流量序列中的长短期依赖关系。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
如图1所示,本实施例提供了一种基于深度学习的无线局域网入侵检测***,本***包括:数据收集模块10、RNN学习模块20、RNN验证模块30、采集预处理模块40、RNN识别模块50、结果处理模块60,其中数据收集模块负责采集无线局域网数据作为样本,并进行数据集构建和划分,RNN学习模块读取构建和划分的数据集进行模型和参数学习构建习得模型,RNN验证模块对习得模型进行验证和测试,验证数据来自数据收集模块,反馈结果给RNN学习模块用以优化测试结果;采集预处理模块负责实时采集目标网络数据包,对数据包进行过滤之后处理成满足RNN神经网络处理要求的数据结构,同时向数据收集模块提供脱敏后的数据,识别模块从RNN学习模块获取习得的参数构建神经网络计算图,对实时数据进行分类预测,计算出该实时数据的类别概率,根据概率进行类别判断。结果处理模块根据识别模块分类预测的输出判断目标网络状态,根据设置的优先级和处理方法进行不同粒度的处理。
数据收集模块读取输入数据,对数据进行处理,根据数据来源的不同,采用相应的处理方式,如数据来源为样本网络产生的802.11帧数据为例,采集预处理模块将数据处理成神经网络可接受的数据结构,将构建的数据集可以按照6:2:2的比例随机划分为训练集、验证集和测试集,在本实施例中,每个数据帧被最终处理为含有多个(如本实施例为156个)属性的一维向量,其中最后一个属性为该数据帧所对应的类别标签,其余属性分别对应采集预处理模块中所述虚拟冗长帧中形成的特征向量属性。RNN学习模块根据长短时记忆循环神经网络LSTM分类预测模型构建前向网络计算图,将训练集按序列顺序输入到前向网络中,根据神经元计算公式进行前向迭代计算,计算得到对序列的预测值;根据序列的预测值计算损失函数,采用沿时间反向传播算法更新权重参数和偏置参数以最小化损失函数。
如图2所示为LSTM分类预测模型循环神经网络结构示意图,包括,输入层、隐藏层、输出层,图中∫符号表示相应的激活函数。
第一部分为输入层,该层的神经元对应于网络流量序列数据中单个时间步输入数据的各个属性,即802.11帧对应的特征向量。第二部分为隐藏层,该部分由一个或多个LSTM层构成,对输入序列数据进行分类预测,并在不同LSTM层之间使用dropout正则化方法增加神经网络的鲁棒性。第三部分为输出层,该层是承接最后一个LSTM层的全连接层,用以输出预测结果,通过相关激活函数将神经网络的输出转换为与分类预测类别相关的概率分布。
具体地,RNN学习模块采用的学习方法为:首先,观察所用神经网络特点人为设置超参数并利用服从高斯分布的随机参数初始化神经网络权重参数和偏差值;然后,输入数据,利用沿时间反向传播算法(back-propagation through time,BPTT),优化权重参数和偏差值,最小化损失函数;最终获得最佳的权重参数和偏差值。所述损失函数为所有时间步(或部分时间步)上的损失函数的总和。所述超参数可由RNN验证模块提供调节方向。例如,输入层由一系列(如155个)神经元构成,用以获取输入数据的特征向量x
t,其中t表示时间步的索引;隐藏层由多层LSTM层构成(图中所示为两层),每个LSTM层分别具有多个(如128个)LSTM记忆块(memory cell),每个记忆块包含了自连接的状态神经元以及输入、输出和遗忘门。在同一时间步的LSTM层之间,采用dropout正则化方法(概率系数可为0.9),用于减少过拟合的影响,提升神经网络的鲁棒性。输出层为具有多个(如4个)神经元的全连接层,分别对应需要预测的目标类别(如可包括正常、洪泛攻击、注入攻击和冒用攻击4个目标类别),通过softmax激活函数将隐藏层的输出转换为与分类预测类别相关的概率分布预测值
如图3所示为所述LSTM记忆块的结构,取值来自前层网络的当前时间步的LSTM记忆块的输入向量xt加上上一个时间步的输出结点向量ht-1经过tanh激活函数处理生成当前时间步的输入结点向量at,通过sigmoid激活函数处理产生当前时间步的输入门向量it、遗忘门向量ft、输出门向量ot;it通过与at进行向量积控制at是否能够成功输入,ft通过与ct-1进行向量积控制是否遗忘上一个时间步的状态向量,上述两个向量积相加产生当前时间步的状态向量ct,输出门向量ot则与经过tanh激活函数处理的ct进行向量积产生当前时间步的输出结点向量ht;ct继续参与下一个时间步的状态向量生成,ht继续参与下一个时间步的计算。相关计算公式如下。
it=σ(Wi·xt+Ui·ht-1+bi)
ft=σ(Wf·xt+Uf·ht-1+bf)
ot=σ(Wo·xt+Uo·ht-1+bo)
ct=at⊙it+ct-1⊙ft
其中,c
t、f
t、i
t和o
t分别为当前时间步(时间t)的状态神经元向量、遗忘门向量、输入门向量和输出门向量,t表示时间步的索引,a
t和h
t为当前时间步的输入结点向量和输出结点向量,图中的黑色方块表示来自上一个时间步,即c
t-1和h
t-1分别表示上一个时间步(时间步t-1)的状态向量和输出结点向量,
和σ分别表示tanh激活函数和sigmoid激活函数,⊙表示求向量的哈达玛积,W
*与U
*分别表示下标
所示对应结点(
分别对应表示状态神经元c、输入门i、遗忘门f和输出门o)对当前时间步(t)输入向量和前一时间步(t-1)输出结点向量的权重矩阵,b
c,b
i,b
f,b
o分别表示状态神经元、输入门、遗忘门和输出门对应的偏差值向量。
为加快神经网络的训练速度,在沿时间反向传播算法中采用随机梯度下降算法,优化代价函数,添加正则项之后的最终优化的目标函数是原始损失函数+l2正则项。为防止梯度***,优化的代价函数为原始损失函数加上系数为10-6的L2范数(欧几里得范数)正则项,根据如下公式优化损失函数:
其中,
为对真实类别y的预测值,t为时间步,T为当前序列的最大时间步,ω为对应的权重参数。
RNN验证模块通过验证集数据对以上超参数的调节提供指导性指标,通过测试集数据对神经网络的学习情况进行测评。采集预处理模块实时对目标网络数据包进行监听,抓取目标网络流量数据,对抓取的数据包进行解析,并进行序列划分与分片,提取并补齐相关字段信息,将每一帧数据转换为等长的虚拟冗长帧,对相应字段进行归一化、数值化和嵌入表示处理,将虚拟冗长帧向量化。例如,本实施可采用基于libpcap数据包捕获函数库的网络监听技术,通过放置监听装置在目标网络环境中,对目标网络流量数据进行实时抓取,该流程为透明处理,对目标网络正常通信不产生影响,也不危害目标网络的安全性。通过数据包的源物理地址和目标物理地址进行匹配对数据包进行序列划分,构建双向通信流序列,并对超过20个帧的序列进行分片处理。
图4为802.11帧的基本结构和组成字段,802.11帧主要有三种类型,其中数据帧负责将上层协议的数据置于帧主体中加以传递;控制帧负责管理无线介质的访问以及提供MAC层所需的可靠性,以协助数据帧的传递;管理帧是三种类型帧中最为复杂的一种,提供如设备发现、身份验证以及设备关联等服务。虽然802.11帧具有相同的基本结构,但不同类型的帧在成帧细节上仍有较大的差异,其主要表现在管理帧与另外两种帧的不同。
过滤掉抓取数据中非目标网络的数据包以及目标网络中的非关键数据包;将抓取到的数据包按照802.11MAC帧格式进行解析;将解析的802.11帧按照设定的划分规则进行序列划分,每个802.11帧对应一个序列时间步;将划分好的序列按照设定好的分片规则进行分片,超过一定长度的分片需要进行截断处理;提取解析数据中各字段的数据,过滤掉无关的字段信息,构建虚拟冗长帧并将提取的数据写入其中,形成等长的待处理数据;按缺失值补齐虚拟冗长帧中缺失的字段;将虚拟冗长帧中的字段映射为输入数据对应的属性,按照各属性的类型转换为含有多个属性的一维向量。
本实施例中,通过构建虚拟冗长帧的方式,将三种类型的帧统一成相同的格式以方便进一步的处理。所述虚拟冗长帧具有统一的格式,即由三种类型帧的所有字段构成,其中不同类型帧转换得到的冗长帧中缺失的字段采用默认缺失值“-1”进行填充处理。
为将虚拟冗长帧转换为神经网络接受的数据结构,对相应字段进一步处理,具体可为,对与帧控制字段中的子类型字段类似的类别型字段,类别型字段为不连续的离散型特征,采用独热编码方式对其进行了编码处理,例如帧控制字段的子类型字段分别有9类,即可采用独热编码方式以9位编码分别将该字段标识为(100000000),(010000000),(001000000),(000100000),(000010000),(000001000),(000000100),(000000010),(000000001);对与地址1字段类似的整数型字段,采用离差标准化方法对原始数据进行归一化处理,根据公式:
计算该字段最终的归一化值。其中,a表示该字段对应的数值,a
min表示该字段可能的最小数值,a
max表示该字段可能的最大数值,a
*为该字段最终得到的归一化数值。对与essid类似的字符型字段,采用句向量的形式对其进行了嵌入表示;对与信号强度类似的数值型字段,进行了一定程度的数值转换处理。
识别模块(50)从RNN学习模块(20)获取学习好的计算图和参数,构建用于识别的前向神经网络,将采集预处理模块(40)输出的序列向量作为前向神经网络的输入,前向神经网络输出对序列数据的分类预测概率向量。结果处理模块(60)接收识别模块输出的分类预测概率向量,判断目标网络中流量的类别,若为正常流量,则不进行处理,如为异常流量,则按照设定的处理规则进行处理。以发现注入攻击为例,结果处理模块向责任人报告本次入侵,并建议目标网关停止接收入侵源的数据。
采集预处理模块主要包括数据实时采集和数据预处理两个阶段。其中,数据实时采集阶段负责采集目标无线局域网中的所有数据包,可采用不同方式进行,包括但不限于接入目标网络接收网关转发数据包,监听模式捕获工作环境数据包等方式;数据预处理阶段负责对采集的数据进行实时过滤并将其预处理为神经网络能够处理的数据结构,下面以802.11MAC帧数据包为例具体说明采集和处理步骤:
(1)按需过滤:按照设定需求过滤掉抓取数据中非目标网络的数据包以及目标网络中的非关键数据包;
(2)解析802.11MAC帧:将抓取到的数据包按照802.11MAC帧格式进行解析;
(3)序列划分:将解析的802.11帧按照设定的划分规则进行序列划分,每一个802.11帧对应一个序列时间步;
(4)序列分片:将划分好的序列按照设定好的分片规则进行分片,超过一定长度的分片需要进行截断处理;
(5)提取各字段信息,写入虚拟冗长帧:提取解析数据中各字段的数据,其中需过滤掉无关的字段信息,如数据帧的负载数据信息以及非标准的商用定制标签等,然后构建虚拟冗长帧并将提取的数据写入其中,形成等长的待处理数据。所述虚拟冗长帧为一种含有所有可能字段的802.11帧的理论表示,不同类型的帧均可表示成等长的虚拟冗长帧,其中特定类型帧中不存在的字段将按照缺失值进行处理;
(6)缺失域补齐:将构建的虚拟冗长帧中缺失的字段按缺失值进行补齐;
(7)映射对应属性:将虚拟冗长帧中的字段映射为输入数据对应的属性;
(8)对属性进行数值化、归一化以及嵌入表示处理:按照各属性的类型,对其进行对应的处理,转换为神经网络可以处理的数据结构,即含有多个属性的一维向量。