-
Notifications
You must be signed in to change notification settings - Fork 990
New issue
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
Implement QUIC #211
Comments
Consider https://github.com/djc/quinn |
Linking this here in case it's useful: https://youtu.be/EHgyY5DNdvI |
Since |
There are security considerations in using QUIC which Adam Langely discussed in his RWC 2017 talk. I do not see any good links right now, but this might point the right direction : https://security.stackexchange.com/questions/123656/is-the-quic-protocol-secure |
@burdges That's a shame, although our current multiplexing implementation is laughably DoS-able |
There is a discussion that clarifies matters here, including a paper link. |
Related: https://eprint.iacr.org/2019/028 |
I'll check that out eventually. Ideally I should check if the noise handshake they select fix the issue with the key exchange Adam Langely initially selected, probably fine. We could get someone to add Rust to https://noiseexplorer.com too btw. |
There is a thread on [email protected] in 2018 on nQUIC with relevant messages being https://moderncrypto.org/mail-archive/noise/2018/001930.html and the thread starting form https://moderncrypto.org/mail-archive/noise/2018/001933.html There is some contention over nQUIC focusing on IK so that's maybe a shortcoming. |
For reference, here's what libp2p is doing for TLS 1.3: libp2p/specs#151 In Rust we have a lot of problems:
I would suggest picking a DER/ASN.1 crate and doing the certification generation and verification ourselves. I don't have any real solution for rustls, except asking for that feature. On the side of QUIC there are some other issues:
We could solve both QUIC issues by enforcing one single address/port in the configuration for QUIC, and only allow listening on this specific address/port combination. |
@tomaka QUIC only requires one socket each for sending and receiving. |
cc #1334 |
Closing here in favor of #2883. |
Create a
QuicConfig<T>
struct.Since we require the underlying transport to be UDP and UDP operates on individual packets of data and not a stream,
T::Output
should implementStream<Bytes> + Sink<Bytes>
(or something similar toBytes
) instead ofAsyncRead + AsyncWrite
.QuicConfig
itself should implementTransport
and itsOutput
should implementStreamMuxer
.The text was updated successfully, but these errors were encountered: