Subject: [quicwg/base-drafts] d92b97: Authenticate connection IDs

From: Martin Thomson <[email-masked]>
Date: Tue, 10 Mar 2020 18:43:06 -0700

Branch: refs/heads/authenticate-hs-cid
  Home:   https://github.com/quicwg/base-drafts
  Commit: d92b9781fecedbe32471d0051805e29b62989a77
      https://github.com/quicwg/base-drafts/commit/d92b9781fecedbe32471d0051805e29b62989a77
  Author: Martin Thomson <[email-masked]>
  Date:   2020-03-11 (Wed, 11 Mar 2020)

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

  Log Message:
  -----------
  Authenticate connection IDs

This authenticates all of them.

Note that I have chosen to use position in the protocol (Source vs.
Destination) as opposed to who selects the values (client vs. server) as
the means of deciding where each lies.  This avoids regressing an
existing protocol characteristic.

This changes the definition of original_connection_id so that it is
mandatory for the server to include always.  A new
handshake_connection_id (which might be initial_connection_id, but I
think that's confusing) is also mandatory for both roles.  The
retry_connection_id is used when there is a Retry.

This is a granular encoding.  That means some additional bytes for the
types of transport parameters, but not so many as to be intolerable, I
think.  A single transport parameter, or a header on the transport
parameter encoding (as we used to have) might be slightly more
efficient, but offhand I think that the net saving would be at most 2
bytes, so I'm going with simple over small.

Closes #3439.