首先,从他们的论文
发送到 WhatsApp 群组的消息建立在上述成对加密会话之上,以实现对发送到群组的大多数消息的高效服务器端扇出。这是使用信号消息协议的“发送者密钥”组件完成的。
WhatsApp 群组成员首次向群组发送消息时:
- 发送者生成一个随机的 32 字节链密钥。
- 发送者生成一个随机的 Curve25519 签名密钥密钥对。
- 发送者将 32 字节的链密钥和来自签名密钥的公钥组合成一个发送者密钥消息。
- 发件人使用前面解释的成对消息传递协议单独加密组中每个成员的发件人密钥。对于该组的所有后续消息:
- 发送者从链密钥派生消息密钥,并更新链密钥。
- 发件人在 CBC 模式下使用 AES256 对消息进行加密。
- 发送者使用签名密钥对密文进行签名。
- 发送者将单个密文消息传输到服务器,服务器将服务器端扇出到所有组参与者。消息发送者的链密钥的“散列棘轮”提供前向保密。每当小组成员离开时,所有小组参与者都会清除他们的发件人密钥并重新开始。
我想说这里的关键点是第 4 点:发件人使用前面解释的成对消息传递协议单独加密组中每个成员的发件人密钥
这是建立在一对一协议之上的巧妙改编:使用它将共享密钥分发给组中的每个单独成员,因此组可以使用服务器以提供有效的“扇出” (以及 blob 存储),而服务器不知道所需的私钥。
“那么群聊协议具有哪些安全属性以及它是如何工作的(在高层次上)?”
至于它是如何工作的,我认为在其他人进行全面(应用)分析之前,该论文的详细程度与您目前所能找到的一样多。
至于它提供的功能...
前向保密:所描述的棘轮机制提供了这一点(或者他们声称)
被动:第 4 点中的“发送者密钥”分发方法使得被动攻击几乎不可能:请记住,被动方必须通过噪声管道加密层(到 WhatsApp 服务器)的每一方组,并且可能需要多个存在点,这有助于访问组中每一方的流量......所以你几乎可以排除那里的任何人,除非他们是主要的骨干供应商或 NSA。
主动攻击:我想说对组中的一个设备进行侧通道攻击是可行的,但是如果您对设备具有这种级别的侵入性访问权限(因此很可能是它的所有者!),一把钳子和与设备所有者交流 5 分钟可能会更有成效。
成绩单一致性:所有消息都使用 HMAC 来确保完整性(步骤 7)
似是而非的否认:如果有的话,他们的新实现提供的所有额外安全性使得很难否认特定用户发送了消息......