反垃圾邮件技术的解析
我们以一款垃圾邮件厂商博威特-梭子鱼反垃圾邮件防火墙所用的防护技术为代表,来分析一下反垃圾邮件防火墙使用了哪些技术。以下是这款反垃圾邮件防火墙使用的防护技术:
1 拒绝服务攻击和安全防护 2 IP阻挡清单 3 速率控制 4 双层病毒扫描 5 用户自定义规则 6 垃圾邮件指纹检查 7 邮件意图分析 8 贝叶斯智能分析 9 基于规则的评分系统 10 解压缩文件的病毒防护
由于速率控制、病毒扫描以及解压缩文件的病毒防护针对病毒的,属于反垃圾邮件的附属功能我们暂不讨论,值得一提的是防火墙的防止DDOS攻击和反垃圾邮件防火墙防止DOS攻击是不一样的。根据博威特技术工程师的介绍:反垃圾邮件防火墙的防止DOS攻击主要是防止往一个邮件地址在一个较短的时间内发送大量的垃圾邮件,从而形成Dos攻击。
而针对垃圾邮件的核心技术有贝叶斯智能分析、垃圾邮件指纹检查、基于规则的评分系统、用户自定义规则,其核心是贝叶斯智能分析、垃圾邮件指纹检查技术。下面我们来逐一分析反垃圾邮件过滤技术:
1 垃圾邮件指纹检查
谈到对垃圾邮件的指纹检查,很多人觉得有些神秘,其实所谓邮件的指纹,就是邮件内容中的一些字符串的组合,又称为快照。就是从类似、但不相同的信息,识别其中已经被确认为垃圾邮件的信息。举例来说:如果您经常受垃圾邮件此地困扰一定对下面的词汇不会陌生:"代理服务"、"招生"、"现金",是不是在你一看到他们就不免联想到垃圾邮件呢?
其实这就是垃圾邮件的指纹,和反病毒技术的特征码识别的思想是共通的。反垃圾邮件防火墙通过识别类似、但不相同的信息,找出其中已经被确认为垃圾邮件的信息,最后完成对垃圾邮件的识别。
当然指纹检查的准确性依赖于垃圾邮件的指纹库,反垃圾邮件防火墙先给邮件中出现的每一个字符赋予一个数值,值得一提的是这个数值的确定是按照特定垃圾的用词规律特点进行分类,再利用统计方法然后再给这封邮件计算出一个综合的数值。也可以根据是否与其他多次收到的邮件相似来判定(多次收到相似的邮件很可能就是垃圾邮件)。
2 贝叶斯智能分析
贝叶斯智能分析的说法在我看来有赶时髦的嫌疑,主要是受上学时人工智能课程的毒害,和对智能字眼满天飞的视觉疲劳,毕竟一个技术如果能和智能挂钩的话,多少显得高深了不少。事实上这个智能分析就是一个统计学定律的应用而已,当然客观的说这个统计学的应用确实让反垃圾邮件聪明了不少。好了闲话说多了浪费大家时间,我们今天不讲贝叶斯定律,直接开始介绍贝叶斯反垃圾邮件算法,通过算法我们可以看出这个智能分析其实是将IP阻挡名单、垃圾邮件指纹检查、统计规律结合起来实现反垃圾邮件的智能分析。
贝叶斯反垃圾邮件算法如下: 1) 收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集。 2) 提取邮件主题和邮件体中的独立字串例如 ABC32,¥234等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。 3) 每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系。 4) 计算每个哈希表中TOKEN串出现的概率P=(某TOKEN串的字频)/(对应哈希表的长度) 5) 综合考虑hashtable_good和hashtable_bad,推断出当新来的邮件中出现某个TOKEN串时,该新邮件为垃圾邮件的概率。数学表达式为: A事件----邮件为垃圾邮件; t1,t2 …….tn代表TOKEN串则P(A|ti)表示在邮件中出现TOKEN串ti时,该邮件为垃圾邮件的概率。设 P1(ti)=(ti在hashtable_good中的值) P2(ti)=(ti在hashtable_ bad中的值) 则 P(A|ti)= P1(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时,该邮件为垃圾邮件的概率。 由复合概率公式可得P(A|t1 ,t2, t3……tn)=(P1*P2*。。。。PN)/[P1*P2*。。。。。PN+(1-P1)*(1-P2)*。。。(1-PN)]当P(A|t1 ,t2, t3……tn)超过预定阈值时,就可以判断邮件为垃圾邮件。
贝叶斯过滤算法举例
例如:一封含有"法轮功"字样的垃圾邮件 A和 一封含有"法律"字样的非垃圾邮件B 根据邮件A生成hashtable_ bad,该哈希表中的记录为:
法:1次 轮:1次 功:1次 计算得在本表中: 法出现的概率为0.3 轮出现的概率为0.3 功出现的概率为0.3
根据邮件B生成hashtable_good,该哈希表中的记录为:
法:1 律:1 计算得在本表中: 法出现的概率为0.5 律出现的概率为0.5 综合考虑两个哈希表,共有四个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; 由此可得第三个哈希表:hashtable_probability 其数据为:
法:0.375 轮:1 功:1 律:0 当新到一封含有"功律"的邮件时,我们可得到两个TOKEN串,功 律查询哈希表hashtable_probability可得
P(垃圾邮件| 功)=1 P (垃圾邮件|律)=0 此时该邮件为垃圾邮件的可能性为:
P=(0*1)/[0*1+(1-0)*(1-1)]=0 由此可推出该邮件为非垃圾邮件
(注:贝叶斯算法和举例来自反垃圾邮件论坛)
(责任编辑:admin) |