吕正林,段炼,朱龙,岳岩岩,刘斌,吴正坤
(中移信息技术有限公司,广东 深圳 518048)
“万物互联”时代形成的海量数据让我们不得不面对数据处理的实时性、智能型、安全性和隐私性问题。根据互联网数据中心预测,到2025 年,全球的数据总量将达到180 ZB,而当前集中处理的方式远远不能满足海量数据传输的需求[1]。在这样的背景下,边缘计算顺应需求、应运而生,与云计算共同处理海量的数据,形成边云协同处理数据的局面。边云协同计算将云计算的能力下沉到边缘侧、设备侧,就近为底层设备提供近端服务,将数据的存储、传输、计算和安全交给边缘节点来处理,实现更快的网络响应服务、更短的处理时延,满足各行各业实时业务、应用智能、安全与隐私保护等各方面的需求[2]。边缘计算虽然满足了用户业务实时性和安全与隐私方面的需求,但由于其引入了开放应用编程接口(API,Application Programming Interface)、开放的网络功能虚拟化技术(NFV,Network Functions Virtualization),因此边缘服务器面临一定的安全风险问题[3]。本文研究的重点是面向大规模物联网的安全检测,针对传统中心化物联网平台入侵检测模型可用性和扩展性差,难以为海量物联网设备动态接入服务提供安全保障,不能满足边缘侧物联网应用服务安全需求等问题,本文提出一种在线集成学习的方法来在线更新入侵检测模型,通过不断学习的新知识来应对新数据和新应用的安全检测要求,进而提升入侵检测模型的识别精度。
当前的入侵方式包括主机入侵和网络入侵,主机入侵时是通过主机的软件行为和主机的日志判断的,而网络入侵则是通过判断数据流的特征、与主机连接次数来识别外部攻击。但是,当前的入侵检测方法大多数通过提取入侵行为特征并将其存入特征库,将主机的日志或者数据流量的关键特征与特征库进行比对从而判断网络系统是否存在入侵行为。这种基于匹配的入侵检测方法在面对海量数据时往往存在误报率高、泛化性弱等问题。因此,入侵检测模型必须具有良好的高可用性、高精度检测性和扩展性,才能满足海量网络数据流的入侵检测场景。当前已有不少学者采用机器学习的方法来处理系统日志或者海量流量的特征,从而达到从海量数据中自动提取关键的信息特征,进而提升安全检测的精度。当前的入侵检测模型具体可分为几大类:
(1)支持向量机
支持向量机(SVM,Support Vector Machine)是一种二分类算法,该算法由于利用了核函数的方法解决数据线性不可分的难题,不仅有效处理非线性数据,又能限制过学习,因此在小样本下存在最好的分类效果和泛化能力。Mohammadi 等人[4]通过介绍基于支持向量机的入侵检测与特征选择系统的综合研究,证明了支持向量机在入侵检测的有效性,同时也提出SVM 分类器在动态IDS 环境中,旧的超平面无法准确识别正常和入侵活动。为了应对这个问题,需要定期更新支持向量机的模型。Al-Qatf 等人[5]提出一种基于自学框架的入侵检测方法,该方法使用稀疏自动编码器机制建立一种无监督的新特征重建方法,并将新的特征输入到支持向量机中进行训练,结果表明,该方法能够有效提高入侵检测的能力。Safaldin 等人[6]提出一种改进的二进制灰太狼入侵检测系统支持向量机优化器,该优化器旨在通过增加狼群的数量和使用多目标函数来提高预测系统的整体性能,从而提高GWO-IDS 在无线传感器网络中的性能,实验表明,该优化器在可靠性评估特征、执行时间、误报率和检测率等方面较其他算法有很好的优越性。
(2)神经网络
神经网络(NNS,Neural Networks)通过模仿动物行为特征、借助大量相互连接的内部节点之间的关联关系构建起模型,从而识别攻击者的攻击行为。在大规模数据面前,大量的神经元在学习过程中学习效率不高,泛化性能也存在一定程度的限制。因此,很多学者对神经网络进行改进,以便能更好适应网络检测的问题。Vinayakumar 等[7]采用多层感知器(MLP)、CNN、CNN 等有监督学习方法,实现网络流量的检测。Khan 等人[8]提出基于混合卷积递归神经网络构建网络入侵检测系统,该系统通过递归神经网络创建深度学习的混合入侵框架,用于预测并对网络中的恶意网络攻击进行分类,该方法采用卷积神经网络来捕捉网络流量的空间特征,采用递归神经网络来捕捉网络流量的时间特征,从而实现网络流量时空特征的有效捕捉,提升了入侵系统监测的有效性。Kan 等人[9]提出一种基于自适应粒子群优化卷积神经网络的方法用于监测物联网入侵检测,该方法采用改变惯性权重的粒子群优化算法对CNN的参数进行自适应优化,提升了网络入侵监测的准确性。
(3)决策树
决策树作为一种典型的监督学习的分类与回归算法,通过逼近离散函数值的方法对数据进行划分,因此,决策树的模型呈现出树的结果,一般包括根节点、子节点和叶子节点三部分。决策树作为一种构建简单、分类精度高、对噪音干扰数据又较好健壮性的分类算法,在入侵监测领域受到了广泛的应用。Ahmim 等人[10]提出一种基于决策树和规则模型的分层入侵检测系统,该方法将三种不同分类器组合的分层模型用于入侵检测,大大提升了入侵检测的准确率。Nancy 等人[11]提出一种智能模糊时态决策树分类算法的入侵检测系统,该方法采用一种新的特征选择算法——动态递归特征选择算法来选择最佳数量的特征,并通过扩展决策树和卷积神经网络实现模糊状态下的入侵检测。
现有研究表明,应用单一的机器学习算法已经无法很好地检测入侵检测,而是采用多机器学习集成的方法,比如CNN 融合RNN、不同分类器组合的分层模型等。除此之外,当前主流的入侵检测产品存在一些问题,包括:(1)IDS 检测不能有效应用于当前共享环境,攻击者通常绕过网络IDS,在主机侧发动攻击,带来极大的安全隐患;(2)现有的入侵方法不能满足攻击行为动态变化的需求,重复地分析和处理数据不能对已有的攻击行为进行有效的防护。
基于上述分析,本文通过建立一套自适应学习的入侵检测方法,采用在线集成学习的入侵检测方法实现知识的自更新,提高模型动态适应的能力。
当前边云协同开放性的环境下,海量边缘的安全接入在这种新型架构中的性能开销问题变得日益突出。为了确保终端接入的可信性问题,研究一种轻量级的入侵检测系统不仅可以对网络安全进行全局化指导,还能减轻网络通信传输的压力,加快入侵检测的响应速度。但是这种方法不能有效抵御攻击,这是因为黑客的攻击行为变化多端,系统只有持续更新入侵检测的系统,才能有效抵御黑客的入侵检测。因此,本文采用在线集成学习的方法,通过在线学习集成技术满足入侵系统对数据时效性的要求,进而提高系统的可靠性和时效性。
本文首先利用深度学习模型训练离线数据,构建离线基学习器;然后,根据不断补充的数据构建多组在线基学习器,在线基学习器是通过在线增量训练得出的,通过迭代离线基学习器来强化在线基学习器能力;再次,结合多组在线基学习器的性能,提出一种基于时序性能加权的在线集成方案,降低在线学习模型的方差,提高入侵检测系统的可靠性和稳定性。
为了保持入侵检测模型的多样性,本文将离线数据分割成多份时序数据,然后采用深度学习的方法对流量序列进行学习,这个过程的学习是采用历史流量序列构建入侵检测模型,对时间的要求不太高,在对各时序数据的特征获取基础上,将特征进行融合后形成当前流量序列的离线基学习器,进而形成离线入侵检测模型,因此可用采用深度学习的方式训练入侵检测模型。
如图1所示,离线学习方案主要采用CNN(Convolutional Neural Networks,卷积神经网络)来处理海量的入侵数据,并对上述的数据进行分类。
图1 离线学习方案设计
具体步骤为:
(1)在获得时序序列之后,需要对时序序列转换为数字型,并对所有的数字进行归一化处理,以保证所有属性在特征提取过程中不会受到数字大小的影响。
(2)本文采用门控卷积思想,剔除时序序列中无效与重复的信息,采用两个不同卷积方式所得到的值经过相乘运算后获得最终的卷积层,表示如下:
其中,E表示步骤(1)中经过归一化处理的时序序列,W和V分别表示不同卷积层中的权重参数向量,b和c分别表示神经元中的偏执向量,⊗表示两个不同卷积方式所得到的值相乘,Relu 函数表示卷积神经网络的激活函数。
(3)经过卷积层对时序序列进行特征提取后,采用池化的方式对数据特征进行压缩,剔除大量需要训练的权重参数,从而提高检测系统的训练效率。
(4)经过池化处理后,将池化后的特征连接到全连接层上,全连接层将前面所有的数据x进行最后的整合后传输到输出层,输出层采用soft 函数对数据进行分类,选出概率最大的一种作为分类结果。Soft 函数的回归表达式为:
其中,x(i)表示第i个时序序列在全连接层进行整合后传输到输出层的数据,y(i)表示经过Soft 函数激活后的第i个时序序列的激活值,p(y(i))=1 表示第i个时序序列的激活值的分类结果为第1 类的概率,θ表示Soft 函数中的参数。
由步骤(1)-(4)可知,在对多个时序数据集进行训练后,卷积神经网络对离线数据的训练完成后构建出多个离线入侵检测模型。边云协同环境下不同时间段的数据分布一般有较大的差异,单个时序的离线入侵模型往往存在泛化能力不足、鲁棒性不强等问题。因此,本文在获得多个离线检测模型构建的基础上,采用加权平均集成学习的方式对多个离线检测模型进行集合,构建离线基学习器。
在获取离线入侵检测模型的基础上,通过陆续补充在线时序数据的方法,来对真实环境增量数据进行模拟,每一个边缘节点都能够构建在线基学习器,为后续的集成提供基础。
图2 是一个针对边缘节点在线学习设计方案,其思想是:将新的时序序列根据时间分块,每个数据块将产生m个基分类器,将测试数据放进m个基分类器和离线基学习器中进行测试,结合m个基分类器的性能对离线基学习器的参数进行微调。
具体步骤包括:
(1)用测试数据块对离线基学习器和m个基分类器进行测试,将分类器对应的分类准确率更新其投票权重a,更新公式为:
(2)结合m个基分类器投票权重构建在线基学习器,公式为:
本文提出一种基于模型性能的平均改进集成方法,对每一个边缘节点产生的在线基学习器进行在线集成,得到一个在线集成模型,该在线集成学习方案设计有两个优点:(1)在线集成能够克服传统入侵模型系统时效性不高的问题,由于采用在线增量训练的方式来构建在线基学习器,因此,能够在很大程度上满足现有数据分布的要求;(2)克服单个边缘节点在线基学习器由于数据波动导致模型方差偏大的问题,单个边缘节点的数据分布与数据的总体分布有可能存在偏差过大的现象,因此,单个边缘节点所产生的在线基学习器会存在一定的偏差,所以采用基于模型性能平均改进集成的方法,能够在很大程度上保证模型的有效性。
本文在实验室环境下搭建用于部署分布式数据平台,集群包括5 台服务器,每台服务器都配备CPU 计算单元和GPU 图形运算单元。将其中1 台服务器作为云端服务器,云端服务器配置为:8 GB 内存/8CPU 核心/500 G 硬盘/千兆网卡。对其他4 台服务器进行虚拟化,每台服务器虚拟化成4 个虚拟服务器,将虚拟服务器作为边缘节点,总共得到16 个边缘节点;虚拟服务器配置为:2 GB 内存/2CPU核心/125 G 硬盘/千兆网卡。将4 个物理服务器进行虚拟化,可在部署服务应用时更加灵活,可针对边云协同下不同计算任务时分配不同的节点进行处理计算。
本文基于Hadoop 分布式计算系统部署离线训练的分布式架构,以构建离线基学习器,除此之外,采用实时计算引擎实现在线增量学习并构建在线基学习器,最后,采用Hadoop的分布式计算系统来集成在线基学习器并形成在线集成模型,将在线集成模型下发到边缘节点侧,实现对边缘节点流量进行实时监测,以应对入侵监测的需求。离线基学习器采用CNN 深度学习模型进行构建,该模型结构包括5 个卷积层、5个池化层、1 个全连接层、1 个ReLU 激活层以及1 个输出层。5 个卷积层的卷积核数目分别为16、32、64、64、64,卷积核采用一维卷积核,在每一个卷积层的特征图后,都连接1 个池化层,以获取流量数据的特征不变性,大大降低特征维数,提高计算效率;5 个池化层区域大小为2×1,池化函数采用最大值池化;池化层后是一个包含300 个神经元的隐含层,ReLU 激活层则对全连接层的结果进行处理;最后一层是包含9 类的Softmax 输出层,包括8 大攻击类别和1 个正常类别。
本文借鉴物联网“感知层、传输层、应用层”三层架构进行实验验证。感知层包括家居电器传感器、灯光检测传感器、燃气检测传感器。考虑到实验室条件有线,本文通过无线Wi-Fi 搭建无线传输网络将感知层数据往上传到网关,网关将采集信息传输到边缘节点进行数据预处理,对数据进行分布式在线学习,形成在线基学习器。最后一层是应用层,边缘节点将数据通过有线传输的方式将数据传到云端服务器,云端服务器通过对数据进行训练建模、在线集成获得最终模型后,在云端服务器部署入侵监测的应用,本文的主要应用是入侵监测。整个实验环境的拓扑图如图3 所示。
图3 物联网实验环境拓扑图
本文通过IXIA 工具生成网络流量数据集,使用IXIA Perfect Storm 工具生成8 大攻击类型的数据,每一条数据包含dur、proto、service、state、spkts、dpkts、sbytes、dbytes、rate、sttl、dttl 等42 维度。攻击类别数及类别描述如表1 所示。
表1 攻击类别数及类别描述
首先,通过将上面的数据集随机分成16 份数据集,将每一份数据集随机发到边缘节点中;其次,将每一份数据集按照5:2:2:1 的方式划分成离线训练集、离线测试集、在线学习训练集、在线学习测试集;再次,对每一条数据的42 个维度经过Z-score 标准化处理,放进深度学习分类器中学习离线训练模型相关的参数;然后,将在线学习训练集分成5 个数据块,通过增量学习来对离线模型的参数进行微调,形成在线基学习器;最后,将多个边缘节点的在线基学习器进行加权平均集成,得到在线集成模型。
(1)在线集成学习训练
本文将在线训练数据集分了5 个数据块后,采用增量学习的方法对离线模型的参数进行微调。由图4 可知,通过增量训练后,在线学习模型会出现震荡的现象,但经过一定次数的振荡后,模型整体损失会出现稳定状态。本文设定每一个数据块下在线增量学习模型迭代的次数为200 次,不同颜色的损失曲线代表不同的批次,以此来验证多批次时序数据在线学习的情况。
图4 展示了第1~5 数据块放进增量模型进行迭代后的损失图,每个数据块迭代次数为200 次,不同颜色的曲线表示不同批次,可见,模型的损失值呈现振荡下降的趋势,在第3 个数据块的增量学习中,模型的损失趋于稳定。因此,在后续的模型中,在线增量学习训练模型时,在边缘节点可以指定补充3 个数据块进行在线增量训练,不仅能降低模型的计算复杂度,还能降低数据传输的带宽。
图4 增量学习中多批次数据训练损失图
(2)在线集成模型与其他方法性能对比
本文从模型的准确率和F1 值两个评估指标对模型的性能进行测试,参与本文在线集成模型对比的参照模型有组合支持向量机和决策树的集成学习模型。测试将利用不同批次的训练数据对模型进行训练,分别进行在线集成(本文算法)和传统集成(组合支持向量机和决策树的集成)得到最终模型,最后将训练集和测试集的性能指标参数进行对比,得到的测试结果。
1)准确率
从图5 可知,本文算法的训练集和测试机的准确率较组合支持向量机和决策树的集成学习模型高,并且本文算法的表现性能更加接近,意味着本文模型对数据分布的方差进行了一定程度的控制,通过对边缘节点训练的在线增量模型进行集成使得最终的模型表现得更加稳定。
图5 不同算法准确率对比图
2)F1 值
作为能够综合精确率和召回率的F1 值,能够较好评估数据不平衡所带来的性能评估误差。
从图6 可知,本文算法的训练集和测试机的F1 值较组合支持向量机和决策树的集成学习模型高,并且随着在线增量学习的训练,模型表现更加稳定。由于组合支持向量机和决策树的集成学习模型是采用静态权重的方式集成学习器,因此,当数据存在较大波动时,模型会存在较大的抖动,尤其是第4 个数据块的数据分布与前面几次数据分布出现较大偏差时,静态集成的模型就会出现较大幅度的抖动。由此可知,本文在线集成学习模型较传统静态集成的模型具有更好的可靠性和实用性。
图6 不同算法F1值对比图
随着入侵技术的演进,一套动态自适应更新的入侵监测方法是值得探索的。在线增量学习作为一种能够解决数据分布不断改变的模型构建技术,能够让边缘侧分布式模型实现动态更新;而集成学习作为一种能够保证模型的稳定性的模型构建技术,能够满足云端中心总体模型泛化性要求。本文将上述两种方法进行融合,通过在线增量学习模型保证模型的时效性,通过集成模型,希望模型的泛化能力不会因为增量数据的分布偏差而导致模型出现不稳定的现象。实验证明,本文的方法能够适用于边云协同环境下的物联网入侵监测,该方法将模型部署到分布式系统中,通过边缘节点和中心节点的相互协同,实现模型的实时更新,保证模型满足入侵监测时效性的要求。