Shadowsocks

通信協議和代理軟件,常用於翻牆

Shadowsocks(简称SS)是一種基於Socks5代理方式的加密傳輸协议,也可以指实现這個协议的各種开发包。目前套件使用PythonCC++C#Go语言Rust等程式語言开发,大部分主要实现(iOS平台的除外)採用Apache许可证GPLMIT許可證等多種自由軟體許可協定開放原始碼。Shadowsocks分为服务器端和客户端,在使用之前,需要先将服务器端程序部署到服务器上面,然后通过客户端连接并建立本地代理。

Shadowsocks
Shadowsocks logo.png
原作者Clowwindy
開發者Shadowsocks 贡献者
初始版本2012年4月20日,​9年前​(2012-04-20[1][2]
穩定版本
rust1.12.4[3]在维基数据编辑(2021年11月28日,35小時前)
windows4.4.0.0[4]在维基数据编辑(2020年12月31日,10個月前)
android5.2.6[5]在维基数据编辑(2021年9月17日,2個月前)
X-NG1.9.4[6]在维基数据编辑(2019年11月13日,2年前)
libev3.3.5[7]在维基数据编辑(2020年9月15日,14個月前)
go0.1.5[8]在维基数据编辑(2021年5月2日,6個月前)
python2.9.1[9]在维基数据编辑(2017年1月2日,4年前)
源代码库 編輯維基數據鏈接
操作系统类Unix系统
Microsoft Windows
Android
iOS在维基数据编辑
类型网络传输协议
自由软件
突破网络审查在维基数据编辑
许可协议
  • GNU通用公共许可证3.0版
  • Apache许可证2.0版
  • MIT許可證
  • GNU寬通用公共許可證3.0版
編輯維基數據鏈接
网站shadowsocks.org 编辑维基数据
Android版本Shadowsocks应用程序的标志

在中国大陆,本工具广泛用于突破防火长城(GFW),以浏览被封锁、遮蔽或干扰的内容。2015年8月22日,Shadowsocks原作者Clowwindy稱受到了警察的压力,宣布停止维护此计划(项目)并移除其个人页面所存储的源代码[10][11]

为了避免关键词过滤,网民会根据谐音将ShadowsocksR称为“酸酸乳”[註 1](SSR),将Shadowsocks称为“酸酸”(SS)。另外,因为Shadowsocks(R)的标志均为纸飞机,所以专门提供Shadowsocks(R)或类似服务(如V2Ray)的网站则就被称为了“机场”。

运行原理编辑

 
Android版本Shadowsocks应用程序

Shadowsocks的运行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。例如,用户无法直接访问Google,但代理服务器可以访问,且用户可以直接连接代理服务器,那么用户就可以通过特定软件连接代理服务器,然后由代理服务器获取网站内容并回传给用户,从而实现代理上网的效果。服务器和客户端软件会要求提供密码和加密方式,双方一致后才能成功连接。连接到服务器后,客户端会在本机构建一个本地Socks5代理(或VPN、透明代理等)。浏览网络时,客户端通过这个Socks5(或其他形式)代理收集网络流量,然后再经混淆加密发送到服务器端,以防网络流量被识别和拦截,反之亦然。

特点编辑

  • Shadowsocks使用自行设计的协议进行加密通信。[12]加密算法有AESBlowfishChaCha20RC4等,除建立TCP连接外无需握手,每次请求只转发一个连接,無需保持「一直連線」的狀態,因此在移动设备上相對较為省电。
  • 所有的流量都经过算法加密,允许自行选择算法。
  • Shadowsocks通过异步I/O事件驱动程序运行,响应速度快。
  • 客户端覆盖多个主流操作系统和平台,包括WindowsmacOSAndroidLinuxiOS系统和路由器(OpenWrt)等[13]

安全性编辑

Clowwindy语Shadowsocks的最初只是「自用」,用来「翻墙」[1],而不是提供密码学意义的安全,所以Shadowsocks自行设计的加密协议对双方的身份验证仅限于预共享密钥英语Pre-shared key,亦无完全前向保密,也未曾有安全专家公开分析或评估协议及其实现。

一个用 Python 写的 socks 加密代理。加密方法很简单,不过欺骗 GFW 足够了。

——clowwindy[1]

Shadowsocks的目标不在于提供完整的通信安全机制,主要是为了协助上网用户在严苛的网络环境中突破封锁,不能替代TLS或者VPN

AEAD加密方式(AES-GCMChacha20-poly1305)在SIP004[14]提案提出并在SIP007提案[15]实现,这些加密方式被认为可以提供密码学意义的安全(「保密性,完整性,可用性」)[16],之前AES CFB、AES CTR、RC4Chacha20等没有认证的加密方式仍被允许存在[16]

2021年2月28日,GitHub用戶RPRX提出Shadowsocks AEAD加密方式设计存在严重漏洞,无法保证通信内容的可靠性,隨後開發者驗證了本地echo自交思路的可行性。[17]3月1日,RPRX又提出可利用服务端防重放機制使Shadowsocks、Vmess等未知流量代理实质性失效,隨後gfw-report驗證了這一思路的可行性。[18]

插件及流量混淆编辑

2017年9月21日,一篇名为《The Random Forest based Detection of Shadowsock's Traffic》的论文在IEEE发表,该论文介绍了通过随机森林算法检测Shadowsocks流量的方法,并自称可达到85%的检测精度[19],雖然該論文的有效性遭到网友质疑。使用机器学习來識別網路流量特徵的做法被认为是可行的,而且還適用於任何網路代理協定而不僅僅侷限於Shadowsocks。[20]

Shadowsocks在SIP003提案[21]中支持了插件,插件让Shadowsocks的流量可以通过不同的插件进行混淆加密或其他处理。目前使用较多的插件有v2ray-plugin等。

實作编辑

目前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[22]、V2Ray[23]、Brook[24]、Trojan[25]等等,還有為數甚多的免費軟體商業軟體

项目转手编辑

2015年8月22日,其作者Clowwindy在GitHub上稱,警察在兩日前要求他停止開發Shadowsocks專案並刪除其所有代碼。[26]之後,作者停止維護Shadowsocks,其GitHub專案頁面已被清空。[27][28]消息传出后,许多中国大陸和外国开发商,以及Shadowsocks用户,在GitHub中对作者表示了致谢,对已清空原始碼的项目頁面加星标,因此在当时Shadowsocks反而成为了GitHub上的「热门项目(Trending)」。[29]本以為是當局主動出擊,但另有消息据称,原作者曾作出的「透露中國社會現狀」的發言可能遭到某些中華人民共和國政府支持者的檢舉,從而為後來被要求撤下專案原始碼的事件埋下伏筆,而類似的因個人網路發言而被檢舉的事件在中國大陸也「時有發生」。[30]

8月25日,另一个用于突破网络审查的GoAgent项目也被作者自行删除。删除后几小时之内,GitHub遭到了来自中国大陸的DDoS攻击。據報这次攻击与中華人民共和国政府有关,因為中国政府此前曾要求Github移除兩個反對網絡審查的項目但沒有被接受。[31]

2015年8月28日,电子前哨基金会针对Shadowsocks和GoAgent被删除一事发表评论,对中華人民共和国政府针对翻墙软件作者的打击表示“强烈谴责”。[11]

Git倉庫的日誌顯示該項目被移除以前就有大量的復刻副本,不少副本仍然有用戶維護。所以儘管Shadowsocks專案頁經過此次打擊,也陸續恢復了內容,甚至本身並转交由多人維護成不同版本,各大Linux套件的軟體倉庫均有各式Shadowsocks的實作的套件仍持續更新可用,目前的Shadowsocks更新基本上來自這些作者執行。

ShadowsocksR编辑

 
ShadowsocksR的标志
 
Android版本ShadowsocksR应用程序

ShadowsocksR(简称SSR)是网名为breakwa11的用户發起的Shadowsocks分支,在Shadowsocks的基础上增加了一些資料混淆方式,称修复了部分安全问题并可以提高QoS优先级。[32]后来貢獻者Librehat也为Shadowsocks补上了一些此类特性,[33]甚至增加了类似Tor的可插拔传输层功能。[34]

ShadowsocksR開始時曾有过违反GPL、发放二进制时不发放源码的争议,使得原開發作者不滿[35]。不过后来ShadowsocksR项目由breakwa11转为了與Shadowsocks相同的GPL、Apache許可證、MIT許可證等多重自由軟體許可协议。

2017年7月19日,ShadowsocksR作者breakwa11在Telegram频道ShadowsocksR news裡转发了深圳市启用SS协议检测的消息并被大量用户转发,引发恐慌[36]。7月24日,breakwa11发布了闭源的SS被动检测程序,引发争议[37]。7月27日,breakwa11遭到自称“ESU.TV”(恶俗TV)的不明身份人士人身攻击,对方宣称如果不停止开发并阻止用户讨论此事件将发布更多包含个人隐私的资料[38],随后breakwa11表示遭到对方人肉搜索并公开个人资料的是无关人士,为了防止对方继续伤害无关人士,breakwa11将删除GitHub上的所有代码、解散相关交流群组,停止ShadowsocksR项目。但项目已被多人fork,并有人在其基础上继续发布新的版本,例如较为知名的SSRR(ShadowsocksRR)。

參考資料编辑

  1. ^ 1.0 1.1 1.2 clowwindy. 发一个自用了一年多的翻墙工具 shadowsocks. 2012-04-20. (原始内容存档于2014-07-19). 
  2. ^ Shadowsocks 的前世后生. GFW BLOG. [2016-12-15]. (原始内容存档于2016-12-20). 
  3. ^ Release v1.12.4. 
  4. ^ Release 4.4.0.0. 2020年12月31日 [2021年1月3日]. 
  5. ^ Release 5.2.6. 
  6. ^ Release 1.9.4. 2019年11月13日 [2020年12月3日]. 
  7. ^ Release 3.3.5. 
  8. ^ Bug fix. 
  9. ^ Release 2.9.1. 2017年1月2日 [2020年7月27日]. 
  10. ^ IT-eNews. 2015-08-20 [2016-02-03]. (原始内容存档于2016-02-03). 
  11. ^ 11.0 11.1 O'Brien, Danny. Speech that Enables Speech: China Takes Aim at Its Coders. 电子前哨基金会. [2016-05-28]. (原始内容存档于2016-06-24) (英语). 中文翻译
  12. ^ Shadowsocks - spec. [2015年12月11日]. (原始内容存档于2015年12月4日) (英语). 
  13. ^ Shadowsocks - Clients. [2015-09-05]. (原始内容存档于2015-09-04) (英语). 
  14. ^ Mygod. SIP004 - Support for AEADs implemented by large libraries. 2017-01-12. 
  15. ^ riobard. SIP007 - Per-session subkey. 3017-02-10. 
  16. ^ 16.0 16.1 AEAD Ciphers. Shadowsocks.org. 
  17. ^ Shadowsocks AEAD 加密方式设计存在严重漏洞,无法保证通信内容的可靠性. [2021-02-28]. (原始内容存档于2021-07-18). 
  18. ^ 利用防重放机制自动对 Shadowsocks、VMess 等未知流量代理进行“隐蔽式拒绝服务攻击”. [2021-03-01]. (原始内容存档于2021-07-18). 
  19. ^ Deng, Z.; Liu, Z.; Chen, Z.; Guo, Y. The Random Forest Based Detection of Shadowsock's Traffic. 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). 
  20. ^ VV, 特約撰稿人. 道高一尺,牆高一丈:互聯網封鎖是如何升級的|端傳媒 Initium Media. 端傳媒 Initium Media. [2018-04-07]. (原始内容存档于2018-06-28) (中文(香港)). 
  21. ^ madeye. SIP003 - A simplified plugin design for shadowsocks. GitHub. 2017-01-04. 
  22. ^ Outline - Making it safer to break the news. getoutline.org. [2018-04-06]. (原始内容存档于2018-03-30) (英语). 
  23. ^ Shadowsocks · Project V 官方网站. v2ray.com. [2020-06-11]. (原始内容存档于2020-06-11). 
  24. ^ txthinking/brook. GitHub. [2018-06-05]. (原始内容存档于2018-06-17) (英语). 
  25. ^ trojan. trojan-gfw. trojan. [2021-02-15]. 
  26. ^ clowwindy. Adopting iOS 9 network extension points · Issue #124 · shadowsocks/shadowsocks-iOS. 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. 
  27. ^ clowwindy. remove · shadowsocks/shadowsocks@938bba3. GitHub. 2015-08-22 [2015-08-22]. (原始内容存档于2015-08-22). 
  28. ^ clowwindy. shadowsocks/shadowsocks. GitHub. 2015-08-22 [2015-08-22]. (原始内容存档于2015-08-22) (英语). 
  29. ^ percy. 中国开发者被警察要求删除软件. 2015-08-26 [2016-01-16]. (原始内容存档于2015-10-02) (中文). 
  30. ^ Vergil. 翻墙=犯法?从许东翻墙第一案说起. pao-pao.net. [2016-08-18]. (原始内容存档于2016-08-08). (中文)
  31. ^ Catalin Cimpanu. Recent GitHub DDOS Linked to Chinese Government and Two GitHub Projects. Softpedia. 2015-08-29 [2016-01-16]. (原始内容存档于2016-05-06) (英语). 
  32. ^ ShadowsocksR. breakwa11.github.io. [2017-03-24]. (原始内容存档于2017-02-07). 
  33. ^ Librehat. 关于ShadowsocksR和Shadowsocks的安全性 – Librehat的部落格. [2017-03-24]. (原始内容存档于2017-03-25). 
  34. ^ Shadowsocks Plugin Spec. shadowsocks.org. [2017-03-24]. (原始内容存档于2017-03-25) (英语). 
  35. ^ 奇文共赏,关于ShadowsocksR事件 – Xiaodu Blog. t.du9l.com. [2017-03-24]. (原始内容存档于2017-03-25) (中文(中国大陆)). 
  36. ^ KPCN. From Weibo, not veri. yet:"Confirmed Shenzhen has begun using Shadowsocks protocol inspection tool. SS users wb cut off broadband cntn". Riddit. [2017-08-17]. (原始内容存档于2018-08-16). 
  37. ^ breakwa11. SS被动检测1.0版 #868. GitHub. [2017-06-24]. (原始内容存档于2017-07-25). 
  38. ^ CK、吴晶、瑞哲. 国内网络青年开发翻墙软件遭“人肉”威胁. Radio Free Asia. 2018-01-25 [2019-03-31]. (原始内容存档于2019-03-31). 

注解编辑

  1. ^ “酸酸乳”原本指中国乳制品公司蒙牛生产的含乳饮品。

外部链接编辑