安全与隐私白皮书(总览)第 4 章
第 4 章 身份认证、授权与访问控制
本章定义 FileBolt 的身份模型、令牌分层与访问控制边界。 上传与下载使用短期访问令牌(服务端会话、查表式、会到期、带作用域)来管控密文与 manifest 的访问。 发送方的管理操作使用存储在客户端的长期登录令牌。系统 MUST 支持撤销,且审计数据 MUST 仅对发送方可见。
4.0 概要
- 短期访问令牌:管控密文/manifest 的访问;服务端会话(查表);MUST 绑定 transferId;MUST 带作用域;MUST 到期失效。
- 长期登录令牌:用于发送方管理操作(删除/撤销/审计);存储在客户端;MUST NOT 被接收方用于访问密文。
- 密钥与授权分离:令牌只控制对密文的访问;解密能力来自 URL fragment 中的 CEK(参见第 5 章)。
4.1 身份模型
- 系统为发送方管理提供付费用户身份模型。
- 发送方登录 MAY 使用一次性 magic link;认证成功后,客户端存储长期登录令牌。
- 默认下载时接收方无需拥有账户(参见 UX 文档);访问由链接/令牌控制。
4.2 授权模型与令牌分层
系统使用两类令牌,并严格分离各自的职责:
- 短期访问令牌(会话 / 查表):用于密文的上传/下载与 manifest 读取;MUST 绑定 transferId;MUST 到期失效;MUST 按操作划分作用域。
- 长期登录令牌:用于发送方管理操作;MUST NOT 授予解密能力。
4.2.2 作用域示例
upload_chunk:为指定 transferId 上传密文分片。read_manifest:读取指定 transferId 的 manifest。download_chunk:下载指定 transferId 的密文分片。
4.3 上传授权
- 上传 API MUST 在接收密文之前校验令牌的作用域与 transferId 绑定。
- 分片上传 SHOULD 按 (transferId, fileId, chunkIndex) 保持幂等。
- 遇到无效令牌或不匹配时,系统 MUST 失败关闭。
4.4 下载授权
- 访问 manifest 与密文 MUST 要求有效且带作用域的令牌;令牌 MUST 有时间限制。
- 接收方 MUST NOT 能够枚举其他 transfer,或访问所绑定 transferId 之外的分片。
- 为防止滥用 MAY 实施速率限制(参见第 7 章),但不得破坏可续传性。
4.5 撤销与提前失效
- 发送方 MUST 能够撤销 transfer;撤销 MUST 使令牌无法再用于后续访问。
- 撤销后,在可行的情况下 SHOULD 触发密文的清理/加速过期(TTL)。
- 接收方界面 MUST 清楚提示已撤销/已过期的状态以及下一步操作(联系发送方)。
4.6 审计与权限隔离
- 交付证据(下载记录、次数)默认 MUST 仅对发送方可见。
- 审计 API MUST 要求发送方身份认证,且 MUST 与接收方的访问令牌相互隔离。
4.7 日志与敏感数据最小化
- 日志 MUST NOT 包含 URL fragment、CEK 或可推导的密钥材料。
- 日志 SHOULD 尽量减少个人数据,聚焦与安全相关的事件(令牌失败、撤销、速率限制)。
- 错误信息 MUST 具备可操作性,但不得泄露机密。
4.8 相关 Claim IDs
- 权威的对应关系请参阅 附录:Claim IDs。