Subject: [quicwg/base-drafts] Peers that only terminate a single connection on an IP/port cannot migrate (#2441)

From: ianswett <[email-masked]>
Date: Fri, 08 Feb 2019 11:20:26 -0800

Currently the section 5.1(https://tools.ietf.org/html/draft-ietf-quic-transport-18#section-5.1) says:
"An endpoint whose peer has selected a zero-length connection ID MUST continue to use a zero-length connection ID for the lifetime of the connection and MUST NOT send packets from any other local address."

In practice, 0 length connection IDs are only expected to be used when the receiver's IP/port identifies the connection, because otherwise QUIC connections cannot survive NAT rebinding.  Given 0 byte connection IDs are not a privacy concern, the only reason I've heard to prohibit this is that we want to ensure servers never use trial decryption to deal with explicit migration.  I don't believe that's a compelling reason, given there are existing use cases such as Peer-to-peer(ie: WebRTC) where we might want to use 0-byte connection IDs, but supporting migration may also be valuable.  And I don't think any even small-scale server is going to use trial decryption to handle migration due to the excessive CPU cost.

There is already a transport parameter to indicate connection migration is not supported, so the peer should have a clear signal about whether they can migrate with a 0-byte CID.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2441

---

From: Kazuho Oku <[email-masked]>
Date: Fri, 08 Feb 2019 17:24:15 -0800

I think I agree that we can remove MUST NOT, assuming that we would recommend (i.e. SHOULD) servers using 0-byte CID to set the disable migration flag.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2441#issuecomment-461999478

---

From: Martin Thomson <[email-masked]>
Date: Sun, 10 Feb 2019 14:35:08 -0800

The problem here is that any system that uses this capability (migrating while sending no connection ID), would be unreliable.  To make it reliable, we would need to add signaling.  Is this a feature you really need for QUICv1?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2441#issuecomment-462184695

---

From: Martin Thomson <[email-masked]>
Date: Sun, 10 Feb 2019 14:42:12 -0800

Oh, I see, the idea is to rely on DISABLE_MIGRATION.  That is probably OK.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2441#issuecomment-462185711

---

From: ianswett <[email-masked]>
Date: Mon, 11 Feb 2019 04:24:34 -0800

As a general piece of advice, I would not advise any endpoint(ie: server) receiving multiple connections on a given IP/port use 0 byte CIDs.

And if a 'server' did want to do that, it should disable migration explicitly.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2441#issuecomment-462309623

---

From: MikkelFJ <[email-masked]>
Date: Mon, 11 Feb 2019 05:26:16 -0800

@ianswett Um, isn't it normal for servers (QUIC or otherwise) to listen on IP/port. Do you mean multiple connections from same client IP/port?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2441#issuecomment-462326173

---

From: ianswett <[email-masked]>
Date: Mon, 11 Feb 2019 14:41:27 +0000 (UTC)

If servers want to terminate multiple connections on an IP/port(as is typical), they either should use CID lengths > 0 OR disable connection migration.

If they use a CID length of 0, they need to expect that NAT rebinding is going to terminate the connection, but they may be ok with that.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2441#issuecomment-462351236

---

From: Jana Iyengar <[email-masked]>
Date: Wed, 13 Feb 2019 19:13:19 -0800

... or these servers may be ok with sending PINGs as necessary.

On Mon, Feb 11, 2019 at 6:41 AM ianswett <[email-masked]> wrote:

> If servers want to terminate multiple connections on an IP/port(as is
> typical), they either should use CID lengths > 0 OR disable connection
> migration.
>
> If they use a CID length of 0, they need to expect that NAT rebinding is
> going to terminate the connection, but they may be ok with that.
>
> —
> Reply to this email directly, view it on GitHub
> <https://github.com/quicwg/base-drafts/issues/2441#issuecomment-462351236>,
> or mute the thread
> <https://github.com/notifications/unsubscribe-auth/AKjg1AaIvIYHXYIr0Zq-AaJGI2GjK9msks5vMYEXgaJpZM4axMF5>
> .
>

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2441#issuecomment-463470525

---

From: Mike Bishop <[email-masked]>
Date: Fri, 15 Feb 2019 11:13:27 -0800

If a connection receives a garbage packet, it can be easily rejected based on the CID.  Only someone on-path will be able to observe the CID in use, so only on-path attackers can make you attempt to decrypt garbage.

If you use a zero-length CID, your CID is very easy to guess. 🙂 The restriction on migrating means that an attacker must spoof the remote port and IP in order to perform this attack, which means being on-path, which brings zero-length connection IDs up to equivalent security.

If we make this change, anyone can make you attempt to decrypt garbage packets.  Are we sure we want that?

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2441#issuecomment-464165584

---

From: MikkelFJ <[email-masked]>
Date: Fri, 15 Feb 2019 11:38:42 -0800

On that account, it should be a requirement that CID's are compared constant time, otherwise they are easy to guess anyway.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/2441#issuecomment-464173546