代理工具的安全性(一)
目测本周的更新又双叒叕要黄了,如果不发一些什么东西,你们又该猜测喝茶的事情了,所以还是随便写点吧。
分析一个软件是否安全的过程称为“Threat modeling”,它的过程可能相当得繁琐。简而言之,如果一个软件没有任何的输入输出,我们姑且认为它是安全的,当然这样的软件也没有什么用。于是我们分析一下软件的输入输出有怎样的风险,即可以判断它有怎样的安全性问题。
接下去我们将会对 VMess/V2Ray 中网络相关的输入输出进行一些简单的分析,并同时拿 Shadowsocks 做一下对比。
密钥破解
VMess 使用的加密方式(AES-GCM、AES-CFB、CHACHA20)暂时都没有已知的破解方法。这里的不能破解指的是,即使同时拿到了加密前和加密后的文本,也无法得到密钥。再多的文本也没用。
前向安全性
前向安全性(Forward Secrecy)指的是,假设某一天通讯的密钥破解了,而之前的某些通讯数据被截获,被截获的数据无法通过密钥解开。能做到一点的协议被称为具有前向安全性。
目前只有 TLS(和其它基于 TLS 的协议)实现了前向安全性,VMess 和 Shadowsocks 都不具有这一特性。VMess 不添加这个特性的原因是:
- V2Ray 已支持套用 TLS;
- 实现前向安全性就必须增加额外的密钥交换环节,会增加延时;
- 并不是所有人都关心这一特性;
中间人
中间人(MITM)攻击指的是,在 A 和 B 通信时,有一个 C 站在 A 和 B 当中,和 A 说我是 B,和 B 说我是 A,然后尝试截获并破解通信的内容。通常来说,MITM 对于 VMess 或 Shadowsocks 这类预设密码的协议无效,只对 TLS 这类需要密钥交换的协议有效。TLS 使用了证书链的方式避免了 MITM 攻击。
重放攻击
重放攻击是指当 A 和 B 的通讯被 C 截获后,C 使用截获到的内容对 A 或 B 进行攻击。重放攻击的常见做法是对服务器的 DDoS。
Shadowsocks 服务器软件中,目前只有 ss-libev 可以抵御重放攻击,其它的版本似乎都不支持这一功能。VMess 从 2.19 开始可以抵御重放攻击。
CCA / CPA
选择密文/明文攻击,是指精心构造出一些特殊的内容,然后对服务器实施的攻击。
Breakwa11 最早提出的 Shadowsocks 服务器的判定方式,就是 CCA 的一种。
通常来说,CCA / CPA 结合重放攻击,可以达到比较好的效果。重放攻击的好处是不需要自己构造数据。VMess 和 Shadowsocks 的通讯内容全程加密,在不知道密钥的情况下,构造出一个合理的数据包几乎不可能。但是通过重放攻击的方式,拦截再修改数据包,难度就小多了。
模式识别
模式识别指的是使用人工或自动的方法,通过分析大量的正常通信数据,得出某个协议的某种模式。举个简单的例子,TLS 1.2 的数据包,第二和第三个字符都是数值 3。如果一个服务器的固定端口的通信数据,总是符合这一特征,那么我们便可认为它在使用 TLS 通讯。
模式识别是一个把双刃剑,如果一个协议被识别成了它自己,那它就很有可能被封锁;如果一个协议被识别成了其它的协议,那它就可以混水摸鱼了。
目前 VMess 和 Shadowsocks 均没有已知的可被利用的模式。
Leave 代理工具的安全性(一) to:
Read more #cn posts
Best Posts From Victoria Raymond
We have not curated any of v2ray's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.