“Reality已被完全攻破”完全是1个错误的结论。

(最近1个账户于Xray-core提出提议,大放厥词“Reality已被完全攻破”,这里认为其仅仅是胡说八道。它给出的PoC代码是1个指纹匹配器,且实现亦是存在错误的(Xray-core开发者的回复)。而此问题早已有解决方案,仅仅尚未实施而已,其认为“先于防火墙1步”,过早进行“军备竞赛”并无必要。

首先,characteristics.txt文件中包含各种畸形的ChangeCipherSpec(更改密码规格)ApplicationData(应用数据)数据包。理论上,若完善此列表,发送畸形数据包 对服务器进行探测,结合服务器的行为,便可组成1个“此服务器TLS实现的指纹”。原理便是利用不同TLS实现对畸形数据包的行为:返回Alert(告警)数据包、连接超时(服务器静默丢弃了数据包)或断开连接(服务器返回TCPRST或者FIN数据包)。

此程序通过监听网络数据包,捕获ClientHello(客户端问候)并重放(重新发送),服务器响应ServerHello(服务器问候)后便发送上述探测数据包,以组成服务器的TLS行为指纹;由于短时间内服务器可以接受相同的“会话ID(ClientHello中的1个部分,用于标识1个TLS会话)”。若是Reality服务器,此后的探测包将被Xray-core(或其它Reality实现)处理。

接下来进行第2批探测,随机化“会话ID”并再次发送ClientHello,再发送探测数据包;由于服务器的Reality验证失败,探测数据包便会发送至Reality目标,Reality服务器此时充当目标网站的反向代理服务器。此时,若检测到的行为指纹与先前不同,便可认定“服务器存在2种不同的TLS实现”,可大概率假设其为Reality服务器。

这里认为,若构建更多探测数据包,结合热门代理服务器机房与“Reality目标为apple.com”等可疑行为,进行针对性探测,的确可以检测Reality服务器。不过,此方案显然不能做到所谓100%的检测成功率,例如极易想到的“Reality目标同样使用Go语言TLS实现”之情况,原作者便是想要借助1个已知问题,“搞1个大新闻”罢了。)

1 Like