Happy 对所有数据使用端到端加密(E2E)。你的消息、代码和会话元数据在发送到服务器之前会在你的设备上加密。服务器只存储它无法解密的加密数据块。

零知识架构

Happy 服务器是一个零知识中继。它在你的设备之间同步加密数据,但:
  • 无法读取你的消息或代码
  • 无法解密你的会话元数据
  • 无法访问你的加密密钥
  • 存储加密的密文
即使服务器被攻破,你的数据仍然是加密的。

工作原理

密钥生成

当你首次运行 Happy 时,会生成一个 NaCl(Networking and Cryptography library) 密钥对:
  • 私钥 — 本地存储在 ~/.happy-next/access.key(永远不会离开你的设备)
  • 公钥 — 作为你的身份发送到服务器

消息加密

消息使用 TweetNaCl Box(Curve25519 + XSalsa20 + Poly1305)加密:
  1. 你的设备使用会话密钥加密消息
  2. 加密后的密文发送到服务器
  3. 服务器存储密文但无法读取
  4. 你的其他设备下载并在本地解密

多设备密钥交换

当你配对新设备时(例如用手机扫描二维码),设备之间会交换公钥并建立共享加密密钥。这通过安全的 NaCl Box 密钥交换完成 — 服务器协助交换过程但无法看到共享密钥。

会话共享

当你与其他用户共享会话时:
  • 私密共享使用 NaCl Box 为接收者的公钥加密会话密钥
  • 公开链接从共享令牌派生解密密钥(密钥嵌入在 URL 中)

密钥备份

请备份 ~/.happy-next/access.key 此文件是你的加密私钥。如果丢失,你将永久失去对加密会话历史的访问权限。没有恢复机制 — 这是刻意设计的。

Happy 使用以下加密库:
用途
TweetNaCl核心加密(NaCl Box、签名)
libsodium移动端加密(React Native 绑定)
@noble/ed25519Ed25519 密钥操作