Logo

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

第 8 章 隐私与零知识设计说明

本章以“边界清晰、默认安全、最小化”为原则,解释 FileBolt 的隐私与零知识(Zero-Knowledge)设计: 系统对文件内容的承诺、URL fragment 的隐私影响、发送方审计数据的隔离边界,以及用户侧风险与最佳实践。 本章不改变第 5 章定义的加密与密钥管理规范,而是从隐私与使用视角说明这些机制意味着什么、以及如何更安全地使用。

8.0 本章摘要

FileBolt 的零知识承诺围绕“文件内容明文”展开:解密所需的内容加密密钥(CEK)仅在客户端生成与使用; 服务端、对象存储与日志体系不持有 CEK,因此无法在正常运行与常规运维条件下解密文件内容。 与此同时,隐私不等同于完全匿名:为提供服务、抵御滥用与保障稳定性,系统仍可能处理少量与内容无关的安全信号, 但必须坚持最小化原则,并且不记录 URL fragment、CEK 或任何可推导密钥材料。

  • MUST:CEK 仅在客户端生成与使用,服务端不可获得。
  • MUST:URL fragment 不进入服务端请求与日志;客户端与服务端日志/上报不得包含 fragment。
  • MUST:审计数据仅对发送方可见,下载方不可见。
  • SHOULD:提供用户侧最佳实践,降低误转发、终端被控与剪贴板泄露风险。

8.1 零知识定义与系统承诺(服务端不可得 CEK)

本白皮书中“零知识(Zero-Knowledge)”指:

  • 内容加密密钥(CEK)MUST 仅在客户端生成与使用:发送方浏览器本地生成 CEK 并完成加密; 接收方浏览器本地使用 CEK 解密。
  • 服务端 MUST NOT 获取 CEK:服务端、对象存储与日志体系不存储、不转发、不派生、不回传 CEK(或可推导 CEK 的材料)。
  • 服务端仅处理密文与必要元数据:包括密文分片、分片索引/长度、到期时间、访问控制策略与下载计数等; 这些信息不足以推导文件明文。
  • 密钥不可恢复:若用户丢失 CEK 或包含 CEK 的链接片段,FileBolt MUST NOT 提供找回/重置以解密历史文件的能力。

8.1.1 零知识边界的限制

  • 零知识保护的是文件内容明文,不等同于对所有元数据的完全隐匿。
  • 若终端设备被控制(恶意软件、恶意扩展、远程协助工具等),攻击者仍可能窃取地址栏/剪贴板中的链接或内存中的密钥材料。
  • 若用户主动把完整链接转发给不可信第三方,等价于授予对方解密能力。

8.2 URL fragment 与隐私影响(复制、粘贴、Referrer 等)

FileBolt 的分享链接通常使用 URL fragment(“#” 之后部分)承载 CEK(或其编码表示)。 按浏览器标准,fragment 不会随 HTTP 请求发送到服务器,因此可实现“密钥仅在客户端可见”的交付方式。 但在实际使用中,fragment 仍可能通过用户行为或终端环境间接泄露。

8.2.1 复制与转发

  • 完整链接通常同时包含资源定位(path/query)与解密材料(fragment)。
  • 用户转发完整链接等价于授予解密能力;用户 MUST 仅向可信接收方分享完整链接。
  • 在高敏场景,用户 SHOULD 采用双通道传递(例如:一条消息发 URL 主体,另一路径发 fragment/口令)。

8.2.2 Referrer 与外链跳转

  • fragment 不会被作为 Referer 发送,但 URL 的非 fragment 部分仍可能在外链跳转中泄露。
  • 下载/解密页 SHOULD 设置严格 Referrer-Policy,并避免加载第三方资源(详见第 9 章)。
  • 下载/解密页 SHOULD 尽量减少外链跳转与第三方嵌入。

8.2.3 日志与错误上报

  • 客户端与服务端日志/错误上报 MUST NOT 包含 location.hash 或包含 fragment 的完整 URL。
  • 客户端若需要上报当前 URL,MUST 先清理 fragment,并按需清理敏感 query; 服务端 MUST 对 URL 字段执行二次清洗与脱敏。

8.2.4 地址栏清理

  • 客户端 SHOULD 在解析 fragment 后尽早移除地址栏中的 #...(例如使用 history.replaceState),降低截图/肩窥/会话记录带来的泄露风险。
  • 清理行为 MUST 不影响下载/解密流程的正确性。

8.3 发送方审计数据的隐私边界(下载方不可见)

FileBolt 提供发送方审计能力(例如下载次数、下载进度、时间窗口内活动)以支持交付确认、合规留痕与业务证明。 该能力必须与下载方视图严格隔离。

  • MUST:审计数据仅对发送方可见;下载方不可通过任何 API、UI、缓存或错误信息获取发送方审计视图数据。
  • MUST:审计相关接口必须使用发送方身份授权(长期登录 token 或等价机制),不得被下载链路的短期 token 访问。
  • SHOULD:审计信息最小化展示(计数、时间、状态),避免默认展示可识别个人身份的细粒度数据。
  • MUST:任何“向下载方展示审计信息”的能力默认关闭,并要求发送方明确启用。

8.4 用户侧风险提示与最佳实践

为最大化零知识带来的实际安全收益,用户侧应理解:分享链接属于能力型凭据(capability)。 下列建议用于降低误发、终端被控与环境风险。

8.4.1 链接分享

  • SHOULD:仅向可信接收方分享完整链接;避免在公共频道、工单系统、可被搜索/归档的平台粘贴完整链接。
  • SHOULD:高敏场景使用双通道传递或额外保护(例如有效期、下载次数限制、撤销)。
  • SHOULD:发现误发时立即撤销/删除 transfer,使下载失效(参见第 6 章与第 4 章撤销机制)。

8.4.2 终端与浏览器环境

  • SHOULD:避免在公共设备或不可信受管控终端处理敏感文件。
  • SHOULD:高敏场景禁用未知来源扩展,使用干净浏览器 profile。
  • SHOULD:避免使用会记录剪贴板/历史/会话的工具在敏感传输中复制完整链接。

8.4.3 剪贴板与截图

  • SHOULD:发送后及时清理剪贴板记录(尤其是系统剪贴板历史功能开启时)。
  • SHOULD:避免在屏幕共享/录屏状态下展示包含敏感链接的地址栏。

8.5 数据最小化与可识别信息(PII)处理原则

FileBolt 的默认目标是尽量少处理与个人身份相关的数据,并将必要的安全与运行信号限定在最低限度。 本章不替代隐私政策,但给出白皮书层面的工程原则。

  • 最小化:仅处理提供服务所需的最小数据;避免收集与内容无关但可识别身份的字段。
  • 目的限定:安全与风控数据用于防滥用与稳定性保障,不用于与其无关的目的。
  • 保留期:运行与安全日志应设置最短可用保留期并自动删除(参见第 6 章)。
  • 脱敏:对可能含敏感信息的字段进行脱敏/截断(例如令牌标识、IP 仅保留必要粒度等)。
  • 第三方最小化:下载/解密页不加载第三方脚本;第三方监控/统计若存在,应仅在非解密页面启用,并避免上报敏感字段(详见第 9 章与第 10 章)。

8.6 与隐私政策/合规页的关系

白皮书解释“系统如何在技术上保护内容与隔离权限”,隐私政策解释“平台处理哪些数据、用于什么目的、保留多久、用户有哪些权利”。 二者应保持一致,且以对外发布的隐私政策为法律文本。

  • SHOULD:隐私政策明确“密文内容”“必要元数据”“账户与计费数据(若适用)”“安全与风控数据”的分类与用途。
  • SHOULD:提供用户支持渠道,用于数据请求与安全问题咨询。
  • MUST:隐私政策与实现不得与零知识承诺冲突(例如不得声明“平台可恢复密钥解密内容”)。

8.7 相关 Claim IDs(预留)

本章涉及零知识边界、fragment 处理、审计隔离与日志最小化等声明。 对应的 Claim IDs 将补充到 附录:Claim IDs 总表 中,并以总表为唯一权威入口。