Signal 协议引入了“稀疏后量子棘轮”(SPQR),它与现有的“双棘轮”协议相结合,形成了一个名为“三棘轮”的增强系统。此举旨在保护用户的通信免受未来量子计算机的威胁,同时保留了前向保密(保护过去的消息)和妥协后安全(保护未来的消息)等关键安全特性。该协议通过混合量子安全算法生成的密钥,确保即使在量子计算机问世后,通信内容依然安全。整个升级过程对用户完全无感,无需任何操作,并通过严格的形式验证来保证其稳健性。
为何需要升级:量子计算的威胁
当前的 Signal 协议(双棘轮)依赖椭圆曲线加密技术(ECDH)来实现妥协后安全。这个机制非常强大,但它无法抵抗足够强大的量子计算机。
- 棘轮机制: 就像一个只能向前转动的物理齿轮,加密棘轮会不断生成新密钥,并丢弃旧密钥。这确保了即使当前密钥被盗,攻击者也无法解密过去的消息,这便是前向保密 (FS)。
- 妥协后安全 (PCS): 当双方通信时,他们会交换新的密钥材料,即使设备曾被短暂入侵,后续的通信也能“自愈”并恢复安全。
- 量子漏洞: 如果攻击者拥有量子计算机,他们可以分析双方交换的公开数据来计算出共享密钥。这将彻底破坏“妥协后安全”机制,使攻击者能够持续解密所有未来的消息。
如果攻击者拥有量子计算机,Alice 和 Bob 的会话将永远无法“愈合”;从那时起,攻击者只需监控网络流量,就能解密所有未来的通信。
引入量子安全方案:挑战与对策
为了抵御量子攻击,协议需要引入量子安全的加密算法。Signal 选择了基于密钥封装机制 (KEM) 的方案,具体为 ML-KEM 标准。但这带来了新的挑战。
- 数据量巨大: KEM 交换的数据包(超过 1000 字节)远大于传统 ECDH 的数据包(32 字节),这会消耗更多带宽。
- 通信不对称: 与双方同时交换信息的 ECDH 不同,KEM 需要一方先发送封装密钥(EK),另一方再用它加密一个秘密并返回密文(CT)。这在处理消息丢失、乱序或一方离线时会变得非常复杂。
- 被攻击风险: 攻击者可以故意丢弃包含密钥数据的大尺寸消息,阻止双方完成密钥更新。
为了解决这些问题,协议设计采用了以下策略:
- 状态机: 客户端内部通过一个状态机来协调何时发送密钥、何时等待响应,确保双方行动一致。
- 纠删码: 将大的密钥数据分割成许多小数据块。接收方只需收到任意足够数量的数据块,即可重构出完整的密钥。这使得攻击者必须拦截所有后续消息才能阻止密钥交换,从而将攻击行为升级为一次非常明显的“拒绝服务攻击”。
“三棘轮”:融合新旧优势
简单的并行处理多个密钥交换会带来新的安全隐患。如果在设备被入侵时,本地存储了多个尚未使用的未来密钥,那么这些密钥也会一同泄露。因此,协议的设计在效率和安全性之间做出了审慎的权衡。
最终的方案是“三棘轮”协议:
- 并行运行: 新的量子安全棘轮(SPQR)与经典的双棘轮同时运行。
- 密钥混合: 每次加密消息时,协议会同时从两个棘轮中获取密钥。
- 混合安全: 这两个密钥会被输入到一个密钥派生函数 (KDF) 中,生成一个最终的混合密钥。
这种设计意味着攻击者必须同时破解经典的椭圆曲线算法和全新的量子安全算法,才能破解加密。这提供了强大的混合安全性。
智能部署与严格验证
为了让全球数亿用户无缝升级,Signal 采用了巧妙的部署策略和严格的安全验证。
- 平滑过渡: 新协议支持“向后兼容”。当一个升级了的客户端与一个旧版客户端通信时,它会自动禁用新功能,确保通信不受影响。一旦双方都确认支持新协议,该会话就会永久锁定为量子安全模式。
- 形式验证: 协议的设计从一开始就与形式验证紧密结合。
- 使用 ProVerif 等工具对协议模型进行机器验证,证明其满足所需的安全属性。
- 代码实现与模型紧密对应,并通过持续集成(CI)管道在每次代码变更时重新运行验证。
- 这确保了协议不仅在理论上安全,在实际代码中也同样稳健,甚至可以证明应用不会因协议逻辑而出错崩溃。