We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
看到昨天TLS握手包特征终于成为现实问题,并且官方也更新了版本。然而,新版并未完全解决TLS ClientHello的特征问题,只是解决了CipherSuites的特征。CipherSuites特征只是ClientHello特征的一部分。既然已经讨论到之前所用ClientHello不安全的问题,何不把所有的low-hanging fruits一并全部摘完?
(注:此贴所指的“完全解决”指使v2ray与其他golang客户端程序所使用的TLS默认设置一致。至于golang的默认设置本身是否安全,是否要换用uTLS,以及uTLS到底是刻鹄类鹜还是画虎类狗,等进一步的问题,皆不在此贴讨论范围内。)
我在此再列举两条:
v2ray目前主流最常用的两种模式ws与h2,在ClientHello里设置的alpn分别为["http/1.1"]与["h2"]。然而无论是任何主流浏览器,还是其他常见golang应用程序,使用的alpn都是["h2", "http/1.1"]。这导致的后果是,以golang默认CipherSuites,以及单独的http/1.1或h2的alpn,两者共同作为特征,仍然可以100%准确匹配使用ws/h2/tcp连接模式并开启TLS的v4.23.2版本的v2ray。概念验证我这里就不做了(没有必要),有兴趣的可以自己去尝试。墙要更新一下这个匹配模式,不过举手之劳。
["http/1.1"]
["h2"]
["h2", "http/1.1"]
http/1.1
h2
golang的tls.Config里有一个参数ClientSessionCache,默认值是nil。而v2ray里面默认则是有的。这会导致ClientHello里会多出两个扩展,session_ticket与psk_key_exchange_modes。其他的golang程序,是没有这两个的。(这点我不完全确定,如果有反例请纠正我。)当然,你可以说,chrome与firefox也有这两个啊。但是人家一看就是chrome或者firefox,不是golang。
session_ticket
psk_key_exchange_modes
解决这两个问题后,v2ray才会至少在ClientHello上看上去与其他golang程序完全一样。
关联: v2ray/discussion#704
为了引起关注,在此点几个名,见谅: @vcptr @kslr @p4gefau1t @DuckSoft @Qv2ray-dev
The text was updated successfully, but these errors were encountered:
v2ray/discussion#704 的每一条回复都看到了,4.23.2 是基本解决了包内容里的 constant string, 关于请求头只有 http2 和 要不要用 uTLS 还在讨论, #2518 也说了今后很可能引入 uTLS。 留 v2ray/discussion#704 open 的原因之一也是如此。 后续的变动和相关更新讨论会继续在 #2518 和 v2ray/discussion#704 进行。
Sorry, something went wrong.
No branches or pull requests
看到昨天TLS握手包特征终于成为现实问题,并且官方也更新了版本。然而,新版并未完全解决TLS ClientHello的特征问题,只是解决了CipherSuites的特征。CipherSuites特征只是ClientHello特征的一部分。既然已经讨论到之前所用ClientHello不安全的问题,何不把所有的low-hanging fruits一并全部摘完?
(注:此贴所指的“完全解决”指使v2ray与其他golang客户端程序所使用的TLS默认设置一致。至于golang的默认设置本身是否安全,是否要换用uTLS,以及uTLS到底是刻鹄类鹜还是画虎类狗,等进一步的问题,皆不在此贴讨论范围内。)
我在此再列举两条:
v2ray目前主流最常用的两种模式ws与h2,在ClientHello里设置的alpn分别为
["http/1.1"]
与["h2"]
。然而无论是任何主流浏览器,还是其他常见golang应用程序,使用的alpn都是["h2", "http/1.1"]
。这导致的后果是,以golang默认CipherSuites,以及单独的http/1.1
或h2
的alpn,两者共同作为特征,仍然可以100%准确匹配使用ws/h2/tcp连接模式并开启TLS的v4.23.2版本的v2ray。概念验证我这里就不做了(没有必要),有兴趣的可以自己去尝试。墙要更新一下这个匹配模式,不过举手之劳。golang的tls.Config里有一个参数ClientSessionCache,默认值是nil。而v2ray里面默认则是有的。这会导致ClientHello里会多出两个扩展,
session_ticket
与psk_key_exchange_modes
。其他的golang程序,是没有这两个的。(这点我不完全确定,如果有反例请纠正我。)当然,你可以说,chrome与firefox也有这两个啊。但是人家一看就是chrome或者firefox,不是golang。解决这两个问题后,v2ray才会至少在ClientHello上看上去与其他golang程序完全一样。
关联: v2ray/discussion#704
为了引起关注,在此点几个名,见谅: @vcptr @kslr @p4gefau1t @DuckSoft @Qv2ray-dev
The text was updated successfully, but these errors were encountered: