NIP-104 是一份使用双棘轮设计实现端到端加密私信的草案,旨在为 Nostr 对话带来前向保密和泄露后恢复能力。

重要意义

现有 Nostr 私信方案存在局限性:

  • NIP-04:加密内容但泄露元数据
  • NIP-17 + NIP-59:通过 Gift Wrap 解决元数据泄露,但缺乏前向/后向保密

NIP-104 的目标是解决缺失的属性:如果设备状态或长期密钥被泄露,攻击者不应自动获取完整的对话历史或永久访问未来消息的能力。

工作原理

NIP-104 从 X3DH 风格的设置开始,结合身份密钥和预密钥派生初始共享密钥。之后,双方推进双棘轮:当双方交换新的公钥时,Diffie-Hellman 棘轮轮换根密钥和链密钥;对称棘轮在每个发送或接收链内派生逐条消息的密钥。

由于每个消息密钥都是短期的,即使后续状态被暴露,旧的密文也更难被恢复。这是与单一静态密钥方案的主要技术差异。

事件 Kind

  • Kind 10443:发布用户预密钥以进行 X3DH 初始化
  • Kind 443:带有加密首条消息的初始对话设置
  • Kind 444:已建立对话中的后续加密消息

所有加密消息都包装在 kind 1059 GiftWrap 事件中以保护元数据。

安全性与权衡

安全增益伴随着更多状态。每对设备配对都需要棘轮状态、预密钥管理和乱序传递的恢复逻辑。恢复旧备份或使用多个未同步的设备可能会破坏解密,直到对话被重新建立。

这就是为什么双棘轮消息比普通加密笔记更难改装。客户端需要持久的本地状态和精细的设备语义,而不仅仅是一个加密原语。

互操作说明

该提案使用专用的设置和消息 kind,加上 NIP-59:Gift Wrap 提供传输隐私。它还建议仅将这些 Gift Wrap 事件发布到用户 kind 10050 私信中继器偏好事件中列出的中继器。这意味着 NIP-104 不是 NIP-17:私密私信 的简单直接替代;客户端需要显式支持其预密钥流程、私信中继器发现和棘轮状态机。


主要来源:

提及于:

另请参阅: