./security_model.md

我们如何保护你的数据

查看 PingVaults 客户端加密设计背后的密码学、数据流、浏览器控制与信任边界。

Browser

Plaintext

Server

Ciphertext Only

Irys

Ciphertext + export

核心承诺

你不应该只依赖一句隐私承诺。

在预期流程中,密钥派生和加密都在浏览器内完成。

金库保存接口接收密文、盐值、IV 和恢复结构,不接收你提交的恢复短语。

导出的备份与离线解密器可以降低对 PingVaults 持续在线的依赖。

保密性仍取决于部署完整性、终端安全和不可预测的恢复短语。

这些是可以核查的设计属性,并非对所有威胁的绝对保证。

// data_flow[]

数据流向(你的答案去了哪里)

1
你输入恢复字段浏览器内

这些值在当前页面的加密操作中使用,不会包含在金库保存请求里。

2
normalizeInput() 标准化处理浏览器内

去除空格、统一大小写、全角转半角——确保「Alice」和「alice」派生出相同密钥。完全在浏览器内完成。

3
PBKDF2-SHA256 派生密钥(600,000 次迭代)浏览器内

标准化后的值在浏览器内通过 PBKDF2 和随机 salt 派生出 AES-256 密钥。

4
AES-256-GCM 加密浏览器内

使用派生密钥加密你的资产线索,生成带认证的密文。应用不会主动持久化恢复短语或派生密钥。

5
密文经服务器上传至 Arweave服务器端

服务器只收到密文、salt、iv 和密钥结构(类型和问题题面)。答案永远不在请求体里。

6
解密时,答案重新在浏览器内派生密钥浏览器内

读取时,密文通过下载或导入获得,并在浏览器内用重新输入的值解密;系统没有服务端解密接口。

// server_access_table[]

金库保存流程会发送 / 不会发送什么

✓ 服务器可以看到
✗ 保存请求不包含
✓加密密文(乱码,无法解读)
✗你的密语答案
✓随机 Salt 和 IV(按公开信息处理)
✗派生的 AES 密钥
✓密钥类型(name, custom_question…)
✗资产线索明文
✓恢复提示文本
✗该字段中输入的恢复短语
✓账号与联系人邮箱、报平安元数据
✗派生出的 AES 密钥

// open_source[]

开源策略

📂 pingvaults-crypto ↗

加密核心、安全关键 UI/API 快照、测试向量和离线解密器已按 MIT 许可证发布,供检查和测试。

MIT · crypto.ts · test vectors · offline decryptors

🛡️ 托管服务

账户、失联检测、提醒与通知由 PingVaults 托管运行。这部分只处理密文和必要的账户信息,解密始终在你的浏览器或离线解密器中完成。

账户 · 失联检测 · 提醒通知

// faq[]

FAQ

PingVaults 能偷看我的资产线索吗?+
预期流程只发送 AES-256-GCM 密文、盐值、IV 和问题结构,不发送答案。你可以审计开源加密核心并检查浏览器网络请求,同时也要防范答案被猜中或终端被入侵。
如果 PingVaults 跑路了,我的数据还能访问吗?+
能,前提是保存了导出文件。新上传存放在 Arweave 上,这是一个不受 PingVaults 控制的公共网络;导出 JSON 包含密文,可配合独立离线解密器使用,不需要 PingVaults 账号或网关。请务必保存导出文件:盐值和 IV 不存放在 Arweave 上。
离线解密器是否依赖 PingVaults 网站?+
可下载 HTML 内含解密逻辑,能够离线处理导出的元数据文件。请把经过实际测试的副本与元数据、恢复说明一起保存。
我怎么自己确认答案没有被发送出去?+
打开浏览器开发者工具的「网络」面板,保存金库时查看请求内容:里面只有密文、盐值、IV 和问题结构,没有你的答案。内容安全策略限制页面向其他网站发送数据;加密核心开源,可以对照源码检查;恢复时也可以完全使用离线解密器,不经过我们的网站。
加密算法足够安全吗?+
实现使用 AES-256-GCM、60 万次 PBKDF2-SHA256,并为每次加密生成新的随机盐值和 IV。但拿到密文的攻击者可以离线尝试常见短语,实际保护强度受恢复短语的唯一性和不可预测性限制。不要依赖姓名、日期、地点等可查到的个人信息。

架构有文档,加密核心可审计,恢复资料可导出并离线使用。