加密云同步(安全视角)
0G Storage 同步的安全面摘要。用户面的设置见 0G Storage 加密同步。
威胁模型
驱动这套设计的威胁模型:
- 用户想要跨设备备份。
- 用户不想把明文交给 Ghast(或任何集中服务)。
- 用户接受自己管理密钥的全部后果(丢了 → 失去访问)。
设计避免任何集中服务持有明文。权衡是钱包(派生密钥的源头)丢失导致不可恢复。
密码学模型
钱包私钥
│
▼
HKDF-SHA256
│
▼
同步加密密钥
│
├─── AES-256-GCM ───── 密文 ────► 0G Storage indexer
│ │
▼ ▼
本地明文快照 内容哈希 ──► 链上 Pointer Registry
(钱包签名)每次备份快照:
- 从相关本地数据(记忆、对话等)序列化。
- 用钱包派生密钥 AES-256-GCM 加密。
- 上传到
https://indexer-storage-turbo.0g.ai。 - 内容哈希由钱包签名后提交到链上 Pointer Registry 合约。
加密密钥从不离开本机。indexer 只看到密文。注册表合约只看到内容哈希。
Ghast 不能做什么
- Ghast 不能解密你的备份。团队没有密钥。
- Ghast 不能重置你的密钥。没有恢复流程。
- Ghast 不能替你从存储网络删除密文。你可以停止上传新快照;旧的留在那。
这是用户自管密钥的端到端加密的核心性质。也正因如此,钱包丢失意味着失去访问。
可备份内容
| 类别 | 快照里的内容 |
|---|---|
| Memories | 向量记忆记录 + embeddings |
| Conversations | 完整对话历史 + 工具调用 |
| Providers | 配置(模型选择、账户)——不含凭据本身 |
| Prompts | 保存的提示词模板 |
| Skills | 你自创或手动安装的技能 |
任何同步都排除:
- 钱包私钥
- Vault Key
- 桥接 bot token(按平台凭据)
- MCP OAuth token
- Browser Relay token
- 活动记录样本(默认关闭;即便 opt-in 同步设置里也需单独 opt-in)
排除是刻意的。如果加密密钥(钱包)丢失,平台级凭据不该跟着丢——这些都可以重发。
恢复怎么走
在使用同一钱包的新设备:
- 登录同一个 Ghast 账号。
- Onboarding:用助记词导入钱包。
- 钱包绑定后,客户端用钱包地址在链上查关联指针。
- 对每个已备份类别,拉回密文、本地解密、合并到新数据库。
钱包不匹配时解密失败。密文留在存储网络但不可读。
这套栈不防:
- 钱包丢失。无恢复。
- 钱包被攻破。钱包私钥暴露则攻击者能解密所有同步快照。
- 本机被攻破。若攻击者同时能派生同步密钥(因他们有钱包),那么一切都拿到。
钱包暴露且怀疑快照已被读时,唯一缓解是迁到新钱包(从空备份重新开始)。无法追溯地"用新密钥再加密"——存储网络上的旧密文就是那样。
链上知道什么
链上 Pointer Registry 存储:
- 你的钱包地址。
- 每个快照的内容哈希。
- 时间戳。
- 你的签名。
它不存储:
- 明文。
- 类别或任何关于快照内容的提示。
- 快照内记录数。
这够客户端找到你的快照而不暴露其内容。
