Snowflake (軟件)
Snowflake是一款通過中繼數據請求從而突破網絡審查的一套軟件,其中繼節點由網絡未被審查的國家的用戶運行,而受審查國家的用戶可以通過Tor瀏覽器內置的Snowflake客戶端來將Snowflake中繼節點作為代理服務器,從而連接Tor網絡。Snowflake節點可以通過安裝瀏覽器擴展程序、安裝獨立軟件或者瀏覽嵌有Snowflake中繼的網頁來創建。
歷史
2016年1月,Snowflake的第一個版本發布,由前Google工程師兼音樂會鋼琴家Serene發明[1]。其名字「Snowflake」(雪花)是對數目龐大的ICE協商相關臨時代理服務器的比喻[2]。
2019年Firefox和Google Chrome的Snowflake擴展程序發布。[2]
2023年2月,一款據稱是Snowflake升級版本的獨立軟件Snowstorm發布。該軟件以Rust語言編寫,由開放技術基金會資助,目前正在beta測試中。[3][4]
運作
像伊朗、俄羅斯和中國一些國家封鎖Tor網絡,用戶無法通過公開的Tor入口節點連接上,必須通過網橋——未公開的中繼來連接。而審查者會嘗試深度包檢測等手段識別並封鎖網橋[5] 。
Snowflake系統目前由四個主體構成:
- 客戶端(Client)
- Broker
- 代理(Proxy)
- 橋(Bridge)
客戶端
當用戶選擇使用Snowflake網橋時,他們的軟件作為「客戶端」運作[6]。
該部分的源代碼位於Snowflake倉庫的「client」目錄下。
Broker
「客戶端」首先連接到Broker,獲取由志願者運作的可用Snowflake「代理」,該過程使用域前置技術,看起來就像是訪問一個主流網站[7][5]。目前Tor瀏覽器內置的Snowflake網橋以多個使用CDN77的網站作為偽裝域名。
該部分的源代碼位於Snowflake倉庫的「broker」目錄下。
代理
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
— snowflake.torproject .org,
在網頁上嵌入Snowflake的HTML代碼,用戶通過一個開關即可運作代理
客戶端通過Broker獲取到Snowflake代理後,直接向代理發起WebRTC連接,此處中間人看到的內容就像是視頻會議應用產生的P2P流量[5]。
志願者安裝一個瀏覽器擴展程序或者保持嵌入有Snowflake代碼的標籤頁開啟都會使其計算機變成一個代理[2]。在後者的情況下,志願者只需打開一個網頁內的開關即可使其運作。另外Snowflake代理也可以作為獨立程序運行,比如在Docker容器中運行[7]。
Snowflake代理只要網頁或者程序連接到互聯網就會一直運行,如果某運行者的計算機使用動態IP,代理的IP也會隨之變化[1][7]。Snowflake代理以Tor入口的角色運作,而非出口,並不直接訪問用戶需要的網站,因此降低了法律風險[1]。中繼流量會增加志願者計算機的帶寬用量,但一般不會降低做其他事情的網速[1][7]。
該部分的源代碼位於Snowflake倉庫的「proxy」目錄下。
橋
志願者運作的「代理」並不直接連接Tor入口節點,而是與Snowflake「橋」通信(目前「橋」有兩個,都位於歐洲),「橋」則負責中轉流量到Tor網絡[8][6]。
該部分的源代碼位於Snowflake倉庫的「server」目錄下。
應對措施
審查者可能使用DTLS指紋識別並封鎖Snowflake,這在俄羅斯曾經發生過。另一種可能的審查方法是安裝並運行Tor瀏覽器,然後封鎖所有其提供的Snowflake代理。這兩種方法在面對大量志願者建立節點的情況下會遇到挑戰。[9][10]
應用
Snowflake在2022年10月伊朗示威期間被廣泛討論和使用[1],還有人發布了波斯語的使用教程[11][5]。
同年,俄羅斯政府增大了對Tor技術和政治上的封鎖力度,結果是該國境內Snowflake網橋的使用人數增加[9][10]。
參見
- 賽風 - 使用多種反審查技術的翻牆工具
- 閃現代理 - 與Snowflake原理類似的網橋
- 球鞋網路 - 在網絡接入受限的國家廣泛使用的技術
- uProxy - 類似地,由志願者擔當代理節點的瀏覽器擴展程序
參考來源
- ^ 1.0 1.1 1.2 1.3 1.4 Schwarzer, Matthias. Netzsperre im Iran umgehen: Wie "Snowflake" einen Weg ins freie Internet ermöglicht - so kann der Westen helfen. RedaktionsNetzwerk Deutschland. 2022-09-30 [2022-10-10]. (原始內容存檔於2022-10-10) (德語).
- ^ 2.0 2.1 2.2 Cimpanu, Catalin. Tor Snowflake turns your browser into a proxy for users in censored countries. ZDNet. 2019-10-16 [2023-04-20]. (原始內容存檔於2023-01-16) (英語).
- ^ Binder, Matt. Snowflake helped Tor users thwart Russian censorship. Now the VPN is branching out as Snowstorm.. Mashable. 2023-02-10 [2023-04-20]. (原始內容存檔於2023-06-08).
- ^ Moreno, Johan. As The Internet Freedom Project Expands, Snowflake Becomes Snowstorm. 福布斯. 2023-02-08 [2023-04-20]. (原始內容存檔於2023-04-01).
- ^ 5.0 5.1 5.2 5.3 Quintin, Cooper. Snowflake Makes It Easy For Anyone to Fight Censorship. 電子前哨基金會. 2022-10-04 [2023-04-20]. (原始內容存檔於2022-10-10) (英語).
- ^ 6.0 6.1 Technical Overview. gitlab.torproject.org. 2021-11-04 [2023-04-20]. (原始內容存檔於2023-05-11).
- ^ 7.0 7.1 7.2 7.3 Eikenberg, Ronald. Internetsperren im Iran: So leisten Sie mit Snowflake Unterstützung. c't Magazin (Heise online). 2022-09-30 [2023-04-20]. (原始內容存檔於2023-04-14) (德語).
- ^ duncan. New Release: Tor Browser 12.0. Tor Blog. 2022-12-07 [2023-05-14]. (原始內容存檔於2023-05-26).
Bug tor-browser-build#40674: Add Secondary Snowflake Bridge
- ^ 9.0 9.1 Tor 项目如何对抗俄罗斯的审查. Solidot. 2022-07-31 [2023-04-20]. (原始內容存檔於2022-10-07).
- ^ 10.0 10.1 Burgess, Matt. How Tor Is Fighting—and Beating—Russian Censorship. 連線. 2022-07-28 [2022-07-30]. (原始內容存檔於2022-08-08).
- ^ Iran: Circumventing Censorship with Tor. Tor Project Forum. 2022-09-22 [2023-04-20]. (原始內容存檔於2023-05-24) (英語).
外部連結
- Snowflake ❄️ (頁面存檔備份,存於網際網路檔案館) - torproject.org (簡體中文)
- Snowflake 源代碼倉庫 - gitlab.torproject.org
- Bridge users using transport snowflake (頁面存檔備份,存於網際網路檔案館) - Tor Metrics (英文)