这个问题是关于任何支持端到端加密群聊的聊天服务,例如 Signal、XMPP + OMEMO(特别是封闭群聊)、WhatsApp 等。
这些服务如何确保敌对的服务器管理员不会将自己的密钥添加到他们希望窥探的任何群聊中?最佳实践是什么?
可以确保至少将所有当前组成员通知其客户端中的入侵,但入侵者仍然可以访问在他们被注意到并被踢出之前发送的所有消息。
这个问题是关于任何支持端到端加密群聊的聊天服务,例如 Signal、XMPP + OMEMO(特别是封闭群聊)、WhatsApp 等。
这些服务如何确保敌对的服务器管理员不会将自己的密钥添加到他们希望窥探的任何群聊中?最佳实践是什么?
可以确保至少将所有当前组成员通知其客户端中的入侵,但入侵者仍然可以访问在他们被注意到并被踢出之前发送的所有消息。
服务器管理员可以默默地将渗透者添加到群聊中。但是如果不让组被通知,至少在信号协议中是不可能的。
Signal 是开源的,因此您可以从源代码验证某人已加入群组的消息是否显示在 GUI 上。虽然如果受到政府压力,what's app 可以选择对其进行编程,如果他们添加渗透者,则 GUI 上不会显示任何消息。
但这不会阻止渗透者被检测到。这是因为组密钥交换仍然可见。要将成员添加到组中,组管理员会向group management message
每个组成员发送一个,指示他们将自己的成员发送给group key
组管理员想要添加的人。现在,如果您观察到密钥交换已经开始发生。该组管理消息还直观地通知成员,以便他们知道所述人现在是组的一部分。这是您在 GUI 上看到该消息的地方。添加该人后,他会生成自己的组密钥,并将其作为个人一对一的成对加密消息发送给组中的每个成员。还有一次,可以看到密钥交换。
组密钥并非对所有人都相同。每个成员都有自己的组密钥,每个人都保存彼此的组密钥列表。这就是为什么当有人离开时刷新旧组密钥非常重要的原因,因为前成员已经学习了每个成员的组密钥。
在 Signal 应用程序中,服务器不涉及组管理。除了 Signal 中没有管理员并且每个成员都可以向组成员发送组管理消息之外,一切都以这种方式发生。
但在 WhatsApp 中,群组管理员不会直接向群组成员发送群组管理消息。它应该有,但它们超出了规格。相反,组管理员将此消息发送到服务器,服务器验证他是否真的是管理员,然后它指示组成员进行密钥交换。实际上,现在 WhatsApp 只向部分成员发送群组管理消息,但这已经足够了,其他成员可以稍后发送他们的群组密钥。即使渗透者是由 WhatsApp 服务器静默添加的,也必须指示每个成员准备密钥交换,否则渗透者将无法破译消息。
来自德国波鸿鲁尔大学的一组密码学家表示,他们发现了 WhatsApp 的安全漏洞,这些漏洞可能让渗透者将成员添加到群聊中
所描述的弱点使控制 WhatsApp 服务器或可以破坏传输层安全性的攻击者能够完全控制一个组。然而,进入组会留下痕迹,因为此操作已列在图形用户界面中。因此,WhatsApp 服务器可以利用它可以悄悄地重新排序和删除组中的消息这一事实。
在回应这个故事时,开发了 Signal 和 WhatsApp 中使用的端到端加密的 Open Whisper Systems 的联合创始人 Moxie Marlinspike 驳斥了研究人员声称攻击者可以向其他聊天成员隐藏某人的警报已添加到组中。“攻击者不会看到任何过去发给该组的消息;这些是使用攻击者没有的密钥进行的 e2e 加密,”Marlinspike 写道,并补充道,“所有组成员都会看到攻击者已加入。没有办法压制这个消息。”
攻击者加入的消息不能被丢弃,因为它不是 GUI 上的消息,它是密钥交换的指令。
但是让我们假设消息被删除并且渗透者已经加入了该组而没有触发任何警报。现在,如果该组开始在他面前交谈,所有渗透者都可以看到由他从未拥有的组密钥加密的加密消息,这与坐在服务器上观看传递的消息相同。不参与密钥交换,不能共享组密钥。
应用程序如何处理组管理并不重要。如果他们使用 E2E,则在进行通信之前始终可以看到密钥交换。
理论上,仍然可以通过验证是否添加了新的组密钥来验证是否已添加某人而无需通知。只有当有人离开或进入群组时,才会添加或移除群组密钥。
如果开发人员添加了后门,那么无论如何该应用程序都会受到损害,因此它不仅限于默默添加渗透者。然后,攻击者可以窃取未加密的接收消息、私钥和组密钥。上述检测方法仅在应用程序本身未受到威胁的情况下才会持续。
E2E 协议中的组管理存在一些问题。您可以在这篇文章中阅读WhatsApp,Signal 群聊不像用户认为的那样安全。父文章有一些关于这个问题的更多信息
WhatsAppp 白皮书对如何执行群聊的密钥交换进行了深入的技术解释,pdf 警告]( https://www.whatsapp.com/security/WhatsApp-Security-Whitepaper.pdf )。
我不确定其他 e2e 协议如何处理组管理。Signal 是最流行的一种,并且经过广泛测试。