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

ClientHello not identical when Retry is received #1375

Open
heinrich5991 opened this issue Dec 26, 2022 · 3 comments
Open

ClientHello not identical when Retry is received #1375

heinrich5991 opened this issue Dec 26, 2022 · 3 comments

Comments

@heinrich5991
Copy link

This originates from a Wireshark bug report: https://gitlab.com/wireshark/wireshark/-/issues/18757.

When the quiche client receives a Retry packet, it resends the ClientHello. According to the standard, this new ClientHello has to be the same as the first one, but it isn't, as the 32 random bytes are different.

From RFC 9000:

Other than updating the Destination Connection ID and Token fields, the Initial packet sent by the client is subject to the same restrictions as the first Initial packet. A client MUST use the same cryptographic handshake message it included in this packet. A server MAY treat a packet that contains a different cryptographic handshake message as a connection error or discard it. Note that including a Token field reduces the available space for the cryptographic handshake message, which might result in the client needing to send multiple Initial packets.
A client MUST NOT reset the packet number for any packet number space after processing a Retry packet.

@rageshkrishna
Copy link

I think I've just run into the same issue. I'm unable to decrypt captures in Wireshark because the SSLKEYLOGFILE output from quiche-server does not have the random value from either the ClientHello or ServerHello. I'm able to reproduce this at-will using the quiche-server app with the http3-client example.

That being said, I'm completely new to quiche (and quic in general), so is this a genuine issue or am I just holding it wrong?

@heinrich5991
Copy link
Author

Note the workaround posted in the comment if you want to debug it right now.

This problem seems to go away if I turn off the quic.reassemble_crypto_out_of_order setting.

@rageshkrishna
Copy link

Note the workaround posted in the comment if you want to debug it right now.

Wow, I somehow completely missed that while reading the issue. Thanks for the pointer!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants