说明书基于LSA-GCC的分布式大数据系统风险识别方法
技术领域
本发明属于云计算技术领域,涉及一种针对面向服务的云计算系统的风险评测研究,具体是一种基于LSA-GCC(Latent Semantic Analysis-Generalized Clusterbased Classifier,潜在语义分析和广义聚类分类器)的风险识别方法。
背景技术
近年来,云计算技术发展迅猛,成为产业界、学术界、政府等各界关注的焦点。云计算的实质是一种动态的资源组合与服务技术,并通过大量虚拟化组件形成资源池来对计算任务进行分配,使用户可对云计算的服务按需获取。云计算也是并行计算、效用计算、网格计算和虚拟化技术综合运用的技术,按照服务类型主要划分为SaaS、PaaS、IaaS三种层次架构,各层次架构针对服务的资源类型与形式有所不同,但均以Web服务的形式为用户提供资源访问入口,因而向云计算系统的Web服务层提出了更高的要求。
伴随着云计算的广泛运用,以及网络计算机资源Web化和服务化的普及,云计算服务的安全问题及其重要性也越来越明显。系统是否安全可靠,关键在于衡量系统的异常行为是否可识别、服务行为是否可以预测、行为结果是否可以评估。这些重要的衡量参数都直接体现了云计算系统的风险度高低。所以如何准确评测地云计算系统服务层的风险度,是衡量云计算系统是否安全可靠和进行服务选择的关键因素之一。
目前,云计算系统的WebService服务安全大多采用WSDL安全策略。然而,这些都是静态的Web安全措施,并未针对云计算虚拟化、大规模、分布式的技 术特点进行优化,二者之间存在较大的技术代沟。因而在云计算环境下,WebService将面临全新的的安全挑战。基于云计算环境的WebService是动态变化的,其所需要的安全措施会根据应用背景和服务性质的不同而有所区别。即使已有的WebService安全技术已经成熟,能够解决一部分安全问题,但面向云计算环境的WebService效果却不能令人满意。云计算的安全架构和安全策略对WebService系统服务层设计提出了较高的要求。因此,进行面向服务的云计算系统风险评测研究是十分必要的。
发明内容
因此,对于上述的问题,本发明针对云计算虚拟节点的安全事件日志分析问题,提出一种基于LSA-GCC(Latent Semantic Analysis-Generalized Clusterbased Classifier,潜在语义分析和广义聚类分类器)的风险识别方法,该方法通过采集操作系统和Web服务进程的日志进行风险前馈识别,实现虚拟节点的底层粒度风险识别。
其中,风险识别指标一般如下:
1、报警纯净度
这个指标主要是衡量模型对异常事件的检测能力。报警是根据模型计算出的风险值是否低于某一阈值来判断是否发出警告信息。
(1)检测精度(Detection Precision Rate)
正确检测的报警与报警总数的百分比,可表示为:
DPR = # RA # A × 100 % ; ]]>
上式中,#RA(Right Alert)为正确检测的报警总数,#A为报警总数。
(2)误报率(False Alarm Rate)
错误的报警与真实报警的百分比,可表示为:
FAR = # EA # TA × 100 % ; ]]>
上式中,#EA(Error Alert)为错误的报警总数,#TA(True Alert)为真实报警总数。
2.模型拟合准确度
这个指标主要是衡量模型对所有安全事件的判定能力。判定是根据模型计算出的风险值是否低于某一阈值来判断该安全事件的类别。
(1)正确判定率(Determin Accuracy)
正确判定与所有判定的百分比,可表示为:
DA = # RD # AD × 100 % ; ]]>
上式中,#RD(Right Determine)为正确的判定总数,#AD(All Determine)为所有判定总数。
(2)判定召回率(Determine Recall)
正确判定与真实判定的百分比,可表示为:
DR = # RD # TD × 100 % ; ]]>
上式中,#RD(Right Determine)为正确的判定总数,#TD(True Determine)为真实判定总数。
云计算网络包含了大量的各种检测设备、网络组件和虚拟主机节点,这些检测设备承担着从不同角度监控主机及网络运行状况,它们所产生的大量报警 和日志之间存在着关联性。分析单一检测设备的日志信息是传统的安全态势评估方法,由于数据来源的单一性以及检测设备的不确定性,导致分析结果的不准确性,于此同时,传统的安全态势评估方法也没有考虑到自然语言的同义词、一词多义及词语间通常存在着关联关系。所以本发明提出LSA-SAM(LSA-based Security Assessment Model)基于潜在语义的网络安全态势评估模型,以多个相关检测设备的日志为数据源,采用LSA-GCC方法,并预测分析安全态势的趋势。LSA-GCC方法是在CSOMA架构中借助采用过滤机制对虚拟机做日志深度分析,通过风险预警系统对风险进行前馈识别。潜在语义分析从虚拟主机日志中获得安全事件信息,通过奇异值分解(SVD)将数据集映射到一个语义空间下,并采用改进Rocchio算法结合一个聚类算法来构建LSA-GCC模型,抽取特定分类的原型向量赋予一定权值,建立初始的原型向量模型。通过统计计算的方法对大量文本进行分析能够寻找出文本中潜在的语义结构。改善后的LSA-SAM模型能够大幅度提高识别异常事件的准确率,并通过MapReduce框架的LSA-GCC和LSA-SAM进行并行化提速。
具体的,本发明的一种基于LSA-GCC的分布式大数据系统风险识别方法,在CSOMA架构中借助LSA-GCC模型采用过滤机制对虚拟机做日志深度分析,通过LSA-SAM安全识别模型对风险进行前馈识别,包括如下步骤:
步骤1:建立LSA-GCC模型,该LSA-GCC模型是通过采用Rocchio算法结合一个聚类算法来构建的,也即一种改进的Rocchio模型,用于将数据集映射到一个语义空间下,并采用聚类算法对其进行分类后,从聚类结果中抽取特定分类的原型向量,并对各个分类赋予一定权值,建立初始的原型向量模型;其包括如下实现步骤:
步骤11:使用聚类算法来对大规模的文本进行聚类,该使用的聚类算法最 好是具有可伸缩性和适用性的;
步骤12:经过聚类算法聚类后,得到一个类别集然后用这个类别集构建LSA-GCC模型;
步骤2:通过LSA-SAM安全识别模型对风险进行前馈识别,LSA-SAM安全识别模型以LSA-GCC模型为基础进行信息系统风险评测,将待评估数据映射到同一语义空间后,与各个分类的原型向量作计算得到属于该分类的相似度,作相似度与对应分类的权值的累加和,最后求均值得到该待评估数据的风险值,即求得该数据到来时刻的风险值:
步骤21:首先根据步骤1构建的LSA-GCC模型计算出与某一安全事件的相似度sim(p,ci0);
步骤22:计算安全事件风险度Si;
步骤23:计算风险值Srisk,Srisk=sim(p,ci0)*Si;
步骤24:将计算出来的风险值与预设的安全等级进行匹配,从而获得其安全等级。
进一步的,上述步骤11中,具有可伸缩性和适用性的聚类算法,本发明是采用增量聚类算法中的单遍聚类算法CSPC,单遍聚类算法CSPC有着接近于线性时间复杂度,该算法只扫描文本一遍,然后将文本归并到与该文本最相近的分类中(对应步骤(6)),具体的,该单遍聚类算法CSPC的输入为训练集WS-DREAM,聚类阈值r;输出为原型向量集GCCs(每个GCC对应一个类别);其具体算法描述如下:
步骤(1):令mc为类别集合,mgcc为原型向量GCCs的集合;
步骤(2):将mc和mgcc初始化为空;
步骤(3):输入一个新的文本p;
步骤(4):计算文本p与类别集mc中所有类别的相似度:
C q = sim ( D q ; D d i ) = Σ i = 1 k ( D d ij · D q i ) Σ i = 1 k ( D d ij ) 2 · Σ i = 1 k ( D q i ) 2 ; ]]>
步骤(5):找出与文本p相似度最高的类别ci0;
步骤(6):如果sim(p,ci0)>=r,就将p归并到类别ci0中;
步骤(7):否则,创建一个新的类别ci0,并将新的类别ci0增加到类别集合mc中;
步骤(8):重复上述步骤,直到训练集WS-DREAM中的样本为空;
步骤(9):如果|ci0|=1,将类别ci0从类别集合mc中去除掉;
步骤(10):对类别集合mc中的所有类别运用Rocchio公式进行计算获得对应分类的原型向量GCC,获得原型向量集mgcc;
步骤(11):程序返回mgcc。。
原型向量可以提高分类模型的鲁棒性,在某种程度上提取一定的相关特性。更进一步的,本发明采用Rocchio算法来构建类别的原型向量集GCCs(GCCs可记为[gcc1,gcc2,…,gcci,…])。在这一步中,每个类别都通过以下公式构建原型向量:
gcc i = α 1 | c i 0 | Σ d m ∈ C i 0 d m - β 1 | D - C i 0 | Σ d n ∈ D - C I 0 d n ; ]]>
式中gcci代表LSA-GCC中第i个类别CI0的原型向量,和分别表示类别 中的文档及其数量。这个公式所要表达的意思是很清晰的,类别中的文档被当成是正样本,剩下的作为负样本,然后对文档进行累加并归一化,最后对正 负样本的向量做减法以提取具有辨识能力的特征从而构建出类别的原型向量模型gcc1。α和β这两个参数是用于权衡正负样本的权重以得到最佳的gcc1(在本发明中α=5β)。
另外,聚类过程中会产生一些小的类别集,所谓小的类别是指该类别中只包含少量文本。这些文本可以很可能是异常点,也可能包含用于分类的重要信息,也可能只是“噪声”。因此,为了提速分类模型,本发明设定了一个阈值来整合或者过滤这些小的类别。
上述步骤(6)的聚类阈值r的取值会影响到整个聚类过程的质量和效率,如果r值增加,子类别的数量及时间消耗都会增加。为了获得一个稳定的阈值r,本发明采用了一种采样技术来确定阈值r,具体步骤描述如下:
步骤61:在文本集中随机选择N0个文本对;
步骤62:计算每一个文本对的相似度sim;
步骤63:对步骤62中的得到的所有相似度进行计算,获得平均相似度值avgsim;
步骤64:阈值r的取值为∈*avgsim,其中∈>=1。
上述步骤中,N0表示所选择的文本对的数量,avgsim是N0对文本的相似度的平均值,∈是一个参数,用于根据不同的应用情况调整阈值r的取值。当N0取一个较大的值时,avgsim能始终保持稳定。另外,结果表明,在∈的取值范围为5-13的情况下,本实验取得了较高质量的聚类结果。
另外,日志文件数据量是巨大的,通常是非常惊人的数量。随着计算机信息化技术飞速发展,企业中的主机、服务器、防火墙、交换机、防毒墙、无线路由等等网络设备、安全设备以及应用系统越来越多,这些设备所产生的海量 日志信息成为了大数据时代飞速增长的数据的重要组成部分,由此带来的日志管理与安全审计的工作也变得越来越复杂。面对海量数据,单靠人工进行管理几乎成了一件不可能完成的工作。因此,如何有效地对海量数据进行有效地收集、处理和分析以及对计算能力的追求促使人们不断研究新的技术来满足人们的需求。分布式计算模型也在这一需求的推动下不断地发生变革,相继出现了高性能计算、网格计算、普适计算、云计算等,其中云计算领域中Google公司提出的并行云计算方法MapReduce则是近年来新兴的一个研究热点。它可以对复杂的大规模问题进行并行化处理,实现快速的分布式计算,尤其适合数据挖掘类、机器学习类的应用。本发明将采用MapReduce作为LSA-GCC和LSA-SAM的并行化提速手段加以验证。
其中,基于MapReduce框架的LSA-GCC并行化提速包括如下内容:
在LSA-GCC建模过程中,该模型的计算复杂度及时间代价会随着训练集D的增加而增加。而MapReduce框架具有可以大大简化算法、解决大数据处理问题及时间代价高的问题的优点。因此,本发明考虑用MapReduce框架来实现LSA-GCC算法:MR-LSA-GCC。算法MR-LSA-GCC的步骤如下:
步骤1:将经过LSA处理的训练集D划分成m份,并将各部分训练集Di分配到MAP中;
步骤2:构建MAP函数:读取被分配的训练集Di,运用CSCP算法对Di进行聚类处理得到训练集Di中包含的类别集mc,然后针对类别集mc中的类别运用Rocchio算法分别构建相应的原型向量,得到Di中所有类别的原型向量集mgcc;
步骤3:构建REDUCE函数:收集从MAP获得的原型向量集mgcc对原型向量集mgcc中的原型向量使用CSPC算法进行归并获得最终的原型向量集mfinal-gcc。
然后MapReduce框架调用上述步骤2构建的MAP函数和步骤构建3的REDUCE函数实现LSA-GCC算法。
基于MapReduce的LSA-SAM安全识别模型行化提速包括如下内容:
LSA-SAM安全识别模型是将测试样本T与已建立的LSA-GCC模型进行相似度的计算得到相似值度sim(p,ci0),然后将相似值度sim(p,ci0)与安全事件风险度Si作乘积得到该样本的安全值,再将该安全值与安全等级进行匹配,从而获得该样本的安全等级。由于各个测试样本是相互独立的,结合MapReduce框架的优势,当数据集比较大的时候我们可以考虑用MapReduce来做加速。因此,本发明提出了MR-LSA-SAM算法。算法MR-LSA-SAM算法步骤如下:
步骤1:将测试样本T映射到训练集D构建的潜在语义空间下,得到具有语义结构的向量表示集T',然后将T'划分成m份,并将测试集T'i分配到MAP中;
步骤2:MAP:读取分配到的测试集T'i,运用LSA-SAM安全识别模型获得测试样本的安全等级。
运用MapReduce框架,用户只需要实现Map和Reduce这两个函数,其它事情均由MapReduce框架自动完成,这样就大大简化了算法的实现。同时由于MapReduce框架本身就是为大规模的程序计算所设计的,因此,算法本身很容易扩展到多个计算节点上。采用基于MapReduce框架实现的算法,无需修改任何代码即可扩展到大规模集群上,这对可变规模问题的求解是及其有利的,特别是要处理大规模数据时。本发明研究的日志记录分析就是大规模数据,因此本发明提出的方法经MapReduce框架加强后,更显示出了它的优势。
针对云计算系统产生的海量日志分析,本发明采用基于潜在语义分析的广义聚类分类器(LSA-GCC)进行数据挖据,实现语义级的事件日志风险识别,与 系统自身定义的事件日志类型不同,本方法可以在大量的普通日志中发现潜在风险,并进行风险等级的识别;随后本发明对比了采用机器学习方法提高LSA-GCC的识别效果,并用MapReduce加速了该识别过程,实验验证标明上述方法的组合在识别准确率和速度上,均有较好的提高,与一般的事件日志统计相比,也对云计算系统虚拟机的单点风险度有更准确的判断。
本发明的基于LSA-GCC的分布式大数据系统风险识别方法,通过采集操作系统和Web服务进程的日志进行风险前馈识别,实现虚拟节点的底层粒度风险识别。在此基础上采用改进的LSA-SAM(Latent Semantic Analysis-Secutity Assessment Model,潜在语义分析安全评估模型)进一步提高检测异常事件的准确率。最后针对LSA-GCC和LSA-SAM分别采用MapReduce加速,可实现较快的语义级风险识别。
附图说明
图1为三维潜在语义空间图示;
图2为LSA的求解流程图;
图3为SVD矩阵分解图示;
图4为基于子类的原型向量示例
图5为LSA-GCC和Rocchio两种方法的识别准确度比较;
图6为基于潜在语义的安全识别模型(LSA-SAM);
图7为风险情况模拟;
图8为改善后的风险情况;
图9为改善前和改善后的LSA-SAM模型效果对比;
图10为MR-LSA-GCC的程序模型;
图11为MR-LSA-SAM的程序模型;
图12为串行和并行算法实验结果图;
图13为MR-LSA-GCC实验结果图;
图14为MR-LSA-SAM和LSA-SAM实验结果图。
具体实施方式
现结合附图和具体实施方式对本发明进一步说明。
云计算是集群计算、并行计算、网格计算不断发展的新一代产物,融合了分布式计算的多种概念和技术。云计算环境典型呈现出大规模分布式、结构复杂化、架构多样化、运算动态化和服务虚拟化的特点,其中虚拟化技术是云计算的关键技术之一。虚拟化对面向服务(WebService)提供为主的云计算系统供应商提出了更高的安全和质量要求,而传统研究大多聚焦于信息系统风险评估和网络入侵检测等领域,缺乏针对云计算的深入探索,因此进行面向服务的云计算系统风险评测研究是十分必要的。
本发明提供了一种基于LSA-GCC的分布式大数据系统风险识别方法,通过SOCTPA预警系统对风险进行语义分析和深度识别,其中潜在语义分析从虚拟主机日志中获得安全风险信息,并建立初始的原型向量模型。通过统计计算的方法对大量文本进行分析能够寻找出文本中潜在的语义结构。实验证明该风险识别方法可以从海量日志中分析安全事件,获得安全风险度量。
本发明将数据挖掘的方法运用到云计算的风险评估当中,提出了一种潜在语义空间下的广义聚类风险评测模型。该模型通过奇异值分解(SVD)将数据集 映射到一个语义空间下,并采用聚类算法对其进行分类后,从聚类结果中抽取特定分类的原型向量,并对各个分类赋予一定权值,建立初始的原型向量模型。以该模型为基础进行信息系统风险评测,将待评估数据映射到同一语义空间后,与各个分类的原型向量作计算得到属于该分类的相似度,作相似度与对应分类的权值的累加和,最后求均值得到该待评估数据的风险值,即求得该数据到来时刻的风险值。如没有特别说明,本发明均指从虚拟主机的操作系统日志和Web应用服务器日志中获得安全风险信息。
本发明介绍了潜在语义分析(LSA),包括LSA的原理、求解流程图及其应用;介绍了基于潜在语义分析的广义聚类分类器(LSA-GCC);并进行了基于MapReduce框架的LSA-GCC和LSA-SAM并行化提速实验。
一、LSA潜在语义分析
1.1潜在语义分析概述
传统的基于文本关键字的向量空间模型(VSM),以向量形式表示非结构化的文本,可能使用各种数学计算模型。它的优点是处理逻辑快捷、简单。但是文本中出现的词往往存在一定的相关性,向量空间模型却认为文本与特征词之间是相互独立的,这会影响计算的结果。同时自然语言中存在着大量的多义词和同义词现象,语义的表达也存在着上下文语境的关系,不能仅用孤立的关键字来表示文本的内容。而向量空间模型(VSM)模型的文本相似度仅取决于词频统计,忽视了自然语言的特征,势必影响结果的准确性和完整性。
潜在语义分析(LSA)与向量空间模型(VSM)最本质的区别在于,LSA认为特征词与文本之间存在着某种关联关系。LSA是关于知识归纳和知识表征的新理论,是一种用于自动地实现知识表示和提取的方法和理论,它能够统计分析大量文本,来寻找特征词之间的关联关系,提取特征词间的上下文含义。与向量 空间模型(VSM)类似,LSA也采用空间向量表示文本,但是通过奇异值分解(SVD,Singular Value Decomposition)的处理,使得LSA能够把原始的文本向量空间映射到低维的潜在语义空间中,这样在一定程度上就消除了同义词、多义词之间的影响,提高了后续处理的精度。
1.2潜在语义分析方法
LSA的出发点是特征词与文本之间存在着某种关联关系,通过统计计算分析大量文本的方法,寻找出文本中潜在的语义结构。LSA将每个词汇视为空间系中以文档为坐标的一个点,也将每个文档视为空间系中以词汇为坐标的一个点。认为特征词要放到文档中去理解,而文档是由特征词组成的,体现了一种“文档-特征词”的语义空间关系。
与向量空间模型(VSM)中文档的高维表示不同,潜在语义分析(LSA)的关键思想是通过奇异值分解(SVD)将原始的文本向量空间映射到一个低维的带有语义结构的向量空间,即潜在语义空间,如图1所示。
1.3潜在语义的实现过程
实现LSA,需要通过建立语义空间的潜在数学模型,这直接影响到LSA的性能。自从提出LSA思想方法以来,通过不断的尝试与改进,选择模型时,需要根据所需处理数据的特点、特定的使用要求,综合考虑计算时内存消耗、数据的存储空间代价、计算复杂度、语义模型的表达能力、模型的最优化衡量标准、更新算法复杂度、模型的结合能力等多种因素选择适合特定需求的最佳解决问题的方法。LSA的求解流程图如图2所示,
(1)生成矩阵
将文档集(其中m表示文档的数量)及特征词集(其中n表示特征词的数 量)构造N×M维的“特征词-文档”矩阵A:
A=(aij)n×m (4-1)
文档的特征词构成矩阵A的行向量,n为特征词的数量;文档构成列向量,m为文档的数量;aij的初值为在第j个文档中第i个特征词出现的次数,通过对这个值进行计算后得到该元素的权重,计算方法后面小节介绍。如果属于同一类别的两篇文档,其语义会更相关。不同类别的文档中,其语义会不相关,通常来说,A为高阶稀疏矩阵。
(2)奇异值分解(SVD)
SVD定义如下:
A=U∑VT (4-2)
其中V是n×n的正交矩阵,其行向量是矩阵AAT的正交特征向量,是矩阵A的右奇异矢量;U是m×m的正交矩阵,其列向量是矩阵ATA的正交特征向量,称为矩阵A的左奇异矢量;UUT=VTV=Im。∑=diag(l1,l12,l13,...,lr),其中l1,l12,l13,...,lr是A的所有奇异值且l1≥l12≥l13≥...≥lr。
由于存在大量的文本和特征词,不可避免的会造成庞大的“特征词-文档”矩阵。所以在实际计算时,需要进一步简化分解结果。
把“文档-特征词”矩阵降维,即从高维降到了低维。取正整数k,k<=r且k<<min(m,n),得到A的k-秩近似矩阵为Ak为
A k = U k Σ k V k T - - - ( 4 - 3 ) ]]>
∑是k×k的对角矩阵,对角元素为矩阵A的k个最大奇异值;Vk是n×k大小的矩阵,的行是V的前k行,Uk是m×k大小的矩阵,Uk的列是矩阵U的前k列。根据A奇异值分解后结果,在一个几何空间内,每个文档、每一个特 征词都能找到其对应的固定点。在给定k的条件下,利用SVD寻找近似矩阵Ak的方法保持了A中所反映的特征词和文档之间联系的内在结构(词-词,词-文本,文本-文本),即潜在语义,同时去除了因同义词或多义词的使用而产生的“噪声”。从某种意义上说,SVD能够挖掘出文本集的主要语义信息,削弱噪音所带来的影响。
如图3为SVD的矩阵分解示意图,该图可以有助于理解潜在语义结构。经过SVD分解,任何一个矩阵,得到相应的矩阵U、T、∑;化简上述三个矩阵,选择适当的k,得到矩阵A的分解式这也是秩为k的原始矩阵在2-范式意义下的最佳逼近。其中,在k维空间文档和特征词的表示可以看作奇异值向量矩阵的行,即代表文档和特征点的空间坐标。特征和文档都属于同一个空间,这个空间就是潜在的语义结构空间,而且通过比较容易得到它们之间的相似关系。
经过SVD矩阵分解生成潜在语义空间的过程实质上是降维过程,该过程的关键在于取合适的k值,如果k过大,那么原来的向量空间与新的语义空间太过接近,计算量更大,就失去了LSA的意义;如果k过小,那么分辨特征词或文档的能力不足,新生成的语义空间特征信息太少,实验效果就不好。因此,如何平衡准确率和效率,在具体实验中,可以根据因子分析的理论,也可以手动调整k值,选取前k个最大主因子,给定阈值,使k满足以下贡献率不等式:
Σ i = 1 k a i / Σ i = 1 r a i ≥ θ , r = min ( n , m ) - - - ( 4 - 4 ) ]]>
其中θ为0.4-1之间的某值,包含原始信息的阈值。贡献率不等式是反映原始空间和k维子空间的相似程度。在实验中k的取值一般在300-1000之间。
1.4基于潜在语义的广义聚类分类器
文本数据往往以指数级的速度增长,如何高效地组织管理这些文本数据已经成为一个重要而且急待解决的问题。文本分类,是一个将文本分配到预定义的分类的过程,是用来解决如何高效地组织管理大量的文本数据的重要方法。文本分类是数据挖掘领域一个重要的应用,不少人已经做了很多有关这方面的研究,很多分类方法也已经被提出。常用的分类算法有决策树,Rocchio,朴素贝叶斯,神经网络,支持向量机,线性最小平方拟合,KNN,遗传算法,最大熵,Generalized Instance Set等。
随着计算机信息化技术飞速发展,每天的所产生的数据量是巨大的。对这些数据进行处理与分析需要考虑到时间代价、计算代价以及自然语言的语义结构等因素。因此,我们提出了一个基于潜在语义分析的广义聚类分类器(LSA-GCC,LSA-based Generalized Cluster based Classifier),充分利用LSA和Rocchio算法的快速高效优点。
该分类器首先将训练集映射到一个低维度的语义空间下,然后采用一个约束的单遍聚类算法(CSPC,constrained single pass clustering algorithm)和Rocchio算法构建训练集所有类别下的子类的原型向量模型,然后基于这个模型求解待分类样本与模型中各个分类的相似度,选择相似度最高的分类作为该待分类样本的所属分类。CSPC聚类算法能够覆盖每个类别的潜在子类,因此LSA-GCC所构建的模型优于Rocchio模型。同时,LSA-GCC模型是在语义空间下构建的,符合文本描述的要求。
Rocchio算法的基本思想是针对训练文本集,为每个类别构建一个原型向量,原型向量计算公式如下:
C j = α 1 | D j | Σ d m ∈ D j d m - β 1 | D - D j | Σ d n ∈ D - D j d n - - - ( 4 - 5 ) ]]>
上式中,Cj是基于类别Cj的构建的原型向量,D是整个文本训练集,Dj和|Dj|表示类别Cj中的文档集合及文档数量,α和β是用来权衡正样本集和负样本集的重要性的。产生原型向量的过程可以看成是一个学习的过程,Rocchio模型由这些原型向量构成。给定一个文本T,计算出该文本与每个原型向量的相似度,并将文本T分配给相似度最高的类别。
1.5LSA-GCC算法
当训练文本集的数量较大时,对文本的分类就会面临一个问题,那就是计算代价高。计算代价高往往不适用于具有实时性要求的应用。一种有效的能够弥补这个缺陷的方法是构建一个广义聚类分类模型。这个模型能够替代原始的训练样本集对文本进行分类。与此同时,由于这个模型是对原始训练样本集的总结(可以称之为原始训练样本集的“质心”),因此它的分类效果会更好。
Rocchio是一种有效的线性分类器,它通过高效的聚类方法构建训练样本集的原型向量模型。因此,它构建的向量模型是提高计算性能的有效方法之一。然而,Rocchio算法有两个明显的缺陷。一是它假设数据空间是一组线性可分离的超平面区域,但是许多真实世界的数据的分布是非线性;另一个是它为每个分类只构建一个原型向量。聚类是一种无监督的机器学习方法,用聚类的方法来挖掘训练样本集中的潜在的细粒度的关系是可行的。因此,我们提出了一种约束的单遍聚类方法CSPC来对训练样本集进行训练以得到细粒度的分类集。
构建这些分类集的原型向量,称为广义原型向量集(GCCs)。然后用这个广义原型向量集代替原来的训练样本集从而构建出基于广义聚类的分类模型。如图4所示,假定三角形表示一个大的类别,它包含三个子类;方块表示另一个大的类别,它包含四个子类。在Rocchio算法中,三角形类别和方块类别将 分别由各自的广义原型向量表示(也就是说只有两个“质心”)。而在理想的LSA-GCC模型下,根据CSPC算法,三角形类别将产生三个子类,方块类别将产生四个子类;然后根据Rocchio算法为这两个类别产生与各自子类相对应的广义原型向量(也就是说会有七个“质心”)。最后我们运用这些广义原型向量而不是所有的训练集进行更进一步的计算。
不同的分类由不同的特征词表示,LSA-GCC构建的原型向量都是非线性地分布在数据空间的不同位置。因此,LSA-GCC能很好的弥补Rocchio算法的缺陷,加强所构建的模型的语义表达能力。由于LSA-GCC源自原型向量,而原型向量是训练样本集的“质心”,所以该模型对单个训练样本不敏感。再者,基于原型向量的LSA-GCC由于降低了用于计算的训练文本的数量,从一定程度上大大加速了后期进行分类的决策过程。从而,本发明所提出的方法无论从效率还是有效性而言都能获得良好的效果。
2LSA-GCC建模
我们采用Rocchio算法结合一个聚类算法来构建LSA-GCC模型(一种改进的Rocchio模型)为后期的分类做准备。为了确保本发明所提出的方法的可伸缩性和适用性,需要使用具有可伸缩性和适用性的聚类算法来对大规模的文本进行聚类。
大规模的文本聚类是一个高维的数据聚类问题,高维聚类使得大多数传统的聚类算法失效。各种各样的聚类算法已经被提出来解决大规模及高维数据问题,如子空间聚类、关联聚类等。增量聚类算法时间消耗少,非迭代且只扫描文本一遍。基于这样的特点,增量聚类算法可以解决上述问题。
单遍聚类算法是一种增量聚类算法,有着接近于线性时间复杂度,因此本发明采用的是一种约束单遍本聚类算法CSPC(整个聚类过程步骤描述如算法1 中的(1)-(12)所示),该算法只扫描文本一遍,然后将文本归并到与该文本最相近的分类中(对应步骤描述如算法1中的(7)-(8)所示)。
算法1(ProcedureGCC(D)):构建原型向量集的伪代码如下:
输入:训练集WS-DREAM,聚类阈值r;
输出:原型向量集GCCs(每个GCC对应一个类别);
ProcedureGCC(D)
(1)设mc为类别集合,mgcc为原型向量GCCs的集合;
(2)将mc和mgcc初始化为空;
(3)Repeat;
(4)输入一个新的文本p;
(5)计算文本p与类别集mc中所有类别的相似度;
C q = sim ( D q ; D d i ) = Σ i = 1 k ( D d ij · D q i ) Σ i = 1 k ( D d ij ) 2 · Σ i = 1 k ( D q i ) 2 ; ]]>
(6)找出与文本p相似度最高的类别ci0;
(7)如果sim(p,ci0)>=r;
(8)就将p归并到类别ci0中;
(9)否则,
(10)创建一个新的类别ci0;
(11)并将新的类别ci0增加到类别集合mc中;
(12)直到训练集中的样本为空;
(13)如果|ci0|=1;
(14)将类别ci0从类别集合mc中去除掉;
(15)对类别集合mc中的所有类别运用Rocchio公式进行计算获得对应分类的原型向量GCC,获得原型向量集mgcc;
(16)程序返回mgcc。
经过CSPC算法聚类后可以得到一个类别集然后用这个类别集构建LSA-GCC模型。
原型向量可以提高分类模型的鲁棒性,在某种程度上提取一定的相关特性.本发明采用Rocchio算法来构建类别的原型向量GCCs(步骤如算法1中的步骤(15)所示)。在这一步中,每个类别都通过以下公式构建原型向量:
gcc i = α 1 | c i 0 | Σ d m ∈ C i 0 d m - β 1 | D - C i 0 | Σ d n ∈ D - C I 0 d n - - - ( 4 - 6 ) ]]>
式中gcci代表LSA-GCC中第i个类别CI0的原型向量,和分别表示类别 中的文档及其数量。这个公式所要表达的意思是很清晰的,类别中的文档被当成是正样本,剩下的作为负样本,然后对文档进行累加并归一化,最后对正负样本的向量做减法以提取具有辨识能力的特征从而构建出类别的原型向量模型gcci。α和β这两个参数是用于权衡正负样本的权重以得到最佳的gcci,在本发明中α=5β。
聚类过程中会产生一些小的类别集,所谓小的类别是指该类别中只包含少量文本。这些文本可以很可能是异常点,也可能包含用于分类的重要信息,也可能只是“噪声”。因此,为了提速分类模型,本发明设定了一个阈值来整合或者过滤这些小的类别(步骤描述如算法1中(13)和(14)所示)。
算法1中步骤(7)的聚类阈值r的取值会影响到整个聚类过程的质量和效率,如果r值增加,子类别的数量及时间消耗都会增加。为了获得一个稳定的 阈值r,本发明采用了一种采样技术来确定阈值r。具体步骤描述如下:
步骤1:在文本集中随机选择N0个文本对。
步骤2:计算每一个文本对的相似度sim。
步骤3:对步骤2中的得到的所有相似度进行计算,获得平均相似度值avgsim。
步骤4:阈值r的取值为∈*avgsim,其中∈>=1。
上述步骤中,N0表示所选择的文本对的数量,avgsim是N0对文本的相似度的平均值,∈是一个参数,用于根据不同的应用情况调整阈值r的取值。当N0取一个较大的值时,avgsim能始终保持稳定。在本研究中,N0取值为8000,结果表明,在∈的取值范围为5-13的情况下,本实验取得了较高质量的聚类结果。
对LSA-GCC模型与Rocchio模型进行比较,实验结果如下表1和表2所示。
表1LSA-GCC
表2Rocchio
表1和表2中的参数,r是分类阈值,Right指的是正确分类的记录数,Error指的是被错误分类的记录数,Uncertain指的是在指定分类阈值下无法分到已建立模型中所有的分类的记录数,Error event、Information event、Failure Audit event、Warning event、Success Audit event、Success event为对一些安全事件的判定,Recall是这些判定的召回率,Accuracy是模型的正确率。
图1为LSA-GCC和Rocchio两种方法的识别准确度比较示意图。
3基于潜在语义的风险识别模型
3.1风险识别指标
1.报警纯净度
这个指标主要是衡量模型对异常事件的检测能力。报警是根据模型计算出的风险值是否低于某一阈值来判断是否发出警告信息。
(1)检测精度(Detection Precision Rate)
正确检测的报警与报警总数的百分比,可表示为:
DPR = # RA # A × 100 % - - - ( 4 - 7 ) ]]>
上式中,#RA(Right Alert)为正确检测的报警总数,#A为报警总数。
(2)误报率(False Alarm Rate)
错误的报警与真实报警的百分比,可表示为:
FAR = # EA # TA × 100 % - - - ( 4 - 8 ) ]]>
上式中,#EA(Error Alert)为错误的报警总数,#TA(True Alert)为真实报警总数。
2.模型拟合准确度
这个指标主要是衡量模型对所有安全事件的判定能力。判定是根据模型计算出的风险值是否低于某一阈值来判断该安全事件的类别。
(1)正确判定率(Determin Accuracy)
正确判定与所有判定的百分比,可表示为:
DA = # RD # AD × 100 % - - - ( 4 - 9 ) ]]>
上式中,#RD(Right Determine)为正确的判定总数,#AD(All Determine)为所有判定总数。
(2)判定召回率(Determine Recall)
正确判定与真实判定的百分比,可表示为:
DR = # RD # TD × 100 % - - - ( 4 - 10 ) ]]>
上式中,#RD(Right Determine)为正确的判定总数,#TD(True Determine)为真实判定总数。
3.2风险识别方法
云计算网络包含了大量的各种检测设备、网络组件和虚拟主机节点,这些检测设备承担着从不同角度监控主机及网络运行状况,它们所产生的大量报警和日志之间存在着关联性。
分析单一检测设备的日志信息是传统的安全态势评估方法,由于数据来源的单一性以及检测设备的不确定性,导致分析结果的不准确性.于此同时,传统的安全态势评估方法也没有考虑到自然语言的同义词、一词多义及词语间通常存在着关联关系。
所以本发明提出LSA-SAM(LSA-based Security Assessment Model)基于 潜在语义的网络安全态势评估模型,也即LSA-SAM安全识别模型,以多个相关检测设备的日志为数据源,采用LSA-GCC方法,并预测分析安全态势的趋势.
图6是LSA-SAM安全识别模型的评估流程,如图所示,首先根据步骤1构建的LSA-GCC模型计算出与某一安全事件的相似度sim(p,ci0);然后计算安全事件风险度Si;计算风险值Srisk,Srisk=sim(p,ci0)*Si;将计算出来的风险值与预设的安全等级进行匹配,从而获得其安全等级。
本发明的安全事件集考虑了虚拟机中Windows操作系统的事件日志集合为SES={SUCCESS EVENT,SUCCESS AUDIT EVENT,INFORMATION EVENT,WARNING EVENT,FAILURE EVENT,ERROR EVENT}。以及相对有代表性的Tomcat Webservice服务器中,采用Log4j采集的事件日志集合:SESt={AUDIT,DEBUG,INFO,WARN,ERROR,FATAL}。根据相应的安全事件赋予安全值(如表1所示)。安全等级Gs={安全,较安全,一般,不安全},每个等级都在一定的数值范围内,通过LSA-SAM安全识别模型得到风险值,该风险值落入某一安全等级的数值范围内就属于该安全等级。安全等级范围如表3所示。
OS安全事件 WebService事件 权值
SUCCESS EVENT AUDIT 1.0
SUCCESS AUDIT EVENT DEBUG 0.8
INFORMAION EVENT INFO 0.6
WARNING EVENT WARN 0.4
FAILURE EVENT ERROR 0.2
ERROR EVENT FATAL 0.0
表3安全事件权值等级划分
等级 取值范围
安全 8.5~1.0
较安全 6.0~8.5
一般 3.5~6.0
不安全 0~3.5
表4风险等级范围
本实验用LSA-SAM算法对安全风险的整体情况进行验证。该实验假设同一时间片内只有一个安全事件发生,对于给定的安全事件也预告赋予了风险值。部分实验结果如图7所示。
从图7可以看出,实验结果与原始的风险情况基本一致。但是我们也看到了一些不吻合的现象,如图中标注的1、2、3、4这四个点的情况。在前文中有对风险的安全情况进行设定,不安全事件的风险值范围是0~3.5,而这4点的风险值都为0,所以这4点是应该无法判定而归为异常情况发出警报的情况。但是其对应原始情况却是安全范围内的,是不应该发出警报的。这是什么原因呢?其实这四个点就是实验一中的Uncertain情况,也就是没有被模型所覆盖的情况。因为无法为其分配到相应的类别当中,所以就把它当成是异常事件,由管理员来处理。实验中,标注1和标注3、标注2和标注4分别是相同的安全事件,如果首次发出警报被管理员判定为安全事件后,再次发生时仍然发出警报,则是一个需要解决问题。此时,就可以发挥LSA-SAM模型的优势,根据管理员的判定进行学习,将该点作为一个新的小类别,然后计算出该类别的“质心”。经过学习后,风险情况如图7所示。可见,通过学习后,误报警的情况得到了改善。我们还对各个标准对改善前和改善后的模型进行了对比,如图8所示。
从图9可以看出,改善前LSA-SAM模型的异常事件正确检测率DPR只有70%左右,而改善后模型的正确检测率达到98%左右;从误报率FAR来看,改善后LSA-SAM模型只有2%左右,而改善前LSA-SAM模型却高达29%。因此,通过学习,LSA-SAM模型性能的改善是显著的。而且LSA-SAM模型的DPR和FAR都不会随着数据集的增加而有较大波动,也进一步说明了LSA-SAM模型的正确性。
同时,从图7中我们还看到,标注5和标注6分别是多个连续的风险值相同的点。由于实验已假设同一时刻只有一个事件发生,所以如果这几个连续的 点是相同事件的话,那么频繁操作的行为也是一种异常情况,可能是遭到攻击。因此,对于这种情况,要适时地发出警报,交由管理员处理。
对于实验假设的同一时间片内只有一个事件发生,在实际运用当中是不合理的。但是此处的假设只是便于做实验仿真。如要将LSA-SAM模型运用到实际当中,只需要将所有安全事件的所具有的最小风险值作为该时刻的风险值。当然还要考虑到两种情况:(1)同一时间片内有连续多个相同安全事件发生,此时要将风险值降低到不安全的范围内,并发出警报;(2)同一时间片内有多个安全事件的风险值在不安全范围内,此时要对这些安全事件分别发出警报,以使管理员能明确到底是哪里出了问题。
4LSA-GCC模型和LSA-SAM的并行化提速
日志文件数据量是巨大的,通常是非常惊人的数量。随着计算机信息化技术飞速发展,企业中的主机、服务器、防火墙、交换机、防毒墙、无线路由等等网络设备、安全设备以及应用系统越来越多,这些设备所产生的海量日志信息成为了大数据时代飞速增长的数据的重要组成部分,由此带来的日志管理与安全审计的工作也变得越来越复杂。面对海量数据,单靠人工进行管理几乎成了一件不可能完成的工作。因此,如何有效地对海量数据进行有效地收集、处理和分析以及对计算能力的追求促使人们不断研究新的技术来满足人们的需求。分布式计算模型也在这一需求的推动下不断地发生变革,相继出现了高性能计算、网格计算、普适计算、云计算等,其中云计算领域中Google公司提出的并行云计算方法MapReduce则是近年来新兴的一个研究热点。它可以对复杂的大规模问题进行并行化处理,实现快速的分布式计算,尤其适合数据挖掘类、机器学习类的应用。本发明将采用MapReduce作为LSA-GCC和LSA-SAM的并行化提速手段加以验证。
4.1基于MapReduce框架的LSA-GCC并行化提速
在LSA-GCC建模过程中,该模型的计算复杂度及时间代价会随着训练集D的增加而增加。而MapReduce框架具有可以大大简化算法、解决大数据处理问题及时间代价高的问题的优点。因此,本发明考虑用MapReduce框架来实现LSA-GCC算法:MR-LSA-GCC。算法MR-LSA-GCC的步骤如下:
步骤1:将经过LSA处理的训练集D划分成m份,并将各部分训练集Di分配到MAP中;
步骤2:MAP:读取被分配的训练集Di,运用CSCP算法对Di进行聚类处理得到训练集Di中包含的类别集mc,然后针对类别集mc中的类别运用Rocchio算法分别构建相应的原型向量,得到Di中所有类别的原型向量集mgcc;
步骤3:REDUCE:收集从MAP获得的原型向量集mgcc,对原型向量集mgcc中的原型向量使用CSPC算法进行归并获得最终的原型向量集mfinal-gcc。
MR-LSA-GCC算法的整个流程图如图10所示。
下面算法2是MR-LSA-GCC算法的伪代码实现。
算法2MR-LSA-GCC伪代码:
4.2基于MapReduce的LSA-SAM安全识别模型行化提速
LSA-SAM安全识别模型是将测试样本T与已建立的LSA-GCC模型进行相似度的计算得到相似值度sim(p,ci0),然后将相似值度sim(p,ci0)与安全事件风险度Si作乘积得到该样本的安全值,再将该安全值与安全等级进行匹配,从而获得该样本的安全等级。由于各个测试样本是相互独立的,结合MapReduce框架的优势,当数据集比较大的时候我们可以考虑用MapReduce来做加速。因此,本发明提出了MR-LSA-SAM算法。算法MR-LSA-SAM算法步骤如下:
步骤1:将测试样本T映射到训练集D构建的潜在语义空间下,得到具有语义结构的向量表示集T',然后将T'划分成m份,并将测试集T'i分配到MAP中;
步骤2:MAP:读取分配到的测试集T'i,运用LSA-SAM安全识别模型获得测试样本的安全等级;
MR-LSA-SAM算法的整个流程图如图11所示。其伪代码如下:
算法3MR-LSA-SAM的程序算法伪代码
通过伪代码的分析可知,运用MapReduce框架用户只需要实现Map和Reduce这两个函数,其它事情均由MapReduce框架自动完成,这样就大大简化了算法的实现。同时由于MapReduce框架本身就是为大规模的程序计算所设计的,因此,算法本身很容易扩展到多个计算节点上。采用基于MapReduce框架实现的算法,无需修改任何代码即可扩展到大规模集群上,这对可变规模问题的求解是及其有利的,特别是要处理大规模数据时。本发明研究的日志记录分析就是大规模数据,因此本发明提出的方法经MapReduce框架加强后,更显示出了它的优势。
1、基于MapReduce框架的加速比分析
采用并行算法求解优化问题,最重要的一个目的就是减少算法的求解时间,本发明希望能从理论上预测提出的两个算法增强的加速比。
算法加速比S:对一个问题,采用串行算法求解和并行算法求解所花费的时 间比:
S = T s T p - - - ( 4 - 11 ) ]]>
这里的Ts和Tp分别代表了串行和并行算法在求解问题时所花的时间。
2MR-LSA-GCC算法的理论加速比
依据图10的MR-LSA-GCC理论模型,Tp包括五部分:
(1)Tfork表示将程序从主节点复制到其它从节点的时间;
(2)Tmap表示执行LSA-GCC算法的时间,即LSA-GCC的运行时间;
(3)Tout表示MAP将运行结果发送到REDUCE所花费的时间,即传输时间;
(4)Treducer表示执行mering程序所运行的时间;
(5)Tresult表示将REDUCE的结果写到硬盘的时间。
因此,Tp=Tfork+Tmap+Tout+Treducer+Tresult。我们有:
S MR - LSA - GCC = T s T p = 1 Tfork + Tmap + Tout + Treducer + Tresult - - - ( 4 - 12 ) ]]>
从MR-LSA-GCC模型来看,我们知道程序的复制和结果输出只执行一次,因此,这部分时间的消耗较小,可以忽略不计。从而我们有:
S MR - LSA - GCC = T s T p ≈ 1 Tfork + Tout + Treducer - - - ( 4 - 13 ) ]]>
假设在MR-LSA-GCC中,有m个虚拟机作为从节点来执行LSA-GCC算法,从而有Ts=m*Tmap。所以有:
S MR - LSA - GCC = m 1 + T out T map + T reducer T map - - - ( 4 - 14 ) ]]>
从公式可以看出,MR-LSA-GCC的加速比依赖于执行LSA-GCC算法的时间。 因此,MR-LSA-GCC适合求解问题非常复杂,需要很长时间才可以获得解的问题。
图13中显示了不同数据集LSA-GCC模型与MR-LSA-GCC模型的运行时间情况。其中横坐标表示数据集的数量,纵坐标表示相应的数据集在不同情况下LSA-GCC模型与MR-LSA-GCC模型的运行时间。从图13中可以看出,随着数据量的不断增加,LSA-GCC模型时间增加的速度比较快,而MR-LSA-GCC模型的时间增加的速度比较缓慢。实验表明MR-LSA-GCC模型在一定程度上也实现了对LSA-GCC模型高达12.16倍的加速。这证明了MR-LSA-GCC模型的正确性及有效性。
3、MR-LSA-SAM算法的理论加速比
依据图12的MR-LSA-SAM理论模型,Tp包括三部分:
Tfork表示将程序从主节点复制到其它从节点的时间;
Tmap表示执行LSA-SAM算法的时间,即LSA-SAM的运行时间
Tresult表示将REDUCE的结果写到硬盘的时间。
因此,Tp=Tfork+Tmap+Tresult。我们有:
S MR - LSA - SAM = T s T p ≈ T s T fork + T Map + T resulr - - - ( 4 - 15 ) ]]>
从MR-LSA-SAM模型来看,我们知道程序的复制和结果输出只执行一次,因此,这部分时间的消耗较小,可以忽略不计。从而我们有:
S MR - LSA - SAM = T s T p ≈ T s T map - - - ( 4 - 16 ) ]]>
假设在MR-LSA-SAM中,有m个PC作为从节点来执行LSA-SAM算法,从而有Ts=m*Tmap。所以有:
S MR - LSA - SAM = T s T p ≈ m - - - ( 4 - 17 ) ]]>
从公式可以看出,MR-LSA-SAM的加速比为m。因此,MR-LSA-SAM适合求解能将问题划分为多个相互独立的子问题进行求解的问题。
图14中显示了LSA-SAM模型与MR-LSA-SAM模型的运行时间情况。其中横坐标表示数据集的数量,纵坐标表示相应的数据集在不同情况下LSA-GCC模型与MR-LSA-SAM模型的运行时间。从图14中可以看出,随着数据量的不断增加,LSA-GCC模型的时间几乎呈线性快速增长,而MR-LSA-SAM模型的时间增加也是接近线性增长,但是其速度比较缓慢。实验表明MR-LSA-GCC模型在一定程度上也实现了对LSA-GCC模型高达15.53倍的加速。这证明了MR-LSA-SAM模型的正确性及有效性。
本发明的基于LSA-GCC的分布式大数据系统风险识别方法,通过采集操作系统和Web服务进程的日志进行风险前馈识别,实现虚拟节点的底层粒度风险识别。在此基础上采用改进的LSA-SAM(Latent Semantic Analysis-Secutity Assessment Model,潜在语义分析安全评估模型)进一步提高检测异常事件的准确率。最后针对LSA-GCC和LSA-SAM分别采用MapReduce加速。实验结果表明风险识别加速比可分别达到12.56和15.3,具有较好的风险识别效果,即可作为虚拟节点安全防御的参考依据,同时也作为风险预测的主要指标参数。
针对云计算系统产生的海量日志分析,本发明采用基于潜在语义分析的广义聚类分类器(LSA-GCC)进行数据挖据,实现语义级的事件日志风险识别,与系统自身定义的事件日志类型不同,本方法可以在大量的普通日志中发现潜在风险,并进行风险等级的识别;随后本发明对比了采用机器学习方法提高LSA-GCC的识别效果,并用MapReduce加速了该识别过程,实验验证标明上述方 法的组合在识别准确率和速度上,均有较好的提高,与一般的事件日志统计相比,也对云计算系统虚拟机的单点风险度有更准确的判断。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。