支持同步

介绍一种用于多设备数据同步的端到端加密(E2EE)机制,确保在任何阶段都不存在明文泄露风险。
后续看看要不要支持自定义的同步节点,因为这个只进行密文转发 不存在风险,而且基于jwt进行了鉴权。

一、总体思路

系统采用「客户端加密、服务端中转」的安全架构:

每个用户登录后,客户端通过 KDF(email + password + salt) 派生出同步密钥 syncKey。

服务端从不保存 syncKey,仅存储其哈希用于身份验证。

所有同步的数据(主机列表、配置等)在客户端使用 syncKey 通过 AES-GCM 加密后上传。

服务端仅负责密文中转和版本管理,无法解密任何内容。

二、加密与同步流程

设备A 从本地数据库读取加密数据,用本地私钥解密后生成明文结构。

使用派生的 syncKey 对整个 JSON 数据进行 AES-GCM 加密,上传至服务器。

服务器保存密文与版本号,不存储任何可用于解密的密钥。

设备B 登录同一账号后,通过相同算法派生出相同 syncKey,从服务器获取密文并解密。

设备B将解密后的数据重新用自身私钥加密存储,完成同步。

三、安全性说明

🔒 端到端加密:只有客户端持有密钥,服务器永远无法解密。

🧠 密钥派生安全:KDF 算法引入随机 salt,可抵御暴力破解与彩虹表攻击。

🧭 零信任服务器:即便服务器被入侵,也仅泄露无意义的加密数据。

💾 本地再加密:每台设备独立持有私钥,本地存储依然保持加密态。

四、总结

这种设计在性能与安全之间取得平衡:

用户无须手动配置同步密钥;

多端自动同步,兼容性强;

整个传输与存储过程均处于加密状态。