Subject: [quicwg/base-drafts] NEW_TOKEN contains globally unique values (#3281)

From: Martin Thomson <[email-masked]>
Date: Mon, 02 Dec 2019 21:47:31 -0800

This is already implied by the existing text, but it isn&#39;t said
directly.  That is, we say that the values can&#39;t be linkable, which
is a stronger requirement.  Saying that you can&#39;t send the same value on
two connections is much clearer.

Closes #3179.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/3281

-- Commit Summary --

  * NEW_TOKEN contains globally unique values

-- File Changes --

    M draft-ietf-quic-transport.md (13)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/3281.patch
https://github.com/quicwg/base-drafts/pull/3281.diff

-- 
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/pull/3281

---

From: Kazuho Oku <[email-masked]>
Date: Mon, 02 Dec 2019 22:03:49 -0800

kazuho approved this pull request.

-- 
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/pull/3281#pullrequestreview-325910696

---

From: ianswett <[email-masked]>
Date: Fri, 06 Dec 2019 09:47:52 -0800

ianswett commented on this pull request.

> @@ -1719,9 +1719,11 @@ encrypted form in the token.
 A token issued with NEW_TOKEN MUST NOT include information that would allow
 values to be linked by an on-path observer to the connection on which it was
 issued, unless the values are encrypted.  For example, it cannot include the
-previous connection ID or addressing information.  Information that allows the
-server to distinguish between tokens from Retry and NEW_TOKEN MAY be accessible
-to entities other than the server.
+previous connection ID or addressing information.  Each NEW_TOKEN frame MUST

```suggestion
unencrypted previous connection ID or addressing information.  Each NEW_TOKEN frame MUST
```

-- 
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/pull/3281#pullrequestreview-328358499

---

From: ianswett <[email-masked]>
Date: Fri, 06 Dec 2019 09:50:12 -0800

ianswett approved this pull request.

 A token issued with NEW_TOKEN MUST NOT include information that would allow
 values to be linked by an on-path observer to the connection on which it was
 issued, unless the values are encrypted.  For example, it cannot include the
-previous connection ID or addressing information.  Information that allows the
-server to distinguish between tokens from Retry and NEW_TOKEN MAY be accessible
-to entities other than the server.
+previous connection ID or addressing information.  Each NEW_TOKEN frame MUST
+include a globally unique value, unless the frame is sent to repair loss of a
+packet containing the same value.  Information that allows the server to

```suggestion
previously sent NEW_TOKEN frame.  Information that allows the server to
```

-- 
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/pull/3281#pullrequestreview-328359356

---

From: Jana Iyengar <[email-masked]>
Date: Fri, 06 Dec 2019 14:09:02 -0800

janaiyengar commented on this pull request.

"globally unique" is too vague.  How about "unique to the connection"?

-- 
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/pull/3281#pullrequestreview-328484755

---

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

@martinthomson pushed 1 commit.

932d505c5dcc243939b7b2e6b4f1ba28aa72bd8a  Paraphrase suggestions

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3281/files/18e24e212c3abd623990da105478c9f731f7485c..932d505c5dcc243939b7b2e6b4f1ba28aa72bd8a

---

From: Jana Iyengar <[email-masked]>
Date: Mon, 09 Dec 2019 17:08:39 -0800

+be unique among all connections to that server, unless the frame is sent to

Sorry for being pedantic, but this is a MUST and the requirement doesn't seem clear. First, this reads like a requirement on the client. If so,
- Does this imply that a client has to maintain and check _all_ NEW_TOKEN frames issued by every server for a long enough period of time?
- How would a client know whether a received NEW_TOKEN frame is a repair of a lost NEW_TOKEN frame?

If it's not meant to be a requirement on the client, how about "A server MUST ensure that every NEW_TOKEN frame it sends is unique across all clients, with the exception of those sent to repair loss of a previously sent NEW_TOKEN frame." 

Also, add a recommendation on what a client should do if it detects a server repeating NEW_TOKEN frames.

-- 
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/pull/3281#pullrequestreview-329534390

---

From: Jana Iyengar <[email-masked]>
Date: Mon, 09 Dec 2019 17:10:27 -0800

(I'm ok with not having a client response to detecting dups ... I don't expect clients to be detecting this.)

-- 
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/pull/3281#discussion_r355795008

---

From: Martin Thomson <[email-masked]>
Date: Mon, 09 Dec 2019 20:03:54 -0800

martinthomson commented on this pull request.

No, there is no obligation to check.  Do you think that we need to say as much?

The client should only see duplicates if there is a spurious loss detected by the server.

I like your suggested text and will use that.  The duplicate detection is already described on [line 5073](https://github.com/quicwg/base-drafts/pull/3281/files#diff-db016291106766877c4921a79f8596e0R5073).

-- 
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/pull/3281#discussion_r355835144

---

From: Martin Thomson <[email-masked]>
Date: Mon, 09 Dec 2019 20:05:28 -0800

8a400b45f8817c1894ac1789f43b039070b50a72  Reword, thanks @janaiyengar

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3281/files/932d505c5dcc243939b7b2e6b4f1ba28aa72bd8a..8a400b45f8817c1894ac1789f43b039070b50a72

---

From: ianswett <[email-masked]>
Date: Tue, 10 Dec 2019 07:12:18 -0800

-- 
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/pull/3281#pullrequestreview-329909230

---

From: Jana Iyengar <[email-masked]>
Date: Tue, 10 Dec 2019 18:34:51 -0800

janaiyengar approved this pull request.

A nit, but looks good, thanks for working patiently!

 A token issued with NEW_TOKEN MUST NOT include information that would allow
 values to be linked by an on-path observer to the connection on which it was
 issued, unless the values are encrypted.  For example, it cannot include the
-previous connection ID or addressing information.  Information that allows the
-server to distinguish between tokens from Retry and NEW_TOKEN MAY be accessible
-to entities other than the server.
+previous connection ID or addressing information.  A server MUST ensure that
+every NEW_TOKEN frame it sends is unique across all clients, with the exception
+of those sent to repair loss of a previously sent NEW_TOKEN frame.  Information

```suggestion
of those sent to repair losses of previously sent NEW_TOKEN frames.  Information
```

-- 
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/pull/3281#pullrequestreview-330267754

---

From: Jana Iyengar <[email-masked]>
Date: Tue, 10 Dec 2019 18:35:17 -0800

@janaiyengar pushed 1 commit.

cd6fcba2ed941f991e0ef5aefcd59767b295d037  Update draft-ietf-quic-transport.md

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/3281/files/8a400b45f8817c1894ac1789f43b039070b50a72..cd6fcba2ed941f991e0ef5aefcd59767b295d037

---

From: Jana Iyengar <[email-masked]>
Date: Tue, 10 Dec 2019 18:37:18 -0800

Merged #3281 into master.

-- 
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/pull/3281#event-2872742956