搜索 K
Appearance
如果你只有三十秒,读完这三条就够了:
要理解 SS 的现状,必须先看清它走过的四个阶段。
2012–2015:SS 的黄金期。 最初版本的 Shadowsocks 使用的是 aes-256-cfb、rc4-md5 这类流加密。它的设计目标非常朴素——把 SOCKS5 流量加密后塞进一条 TCP 连接,让中间人看不出内容。在那个年代的网络审查手段还以 IP 黑名单和关键词过滤为主的背景下,这套方案几乎是降维打击。
2015–2017:SSR 的补丁时代。 随着简单流量特征被识别,SSR(ShadowsocksR)出现了,引入了两个核心改造:一是 auth_chain(认证链,用一系列 HMAC 混淆握手),二是 obfs(http_simple、tls1.2_ticket_auth 等混淆插件)。这两者本质上是"给加密流量套一层看起来像别的协议的壳"。问题是,壳终究是壳——tls1.2_ticket_auth 生成的假 TLS 握手没有真实证书链、没有完整扩展字段,DPI 只需校验证书或者看握手顺序就能识破。
2017–2020:AEAD 是分水岭。 Shadowsocks 官方引入了 AEAD 加密(aes-256-gcm、chacha20-ietf-poly1305),顺带修复了原版 SSTCP 中存在的选择密文攻击漏洞。这一步让 SS 在密码学层面终于站得住脚了,但请注意:AEAD 解决的是"内容保密 + 完整性",不是"流量隐蔽性"。 这是两个完全不同的问题,也是绝大多数教程混淆的地方。
2022 至今:ShadowTLS v3 与专线回潮。 ShadowTLS 的思路不再是"伪造"一个 TLS 握手,而是真的和一台真实网站(如 www.microsoft.com)完成 TLS 握手,然后把这层 TLS 隧道当作传输通道来跑 SS。它解决的是握手可验证性问题。与此同时,随着 IEPL/IPLC 专线在机场行业普及,SS 因为其极低的资源消耗被重新捡了回来——这一次不是因为它隐蔽,而是因为它便宜、快、省 CPU。
现代 SS-AEAD 的握手是这样的:客户端生成一个随机 salt,用 HKDF 从预共享密钥