第 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 上传流程

  1. 客户端创建传输,并获得一个绑定到 transferId 的短期、限定作用域的上传令牌。
  2. 客户端在本地为每个文件生成 CEK,将文件切分为固定大小的分片,并使用 AEAD 加密每个分片。
  3. 客户端并行上传密文分片;每个分片的重试都是幂等的。
  4. 客户端上传 manifest(仅含公开参数)。当必需的部分都已就绪时,服务端将该传输标记为 READY。

3.4 下载流程

  1. 收件人打开分享链接。URL fragment(CEK 材料)保留在浏览器中,不会发送给服务端。
  2. 客户端使用限定作用域的下载令牌获取 manifest,并确定分片计划。
  3. 客户端下载密文分片(可选并行),校验 AEAD 认证,然后组装出明文文件。
  4. 发生失败时,客户端只请求缺失的分片以继续下载;完整性校验失败 MUST 失败关闭。

3.5 发送方管理与审计流程

  • 发送方使用长期登录令牌(保存在客户端)进行管理操作的身份验证。
  • 管理 API 允许列出传输、查看交付证据,以及撤销 / 删除传输。
  • 审计数据设计为仅发送方可见;默认不向收件人暴露。

3.6 可见性与最小化

  • 服务端和存储只处理密文及必要的公开参数;没有 CEK 就无法解密内容。
  • 日志和分析数据 SHOULD 尽量最小化,且 MUST NOT 包含 URL fragment 或 CEK 材料。
  • 元数据收集 SHOULD 遵循目的限定原则(交付证据、滥用防范和运行可靠性)。