apernet / hysteria

Hysteria is a powerful, lightning fast and censorship resistant proxy.
https://v2.hysteria.network/
MIT License
15k stars 1.67k forks source link

能否支持ECH #743

Open WolfCanglong opened 1 year ago

WolfCanglong commented 1 year ago

现在协议域名都是明文的,虽然目前好像还没实际影响,不过既然有检测SNI的先例是不是加密下好 有的协议已经支持ECH(Encrypted Client Hello)了,QUIC上ECH实现好像也有了,是不是可以加一个

chise0713 commented 1 year ago

quic实际上是需要解密才能拿到sni的,我认为gfw目前还没有方法或资源去解密quic

WolfCanglong commented 1 year ago

quic实际上是需要解密才能拿到sni的,我认为gfw目前还没有方法或资源去解密quic

你用wireshark之类抓个包看看?Client Hello里面域名就是明文的

tobyxdd commented 1 year ago

这个要等 quic-go 支持

chise0713 commented 1 year ago

quic实际上是需要解密才能拿到sni的,我认为gfw目前还没有方法或资源去解密quic

你用wireshark之类抓个包看看?Client Hello里面域名就是明文的

Wireshark那是解密过的。

GPT的说法 QUIC SNI Encryption Explanation Default (GPT-3.5) User quic的sni是明文吗 ChatGPT QUIC(Quick UDP Internet Connections)是一种用于传输网络数据的传输协议,它设计用于提供比传统的TCP更快的连接建立和数据传输速度。 在QUIC中,与TLS握手相关的一些信息,包括Server Name Indication (SNI),通常是加密传输的,因此不会以明文形式暴露给中间人攻击者。这与传统的TCP连接不同,其中SNI通常以明文形式传输,可能会暴露与连接相关的一些敏感信息。 因此,可以说在QUIC中,SNI是加密的,提高了连接的安全性。 User 是如何加密的 ChatGPT 在QUIC中,SNI(Server Name Indication)等与TLS握手相关的信息是通过使用密钥来进行加密的。 QUIC使用了一种称为"Initial Packet Protection"的机制来保护连接的初始阶段。在初始握手过程中,客户端和服务器会交换一些密钥,这些密钥用于加密和解密传输的数据。 具体来说,在QUIC的握手过程中,客户端和服务器会协商出一组密钥,用于保护连接的初始阶段,其中包括SNI等与TLS握手相关的信息。这些密钥用于加密和解密传输的数据,以确保在连接建立的过程中不会泄露敏感信息。 总的来说,QUIC使用密钥来保护与TLS握手相关的信息,包括SNI,使其在传输过程中不易受到窃听或篡改。这一机制有助于提高连接的安全性和保密性。
chise0713 commented 1 year ago

@WolfCanglong https://t.me/hysteria_github/78836/153913 群友的说法

chise0713 commented 1 year ago

综上所述,quic在正常情况下是没有必要多加一次ech的,本身就加密过ch,虽然很容易解密,但是gfw不太可能花太多的算力去把每个quic连接都解密一次,并且就gfw的滞后性来看,它还没有精确识别quic类代理流量的能力

WolfCanglong commented 1 year ago

综上所述,quic在正常情况下是没有必要多加一次ech的,本身就加密过ch,虽然很容易解密,但是gfw不太可能花太多的算力去把每个quic连接都解密一次,并且就gfw的滞后性来看,它还没有精确识别quic类代理流量的能力

确实是加密了但是相当于没加密,其实我也一开始也说了目前没啥影响,应该主要是墙并没有怎么分析QUIC,想分析的时候这个就和明文差不多了,想检测判断到流量大地址的握手包再解资源应该消耗没有那么大

WolfCanglong commented 1 year ago

看到个非官方实现的ech https://github.com/quic-go/quic-go/issues/3905 不过我试了下singbox的加上ech的配置走hysteria2,wireshark似乎还是能解出握手包域名,不知是还不支持还是ech还是能解,如果还是能解的话确实就意义不大了

