分析一个软件是否安全的过程称为“Threat modeling”,它的过程可能相当得繁琐。简而言之,如果一个软件没有任何的输入输出,我们姑且认为它是安全的,当然这样的软件也没有什么用。于是我们分析一下软件的输入输出有怎样的风险,即可以判断它有怎样的安全性问题。
接下去我们将会对 VMess/V2Ray 中网络相关的输入输出进行一些简单的分析,并同时拿 Shadowsocks 做一下对比。
目前只有 TLS(和其它基于 TLS 的协议)实现了前向安全性,VMess 和 Shadowsocks 都不具有这一特性。VMess 不添加这个特性的原因是:
Shadowsocks 服务器软件中,目前只有 ss-libev 可以抵御重放攻击,其它的版本似乎都不支持这一功能。VMess 从 2.19 开始可以抵御重放攻击。
Breakwa11 最早提出的 Shadowsocks 服务器的判定方式,就是 CCA 的一种。
通常来说,CCA / CPA 结合重放攻击,可以达到比较好的效果。重放攻击的好处是不需要自己构造数据。VMess 和 Shadowsocks 的通讯内容全程加密,在不知道密钥的情况下,构造出一个合理的数据包几乎不可能。但是通过重放攻击的方式,拦截再修改数据包,难度就小多了。
模式识别是一个把双刃剑,如果一个协议被识别成了它自己,那它就很有可能被封锁;如果一个协议被识别成了其它的协议,那它就可以混水摸鱼了。
目前 VMess 和 Shadowsocks 均没有已知的可被利用的模式。
from https://cnsteem.com/cn/@v2ray/fjd2k
接下去我们将会对 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 均没有已知的可被利用的模式。
from https://cnsteem.com/cn/@v2ray/fjd2k
No comments:
Post a Comment