代理工具的安全性(一)
cn·@v2ray·
0.000 HBD代理工具的安全性(一)
目测本周的更新又双叒叕要黄了,如果不发一些什么东西,你们又该猜测喝茶的事情了,所以还是随便写点吧。 分析一个软件是否安全的过程称为“[Threat modeling](https://en.wikipedia.org/wiki/Threat_model)”,它的过程可能相当得繁琐。简而言之,如果一个软件没有任何的输入输出,我们姑且认为它是安全的,当然这样的软件也没有什么用。于是我们分析一下软件的输入输出有怎样的风险,即可以判断它有怎样的安全性问题。 接下去我们将会对 VMess/V2Ray 中网络相关的输入输出进行一些简单的分析,并同时拿 Shadowsocks 做一下对比。  ## 密钥破解 VMess 使用的加密方式(AES-GCM、AES-CFB、CHACHA20)暂时都没有已知的破解方法。这里的不能破解指的是,即使同时拿到了加密前和加密后的文本,也无法得到密钥。再多的文本也没用。 ## 前向安全性 [前向安全性(Forward Secrecy)]((https://en.wikipedia.org/wiki/Forward_secrecy))指的是,假设某一天通讯的密钥破解了,而之前的某些通讯数据被截获,被截获的数据无法通过密钥解开。能做到一点的协议被称为具有前向安全性。 目前只有 TLS(和其它基于 TLS 的协议)实现了前向安全性,VMess 和 Shadowsocks 都不具有这一特性。VMess 不添加这个特性的原因是: 1. V2Ray 已支持套用 TLS; 1. 实现前向安全性就必须增加额外的密钥交换环节,会增加延时; 1. 并不是所有人都关心这一特性; ## 中间人 [中间人(MITM)](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)攻击指的是,在 A 和 B 通信时,有一个 C 站在 A 和 B 当中,和 A 说我是 B,和 B 说我是 A,然后尝试截获并破解通信的内容。通常来说,MITM 对于 VMess 或 Shadowsocks 这类预设密码的协议无效,只对 TLS 这类需要密钥交换的协议有效。TLS 使用了证书链的方式避免了 MITM 攻击。 ## 重放攻击 [重放攻击](https://en.wikipedia.org/wiki/Replay_attack)是指当 A 和 B 的通讯被 C 截获后,C 使用截获到的内容对 A 或 B 进行攻击。重放攻击的常见做法是对服务器的 DDoS。 Shadowsocks 服务器软件中,目前只有 ss-libev 可以抵御重放攻击,其它的版本似乎都不支持这一功能。VMess 从 2.19 开始可以抵御重放攻击。 ## CCA / CPA 选择[密文](https://en.wikipedia.org/wiki/Chosen-ciphertext_attack)/[明文](https://en.wikipedia.org/wiki/Chosen-plaintext_attack)攻击,是指精心构造出一些特殊的内容,然后对服务器实施的攻击。 Breakwa11 最早提出的 Shadowsocks 服务器的判定方式,就是 CCA 的一种。 通常来说,CCA / CPA 结合重放攻击,可以达到比较好的效果。重放攻击的好处是不需要自己构造数据。VMess 和 Shadowsocks 的通讯内容全程加密,在不知道密钥的情况下,构造出一个合理的数据包几乎不可能。但是通过重放攻击的方式,拦截再修改数据包,难度就小多了。 ## 模式识别 模式识别指的是使用人工或自动的方法,通过分析大量的正常通信数据,得出某个协议的某种模式。举个简单的例子,TLS 1.2 的数据包,第二和第三个字符都是数值 3。如果一个服务器的固定端口的通信数据,总是符合这一特征,那么我们便可认为它在使用 TLS 通讯。 模式识别是一个把双刃剑,如果一个协议被识别成了它自己,那它就很有可能被封锁;如果一个协议被识别成了其它的协议,那它就可以混水摸鱼了。 目前 VMess 和 Shadowsocks 均没有已知的可被利用的模式。
👍 maxm, heyeshuang, momok, imikay, ivysrono, xiaoshancun, birdofhope, hiudighsa, quantum-bug, tims-wong, andy1024, daobuyuanren, szh7379, foomad, hoboalia, tlze, linbenyi, lighting1996, just9s, johnspin,