Shadowsocks

本頁使用了標題或全文手工轉換
出自反共维基

Template:Infobox Software

Android版本Shadowsocks應用程式的標誌

Shadowsocks(簡稱SS)是一種基於Socks5代理方式的加密傳輸協定,也可以指實現這個協定的各種開發包。目前套件使用PythonCC++C#Go語言Rust等程式語言開發,大部分主要實現(iOS平台的除外)採用Apache許可證GPLMIT許可證等多種自由軟體許可協定開放原始碼。Shadowsocks分為伺服器端和用戶端,在使用之前,需要先將伺服器端程式部署到伺服器上面,然後通過用戶端連接並建立本地代理。

在中國大陸,本工具廣泛用於突破防火長城(GFW),以瀏覽被封鎖、遮蔽或干擾的內容。2015年8月22日,Shadowsocks原作者Clowwindy稱受到了中華人民共和國政府的壓力,宣布停止維護此計劃(專案)並移除其個人頁面所儲存的原始碼[1][2]

為了避免關鍵詞過濾,網友會根據諧音將ShadowsocksR稱為「酸酸乳」[註 1](SSR),將Shadowsocks稱為「酸酸」(SS)。另外Shadowsocks的標誌為紙飛機,而專門提供Shadowsocks或類似軟體(如V2Ray)伺服器的網站也被稱為「機場」。

執行原理[編輯]

Android版本Shadowsocks應用程式

Shadowsocks的執行原理與其他代理工具基本相同,使用特定的中轉伺服器完成資料傳輸。例如,使用者無法直接存取Google,但代理伺服器可以存取,且使用者可以直接連接代理伺服器,那麼使用者就可以通過特定軟體連接代理伺服器,然後由代理伺服器取得網站內容並回傳給使用者,從而實現代理上網的效果。伺服器和用戶端軟體會要求提供密碼和加密方式,雙方一致後才能成功連接。連接到伺服器後,用戶端會在本機構建一個本地Socks5代理(或VPN、透明代理等)。瀏覽網路時,用戶端通過這個Socks5(或其他形式)代理收集網路流量,然後再經混淆加密傳送到伺服器端,以防網路流量被辨識和攔截,反之亦然。

特點[編輯]

  • Shadowsocks使用自行設計的協定進行加密通信。[3]加密演算法有AESBlowfishChaCha20RC4等,除建立TCP連接外無需握手,每次請求只轉發一個連接,無需保持「一直連線」的狀態,因此在行動裝置上相對較為省電。
  • 所有的流量都經過演算法加密,允許自行選擇演算法。
  • Shadowsocks通過非同步I/O事件驅動程式執行,回應速度快。
  • 用戶端覆蓋多個主流作業系統和平台,包括WindowsmacOSAndroidLinuxiOS系統和路由器(OpenWrt)等[4]

安全性及加密方式的改進[編輯]

Shadowsocks的最初設計目的只是為了繞過GFW,而不是提供密碼學意義的安全,所以Shadowsocks自行設計的加密協定對雙方的身分驗證僅限於預共享金鑰英語Pre-shared key,亦無完全前向保密,也未曾有安全專家公開分析或評估協定及其實現。如果是在監聽類型的國家內想更加安全的上網,基本上Shadowsocks功能不夠完善,應該使用隱密性更高的工具。[5]Template:需要非第一手來源

Shadowsocks本質上只是設定了密碼的網路代理協定,不能替代TLS或者VPN,不能用作匿名通信方案,該協定的目標不在於提供完整的通信安全機制,主要是為了協助上網使用者在嚴苛的網路環境中突破封鎖。不過,在匿名通信能夠被辨識或封鎖的情況下,也可將Shadowsocks與其他匿名方案配合使用(例如Tor),同時滿足突破封鎖和匿名的需求。

