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

Need a NONCE in version negotiation packets #244

Closed
igorlord opened this issue Jan 26, 2017 · 4 comments
Closed

Need a NONCE in version negotiation packets #244

igorlord opened this issue Jan 26, 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

@igorlord
Copy link
Contributor

Now that the client does not send a connection id in its version negotiation (see #119), client needs a public nonce in the packets. That prevents an off-path attacker guessing client source port and interfering with the client establishing connections with a given sever by spoofing version negotiation failure packets as if coming from that sever. That nonce should be returned by the sever in its version negotiation packets. Previously, client's connection id served such a purpose.

@ianswett
Copy link
Contributor

The public reset has the same issue.

I'm not sure how serious an issue this is, since the attacker would also have to guess the server IP and port as well as the client port. In practice, this would be a very costly attack, because it only works during the handshake. Typically handshakes complete within a second, so to prevent a client from connecting to a single IP/port, you'd have to send thousands of packets a second, with no guarantee or acknowledgement of whether your attack was a success?

If we think it's a serious issue, we could also reconsider requiring a connection id from client to server on the initial flight.

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

Connection ID isn't the only field that contains entropy. As you say, IP and port do contain some entropy (though not much). Requiring proof that the server received a packet doesn't have to rely on those fields alone. That gets easier if you don't worry about version negotiation packets because you can put things in the TLS handshake (something that we might want to do anyway).

There really isn't anything very strong in the TLS ServerHello. The messages that follow have a very strong signal that the server received the ClientHello though.

@mirjak
Copy link
Contributor

mirjak commented Jan 30, 2017

The packet number and a potential packet number echo from the server would help here as well.

@MikeBishop
Copy link
Contributor

#361 purports to address this; please re-open or file a new issue if that's incorrect.

@mnot mnot added the has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list. label Apr 19, 2017
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

6 participants