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。