友情提示:此篇文章大约需要阅读 3分钟52秒,不足之处请多指教,感谢您的阅读。 订阅本站
Shadowsocks运行原理
Shadowsocks可以指:一种基于Socks5代理方式的加密传输协议,也可以指实现这个协议的各种传输包。目前包使用Python、C、C++、C#、Go语言等编程语言开发,大部分主要实现(iOS平台的除外)采用Apache许可证、GPL、MIT许可证等多种自由软件许可协议开放源代码。shadowsocks分为服务器端和客户端,在使用之前,需要先将服务器端部署到服务器上面,然后通过客户端连接并创建本地代理。
Shadowsocks的运行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。
在服务器端部署完成后,用户需要按照指定的密码、加密方式和端口,使用客户端软件与其连接。在成功连接到服务器后,客户端会在用户的电脑上构建一个本地Socks5代理。浏览网络时,网络流量会被分到本地socks5代理,客户端将其加密之后发送到服务器,服务器以同样的加密方式将流量回传给客户端,以此实现代理上网。
Shadowsocks特点
- Shadowsocks使用自行设计的协议进行加密通信。加密算法有AES、Blowfish、IDEA、RC4等,除创建TCP连接外无需握手,每次请求只转发一个连接,无需保持“一直连接”的状态,因此在移动设备上相对较为省电。
- 所有的流量都经过算法加密,允许自行选择算法。
- Shadowsocks通过异步I/O和事件驱动程序运行,响应速度快。
- 客户端覆盖多个主流操作系统和平台,包括Windows、OS X、Android、Linux和iOS系统和路由器(OpenWrt)等。
安全性
然而Shadowsocks自行设计的加密协议对双方的身份验证仅限于预共享密钥,亦无完全前向保密,也未曾有安全专家公开分析或评估协议及其实现。
Shadowsocks不能替代TLS或者VPN,本质上只是设置了密码的网络代理协议,不能用作匿名通信方案,该协议的目标不在于提供完整的通信安全机制,主要是为了协助上网用户在严苛的网络环境中突破封锁。项目贡献者中不少建议有企业级用途需求的用户使用VPN。
在某些极端的环境下,通过深度包检测(DPI)也有可能识别出协议特征。为了确保安全,用户应做好额外的加密和验证措施,以免泄露信息,无论使用的服务器来源是否可靠。2017年9月21日,一篇名为《The Random Forest based Detection of Shadowsock’s Traffic》的论文在IEEE发表,该论文介绍了通过随机森林算法检测Shadowsocks流量的方法,并自称可达到85%的检测精度,虽然该论文的有效性遭到网友质疑,但机器学习配合GFW已经实现的深度数据包检测来识别网络流量特征的做法是实际可行的,而且还适用于任何网络代理协议而不仅仅局限于shadowsocks。
实现
目前Shadowsocks有多个实现支持,以自由软件形式发布的主要有原始shadowsocks(以Python语言编写)、Shadowsocks-libev(分支项目openwrt-shadowsocks)、shadowsocks-rust、shadowsocks-go/go-shadowsocks2、libQtShadowsocks、shadowsocks-qt5(仅作为客户端)、shadowsocks-android(仅作为客户端)、shadowsocks-windows(仅作为客户端)、ShadowsocksX-NG(仅作为客户端)、Outline、V2Ray等等,还有为数甚多的免费软件及专有软件(多数是iOS上运行的,如shadowrocket、Surge等)。
发表回复