垃圾邮件无处不在,堵塞了全球电子邮件用户的收件箱。它不仅令人烦恼,还侵蚀了信息技术进步带来的生产力提升。工作人员每天费力处理数小时的合法电子邮件,还必须应对删除大量非法电子邮件。自动垃圾邮件过滤器已显著减少了最终用户看到的垃圾邮件量,但所需的训练量与在没有过滤器帮助的情况下简单删除垃圾邮件所需的时间相当。
考虑到垃圾邮件本质上是由大量个人看到的单个不需要的消息组成,因此没有理由不能在个人社区中分配与自动垃圾邮件过滤器相关的训练负载。社区聚集在一起,共同将新消息分类为垃圾邮件或非垃圾邮件,然后允许将这些决策分发给社区。
社区的协作决策不仅降低了社区中个人的训练成本,还降低了准确性成本,或者与消息误分类相关的成本,无论是被分类为非垃圾邮件的垃圾邮件,还是反之亦然。如果社区能够通过正确训练垃圾邮件过滤器来降低误报率,那么合法消息的发送者因消息被误分类为垃圾邮件而产生的成本,以及想要阅读所述误分类消息的接收者产生的成本都将降低。
降低训练和准确性成本是创建协作垃圾邮件过滤架构的主要动机。这些系统允许用户提交垃圾邮件消息的指纹,这些指纹在获得用户社区批准后,将被放入已知垃圾邮件消息的目录中。
主要作者参与垃圾邮件工作始于 1996 年,当时垃圾邮件开始通过他的 300 波特调制解调器作为 Usenet 帖子的结果涓涓细流般涌入。当时,他正在研究匿名中继器1和洋葱路由2,并希望在更广泛的背景下考虑反垃圾邮件,包括发件人匿名且网络拓扑未知的消息传递系统。满足这些设计标准的基本思想是,允许垃圾邮件消息的前几个接收者通知其余接收者,以便他们可以在阅读之前过滤掉垃圾邮件。
该系统的第一个原型,名为 Vipul’s Razor,于 1998 年作为开源项目发布3。2001 年,随着重大更新 (Razor2),我们共同创立了一家名为 Cloudmark 的公司,致力于在专门的环境中开发该技术。今天,作为 Razor2 和 Cloudmark 所有产品基础的协作分类器被称为 CNC(Cloudmark 网络分类器),它是一种信誉指标分析器,通过对接收者社区中的历史共识和分歧进行建模来确保用户提交反馈的完整性。CNC 的目标是根据前几个报告确定报告(垃圾邮件/合法邮件)的处置,因此只有少数报告者需要为新的垃圾邮件攻击训练分类器,从而显著降低总体训练成本。
近年来垃圾邮件数量的惊人增长促进了反垃圾邮件领域的重大研究和开发。已经发现、评估和部署了许多新颖的方法。我们将简要讨论一些更流行的方法。
一种简单但流行的分类器,称为地址白名单,仅允许从收件人已知的人员处传递邮件。其前提是将垃圾邮件发送者排除在“允许的发件人”列表之外,从而将垃圾邮件拒之门外。此分类器易于实现,并且对于与定义明确且静态的 корреспонденты 集通信的收件人来说效果良好。然而,在一般情况下,其训练性能是次优的,在一般情况下,收件人必须不断训练他们自己的分类器版本以扩展其通信网络。现有实现的准确性成本也很高,因为基于地址的分类容易受到地址伪造的影响,并且定义明确的允许列表会妨碍首次联系通信。正如我们稍后将探讨的那样,通过发件人身份验证方案和基于信誉的训练,可以减轻地址白名单的许多缺点。
统计文本分类系统,例如 NB(朴素贝叶斯)分类器4,使用传入邮件的语义相似性与收件人先前通信的语料库作为分类的基础。NB 分类器将邮件内容标记化为单词和短语(或其他语言单位),并学习各种单词和短语在垃圾邮件和收件人提供的合法语料库中出现的概率。学习到的语言单位集及其相应的概率构成了假设,该假设用于对传入邮件进行分类。虽然收件人必须逐步训练统计文本分类器,但与传入邮件的频率相比,训练事件很少发生。大多数实现都带有一个内置的假设,该假设充当起点,这有助于抵消训练成本。一旦经过训练,统计文本分类器在识别合法通信方面非常准确,在识别垃圾邮件方面也相当不错。已知它们在单用户环境中表现最佳,在单用户环境中,训练语料库准确地反映了用户的偏好。统计文本分类的大多数实际部署都使用正交分类器进行增强,以获得可接受的垃圾邮件检测性能。
Cloudmark 网络分类器是一个基于社区的过滤器训练系统。它不依赖于任何一种语义分析方案,而是依赖于由社区训练的大量正交签名方案。CNC 由四个重要的架构组件组成:代理、提名服务器、目录服务器和一个称为 TeS(信任评估系统)的信誉系统。代理软件包套件由电子邮件收件人用于报告反馈的各种软件包组成,例如“消息是垃圾邮件”和“消息不是垃圾邮件”,发送到提名服务器。反馈采用从消息生成的少量指纹的形式,其大小约为 14 到 20 字节。对消息进行指纹识别而不是传输消息的全部内容可以保护电子邮件收件人的隐私,并显著降低与传输、存储和处理反馈相关的成本。我们将在后面的章节中讨论垃圾邮件指纹识别的一般问题。
收件人提交的反馈被传递到提名服务器,提名服务器收集所有被收件人提名为可能的新垃圾邮件指纹或误报的指纹。如果所有用户都是平等的,并且单个用户可以将指纹提名为垃圾邮件或非垃圾邮件,则签名将重新分发给社区。然而,CNC 要求提交的反馈得到社区中多个受信任成员的证实。确定社区对指纹有效性的信任的逻辑体现在 TeS 中。仅 TeS 的工作是选择哪些新报告有效或无效。
一旦 TeS 确定指纹是“垃圾邮件”,则该指纹将被添加到目录服务器。它是添加新垃圾邮件指纹过程中的最后一点,也是接收新消息的用户的第一个通信点。用户收到的所有消息都经过指纹识别,并且指纹会针对目录服务器进行查询。如果查询的指纹存在于目录服务器中,则代理会将消息过滤为垃圾邮件。如果指纹不在目录服务器中,并且收件人认为消息是垃圾邮件,则收件人将指纹提交给提名服务器,然后该过程再次开始。图 1 显示了流程图。
如前所述,CNC 依赖于指纹识别算法来识别社区分类为垃圾邮件的消息。CNC 采用的所有指纹识别算法都采用相同的通用形式:消息和 14 到 20 字节数字字段之间的多对一映射。良好的指纹识别算法会将许多相似的消息(即彼此的变异)映射到同一指纹,同时不会将任何其他消息映射到该指纹。
我们通过创建两个指标来形式化指纹识别算法的这两个属性:多重性和跨类冲突。前者描述了单个签名对单个垃圾邮件物种的突变进行分类的效果。后者衡量签名可能导致系统中误报的潜在速率。虽然指纹识别方案的创建是一个创造性的过程,但这些指标可以用作评估新签名方案有效性的通用框架。这些指标主要是内部开发的,因为关于基于签名的垃圾邮件过滤器的文献很少。
我们知道,垃圾邮件发送者会变异单个消息以逃避简单的签名方案。突变集定义为所有被认为源自单个源消息或共享共同消息祖先的消息。我们假设突变集不重叠。
对于所有实际目的而言,将垃圾邮件完美分类为突变类是一项不可能完成的任务。然而,为了评估新的指纹识别算法,我们可以通过手动分类语料库来获得合理的近似值。
在 Cloudmark,我们定义了三类指纹识别算法:唯一算法,它为每条唯一消息生成唯一的哈希值,无论任意两条消息之间可能存在多小的突变;理论上的 oracle 算法,其中单个突变类中的所有垃圾邮件消息都生成相同的指纹;以及目标算法,这是我们开发的指纹识别算法。理想情况下,目标算法将完全像 oracle 一样运行,并为同一突变类中的所有消息生成单个指纹。
在后端,两个因素驱动最终用户看到的准确性和误报率。我们知道,任何新的传入垃圾邮件都是以下三种情况之一:我们以前见过的东西、我们以前见过的旧垃圾邮件活动的突变或全新的活动。如果是我们以前见过的活动,则应该在目录服务器中。如果是新活动,社区将决定批量电子邮件是否为垃圾邮件,并且指纹最终将移动到目录服务器。
然而,旧活动的突变是我们应该能够改进的东西。为了对抗旧活动的突变溜过我们的系统到达用户,我们必须采用具有高多重性的指纹识别算法。例如,加密哈希算法不是合适的指纹,因为它对突变敏感,但在生成无意中覆盖合法消息的指纹方面会表现良好。
如果我们的代理收到大量没有任何突变的消息,则多重性数字看起来会人为地偏低。因此,在设计阶段,我们使用另一个指标,称为无偏多重性,来评估指纹识别算法。此指标量化了实验性指纹识别算法在每个突变类仅生成单个指标方面的接近程度。
具有高多重性的指纹能够覆盖来自单个垃圾邮件活动的相同垃圾邮件的多个突变。从社区的角度来看,高多重性指纹意味着,如果需要多个指纹,则由多个突变组成的单个垃圾邮件活动将被更早地消除。
有可能生成具有极高多重性的指纹,其中大量消息被同一指纹覆盖。然而,危险在于,高多重性指纹也可能覆盖非垃圾邮件的消息,或导致与合法类中包含的消息发生冲突(即误报)。由于 TeS 独立于通过质疑覆盖垃圾邮件和合法消息的指纹来防止误报,因此高跨类冲突率会使冲突的指纹在阻止垃圾邮件方面无效。
总之,完美的指纹识别算法将生成零跨类冲突(无误报),并且无偏多重性为 1(已识别垃圾邮件消息的所有变体)。我们采用六种不同的指纹识别算法,每种算法都有相互正交的运行方法。其他指纹识别算法的生成留给读者作为练习。
从用户的角度来看,最重要的指标是系统生成的准确性和误报率。我们将准确性定义为发送到用户邮箱的垃圾邮件消息中,在没有用户干预的情况下被正确分类为垃圾邮件的百分比。误报率是 fe(我们的指纹识别算法)生成的指纹已提升到目录服务器的非垃圾邮件消息的数量。
目前正在进行几项旨在计算发件人而非电子邮件信誉的计划。SPF(发件人策略框架)5 和 DKIM(域名密钥识别邮件)6 都尝试通过发件人用于发送邮件的电子邮件服务器集来识别发件人。SPF 是两者中部署更广泛的一种,但 DKIM 正在 gaining ground。SPF 方案允许发件人通过 DNS 记录发布他们用于发送邮件的服务器列表。例如,examplesender.com 可以发布它从 mx1.examplesender.com 或 mx2.examplesender.com 发送邮件。然后,在接受邮件之前,收件人邮件服务器可以确保声称是 examplesender.com 的发件人实际上来自 examplesender.com DNS 记录中的邮件服务器之一。
与此同时,DKIM 使用非对称密钥对所有传出消息进行签名,其公钥副本通过发件人的 DNS 发布。SPF 和 DKIM 本质上使得伪造发件人的身份非常困难,从而使基于发件人信息的垃圾邮件过滤更可行。
一旦通过 SPF 或 DKIM 建立发件人的身份,就可以使用信誉系统来衡量发件人随时间的“良好程度”。正在进行许多发件人信誉项目7,旨在跟踪和计算发件人信誉,并使用它来过滤来自不良发件人的邮件。发件人信誉还将支持更健壮的地址白名单分类器版本,如前所述。
此类分类器的准确性如何?虽然我们认为发件人身份验证是对电子邮件的有用且健康的增强,但我们对发件人身份验证在反垃圾邮件环境中的有用性的看法与行业普遍的乐观情绪不同。发件人身份验证方案的问题在于,它们不识别单个发件人,它们仅将身份与主机背后的一组发件人关联。更准确地说,发件人身份验证方案识别发件人用于发送电子邮件的软件和网络基础设施。这存在两个问题:发件人的信誉受到与发件人共享网络资源的所有发件人的行为的影响;发件人的信誉受到隐藏在发件人网络上通过电子邮件发送垃圾邮件或恶意代码的恶意代码的影响。第一个是粒度问题,第二个是冒充问题。
我们认为,主机级发件人身份验证和信誉将擅长识别完美的发件人(或发件人集合),例如能够执行认真发件人策略并保护其网络免受僵尸程序侵害的小型组织和网络钓鱼受害机构。发件人身份验证还将有效地识别绝对不良的发件人,即专门用于发送垃圾邮件的网络。然而,背后有大量用户的网络以及安全将受到喷射垃圾邮件的僵尸程序破坏的网络最终将声名狼藉。
如果我们设计一种仅使用经过身份验证的发件人主机作为指纹的指纹识别算法,则该算法将具有高多重性和高跨类冲突率。如前所述,高跨类冲突率会导致分类器无法使用有争议的指纹(在本例中为发件人主机)来做出过滤决策。因此,基于发件人主机的分类器将不得不依赖带外方法来对大量电子邮件进行分类。
DKIM 确实允许对单个发件人进行弱身份验证。单个发件人身份验证的可靠性是域验证域内发件人的能力的函数。虽然通过 SMTP-AUTH 等方法对发件人进行内部身份验证在今天尚未广泛部署,但这是一个非常容易解决的方案。
将身份验证以及最终的信誉推送到单个发件人将缓解粒度问题,并将使分类器更好。通过对僵尸程序活动与合法用户的活动进行区分的发件人模式进行建模,也可能解决冒充问题。
我们描述的协作过滤系统不需要为全球邮件发件人池建立信任。我们描述的系统需要建立一种较弱形式的信任,即电子邮件收件人将正确或错误地分类垃圾邮件,而不管他们是在全球电子邮件用户中数量相对较少的用户池中的哪些用户。
我们描述了 CNC 的架构和操作,并说明了作为分类器基础的信誉系统的涌现属性。我们还提出了一个用于评估垃圾邮件指纹识别算法有效性的框架。最后,我们将 CNC 方法与其他流行的垃圾邮件分类方法进行了对比。描述已得到简化,以突出中心主题。我们希望我们已经成功地传达了基于信誉的方法在对抗垃圾邮件斗争中的重要性。问
VIPUL VED PRAKASH 是反垃圾邮件技术公司 Cloudmark 的创始人兼首席科学家。他最出名的是创建了 Vipul’s Razor 和 Cloudmark 网络分类器。他是一位多产的开源开发人员,并为 Perl 编程语言编写了许多用于网络、密码学和对象技术的扩展。他是行业会议和学术活动中关于计算和垃圾邮件问题常客演讲者。2003 年,麻省理工学院的《技术评论》杂志将他评为世界 Top 100 青年创新者之一。
ADAM O’DONNELL 是 Cloudmark 的高级研究科学家。他最近完成了在德雷塞尔大学电气和计算机工程系的 NSF 研究生研究员博士学位。他是 Mike Schiffman 的《构建开源网络安全工具》(2002 年,Wiley)的技术编辑和贡献者,《黑客挑战》(2001 年,McGraw-Hill)的撰稿人,以及《黑客挑战 2》(2002 年,McGraw-Hill)的合著者。
最初发表于 Queue vol. 3, no. 9—
在 数字图书馆 中评论本文
Eric Allman - 电子邮件身份验证:什么、为什么、如何?
互联网电子邮件是在一个与我们今天生活的世界不同的世界中构思出来的。那是一个小而紧密的社区,我们真的不必太担心坏人。通常,如果有人做错了事,可以通过社会手段来解决问题;“排斥”在小社区中非常有效。也许我们应该弄清楚当 Usenet 开始变坏时会发生什么。Usenet 基于一个名为 UUCP 的廉价网络,该网络非常容易加入,因此它让我们体验到了当社区变得更大、更分散且更难管理时会发生什么。
John Stone, Sarah Merrion - 即时消息还是即时头痛?
这是一个现实。您的环境中有 IM(即时消息)客户端。您已经认识到它正在吞噬越来越多的网络带宽,并且随着 Microsoft 将 IM 功能构建到其 XP 操作系统和应用程序中,您知道这种情况只会变得更糟。管理层也对通过这种媒介进行的个人对话造成的用户生产力损失表示担忧。您已经尝试阻止这些对话渠道,但这是一场持续的战斗。
Joe Hildebrand - 九个 IM 帐户和计数
即时消息已变得几乎与电子邮件一样普及,在某些情况下,其受欢迎程度远远超过电子邮件。但它已经远远超出了青少年的封闭世界,进入了商业领域,在那里它正在成为一种有用的沟通工具。与电子邮件不同的是,问题在于 IM 没有通用标准,因此用户感到有必要维护多个帐户,例如 AOL、Jabber、Yahoo 和 MSN。
Frank Jania - 广播消息:向大众发送消息
我们可以通过 Web 搜索即时访问拍字节的存储数据。在消息传递方面,我们拥有前所未有的通信工具数量,这些工具提供与人的同步和异步访问。电子邮件、留言板、新闻组、IRC(Internet 中继聊天)和 IM(即时消息)只是几个例子。这些工具都特别重要,因为它们已成为必不可少的生产力权利。它们导致了我们沟通方式的根本转变。许多读者可以证明,当邮件服务器宕机或无法访问 IM 时,会感到脱节。