RookieTerry commented 7 months ago

看到个非官方实现的ech quic-go/quic-go#3905 不过我试了下singbox的加上ech的配置走hysteria2,wireshark似乎还是能解出握手包域名,不知是还不支持还是ech还是能解,如果还是能解的话确实就意义不大了

大佬,求一个singbox内核支持ech的hysteria2配置,谢谢!另外问一下,CN2 GIA线路的VPS还有必要上hysteria2吗?还是xray内核配xtls+vision+reality就够用了?

WolfCanglong commented 7 months ago

看到个非官方实现的ech quic-go/quic-go#3905 不过我试了下singbox的加上ech的配置走hysteria2,wireshark似乎还是能解出握手包域名,不知是还不支持还是ech还是能解,如果还是能解的话确实就意义不大了

大佬,求一个singbox内核支持ech的hysteria2配置,谢谢!另外问一下,CN2 GIA线路的VPS还有必要上hysteria2吗?还是xray内核配xtls+vision+reality就够用了?

我只是配置开了ech 不确定singbox的hysteria2是不是真的支持 tls里面加个配置而已 服务端

      "ech": {
        "enabled": true,
        "pq_signature_schemes_enabled": true,
        "key_path": "/xx/xxx.key"
      }

客户端

      "ech": {
        "enabled": true,
        "pq_signature_schemes_enabled": true,
        "config_path": "xxx.pem"
      }

至于什么协议适合你得自己测试,每个人线路都不一样

RookieTerry commented 7 months ago

看到个非官方实现的ech quic-go/quic-go#3905 不过我试了下singbox的加上ech的配置走hysteria2,wireshark似乎还是能解出握手包域名,不知是还不支持还是ech还是能解,如果还是能解的话确实就意义不大了

大佬,求一个singbox内核支持ech的hysteria2配置,谢谢!另外问一下,CN2 GIA线路的VPS还有必要上hysteria2吗?还是xray内核配xtls+vision+reality就够用了?

我只是配置开了ech 不确定singbox的hysteria2是不是真的支持 tls里面加个配置而已 服务端

      "ech": {
        "enabled": true,
        "pq_signature_schemes_enabled": true,
        "key_path": "/xx/xxx.key"
      }

客户端

      "ech": {
        "enabled": true,
        "pq_signature_schemes_enabled": true,
        "config_path": "xxx.pem"
      }

至于什么协议适合你得自己测试,每个人线路都不一样

这个ech字段倒是添加了,不过其它的部分不太会写。能把服务端和客户端的完整配置发出来吗?官方文档的各种json看得我头都大了qwq

WolfCanglong commented 5 months ago

看到个非官方实现的ech quic-go/quic-go#3905 不过我试了下singbox的加上ech的配置走hysteria2,wireshark似乎还是能解出握手包域名,不知是还不支持还是ech还是能解,如果还是能解的话确实就意义不大了

之前理解的有误,ech其实是有2层sni,我之前抓到的是外层的sni,当时没搞明白写成了一样的以为能解,内层真实sni确实是加密的,特别上来说一下 还有就是确认了从抓包上看singbox的ech在hysteria下也是能生效的 不过这东西有没有什么用就有待讨论了

xiaorong61 commented 4 months ago

看到个非官方实现的ech quic-go/quic-go#3905 不过我试了下singbox的加上ech的配置走hysteria2,wireshark似乎还是能解出握手包域名,不知是还不支持还是ech还是能解,如果还是能解的话确实就意义不大了

大佬,求一个singbox内核支持ech的hysteria2配置,谢谢!另外问一下,CN2 GIA线路的VPS还有必要上hysteria2吗?还是xray内核配xtls+vision+reality就够用了?

对于 gia 线路也有意义: quic 类协议的多路复用很强,但 tuic 比 hy2 更稳定些。 tcp 类协议的多路复用有队头阻塞,性能很差。