本頁使用了標題或全文手工轉換

Shadowsocks

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Shadowsocks
Shadowsocks logo.png
原作者 Clowwindy
開發者 Shadowsocks貢獻者
初始版本 2012年4月20日,​7年前​(2012-04-20[1][2]
穩定版本 4.1.9.2(2019年12月25日,​56天前​(2019-12-25[3][±]
源代碼庫 github.com/shadowsocks(原版)
github.com/shadowsocksrr(分支)
操作系統 跨平台(基於客戶端和遠程服務器)
語言 多種,視具體實作
類型 代理軟件
許可協議 多種,視具體實作
網站 github.com/shadowsocks
shadowsocks.org(官網)
Android版本Shadowsocks應用程序的標誌

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

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

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

運行原理[編輯]

Android版本Shadowsocks應用程序

Shadowsocks的運行原理與其他代理工具基本相同,使用特定的中轉服務器完成數據傳輸。例如,用戶無法直接訪問Google,但代理服務器可以訪問,且用戶可以直接連接代理服務器,那麼用戶就可以通過特定軟件連接代理服務器,然後由代理服務器獲取網站內容並回傳給用戶,從而實現代理上網的效果。另外用戶在成功連接到服務器後,客戶端會在本機構建一個本地Socks5代理(或VPN、透明代理等)。瀏覽網絡時,網絡流量需要先通過本地代理傳遞到客戶端軟件,然後才能發送到服務器端,反之亦然。

為防止流量被識別和攔截,服務器和客戶端軟件會要求提供密碼和加密方式,並且在數據傳輸期間會對傳入和傳出流量進行加密。

特點[編輯]

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

安全性[編輯]

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

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

在某些極端的環境下,通過深度包檢測(DPI)也有可能識別出協議特徵。為了確保安全,用戶應做好額外的加密和驗證措施,以免泄露信息,無論使用的服務器來源是否可靠。2017年9月21日,一篇名為《The Random Forest based Detection of Shadowsock's Traffic》的論文在IEEE發表,該論文介紹了通過隨機森林算法檢測Shadowsocks流量的方法,並自稱可達到85%的檢測精度[9],雖然該論文的有效性遭到網友質疑[10],但機器學習配合GFW已經實現的深度封包檢測來識別網路流量特徵的做法是實際可行的,而且還適用於任何網路代理協定而不僅僅侷限於Shadowsocks。[11]

實作[編輯]

目前Shadowsocks有多個實作支援,以自由軟體形式發佈的主要有原始Shadowsocks(以Python語言編寫)、Shadowsocks-libev(分支專案openwrt-Shadowsocks)、Shadowsocks-rust、Shadowsocks-go/go-Shadowsocks2、libQtShadowsocks、Shadowsocks-qt5(僅作爲客戶端)、Shadowsocks-android(僅作爲客戶端)、Shadowsocks-windows(僅作爲客戶端)、ShadowsocksX-NG(僅作爲客戶端)、Outline[12]、V2Ray、Brook[13]等等,還有爲數甚多的免費軟體及專有軟體。

插件[編輯]

Shadowsocks在SIP003提案中支持了插件系統,插件系統讓Shadowsocks的流量可以通過不同的插件進行二次混淆加密。目前使用較多的插件有simple-obfsv2ray-plugin。通過插件對Shadowsocks進行流量混淆後,通常可以降低被GFW識別出來的幾率,從而達到更穩定地突破網絡封鎖的目的。

項目轉手[編輯]

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

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

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

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

主要項目分支[編輯]

ShadowsocksR[編輯]

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

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

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

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

參考資料[編輯]

  1. ^ 發一個自用了一年多的翻牆工具 Shadowsocks. web.archive.org. [2016-12-15]. (原始內容存檔於2012-04-22). 
  2. ^ Shadowsocks 的前世後生. GFW BLOG. [2016-12-15]. 
  3. ^ shadowsocks-windows. [2019-03-31]. 
  4. ^ 開源翻牆軟件Shadowsocks作者宣布停止項目更新 - | IT-eNews. 2015-08-20 [2016-02-03]. 
  5. ^ 5.0 5.1 O'Brien, Danny. Speech that Enables Speech: China Takes Aim at Its Coders. 電子前哨基金會. [2016-05-28] (英語). 中文翻譯
  6. ^ Shadowsocks - spec. (原始內容存檔於2015年12月4日) (英語). 
  7. ^ Shadowsocks - Clients. [2015-09-05] (英語). 
  8. ^ 關於一些基本問題的討論:Shadowsocks有沒有(以及要不要)提供密碼學意義的安全? · Issue #64 · shadowsocks/shadowsocks-org - GitHub
  9. ^ 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. doi:10.1109/IHMSC.2017.132. 
  10. ^ 如何評價 2017 年 IHMSC 上發表的探測流量的論文? - 知乎. www.zhihu.com. [2018-02-05] (中文). 
  11. ^ VV, 特約撰稿人. 道高一尺,牆高一丈:互聯網封鎖是如何升級的|端傳媒 Initium Media. 端傳媒 Initium Media (中文(香港)‎). 
  12. ^ Outline - Making it safer to break the news. getoutline.org (英語). 
  13. ^ txthinking/brook. GitHub (英語). 
  14. ^ 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. 
  15. ^ clowwindy. remove · shadowsocks/shadowsocks@938bba3. GitHub. 2015-08-22 [2015-08-22]. 
  16. ^ clowwindy. shadowsocks/shadowsocks. GitHub. 2015-08-22 [2015-08-22] (英語). 
  17. ^ percy. 中國開發者被警察要求刪除軟件. 2015-08-26 (中文). 
  18. ^ Vergil. 翻牆=犯法?從許東翻牆第一案說起. pao-pao.net. (中文)
  19. ^ Catalin Cimpanu. Recent GitHub DDOS Linked to Chinese Government and Two GitHub Projects. Softpedia. 2015-08-29 (英語). 
  20. ^ ShadowsocksR. breakwa11.github.io. [2017-03-24]. (原始內容存檔於2017-02-07). 
  21. ^ Librehat. 關於ShadowsocksR和Shadowsocks的安全性 – Librehat的部落格. [2017-03-24]. 
  22. ^ Shadowsocks Plugin Spec. shadowsocks.org. [2017-03-24] (英語). 
  23. ^ 奇文共賞,關於ShadowsocksR事件 – Xiaodu Blog. t.du9l.com. [2017-03-24] (中文(中國大陸)‎). 
  24. ^ 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]. 
  25. ^ breakwa11. SS被動檢測1.0版 #868. GitHub. [2017-06-24]. (原始內容存檔於2017-07-25). 
  26. ^ CK、吳晶、瑞哲. 國內網絡青年開發翻牆軟件遭「人肉」威脅. Radio Free Asia. 2018-01-25 [2019-03-31]. 

註解[編輯]

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

外部連結[編輯]