跳转至

威胁模型 (Threat Model - Chinese)

了解 R-VPN 的保护范围及其安全目标。


安全目标

R-VPN 旨在提供以下安全特性:

1. 机密性 (Confidentiality)

所有应用数据均使用 AEAD(关联数据的认证加密)密码进行加密。流量内容对任何第三方(包括网络观察者、ISP 和中间基础设施)均不可访问。

2. 前向保密 (Forward Secrecy)

即使长期密钥在未来被泄露,过去的会话仍然保持安全。这是通过生成会话专用密钥的临时密钥交换实现的,这些密钥不会被存储。

3. 后妥协安全 (Post-Compromise Security)

通过双棘轮算法(Double Ratchet Algorithm),未来会话可以从密钥泄露中恢复。即使当前会话密钥被暴露,协议也能随时间"自我修复",限制漏洞窗口。

4. 不可检测性 (Undetectability)

流量被设计为与合法的 HTTPS/WebSocket 流量无法区分。这可以防止流量分类系统识别和阻止 R-VPN 连接。

5. 合理否认性 (Plausible Deniability)

服务器向未认证的客户端呈现合法的网站内容。对于外部观察者来说,服务器看起来是一个正常的网络服务,为 VPN 操作提供否认性。


对手能力

被动观察者 (Passive Observer)

能力: - 流量分析和流监控 - 时序模式观察 - 流量监控和统计收集 - 连接持续时间跟踪

缓解措施: - 通过填充掩盖有效载荷大小的流量填充 - 恒定速率传输模式 - 使用标准密码套件的 TLS 1.3 加密 - WebSocket 帧模拟正常网络流量

主动攻击者 (Active Attacker)

能力: - 数据包注入和修改 - 重放攻击 - 中间人攻击 - 连接中断

缓解措施: - 双棘轮序列号防止重放 - AEAD 认证标签检测篡改 - X3DH 密钥协商提供认证 - 完全前向保密限制暴露

DPI 系统 (深度包检测)

能力: - 协议指纹识别 - 流量分类 - 数据包模式的统计分析 - TLS 指纹识别

缓解措施: - 基于 TLS 1.3 的 WebSocket(标准网络技术) - 浏览器级流量模拟 - 随机填充防止基于大小的指纹识别 - 不带自定义扩展的标准 TLS 握手

审查系统 (Censorship Systems)

能力: - 对可疑 VPN 服务器的主动探测 - 域名和 IP 地址封锁 - 基于分类的流量限制 - 证书固定强制执行

缓解措施: - 域名前置能力(计划中) - CDN 集成实现 IP 多样性(计划中) - 网站伪装(诱饵)用于未认证请求 - 无可区分的协议签名

密钥泄露 (Compromised Keys)

能力: - 先存储后解密攻击 - 使用被盗密钥解密会话 - 如果身份密钥被盗则进行冒充

缓解措施: - 通过双棘轮实现后妥协安全 - 对称棘轮提供前向保密 - 定期密钥轮换(签名预密钥约每周轮换) - 一次性预密钥用于临时会话

量子对手 (Quantum Adversary)

能力: - 使用量子计算的先存储后解密 - 破解传统非对称加密

缓解措施: - 可用的混合后量子密码模式(ML-KEM + X25519) - 后量子密钥封装机制 - 面向未来的加密设计


R-VPN 保护的内容

内容保护

  • 所有应用层数据均进行端到端加密
  • 网络观察者无法访问有效载荷内容
  • DNS 查询通过加密连接隧道传输
  • 线路上无明文数据暴露

元数据保护

  • 通过填充掩盖连接时序模式
  • 通过恒定速率模式混淆流量大小
  • 协议头部被加密
  • 无可区分的数据包大小模式

目的地保护

  • 最终目的地对网络观察者隐藏
  • 流量看起来仅发往 VPN 服务器
  • 无泄露真实目的地的 DNS 泄漏
  • 所有流量通过单个 WebSocket 连接多路复用

身份保护

  • 客户端身份经过认证但不暴露
  • 协议消息中无持久标识符
  • Ed25519 身份密钥提供加密认证
  • 没有密钥泄露则无法跨会话关联

R-VPN 不保护的内容

网络活动模式

虽然内容已加密,但某些元数据仍可能泄露: - 连接建立时间 - 整体连接持续时间 - 大致流量大小(无恒定速率模式时) - 网络活动的存在(连接存在的事实)

受损端点

如果客户端或服务器设备受损: - 该设备的所有流量对攻击者可见 - 可以提取当前会话密钥 - 在修复之前未来会话可能受损

流量大小分析

未启用恒定速率模式时: - 持续高吞吐量连接可能被检测到 - 流量峰值可揭示使用模式 - 上传/下载比例可能被分析

全球级对手

具有全球可见性的资源充足对手可能: - 关联进出 VPN 的流量 - 跨网络进行时序分析 - 部署有针对性的主动攻击

应用层泄漏

R-VPN 无法防范: - 浏览器指纹识别 - 应用级元数据泄漏 - 用户行为模式 - 在恶意网站上输入的凭据


攻击面

服务器 (Server)

组件: - TLS 终止点(TLS 1.3) - 提供合法内容的诱饵网站 - VPN 协议处理层 - WebSocket 连接处理程序

风险: - 服务器泄露暴露当前会话密钥 - 内存转储可能暴露临时密钥 - 加密操作的侧信道攻击

缓解措施: - 双棘轮限制暴露窗口 - 最小化日志记录(无流量日志) - 内存安全的 Rust 实现 - 定期安全更新

