Subject: [quicwg/base-drafts] 6f9f8d: Curtail CONNECTION_CLOSE for small Initial

From: Martin Thomson <[email-masked]>
Date: Sun, 08 Dec 2019 20:07:38 -0800

Branch: refs/heads/close-small-initial
  Home:   https://github.com/quicwg/base-drafts
  Commit: 6f9f8d7ffca4eed3373bb9f64261f85fd5f76b1a
      https://github.com/quicwg/base-drafts/commit/6f9f8d7ffca4eed3373bb9f64261f85fd5f76b1a
  Author: Martin Thomson <[email-masked]>
  Date:   2019-12-09 (Mon, 09 Dec 2019)

  Changed paths:
    M draft-ietf-quic-transport.md

  Log Message:
  -----------
  Curtail CONNECTION_CLOSE for small Initial

This is trickier than I had imagined.  Sending CONNECTION_CLOSE is
probably fine, but it's harder to do this correctly now.  You can't just
send an unauthenticated CONNECTION_CLOSE because that might disrupt a
real connection.  So there are two goals in tension:

1. Don't kill an active connection (attempt) unnecessarily.

2. Provide feedback about errors.

The observation is that an attacker can disrupt connections by eliciting
a CONNECTION_CLOSE, so feedback naturally leads to an exposure to a DoS
attack.  That's unfortunate, but we have established that we don't care
about DoS by an on-path attacker prior to handshake completion.
Anything we do here has got to be best effort.

DoS prevention would say that you just discard junk, and that is
probably the right answer.  But we have a number of cases where the
robustness of the system depends on getting feedback.

Either way, we agreed to allow CONNECTION_CLOSE in Initial, so the
exposure exists anyway.  So this contains advice.  Maybe too much
advice, but I thought that I'd see what people thought.

Closes #3269.