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

Shadowsocks

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Shadowsocks
Shadowsocks logo.png
原作者 Clowwindy
開發者 Shadowsocks貢獻者
初始版本 2012年4月20日,​6年前​(2012-04-20[1][2]
穩定版本 4.1.3.1(2018年12月9日,​3個月前​(2018-12-09[3][±]
作業系統 跨平台(基於用戶端和遠端伺服器)
語言 多種,視具體實作
類型 SOCKS代理
許可協定 多種,視具體實作
網站 shadowsocks.org

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

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

為了避免關鍵詞過濾,網民會根據諧音將ShadowsocksR稱為「酸酸乳」,將Shadowsocks稱為「酸酸」。

執行原理[編輯]

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

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

特點[編輯]

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

安全性[編輯]

Shadowsocks的最初設計目的只是為了繞過GFW,而不是提供密碼學意義的安全,所以Shadowsocks自行設計的加密協定對雙方的身份驗證僅限於預共用金鑰英語Pre-shared key,亦無完全前向保密,也未曾有安全專家公開分析或評估協定及其實現。[8]

Shadowsocks本質上只是設置了密碼的專用網絡代理協定,不能替代TLS或者VPN,不能用作匿名通訊方案,該協定的目標不在於提供完整的通訊安全機制,主要是為了協助上網用戶在嚴苛的網絡環境中突破封鎖。

在某些極端的環境下,通過深度包檢測(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]等等,還有爲數甚多的免費軟件及專有軟件。

計劃轉手[編輯]

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的實作的套件仍持續更新可用。

主要計劃分支[編輯]

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」的不明身份人士人身攻擊,對方宣稱如果不停止開發並阻止用戶討論此事件將發佈更多包含個人私隱的資料[26],隨後breakwa11表示遭到對方人肉搜尋並公開個人資料的是無關人士,為了防止對方繼續傷害無關人士,breakwa11將刪除GitHub上的所有程式碼、解散相關交流群組,停止ShadowsocksR計劃。但計劃已被多人fork。並有人在其基礎上繼續發佈新的版本,例如SSRR

參考資料[編輯]

  1. ^ 發一個自用了一年多的翻牆工具 Shadowsocks. web.archive.org. [2016-12-15]. (原始內容存檔於2012-04-22). 
  2. ^ Shadowsocks 的前世後生. GFW BLOG. [2016-12-15]. 
  3. ^ shadowsocks-windows. [2018-10-21]. 
  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. ^ Tweets with replies by 破娃醬 (@breakwa11) | Twitter. twitter.com. [2017-08-16] (英語). 

外部連結[編輯]