Logo

安全与隐私白皮书(总览)第 4 章

第 4 章 身份认证、授权与访问控制

本章定义 FileBolt 的身份体系、token 设计与访问控制边界:下载与上传使用短期访问 token(会话型、查表、到期失效、作用域隔离)控制密文与 manifest 的访问;发送方的管理操作使用长期登录 token(登录后存储于本地)授权。系统必须支持撤销,并保证审计数据仅对发送方可见。

4.0 本章概览

  • 短期访问 token:用于上传/下载密文与读取 manifest;服务端会话型(查表);MUST 绑定 transferId;MUST 按作用域区分; MUST 到期失效。
  • 长期登录 token:用于发送方管理操作(删除/撤销/审计查看等);客户端存储;MUST NOT 作为下载方访问密文的凭据。
  • 密钥与授权分离:token 只控制“是否能取到密文/manifest”,不提供解密能力;解密能力由 CEK(URL fragment)决定(详见第 5 章)。

4.1 身份体系

4.1.1 付费用户身份

  • 系统存在付费用户身份体系,用于发送方管理与订阅相关功能。
  • 登录方式为一次性 magic link(例如通过邮箱验证)。
  • 登录成功后,客户端获得长期登录 token 并在本地保存,用于后续管理操作。

4.1.2 下载方身份

  • 下载链路可设计为无需账户。
  • 下载方能否获得明文取决于是否拥有 CEK(URL fragment),而非账户身份(详见第 5 章)。

4.2 授权模型与 token 分层

4.2.1 token 分层原则

系统使用两类 token,职责严格分离:

  1. 短期访问 token(会话型、查表):用于上传/下载密文分片与读取 manifest; MUST 到期失效;MUST 绑定 transferId;MUST 按作用域区分(最小权限)。
  2. 长期登录 token(本地保存):用于发送方管理操作(删除/撤销/审计查看等); MUST NOT 用作下载方读取密文的凭据;MUST NOT 替代短期访问 token。

4.2.2 作用域(Scope)示例

  • upload_chunk:上传密文分片
  • read_manifest:读取 manifest(公开参数与分片映射)
  • read_chunk:读取密文分片

服务端 MUST 校验:transferId + scope + 过期时间,并拒绝任何不匹配或过期 token 的请求。

4.3 上传授权

  • 上传密文分片 MUST 需要 upload_chunk 作用域短期访问 token。
  • 服务端 MUST 校验 token:transferId、scope、过期时间。
  • token 过期后上传 MUST 被拒绝;不得通过“自动延长”绕过到期控制(除非重新签发并可审计)。
  • 服务端与对象存储 MUST NOT 接触 CEK 或明文内容。

4.4 下载授权

  • 读取 manifest MUST 需要 read_manifest 作用域短期访问 token。
  • 读取密文分片 MUST 需要 read_chunk 作用域短期访问 token。
  • token 过期后下载 MUST 被拒绝。
  • 仅持有 token 不等于可获得明文:没有 CEK 时只能获得密文;有 CEK 但 token 过期/无效时也无法继续获取密文(密钥与授权分离)。

4.5 撤销与提前失效

  • 发送方 MUST 能通过删除 transfer 或移除文件,使下载提前失效。
  • 撤销后,服务端 MUST 拒绝为目标 transfer 签发或续期短期访问 token。
  • 撤销后,服务端 MUST 拒绝相关 manifest/密文读取请求(包括已有 token 的后续访问,按实现可通过查表失效或等价机制实现)。

4.6 审计与权限隔离

  • 系统 MUST 记录并向发送方展示下载次数/进度等审计信息。
  • 审计视图与相关接口 MUST 仅对发送方开放,需要长期登录 token(或等价发送方身份授权)。
  • 下载方 MUST NOT 获取发送方审计视图数据;下载相关 API MUST 返回最小必要信息,不包含发送方审计字段。

4.7 日志与敏感数据最小化

4.7.1 服务端

  • 服务端日志与错误上报 MUST NOT 包含 CEK、URL fragment(#...)或可推导密钥材料。
  • 服务端日志 MUST NOT 记录访问令牌原文;如需定位问题,SHOULD 使用脱敏后的 token 标识(例如哈希或内部 ID)。
  • 如记录请求 URL,MUST 避免记录可能含敏感信息的 query(按实际实现做白名单字段记录)。

4.7.2 客户端

  • 客户端日志与错误上报 MUST NOT 包含 location.hash 或包含 fragment 的完整 URL。
  • 生产环境调试日志 SHOULD 默认关闭或最小化,避免输出 token、noncePrefix 等材料。

4.8 相关 Claim IDs

本章内容在 Claim IDs 总表中的对应条目(以总表为唯一权威入口):

  • AUTH-TOKEN-01 :短期访问 token(会话型、查表、到期失效)
  • AUTH-SCOPE-01 :作用域隔离(read_manifest / read_chunk / upload_chunk)
  • AUTH-PAID-01 :付费用户 magic link 与长期 token(发送方管理)
  • REVOKE-01 :撤销与提前失效
  • AUDIT-01 :审计仅对发送方可见
  • LOG-01 :日志/上报不包含 CEK、fragment 或可推导材料