-
Notifications
You must be signed in to change notification settings - Fork 125
Closed
Labels
Description
Motivation
The shadow-tls protocol may be one of safest protocol now? (I've used the shadow-tls-v3 for a long time, it's pretty stable)
Current implementation in other repos
- original rust: https://github.com/ihciah/shadow-tls (monoio as the runtime)
- clash go impl: https://github.com/MetaCubeX/Clash.Meta/blob/Alpha/transport/shadowtls/
- another rust version: https://github.com/hsqStephenZhang/shadow-tls-tokio-client
Status quo:
- in golang, the shadowtls client use the utls to hack the client hello packet
- in rust, since the TLS is rely on rustls, the monoio & tokio version of client both modify the rustls and change some code in the process of building client hello
what we need to do
- fork a rustls & tokio-rustls, do some changes similar to shadow-tls-tokio-client
- patch the Cargo.toml
- add shadowtls's option in the shadowsocks's plugin
- reuse the code of shadow-tls-tokio-client
I had fully implement this protocol in my local environment and had it fully tested, however, i don't know what's the best way to handle the dependency of the hacked rustls & tokio-rustls: should i maintain the code by myself, or should we create a organization, and move the forked repos(rust-tun, netstack-lwip .etc ) to it?
ibigbug