从简单加密到完全隐身。每一代协议都解决了问题,但也带来了新的问题。
加密
混淆
TLS 伪装
QUIC 加速
0-RTT + FEC + 隐身
四项创新技术,让 Phantom 与所有其他协议从根本上不同。
客户端和服务端使用共享密钥和当前时间,独立派生出相同的会话密钥。无需密钥交换。
// 双方共享的预共享密钥 (PSK)
PSK = "base64-encoded-32-bytes"
// 当前时间窗口(30秒间隔)
TimeWindow = floor(UnixTimestamp / 30)
// 使用 HKDF 派生会话密钥
Salt = BigEndian(TimeWindow)
SessionKey = HKDF-SHA256(
PSK,
Salt,
"phantom-session-key"
)
// 派生用户 ID 用于快速过滤
UserID = HKDF-SHA256(
PSK,
nil,
"phantom-user-id"
)[:4] // 前 4 字节
// 结果:双方拥有相同的密钥
// 无需任何通信!
其他协议声称"快速握手"。Phantom 没有握手。第一个数据包就已经承载了你的真实数据。
当审查者探测你的服务器时,大多数协议会响应——从而暴露自己。Phantom 的响应是什么都没有。
func HandlePacket(data []byte) {
// 第 1 步:检查用户 ID(前 4 字节)
userID := data[:4]
if !ValidateUserID(userID) {
return // 静默丢弃。无响应。
}
// 第 2 步:验证时间戳
timestamp := data[4:6]
if !ValidateTimestamp(timestamp) {
return // 静默丢弃。无响应。
}
// 第 3 步:尝试解密
plaintext, err := Decrypt(data)
if err != nil {
return // 静默丢弃。无响应。
}
// 第 4 步:检查重放
if IsReplay(data) {
return // 静默丢弃。无响应。
}
// 只有有效数据包才能到达这里
ProcessValidPacket(plaintext)
}
传统 TCP 等待超时,然后重传。Phantom 使用前向纠错从冗余数据中即时恢复丢失的数据包。
Phantom 与所有主流代理协议在各项关键指标上的表现对比。
Phantom 在隐蔽性和简洁性方面表现卓越,同时保持了具有竞争力的性能。
| 特性 | Phantom | Hysteria 2 | Trojan | VMess | Shadowsocks |
|---|---|---|---|---|---|
| 握手延迟 | 0 RTT ⚡ | 1-2 RTT | 2 RTT | 1 RTT | 1 RTT |
| 协议指纹 | 无 | QUIC | TLS | 自定义 | 可检测 |
| 主动探测抗性 |
|
|
|
|
|
| 丢包恢复 | FEC (23%) | FEC + BBR | TCP 重传 | TCP 重传 | TCP 重传 |
| 代码规模 | ~9K 行 | ~15K 行 | ~5K 行 | ~100K+ 行 | ~3K 行 |
| 加密算法 | ChaCha20-Poly1305 | TLS 1.3 | TLS 1.3 | AES-128-GCM | ChaCha20-Poly1305 |
| 密钥交换 | PSK + TSKD | ECDHE | ECDHE | 自定义 | HKDF |
| 传输层 | UDP/TCP+TLS | QUIC | TCP+TLS | TCP/WebSocket | TCP |
| 需要证书 | 可选 | 是 | 是 | 否 | 否 |
最小攻击面,完全可审计
首包即承载真实数据
对无效数据包无任何响应
深入技术分析,揭示 Phantom 在其他协议失败之处为何能够成功。
模仿合法的 TLS 流量,混入正常的网页流量中。
不模仿任何协议。与随机噪声无法区分。
| 对比维度 | Trojan | Phantom |
|---|---|---|
| TLS 握手 | 必需(暴露) | 无 |
| 有效证书 | 必需 | 可选(TCP 模式) |
| 端口限制 | 443(模仿 HTTPS) | 任意端口 |
| JA3 指纹 | 可检测 | 无 TLS = 无 JA3 |
| 需要 SNI | 是 | 否 |
| 丢包处理 | TCP 重传 | FEC 恢复 |
Shadowsocks 开创了 PSK 方案。Phantom 继承其设计理念的同时,解决了其固有的弱点。
为想要深入了解 Phantom 底层工作原理的读者准备。
会话密钥每 30 秒更换一次。旧数据包将无法解密。
每个数据包使用 12 字节随机 Nonce。碰撞概率:2^-96。
服务端记录已见 Nonce。O(1) 时间复杂度检测重复。
没有任何协议是 100% 不可检测的。先进的 ML/AI 理论上可以对任何流量进行分类。Phantom 的目标是最大化检测成本,最小化检测可靠性。
一条命令部署服务端。零配置客户端。
curl -fsSL https://get.phantom.dev | bash -s -- \
--domain vpn.example.com \
--cf-token "YOUR_CLOUDFLARE_TOKEN" \
--cf-zone-id "YOUR_ZONE_ID"
复制服务端输出的分享链接:
粘贴到 Phantom GUI → 选择服务器 → 连接。完成!
phantom-server regenerate-psk 重新生成,并将新的分享链接分发给用户。由于基于时间的密钥派生,过去的会话无法被追溯解密,但在更换 PSK 之前,未来的会话将面临风险。
fec_data_shards 和 fec_parity_shards 来调整这个比例,或者在带宽受限的场景下完全禁用 FEC。