Shadowsocks

网络采集2018-11-02 16:29:17 295
版权声明:本站部分内容来自网络转载,如有版权问题,请联系我们。

Shadowsocks可以指:一种基于Socks5代理方式的加密传输协议,也可以指实现这个协议的各种传输包。目前包使用PythonCC++C#Go语言等编程语言开发,大部分主要实现(iOS平台的除外)采用Apache许可证GPLMIT许可证等多种自由软件许可协议开放源代码。Shadowsocks分为服务器端和客户端,在使用之前,需要先将服务器端部署到服务器上面,然后通过客户端连接并创建本地代理。

在中国大陆,本工具也被广泛用于突破防火长城(GFW),以浏览被封锁、遮蔽或干扰的内容。2015年8月22日,Shadowsocks原作者Clowwindy称受到了中国政府的压力,宣布停止维护此计划(项目)并移除其个人页面所存储的源代码[4][5]

运行原理[编辑]

Shadowsocks的运行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。

在服务器端部署完成后,用户需要按照指定的密码、加密方式和端口,使用客户端软件与其连接。在成功连接到服务器后,客户端会在本机上构建一个本地Socks5代理(或VPN、透明代理)。浏览网络时,网络流量会被分到本地Socks5代理,客户端将其加密之后发送到服务器,服务器以同样的加密方式将流量回传给客户端,以此实现代理上网。

特点[编辑]

  • Shadowsocks使用自行设计的协议进行加密通信。[6]加密算法有AESBlowfishIDEARC4等,除创建TCP连接外无需握手,每次请求只转发一个连接,无需保持“一直连线”的状态,因此在移动设备上相对较为省电。
  • 所有的流量都经过算法加密,允许自行选择算法。
  • Shadowsocks通过异步I/O和事件驱动程序运行,响应速度快。
  • 客户端覆盖多个主流操作系统和平台,包括WindowsOS XAndroidLinuxiOS系统和路由器(OpenWrt)等[7]

安全性[编辑]

然而Shadowsocks自行设计的加密协议对双方的身份验证仅限于预共享密钥,亦无完全前向保密,也未曾有安全专家公开分析或评估协议及其实现。

Shadowsocks不能替代TLS或者VPN,本质上只是设置了密码的网络代理协议,不能用作匿名通信方案,该协议的目标不在于提供完整的通信安全机制,主要是为了协助上网用户在严苛的网络环境中突破封锁。

在某些极端的环境下,通过深度包检测(DPI)也有可能识别出协议特征。为了确保安全,用户应做好额外的加密和验证措施,以免泄露信息,无论使用的服务器来源是否可靠。2017年9月21日,一篇名为《The Random Forest based Detection of Shadowsock's Traffic》的论文在IEEE发表,该论文介绍了通过随机森林算法检测Shadowsocks流量的方法,并自称可达到85%的检测精度[8],虽然该论文的有效性遭到网友质疑[9],但机器学习配合GFW已经实现的深度数据包检测来识别网上流量特征的做法是实际可行的,而且还适用于任何网上代理协议而不仅仅局限于Shadowsocks。[10]

实现[编辑]

目前Shadowsocks有多个实现支持,以自由软件形式发布的主要有原始Shadowsocks(以Python语言编写)、Shadowsocks-libev(分支项目openwrt-Shadowsocks)、Shadowsocks-rust、Shadowsocks-go/go-Shadowsocks2、libQtShadowsocks、Shadowsocks-qt5(仅作为客户端)、Shadowsocks-android(仅作为客户端)、Shadowsocks-windows(仅作为客户端)、ShadowsocksX-NG(仅作为客户端)、Outline[11]、V2Ray、Brook[12]等等,还有为数甚多的免费软件及专有软件(多数是iOS上运行的,如shadowrocket、Surge等)。

项目转手[编辑]

2015年8月22日,其作者Clowwindy在GitHub上称,警察在两日前要求他停止开发Shadowsocks项目并删除其所有代码。[13]之后,作者停止维护Shadowsocks,其GitHub项目页面已被清空。[14][15]消息传出后,许多中国和外国开发商,以及Shadowsocks用户,在GitHub中对作者表示了致谢,对已清空源代码的项目页面加星标,因此在当时Shadowsocks成为了GitHub上的热门项目(Trending)。[16]但另有消息,原作者曾作出的据称“透露中国社会现状”的发言可能遭到某些中国政府支持者的检举,从而为后来被要求撤下项目源代码的事件埋下伏笔,而类似的因个人网上发言不当而被检举的事件在中国大陆也“时有发生”。[17]

8月25日,另一个用于突破网络审查的GoAgent项目也被作者自行删除。删除后几小时之内,GitHub即遭到了来自中国的DDoS攻击,据报这次攻击与中国政府有关,因为当局此前曾要求Github移除两个反对网络审查的项目但没有被接受。[18]

2015年8月28日,电子前哨基金会针对Shadowsocks和GoAgent被删除一事发表评论,对中国政府针对翻墙软件作者的打击表示“强烈谴责”。[5]

尽管如此,Git仓库的日志显示该项目被移除以前就有大量的复刻副本,不少副本仍然有用户维护。Shadowsocks项目页本身也陆续恢复了内容,并交由多人维护,各大Linux包的软件仓库均有各式Shadowsocks的实现的包仍持续更新可用。

主要项目分支[编辑]

ShadowsocksR[编辑]

ShadowsocksR是breakwa11发起的Shadowsocks分支,在Shadowsocks的基础上增加了一些数据混淆方式,称修复了部分安全问题并可以提高QoS优先级。[19]后来贡献者Librehat也为Shadowsocks补上了一些此类特性,[20]甚至增加了类似Tor的可插拔传输层功能。[21]

ShadowsocksR开始时曾有过违反GPL、发放二进制时不发放源码的争议,[22]不过后来ShadowsocksR项目由breakwa11转为了与Shadowsocks相同的GPL、Apache许可证、MIT许可证等多重自由软件许可协议。

2017年7月19日,ShadowsocksR作者breakwa11在Telegram频道ShadowsocksR news里转发了深圳市启用SS协议检测并被大量用户转发,引发恐慌[23]。7月24日,breakwa11发布了闭源的SS被动检测程序,引发争议[24]。 2017年7月27日,breakwa11遭到自称 "ESU.TV" 的不明身份人士人身攻击,对方宣称如果不停止开发并阻止用户讨论此事件将发布更多包含个人隐私的资料[25],随后breakwa11表示遭到对方人肉搜索并公开个人资料的是无关人士,为了防止对方继续伤害无关人士,breakwa11将删除GitHub上的所有代码、解散相关交流群组,停止ShadowsocksR项目。但项目已被多人fork。并有人在其基础上继续发布新的版本,例如SSRR


本站一切资源来源于网络采集,仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!如有任何问题或者意见,请联系网站管理员:jzroot#gmail.com