端到端加密群聊存在哪些协议?

信息安全 加密 协议 即时通讯 端到端加密
2021-08-09 21:22:10

我正在寻找用于群聊的现有协议,其中包含两件事:

  1. 端到端加密。正如您所期望的那样:消息只能由聊天成员解密,并且可以检测到消息篡改。

  2. 它不应单独加密每个成员的每条消息。信号协议做到了这一点,将群聊变成了许多一对一的聊天,这不是解决问题的合适的、可扩展的解决方案。一个组中可能有数百名成员,即使为每个成员加密一个加密密钥也是一个相当大的缺点。

每个新成员在加入时可能会收到每个人的公钥,并且在成员离开时必须轮换任何组密钥。这可以合理地扩展,并且可能无法在不影响安全性的情况下绕过它,因此这是允许的,并且不能算作“为每个人加密每条消息”。


我一直在寻找现有的协议,但提出了满足这些要求的零结果。我想我几年前读到过一些东西,该小组派生了一个公共密钥并使用了那个或其他东西,但我找不到类似的东西。

2个回答

让我尝试总结一下用于群聊的端到端加密消息协议的前景:

  • PGP这样的协议已经存在了一段时间,它通过简单地使用随机生成的对称密钥加密内容,然后使用每个接收者的公钥对该密钥进行非对称加密来提供“群组消息传递”。这些协议只发送一次加密内容,但将加密密钥加密给组中的每个成员。请注意,与 PGP 类似,此方法不提供任何完美的前向保密、可否认性或对话完整性(因此没有记录一致性)。

  • 引入 OTR 是为了解决 PGP 的一些缺点,改进了完美的前向保密性、对话完整性和可否认性。OTR 的作者 Ian Goldberg 还写了一篇关于该协议的多方变体的论文,名为mpOTRmpOTR在设计时考虑了 XMPP 传输,并且在设计中本质上是同步的,这意味着每个组成员都应该随时在线协商新的密钥材料。所描述的协议不提供会话中的完美前向保密,并且尚未大量部署。N+1Sec是一个类似的协议,但有一些改进。请注意,这些协议具有很多算法复杂性并且往往难以扩展,尤其是当您将延迟添加到组合中时。

  • 然后你就有了一整类协议,我们简称为N 次协议,因为它们只是发送每条消息。这些协议具有重用现有一对一协议的优势,当您已经拥有一个可以为您提供诸如异步完美前向保密等不错功能的通道时,这非常方便。在这种情况下,组结构不是密码概念,失去了密码保证但降低了算法复杂性。Open Whisper Systems 博客有一篇很棒的文章,介绍了为什么 Signal 这样做而不是 mpOTR 样式的消息传递。此类协议违反了您的第二个要求,因为它们是我们所说的“客户端扇出”,客户端加密并发送所有不同的消息。

  • WhatsApp 采用了对 Signal 的优化,您可以在他们的名为Sender Keys的白皮书中找到它,它具有“服务器端扇出”。它在设置时使用了N 次,但在第一条消息之后,该组的每个成员都可以向该组发送一条消息。该协议通过使用散列棘轮具有完美的前向保密性(但不提供完美的未来保密性)。脚本一致性由服务器端强制执行(因为服务器端扇出),但不是从加密的角度来看。

这些是我见过的正在实施的协议类型。在可用性和加密研究方面都存在挑战,即如何在组设置中将异步性与完美的未来保密性和转录一致性相结合。

如果您想要一个同时满足您的两个要求的协议,我认为您正在寻找类似 Signal 协议的Sender Keys变体的协议。

也许异步棘轮树是您所要求的。

您还可以查看消息层安全性

消息层安全 (MLS) 是 IETF 工作组构建现代、高效、安全的组消息协议。