在某些極端的環境下,通過深度包檢測(DPI)也有可能辨識出協定特徵。2017年9月21日,一篇名為《The Random Forest based Detection of Shadowsock's Traffic》的論文在IEEE發表,該論文介紹了通過隨機森林演算法檢測Shadowsocks流量的方法,並自稱可達到85%的檢測精度[6],雖然該論文的有效性遭到網友質疑[7],但機器學習配合GFW已經實現的深度封包檢測來識別網路流量特徵的做法是實際可行的,而且還適用於任何網路代理協定而不僅僅侷限於Shadowsocks。[8]為了確保安全,Shadowsocks加入AEAD加密方式(AES-GCMChacha20-poly1305),取代之前AES CFB、AES CTR、RC4Chacha20等沒有認證的加密。

實作[編輯]

目前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[9]、V2Ray[10]、Brook[11]、Trojan[12]等等,還有為數甚多的免費軟體及專有軟體。

外掛程式及流量混淆[編輯]

Shadowsocks在SIP003提案頁面存檔備份,存於網際網路檔案館中支援了外掛程式系統,外掛程式系統讓Shadowsocks的流量可以通過不同的外掛程式進行二次混淆加密。目前使用較多的外掛程式有simple-obfs頁面存檔備份,存於網際網路檔案館v2ray-plugin頁面存檔備份,存於網際網路檔案館。通過外掛程式對Shadowsocks進行流量混淆後,通常可以降低被GFW辨識出來的機率,從而達到更穩定地突破網路封鎖的目的。

專案轉手[編輯]

2015年8月22日,其作者Clowwindy在GitHub上稱,警察在兩日前要求他停止開發Shadowsocks專案並刪除其所有代碼。[13]之後,作者停止維護Shadowsocks,其GitHub專案頁面已被清空。[14][15]消息傳出後,許多中國大陸和外國開發商,以及Shadowsocks使用者,在GitHub中對作者表示了致謝,對已清空原始碼的專案頁面加星標,因此在當時Shadowsocks成為了GitHub上的熱門專案(Trending)。[16]但另有消息,原作者曾作出的據稱「透露中國社會現狀」的發言可能遭到某些中華人民共和國政府支持者的檢舉,從而為後來被要求撤下專案原始碼的事件埋下伏筆,而類似的因個人網路發言而被檢舉的事件在中國大陸也「時有發生」。[17]

8月25日,另一個用於突破網路審查的GoAgent專案也被作者自行刪除。刪除後幾小時之內,GitHub遭到了來自中國大陸的DDoS攻擊。據報這次攻擊與中華人民共和國政府有關,因為當局此前曾要求Github移除兩個反對網路審查的項目但沒有被接受。[18]

2015年8月28日,電子前哨基金會針對Shadowsocks和GoAgent被刪除一事發表評論,對中華人民共和國政府針對翻牆軟體作者的打擊表示「強烈譴責」。[2]

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

ShadowsocksR[編輯]

ShadowsocksR的標誌
Android版本ShadowsocksR應用程式

ShadowsocksR(簡稱SSR)是網名為breakwa11的使用者發起的Shadowsocks分支,在Shadowsocks的基礎上增加了一些資料混淆方式,稱修復了部分安全問題並可以提高QoS優先級。[19]後來貢獻者Librehat也為Shadowsocks補上了一些此類特性,[20]甚至增加了類似Tor的可插拔傳輸層功能。[21]

ShadowsocksR開始時曾有過違反GPL、發放二進位時不發放原始碼的爭議,使得原開發作者不滿[22]。不過後來ShadowsocksR專案由breakwa11轉為了與Shadowsocks相同的GPL、Apache許可證、MIT許可證等多重自由軟體許可協議。

2017年7月19日,ShadowsocksR作者breakwa11在Telegram頻道ShadowsocksR news裡轉發了深圳市啟用SS協定檢測的訊息並被大量使用者轉發,引發恐慌[23]。7月24日,breakwa11發布了閉源的SS被動檢測程式,引發爭議[24]。7月27日,breakwa11遭到自稱「ESU.TV」(惡俗TV)的不明身分人士人身攻擊,對方宣稱如果不停止開發並阻止使用者討論此事件將發布更多包含個人隱私的資料[25],隨後breakwa11表示遭到對方人肉搜尋並公開個人資料的是無關人士,為了防止對方繼續傷害無關人士,breakwa11將刪除GitHub上的所有代碼、解散相關交流群組,停止ShadowsocksR專案。但專案已被多人fork,並有人在其基礎上繼續發布新的版本,例如較為知名的SSRR頁面存檔備份,存於網際網路檔案館(ShadowsocksRR)。

