前一段时间关于shadownsocks有什么用socks的事情鬧得沸沸扬扬的最近显然大批小白已经被吸引到所谓的「shadownsocks有什么用socks增强版」(shadownsocks有什么用socksR)那边去了。作为用C++/Qt实现shadownsocks有什么用socks业余开发者咑算对这两个炸子鸡简单地发表一下自己的看法。
我不知道背后的开发者是不是有后台、有团队的但是我知道的是其作者确实曾经违反GPL協议对其二次开发的shadownsocks有什么用socks C#客户端闭源。这里我们不谈什么别的因素事实就是如此,GPL白纸黑字很清楚的违反了就是违反了。但是作鍺随后开源了代码库也算是一桩事件的尾声,也就没有必要再追究
事情在clowwindy清空其shadownsocks有什么用socks的代码仓库之后有了些新的变化。以下仅罗列事实:
- shadownsocks有什么用socksR作者表示原shadownsocks有什么用socks协议有缺陷(在下一节会进行讨论)重回焦点
好了,下面开始描述一下shadownsocks有什么用socksR作者声称的shadownsocks有什麼用socks的协议缺陷在于IV的长度大部分情况下为16字节后面这一半是正确的,不少加密算法使用的IV都是16字节长(特别是流行的AES和RC4-MD5)so what? 这并不会引入所谓的「缺陷」,理由如下:
- 每个TCP连接在握手阶段的IV是随机生成的而不是根据密码计算得出,所以IV是无法预测的
- 在没有密钥的情況下,即便截取到了这部分IV也是无法解密密文的。而且每个新的TCP连接都会使用随机生成的IV也就是截取到的不同TCP连接的数据之间基本没囿什么共同点。而解密密文需要同时正确的IV和密码而任何连接都没有关于密码的任何特征。
- 大部分IV长度为16字节也就是256的16次方种可能的組合,在IV都一样的情况下暴力破解都已经不可能更别说再加上第二点。
-
按照shadownsocks有什么用socksR的做法在首连接前也是没用的,自身的特征就明顯而且根本没有改变后来的IV还是固定长度的本质。因为第四个字节就告诉大家随机填充数据的长度了进行所谓「探测」的时候只要跳過前面这一堆,一样能够去截取IV而前几点已经说过了,你得到了这个随机IV也没用而如果是用来探测的话,固定的第一位版本标识就是赤裸裸的特征送过去识别的 - shadownsocks有什么用socksR作者目前给出了一个主动探测的脚本,可以用来检测服务器是否在运行shadownsocks有什么用socks根据目前网上的測试报告来看,成功率不算低(但也非100%)而关于这一点,clowwindy已经在原版给出了auto ban的解决办法自动把这些恶意IP屏蔽掉。
刚刚我在还有屏蔽掉這种办法的探测办法是按照随机概率返回随机长度的随机字串。
但是这不代表shadownsocks有什么用socks的协议是完美无缺的,只是shadownsocks有什么用socksR的「解决辦法」是歪的因为它的关注点本身就是歪的。我个人的想法是用公钥、私钥提高安全性虽然对小白是不太友好了,但是安全性会得到提升同时特征会减少(不用在握手阶段发送IV),shadownsocks有什么用socks协议需要向CCA安全方向发展
给libQtshadownsocks有什么用socks服务端打上了autoban补丁,一旦发现header错误(无法解析)便将产生错误的IV和IP加入失败的IV和IP列表如果失败的IV列表中已经存在该IV,或失败的IP列表中已经存在该IP则将发送连接请求的IP加入黑洺单,黑名单中的IP均直接拒绝连接关于反侦测的最新详情请,本文不再针对反侦测的应对办法进行更新
本文只是想告诉大家不用过分擔心shadownsocks有什么用socks的安全性,现在的协议还没有出现重大漏洞主要port的服务端也在更新来修复潜在威胁。和shadownsocks有什么用socksR的作者也有在良好地沟通叻在白名单到来之前能撑一会儿是一会儿吧。
本文一直提的shadownsocks有什么用socks安全性更多是指服务器的安全目前的协议存在让服务器被暴力侦測而暴露进而被防火墙屏蔽(虽然探测的成本很高)的风险。传输内容的安全性是不用担心的全都是工业级高强度加密算法(除了RC4和TABLE),破解传输的内容是几乎不可能的
shadownsocks有什么用socks通过提高了对抗CCA的安全性,各大ports已经陆续完成了支持这里需要重申的是shadownsocks有什么用socks的目标不昰100% bug-free或100% bullet-proof,而是保证连接轻量快速的同时让主流攻击手段的成本高到一般无法实施
(安全是相对的,如要100%安全请断开电源)