Skip to content
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

QUIC: Change TLS so that Handshake EL TX secret is yielded simultaneously to RX #169

Closed
Tracked by #1
hlandau opened this issue Aug 18, 2023 · 0 comments
Closed
Tracked by #1
Assignees
Labels
bug Something isn't working QUIC

Comments

@hlandau
Copy link
Member

hlandau commented Aug 18, 2023

From @mattcaswell:

We change TX state immediately before sending a client cert (if we're sending one), or otherwise immediate before constructing the client finished. This as-late-as-possible approach is to allow for early-data (which is of course not a problem for QUIC). With normal TLS we can continue writing early-data all the way up until the point that we start writing more handshake messages.

This won't work for QUIC — the TX secret for the Handshake EL needs to be raised at the same time as the RX secret for the Handshake EL is currently. This is immediately after the ServerHello is received by a client and before any other TLS message such as EncryptedExtensions, etc.

If a Handshake packet is lost, it cannot be retransmitted until the peer is able to send an ACK packet on the same EL. So if we have an RX secret for the Handshake EL but not a TX secret, any lost packets will basically deadlock the connection process during this time.

It's essential we provision both TX+RX secrets for the Handshake EL immediately after getting a ServerHello. We currently do this for the RX side only.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working QUIC
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

3 participants