我们很高兴与大家分享 Messenger 对话安全的又一项进步:为端到端加密聊天启动密钥透明度验证。 这项新功能提供了一层额外的保证,确保只有您和您的通信对象能够查看或收听所发送的内容,其他任何人,甚至包括 Meta,都无法做到。
Messenger 的端到端加密已经确保您的私信和通话内容从离开您的设备到抵达接收者设备的那一刻都受到保护。作为我们端到端加密聊天平台的一部分,我们认为,同样重要的是任何人都能够验证用于加密每条消息的公钥确实属于预期的接收者,并且未被篡改。 此次发布建立在业界同行分享的宝贵工作和经验之上。WhatsApp 在 2023 年实现的密钥透明度证明了这项技术在大规模加密消息传递中的可行性。我们在 Messenger 的实现中扩展了这些开创性努力,以提供具有相似安全属性的健壮可靠的解决方案。
什么是密钥透明度?
密钥透明度为消息用户提供了一个可验证且可审计的公钥记录。它允许用户确认他们的对话确实是使用其联系人的正确密钥加密的,并且这些密钥没有被被攻陷的服务器恶意替换。这意味着您可以更加确信,您的消息只有您打算与之通信的人才能访问。
您已经可以在 Messenger 上检查端到端加密聊天的密钥,但对于在多个设备上登录 Messenger 的用户来说,这可能很麻烦,因为每个设备都有自己的密钥。此外,当添加新设备或重新注册设备时,这些密钥会发生变化,每次发生这种情况时都需要再次检查密钥。 为了解决这个问题,我们基于密钥透明度增加了一项新的安全功能,允许用户验证这些密钥,而无需手动与联系人比对。当然,任何希望继续手动验证密钥的人仍然可以自由选择这样做。
我们如何大规模处理 Messenger 密钥
我们的密钥透明度实现利用了 Auditable Key Directory 库,这与 WhatsApp 已有的系统保持一致。该系统允许 Meta 安全地分发和验证用户的公钥。为了进一步增强此过程的安全性,我们使用 Cloudflare 的密钥透明度审计器提供额外的验证层,确保密钥的分发是透明的,并且任何人都可以验证。Cloudflare 的审计器维护着 WhatsApp 和 Messenger 密钥目录最新条目的实时日志,显示在密钥透明度仪表板上。
在 Messenger 这样的规模上实现密钥透明度带来了独特的工程挑战。其中一个重要因素是密钥更新的巨大数量和频率。Messenger 为用户的每一个登录设备都建立了密钥索引,这意味着单个用户通常与其账户关联着多个、频繁变化的密钥。 这种复杂性增加导致密钥更新被序列化到我们的密钥透明度目录中的频率大大提高。目前,我们观察到每发布一次数据的周期频率约为 2 分钟,每个周期内会添加数十万个新密钥。自开始建立索引以来,我们的数据库已经增长到包含数十亿个密钥条目。我们在基础设施和库中实现了一系列改进,以帮助管理这个庞大且不断增长的数据集,同时确保高可用性和实时验证:
- 我们通过优化证明大小,提高了 AKD 库中现有密钥查找和验证操作的算法效率,即使单个密钥的更新次数不断增加。此前,这些证明的大小会随着透明度树的高度线性增长,考虑到树中的节点数量,这仍然难以管理。
- 我们还更新了现有的基础设施,使其对临时中断更具弹性,并改进了从密钥序列化长时间延迟中恢复的过程。这些改进借鉴了过去两年运行 WhatsApp 密钥透明度日志所获得的经验。
随着密钥透明度在 Messenger 上线,用户将能够自动验证一对一聊天中联系人加密密钥的真实性。这标志着我们在持续投资提供安全、私密服务方面又向前迈进了一步。 请继续关注更多更新,我们将继续增强 Messenger 中端到端加密的安全性和隐私性。