客户端 (Client)

组件: - 设备安全和操作系统保护 - 密钥存储(内存和磁盘) - 本地 SOCKS5 代理 - 浏览器/扩展集成

风险: - 客户端泄露暴露当前和未来会话 - 从内存中提取密钥 - 加密前拦截流量的恶意软件

缓解措施: - 硬件支持的密钥存储(计划中) - 定期密钥轮换 - 最小权限操作 - Rust 中的安全内存处理

网络 (Network)

组件: - 客户端和服务器之间的路径 - 中间路由器和代理 - DNS 基础设施

风险: - 流量拦截 - 中间人攻击 - DNS 投毒

缓解措施: - 具有证书验证的 TLS 1.3 - 所有会话的前向保密 - DNS over HTTPS (DoH) 集成 - 证书固定选项

管理接口 (Management Interface)

设计原则: 零暴露管理

实现: - 无面向公共互联网的管理 API - 用于服务器管理的本地 CLI - 仅通过 VPN 隧道的管理访问 - 通过本地文件配置

缓解的风险: - API 利用 - 通过网络窃取凭据 - 未经授权的管理访问


安全属性总结

属性 保证 机制
前向保密 泄露当前密钥不会暴露过去会话 临时密钥交换、对称棘轮
后妥协安全 即使当前密钥泄露,未来会话仍安全 双棘轮 DH 棘轮
认证 服务器身份经过验证 Ed25519 签名预密钥
机密性 所有数据已加密 ChaCha20-Poly1305 AEAD
完整性 检测到篡改 Poly1305 认证标签
不可检测性 流量显示为 HTTPS 基于 TLS 1.3 的 WebSocket
否认性 无持久可验证状态 临时会话密钥

限制和注意事项

流量分析

即使使用加密,复杂的流量分析仍可能通过以下方式区分 VPN 流量: - 数据包传输的时序模式 - 流量模式和突发特征 - 连接行为和持续时间 - WebSocket 帧模式

建议: 在高威胁环境中启用恒定速率模式以获得最大隐身性。

密钥泄露场景

如果身份密钥泄露: - 过去会话: 受前向保密保护(无法解密) - 当前会话: 在下次 DH 棘轮步骤之前易受攻击 - 未来会话: 如果生成新身份密钥则受保护

建议: 定期轮换密钥,如果怀疑泄露则重新生成身份密钥。

端点泄露

如果设备被恶意软件或物理访问入侵: - 该设备的所有流量对攻击者可见 - 来自该设备的未来 VPN 连接可能受损 - 密钥可能从内存中提取

建议: 在可用时使用硬件安全模块,保持系统更新,并使用端点安全工具。

量子计算威胁

虽然当前会话受到保护,但加密流量的长期存储可能带来风险: - 当前的 X25519 密钥交换易受量子攻击 - 混合 PQC 模式提供保护但不是默认设置

建议: 为敏感的长期通信启用混合 PQC 模式。


与替代方案的比较

属性 R-VPN 传统 VPN Tor
前向保密 有时
后妥协安全
不可检测性
速度
延迟
复杂性
单跳 否(3+ 跳)
出口节点信任 不需要 需要 需要
网站伪装

R-VPN 与传统 VPN

优势: - 更好的抗流量分类能力 - 通过棘轮实现后妥协安全 - 通过网站伪装实现合理否认性 - 无 VPN 协议签名

权衡: - 更复杂的设置 - 较新的代码库(较少实战检验)

R-VPN 与 Tor

优势: - 显著更高的性能 - 更低的延迟 - 单跳设计(无出口节点信任问题) - 更适合高带宽应用

权衡: - 单点信任(服务器) - 对全球级对手的匿名性较低 - 无内置电路轮换


最佳实践

对于用户

  1. 使用最新版本 - 定期发布安全改进
  2. 定期轮换密钥 - 定期密钥轮换限制暴露窗口
  3. 验证服务器密钥 - 首次使用时始终验证服务器公钥
  4. 启用认证 - 在 SOCKS5 代理上使用认证
  5. 启用恒定速率模式 - 在限制性环境中获得最大隐身性
  6. 监控异常 - 注意意外的连接行为

对于运营者

  1. 保持服务器软件更新 - 及时应用安全补丁
  2. 使用强 TLS 配置 - 仅使用现代 TLS 1.3、强密码套件
  3. 实施适当的诱饵内容 - 令人信服的网站伪装
  4. 监控服务器日志 - 注意探测和攻击尝试
  5. 定期密钥轮换 - 自动化签名预密钥轮换
  6. 安全密钥存储 - 使用适当措施保护身份密钥

安全报告指南

如果您发现 R-VPN 中的安全漏洞:

应该做

  • 不要公开披露,直到修复可用
  • 通过私人渠道联系开发团队
  • 提供详细报告,包括:
  • 漏洞描述
  • 复现步骤
  • 潜在影响评估
  • 建议的缓解措施(如有)
  • 给予合理的修复时间
  • 与团队协调披露时间线

不应该做

  • 不要超出最小验证范围利用漏洞
  • 不要访问他人的数据或系统
  • 在修复发布前不要公开披露
  • 不要将赔偿作为披露条件

联系方式

应通过安全渠道向项目维护者报告安全问题。请查看项目仓库获取当前联系信息。


变更日志

版本 变更
v0.1.0 初始发布,支持 X3DH + 双棘轮
v0.2.0 添加混合 PQC 模式(ML-KEM + X25519)
未来 增强流量整形、硬件密钥支持