Shadowsocks（簡稱 SS）是一種基於 Socks5 代理方式的加密傳輸協議，也可以指實現這個協議的各種開發包。目前有各種版本使用 Python、C、C、C、Go 語言、Rust 等程式語言開發，大部分主要實現（iOS 平臺的除外）採用 Apache 許可證、GPL、MIT 許可證等多種自由軟體許可協定開放原始碼。Shadowsocks 分為伺服器端和客戶端，在使用之前，需要先將伺服器端程式部署到伺服器上面，然後透過客戶端連線並建立本地代理。 在中國大陸，本工具廣泛用於突破防火長城（GFW），以瀏覽被封鎖、遮蔽或干擾的內容。2015 年 8 月 22 日，Shadowsocks 原作者 Clowwindy 稱受到了中國警方的壓力，宣佈停止維護此計劃（專案）並移除其 GitHub 個人頁面所儲存的原始碼（中文翻譯）。 歷史 Shadowsocks 最早由 V2EX 使用者 clowwindy 2012 年 4 月釋出在該論壇。 專案轉手 2015 年 8 月 22 日，其作者 Clowwindy 在 GitHub 上稱，警察在兩日前要求他停止開發 Shadowsocks 專案並刪除其所有程式碼。之後，作者停止維護 Shadowsocks，其 GitHub 專案頁面已被清空。消 息傳出後，許多中國大陸和外國開發商，以及 Shadowsocks 使用者，在 GitHub 中對作者表示了致謝，對已清空原始碼的專案頁面加星標，因此在當時 Shadowsocks 反而成為了 GitHub 上的「熱門專案（Trending）」。 此事件的插曲是，該起事件本以為是當局主動出擊，但另有消 息據稱，原作者曾作出的「透露中國社會現狀」的發言或是對其態度不滿，可能遭到某些翻牆使用者，向中華人民共和國政府檢舉，從而為後來被要求撤下專案原始碼的事件埋下伏筆，而類似的因個人網路發言而被同業檢舉的事件在中國大陸也「時有發生」。據網民整理，原作者更斥責自己的工作成果被他人挪用，也出現被許多冒名者修改後的自主版本，拿出更強的產品只為了專賣來替自己賺錢，後來原作主張，他以為那種大家一起不謀私的理想，做好 SS 社群的共享主義精神，在中國連出現的跡象都沒有。據他原話： 他稱多數使用者也是以一種自立態度，誰都可以求，而利用完做到解決問題就直接走人來的，而我維護的過程中，感覺主動幫助專案的同學並不多，匿名提問還不想充分提供資訊。對比下國外的開源互助的社會體制差好遠。他最後表示自己遲早要移民離開中國，在維護這些專案上，已經越來越艱難無趣，而以後也不會想再做了。 8 月 25 日，另一個用於突破網路審查的 GoAgent 專案也被作者自行刪除。刪除後幾小時之內，GitHub 遭到了來自中國大陸的 DDoS 攻擊。據報這次攻擊與中華人民共和國政府有關，因為中國政府此前曾要求 GitHub 移除兩個對抗網路審查的專案但沒有被接受。 2015 年 8 月 28 日，電子前哨基金會針對 Shadowsocks 和 GoAgent 被刪除一事發表評論，對中華人民共和國政府針對用於突破網路封鎖軟體作者的打擊表示 強烈譴責。 不過 Git 倉庫的日誌顯示該專案被移除以前就有大量的復刻副本，不少副本仍然有使用者維護。所以儘管 Shadowsocks 專案頁經過此次打擊，也仍陸續恢復了內容，甚至本身並轉交由多人維護成不同版本，各大 Linux 發行版的軟體倉庫均有各式 Shadowsocks 的實作的套件仍持續更新可用，目前的 Shadowsocks 更新基本上來自這些作者執行。 執行原理 Shadowsocks 的執行原理與其他代理工具基本相同，使用特定的中轉伺服器完成資料傳輸。例如，使用者無法直接訪問 Google，但代理伺服器可以訪問，且使用者可以直接連線代理伺服器，那麼使用者就可以透過特定軟體連線代理伺服器，然後由代理伺服器獲取網站內容並回傳給使用者，從而實現代理上網的效果。伺服器和客戶端軟體會要求提供密碼和加密方式，雙方一致後才能成功連線。連線到伺服器後，典型情況下客戶端會在本機構建一個本地 Socks5 代理（但也有構建成 VPN、透明代理等形式）。瀏覽網路時，客戶端透過這個 Socks5（或其他形式）代理收集網路流量，然後再經混淆加密傳送到伺服器端，以防網路流量被識別和攔截，反之亦然。 特點 Shadowsocks 使用自行設計的協議進行加密通訊。加密演算法有 AESGCM、ChaCha20Poly1305、2022BLAKE3AESGCM 等，除建立 TCP 連線外無需握手，每次請求只轉發一個連線，無需保持「一直連線」的狀態，因此在移動裝置上相對較為省電。 所有的流量都經過演算法加密，允許自行選擇加密演算法。 Shadowsocks 透過非同步 IO 和事件驅動程式執行，響應速度快。 客戶端覆蓋多個主流作業系統和平臺，包括 Windows、macOS、Android、Linux 和 iOS 系統和路由器（OpenWrt）等。 安全性 Clowwindy 稱 Shadowsocks 的最初只是「自用」，用來「翻牆」，而不是提供密碼學意義的安全，所以 Shadowsocks 自行設計的加密協議對雙方的身份驗證僅限於，亦無完全前向保密，也未曾有安全專家公開分析或評估協議及其實現。 Shadowsocks 的目標不在於提供完整的通訊安全機制，主要是為了協助上網使用者在嚴苛的網路環境中突破封鎖，不能替代 TLS 或者 VPN。 AEAD 加密方式（AESGCM、Chacha20poly1305）在 SIP004 提案提出並在 SIP007 提案實現，這些加密方式被認為可以提供密碼學意義的安全（「保密性，完整性，可用性」），之前 AES CFB、AES CTR、RC4、Chacha20 等沒有認證的加密方式仍在一部分實現中被允許存在。Shadowsockswindows 已經移除了非 AEAD 加密方式的支援。 Shadowsocks 多次被提到協議設計問題，有被主動探測的風險： 2015 年，ShadowsocksR 的原開發者 breakwa11 提到原協議設計導致無法驗證資料包完整性而被主動探測的風險，之後 Shadowsocks 的後繼開發者 madeye 引入 One Time Auth（OTA）方案試圖解決，但 breakwa11 指出還是不能避免主動探測風險，最終引入 AEAD 加密方式並放棄 OTA 方案。 2021 年 2 月 28 日，GitHub 使用者 RPRX 提出 Shadowsocks AEAD 加密方式設計存在嚴重漏洞，無法保證通訊內容是可靠的，隨後開發者驗證了本地 echo 自交思路的可行性。3 月 1 日，RPRX 又提出可利用服務端防重放機制使 Shadowsocks、Vmess 等未知流量代理實質性失效，隨後討論區中的一個名為 gfwreport 的使用者驗證了這一思路的可行性。 外掛及流量混淆 2017 年 9 月 21 日，一篇名為《The Random Forest based Detection of Shadowsocks Traffic》的論文在 IEEE 發表，該論文介紹了透過隨機森林演算法檢測 Shadowsocks 流量的方法，並自稱可達到 85％的檢測精度，雖然該論文的有效性遭到網友質疑。但是使用機器學習來識別網路流量特徵的做法被認為是可行的，而且還適用於任何網路代理協定而不僅僅侷限於 Shadowsocks。 Shadowsocks 在 SIP003 提案中支援了外掛，外掛讓 Shadowsocks 的流量可以透過不同的外掛進行混淆加密或其他處理。目前使用較多的外掛有、等。 實作 目前 Shadowsocks 有多個實作支援，以自由軟體形式釋出的主要有 （以 Python 語言編寫） （C 語言編寫，目前僅修復 BUG） （Rust 語言編寫，libev 版本停止新功能開發之後的繼任活躍開發版本） （客戶端） （客戶端） （客戶端） （客戶端） ShadowsocksR（Shadowsocks 的第三方分支版本） V2Ray Brook Trojan Clash 等等，還有為數甚多的免費軟體及商業軟體。 ShadowsocksR ShadowsocksR（簡稱 SSR）是網名為 breakwa11 的使用者發起的 Shadowsocks 分支，在 Shadowsocks 的基礎上增加了一些資料混淆方式，稱修復了部分安全問題並可以提高 QoS 優先順序。後來貢獻者 Librehat 也為 Shadowsocks 補上了一些此類特性，甚至增加了類似 Tor 的可插拔傳輸層功能。 ShadowsocksR 開始時曾有過違反 GPL、發放二進位制時不發放原始碼的爭議，使得原開發作者不滿。不過後來 ShadowsocksR 專案由 breakwa11 轉為了與 Shadowsocks 相同的 GPL、Apache 許可證、MIT 許可證等多重自由軟體許可協 議。 2017 年 7 月 19 日，ShadowsocksR 作者 breakwa11 在 Telegram 頻道 ShadowsocksR news 裡轉發了深圳市啟用 SS 協議檢測的訊息並被大量使用者轉發，引發恐慌。7 月 24 日，breakwa11 釋出了閉源的 SS 被動檢測程式，引發爭議。7 月 27 日，breakwa11 遭到自稱 ESUTV（惡俗 TV）的不明身份人士人身攻擊，對方宣稱如果不停止開發並阻止使用者討論此事件將釋出更多包含個人隱私的資料，隨後 breakwa11 表示遭到對方人肉搜尋並公開個人資料的是無關人士，為了防止對方繼續傷害無關人士，breakwa11 將刪除 GitHub 上的所有程式碼、解散相關交流群組，停止 ShadowsocksR 專案。但專案已被多人 fork，並有人在其基礎上繼續釋出新的版本，例如較為知名的（ShadowsocksRR）。 參考資料 註解 外部連結 Category2012 年軟體 Category 代理伺服器 Category 代理軟體 Category 翻牆軟體 Category 用 Python 程式設計的自由軟體 Category 用 C 程式設計的自由軟體 Category 用 C 程式設計的自由軟體 Category 用 Rust 程式設計的自由軟體