Double Encryption

双重加密机制:隧道层 + 传输层两重封装

单层加密的现实困境是:一旦攻击者掌握单点密钥,整条链路即被还原。快连的做法是在标准隧道之上叠加一层独立协商的传输层加密,两层使用不同的密钥材料与不同的派生路径,任意一层被攻破,另一层依然完整。

Why Two Layers

为什么单层加密不够用

🔑

密钥集中风险

单层方案把所有安全性押在一份会话密钥上。无论是被内存读取、被弱随机数泄露,还是被实现层的边界错误波及,整条链路一次失守。

🧱

实现漏洞可被放大

加密套件调用、随机数生成、认证标签校验中的任一缺陷,在单层结构中直接等价于明文暴露。外层加密可以吸收这类实现层缺陷。

🛡️

合规与审计要求

企业安全审计常要求"密钥分域管理":不同数据域使用不可相互推导的密钥。双重加密天然满足这一要求,也便于分阶段换密钥。

Layer Structure

从应用到公网:数据经过的四层结构

明文只在设备内部与回环网卡上短暂存在,一旦进入隧道就被两重加密包裹。

应用层
浏览器 / App / 系统更新 明文仅存在于设备内存与回环接口,不写入磁盘,不进入系统日志;应用层无需感知隧道存在
隧道层
第一重加密 · 隧道封装 X25519 完成密钥交换,派生隧道会话密钥;对整条隧道做记录层封装并维护数据通道握手,任何单点抓包仅得到无意义密文
传输层
第二重加密 · 载荷二次封装 由隧道层会话材料单向派生出独立传输层密钥,对隧道内载荷再加密一次,认证标签独立校验
公网链路
运营商 / 校园网 / 机场 Wi-Fi → 落地节点 链路上只观察到两组嵌套的加密字节流;即便叠加混淆模式,也仅呈现为常规 TLS 会话形态
Handshake

一次连接的完整握手流程

从点击连接到可以访问外网,快连需要完成下面七个步骤。全过程不涉及任何明文数据外发。

发起隧道握手

客户端向落地节点发送隧道握手请求,携带客户端支持的密钥交换算法列表与会话随机数。此时尚未产生任何业务流量。

X25519 密钥交换

双方各自生成临时密钥对并交换公开部分,结合对端公开部分与握手随机数计算出共享密钥。该过程具备前向保密特性,落地节点长期持有私钥也无法解密历史会话。

隧道认证

使用派生密钥对握手消息做认证校验,确认对端身份与握手未被篡改。校验失败立即终止,不进入后续流程。

派生传输层密钥

以隧道共享密钥为输入,通过单向密钥派生函数得到传输层密钥。该过程为单向,落地节点保存的隧道密钥无法反推出传输层密钥本体。

隧道层加密生效

隧道记录层启动,此后传输的所有字节先经隧道层加密封装。此时单点抓包得到的是不可解析的密文记录。

传输层密钥确认

在隧道内部完成传输层密钥确认握手,确保第二重加密可用且两端密钥一致。这一步完全发生在已加密的隧道内,公网不可见。

接管路由并放行

客户端接管系统路由与 DNS 解析权限,业务流量开始按隧道 → 传输层顺序封装发出。若此时隧道异常,终止开关会阻止路由被放行。

Algorithms

算法组合与选择口径

快连在两重加密中分别使用不同用途的算法:隧道层偏重密钥协商与跨平台兼容性,传输层偏重移动端与低算力设备的吞吐。

快连双重加密算法组合与适用场景
层密钥交换数据通道算法认证标签选择理由
隧道层 X25519(ECDHE 曲线) ChaCha20-Poly1305 Poly1305 在无硬件加速的设备上仍能保持高吞吐,且不受 AES-NI 支持情况影响
隧道层(兼容模式) ECDHE P-256 AES-256-GCM GCM 内置 为不支持 X25519 的老旧设备保留的兼容路径
传输层 由隧道层单向派生 AES-256-GCM GCM 内置 桌面端具备 AES-NI 时性能最优,适合高带宽场景
传输层(移动端) 由隧道层单向派生 ChaCha20-Poly1305 Poly1305 手机 CPU 无 AES 硬件加速时更省电
附加完整性 — HMAC-SHA384 帧校验 HMAC 在启用混淆模式时对封装后记录做二次校验

已明确不使用的方式

  • 不使用 ECB 模式,密文块之间无模式化重复。
  • 不使用固定 IV/nonce,每次会话与每个方向均取新随机值。
  • 不使用 RC4、DES、3DES 等过时算法。
  • 不提供"关闭认证标签"的降级开关。
  • 不在客户端内保留任何静态主密钥。

随机数来源

  • 握手随机数取自操作系统密码学安全随机源(CSPRNG)。
  • 每个连接独立生成,不做跨会话复用。
  • 落地节点同样使用 CSPRNG 生成响应随机数。
  • 随机数不落盘、不上传、不参与日志记录。
