融合异常QoS数据检测的安全云服务选择方法
2019-01-21吴旭,叶炎
吴 旭, 叶 炎
(1.西安邮电大学 计算机学院, 陕西 西安 710121; 2.广西大学 计算机与电子信息学院, 广西 南宁 530004)
基于服务质量(quality of service,QoS)的云服务选择方法已在云服务选择问题取得了一定的成效[1-3]。但是,基于QoS数据的方法在应用时受QoS数据的质量影响较大,异常的QoS数据(abnormal quality of service,AQoS)会降低云服务选择的精度[4]。同时,由异常QoS数据计算得到的云服务选择,也会导致用户在使用云服务时达不到预期的性能要求,产生计算不准确、数据泄露等云服务安全问题。因此,检测异常的QoS数据,提升云服务选择的质量和安全性,已经成为一个迫切解决的难题。
基于信任评估的云服务选择方法能够降低具有异常QoS数据的云服务的信任度,并降低选择具有异常QoS数据的云服务的概率。可信云服务通过分析云计算面临的安全威胁,对云服务的技术进行划分[5]。基于第三方认证的方法通过建立第三方的云服务信任博弈模型和信任评价模型,由第三方模型评估云服务的可信度[6]。面向用户体验的模型考虑了信任因素的复杂性和不确定性,将用户体验作为服务可信模型的重要评估标准和因素[7]。主观信任量化评价方法[8]将云模型引入信任评估中,并结合用户的主观信任评价对云服务进行信任评估。上述基于信任评估的云服务选择方法虽然取得了一定的成效,但信任评估需要利用用户反馈信息,在进行云服务信任评估的同时也引入了恶意用户评估和主观性反馈等问题,使得云服务选择问题更加复杂;同时,基于信任评估的方法仅利用QoS数据和用户反馈信息计算云服务的信任度,并未实现对异常QoS数据的检测。
基于改进K-means聚类的算法[9]利用距离相似度进行节点数据的聚类,在获取聚类结果后,通过比对节点到聚类中心的距离来区分正常节点和异常节点。基于特征消减的网络异常检测算法[10]利用统计学的方法分析数据集中各维度与各攻击类型之间的相关性,并利用相关性进行不同层次的K-means聚类,从而检测出罕见的网络攻击。基于K-means聚类的异常检测算法在异常检测领域取得了一定的成效,但并不能直接应用于异常的QoS数据检测。由于云计算环境的动态性,云服务在不同上下文环境下产生的QoS数据存在较大的数值差异,一些QoS数据在特定的上下文环境下是正常值,而在其他上下文环境下则是异常数据。因此,将具有不同数值范围的QoS数据同时进行检测将会导致检测结果出现偏差,难以提升云服务选择的精度。
基于上述问题,本文提出一种融合异常QoS数据检测的安全云服务选择方法(secure cloud service selection method based on abnormal QoS data detection,CSAD),利用用户的上下文环境对云服务的QoS数据进行范围约束,结合改进的K-means算法对QoS数据进行异常检测,并利用改进的贝叶斯公式[11]预测云服务的QoS数据,最后基于理想点法对相似的云服务进行性能评估和排名。
1 云服务选择方法
1.1 云服务选择的基本结构
融合异常QoS数据检测的安全云服务选择的基本结构主要包括6个模块,如图1所示。
图1 云服务选择
(1) 用户的上下文环境记录模块
该模块用于记录用户在调用云服务时所处的上下文环境。
(2) QoS数据记录模块
该模块用于记录用户调用云服务时观测到的QoS数据,并根据用户的上下文环境建立上下文环境-云服务的QoS数据矩阵。
(3) 相似上下文环境计算模块
该模块根据目标用户在寻求云服务选择时所处的上下文环境,计算历史的上下文环境中相似度大于阈值的上下文环境集合。
(4) 异常QoS数据检测模块
该模块根据计算的相似上下文环境集合,从QoS数据中选择对应的QoS数据,利用改进的K-means算法从该QoS数据集中检测出异常QoS数据,并过滤掉。
(5) QoS预测模块
该模块根据异常QoS数据检测的结果,利用改进的贝叶斯公式预测云服务的QoS数据。
(6) 云服务排名模块
该模块计算出云服务的预测QoS数据后,利用多准则决策技术对相似的云服务进行评估排名,评估值越高的云服务排名越高。
1.2 上下文环境
上下文环境用于描述用户在使用云服务、进行反馈评价和获取推荐时所处的状态,由多个参数构成,包括但不限于时间、位置、季节和情绪等[12]。云服务选择问题中主要考虑用户在使用云服务和获取推荐时的上下文环境。
定义1用户的上下文环境(user context environment,UCE)为1个5元组C=(l,t,i,b,p),l为用户所处的地理位置,t为调用云服务的时间,i为调用云服务时的网络状况,b为用户的网络带宽,p为用户使用的云平台。
用户在不同上下文环境下观测的云服务的QoS数据,具有不同的数值范围。在理想情况下,用户调用云服务时能够获得最优性能的服务,此时用户观测的QoS数据是该云服务的最优QoS数据。然而,考虑云计算环境的动态性,云服务并不能经常提供最优性能的服务,其QoS数据通常是在一定范围内波动。所以,在异常QoS数据检测过程中,考虑用户所处上下文环境十分必要。
1.3 上下文环境-云服务的QoS数据
目前,大多数云服务选择算法以用户和QoS数据之间一一对应关系作为基本计算依据,这种方式仅仅将用户考虑成一个简单的标识符,忽略了用户与QoS数据之间更多的内在联系。而上下文环境的作用不仅在于描述了用户在调用云服务时所处的状态,同时也描述了云服务被调用时的状态,包含了更多的潜在信息。通过定义用户的上下文环境,建立用户的上下文环境与QoS数据的对应关系,以此为计算依据。为了方便描述,给出部分QoS数据,吞吐量S1、上传速度S2和下载速度S3在6种不同的上下文环境C1—C6下,观测的QoS数据如表1所示。
表1 上下文环境-云服务的QoS 数据
由表1可知,3个云服务取值范围都为{0,1,2}。完整的QoS数据包含了所有相似的云服务和全部存在观测记录的上下文环境。
1.4 计算相似上下文环境
在不考虑历史用户的其余信息情形下,建立上下文环境-云服务的QoS数据为计算依据。在寻求云服务选择时,对目标用户所处的上下文环境进行相似上下文环境计算。
采用欧氏距离[13]计算上下文环境的相似度,可表示为
(1)
式中,S(Co,Cc)是上下文环境Co和Cc的相似度,Co表示目标用户在寻求云服务选择时所处的上下文环境,Cc是历史的上下文环境,Coj和Ccj分别表示上下文环境Co和Cc对应的参数,其中,j的取值为(l,t,i,b,p)。在计算目标用户的相似上下文环境集时,设置相似度的阈值参数为α。将相似度大于α的上下文环境加入到目标用户的相似上下文集合。
1.5 异常QoS数据检测
K-means算法[14-15]是一种无监督学习算法,该算法通过重复迭代并优化数据之间距离误差值的方式,将一组数据划分成多个不相交的数据集合,其目的是增强同一集合中数据的相似性,降低各数据集合之间的相似性。基于上述思想,对K-means算法进行改进并将其应用于异常QoS数据的检测。以包含异常值的历史QoS数据为例,K-means算法经过多次迭代将QoS数据分成多个数据集合,各数据集合中的QoS数据包含了正常值和异常值,异常值的数量少于正常值,且异常值与正常值存在较大的差异,二者的相似性较低,这使得在聚类完成后,同一集合中数据间的相似性并未达到最优值。为了解决这一问题,从数据集合中筛选出QoS数据,把剩余的QoS数据构成新的数据集合,计算原数据集合中心点和新数据集合中心点的皮尔逊相似度[16],当相似度小于0.5时,筛选出的Qos数据检测为异常值。算法具体步骤如下。
步骤1根据目标用户的相似上下文环境集,从历史的QoS数据集中筛选出具有对应上下文环境的QoS数据,建立云服务S对应的QoS矩阵
(2)
矩阵Q由云服务S在目标用户的相似上下文环境集中所观测的QoS数据构成,其中,qij是第i个QoS历史数据的第j个参数(i=1,2,…,u;j=1,2,…,m),u表示QoS数据的数量,m表示QoS数据的参数数量。
步骤2建立k个数据集合v,从筛选出的QoS数据中,随机选取k个数据作为各集合的初始中心点。
步骤3分别计算矩阵Q中各QoS数据到k个中心点的距离。将QoS数据划分到距离最小的数据集合中,计算公式为
(3)
式中,qi是矩阵Q中的第i个QoS数据,vj表示第j个数据集合,dvj是第v个数据集合的中心点,函数‖·‖是计算qi和dvj的距离,函数arg min是选择所有k个距离中的最小值。
步骤4完成一次QoS数据划分后,以各数据集合中包含的QoS数据作为计算依据,更新各数据集的中心点
(4)
式中,z是vj中的QoS数据,|vj|是vj中QoS的数量。
步骤5重复迭代步骤3和步骤4,直到数据集合的中心点趋于稳定。
步骤6对数据集合的相似性进行优化,以数据集合vj,集合中的QoS数据t为例,i对应的皮尔逊相似度可表示为
(5)
式中,tvj是删除QoS数据t后得到的新的中心点,E(·)是计算数据期望,σ(·)是计算数据的标准差。当ρ(tvj,dvj)<0.5,将t检测为异常QoS数据,并将t从vj中删除。
步骤7重复迭代步骤6,遍及vj中所有数据,直至计算所得皮尔逊相似度皆大于0.5。
步骤8分别对K-means算法得到的k个数据集合进行步骤6~7的迭代计算,完成对云服务S的异常QoS数据检测。
1.6 QoS数据预测
考虑到该云服务在为用户提供服务时潜在性能,在进行云服务选择时,需要预测各云服务的QoS数据。传统的QoS预测方法没有考虑到用户在寻求云服务选择时所处的上下文环境,预测的QoS数据可能与云服务此时的实际性能不相符。贝叶斯公式能够充分考虑用户在进行云服务选择时所处的上下文环境,从异常QoS数据检测的结果中预测出相应的QoS值。贝叶斯公式的标准表现形式[11]为
(6)
式中,A、Bx和By分别表示事件,P(·)表示事件发生的概率,P(Bx|A)表示事件A发生的条件下,事件Bx发生的概率。利用式(6)预测云服务的QoS值,将事件A表示为上下文环境,事件Bx表示云服务的历史QoS数据。P(Bx|A)表示在上下文环境A发生的条件下,用户观测到云服务的QoS数据Bx的概率。也就是说,通过计算用户在进行云服务选择时所处的上下文环境下,能够观测到云服务的QoS数据Bx的概率,将概率最大的QoS数据作为云服务的预测QoS值。由于QoS数据较多,为了简化计算,仅对异常QoS数据检测得到的数据集合的中心点进行概率预测。同时,由于前文已经计算过用户的相似上下文环境,所以上下文环境发生的概率相同。因此,据贝叶斯公式,忽略上下文环境A后,dvj作为预测QoS数据的概率为
(7)
若vj中QoS数据出现1次,则表示dvj出现1次。利用数据集合中元素的数量与整体数量进行概率计算,将概率最大的中心点预测为云服务的QoS数据。利用式(7)可分别预测各相似云服务的QoS值。
1.7 相似云服务的选择
基于理想点法(technique for order preference by similarity to an ideal solution,TOPSIS)[17]对云服务进行排名,将排名最高的云服务作为最优云服务推荐给用户。理想点方法的具体步骤如下。
步骤1对完成异常QoS数据检测的云服务进行QoS预测,利用预测值建立矩阵
(8)
hij是第i个云服务的第j个预测QoS参数(i=1,2,…,n;j=1,2,…,m),n表示云服务的数量,m表示QoS数据的参数数量。
步骤2对矩阵H进行预处理,降低各QoS参数的不同取值范围对云服务排名的影响,得到矩阵
(9)
矩阵R是对矩阵H进行归一化处理得到的结果。rij是第i个云服务的第j个预测QoS参数的预处理值(i=1,2,…,n;j=1,2,…,m),n表示云服务的数量,m表示预处理QoS数据的参数数量。
由于QoS数据的各个参数值具有不同的取值范围,为了消除由不同的数值范围对排名造成的影响,利用归一化方法[18]对QoS参数的值进行缩放,其表达式为
(10)
式中,minq.y是第y列QoS参数的最小值,maxq.j是第y列QoS参数中的最大值,x={1,2,…,n},y={1,2,…,m}。利用归一化公式将QoS数据的各参数值缩放到0~1范围内。
步骤3矩阵R中的各QoS参数列的正理想解和负理想解计算表达式分别为
R+={maxrxy,∀x;y=12,…,m},
(11)
R-={minrxy,∀x;y=1,2,…,m}。
(12)
步骤4利用矩阵R中的数据计算各云服务与R+和R-的距离,其计算表达式分别为
(13)
(14)
步骤5对云服务x利用公式
(15)
计算出最终评估值。在最终进行云服务排名时,利用式(15)对所有的云服务进行评估,得到每个云服务的评估值,并根据评估结果按降序进行云服务的排名。
2 实验结果及分析
2.1 仿真环境和实验数据
实验环境采用Inter(R) Pentium(R) CPU G4400 @ 3.30 GHz 3.30GHz处理器,Windows 7系统,JetBrains PyCharm 2017平台,python语言。数据集来自WSdream[19],选取300个用户调用2 000个web服务观测的QoS数据,共600 000条QoS数据,并利用随机数在该数据集的基础上生成60 000条异常的QoS数据,构建一个包含660 000条QoS数据的数据集,其中异常数据占9.09%。实验中,采用用户的地理位置作为用户的上下文环境参数。QoS数据包含的参数如表2所示。
表2 QoS数据的参数
2.2 性能分析
采用归一化折扣累积增益(normalized discounted cumulative gain,NDCG)[20]作为实验的评估指标,与TOPSIS和层次分析法(analytic hierarchy process,AHP)[21]进行实验对比,验证CSAD方法在异常QoS数据检测方面的有效性和云服务选择精度。
为了模拟真实的服务调用,对数据集进行稀疏化,生成QoS矩阵密度为10%、25%和40%的3种数据集分别进行实验。同时,为了验证异常QoS数据对云服务排名的影响,在实验数据中设置异常的QoS数据占实验数据比值分别为1%、5%、10%。上下文环境的相似度阈值α=0.5,异常QoS数据检测的参数k=5。3种方法的预测排名精度值对比结果如表3所示。
表3 3种方法的预测排名精度值对比结果
由表3可以看出,在QoS矩阵密度分别为10%、25%和45%,异常QoS数据占比为1%时,AHP方法的预测排名精度最高,CSAD方法次之。随着异常QoS数据占比不断增加,3种方法的预测排名精度逐渐降低,TOPSIS和AHP的预测排名精度下降速度较快,而CSAD的下降速度较慢,并在预测排名精度上反超AHP方法。上述结果表明,随着异常QoS数据占比的增加,大量异常的QoS数据对TOPSIS和AHP方法造成了严重的干扰,导致预测排名精度快速下降,而CSAD实现了异常QoS数据的检测过程,对异常QoS数据的干扰具有较强的抵抗性,能够保证有效的预测排名精度。
2.3 上下文环境对异常QoS数据检测的影响
上下文环境代表了不同的QoS数据约束。设置上下文环境相似度阈值为0.5,异常QoS数据占实验数据比例分别为1%、5%、10%、15%和20%。采用两种方案进行异常QoS数据检测,方案1为先计算与目标用户相似的上下文环境集合,再进行异常QoS数据检测;方案2为直接进行异常QoS数据检测。
以检测精度,即异常QoS数据数量占异常QoS数据总数的比值为评估指标,两种方案上下文环境对异常QoS数据检测的影响结果如图2所示。
图2 上下文环境对异常QoS数据检测的影响结果
从图2可以看出,方案1的异常QoS数据检测精度远高于方案2,并且随着QoS数据占比的增加,方案2的检测精度快速降低,而方案1相比方案2并不明显,在异常QoS数据占比为20%时,依然有较高的检测精度。因此,在云服务选择中,进行相似上下文环境的计算有利于提升异常QoS数据的检测精度。
2.4 聚类参数k对异常QoS数据检测的影响
异常QoS数据的检测方法是基于K-means算法,在进行异常检测前需要设置聚类参数k。将k值从2增加到10,步长为1。k值对异常QoS数据检测的影响结果如图3所示。
图3 k值对异常QoS数据检测的影响结果
从图3中可以看出,从k=2开始,随着k值的增加,检测精度逐渐提升。但是,当k值超过5后,检测精度反而随着k值的增加而降低。上述结果说明,选取合适的k值有利于提升异常QoS数据的检测精度,k值的过小或过大均降低了异常QoS数据的检测精度。原因是,过小的k值聚类得到的类集合数量少,同一类中异常QoS数据较多,难以通过相似性来检测异常的QoS数据。而过大的k值聚类的集合数量多,容易将异常的QoS数据聚类到同一个集合中,这种情况更难以检测异常的QoS数据。
3 结语
融合异常QoS数据检测的安全云服务选择方法,结合上下文环境和K-means聚类进行异常QoS数据检测,过滤掉异常的QoS数据,保证了在进行云服务排名时QoS数据的准确性;结合上下文环境和贝叶斯公式的QoS预测方法,能够预测出在实际上下文环境下,更符合云服务的QoS数据。实验结果表明,该方法能够增强异常QoS数据的检测精度,并通过对异常QoS数据的检测,有效地提高了云服务选择的精度。