互联网电子邮件的构想与我们今天所生活的世界截然不同。那是一个小型的、紧密联系的社区,我们不必过多担心不法之徒。通常,如果有人做错了事,可以通过社会手段来解决问题;在小型社区中,“排斥”非常有效。
也许我们应该弄清楚当 Usenet 开始变糟时会发生什么。Usenet(又名 Netnews)基于一种廉价的网络 UUCP(古朴地代表 Unix 到 Unix 复制程序),它非常容易加入,因此它让我们尝到了当社区变得更大、更分散以及更难管理时会发生什么——即使是最糟糕的口水战在宏伟的计划中也显得相当无害,而 kill 文件真的就足够了,但有一种不祥的种子即将很快发芽。
尽管互联网在 1983 年上线,但真正的爆发发生在 1990 年代初期,当时互联网主机的数量从 1989 年的不到 10 万台增长到 1990 年代中期的约 500 万台,1 到 1998 年初升至近 4000 万台。那一年,Hotmail(于 1996 年年中推出)以据报道 4 亿美元的价格出售给了微软,2 拥有约 3000 万用户。3 巧合的是,最新的调查显示,截至 2006 年初,互联网主机数量约为 4 亿台,4 微软声称截至 2006 年 6 月 30 日,Hotmail 帐户数量为 2.61 亿个。5 很多人发现了互联网,包括很多消费者。当然,企业紧随消费者之后,以至于今天 URL 无处不在,从公共汽车侧面到水瓶到牙膏管。企业称消费者为“客户”,他们通常试图从他们那里榨取金钱,这使得金钱进入了视野。而金钱吸引了不法之徒:从小型骗子到有组织的犯罪成员,应有尽有。
今天互联网上实际上有两种主要的通信技术:Web(一种拉取技术)和电子邮件(一种推送技术)。当然,还有许多其他技术,例如发布/订阅服务、IM、VoIP 等,但今天这两种技术仍然是技术的鼻祖。理论上,拉取技术应该更安全,因为用户必须不遗余力地访问该站点,但实际上这只不过是信息高速公路上的一个小小的减速带。然而,这不是本文的主题。
电子邮件从一开始就存在一个根本缺陷:缺乏身份验证。这意味着理论上,互联网上的任何人都可以向其他人发送电子邮件,同时声称是第三人。造成这种情况的原因纯粹是历史性的:电子邮件是最早的网络协议之一——事实上,为互联网发布的最初三个应用层协议是 telnet、FTP 和 SMTP6——甚至在 DNS 之前,并且在早期互联网中没有任何基础设施来支持分布式身份验证(telnet 和 FTP 使用本地身份验证)。再加上贪婪,这是一个危险的属性。例如,我无法证明声称来自我银行的消息实际上与我的银行有任何关系。这种情况越来越站不住脚,这导致了对身份验证技术的呼吁。
由于实际上有数亿个邮件客户端和服务器,因此不能轻易更新邮件协议。会破坏现有邮件客户端或服务器的更改将是灾难性的。这样的更改也需要很长时间。我们在 1993 年对 SMTP 进行了重大更改,以支持八位数据和加密等扩展(ESMTP,RFC 1425,后来更新),但十多年后仍有一些服务器尚未更新。我们应该预期身份验证也会经历类似的采用周期,并计划一个可以在很长一段时间内部署而不会破坏现有服务器并创建只能在彼此之间通信的“围墙花园”(即,具有身份验证的系统必须与旧系统互操作)的系统。
另一个问题是我们仍然没有全球公认的分布式身份验证基础设施。已经提出了许多提案,但没有一个变得普及。然而,有一些电子邮件身份验证的提案避免了这种需求。
身份验证提案有两种形式:基于路径的和基于签名的。这个主题有很多变体。
基于路径的算法查看邮件是从哪里发送的。例如,如果我收到来自声称是 mybank.com 的站点的电子邮件,我想看看发送邮件的客户端是否实际上归 MyBank 所有。我可以通过询问 mybank.com 哪些主机代表它发送邮件来确定这一点。由于我将访问真正的 mybank.com 以获取信息,因此我应该能够信任该数据。如果消息来自 MyBank 不发送邮件的地址,则该消息可能值得怀疑。
然而,由于今天的商业运作方式,这变得有点复杂。例如,MyBank 很可能雇用一家公司代表其发送电子邮件,使用 MyBank 电子邮件地址作为发件人。这在营销、人力资源(例如,工资单、福利)、一线支持、CRM 等方面很常见。这可以处理,尽管很痛苦。
真正的困难在于互联网电子邮件模型允许消息转发。例如,专业组织和校友组织通常具有电子邮件转发服务,可让您拥有一个即使在您更换工作或 ISP 时也不会更改的单个地址。我可能在 alumni.myuniversity.edu 上有一个转发地址,将消息发送到我的 ISP,允许我从一个提供商转移到另一个提供商,而无需更改我的电子邮件地址。因此,当我收到消息时,无论谁实际发送了消息,它都将看起来来自我的转发服务。在某些情况下,这些问题可以解决,但并非没有困难。
最著名的基于路径的身份验证示例是 SPF(发件人策略框架)和发件人 ID。
另一方面,基于签名的算法通过使用消息上的加密数字签名来确定消息是否合法。公钥加密允许签名者(通常是消息的发件人)发布其公钥,以便验证者(通常是接收者)可以验证消息是否已正确签名。例如,如果我收到一条声称由 MyBank 签名的消息,我可以向 mybank.com 索取其公钥,然后使用该密钥验证签名者确实是 MyBank 而不是其他人欺骗消息。
第三方(外包)问题可以通过多种方式处理;最简单的方法是给外包商一个密钥,他们可以使用该密钥代表声称的签名者进行签名。当然,这需要受到保护,以防止该密钥被用于签署声称来自 CEO 的消息,但这也很容易。转发消息没有问题,只要转发者在过程中不修改消息(这会破坏签名)。最大的问题可能是修改消息的邮件列表(例如,通过添加取消订阅信息);必须更新此类列表管理软件。
最著名的基于签名的算法示例是来自 Yahoo! 的 DomainKeys 和 DKIM(DomainKeys Identified Mail),这是一个从 DomainKeys 和来自 Cisco 的 IIM(Identified Internet Mail)开始的集体努力的结果。这些是类似的算法,但它们确实存在明显的差异。
当然,这些各种技术之间存在权衡。基于路径的系统对于发件人来说非常简单:他们只需在 DNS 中安装一条新记录。接收者必须安装一些新软件,因此对于他们来说有点困难。相比之下,基于签名的系统需要在两端都安装软件,但它们不会被消息转发所迷惑,并且对于发件人来说更灵活一些。例如,如果一个站点托管多个域(即,两个或多个域可以从同一个 IP 地址发送),那么在基于路径的系统中,任何这些域都可以伪装成任何其他域。在基于签名的系统中,每个域都可以有自己的密钥。
许多站点已经在使用这两种方案,并且所有选项都有开源实现。部署最广泛的是发件人端的发件人 ID/SPF,可能是因为创建记录的简单性(不幸的是,几乎不可能确定有多少站点正在检查此信息)。然而,基于签名的算法已经被许多大型企业(包括 ISP 和大型企业)使用,并且大多数反垃圾邮件技术提供商都支持它们。
为了获得最佳保护,您可能应该至少使用每种类型系统中的一种。发件人 ID 和 SPF 非常接近,您不必在它们之间进行选择。目前,DomainKeys 的实施比 DKIM 更广泛,但从长远来看,DKIM 可能更受欢迎,因为它具有额外的功能和安全性,并且有望成为官方互联网标准。DomainKeys 和 DKIM 可以共存,因此同时安装它们是完全可行的。
你们中的一些人可能想知道为什么我们不只是使用 S/MIME(安全 MIME)或 PGP(相当不错的隐私),这些现有的电子邮件安全技术提供加密和签名。简单的答案是它们为我们的需求做了错误的事情。这并不是说它们没有价值;它们有价值,并且应该更广泛地部署。然而,它们都是密钥管理问题的受害者,并且两者都旨在用于用户到用户而不是服务器到服务器的使用,这限制了它们在服务器级过滤中的使用。
密钥管理来自验证者确保它拥有签名者的正确公钥的方式。DKIM 等方案只是使用 DNS 向签名者索取密钥,这与他们在发送邮件时向域索取其 IP 地址的方式非常相似。然而,S/MIME 和 PGP 都使用另一种实体通过让第三方签署该密钥来为密钥担保的方案。当然,为了验证该签名,需要签署签名者的密钥。S/MIME 使用这些密钥签名将所有密钥排列成树(实际上是几棵树);这些树的根是众所周知的(并且受到严密保护的)实体,通常是公司,称为证书颁发机构。验证者(例如您的 Web 浏览器)内置了众所周知的证书颁发机构列表,这就是安全网站证明其身份的方式。PGP 使用“信任网络”:任何人都可以签署任何其他人的密钥,您可以通过该网络找到您信任的人。不需要分层结构,也不需要证书颁发机构。
要求每个想要发送邮件的人都获得签名密钥是困难的(而且可能很昂贵);DKIM 等系统允许任何人创建自己的密钥并发布它,而无需求助于第三方。
不使用 S/MIME 或 PGP 的另一个原因是它以一种可能对消息读者可见的方式更改了消息正文,特别是如果读者没有使用相同的身份验证方案。DKIM 的目标之一是未实施 DKIM 的接收者不会看到最终用户显示的任何变化。
一个经典的误解是,经过身份验证的消息是可以信任的。根据身份验证的性质,垃圾邮件发送者和网络钓鱼者也可以像合法发件人一样验证自己的身份。一旦你知道某人是谁,你还需要知道这是否是你想要接受邮件的人。这方面的主要方案是认证和信誉。
认证基于第三方审核发件人,以确保他们遵循良好做法(例如,仅使用双重选择加入列表并立即兑现所有取消订阅请求)。然后,认证机构公开宣布发件人是合法的。通常,认证机构随后将监控发件人的行为,以验证他们是否遵循批准的做法。认证机构本身必须受到高度重视,因此他们有强烈的动机确保他们认证的人遵守规则。
信誉通常还涉及第三方监控电子邮件发件人的行为。在大多数情况下,这种监控可以在没有网络上各种发件人的合作的情况下完成。例如,他们设置蜜罐以吸引垃圾邮件,监控滥用投诉并收集社区反馈。已知发送大量垃圾邮件的站点会获得较差的信誉,而发送大量电子邮件但投诉较少的站点会获得良好的信誉。然后,他们可以将此信息发布给接收者。大型站点,尤其是大型 ISP,可以在内部收集此信息并做出非常好的决策。较小的站点可能必须订阅汇总数据的服务。
还有更直接的方法可以使用身份验证数据。例如,按照定义,这些方案都没有指定最终用户将看到身份验证信息的方式。然而,如果我收到一条声称来自 MyBank 但实际上来自其他地方的消息,电子邮件提供商可能想要警告我。仅此一项就会给网络钓鱼者带来严重的心痛。用户可以拥有自己的个人允许列表,可能通过扫描他们的地址簿和监控他们与之通信的人员自动生成。
有效使用身份验证信息将是下一个重大挑战。它将影响电子邮件系统的多个层面:客户端、服务器和其他工具。关于这个主题的一些早期工作已经可用,未来还会有更多。
电子邮件身份验证肯定会到来,事实上,可以说已经到来。下一个重大步骤是弄清楚如何最好地使用该信息。身份验证还支持全新类型的反垃圾邮件和反网络钓鱼算法。还有很多东西需要学习。
http://antispam/yahoo.com/domainkeys
ERIC ALLMAN 是 Sendmail 的联合创始人兼首席科学家,Sendmail 是最早的基于开源的公司之一。他之前是加州大学伯克利分校 Mammoth 项目的首席程序员。这是他在伯克利的第二次任职,因为他是 INGRES 数据库管理项目的首席程序员。除了分配给他的任务外,他还参与了伯克利的早期 Unix 工作。他最早接触 Unix 是在第 4 版。多年来,他编写了许多实用程序,这些实用程序出现在 BSD 的各种版本中,包括 -me 宏、tset、trek、syslog、vacation,当然还有 sendmail。他在伯克利两次任职期间,在 Britton Lee(后来的 Sharebase)从事数据库用户和应用程序界面方面的工作,并在国际计算机科学研究所为用于基于神经网络的语音识别的环形阵列处理器项目做出贡献。他还与他人合着了《Unix Review》的“C Advisor”专栏多年。他是 Usenix 协会董事会成员。
最初发表于 Queue vol. 4, no. 9—
在 数字图书馆 中评论本文
Vipul Ved Prakash, Adam O'Donnell - 使用信誉系统对抗垃圾邮件
垃圾邮件无处不在,堵塞了全球电子邮件用户的收件箱。它不仅令人讨厌,而且还侵蚀了信息技术进步带来的生产力收益。每天浏览数小时合法电子邮件的员工还必须处理删除大量非法电子邮件的问题。自动垃圾邮件过滤器大大减少了最终用户看到的垃圾邮件数量,但所需的培训量与在没有过滤器帮助的情况下简单地删除垃圾邮件所需的时间相当。
John Stone, Sarah Merrion - 即时消息还是即时头痛?
这是一个现实。您的环境中有 IM(即时消息)客户端。您已经认识到它正在消耗越来越多的网络带宽,并且随着 Microsoft 将 IM 功能构建到其 XP 操作系统和应用程序中,您知道这种情况只会变得更糟。管理层也对通过这种媒介进行个人对话造成的用户生产力损失表示担忧。您已尝试阻止这些对话渠道,但这始终是一场持续的战斗。
Joe Hildebrand - 九个 IM 帐户还在增加
即时消息已变得几乎与电子邮件一样普及,在某些情况下,其受欢迎程度远远超过电子邮件。但它已经远远超出了青少年封闭的世界,进入了商业领域,在那里它正成为一种有用的沟通工具。与电子邮件不同,问题在于 IM 没有通用标准,因此用户感到不得不维护多个帐户,例如 AOL、Jabber、Yahoo 和 MSN。
Frank Jania - 广播消息:向大众发送消息
我们可以通过 Web 搜索即时访问拍字节的存储数据。关于消息传递,我们拥有前所未有的通信工具数量,这些工具提供与人的同步和异步访问。电子邮件、留言板、新闻组、IRC(互联网中继聊天)和 IM(即时消息)只是一些例子。这些工具都特别重要,因为它们已成为基本的生产力权利。它们引起了我们沟通方式的根本转变。许多读者可以证明,当邮件服务器宕机或无法访问 IM 时,他们会感到失联。