Key Management

密钥派生与轮换

加密强度不仅取决于算法,更取决于密钥是否长期有效。快连的会话密钥遵循"短生命周期 + 定期轮换 + 用后即弃"原则。

派生路径
隧道共享密钥 → HKDF 单向派生 → 隧道数据密钥 + 传输层密钥 + 认证密钥。三者材料相互独立,不可相互推导。
轮换周期
隧道数据密钥按流量量与时长双阈值轮换(默认每 1 GB 或每 2 小时,取先到者);传输层密钥随隧道重建同步更换。
前向保密
采用 X25519 临时密钥交换,落地节点不保存长期私钥用于解密历史会话。即使节点密钥事后泄露,历史流量仍不可还原。
会话结束处理
连接关闭或切换节点时,会话密钥从内存中立即擦除;TLS 会话票据与域名缓存同步清除,不做任何落盘留存。
密钥分发
节点地址与连接参数由服务器在鉴权成功后动态下发,配置文件本身不包含任何可用于建立连接的密钥材料。

密钥轮换时序

密钥材料生命周期
阶段隧道数据密钥传输层密钥握手随机数
连接建立生成派生生成生成
稳态传输按阈值轮换随隧道同步不再使用
切换节点销毁重建销毁重建重新生成
连接关闭内存擦除内存擦除内存擦除
Performance

加密开销实测

下表为官方实验室在 100 Mbps 带宽、30ms RTT 条件下测得的典型值,用于说明量级。实际数值随设备算力、线路质量与节点负载浮动。

双重加密握手耗时与吞吐对比(官方实验室典型值)
配置握手耗时相对单层稳态吞吐(100 Mbps 线路)CPU 占用(4 核设备)
单层加密(对照)约 62 ms基准约 98 Mbps约 6%
仅隧道层约 78 ms+26%约 97 Mbps约 9%
双重加密约 93 ms+50%约 96 Mbps约 14%
双重加密 + 混淆约 121 ms+95%约 95 Mbps约 17%
双重加密 + 混淆 + 终止开关约 121 ms+95%约 95 Mbps约 17%
结论:加密开销主要发生在握手阶段,双重加密的稳态吞吐损失约 2–4%。终止开关不参与数据通道,仅在异常路径生效,因此不影响吞吐。

重连耗时对比(示例值)

单层加密约 0.6 s
双重加密约 1.1 s
双重加密 + 混淆约 1.5 s
Enable

如何开启双重加密

双重加密位于客户端「设置 → 安全」面板,与混淆模式、终止开关在同一处配置。

🖥️

Windows / macOS

  1. 启动客户端并完成登录。
  2. 进入「设置 → 安全」。
  3. 将「双重加密」切换为开启。
  4. 断开并重连一次,使新会话生效。

状态栏显示"双层加密已生效"即表示协商完成。

📱

Android / iOS

  1. 进入「我的 → 设置」。
  2. 找到「安全增强」分组。
  3. 开启「双重加密」开关。
  4. 系统提示时允许重新配置 VPN。

移动端切换加密模式会短暂重建隧道,约 1–2 秒。

✅

确认生效

  • 状态栏或连接详情显示双层加密标识。
  • 连接详情中可见当前生效的算法组合。
  • 若节点不支持双层加密,客户端会明确提示而非静默降级。
重要:若所选节点不支持双重加密,客户端会提示并保持单层连接,不会假装已加密。请在加密对比页查看完整权衡,或切换到支持双层加密的节点。

下载客户端 查看完整五步教程

Limitations

双重加密不能解决什么

明确能力边界,比堆砌功能更重要。以下问题双重加密无法解决。

无法解决的问题

  • 设备已中毒:若客户端本身被植入恶意代码,加密通道会忠实地把被劫持的数据送出去。
  • 信任端泄密:登录网站的账号密码在被解密的一端就已经暴露,加密无法弥补。
  • 服务端记录:隧道架构决定了服务端可见明文内容,这取决于服务方的日志策略而非加密强度。
  • 流量特征识别:加密解决内容可读性,不解决连接模式识别问题,需配合混淆模式。
  • 断线泄露:加密不阻止明文回退,需配合终止开关。
  • 追踪与指纹:浏览器指纹、账号行为特征不属于加密范畴。

因此快连采用组合方案

双重加密
解决"内容被读"的风险
混淆模式
降低"被识别为代理流量"的概率
终止开关
消除"断线后明文直连"的窗口
隐私栈
约束"服务端留存什么",减少事后可回溯面
独立审核
验证"实现与设计一致"

开启双重加密只需一次设置

安装客户端后,在「设置 → 安全」中开启双重加密,与终止开关配合使用可获得完整防护。

前往下载 了解终止开关