即使在最好的时期,互联网也是一个危险的地方。有时,Internet的架构师找到了减轻威胁的方法,有时却失败了。但是,当一家大型的互联网公司找到一种解决方案时,情况总是在不断重复,这实际上使几乎每个人的情况都变得更糟。今天,我想谈一谈这种情况,以及像Google这样的大公司如何找到一种解决方法。
这篇文章介绍了域密钥标识邮件(DKIM),这是一种无害的小型反垃圾邮件协议,以某种方式变成了怪物。我的要求很简单,可以总结如下:
亲爱的Google:请定期执行和发布DKIM私钥。这将使整个Internet更加安全,因为犯罪分子将失去强烈的动机来窃取和泄漏电子邮件。该修复程序几乎不会花费您任何费用,并且会将最强大的工具从盗贼手中夺走。
这是简短的版本。下面提供了更详细的信息。
这是什么DKIM,它如何保护我的电子邮件?
电子邮件是在Internet仍称为ARPANET的时代创建的。这些日子比以前安静得多,那时现代安全措施以及说实话,互联网将需要安全的观念仍然是遥远的科幻未来。
第一个电子邮件协议(例如SMTP)是在信任系统的基础上工作的。电子邮件可能直接从发件人的邮件服务器发送到您的邮件服务器,或通过中介机构传输。即使如此,因为它可能会,如果该信指出,它从你的朋友爱丽丝来了,那么您认为它确实是来自Alice。为什么有人会撒谎呢?
电子邮件的广泛采用表明,这种态度严重失败了。在短短的几年中,网友们发现,有很多人愿意为自己的身份撒谎。他们中的大多数是垃圾邮件发送者,他们对SMTP允许他们模拟几乎任何发件人感到很高兴-您的朋友爱丽丝,您的老板,税务局,友好的尼日利亚王子。没有可靠的机制来阻止发送此类垃圾邮件,事实证明电子邮件非常容易受到欺骗。
对于电子邮件提供商来说,他们很快意识到没有发件人身份验证的电子邮件本质上是无法使用的。要正确过滤电子邮件,他们需要至少检查电子邮件来自哪个服务器。此属性具有技术名称,称为源授权。
与基本Internet协议的几乎所有其他修复方法一样,对源进行授权的问题的解决方案类似于使用胶带进行修复。已要求邮件服务提供商插入一个(可选的)新的密码扩展名,该扩展名为Domain Keys Identified Mail或DKIM。 DKIM将数字签名嵌入到邮件服务器发送的每封电子邮件中。当收件人的邮件服务器接受DKIM签名的信件,说明该信件例如来自Google时,它首先使用域名系统(DNS)查找Google的公钥。接收者现在可以验证签名,以确保消息是真实的且未修改,因为签名与内容和大多数标头相关联。然后,可以将这些知识用作过滤垃圾邮件的输入。 (这种保证是由称为ARC的类似协议提供的。)
当然,这种解决方案不是理想的。由于DKIM是可选的,因此恶意中间人可以从信件中剥离DKIM签名,以使收件人相信它从未被DKIM签名。称为DMARC的类似协议使用DNS允许邮件发件人传达其首选项,这迫使验证其电子邮件的签名。本质上,将这两个协议一起使用应该完全消除来自Internet的欺骗。
我今天收到的一封自动电子邮件的DKIM签名示例。
DKIM / ARC / DMARC有什么问题,什么是“挑战”?
作为一种反垃圾邮件措施,DKIM,ARC和DMARC没有特别的问题。棘手的部分是DKIM签名具有意想不到的副作用,该副作用比原始的垃圾邮件过滤任务还要扩展。简而言之:
DKIM为电子邮件的真实性提供了终身保证,任何人都可以使用它来对已窃取的电子邮件进行加密身份验证,甚至在发送后数年也是如此。
此新的非撤消功能最初不打算用作DKIM目标。设计师没有为此计划,没有人讨论这是否是一个好主意,大多数人对此感到惊讶。更糟糕的是,此意外的功能产生了非常严重的后果:它使我们更容易受到勒索和勒索。
要了解问题所在,值得考虑DKIM的目标。
DKIM的主要目的是防止垃圾邮件发送者在传输过程中伪造信件。这意味着,即使电子邮件一路上经过许多不受信任的服务器,收件人服务器实际上也应该能够验证该电子邮件是从声明的源电子邮件服务器发送的。
但是,邮件传输完成后,DKIM目标就完成了。也就是说,对真实性的保证只能维持很短的时间。由于通常只需要几分钟即可收到信件(在极少数情况下为数小时),因此不应该保证真实性。持续数年,并且这些签名不应暴露给用户。但是,这是如何发生的。
直到最近,还没有人考虑过。实际上,早期的DKIM配置听起来像是个恶作剧:邮件服务提供商选择了DKIM签名密钥,对于有动机的攻击者而言,该密钥很容易被破解。 2012年,安全研究员Zachary Harris发现Google和许多其他公司正在使用512位RSA签署DKIM。他表明,租用的云设备上的此类密钥可以在几个小时内被破解,然后被用来伪造拉里和谢尔盖的来信。
谷歌和其他电子邮件提供商对这种“拉里和谢尔盖”尴尬的反应并不难预测。他们没有仔细考虑其含义,便迅速加强了密钥,将其升级为1024位或2048位RSA。这样可以防止篡改,但是无意中将无害的反垃圾邮件协议变成了可以用来验证任何电子邮件转储的有效期的加密真实性戳记,无论它最终如何落入验证者手中。
您太疯狂了,没有人使用DKIM来验证电子邮件。
但是,DKIM认证标记已被媒体广泛使用,主要是在黑客入侵政客的电子邮件中。这是真实,重要和有意义的。
最著名的例子同时引起了严重的争议:2016年,Wikileaks发布了一系列从约翰·波德斯特(John Podest)的Google帐户中窃取的信件。由于这些信件的来源很模糊,因此WikiLeaks面临着验证这些消息的真实性的艰巨任务。 DKIM已成为一种出色的解决方案:在Wikileaks页面上公开发布的每封信都会公开表明所附DKIM签名的确认状态。该网站还为记者提供了一个有用的资源页面,说明DKIM如何证明信件的真实性。
但是,DKIM的故事并没有以Podestà的来信结尾。 2017年,ProPublica使用DKIM来验证信件的真实性据称特朗普总统的私人律师,马克Kasovitz送到评论家。在2018年,美联社再次使用它来对泄露的电子邮件进行身份验证,该电子邮件将俄罗斯律师与小唐纳德·特朗普(Donald Trump Jr.今年又再次发生,当年所谓的“拜登猎人的笔记本电脑”的接收者向罗布·格雷厄姆(Rob Graham)递交了一封2015年的信,以进行DKIM验证,以克服记者对其消息来源的怀疑。
有人可能会说DKIM验证并不重要,并且您只能根据其内容相信或不相信泄漏的信件。但是,许多新闻机构选择依赖DKIM的事实清楚地表明了这一假设是多么的错误。包括Wikileaks在内的新闻组织暗中承认,有争议的接收电子邮件来源会引起怀疑,这种怀疑可能如此强烈,以至于不可能在全国性新闻组织中发表令人信服的出版物。 DKIM允许您解决此问题并消除这种干扰。
美联社甚至发布了DKIM验证工具。
简而言之,反垃圾邮件协议最初旨在提供在邮件服务器之间移动的信件的短期识别,但其目的已经改变(未经商业邮件用户的丝毫讨论或同意),已成为一种工具,可以对每个传入或传出的信件提供不可否认的密码认证。对于记者,黑客和敲诈者来说,这是一个了不起的资源。
但是他对你没有任何好处。
你能为这个做什么?
DKIM从未打算用于长期电子邮件身份验证。它提供的安全性保证很重要,但从邮件服务器发送信件起仅应持续几个小时(可能几天)。仍然可以使用DKIM来证明早在2015年写出的被盗电子邮件的真实性,实际上是一个失败:电子邮件提供商不得不用头脑思考的误用和错误配置的结果。
幸运的是,有一个简单的解决方案。
DKIM允许供应商定期“旋转”或替换用于签名外发电子邮件的密钥。旋转的频率受到缓存的限制DNS基础结构,但是这些限制不是很严格。即使是像Google这样的大型供应商,也可以至少每隔几周轻松更改签名密钥,而不会影响邮件的传输。无论如何,这样更改密钥是一种好习惯,并且是解决方案的一部分。
当然,仅更改DKIM密钥对就不会解决任何问题:互联网上狡猾的人们一直在归档公共DKIM密钥。实际上,这正是2020年从2015年致Google邮箱的一封信所证实的:这是谷歌在很长一段时间内用来签署DKIM电子邮件的密钥(从2012年到2016年使用了相同的密钥-认真地说,谷歌,真是一团糟!)不再使用,而是已缓存在Internet上的许多地方。
这个问题的解决方案仅需要一个小的附加元素:谷歌已经发布密钥对的子集与密钥旋转和退休后。公司必须在易于访问的公共场所发布此密钥,以便任何人都可以使用它来伪造来自任何Google用户的可疑旧电子邮件。 Google签名密钥的公开可用性将使任何新的电子邮件以密码形式泄漏。由于任何局外人都可以伪造DKIM签名,因此它们几乎不能用作真实性的证据。
(对于拥有自己的邮件服务器的用户,可以使用此出色的脚本自动完成此操作。)
Google可以通过发布其古老的2016年私钥来立即启动此过程。由于他们的保密性实际上除了第三方对电子邮件泄漏的确认之外,实际上没有任何安全目的,因此没有理由保留这些值的秘密。只是把它们布置好。
(偏执狂的读者可能还会考虑,有动机的攻击者可能已经从Google窃取了旧的DKIM私钥。... 最终,DKIM签名密钥不是Google生态系统的“皇家珠宝”,因此Google几乎不会竭尽全力来确保它们的安全。在这种情况下,由Google保密密钥只会造成某些行为者伪造字母而不受惩罚的情况。)
但是DKIM身份验证是一件好事!我们是否不希望能够检查来自政客的泄漏邮件?
现代DKIM实施会引起问题,因为它们会鼓励特定类型的犯罪:盗窃用于公开勒索和勒索的私人信件。在过去的几年中,事实证明,此功能主要是以许多人认为可以接受的方式使用的,要么是因为它适合其追随者的喜好,要么是因为“被抓”的政治家应得的。
但是,好人也会遇到坏事。如果您创建一种刺激犯罪的机制,那么迟早会对您实施犯罪。
像Google这样的电子邮件服务提供商已经做出决定(通常不询问客户),即任何从客户公司员工那里窃取客户电子邮件密码或网络钓鱼的人都可以提供不可否认的加密证据,以供所有人确认结果的真实性。犯罪。也许这样的证据对于罪犯的任务是不必要的。但这绝对有价值。消除这种可能性是最纯粹的祝福。
我不得不为此争论的事实使我非常难过。
时间戳,改进的密码学和其他形式上的异议
每次我提到发布旧密钥的想法时,都会收到很多人的很好的反对意见。但是他们认为比我们通常面临的威胁模型更严重。
最普遍的反对意见是,仅当发布私钥后收到签名的电子邮件时,发布私钥才有效。通过这种正确的逻辑,不可否认在私有DKIM密钥发布之前被盗和发布的任何邮件。例如,如果有人入侵您的帐户并立即开始实时发布您收到的电子邮件,那么他们的密码可验证性仍然是可能的。
有人甚至提出一个聪明的攻击中,收件人(或黑客谁持续访问您的电子邮件帐户)使用公共时间戳服务,如blockchain的可能性,安全地“戳”,他们用收到的时间收到任何电子邮件。这样,这样的收件人就可以在发布DKIM秘密密钥-Check and Checkmate之前证明他们已经签署了这封信。
从理论上讲,这是一个很好的技巧,但是就解决更强大的威胁模型而言,这与我们的主题无关。当今DKIM的最关键问题是DKIM签名位于您的存档邮箱中。这意味着,今天入侵我的Gmail帐户的黑客将能够在我发送/接收的电子邮件中展示DKIM签名。多年前。发布旧的私有DKIM将立即解决此问题。解决“实时黑客”这一理论问题的方法可以等待其时机。
我有时听到的另一个反对意见是,密码认证是一项有用的功能。在某些条件下,我同意这一点。 DKIM的问题在于,没有客户被询问是否默认在其商业邮件帐户中是否需要此功能。如果人们想用密码确认他们的字母,那么可以使用一组方便的工具来实现此目的。
此外,还有一个问题是,是否有可能借助新的密码学解决DKIM挑战的问题。作为密码学家,我对此非常热情。实际上,我的合著者Mike Specter和Sanu Park以及我最近写了一篇文章,介绍了如何长期解决DKIM问题。 (迈克为此写了一篇很棒的文章。)我不会声称我们的解决方案一定是最好的,但我希望它能激发人们进行更多的研究。
但是,有时最简单的方法是最好的解决方案。现在,作为最大的商业电子邮件提供商,谷歌可以通过做一个非常简单的举动就产生巨大的影响(并保护其客户免受将来的泄露)。对于我来说,为什么公司仍然没有做到这一点是一个谜。
广告
来自VDSina的虚拟服务器具有针对DDoS攻击的防护,可让您托管任何项目-一切将正常运行并具有较高的正常运行时间!您可以使用方便的配置器自行选择服务器参数。