Re: [TLS] Security review of TLS1.3 0-RTT

Eric Rescorla <ekr@rtfm.com> Sun, 21 May 2017 22:48 UTC

Return-Path: <ekr@rtfm.com>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B7959129A9D for <tls@ietfa.amsl.com>; Sun, 21 May 2017 15:48:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0
X-Spam-Level:
X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20150623.gappssmtp.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id pcyJ5iwnOiO8 for <tls@ietfa.amsl.com>; Sun, 21 May 2017 15:48:05 -0700 (PDT)
Received: from mail-yw0-x229.google.com (mail-yw0-x229.google.com [IPv6:2607:f8b0:4002:c05::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F20E3129526 for <tls@ietf.org>; Sun, 21 May 2017 15:48:04 -0700 (PDT)
Received: by mail-yw0-x229.google.com with SMTP id l14so52744996ywk.1 for <tls@ietf.org>; Sun, 21 May 2017 15:48:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=8jQQyLhijYHZaPE6f+hBwDWoId4CANtNFWXBotgz6aY=; b=E4gvRsmoxfFIT4xoQoMmJYJaytZZOffemAcUvfc2ix3JkgOp+mXv7jpxdmm25QPihR 0Ox5V61bE/35rWxpd8gfL/4RMODmC/0vWYGwc5uyafqvTNjWquEIo5VxO5oDOOguJlA8 DxMC/TM7/4nC1g39nT9FAz/qQFl+T4OrHpU60/pjy8Q9Hw4ReG+bwoM3eEHgKDzHwooU b7Y55TtmldioeZFCLuUy2I4A2wBAs6+6yO+/dCdc1t0LDn410cdWqKksyfvLo2azd7zb 60uU4hVGGCVO2E7JhAl2/IRcpm2nbj1kszj1vfDqnGnaGBSikTFWMi81fv2pbOntyzER H3Bg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=8jQQyLhijYHZaPE6f+hBwDWoId4CANtNFWXBotgz6aY=; b=rojVDk7LUC2Ie/Ss6IubzWQbRM80LmnPdJu29BbJIC5BYoX1fIe26mqss3czhdEZ1C x06MnEG+GR2SdJSrbL+/iW4TTJWavkhacp27IzrMPJWhu4pJDzLEYirRNknm9jL7SB6o v4BTVouThJx2IRFYPNI+lQ1wqoi/x0yx6XTjb4HX/IHShz5o2f1GXLXZFoGZRugtDH8K ZKrDTuXvZwgrZ+uSvodO8PvygNvUM2qD0QN5bNooL82BJuCMoS8OV04jgn8ZHtdwxh7G HB/5LA0Y5REFiFTXaJJ/LP/G1oAE6MPSXUIRDpAEBIZPbly2ywv2j1r9T178lD78ZNFZ e4GA==
X-Gm-Message-State: AODbwcASggT9jaQwpI1oa5rJfaJCtl10HQZELFA2zZ90t5i+8y6uwIm7 ULMSp5YYYmfo9wPbwlCPHG41OVxbFRaQ
X-Received: by 10.13.212.1 with SMTP id w1mr15909952ywd.24.1495406884259; Sun, 21 May 2017 15:48:04 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.129.131.150 with HTTP; Sun, 21 May 2017 15:47:22 -0700 (PDT)
In-Reply-To: <20170520101616.GC32428@LK-Perkele-V2.elisa-laajakaista.fi>
References: <CAAF6GDcKZj9F-eKAeVj0Uw4aX_EgQ4DuJczL4=fsaFyG9Yjcgw@mail.gmail.com> <CABcZeBNcnW9zEPZ4mEje1_ejR3npNFz65rw-6qUPn7cQt1Nz9w@mail.gmail.com> <CAAF6GDe1_ih1aUShrzAHUuTzbLx6+0BdVexpGnq90RZsST8GvA@mail.gmail.com> <CABcZeBOX5NXuhgfap2S0naO9PFXv+K-+fZVPbgck6yciVnrYbQ@mail.gmail.com> <CABcZeBPuOupLTNKOtuCgOjYNdiuw571HM-pq1vNZz_8x-XX5mg@mail.gmail.com> <CABcZeBMqALJ10cU7FMUhv8k5Q=tw3yu1-5pdrKzOBM3=g5PHJw@mail.gmail.com> <20170519095316.GA30080@LK-Perkele-V2.elisa-laajakaista.fi> <CAAF6GDeuRMZx9MRynrxMp1fCvRS2jjr0vcqt0R89cJEkD6u=rQ@mail.gmail.com> <20170520101616.GC32428@LK-Perkele-V2.elisa-laajakaista.fi>
From: Eric Rescorla <ekr@rtfm.com>
Date: Sun, 21 May 2017 18:47:22 -0400
Message-ID: <CABcZeBNj_X4qbXrH4732kQiAHrBpPZhW1nmn4Xnp-pm0gv1Psg@mail.gmail.com>
To: Ilari Liusvaara <ilariliusvaara@welho.com>
Cc: Colm MacCárthaigh <colm@allcosts.net>, "tls@ietf.org" <tls@ietf.org>
Content-Type: multipart/alternative; boundary="001a114fb0f621a3080550108c8d"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/nv8o91cdJlKm8kKMMJGgTTSiRAY>
Subject: Re: [TLS] Security review of TLS1.3 0-RTT
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tls/>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 21 May 2017 22:48:07 -0000

On Sat, May 20, 2017 at 6:16 AM, Ilari Liusvaara <ilariliusvaara@welho.com>
wrote:

> On Fri, May 19, 2017 at 09:59:57AM -0700, Colm MacCárthaigh wrote:
>
> >
> > Some protection is necessary; but it isn't too hard - a single-use
> session
> > cache, or a strike register, do protect against the side-channel and DOS
> > problems. Combined with a "fail closed" strategy and tickets that are
> > scoped to clusters or servers, these techniques do hard-stop the literal
> > 0-RTT replays, and they are practical. Many of us run systems like that
> > already.
>
> As requirements:
>
> - Clients SHOULD NOT use the same ticket multiple times.
>

This is already in the document.



> - Clients MUST NOT use the same ticket multiple times for 0-RTT.
>

I don't understand the purpose of this requirement. As you note below,
servers are ultimately responsible for enforcing it, and it's not clear to
me why clients obeying it makes life easier for the server.



> - Servers MAY accept the same ticket multiple times.
>

This seems implicit.



> - Servers MUST NOT accept the same ticket with the same binder multiple
>   times for 0-RTT (if any part of ClientHello covered by binder is
>   different, one can assume binders are different). This holds even
>   across servers (i.e., if server1 accepts 0-RTT with ticket X and
>   binder Y, then server2 can not accept 0-RTT with ticket X and binder
>   Y).
>

I assume that what you have in mind here is that the server would know
which tickets it was authoritative for anti-replay and would simply reject
0-RTT if it wasn't authoritative? This seems like it would significantly cut
down on mass replays, though it would of course still make application-level
replay a problem.

I'm happy to write this up as part of the first two techniques. I'd be
interested in hearing from others in the WG what they think about:

1. Requiring it.
2. Whether they still want to retain the stateless technique.

-Ekr