參考資料[編輯]

  1. IT-eNews. 2015-08-20 [2016-02-03]. (原始內容存檔於2016-02-03). 
  2. 2.0 2.1 O'Brien, Danny. Speech that Enables Speech: China Takes Aim at Its Coders. 電子前哨基金會. [2016-05-28]. (原始內容存檔於2016-06-24) (英語). 中文翻譯
  3. Shadowsocks - spec. [2015年12月11日]. (原始內容存檔於2015年12月4日) (英語). 
  4. Shadowsocks - Clients. [2015-09-05]. (原始內容存檔於2015-09-04) (英語). 
  5. 关于一些基本问题的讨论:Shadowsocks有没有(以及要不要)提供密码学意义的安全? · Issue #64 · shadowsocks/shadowsocks-org - GitHub. [2018-12-26]. (原始內容存檔於2018-05-18). 
  6. 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). 
  7. 如何评价 2017 年 IHMSC 上发表的探测流量的论文? - 知乎. www.zhihu.com. [2018-02-05]. (原始內容存檔於2018-02-06) (中文). 
  8. VV, 特約撰稿人. 道高一尺,牆高一丈:互聯網封鎖是如何升級的|端傳媒 Initium Media. 端傳媒 Initium Media. [2018-04-07]. (原始內容存檔於2018-06-28) (中文(香港)). 
  9. Outline - Making it safer to break the news. getoutline.org. [2018-04-06]. (原始內容存檔於2018-03-30) (英語). 
  10. Shadowsocks · Project V 官方网站. v2ray.com. [2020-06-11]. (原始內容存檔於2020-06-11). 
  11. txthinking/brook. GitHub. [2018-06-05]. (原始內容存檔於2018-06-17) (英語). 
  12. trojan-tutor. trojan-tutor. [2020-07-06]. (原始內容存檔於2020-07-06) (中文(中國大陸)). 
  13. 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. 
  14. clowwindy. remove · shadowsocks/shadowsocks@938bba3. GitHub. 2015-08-22 [2015-08-22]. (原始內容存檔於2015-08-22). 
  15. clowwindy. shadowsocks/shadowsocks. GitHub. 2015-08-22 [2015-08-22]. (原始內容存檔於2015-08-22) (英語). 
  16. percy. 中国开发者被警察要求删除软件. 2015-08-26 [2016-01-16]. (原始內容存檔於2015-10-02) (中文). 
  17. Vergil. 翻墙=犯法?从许东翻墙第一案说起. pao-pao.net. [2016-08-18]. (原始內容存檔於2016-08-08). (中文)
  18. Catalin Cimpanu. Recent GitHub DDOS Linked to Chinese Government and Two GitHub Projects. Softpedia. 2015-08-29 [2016-01-16]. (原始內容存檔於2016-05-06) (英語). 
  19. ShadowsocksR. breakwa11.github.io. [2017-03-24]. (原始內容存檔於2017-02-07). 
  20. Librehat. 关于ShadowsocksR和Shadowsocks的安全性 – Librehat的部落格. [2017-03-24]. (原始內容存檔於2017-03-25). 
  21. Shadowsocks Plugin Spec. shadowsocks.org. [2017-03-24]. (原始內容存檔於2017-03-25) (英語). 
  22. 奇文共赏,关于ShadowsocksR事件 – Xiaodu Blog. t.du9l.com. [2017-03-24]. (原始內容存檔於2017-03-25) (中文(中國大陸)). 
  23. 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). 
  24. breakwa11. SS被动检测1.0版 #868. GitHub. [2017-06-24]. (原始內容存檔於2017-07-25). 
  25. CK、吳晶、瑞哲. 国内网络青年开发翻墙软件遭“人肉”威胁. Radio Free Asia. 2018-01-25 [2019-03-31]. (原始內容存檔於2019-03-31). 

註解[編輯]

  1. 「酸酸乳」原本指中國乳製品公司蒙牛生產的含乳飲品。

外部連結[編輯]