Chapter 06 · Security

# 安全总纲

安全是本项目的第一优先级，且分三个互不混淆的层面：运营者安全（身份隔离）、系统安全（攻击面与数据保护）、可用性安全（被封/断网后的存活）。任何功能与安全冲突时，安全赢。

## §1威胁模型总表

资产 | 威胁 | 对策 | 详见
--- | --- | --- | ---
运营主体身份 | 服务器/域名/收款被关联追踪 | 全链路境外身份、加密货币付款、WHOIS 隐私、专用管理环境；各资产间零身份交叉 | 本章 §2
用户库（邮箱） | 控制面被入侵、备份泄露 | 管理端内网+2FA、最小攻击面、备份 age 加密 + 私钥离线、audit_log | 02/03/05 章
用户行为隐私 | 连接行为被记录/关联 | 无日志口径（仅字节/分钟）、节点零用户库（只见 dp_uuid）、DoH、Kill-switch | 本章 §4
数据面节点 | IP 被识别封锁、机器被抄 | REALITY 无指纹 + Hy2 端口跳跃、三层拓扑、判封自动换、节点无状态零数据 | 04 章
Web 入口 | 域名被墙、源站被定位、DDoS | CDN 前置、域名池 + 冷备、源站隐藏、全资产可秒建 | 05 章
资金流 | 收款账户冻结、被关联 | App 内零支付；USDT(TRC20) + 发卡店，通道可热切换，绝不绑实名账户 | 02 章 §4
客户端 | 安装包被篡改、端点被伪造 | 安装包签名 + 多渠道校验值；端点/公告更新 Ed25519 验签；敏感参数按渠道分包 | 01 章 §4

## §2身份隔离红线（继承 plan/security，任何阶段不得触碰）

红线清单

- 不得用国内真实身份注册任何环节（服务器、域名、CDN、对象存储、收款、应用商店）。
- 管理后台不得暴露公网（仅内网/白名单 + 强口令 + 2FA）。
- 节点不得保留连接日志。
- 收款不得绑定个人实名账户。
- 服务器、域名、支付、邮箱、手机号之间不得产生可被关联的身份线索；管理操作只在专用环境进行。

架构上的落实：providers 凭证、域名注册商、CDN 账号、备份存储账号全部独立身份并在文档中登记隔离关系；CI/CD 与管理操作走专用通道。

## §3系统安全基线（汇总各章）

#### 控制面

- 管理端独立监听：内网 + IP 白名单 + 2FA
- SSH 仅密钥、禁 root 口令、最小开放端口
- 密码 argon2id；JWT RS256 密钥轮换；TLS 1.3
- 验证码/兑换/登录全限流 + 失败锁定 + 防一次性邮箱
- 敏感操作全量 `audit_log`

#### 数据面

- 节点零用户库：只持有 dp_uuid 表，被抄一台不泄露任何账号
- agent ↔ 控制面双向 mTLS，证书绑节点、回收即吊销
- 节点间隧道密钥按节点对发放
- 节点无状态、无日志、无持久数据（04 章 §2）

#### 密码学口径

- 口令哈希 argon2id；激活码库内只存 SHA-256
- 端点/公告分发 Ed25519 签名，公钥随安装包内置
- 备份 age 公钥加密，私钥离线两地保存
- 内部 CA 签发 agent 证书，根私钥离线

#### 客户端

- 凭证存 Keychain / Keystore，不落明文
- Kill-switch 默认开；DoH 防 DNS 泄露；阻 WebRTC 泄露
- 安装包多渠道发布 + 校验值公示
- 敏感内置参数按分发渠道分包轮换

## §4无日志口径（写进隐私政策并据实执行）

数据 | 是否保留 | 说明
--- | --- | ---
浏览内容 / 目的地址 / DNS 查询 | 不记录 | 节点与控制面均无此数据，技术上不可补记
连接日志（谁何时连了哪个节点） | 不记录 | 节点 no-log；控制面仅 connect 校验通过与否的限流计数（短 TTL）
用量字节数 / 分钟数（按日聚合） | 保留 | 计费与免费额度所需的最小元数据（usage_daily）
账号（邮箱）、设备名、最后活跃 | 保留 | 登录与设备数限制所需；不收集真实身份

对外文案遵守设计铁律 13 的脱敏口径：「我们不记录你的浏览数据 · 端到端加密」。

## §5断网应对策略矩阵（端 × 故障）

「断网」指各类不可达事件。目标排序：① 已连接用户不掉线 → ② 能重连 → ③ 能获取新入口 → ④ 能联系到我们。

故障 \ 端 | 移动 / 桌面客户端 | Web 用户中心 | 官网
--- | --- | --- | ---
API 不可达（单域名） | 端点池自动故障转移（域名池→IP 直连→DoH 重解析），用户无感 | 同源 API 池故障转移；只读功能照常 | 纯静态，不依赖 API
API 全灭（控制面宕机） | 缓存目录 + 已下发凭证继续连接（数据面独立）；登录/兑换暂停，连接不受影响 | 暂不可用，公告位提示 | 照常；展示状态公告
节点大面积被封 | URLTest 自动切存量好节点；目录刷新拿补充节点；极端时启用内置应急节点 | 订阅导入页提示刷新订阅 | 不受影响
域名被墙 / DNS 污染 | DoH 绕污染 → 失败走 IP 直连 → 签名端点更新拿新域名 | 切镜像域名（公告/TG 广播） | 切镜像域名（≥2 活跃镜像常备）
用户本地断网（非封锁） | 连接键回 off 态 + 明确文案；Kill-switch 防泄露；网络恢复自动重连 | 浏览器原生提示 | —
一切在线途径失效 | 内置应急节点拉新目录；客户端内「联系我们」展示 TG/LINE/邮箱（离线可见） | TG 频道为最终广播渠道；安装包在 GitHub/网盘多镜像可获取

设计自检上表每个格子都不依赖「正在故障的那个组件」自身恢复——客户端兜底链（缓存 → 端点池 → DoH → 签名更新 → 应急节点 → TG）层层递降,每层的信任锚（内置公钥、应急参数）都在安装包内离线可用。

## §6安全例行制度

- 每月：灾备演练（05 章 §4）；备份恢复验证；依赖漏洞审计。
- 每季：JWT 密钥与回源鉴权轮换；伪装 SNI 评估；红线清单自查（对照 §2 逐条核）。
- 每次发版：设计验收清单（铁律 13 条）+ 脱敏文案扫描（CI 关键词检查 UI 文案资源）。
- 事件后：node_events / audit_log 复盘，更新判封阈值与 runbook。