随着互联网不断发展和普及,电子邮件成为人们生活中便捷的通信手段之一。然而,垃圾邮件的出现和蔓延已严重影响网络的正常通信,是网络安全研究领域需要解决的重要问题之一。《第十四次中国互联网络发展状况统计报告》显示,我国网民在2004年7月份每周收到13.8封电子邮件,其中正常电子邮件为4.6封,垃圾邮件数却达到9.2封。垃圾邮件数量多、传播快,以及它的强制性、内容的不健康和可能的欺骗行为、病毒特征等,一方面占用了大量的网络带宽、存储资源;另一方面严重损害了单位和个人的利益,造成巨大的人力、财力直接损失。据2003年统计,中国邮件服务器总计接收到的垃圾邮件为1500亿封,用户实际共计收到垃圾邮件470亿封,经济损失48亿。
反垃圾邮件技术可分为3大类:一、发送者认证如SPF, Domain-Keys, SenderID 和rDNS等;二、基于内容过滤技术,如基于规则过滤,基于贝叶斯过滤;三、 以及基于行为过滤技术如动态行为白名单等技术。无论采用什么技术,一个先决的条件就是需要一个有效的样本集。样本集可以用来做算法研究如学习机的训练和测试。此外,标准样本集还可以被用来做评估产品,比较不同方法,技术之间的性能。
国际上已经有一些英文的垃圾邮件样本集,如由希腊学者Androutsopoulos提供的PU系列和Ling-spam样本集。PU样本集只保留了邮件的标题和正文的纯文本内容。为了保护提供者的隐私,样本集中将邮件中的不同词汇用不同整数代替。Ling-Spam由提供者收到的垃圾邮件和来自于语言学家列表(Linguist list)的非垃圾邮件组成,因此Ling-Spam样本集的邮件内容没有象PU系列样本集一样加密。除此以外,SpamAssassin的开发组也提供垃圾邮件和正常邮件样本集,与Ling-Spam有些类似,其正常邮件来自公众论坛。
目前还没有一个公开、标准的中文垃圾邮件样本集。因此,CCERT小组以长期在反垃圾邮件领域的研究积累,推出一个公开的垃圾邮件和正常邮件样本集。生成一个样本集的难度在于垃圾邮件的定义还有很多争议,如样本集的时间是否过期、正常邮件难以收集等问题。本文将描述CCERT在生成和对维护中文邮件样本集的过程,样本集的格式,特性其应用举例。
垃圾邮件和正常邮件的收集
普通意义上的垃圾邮件指的是未经主动请求的大量的电子邮件, SPAM, UBE(Unsolicited Bulk Email), UCE (Unsolicited Commercial Email)。一般来说,收件人事先没有提出要求或者同意接收的广告、电子刊物、各种形式的宣传品等宣传性的电子邮件;收件人无法拒收的电子邮件;隐藏发件人身份、地址、标题等信息的电子邮件;含有虚假的信息源、发件人、路由等信息的电子邮件都被认为是垃圾邮件。我们收集垃圾邮件样本的原则是:
一、ccert.edu.cn 域中不存在用户所收到的邮件被视为要收集的垃圾邮件。
二、ccert.edu.cn 域中真实用户收到但接受者认为不是他(她)所希望收到的也被视为要收的集垃圾邮件。
另外,我们只收集简体中文的垃圾邮件,即主题或者内容中包含至少一个国标(Gb2312)的汉字。图1表示中文邮件样本集的生成和维护流程。
我们使用SPAMPOT,即垃圾邮件蜜罐技术来收集垃圾邮件。{SPAMPOT收录发送到xxx@ccert.edu.cn的所有邮件(xxx可为任何字符串)}。这样可以收到更多、更广泛的垃圾邮件。我们收集公开论坛所发表的最新帖子用来模仿正常邮件的主题和内容。这样可以避免公布正常邮件时涉及到个人隐私问题。
收集到的垃圾邮件和正常帖子存放在一个临时数据库中。我们采用人工判别方式,对临时数据库中的内容进行人工分类。来自SPAMPOT的邮件,如果被认为是中文垃圾邮件则存放到垃圾邮件数据库;如果被认为是正常邮件则把该邮件的信头信息存放到数据库,删除内容,确保不侵犯个人隐私问题。来自公开论坛的内容,如果符合正常邮件的要求则存放到正常邮件内容数据库。该内容将与以上正常邮件的信头一起构造一个正常邮件。由于垃圾邮件和正常邮件都是实时更新,因此我们的中文邮件数据库中能够体现出中文邮件最新的特性。CCERT中文垃圾邮件过滤规则集(Chinese_rules.cf) 就是由该中文邮件数据库生成的。
我们根据需求,从中文邮件数据库生成并发布一个中文垃圾和正常邮件样本集,并计划定期更新该样本集的版本。
样本集的描述
2005年8月公布的样本集包含从2005年6月1日至7月31日收到的垃圾邮件和正常邮件(http://www.ccert.edu.cn/spam/sa/datasets.htm)。该样本集包含两集合:“2005-Jun”和 “2005-Jul”,分别记录2005年6月和7月的中文邮件。每个集合中包含两个目录:spam和ham。分别存放垃圾邮件和正常邮件,其中每一封邮件(垃圾或正常)的原始信头和内容保存在一个文件,文件名为从1开始编号的数字。
样本集的大小如表1所示。我们提供的样本集大小远远大于现有的公开英文邮件样本集(Ling-Spam提供481垃圾邮件和2412正常邮件,PU提供481垃圾邮件和618正常邮件)。另外我们提供的垃圾邮件和正常邮件的比例也更切实际。
样本集只保存文本信息(包括原始信头),邮件的平均大小如表2所示。我们不删除重复的垃圾邮件,因为我们认为邮件的重复信息能体现出垃圾邮件的统计行为。另外,除了接受邮件地址被替换以外(隐蔽个人信息),我们保留邮件的原始信头,因此我们的样本集可以被用来研究邮件的统计行为。
为了评估每个样本被视为垃圾邮件的程度,我们利用SpamAssassin-3.0.4的缺省安装规则和CCERT中文垃圾邮件过滤规则(Chinese_rules.cf, 2005-Aug-14版) 来对各个邮件进行打分,分数越高表示样本的垃圾邮件特性就越大。邮件的平均分数如表3所示。样本集也提供每封邮件的参考分值。
垃圾邮件和正常邮件的分数的概率密度函数曲线如图2所示。从大趋势上看,正常邮件的分布有两个峰值,表示正常邮件集中在分值为0和分值为1到2期间。垃圾邮件的分布也出现两个峰,表示垃圾邮件集中在分值为30以上和分值为7到20期间。
根据图2的分布,我们发现如果检测阈值选为6左右能使错误率最小。实际上,我们更希望正常邮件的误判率越小越好。对于不同阈值,垃圾邮件的查全率和正常邮件的误判率(2005-Jun)如表4所示。当阈值设为9,正常邮件的误判率为0.003的同时,能检测出垃圾邮件比例为76.9%。
CCERT标准中文邮件样本集包含已标识类别的垃圾邮件和正常邮件,给研究反垃圾邮件的技术和算法提供一个公开、标准的训练和测试样本集。其中垃圾邮件由CCERT垃圾邮件蜜罐系统所捕获的,正常邮件来自公开的中文论坛。这两类邮件实时更新使得我们的样本集能够保证最新内容。本文还以一种常用的垃圾邮件分析方法:SpamAssassin + CCERT中文垃圾邮件过滤规则集来分析邮件样本集的特性,给将来的算法研究做参考。样本集中保留原始信头和文本内容,因此不但可以用来研究邮件内容过滤技术,而且还可以研究垃圾邮件发送行为等技术。此外,该样本集还可以被用来重构邮件的发送和接收过程,这样可以实现垃圾邮件的实时测试模型。