Shadowsocks
Shadowsocks(简称SS)是一種基於Socks5代理方式的加密傳輸协议,也可以指实现這個协议的各種开发包。目前套件使用Python、C、C++、C#、Go语言、Rust等程式語言开发,大部分主要实现(iOS平台的除外)採用Apache许可证、GPL、MIT許可證等多種自由軟體許可協定開放原始碼。Shadowsocks分为服务器端和客户端,在使用之前,需要先将服务器端程序部署到服务器上面,然后通过客户端连接并建立本地代理。
原作者 | Clowwindy |
---|---|
開發者 | Shadowsocks 贡献者 |
初始版本 | 2012年4月20日[1][2] |
穩定版本 | 4.1.10.0(2020年4月11日[3])[±] |
源代码库 | github github |
操作系统 | 跨平台(基于客户端和远程服务器) |
语言 | 多種,視具體實作 |
类型 | 代理软件 |
许可协议 | 多種,視具體實作 |
网站 | github shadowsocks |
在中国大陆,本工具广泛用于突破防火长城(GFW),以浏览被封锁、遮蔽或干扰的内容。2015年8月22日,Shadowsocks原作者Clowwindy稱受到了中華人民共和国政府的压力,宣布停止维护此计划(项目)并移除其个人页面所存储的源代码[4][5]。
为了避免关键词过滤,网民会根据谐音将ShadowsocksR称为“酸酸乳”[註 1](SSR),将Shadowsocks称为“酸酸”(SS)。另外Shadowsocks的标志为纸飞机,而专门提供Shadowsocks或类似软件(如V2Ray)服务器的网站也被称为“机场”。
运行原理
Shadowsocks的运行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。例如,用户无法直接访问Google,但代理服务器可以访问,且用户可以直接连接代理服务器,那么用户就可以通过特定软件连接代理服务器,然后由代理服务器获取网站内容并回传给用户,从而实现代理上网的效果。服务器和客户端软件会要求提供密码和加密方式,双方一致后才能成功连接。连接到服务器后,客户端会在本机构建一个本地Socks5代理(或VPN、透明代理等)。浏览网络时,客户端通过这个Socks5(或其他形式)代理收集网络流量,然后再经混淆加密发送到服务器端,以防网络流量被识别和拦截,反之亦然。
特点
安全性及加密方式的改进
Shadowsocks的最初设计目的只是为了绕过GFW,而不是提供密码学意义的安全,所以Shadowsocks自行设计的加密协议对双方的身份验证仅限于预共享密钥,亦无完全前向保密,也未曾有安全专家公开分析或评估协议及其实现。如果是在監聽類型的國家內想更加安全的上网,基本上Shadowsocks功能不夠完善,應該使用隱密性更高的工具。[8]
Shadowsocks本质上只是设置了密码的网络代理协议,不能替代TLS或者VPN,不能用作匿名通信方案,该协议的目标不在于提供完整的通信安全机制,主要是为了协助上网用户在严苛的网络环境中突破封锁。不过,在匿名通信能够被识别或封锁的情况下,也可将Shadowsocks与其他匿名方案配合使用(例如Tor),同时满足突破封锁和匿名的需求。
在某些极端的环境下,通过深度包检测(DPI)也有可能识别出协议特征。2017年9月21日,一篇名为《The Random Forest based Detection of Shadowsock's Traffic》的论文在IEEE发表,该论文介绍了通过随机森林算法检测Shadowsocks流量的方法,并自称可达到85%的检测精度[9],雖然該論文的有效性遭到网友质疑[10],但机器学习配合GFW已經實現的深度封包檢測來識別網路流量特徵的做法是實際可行的,而且還適用於任何網路代理協定而不僅僅侷限於Shadowsocks。[11]为了确保安全,Shadowsocks加入AHEAD加密方式(AES-GCM、Chacha20-poly1305),取代之前AES CFB、AES CTR、RC4、Chacha20等没有认证的加密(V2ray-core v4.31.0彻底抛弃了流加密算法,仅支持AHEAD加密算法[12])。
實作
目前Shadowsocks有多個實作支援,以自由軟體形式發佈的主要有原始Shadowsocks(以Python語言編寫)、Shadowsocks-libev(分支專案openwrt-Shadowsocks)、Shadowsocks-rust、Shadowsocks-go/go-Shadowsocks2、libQtShadowsocks、Shadowsocks-qt5(僅作為客户端)、Shadowsocks-android(僅作為客户端)、Shadowsocks-windows(僅作為客户端)、ShadowsocksX-NG(僅作為客户端)、Shadowsocks-R、Outline[13]、V2Ray[14]、Brook[15]、Trojan[16]等等,還有為數甚多的免費軟體及專有軟體。
插件及流量混淆
Shadowsocks在SIP003提案(页面存档备份,存于)中支持了插件系统,插件系统让Shadowsocks的流量可以通过不同的插件进行二次混淆加密。目前使用较多的插件有simple-obfs(页面存档备份,存于)、v2ray-plugin(页面存档备份,存于)。通过插件对Shadowsocks进行流量混淆后,通常可以降低被GFW识别出来的几率,从而达到更稳定地突破网络封锁的目的。
项目转手
2015年8月22日,其作者Clowwindy在GitHub上稱,警察在兩日前要求他停止開發Shadowsocks專案並刪除其所有代碼。[17]之後,作者停止維護Shadowsocks,其GitHub專案頁面已被清空。[18][19]消息传出后,许多中国大陸和外国开发商,以及Shadowsocks用户,在GitHub中对作者表示了致谢,对已清空原始碼的项目頁面加星标,因此在当时Shadowsocks成为了GitHub上的热门项目(Trending)。[20]但另有消息,原作者曾作出的据称「透露中國社會現狀」的發言可能遭到某些中華人民共和國政府支持者的檢舉,從而為後來被要求撤下專案原始碼的事件埋下伏筆,而類似的因個人網路發言而被檢舉的事件在中國大陸也「時有發生」。[21]
8月25日,另一个用于突破网络审查的GoAgent项目也被作者自行删除。删除后几小时之内,GitHub遭到了来自中国大陸的DDoS攻击。據報这次攻击与中華人民共和国政府有关,因為當局此前曾要求Github移除兩個反對網絡審查的項目但沒有被接受。[22]
2015年8月28日,电子前哨基金会针对Shadowsocks和GoAgent被删除一事发表评论,对中華人民共和国政府针对翻墙软件作者的打击表示“强烈谴责”。[5]
儘管如此,Git倉庫的日誌顯示該項目被移除以前就有大量的復刻副本,不少副本仍然有用戶維護。Shadowsocks專案頁本身也陸續恢復了內容,並转交由多人維護,各大Linux套件的軟體倉庫均有各式Shadowsocks的實作的套件仍持續更新可用,目前的Shadowsocks更新基本上來自這些匿名作者執行。
ShadowsocksR
ShadowsocksR(简称SSR)是网名为breakwa11的用户發起的Shadowsocks分支,在Shadowsocks的基础上增加了一些資料混淆方式,称修复了部分安全问题并可以提高QoS优先级。[23]后来貢獻者Librehat也为Shadowsocks补上了一些此类特性,[24]甚至增加了类似Tor的可插拔传输层功能。[25]
ShadowsocksR開始時曾有过违反GPL、发放二进制时不发放源码的争议,使得原開發作者不滿[26]。不过后来ShadowsocksR项目由breakwa11转为了與Shadowsocks相同的GPL、Apache許可證、MIT許可證等多重自由軟體許可协议。
2017年7月19日,ShadowsocksR作者breakwa11在Telegram频道ShadowsocksR news裡转发了深圳市启用SS协议检测的消息并被大量用户转发,引发恐慌[27]。7月24日,breakwa11发布了闭源的SS被动检测程序,引发争议[28]。7月27日,breakwa11遭到自称“ESU.TV”(恶俗TV)的不明身份人士人身攻击,对方宣称如果不停止开发并阻止用户讨论此事件将发布更多包含个人隐私的资料[29],随后breakwa11表示遭到对方人肉搜索并公开个人资料的是无关人士,为了防止对方继续伤害无关人士,breakwa11将删除GitHub上的所有代码、解散相关交流群组,停止ShadowsocksR项目。但项目已被多人fork,并有人在其基础上继续发布新的版本,例如较为知名的SSRR页面存档备份,存于(ShadowsocksRR)。
參考資料
- . web.archive.org. [2016-12-15]. (原始内容存档于2012-04-22).
- . GFW BLOG. [2016-12-15]. (原始内容存档于2016-12-20).
- . [2020-06-20].
- . 2015-08-20 [2016-02-03]. (原始内容存档于2016-02-03).
- O'Brien, Danny. . 电子前哨基金会. [2016-05-28]. (原始内容存档于2016-06-24) (英语).(中文翻译)
- . [2015年12月11日]. (原始内容存档于2015年12月4日) (英语).
- . [2015-09-05]. (原始内容存档于2015-09-04) (英语).
- . [2018-12-26]. (原始内容存档于2018-05-18).
- Deng, Z.; Liu, Z.; Chen, Z.; Guo, Y. . 2017 9th International Conference on Intelligent Human-Machine Systems and Cybernetics (IHMSC). August 2017, 2: 75–78 [2018-02-05]. doi:10.1109/IHMSC.2017.132. (原始内容存档于2018-02-06).
- . www.zhihu.com. [2018-02-05]. (原始内容存档于2018-02-06) (中文).
- VV, 特約撰稿人. . 端傳媒 Initium Media. [2018-04-07]. (原始内容存档于2018-06-28) (中文(香港)).
- v2ray-core. . Github. [2021-02-15].
- . getoutline.org. [2018-04-06]. (原始内容存档于2018-03-30) (英语).
- . v2ray.com. [2020-06-11]. (原始内容存档于2020-06-11).
- . GitHub. [2018-06-05]. (原始内容存档于2018-06-17) (英语).
- trojan. . trojan. [2021-02-15].
- clowwindy. . GitHub. [2015-08-22]. (原始内容存档于2015-08-22) (英语).
Two days ago the police came to me and wanted me to stop working on this. Today they asked me to delete all the code from GitHub. I have no choice but to obey.
- clowwindy. . GitHub. 2015-08-22 [2015-08-22]. (原始内容存档于2015-08-22).
- clowwindy. . GitHub. 2015-08-22 [2015-08-22]. (原始内容存档于2015-08-22) (英语).
- percy. . 2015-08-26 [2016-01-16]. (原始内容存档于2015-10-02) (中文).
- Vergil. . pao-pao.net. [2016-08-18]. (原始内容存档于2016-08-08).(中文)
- Catalin Cimpanu. . Softpedia. 2015-08-29 [2016-01-16]. (原始内容存档于2016-05-06) (英语).
- . breakwa11.github.io. [2017-03-24]. (原始内容存档于2017-02-07).
- Librehat. . [2017-03-24]. (原始内容存档于2017-03-25).
- . shadowsocks.org. [2017-03-24]. (原始内容存档于2017-03-25) (英语).
- . t.du9l.com. [2017-03-24]. (原始内容存档于2017-03-25) (中文(中国大陆)).
- KPCN. . Riddit. [2017-08-17]. (原始内容存档于2018-08-16).
- breakwa11. . GitHub. [2017-06-24]. (原始内容存档于2017-07-25).
- CK、吴晶、瑞哲. . Radio Free Asia. 2018-01-25 [2019-03-31]. (原始内容存档于2019-03-31).
注解
- “酸酸乳”原本指中国乳制品公司蒙牛生产的含乳饮品。
外部链接
- Shadowsocks - A secure socks5 proxy页面存档备份,存于
- Shadowsocks 在 github 的主页页面存档备份,存于
- shadowsocks-windows 在 github 的下载页面页面存档备份,存于
- SSRR-Windows 在 github 的下载页面页面存档备份,存于
維基教科書中的相關電子:Shadowsocks |