关于ShadowsocksR和Shadowsocks的安全性

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

ShadowsocksR

ShadowsocksR作者曾表示要start from scratch写一个新的与shadowsocks无关的代理工具,并且不再更新ShadowsocksR

  1. 两三天后shadowsocks被勒令删除,原shadowsocks项目基本消失
  2. ShadowsocksR作者表示原shadowsocks协议有缺陷(在下一节会进行讨论),重回焦点
  3. ShadowsocksR作者建立了Google+ Group,更新了ShadowsocksR相关代码

Shadowsocks的安全性

好了,下面开始描述一下ShadowsocksR作者声称的Shadowsocks的协议缺陷在于IV的长度大部分情况下为16字节。后面这一半是正确的,不少加密算法使用的IV都是16字节长(特别是流行的AES和RC4-MD5),so what? 这并不会引入所谓的「缺陷」,理由如下:

  1. 每个TCP连接在握手阶段的IV是随机生成的,而不是根据密码计算得出,所以IV是无法预测的。
  2. 在没有密钥的情况下,即便截取到了这部分IV,也是无法解密密文的。而且每个新的TCP连接都会使用随机生成的IV,也就是截取到的不同TCP连接的数据之间基本没有什么共同点。而解密密文需要同时正确的IV和密码,而任何连接都没有关于密码的任何特征。
  3. 大部分IV长度为16字节,也就是256的16次方种可能的组合,在IV都一样的情况下暴力破解都已经不可能,更别说再加上第二点。
  4. 按照ShadowsocksR的做法,在首连接前加入所谓的混淆头也是没用的,自身的特征就明显,而且根本没有改变后来的IV还是固定长度的本质。因为第四个字节就告诉大家随机填充数据的长度了,进行所谓「探测」的时候只要跳过前面这一堆,一样能够去截取IV。而前几点已经说过了,你得到了这个随机IV也没用。而如果是用来探测的话,固定的第一位版本标识就是赤裸裸的特征送过去识别的。
  5. ShadowsocksR作者目前给出了一个主动探测的脚本,可以用来检测服务器是否在运行shadowsocks,根据目前网上的测试报告来看,成功率不算低(但也非100%)。而关于这一点,clowwindy已经在原版给出了auto ban的解决办法,自动把这些恶意IP屏蔽掉。刚刚我在libQtShadowsocks里加了个补丁还有这个补丁屏蔽掉这种办法的探测,办法是按照随机概率返回随机长度的随机字串。

但是,这不代表shadowsocks的协议是完美无缺的,只是ShadowsocksR的「解决办法」是歪的,因为它的关注点本身就是歪的。我个人的想法是用公钥、私钥提高安全性,虽然对小白是不太友好了,但是安全性会得到提升,同时特征会减少(不用在握手阶段发送IV),shadowsocks协议需要向CCA安全方向发展。

05-Sep-2015 更新

给libQtShadowsocks服务端打上了autoban补丁,一旦发现header错误(无法解析)便将产生错误的IV和IP加入失败的IV和IP列表,如果失败的IV列表中已经存在该IV,或失败的IP列表中已经存在该IP,则将发送连接请求的IP加入黑名单,黑名单中的IP均直接拒绝连接。关于反侦测的最新详情请查看该issue,本文不再针对反侦测的应对办法进行更新。

06-Sep-2015 更新

本文只是想告诉大家不用过分担心Shadowsocks的安全性,现在的协议还没有出现重大漏洞,主要port的服务端也在更新来修复潜在威胁。和ShadowsocksR的作者也有在良好地沟通了,在白名单到来之前能撑一会儿是一会儿吧。

24-Sep-2015 更新

本文一直提的Shadowsocks安全性更多是指服务器的安全,目前的协议存在让服务器被暴力侦测而暴露进而被防火墙屏蔽(虽然探测的成本很高)的风险。传输内容的安全性是不用担心的,全都是工业级高强度加密算法(除了RC4和TABLE),破解传输的内容是几乎不可能的。

18-Nov-2015 更新

Shadowsocks通过加入一次验证提高了对抗CCA的安全性,各大ports已经陆续完成了支持。这里需要重申的是Shadowsocks的目标不是100% bug-free或100% bullet-proof,而是保证连接轻量快速的同时让主流攻击手段的成本高到一般无法实施。

There’s no such thing as security. 没有一个叫安全的东西。 (安全是相对的,如要100%安全,请断开电源)


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