Notesnook 跨设备同步加密流程 密文才会上传
同步时到底发生了什么
当你在设备 A 创建了一条笔记,按保存(或者自动保存触发)后,Notesnook 客户端的加密流程会:
- 把笔记内容序列化成 JSON 对象
- 用数据加密密钥(XChaCha20-Poly1305)加密这个 JSON
- 把加密后的密文对象(包含密文本身、nonce、salt、算法 ID、条目 ID)发送到服务器
- 服务器存入数据库——这个过程不接触明文
设备 B 登录同一个账号时,Notesnook 客户端会:
- 从服务器拉取所有加密条目
- 用本地的主密钥解密数据加密密钥
- 用数据加密密钥解开每条笔记的密文
- 渲染显示内容
整个过程中服务器只见过密文。真正的解密只发生在用户的设备上。
离线编辑
Notesnook 完全支持离线编辑。没有网络连接时你可以正常创建、编辑、删除笔记——所有变更先在本地应用层提交。恢复网络后 Notesnook 会自动把本地离线时积累的变更加密上传到服务器。冲突处理是"最后写入胜出"的简单模型。
同步频率
默认是实时同步(只要有网络就自动同步变更)。Pro 计划用户可以在设置里关闭实时同步、改为手动触发,或者完全关闭同步功能。
冲突场景
如果两台设备同时离线编辑同一条笔记,恢复网络后 Notesnook 会保留两份——不会覆盖也不会丢弃。两份冲突的笔记在列表里会用特殊标记提醒你,手动选择保留哪一份或合并。
服务器端能看到什么
- 账号邮箱(用于登录验证和 2FA 邮件通知)
- 笔记的条目 ID 和时间戳(用于增量同步和冲突检测)
- 密文本身(无法打开)
- 存储配额统计
服务器看不到:笔记标题、正文内容、Notebook 归属、Tag、Vault 锁定状态——这些全部在加密数据里。