基本思想
当添加或删除一个对象,某些相关对象的LCIF值之所以会发生变化,是因为添加或删除动作使数据集中某些对象的邻域发生了变化。通过采用动态的挖掘算法,使之能够在数据集更新的情况下,用较小的计算代价,达到和对所有数据对象重新计算同样的效果。
假设D为一定数据集合,o为其中任意对象,添加或删除对象p,有下列几种情况需要分别进行处理:
1) 如果新添加或删除对象p在对象o的 -邻域中,那么对象o的 和 值肯定发生变化。除此之外,当对象o的r-邻域中某个对象 的 -邻域也包含对象p时,那么对象 的 值同样发生变化。
2) 如果新添加或删除对象p在对象o的r-邻域中,但不在 邻域中,那么仅仅对象o的 值和对象o的r-邻域中 -邻域中包含对象p的对象 的 值同样发生变化。
3) 如果新添加或删除对象p不在对象o的r-邻域中,仅当对象o的r-邻域中某个对象 的 -邻域包含对象p时,对象 的 值才发生变化。
如果从对象p的角度来劳伦受影响集合,如果某个对象o存在于对象p的 -邻域中,满足c图的条件,那么对对象p进行的更新动作可能改变对象o的LCIF值,则可推出对象p的 -邻域中所有的对象都应包含在受影响集合。
同理,对象p的r-邻域中所有的对象满足图b的条件,于是它们也都包含在受影响集合中。而如果某个对象o在对象p的 -邻域中,当且仅当至少存在一个对象同时属于对象o的r-邻域和对象p的 -邻域时,才满足c图的条件,即如果
,那么对象o才包含在受影响集合中。
(a) (b) (c)
算法验证
数据集D中数据对象o的数据结构为:
Stuct NodeType
{
Datatype NodeID; //每个对象的唯一标示符
Int count_num; //统计邻域中的对象总数
Int sample_num; //取样邻域中的对象总数
Bool Lcif; //Lcif值,用来标识是否为孤立点
Datatype* cNode; //该链表储存统计邻域中所有对象的NodeID号
Datatype* sNode; //该链表储存取样邻域中所有对象的NddeID号
}
4.3 改进前后对比
原算法不能解决现实的网络环境和数据更新而导致的重复计算,动态环境下DLOCI算法的运行时间远远小于LOCI算法的运行时间,并且数量越大,效果越明显。
5.孤立点数据挖掘在入侵检测中的应用
基于以上的理论知识,论文在现有的开源入侵检测系统——Snort的基础上,开发实现了一个通用的实验平台,测试孤立点挖掘算法应用于入侵检测系统的效果。
5.1 系统总体结构
图5.1 系统总体流程图
Snort网络入侵检测系统能够跨系统平台操作,自带轻量级的入侵检测工具可以用于检测小型的TCP/IP网络,在进行网络监视时能够把网络数据和规则进行模式匹配,从而检测出可能的入侵企图,并且管理员能够利用它在短时间内通过修改配置进行实时的安全响应。
从入侵检测分类上来看,Snort应该算是典型的基于已知入侵规则的误用入侵软件。具体实现上,仅仅是根据规则库的定义通过在单个数据包中搜索入侵特征字符串来检测入侵行为,这种技术简单,容易实现,检测能力全面,准确率高。孤立点技术可以识别出具有某类入侵特征的变种入侵和未知入侵行为,但是它效率相对低,误报率高。由上述分析可知孤立点挖掘技术和模式匹配技术很多方面上可以互补。Snort使用一种易于扩展的模块化体系结构,开发人员可以加入自己编写的模块来扩展Snort的功能。于是将孤立点挖掘算法引用到Snort,融合两种不同技术,功能互补,使其成为技能进行误用检测又能进行异常检测的无监督自适应入侵检测系统,如上图所示。 孤立点挖掘技术在入侵检测系统中的应用(5):http://www.youerw.com/jisuanji/lunwen_533.html