Re: [TLS] WGLC for draft-ietf-tls-ticketrequests

David Schinazi <> Thu, 21 November 2019 03:19 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 8955E12022A for <>; Wed, 20 Nov 2019 19:19:52 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.997
X-Spam-Status: No, score=-1.997 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id fXcTgxVw58zi for <>; Wed, 20 Nov 2019 19:19:50 -0800 (PST)
Received: from ( [IPv6:2a00:1450:4864:20::136]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id E8D4A12006E for <>; Wed, 20 Nov 2019 19:19:49 -0800 (PST)
Received: by with SMTP id q28so1347118lfp.2 for <>; Wed, 20 Nov 2019 19:19:49 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=kzGDwEV4QIZLOyiXF+x7xBLKz9zva4//4a1MkZhy7Io=; b=XNzHErmB6ogv5qqikNOVm+MXlQAN04kNSfc/TeL84D50D7UiQoDWVTPfCe0Y/14Fk1 cRhBprrTrb8PNmoX601tkTMWWuX9j92jfFUR4/ZtLEBuMus/NKM3L73yALebAmvCPsGy 6dchcR3a1ZcneeJmObcNQzmRw/5awwdaKPgPH0qNg6er6KeqCvAZde2uMx2EK6Wt2+uT +RqZ5jbJaIEQfy/dFps5DUiO06Nu8ZCNOMea5l9rTexlhP/Ark+YlBnjCHvXmLfBoZjw yT7uYhYPbC/L+qwyLvwqR1yetuNQlV3F4KzgPU4jCGH47Q3Yrji3aATDAsd/c+z0b6ZM gkww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=kzGDwEV4QIZLOyiXF+x7xBLKz9zva4//4a1MkZhy7Io=; b=qnwEAqzwkaYrbbCKMwMh9cOVWYpA8o4dter3DQWUTPOAm6YR4+7cUmr39QaoxDRtzs 9H8WrzlRTx8ZHvJBdmRyhmQPSgUTzXIRsnHNp2KA0NF0lubUJ0DGF+ElOLYSj/+AUf3a GB8YOBYLlvHItgNVUwOh1HY0BLxtSRA2d7/lnjWfoV2SSK0MmkU3QkdW5kH+vvWdEzIo la8P33NABmwmCCpFCNDIW/VFdLf/wm+qAqtWF0hyvDDounoDrFvnkDh05D7P+gcX0G1F 87K7PQFfpLE/OMIXxYKpfErmJ5QVO0xj7C0FKypjoJzHJ0JTm1FvUmuwOd0iUTZqlkjw 7ZrA==
X-Gm-Message-State: APjAAAXnfgGKIifTjg/9OwTGfqNlNFTbwSoXDDvou1dUrUcVlCP2Ld1+ Tcv5nOiUdM1v0OrIIKlWBMNbydBcZD0cJ+rWW90GqqZKOAU=
X-Google-Smtp-Source: APXvYqwsmV29R6HfXF6dd3v97upYPTZuYo1YZy/IQjfYG3VSxHoLJ3Uyw4qbE6n8LDTPCVp312bF+h6hFQYMoOkxo3g=
X-Received: by 2002:a19:22cc:: with SMTP id i195mr4344675lfi.148.1574306388079; Wed, 20 Nov 2019 19:19:48 -0800 (PST)
MIME-Version: 1.0
References: <> <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
From: David Schinazi <>
Date: Thu, 21 Nov 2019 11:19:36 +0800
Message-ID: <>
Content-Type: multipart/alternative; boundary="000000000000077aaf0597d2c5a0"
Archived-At: <>
Subject: Re: [TLS] WGLC for draft-ietf-tls-ticketrequests
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 21 Nov 2019 03:19:52 -0000

Hi folks,

I've chatted with Daniel and Chris offline, and I think there might
have been some miscommunication here. Please allow me to
rephrase what I think is going on, and please let me know if
this accurately represents your views.

Daniel has a IoT use-case where due to memory constraints,
a client knows it can only handle a certain number of tickets,
and therefore Daniel was wondering if it would make sense to
make the requested number of tickets a required maximum
(as in a RFC 2119 MUST). However, server operators on this
thread have indicated that a MUST would get in the way of
implementing this, due to STEK rotation for example. Daniel
understands this, and is OK with the current mindset of the
document (which is only a hint, not a MUST). Additionally,
Daniel would prefer to see the document move forward.

In order to try to address Daniel's comments, I attempted
to rephrase the normative section to suggest in more
stronger terms that servers really shouldn't be sending
more than the client's request, but keeping it a SHOULD.

Here is the PR with the rephrase:

Here's a copy of the updated paragraph in the PR:
   Clients can use TicketRequestContents.count to indicate the number of
   tickets they would prefer to receive.  Servers SHOULD NOT send more
   tickets than TicketRequestContents.count, as clients will most likely
   discard any additional tickets.  Servers SHOULD additionally place a
   limit on the number of tickets they are willing to send to save
   resources.  Therefore, the number of NewSessionTicket messages sent
   SHOULD be the minimum of the server's self-imposed limit and

Regarding Viktor's suggestion, I personally believe it would increase the
complexity of the proposal, and I don't see use-cases compelling enough
to warrant that complexity. I would rather keep this proposal as simple as


On Wed, Nov 20, 2019 at 2:48 PM Viktor Dukhovni <>

> On Wed, Nov 20, 2019 at 11:53:08AM +0800, Tommy Pauly wrote:
> > > Somebody should try to avoid ending up with N new tickets after
> > > every connection, but in could well be the client.
> >
> > Yes, I think that can and ought to be the client. The client is really
> the
> > only party that can know how many tickets have been "consumed" by
> potentially
> > failed attempts to connect that the server didn't see in time or got
> dropped.
> OK, in that case, the proposal, is that on resumption, if the proposed
> extension is *absent*, then the server should generally send just one
> rather
> than any larger default.
> If the extension is present, it is up to the client to not blindly ask for
> N
> tickets each time, and generally ask for just one ticket on resumption,
> once it
> has sufficiently many tickets for the desired concurrency level, with each
> parallel thread obtaining one replacement ticket its next connection.
> As discussed clients that prefer to reuse tickets, can ask for zero, and
> get 1
> only as-needed.  If the server supports reuse then all is well.
> If the server does not support and refuses reuse, then it will issue a new
> ticket each time and may only accept it once, but the client may have a
> single-slot cache.  If the client makes only one connection at a time, this
> also works, but if/when its handshakes with the server overlap (a narrow
> window
> of ~1RTT) and two connections attempt to resume with the same ticket, one
> of
> them will end up doing a full handshake, but only when the client and
> server
> applications have incompatible ticket reuse expectations.  Some friction
> when the client and server are mismatched is not the end of the world.
> So on the whole I think the proposal still works with just a numeric signal
> (tweaked with 0xff == none and 0 == reuse), and the onus to "generally
> send 1"
> on resumption moved to the client (i.e. clients that don't solicit ticket
> reuse
> should request only 1 ticket once they have enough).
> --
>     Viktor.
> _______________________________________________
> TLS mailing list