术语 Shadowsocks (SS)

Shadowsocks 是什么?SS 协议的原理与现状

一种轻量级加密代理协议,通过预共享密码对流量加密后转发,以简单高效著称,是影响深远的早期代理协议;现代实现采用 AEAD 加密,至今仍被广泛支持。

更新于

Shadowsocks(常缩写为 SS)是一种轻量级加密代理协议:客户端与服务器约定同一个密码和加密方式,流量加密后经服务器转发,外观上尽量不呈现可识别的协议特征。 它诞生于 2012 年,是中文互联网影响最深远的代理协议之一,如今各类节点服务与客户端仍普遍支持。

设计定位:简单胜于复杂

与传统 VPN 协议动辄复杂的握手流程不同,Shadowsocks 的思路是做减法:

  • 无握手协商:加密方式与密码提前约定好,连接建立即传输,开销极小;
  • 每连接独立加密:基于 SOCKS5 语义逐连接代理,天然适合浏览器等多连接场景;
  • 实现极简:协议简单使得各语言实现遍地开花,也奠定了后来整个客户端生态的基础。

这种”轻”是它历史地位的来源:在很长一段时间里,SS 几乎是节点服务的同义词。

加密方式的演进

SS 的加密经历了明显的代际更替:

  1. 流加密时代(如 aes-256-cfb、rc4-md5):早期主流,后被证实存在可被主动探测利用的弱点,现已淘汰;
  2. AEAD 时代(aes-128/256-gcm、chacha20-ietf-poly1305):带完整性校验的现代加密,抵抗篡改与探测能力显著增强,是当前的标准配置;
  3. Shadowsocks 2022:更新的密钥与协议设计,进一步修补已知探测面。

在客户端里看到节点的”加密方式”字段,指的就是这一项。选择服务时若看到仍在使用流加密的节点,是服务方技术陈旧的信号。

与 SSR 的关系

SSR(ShadowsocksR)是 2015 年前后由第三方在 SS 基础上分支出的版本,主要添加了协议混淆层,试图掩盖流量特征。它与 SS 是分支关系而非升级关系:SSR 的开发在 2017 年终止,其混淆手段在今天的网络环境下已无优势,主流客户端对它的支持也在逐步移除。今天谈”SS”默认指持续维护的原版谱系。

现状与常见误解

  • 现状:SS 因简单高效仍被大量使用,常与 Trojan、VMess 等协议在同一订阅中混合提供;在 v2rayN 等客户端中开箱即用(配置方法见 v2rayN 基础教程);
  • “SS 已经完全失效”:不准确。老旧加密的实现确实脆弱,但现代 AEAD 实现在多数环境下依然可用,具体因网络环境而异,以实测为准;
  • “SS 没有加密、不安全”:SS 全程加密,只是它不像 HTTPS 那样有证书体系;密码强度与加密方式选择得当即可保障传输机密性。

小结

理解 SS 的”轻量、预共享密码、加密代际”三个关键词,就掌握了这个协议的全貌。想了解走另一条”伪装成 HTTPS”路线的协议,可对照阅读 Trojan 词条。

常见问题

现在还应该用 Shadowsocks 节点吗?
可以用,但要看实现与环境。采用 AEAD 加密(如 aes-256-gcm、chacha20-ietf-poly1305)乃至 2022 版本的 SS 节点在多数环境下仍然可靠高效;老旧加密方式的节点则应避免。服务方通常会混合提供多协议节点,连接受阻时可切换协议对比。
SS 和 SSR 现在选哪个?
两者都属于历史较久的协议。SSR 在 2017 年已停止开发,混淆手段也已过时;SS 的现代实现仍在维护。如果只在两者之间选,选 AEAD 加密的 SS;更常见的做法是直接使用服务方提供的 Trojan 等更新协议的节点。