高 岩,资郴琛,冯四风,顾 青
1(河南理工大学 计算机学院,河南 焦作 454000) 2(普华诚信信息技术有限公司,上海 201403)
由于互联网技术被广泛应用于生活中,其安全性逐渐受到人们的重视.传统的安全性保障主要还是通过对已知漏洞的防护来保障软硬件的安全,但是对于未知漏洞以及后门无法进行有效的防护.为了解决未知漏洞和后门的安全问题,研究人员提出一种非相似余度架构(DRS),这种架构能够将漏洞和后门的不确定性转变为概率可控的可靠事件,进而大大增加系统的安全性,但是非相似余度架构缺乏稳定鲁棒性[1].基于此,邬江兴院士构建了一种以DRS架构为基础的动态异构冗余架构.这种架构使得系统具有不可预测性和动态性,进而具有内生安全,入侵容忍属性,保障系统面对未知漏洞或后门威胁的安全可靠性[2,3].目前,拟态防御理论已经成功应用到多个领域[4-7],具有良好的实际应用能力.
在动态异构冗余架构中,调度算法是保障架构动态性、复杂性以及可靠性的重要一环.针对动态异构冗余架构所遇到的调度策略问题,文献[8]提出一种在异构集群系统的实时任务容错调度中考虑服务质量(QoS,Qualify of Service)因素的调度算法,性能强,但动态性不足.文献[9]综合考量调度算法的随机性与异构性,提出了一种兼顾动态性和可靠性的随机种子最小相似度算法(RSMS,randomseed&minimum similarity),但是该算法对冗余体相似度权重没有量化标准,也没有考虑到冗余体自身安全性问题.文献[10]引入服务质量与执行体异构度的双重考量生成调度方案,在性能与可靠性之间取得了平衡,但是没有考虑执行体运行信息的泄露带来的攻击问题.
现有算法都在异构性、可靠性和动态性进行了综合考量,常用的异构度量化标准是使用共同漏洞指标量化系统的相似度[11],但是这忽略了系统自身属性以及结构的不同,所以比较片面.另外,通过共同漏洞指标可以减少共同漏洞攻击的可能性,但是现有的攻击技术完全可以利用设备属性或者系统运行时信息进行攻击[12],所以单单考虑执行体漏洞信息作为异构度衡量指标是不够全面的.实际上,异构性低的冗余体产生的旁路信息相似的可能性是比较大的,利用这一点,攻击者可以主动判断实行共模攻击的时机,提高攻击效率,并且更加隐蔽.
针对异构执行体的调度问题,本文对执行体自身安全性与异构性进行综合考虑,在现有的异构度量化基础上,加入对系统运行时旁路信息综合考虑,并且提出了异构度指标和安全度指标的定义,同时对异构度与安全度进行了量化评估;在此基础上提出一种基于异构性与安全性的执行体调度算法;最后,通过实验和分析对该算法与其他算法进行了比较,讨论综合性能.
异构执行体调度策略需要综合考虑其安全性与异构性,一方面执行体自身安全性越高,调度方案越安全,另一方面,执行体池的异构性越高,调度方案也越安全.本文利用经典的卷积神经网络学习算法——LeNet-5[13]对执行体特征集进行学习识别,完成学习模型后,通过输入种子执行体的特征矩阵,得到与异构执行体的匹配值,匹配值是学习模型对执行体的识别概率.所以匹配值之比等于执行体间相似度,进而可以得到异构度数值,通过漏洞评分系统(Common Vulnerability Scoring System,CVSS)得到执行体间的安全度.
拟态构造Web网关是一种基于网络空间防御理论——拟态防御理论,具有内生安全性的身份认证和访问控制应用,与传统身份认证网关相比,提升了自身对已知安全风险(漏洞、后门、病毒等)、未知安全风险以及未知安全威胁的安全防御能力,为网络应用提供了更加安全、可控、可信的身份认证服务,使网络环境具备容错、容侵属性,进一步保障和提高网络空间的安全性.
基于拟态防御理论构造的Web网关架构如图1所示,其中所有功能等价的执行体集在图1中表示为调度集,执行体池为实际工作的执行体集.框架基于动态异构冗余架构(DHR),利用多层次异构的执行体调度集,通过代理控件中调度算法,使得每次调度形成的执行体池产生变化,进而让系统对外展示出不确定的信息,使得系统具备内生安全属性.可以说,调度算法是发挥整个系统架构安全作用的重要一环,调度算法对拟态防御理论构造Web网关的安全性起决定性作用.因此,拟态防御理论构造Web网关的调度算法应该对动态性、异构性以及安全性进行综合考量.
图1 拟态防御理论构造Web网关架构示意
定义1.执行体:为拟态防御理论构造Web网关提供功能服务的实体,记为Ei;
定义2.调度集:拟态防御理论构造Web网关中所有具有等价功能的执行体集合,记为:
F={Ei|Ei为一个执行体,i=1,2,…,n}
定义3.执行体池:拟态防御理论构造Web网关在执行具体功能服务时,实际工作的执行体组成的集合,记为:
E={Ei|Ei是一个执行体,i=1,2,…,r}
拟态防御理论构造Web网关需要从调度集合中选择r个执行体组成执行体池,其中r是执行池的余度;
定义4.漏洞集:执行体Ei的漏洞集合,记为:
Bi={Bij|Bij为执行体Ei上第j个漏洞,j=1,…,m}
漏洞信息可以通过公共漏洞信息库Common Vulnerabilities & Exposures(CVE)得到;
定义5.属性:每个执行体依照标准分为若干个属性,记为:Pi.执行体作为整体考虑,将其按照漏洞属性、CPU占有率、内存使用率等属性进行区分;
定义6.属性的特征向量:属性Pi的特征向量,记为:Li=(Ci1,…,Cim)T,Cij表示属性Pi的第j个特征值;
定义7.执行体的特征矩阵:由执行体自身属性的特征向量组成.执行体Ei的特征矩阵,记为:
其中n代表属性个数;
本文采用经典卷积神经网络模型-LeNet-5,每条训练数据为执行体执行单元功能时,由执行体自身的漏洞属性、CPU占有率、内存使用率构成执行体的特征矩阵数据.在常规环境下,每个执行体运行数千次单元功能,得到一个有5000条训练数据的训练集,再通过卷积神经网络前向传播算法对训练集进行特征学习,得到学习模型中卷积核和偏置量等关键参数.利用训练好的学习模型,对随机种子执行体的特征矩阵进行分类识别,得到异构执行体间的匹配概率,其计算过程如算法1所示.
算法1.学习模型识别过程
输入:执行体特征矩阵ECs;卷积核参数W;偏置量b;层次结构L
输出:输出层参数as
1. //Padd()为填充函数,ai为各层输出结果
2. initialize:Seta1=Padd(ECs),i=2
3. whilei 4. ifLi为卷积层 then 5.ai=∂(ai-1×Wi-bi)//∂为Relu()函数 6. end if 7. ifLi为池化层 then 8.ai=pool(ai-1)//pool()函数为取平均值 9. end if 10. ifLi为全连接层 then 11.ai=∂(ai-1×Wi-bi)//∂为sigmoid()函数 12. end if 13.i=i+1 14. end while 15.as=softmax(ai)//softmax()为归一化函数 通过输出层,得到识别概率集合,记为:al={EP1,…,EPn},EPi是识别为执行体Ei的概率,且有: (1) 定义8.异构度矩阵:执行体集A中所有异构执行体间的异构度组成的异构矩阵,记为: 易知HA为对称矩阵,且Hij代表执行体Ei与执行体Ej间的异构度,其中执行体间的异构度计算公式如下: (2) 调度算法通过动态的调度执行体而使系统对外呈现出一种不确定状态,这是调度策略具有可靠性的重要因素.在多余度执行体池工作过程中,单单考虑执行体单个的安全性,不对执行体之间的安全性进行考量,同样会导致具有相同漏洞执行体同时工作,从而增加共模攻击的可能性.所以安全度指标应该代表执行体间的安全性. 通常执行体间的安全度与各个执行体的漏洞威胁程度以及执行体间的相同漏洞威胁程度呈负相关,即有执行体Ei和执行体Ej的相对安全度计算公式: (3) 其中ti和tj分别表示执行体Ei和Ej的威胁程度,tij代表执行体Ei和Ej的相同漏洞威胁程度,r的存在是为了控制漏洞分数对执行体间安全度影响,根据经验得出.本文采用文献[10]中构件的威胁程度等于构件漏洞分数之和的计算公式,即有: (4) tij=∑CVSS(Bi∩Bj) (5) 漏洞评分信息可以通过查询通用漏洞评分系统(Common Vulnerability Scoring System,CVSS)获取. 定义9.安全度矩阵:执行体集A中所有异构执行体间的安全度组成的安全度矩阵,记为: 易知安全度矩阵sA同样为对称矩阵. 拟态调度算法其核心在于为通过对系统服务功能的多元、冗余配置,为结构或算法导入不确定的映射关系[1].现有算法为了提高可靠性与可用性,对调度指标进行量化,但是由于多数调度算法的调度指标数值存在静态性,而使调度算法丢失了部分动态性.例如,在种子选定的条件下,产出的调度方案几乎一致.这样就违背了调度算法的核心功能,无法达到实际上的效果. 第2节已给出了拟态防御理论构造Web网关中执行体间的异构度和安全度的量化评估方法,综合调度指标与异构度和安全度呈正相关,因此执行体集A综合调度指标ESA计算公式如下所示: (6) 理想的调度方案是选择余度r个执行体作为执行体池使其综合调度指标最大,但是在文献[14,15]中指出,调度方案需要考虑指标出现极值问题,比如异构度过小而安全性比较高,得到的综合调度指标也有可能被调用策略选择,但实际上,异构度过小出现相同漏洞的可能性较大,安全风险也较高.因此需要设定相关指标阈值,低于阈值的调度方案不成立. 定义10.调度方案:拟态防御理论构造Web网关中,各个执行体被调度情况所组成的向量,记为:SP={xi|xi是执行体Ei的调度情况,i=1,…,n},其中xi=1代表执行体Ei被调度,xi=0代表执行体Ei没被调度; 定义11.调度阈值集:调度指标阈值的集合,记为: TSet={Hlim,slim} 其中Hlim代表执行体间的异构度阈值,Slim代表执行体间的安全度阈值.Hlim等于调度集中所有异构执行体间异构度的平均值,即有: (7) Slim等于调度集中所有异构执行体间安全度的平均值,即有: (8) 本文提出一种基于最大异构性和安全度的随机种子调度算法(RSMHS,Random Seed & Maximum Heterogeneous and Safety),算法流程图如图2所示,具体步骤如下: 图2 RSMHS算法流程图 步骤1.随机确定种子执行体 调度控制器通过随机算法,在调度集中随机选定一个执行体作为种子执行体Ed,种子执行体确定存在于最终调度方案中.通过随机确定种子执行体,使得调度方案具有不确定性,进而增加调度算法的动态性. 步骤2.运行种子执行体的功能服务,获取种子执行体特征矩阵 种子执行体的特征矩阵是种子执行体运行时属性信息所生成,具备动态性和实时性,能够真实有效的反映执行体当前的运行状态.实际上,执行体每次运行所生成的属性信息会有差异性,因此得到的执行体特征矩阵也会有些变化,增加了调度方案的丰富性和调度算法的动态性,成功避免其他算法在确定种子执行体下,产生的调度方案单一问题. 步骤3.计算执行体间的异构度以及异构度阈值Hlim 通过步骤2生成的种子执行体特征矩阵以及卷积神经网络模型,得到各个执行体当前的识别概率,并且通过异构度的计算公式得到执行体间的异构度,并计算出当前的异构度阈值. 步骤4.去除与种子执行体异构度和安全度低于阈值要求的执行体 将调度集中与种子执行体Ed异构度低于异构度阈值的执行体排除.对调度集进行初步筛选得到调度集F,减少调度集余度,降低算法复杂度,提高算法运行效率.筛选后的调度集去除种子执行体,剩下余度大于或等于r-1,则转至步骤5,若小于r-1,则转至步骤1. 步骤5.生成调度方案集并去除调度方案集中异构执行体异构度或安全度低于阈值要求的调度方案 步骤6.确定最终的调度方案 计算出步骤5中调度方案集M各个调度方案的综合调度指标ES,选取ES最大的调度方案作为最终调度方案. 算法伪代码如算法2所示. 算法2.RSMHS算法 输入:执行体池余度r;调度集Ω;安全度矩阵S; 输出:调度方案SPd 1. top: 2. //Ed为随机选取的种子执行体,ECd为种子执行体的特征矩阵 3. initialize:SetSPd=φ,H=φ,Ed=random(size(Ω)),ECd=φ 4. //运行种子执行体,获取种子执行体特征矩阵 5.ECd=run(Ed) 6.H=train(ECd) //通过训练模型得到异构度矩阵 7. //去除与种子执行体异构度和安全度低于阈值要求的执行体 8.F=φ 9. fori=1;n=size(Ω);i≤n;i++do 10. ifHdi>HlimandSdi>Slimthen 11.F=F∪Ei 12. end if 13. end for 14. ifsize(F) 15. goto top 16. end if 17. //生成调度方案集并去除调度方案集中异构执行体异构度或安全度低于阈值要求的调度方案 18. V=φ 19. V=getSubsets(F,r,Ed) 20. M=φ 21. fori=1;n=size(V);i≤n;i++do 22. if∀Xp=1,Xp=1∈SPi,Hpq>HlimandSpq>Slimthen 23. M=M∪SPi 24. end if 25. end for 26. ifsize(M)=0then 27. goto top 28. end if 29. //选取ES最大的调度方案作为最终调度方案 30.ESmax=0 31.fori=1;n=size(M);i≤n;i++do 32. ifESi>ESmaxthen 33.ESmax=ESi 34.SPd=SPi 35. end if 36. end for 本节将RSMHS算法与随机调度算法进行实验分析,对算法之间的动态性,异构性以及可靠性进行比较.实验设备为Travemate TX50-G2笔记本,配置为Intel Core i5-7200 CPU和8 GB RAM,系统采用了window7、centos7以及Ubuntu 12,程序语言包括C++、C#和java. 根据文献[16],执行池余度为3能够在成本与安全增益之间有较好的平衡,因此,本文采用余度为3的执行体池进行实验. 使用Nessus扫描工具对调度集进行漏洞扫描,通过漏洞评分系统(Common Vulnerability Scoring System,CVSS),得到调度集异构执行体的漏洞分数,计算得到安全矩阵S,具体参数如图3所示. 图3 调度集的安全矩阵 算法需要提前卷积神经网络算法对执行体特征数据进行学习,建立学习模型,其中学习模型主要参数为卷积核W以及偏置量b,其中部分具体参数如图4所示. 依据文献[9,10],我们以调度方案的重复周期作为调度周期,每当出现与第一次调度方案相同的调度方案时,为当次实验结束.调度周期体现动态性,即调度方案的重复周期越长,算法的动态性越好. 分析随即机调度算法得知,该算法的动态性完全取决于随机函数,虽然具备较强的动态性,但是缺乏稳定性,本算法与其不同的是,异构度的计算值取决于当前的种子执行体运行信息,因为运行信息往往会因为外部因素而差异化表现,所以本算法同样具备较强的动态性,并且通过运行信息的丰富度部分修复因设立调度指标阈值而带来的动态性降低问题,使得本算法稳定性更突出. 实验1.对调度集余度为10,执行体池余度为3,测试RSMHS算法和随机调度算法生成调度方案的调度周期.结果如图5所示. 图5 不同算法调度周期 与文献[10]一样,我们使用平均值和方差来说明性能与可靠性,进一步计算得到调度周期平均值与方差,结果如表1所示. 表1 调度周期平均值、方差比较 可以看到,RSMHS算法的调度周期的平均值约等于随机调度算法的50.00%,具有良好的动态性.并且在方差上,相较于随机调度算法降低了大约97.1360%,可以说明稳定性大大增加. 在安全度,异构度以及综合调度指标3个指标进行比较,并且比较不同算法各个指标的平均值,方差,其中平均值可以体现算法的可靠性,方差可以代表算法的稳定性. 实验2.调度集余度为10,冗余度为3,测试调度方案的各个调度指标.实验结果见图6. 图6 调度算法的调度指标 进一步计算得到不同算法各个调度指标的平均值与方差,结果见表2. 表2 不同调度算法各调度指标比较 由数据可知,在平均值数据上,RSMHS算法在异构度、安全度以及综合调度指标分别比随机算法分别提高了37.21%、21.87%和66.95%,方差数据上3项指标分别降低了72.07%、13.63%和45.08%,可以说明,RSMHS算法相较于随机调度算法在保持动态性的同时,更具可靠性和稳定性的优势.事实上,RSMHS算法通过设立阈值避免出现指标极值的情况,同时也减少了可调度集的数量,从而降低了算法的动态性,但是通过考虑执行体属性差异,进一步量化了执行体间的异构性,并且考虑执行体自身安全性,加强了调度方案的可靠性.总的说,RSMHS算法在满足动态性的同时,进一步增加了安全性,实现了动态性与安全性的良好平衡. 拟态防御理论构造Web网关能够使网络环境具备容错、容侵等内生安全属性,其关键就在于调度算法能够具备可靠性与动态性.本文针对调度算法的关键点,提出一种基于最大异构度与安全度的随机种子算法RSMHS,实验表明,RSMHS算法不仅在动态性上具有良好的表现,在可靠性与稳定性更是大幅领先,做到了动态性与可靠性之间较好的平衡.下一步将针对拟态防御理论构造Web网关负反馈机制问题进行研究,进一步保障拟态网关的实用性和安全性.2.3 安全度指标
3 基于最大异构度与安全度的随机种子调度算法
4 实验分析
4.1 算法动态性比较
4.2 算法调度指标比较
5 结束语