[反垃圾邮件技术及贝叶斯算法的研究] 贝叶斯算法
发布时间:2020-02-16 来源: 短文摘抄 点击:
摘要:垃圾邮件给互联网以及广大的使用者带来了很大的影响,这种影响不仅仅是人们需要花费时间来处理垃圾邮件、占用系统资源等,同时也带来了很多的安全问题。过滤器技术是目前最为广泛使用的反垃圾邮件技术,反垃圾邮件方案所采用的是多种多类技术的综合体。
关键词:垃圾邮件;安全;过滤器技术;贝叶斯算法
中图分类号:TP393.098 文献标识码:A
1 引言
电子邮件是最常用的网络应用之一,已经成为网络交流沟通的重要途径。但是,垃圾邮件(spam)烦恼着大多数人,垃圾邮件随着互联网的不断发展而大量增长,并且成了计算机病毒新的、快速的传播途径。
垃圾邮件给互联网以及广大的使用者带来了很大的影响,这种影响不仅仅是人们需要花费时间来处理垃圾邮件、占用系统资源等,同时也带来了很多的安全问题。
垃圾邮件占用了大量网络资源,这是显而易见的。一些邮件服务器因为安全性差,被作为垃圾邮件转发站为被警告、封IP等事件时有发生,大量消耗的网络资源使得正常的业务运作变得缓慢。随着国际上反垃圾邮件的发展,组织间黑名单共享,使得无辜服务器被更大范围屏蔽,这无疑会给正常用户的使用造成严重问题。
越来越具有欺骗性的病毒邮件,让很多企业深受其害,很多安全事件都是因为邮件产生的,可能是病毒、木马或者其他恶意程序。对于普通使用者来说,的确很难作出正确的判断,但是造成的损失却是很直接的。
2 反垃圾邮件技术及贝叶斯算法
当前的反垃圾邮件技术可以分为4大类[1]:过滤器(Filter)、反向查询(Reverse lookup)、挑战(challenges)和密码术(cryptography),这些解决办法都可以减少垃圾邮件问题,但是都有它们的局限性。下面主要谈谈过滤技术中的一些方法及贝叶斯算法。
过滤(Filter)是一种相对来说最简单却很直接的处理垃圾邮件技术。这种技术主要用于接收系统来辨别和处理垃圾邮件。从应用情况来看,这种技术也是使用最广泛的,比如很多邮件服务器上的反垃圾邮件插件、反垃圾邮件网关、客户端上的反垃圾邮件功能等,都是采用的过滤技术。
2.1 关键词过滤
关键词过滤技术通常创建一些简单或复杂的与垃圾邮件关联的单词表来识别和处理垃圾邮件。比如某些关键词大量出现在垃圾邮件中,如一些病毒的邮件标题,比如:test。这种方式比较类似反病毒软件利用的病毒特征一样。可以说这是一种简单的内容过滤方式来处理垃圾邮件,它的基础是必须创建一个庞大的过滤关键词列表。
2.2 黑白名单
黑名单(Black List)和白名单(White List)。分别是已知的垃圾邮件发送者或可信任的发送者IP地址或者邮件地址。现在有很多组织都在做BL(block list),将那些经常发送垃圾邮件的IP地址(甚至IP地址范围)收集在一起,做成block list,比如spamhaus的SBL(Spamhaus Block List),一个BL,可以在很大范围内共享。许多ISP正在采用一些组织的BL来阻止接收垃圾邮件。白名单则与黑名单相反,对于那些信任的邮件地址或者IP就完全接受了。
目前很多邮件接收端都采用了黑白名单的方式来处理垃圾邮件,包括MUA和MTA,当然在MTA中使用得更广泛,这样可以有效地减少服务器的负担。
2.3 HASH技术
HASH技术是邮件系统通过创建HASH来描述邮件内容,比如将邮件的内容、发件人等作为参数,最后计算得出这个邮件的HASH来描述这个邮件。如果HASH相同,那么说明邮件内容、发件人等相同。这在一些ISP上在采用,如果出现重复的HASH值,那么就可以怀疑是大批量发送邮件了。
2.4 基于规则的过滤
这种过滤根据某些特征(比如单词、词组、位置、大小、附件等)来形成规则,通过这些规则来描述垃圾邮件,就好比IDS中描述一条入侵事件一样。要使得过滤器有效,就意味着管理人员要维护一个庞大的规则库。
2.5 智能和概率系统(贝叶斯算法)
在过滤器中,现在表现最好的应该是基于评分(score)的过滤器。评分系统过滤器是一种最基本的算法过滤器,也是贝叶斯算法的基本雏形。它的原理就是检查垃圾邮件中的词或字符等,将每个特征元素(最简单的元素就是单词,复杂点的元素就是短语)都给出一个分数(正分数),另一方面就是检查正常邮件的特征元素,用来降低得分的(负分数)。最后邮件整体就得到一个垃圾邮件总分,通过这个分数来判断是否spam。
贝叶斯理论现在在计算机行业中应用相当广泛,这是一种对事物的不确定性描述,比如google计算中就采用了贝叶斯理论。贝叶斯算法的过滤器就是计算邮件内容中成为垃圾邮件的概率,它要首先从许多垃圾邮件和正常邮件中进行学习,因此,效果将比普通的内容过滤器更优秀,错报就会更少。贝叶斯过滤器也是一种基于评分的过滤器。但不仅仅是一种简单的计算分数,而更从根本上来识别。它采用自动建立特征表的方式,原理上,首先分析大量的垃圾邮件和大量的正常邮件,算法分析邮件中多种特征出现概率。
贝叶斯算法计算特征的来源通常是[2]:a.邮件正文中的单词;b.邮件头(发送者、传递路径等);c.其他表现,比如HTML编码(如颜色等);d.词组、短语;e.meta信息,比如特殊短语出现位置等。
比如,正常邮件中经常出现单词AAA,但是基本不在垃圾邮件中出现,那么,AAA标示垃圾邮件的概率就接近0,反之则然。
贝叶斯算法的步骤为:
(1)收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集。
(2)提取特征来源中的独立字符串,例如AAA等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。
(3)每一个邮件集对应一个哈希表,hashtable?good对应非垃圾邮件集而hashtable?bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系。
(4)计算每个哈希表中TOKEN串出现的概率P=(某TOKEN串的字频)/(对应哈希表的长度)
(5)综合考虑hashtable?good和hashtable?bad,推断出当新来的邮件中出现某个TOKEN串时,该新邮件为垃圾邮件的概率。数学表达式[3]为:
A事件――邮件为垃圾邮件;
t1,t2 ……,tn 代表TOKEN串
则P(A|ti)表示在邮件中出现TOKEN串ti时,该邮件为垃圾邮件的概率。设
P1(ti)=ti在hashtable?good中的值
P2(ti)=ti在hashtable?bad中的值
则P(A|ti)=P2(ti)[(P1(ti)+P2(ti));
(6)建立新的哈希表hashtable?probability存储TOKEN串ti到P(A|ti)的映射
(7)根据建立的哈希表hashtable?probability可以估计一封新到的邮件为垃圾邮件的可能性。
当新到一封邮件时,按照步骤2,生成TOKEN串。查询hashtable?probability得到该TOKEN串的键值。假设由该邮件共得到N个TOKEN串,t1,t2…….tn,hashtable?probability中对应的值为P1,P2,……PN,P(A|t1,t2,t3……tn)表示在邮件中同时出现多个TOKEN串t1,t2……tn时,该邮件为垃圾邮件的概率。
由复合概率公式可得[3]:
P(A|t1,t2,t3……tn)=(P1*P2*……PN)/[P1*P2*……PN+(1-P1)*(1-P2)*……(1-PN)]
当P(A|t1,t2,t3……tn)超过预定阈值时,就可以判断邮件为垃圾邮件。
当新邮件到达的时候,就通过贝叶斯过滤器分析,通过使用各个特征来计算邮件是spam的概率。通过不断的分析,过滤器也不断地获得自更新。比如,通过各种特征判断一个包含单词AAA的邮件是spam,那么单词AAA成为垃圾邮件特征的概率就增加了。
3 Foxmail中过滤技术及贝叶斯算法的应用
3.1 Foxmail中反垃圾邮件技术
在识别垃圾邮件方面,Foxmail使用了“黑名单”、“白名单”、“规则过滤”、“学习法过滤(贝叶斯过滤)”等技术,综合应用这些技术,Foxmail就能够准确地识别垃圾邮件。
在Foxmail菜单中点击“工具”-“反垃圾邮件功能设置”,就可打开反垃圾邮件设置窗口,如图1所示。
收取邮件时,Foxmail首先使用“白名单”对邮件进行判断,如果发件人的E-mail地址包含在“白名单”中,则把该邮件判定为非垃圾邮件,否则,继续进行判断。
接着使用“黑名单”对邮件进行判断,如果发件人的E-mail地址或名字包含在黑名单中,则把该邮件判定为垃圾邮件并直接删除,否则,继续进行判断。
接着使用“规则过滤”对邮件进行判断。在Foxmail中定义了完善的垃圾邮件规则,每条规则对应一个分数,当邮件符合某一条规则,则给邮件增加相应的分数,当邮件得到的分数达到一定值时,就把该邮件判定为垃圾邮件,否则,继续进行判断。
接着使用“贝叶斯过滤”对邮件进行判断。贝叶斯过滤强大的反垃圾功能,让系统能够将您个人的正常邮件和垃圾邮件的特征词语采集出来,为反垃圾判断提供基准。
3.2 Foxmail中贝叶斯算法应用
例如:一封含有“法轮功”字样的垃圾邮件A和一封含有“法律”字样的非垃圾邮件B。
(1)根据邮件A生成hashtable?bad,该哈希表中的记录为:法―1次,轮―1次,功―1次。
计算得在本表中:“法”出现的概率为0.3;“轮”出现的概率为0.3;“功”出现的概率为0.3。
(2)根据邮件B生成hashtable?good,该哈希表中的记录为:法―1次,律―1次。
计算得在本表中:“法”出现的概率为0.5;“律”出现的概率为0.5。
(3)综合考虑两个哈希表,共有四个TOKEN串:法轮功律。
当邮件中出现“法”时,该邮件为垃圾邮件的概率为:P=0.3/(0.3+0.5)=0.375;
出现“轮”时:P=0.3/(0.3+0)=1;
出现“功”时:P=0.3/(0.3+0)=1;
出现“律”时:P=0/(0+0.5)=0。
(4)由此可得第三个哈希表:hashtable?probability,该哈希表中的记录为:法―0.375,轮―1,功―1,律―0。
当新到一封含有“功律”的邮件时,我们可得到两个TOKEN串:功律。
查询哈希表hashtable?probability可得:P(垃圾邮件|功)=1,P(垃圾邮件|律)=0。
(5)计算该邮件为垃圾邮件的可能性:P=(0*1)/[0*1+(1-0)*(1-1)]=0。
由此可推出该邮件为非垃圾邮件。
4 总结
尽管过滤器技术存在局限,但是,这是目前最为广泛使用的反垃圾邮件技术。其实,现在很多反垃圾邮件方案所采用的都不会只是一种技术,而是多种多类技术的综合体。
反垃圾邮件从技术上来说,这跟反攻击一样,是一个正反双方的博弈过程,一种新的反垃圾邮件技术必然会出现一种对应得垃圾邮件技术,况且,任何一种技术,还没有办法去解决所有问题,技术的发展也将延续下去。
参考文献
[1]曹麒麟,张千里.垃圾邮件与反垃圾技术[M].北京:人民邮电出版社,2003.
[2]詹川.反垃圾邮件技术的研究[D].电子科技大学,2005.
[3]徐松浦.反垃圾邮件中贝叶斯方法的应用研究[D].成都理工大学,2005.
相关热词搜索:算法 反垃圾邮件 研究 反垃圾邮件技术及贝叶斯算法的研究 朴素贝叶斯+垃圾邮件分类 垃圾邮件分类 贝叶斯
热点文章阅读