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

Proof of receipt of packets in ACK #509

Closed
ekr opened this issue May 8, 2017 · 4 comments
Closed

Proof of receipt of packets in ACK #509

ekr opened this issue May 8, 2017 · 4 comments
Labels
-transport design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.

Comments

@ekr
Copy link
Collaborator

ekr commented May 8, 2017

The "skip a packet number" thing as a defense against ack spoofing is kinda hacky and seems like it is going to make life difficult for us if we want to do other stuff with packet numbers. As a concrete example, if we want to use server-issued PN tokens, then the server doesn't know what you're going to skip as a client. In addition, it's a different mode the sender has to be in.

I suggest a simpler design: every ACK frame contains a 32-bit field containing the XOR of the final 4 bytes of each packet being ACKed. In the current design, these are pseudorandom as long as the content (or basically anything at all about the packetization) is at all unpredictable, because it's either ciphertext or the authentication tag. If we want, we can always add an "entropy" frame that randomizes the packet; it can be relatively short (one byte) because the combinatorics add up very quickly.

@martinthomson martinthomson added design An issue that affects the design of the protocol; resolution requires consensus. -transport labels May 8, 2017
@martinthomson
Copy link
Member

Even the existence of an "entropy" frame would work. Also, you can randomize MAX_[STREAM_]DATA to get the same effect.

@ekr
Copy link
Collaborator Author

ekr commented May 8, 2017

Or randomize the order of the frames in the packet.

@igorlord
Copy link
Contributor

igorlord commented May 18, 2017

Or randomize the order of the frames in the packet.

Let's not do this or rely on this. Since endpoints will usually process frames in order, the sender may wish to put these frames in a particular order (order of priority, for example).

@martinthomson
Copy link
Member

At the interim, we discussed this design and decided that it was too similar to the one-bit version of this design - the entropy bit - that was part of earlier versions of the protocol. People were very happy to have the entropy bit removed because it was quite onerous to implement. Instead, we are now looking at defining an explicit proof of receipt packet. See #161 (comment) for some more details on that.

@mnot mnot added the has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list. label Mar 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-transport design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.
Projects
None yet
Development

No branches or pull requests

4 participants