privateer-agent/privateer-transparency
GitHub: privateer-agent/privateer-transparency
Privateer Transparency 是一款端到端加密 AI 聊天应用的透明代码仓库,发布加密核心与存储路由代码以供公众独立审计其隐私声明。
Stars: 1 | Forks: 0
# Privateer — 验证我们,而不是信任我们
**Privateer**([privateer.pro](https://privateer.pro))是一款端到端加密的 AI
聊天应用。本代码库是 Privateer *隐私信任边界* 的 **透明镜像** —— 即定义我们隐私保证的确切代码 —— 将其发布出来,以便任何人都可以
审计该声明,而不是仅听信我们的一面之词。
## 您可以在此验证的声明
1. **您的内容在离开设备之前就在您的设备上进行了加密。** 每个账户
都有一个 32 字节的 AES-256 主密钥,在客户端生成,由本地从您的密码(Argon2id)或您的 Solana 钱包签名(HKDF)派生的密钥封装。
服务器只会收到 *已封装的* blob —— 绝不会收到密钥,也绝不会收到密码。
2. **服务器仅存储和转发密文。** 即使在完全被攻破的情况下,它也无法读取您的消息、
标题、图像或记忆。这里的内容模型和路由
展示了每个持久化字段都是 `encrypted*` 字段。
3. **AI 推理仅发送给零数据保留提供商。** 在推理提供商处,提示词仅
在模型运行的几秒钟内是明文 —— 绝不会以明文形式写入我们的
数据库。此处的推理层展示了请求是如何被固定到 ZDR
提供商的,以及机密计算(TEE)模型是如何被证明的。
**没有密码恢复功能。** 忘记您的密码/钱包意味着数据将
永久无法读取 —— 包括对我们而言也是如此。这是真正的 E2EE 的代价,而且是
刻意为之。
### 为什么我们的模型比 enclave 证明更进一步
一些优秀的隐私 AI 产品(Maple/OpenSecret、Confer)会在服务器端 *在经过证明的安全 enclave 内部* 解密您的数据,
并开源 enclave 代码,以便您
验证它。**Privateer 的服务器根本不会解密内容** —— 没有
服务器端的明文需要去证明。我们等同于“enclave”的部分是此代码库中的客户端
加密 + 传输格式 + 推理路由。
## 此代码库中有什么
| 区域 | 文件 | 证明了什么 |
|---|---|---|
| **客户端加密核心** | [`client/services/cryptoService.ts`](client/services/cryptoService.ts) | KDF/KEK 派生、主密钥封装/解封、`encryptText`/`encryptBinary`` — 声明的核心 |
| **钱包认证 + KEK** | [`client/services/walletAuthService.ts`](client/services/walletAuthService.ts)、[`walletAuthShared.ts`](client/services/walletAuthShared.ts)、[`internal/argon2.ts`](client/services/internal/argon2.ts)、[`internal/secureKv.ts`](client/services/internal/secureKv.ts) | 钱包签名 → 密钥派生;设备上安全存储 |
| **认证/保险库流程** | [`client/services/authService.ts`](client/services/authService.ts) | 注册/登录/密码更改绝不会发送密钥或由密码派生的 KEK |
| **共享** | [`client/services/shareService.ts`](client/services/shareService.ts) | 通过 URL 片段密钥实现保留 E2EE 的公开共享 |
| **机密模型** | [`client/components/AttestationSheet.tsx`](client/components/AttestationSheet.tsx) | TEE 证明如何展示给用户 |
| **服务器保险库 + 认证** | [`server/models/userModel.js`](server/models/userModel.js)、[`server/routes/auth.js`](server/routes/auth.js)、[`server/middleware/auth.js`](server/middleware/auth.js) | 服务器仅存储 *已封装的* 主密钥 |
| **仅密文存储** | 内容模型 + [`server/routes/`](server/routes/) (chat, graph, projects, images, share) | 每个持久化的内容字段都是 `encrypted*` |
| **ZDR 推理路由** | [`server/services/inferenceService.js`](server/services/inferenceService.js)、[`server/services/nearAiService.js`](server/services/nearAiService.js) | 双密钥 ZDR 强制执行 + NEAR AI TEE 证明 |
| **规范** | [`docs/E2EE_ARCHITECTURE.md`](docs/E2EE_ARCHITECTURE.md)、[`docs/CONTENT_ENCRYPTION.md`](docs/CONTENT_ENCRYPTION.md) | 威胁模型、KEK 派生、传输格式 `{"iv":…,"ct":…}` |
**推荐阅读顺序:** `docs/E2EE_ARCHITECTURE.md` → `client/services/cryptoService.ts`
→ 服务器内容模型(例如 `server/models/messageModel.js`) → `server/services/inferenceService.js`。
## 刻意不包含在这里的内容(以及为什么这样做是正确的)
这是一个 **摘录,而不是可运行的构建版本。** 保持信任边界 *小* 是
核心重点 —— 接触明文的代码越少,隐私声明就越容易被
验证。以下内容属于 Privateer 的闭源代码库,因为它们只会看到
**密文、账户 ID 和元数据** —— 开放它们只会增加风险而没有任何
可审计性收益(这反映了 Maple/OpenSecret 和 Proton 的 Lumo 同样选择闭源的做法):
- **账单/支付** —— Stripe、Solana RPC 代理、充值、价格预言机、加价逻辑。
- **订阅/权益** —— 等级、额度核算、配额限制。
- **账户/基础设施** —— 速率限制、Redis、电子邮件、对象存储连接、部署配置。
- **所有密钥** —— 绝不公开。这里的 `process.env.*` 引用仅是变量 *名称*
(参见 [`.env.example`](.env.example));值存在于我们的部署环境中。
在闭源逻辑与范围内代码交错的地方,已在行内进行了存根处理并标记为
`TRANSPARENCY REPO OMISSION`,并且每个服务器文件都带有一个解释该摘录的头部说明。
## 路线图
- [ ] 对传输格式 + 密钥处理进行 **第三方密码学审计**,并在此发布。
- [ ] **可重现的客户端构建**,以便用户验证发布的程序是否与此源码匹配。
## 安全
发现了什么问题?请参阅 [`SECURITY.md`](SECURITY.md)。许可证:[MIT](LICENSE)。
标签:AI聊天, MITM代理, Web3, 客户端加密, 密码学审计, 数据可视化, 端到端加密, 零数据保留