NIP-104: Double Ratchet DMs
NIP-104定义了使用Double Ratchet协议(基于Signal架构)的端到端加密私信,为Nostr对话提供forward secrecy和post-compromise security。
为什么重要
现有的Nostr私信解决方案存在局限性:
- NIP-04:加密内容但泄露元数据
- NIP-17 + NIP-59:通过gift-wrapping解决元数据泄露问题,但缺乏forward/backward secrecy
NIP-104完善了整体方案:如果用户的私钥被泄露,攻击者无法读取过去的消息(forward secrecy),也无法无限期地继续读取未来的消息(post-compromise security)。
工作原理
初始设置(X3DH)
双方使用身份密钥和prekeys执行扩展的三重Diffie-Hellman交换,以派生初始共享根密钥。
Double Ratchet
- DH Ratchet:每次双方交换消息时,都会生成新的Diffie-Hellman密钥,产生新的根密钥和链密钥
- Symmetric Ratchet:独立的发送和接收链为每条消息派生单独的消息密钥
这种持续的密钥轮换确保即使一个密钥被泄露,也只会暴露最少的消息内容。
Event Kinds
- Kind 442:发布用于X3DH初始化的用户prekeys
- Kind 443:包含加密首条消息的初始对话设置
- Kind 444:已建立对话中的后续加密消息
所有加密消息都封装在kind 1059 GiftWrap事件中以保护元数据。
关键标签
p- 接收者的公钥prekey- 用于DH计算的接收者prekeydh_sending- 当前DH发送公钥current_index- 链中的消息编号previous_length- 前一消息链的长度
限制
消息按设备-客户端配对工作。跨多设备同步需要为每个设备单独初始化,这是增强安全性的权衡。
主要来源:
提及:
另请参阅: