几周前,消息服务 WhatsApp 就可能破坏其端到端加密 (E2EE) 软件的新立法起诉印度政府。除其他外,该立法要求社交媒体和消息传递公司必须具备“追踪”有害病毒内容来源的能力。由于多起导致野蛮暴徒袭击的错误信息内容案例,这种追踪能力一直是印度的一个主要问题。新立法的表面目标是让警方有可能追查这些内容的创作者或传播者。简而言之,当局想要的是一种方法来识别已发送给一大群人的一段内容(例如,视频或模因),然后将内容追溯到最初发送它的 WhatsApp 帐户。我并不打算非常重视这项政策是否是一个好主意或是否可行——只是表达了非常严重的怀疑,即这种方法会抓住一个非常聪明的罪犯。在这里,我只想谈谈对加密消息服务的技术影响,以及跟踪功能对像 WhatsApp 这样的端到端加密系统可能意味着什么。首先要记住的是,内容跟踪并不是消息传递系统的真正自然功能。也就是说,即使对于完全未加密的消息传递应用程序,跟踪内容也构成了挑战:服务提供商可以看到通过系统传输的所有数据。追溯内容原创者要求提供者必须能够识别在某个最终用户帐户接收的文件,然后通过转发它的每个用户帐户向后“追踪”内容。即使这种描述也没有完全尊重问题的难度:并非每个用户都按字面意思点击“前进”按钮来继续发送内容。许多人会保存并重新上传文件,这会破坏转发链,甚至可以生成略有不同的文件——这要归功于数字压缩的魔力。这些问题并非难以解决。在没有端到端加密的系统中,它们或许可以使用感知哈希函数来解决,该函数通过构建每个文件的“指纹”来识别相似的媒体文件,该指纹可以轻松地与其他文件进行比较,并且可以在重新编码后幸存下来或小修改。 (这与用于检测儿童性虐待图像的技术相同,我在这里写了一些内容。)重要的是,即使使用这项技术,内容跟踪的明显方法也要求提供者具有明文访问权(至少是哈希值)的)用户内容。事实证明,这对于像 WhatsApp 这样的加密通信系统来说是一个大问题,它使用端到端加密来保护内容的机密性,即使是在服务提供商的注视下也是如此。在 WhatsApp 中,所有消息(以及文件附件)从发件人到收件人都使用 WhatsApp 不知道的加密密钥进行加密。有一些工程警告,*跟踪这些系统中的内容非常困难。但困难不等于不可能。 WhatsApp 最近的一篇文章表明,在端到端加密系统中根本不可能安全地实施跟踪。虽然这种说法在直觉上似乎是正确的,但它也有点令人不满意。毕竟,“不可能”是一个强烈的词,它高度依赖于假设。不精确声明的问题在于它们会引发争论——事实上,WhatsApp 的声明已经被该领域的一些人提出异议。
在这篇文章中,我将考虑以下简单问题:端到端加密系统中的可追溯性实际上可能吗?如果是这样,隐私和安全的成本是多少?为了记录:我写这篇文章是为了回答我自己的问题,也为了回答其他人的问题,所以不要指望这篇文章简短或简单。我正在解决问题。关于内容追踪的争论最大的问题是,似乎没有人对端到端加密追踪方案应该做什么有一个非常严格的定义——或者更准确地说,它的限制是什么。要了解是否可以构建这些系统,我们首先需要仔细考虑它们应该做什么。从执法的角度来看,内容追踪是一个简单的功能。一段“病毒”内容(例如图像文件)已通过消息传递平台广泛传播,当局已认定该内容是有害的。由于内容广泛,我们可以假设警察已经在他们控制的帐户(例如,他们自己的帐户或合作用户的帐户)中收到了该文件的副本。当局希望联系服务提供商并询问他们对于内容的创作者和/或主要传播者。这给出了我们的第一个要求:可追溯性:给定设备/帐户接收到的一段“病毒”内容(加上设备上的任何加密密钥),跟踪方案应该能够可靠地将内容追溯到发起者(或至少,更早)帐户。从用户的角度来看,E2EE 系统应该维护用户通信的机密性。保密是一个广义的术语,可以包含很多含义。在这种情况下,它有两种相关的特定风格,名称是我现在刚刚编好的: 内容本身的机密性:这确保转发的文件只有会话的发送者和授权接收者知道。请注意,对于病毒式内容,此属性并不是非常重要。请记住:我们的假设是内容本身最终被广泛转发,直到(几乎)每个人都收到了一份副本。 “谁发送了什么”的机密性:虽然内容本身可能不再是秘密的,但给定用户传输一段内容的事实仍然非常敏感。如果我给你发送一个政治模因——也许是右边的那个,嘲笑瑞典国王——那么我可能不太关心模因本身的保密性。但我肯定想隐瞒我把它寄给你的事实,以避免亲君主制瑞典政府的报复。适当的端到端加密应该可以保护这种表达方式。
简而言之:可追溯系统并没有真正损害“内容”本身的机密性,因为病毒性模因本身通常不是一个大秘密。它所影响的是机密性的“谁发送了什么”方面。例如,对于专制的瑞典政府来说,得知有关瑞典国王的特定模因存在是一件相当无害的事情。他们知道我已经将其中的很多发送给特定的朋友组,这对他们来说是非常不同的。最后我还要澄清一件事,因为和同事的讨论让我意识到这并不明显。 E2E 系统中关于“谁发送了什么”的信息与元数据不同。我觉得不得不指出这一点很愚蠢,但元数据(关于我们无法轻易向提供商隐藏的数据的信息,例如您与之通信的联系人列表)是完全不同的事情。 WhatsApp 可能会不可避免地了解到我上个月给 500 人发了短信,因为他们发送了我的(加密)消息。他们仍然不应该知道我的任何信息都在取笑瑞典君主制。这实际上取决于您所说的“可追溯性”和“破坏”的含义。虽然保密性和可追溯性似乎是冲突的,但重要的是要指出某些形式的跟踪可以以非强制性的方式实施,而这本质上不会违反保密性。例如,假设 Alice 发起了一个模因,这个模因随后通过以下转发路径传给了警官 Eve:如果 Bob、Charlie 和 Dave 愿意与警方合作,那么 Eve 就可以使用皮鞋侦探工作将内容向后追踪到 Alice。毕竟:每个参与者 (1) 都是数据的授权接收者,并且 (2) 知道他们从谁那里收到了内容。如果他们执行这种合作追踪,没有人会“破坏”端到端:只是人们共享他们已经有权拥有的信息。现在是说一件愚蠢而明显的事情的时候了:印度提出的不是合作追踪。让我们明确一点:如果侦探工作和合作足以追踪有害内容的发起者,警察就不会要求制定新的加密法,WhatsApp 也不会起诉印度政府。
通过这些法律,警方默认承认自愿内容追踪不足以满足他们的调查需求。这意味着,当警察试图追踪如上所示的链条时,他们遇到的人要么 (1) 不愿意及时分享这些信息,要么 (2) 根本就没有这些信息— 可能是因为他们删除了消息或丢失了手机。让我们来描绘一下这种情况。下面,每个节点代表一个 WhatsApp 帐户,红色节点是一些病毒内容的发起者,蓝色节点代表警察。绿色节点代表愿意与警方合作的用户,前提是他们联系上了。这里的灰色节点是不合作的用户——要么是因为他们没有保留信息,要么是因为他们不喜欢警察。上图中不合作节点的普遍性使得合作追踪几乎不可能找到发起者。很明显,像这样的现实世界情况将使自愿追踪很难实现。这给我们带来了迄今为止所有内容追踪提案的核心挑战:为了使追踪成为可能,追踪系统需要将每个 WhatsApp 用户变成一个合作的绿色圆圈——无论用户是否真的想与警方合作。此外,为了防止用户丢失手机和/或下线,系统将需要强制用户在收到内容后立即将必要的跟踪信息置于托管中,这样即使用户离开网络或丢失,这些信息仍然可用他们的电话。不仅如此,这些新“合作”用户中的每一个都将被迫向警方承认他们也转发了内容。不想告诉瑞典政府你取笑了他们敬爱的国王?那么您最好不要使用遵循这种强制可追溯性模式的系统。端到端追踪系统面临的主要问题有两个:(1) 接收者将被迫违反他们的意愿确切地透露多少信息,以及 (2) 谁将能够访问这些信息?我已经看到至少有两个建议为 E2EE 通信方案添加可追溯性,并且都采用了类似的方法。他们依赖于对最终用户的客户端软件进行更改,以确保每次将内容从一个用户发送到另一个用户时,跟踪信息都存储在提供商的“托管”中。
每次有人向另一个用户发送内容时,他们都会生成一些新的加密密钥 K。他们将使用此密钥来加密包含 (A) 内容(或其散列)和 (B) 发送者和接收者身份的记录.他们会将加密记录存储在 WhatsApp 的服务器上。关键是,他们不会将密钥 K 发送给 WhatsApp。当他们将消息转发给下一个收件人时,他们会将记录加密密钥 K 发送给该用户。当下一个用户将内容转发给另一个用户时,它会重复步骤 (1-4),并且还会发送以前用户生成的所有密钥。现在,如果警察在他们控制的电话上收到一些危险病毒内容的副本,他们将拥有一个加密密钥列表,这些密钥与该内容转发链中的每个人相对应。他们可以带着传票回到 WhatsApp,获取加密记录,然后使用密钥解密它们。这将向始发者显示整个转发路径。当然,随着每条转发的消息一起发送数千个密钥是一种拖累,因此可以使用一些效率优化来压缩这些信息。例如,每次用户转发消息时,他们都可以将前一个用户的密钥存储在他们与 WhatsApp 托管的加密记录中。这意味着如果警察得到一个密钥——对应于链中的最后一条记录——他们可以解密托管记录,然后他们将获得链中前一条记录的密钥。他们可以重复这个过程,直到整个转发链被“解压缩”。一个懒惰的图表(右)显示了这个过程是如何工作的。本质上,整个过程是一种密钥托管形式,WhatsApp 充当托管机构。警察(此图中的 Eve)可以传唤 WhatsApp 以将任何转发方链返回给发起者,前提是警察包含在合法转发路径的某处。
当然,这是对想法的一个非常简单的解释:对于更完整的(学术)提案,您可以查看 Tyagi、Miers 和 Ristenpart 的这篇论文。它不仅支持路径回溯,而且还可以让您找出消息转发给了谁!密码学稍微优化了一点,但安全保证大致相同。如果你同意警察可以确定转发一段病毒内容的每个人的身份,而不管他们是否不是该内容的发起者,那么我想,什么都没有。坦率地说,我对此并不特别满意。即使我愿意屈服于我们应该有办法追踪“内容发起者”的逻辑——政府为构建这样的系统提供的实际理由——我当然不想透露碰巧发生的每个随机用户帐户转发内容。这些信息似乎是压迫的秘诀。此外,无论系统是找到“内容原创者”还是“转发路径上的每个人”,我认为这些想法几乎都是大规模监视的同义词——当然,它们支持 WhatsApp 的技术主张,即“可追溯性”打破了端到端——结束加密。但我想更进一步,并指出这些想法有一个主要弱点,使整个方法感到困惑。我上面描述的方法依赖于一个关键假设:系统中的所有参与者都将诚实地行事——也就是说,每个人都将运行官方的 WhatsApp 客户端,该客户端将包含旨在在 WhatsApp 服务器上存储托管记录的逻辑。该系统中的任何人都不会尝试通过运行非官方客户端或通过入侵其客户端以禁用托管逻辑来绕过该系统。如果您愿意做出如此强烈的假设,为什么还要构建如此复杂的系统呢?为什么不修改您的 WhatsApp 客户端,为每个新的非转发媒体文件添加一个小“水印”,一个标识原始发件人帐户 ID 的水印? (如果您担心机密性,您可以使用 WhatsApp 持有的密钥对其进行加密。)毕竟:一旦您假设每个人都在运行一个诚实的客户端,您就可以假设内容创作者也会——可以”你呢?这种方法仍然会向警方透露很多信息,但不会透露每个转发内容的随机人员的身份。
我确信对此有一些方便的答案,但我怀疑一旦您尝试深入探讨这个问题,答案就会对您非常简单的安全假设进行哈希处理。这就是为什么生活是复杂的。给学术作者的最后一句话:不要帮助坏人建立不受限制的监视系统,然后在以后的论文中“防止滥用”,好吗?如果你读到这里来回答可追溯性如何工作以及它是否破坏 E2E 加密的(稀有)问题,那么你可以停在这里。这篇文章的其余部分与此无关。只是我疏远了我的一大群学术同行。围绕密钥托管和执法监督的辩论是一场非常艰难的辩论。对于这项工作是“帮助好人”还是“帮助坏人”,人们有很多意见,即是帮助警察寻找罪犯,还是为专制主义和间谍活动建立基础设施。我不知道这个问题的答案。我想答案在某种程度上取决于实施它们的政府的诚信度。我有意见,但我不希望我所有的同事都分享它们。当您提议(或审查提议的论文)一个新的“合法访问”系统时,它是在解决困难的问题,还是搁浅在困难的问题上,只解决容易的问题?因为归根结底,构建违反端到端加密机密性的系统从科学的角度来看是一个相对容易的问题。我们从加密的早期就知道如何构建密钥托管系统。科学地构建这些系统并不有趣。当然,从工程角度来看,它对想要部署此类系统的各方很有用。当受人尊敬的学者撰写此类论文时,对这些政党也具有政治意义。科学上有趣的是,我们是否可以建立真正防止滥用技术的系统,无论是滥用技术的政府还是窃取密钥的犯罪分子。我们现在真的不知道要做得很好。这是设计执法访问系统的实际科学问题——而不是“访问”部分,它相对容易,主要由工程组成。简而言之,科学问题是找出如何防止错误类型的访问。
当我阅读一篇构建复杂监控系统的论文时,我希望它能够以一种有意义的方式解决这些滥用问题。如果这篇论文把重要的问题推到后续工作中——如果我得到的是像右边那样的一段——我的想法是你没有解决正确的问题。你只是在为一个我不希望我的孩子生活的世界奠定工程基础。我会礼貌地要求你们停止这样做。