第 3 章 系统架构与数据流
本章描述系统的高层组件,以及上传、下载和发送方管理的端到端数据流。 重点是:哪些内容被加密、需要哪些元数据,以及如何执行访问控制与撤销。
文档信息
- 白皮书版本
- v1.0
- 最后更新
- 2026-01-14
3.1 组件
- 客户端:对文件分片、加密 / 解密,并在 URL fragment 中管理 CEK。
- API / 边缘:签发并校验限定作用域的令牌;提供 manifest 和密文分片。
- 对象存储:存储加密后的分片和 manifest;在明文保密性方面视为不可信。
- 状态存储:以最少量的元数据跟踪传输状态(上传进度、过期、撤销)。
3.2 数据对象
- Manifest:获取并组装分片所需的公开参数(cryptoVersion、分片大小 / 数量、映射);MUST NOT 包含 CEK。
- 分片(Chunk):加密后的文件片段(密文)加上最少量的元数据(长度 / etag),通过(transferId、fileId、chunkIndex)寻址。
- 状态:服务端用于授权、TTL、撤销和断点续传的记录。
3.3 上传流程
- 客户端创建传输,并获得一个绑定到
transferId的短期、限定作用域的上传令牌。 - 客户端在本地为每个文件生成 CEK,将文件切分为固定大小的分片,并使用 AEAD 加密每个分片。
- 客户端并行上传密文分片;每个分片的重试都是幂等的。
- 客户端上传 manifest(仅含公开参数)。当必需的部分都已就绪时,服务端将该传输标记为 READY。
3.4 下载流程
- 收件人打开分享链接。URL fragment(CEK 材料)保留在浏览器中,不会发送给服务端。
- 客户端使用限定作用域的下载令牌获取 manifest,并确定分片计划。
- 客户端下载密文分片(可选并行),校验 AEAD 认证,然后组装出明文文件。
- 发生失败时,客户端只请求缺失的分片以继续下载;完整性校验失败 MUST 失败关闭。
3.5 发送方管理与审计流程
- 发送方使用长期登录令牌(保存在客户端)进行管理操作的身份验证。
- 管理 API 允许列出传输、查看交付证据,以及撤销 / 删除传输。
- 审计数据设计为仅发送方可见;默认不向收件人暴露。
3.6 可见性与最小化
- 服务端和存储只处理密文及必要的公开参数;没有 CEK 就无法解密内容。
- 日志和分析数据 SHOULD 尽量最小化,且 MUST NOT 包含 URL fragment 或 CEK 材料。
- 元数据收集 SHOULD 遵循目的限定原则(交付证据、滥用防范和运行可靠性)。