NIP-04:加密私信(已弃用)
NIP-04 使用 kind 4 事件和 ECDH 派生的共享密钥定义加密私信。它是 Nostr 最初的私信方案,但现在已是遗留技术,新的隐私消息工作已转移到 NIP-17。
工作原理
消息使用 kind 4 事件,基本流程如下:
- 发送方通过 secp256k1 ECDH 派生共享密钥。
- 明文使用 AES-256-CBC 加密。
- 事件包含一个指定接收方的
p标签。 - 密文经 base64 编码后与 IV 一起存储在
content中。
事件本身仍然是普通的签名 Nostr 事件,因此中继器可以看到外部元数据,但无法读取明文。
安全与隐私限制
NIP-04 存在显著的隐私缺陷:
- 元数据泄露 - 发送方的 pubkey 在每条消息中公开可见
- 无发送方隐私 - 任何人都可以看到谁在给谁发消息
- 精确时间戳 - 消息时间未做随机化处理
- 非标准密钥处理 - 该方案仅使用 ECDH 点的 X 坐标,这使得跨库的正确性更难保证,并且几乎没有协议演进的空间
规范明确警告它"距离加密通信的最新技术水平还很远"。
为何被替代
NIP-04 加密了消息内容,但没有隐藏社交图谱。中继器运营者仍然可以看到谁发送了事件、谁接收它以及何时发布。即使不解密载荷,这些元数据也足以映射出对话关系。
NIP-17 通过将 NIP-44 载荷加密与 NIP-59 Gift Wrap 相结合来解决这个问题,从而对中继器和随机观察者隐藏发送方。新的实现应将 NIP-04 视为仅用于兼容性。
实现状态
遗留客户端和签名器仍然暴露 NIP-04 加解密方法,因为旧对话和较老的应用仍在流通中。这个兼容层对迁移很重要,但在 kind 4 事件之上构建新功能通常意味着继续承受旧的隐私限制。
主要来源:
提及于:
另请参阅: