Logo

第 2 章 威胁模型与信任边界

本章用于建立统一的威胁模型与信任边界定义:明确哪些资产需要保护、攻击者可能具备的能力、哪些安全假设成立, 以及在认证失败或参数不一致时系统必须如何“失败关闭”。后续章节(加密、token、Web 安全、日志等)均以本章为依据。

文档信息

白皮书版本
v1.0
最后更新
2026-01-14

上一章: 第 1 章 概述与安全范围

2.1 资产清单

本节列出系统中需要保护或需要严格控制访问的关键资产:

  • 文件明文内容(最高敏感):用户上传文件的未加密内容,仅应在客户端短暂存在。
  • CEK(内容加密密钥):用于解密明文内容的密钥材料,必须保持在客户端,不得被服务端获得。
  • 密文分片与 manifest:加密后的分片与公开参数/映射集合;密文本身可被存储侧读取但不应导致明文泄露。
  • 短期访问 token:会话型、查表、到期失效,控制密文与 manifest 的访问。
  • 长期登录 token:用于付费用户管理能力(撤销、删除、审计查看等),存储于 localStorage。
  • 审计数据:下载次数/进度等,仅发送方可见,属于访问控制与隐私边界的一部分。

资产分类目的在于指导“最小化原则”:对于更高敏感的资产,应采用更严格的隔离、最短生命周期、最低可见性与更强的审计策略。

2.2 攻击者模型

系统在设计与实现时必须覆盖以下主要攻击者类型:

  1. 网络攻击者:可监听或尝试篡改网络流量(中间人、劫持、降级等)。
  2. 未授权下载者:可能仅获知 transferId 或部分链接信息,尝试枚举或猜测访问路径。
  3. 存储侧读取者:可读取对象存储内容(应只能得到密文与公开参数,无法得到 CEK)。
  4. 服务端数据读取者:可读取服务端数据库/日志/监控数据(不应得到 CEK 或可推导材料)。
  5. 浏览器侧攻击者:恶意扩展/脚本/插件试图读取 fragment、剪贴板、DOM 或内存中的密钥材料。

说明:本白皮书强调“零知识”边界——即便出现存储侧或服务端数据读取风险,系统也不应泄露明文内容; 但若终端被控制(浏览器侧攻击者),零知识模型无法阻止本地窃取。

2.3 安全假设

下列假设用于限定系统在现实世界的安全边界:

  • 客户端随机性可信:浏览器使用可信安全随机源生成 CEK 与随机数(noncePrefix 等)。
  • HTTPS 访问:用户通过 HTTPS 访问站点与 API;链路中间人攻击应由 TLS 防护为主。
  • 能力型链接的使用理解:用户理解分享链接(含 fragment)等价于访问能力凭据,应谨慎传播。

若上述假设不成立(例如设备已感染恶意软件、用户在不可信环境复制完整链接),系统可以仍然满足部分目标(如密文在存储侧不可读), 但无法保证“端到端明文机密性”。

2.4 信任边界

系统将职责划分为以下边界,以限制敏感资产的可见性与生命周期:

  • 客户端:生成 CEK,执行加密/解密,短暂持有明文与密钥;应尽量减少第三方脚本与外部注入风险。
  • 服务端:生成 transferId,签发/校验 token,提供 manifest 与密文访问控制,维护审计数据;不得获得 CEK。
  • 对象存储:仅保存密文分片;假设可能被读取,但不应导致明文泄露。
  • 外部环境:网络、第三方脚本、未知扩展、复制粘贴链路、远程协助工具等,均可能成为泄露面。

关键边界要求:服务端与对象存储必须被视为“仅可见密文与公开参数”的环境;任何需要明文与 CEK 的操作必须在客户端完成。

2.5 失败关闭原则

系统必须在安全性与可用性冲突时优先保证安全性,核心要求如下:

  • 任一分片认证失败、版本/参数不一致、AAD/IV 生成规则不匹配时,客户端 MUST 失败关闭:终止处理并拒绝输出任何部分明文。
  • 系统 MUST NOT 通过跳过认证、容错解密、降级解密等方式提升可用性或“尽量成功”,以免输出被篡改的内容。
  • 失败关闭同时应遵循敏感数据最小化:错误信息与日志不得包含 fragment、CEK 或可推导材料(详见日志章节)。