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, 客户端加密, 密码学审计, 数据可视化, 端到端加密, 零数据保留