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系统目前由四个主体构成:
- 客户端()
- 代理()
- 桥()
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代码,用户通过一个开关即可运作代理
客户端通过获取到Snowflake代理后,直接向代理发起WebRTC连接,此处中间人看到的内容就像是视频会议应用产生的P2P流量[5]。
志愿者安装一个浏览器扩展程序或者保持嵌入有Snowflake代码的标签页开启都会使其计算机变成一个代理[2]。在后者的情况下,志愿者只需打开一个网页内的开关即可使其运作。另外Snowflake代理也可以作为独立程序运行,比如在Docker容器中运行[7]。
Snowflake代理只要网页或者程序连接到互联网就会一直运行,如果某运行者的计算机使用动态IP,代理的IP也会随之变化[1][7]。Snowflake代理以Tor入口的角色运作,而非出口,并不直接访问用户需要的网站,因此降低了法律风险[1]。中继流量会增加志愿者计算机的带宽用量,但一般不会降低做其他事情的网速[1][7]。
该部分的源代码位于Snowflake仓库的“proxy”目录下。
应对措施
审查者可能使用DTLS指纹识别并封锁Snowflake,这在俄罗斯曾经发生过。另一种可能的审查方法是安装并运行Tor浏览器,然后封锁所有其提供的Snowflake代理。这两种方法在面对大量志愿者建立节点的情况下会遇到挑战。[9][10]
应用
Snowflake在2022年10月伊朗示威期间被广泛讨论和使用[1],还有人发布了波斯语的使用教程[11][5]。
同年,俄罗斯政府增大了对Tor技术和政治上的封锁力度,结果是该国境内Snowflake网桥的使用人数增加[9][10]。
参见
参考来源
- Schwarzer, Matthias. . RedaktionsNetzwerk Deutschland. 2022-09-30 [2022-10-10]. (原始内容存档于2022-10-10) (德语).
- Cimpanu, Catalin. . ZDNet. 2019-10-16 [2023-04-20]. (原始内容存档于2023-01-16) (英语).
- Binder, Matt. . Mashable. 2023-02-10 [2023-04-20]. (原始内容存档于2023-06-08).
- Moreno, Johan. . 福布斯. 2023-02-08 [2023-04-20]. (原始内容存档于2023-04-01).
- Quintin, Cooper. . 电子前哨基金会. 2022-10-04 [2023-04-20]. (原始内容存档于2022-10-10) (英语).
- . gitlab.torproject.org. 2021-11-04 [2023-04-20]. (原始内容存档于2023-05-11).
- Eikenberg, Ronald. . c't Magazin (Heise online). 2022-09-30 [2023-04-20]. (原始内容存档于2023-04-14) (德语).
- duncan. . Tor Blog. 2022-12-07 [2023-05-14]. (原始内容存档于2023-05-26).
Bug tor-browser-build#40674: Add Secondary Snowflake Bridge
- . Solidot. 2022-07-31 [2023-04-20]. (原始内容存档于2022-10-07).
- Burgess, Matt. . 连线. 2022-07-28 [2022-07-30]. (原始内容存档于2022-08-08).
- . 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 (英文)