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

Erik Nygren <erik+ietf@nygren.org> Thu, 04 May 2017 22:00 UTC

Return-Path: <nygren@gmail.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 C64F1129AF2 for <tls@ietfa.amsl.com>; Thu, 4 May 2017 15:00:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.399
X-Spam-Level:
X-Spam-Status: No, score=-2.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.199, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 0UdHVzkYReaQ for <tls@ietfa.amsl.com>; Thu, 4 May 2017 15:00:14 -0700 (PDT)
Received: from mail-qk0-x22c.google.com (mail-qk0-x22c.google.com [IPv6:2607:f8b0:400d:c09::22c]) (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 625A6129508 for <tls@ietf.org>; Thu, 4 May 2017 15:00:14 -0700 (PDT)
Received: by mail-qk0-x22c.google.com with SMTP id k74so22659423qke.1 for <tls@ietf.org>; Thu, 04 May 2017 15:00:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=kTgIwn8wpU7C7DYateKJmma+nszfUL0lWas6H5Coarw=; b=mOkd79c0AGHHtZIK1tKZEtglXeW/1O2tKhAxxAL1OUJre2PBy0cGPkbNIfaB8wdnyx O+jFQpmvv0ZaCA0l7+H3ox2ahGhlBctzGAGEJULIBc8hEXqB8PurHxiWydmU/B/eAMxH Ssjr3gEFvVn6COM+q3MLE7ZfW0fWSwTnW0hmIPI9BcsV/lTBHcV9vRm80jZWjADI1za/ iHL4B7SasOlT4UW0hyhuAeaA8cowOW/nXufL3yHRSpk3e+csK6hzUjX0IVH5YQ3PRBHP 3x9Q8D4DspGliC7VpoKH6NSjNBheVrvperf3NynTlVCg6zTJ/9b4PPc/jmDHWLbAVsQ7 Q2nQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=kTgIwn8wpU7C7DYateKJmma+nszfUL0lWas6H5Coarw=; b=Lfha6GGdOxV8EosfEmWrR0IXCM6meuxwUfaP8bYIHIKf3+SWKdWeTJLSHbzVukqLr/ GKOMDBAirRArtRecgAjxYhuy1kCufcqMCvA2aLQfPoNx10HGgIVCb2AXya1gsfA2oU0r sXnmhcekvTsDG+M1JwO6b6/yegWvqfnDbabduKj8nWYNoo5Uc0VrQdNuNE5CvSQozWoj mHPql64ZHD8w8S+GGtZa3Hh6cqUvWOH6k8NJ5dMwFE/P69kLg/Nf+9/1AABi+whe18aP LDhUuOj7UfLYUi1mBii1Y740jM24FfGaiHLzNuiVEulW0Cx18XlMcLR9yupE7ah+P+xw v+sQ==
X-Gm-Message-State: AODbwcDDfgTx74IKnu0aVuY9r0Zy26bgjCRtglb+OWZQrFSC6BcCG1OY GK091dUgFHrAX8c016o9xah4Dsyyg+Mv
X-Received: by 10.55.135.132 with SMTP id j126mr10022040qkd.266.1493935213610; Thu, 04 May 2017 15:00:13 -0700 (PDT)
MIME-Version: 1.0
Sender: nygren@gmail.com
Received: by 10.12.172.151 with HTTP; Thu, 4 May 2017 15:00:13 -0700 (PDT)
In-Reply-To: <CABcZeBNyQB3FOik3ZBZvgX7FnEjUydHdJwfa5OkACYDO_FQHaA@mail.gmail.com>
References: <CAAF6GDcKZj9F-eKAeVj0Uw4aX_EgQ4DuJczL4=fsaFyG9Yjcgw@mail.gmail.com> <CABcZeBNcnW9zEPZ4mEje1_ejR3npNFz65rw-6qUPn7cQt1Nz9w@mail.gmail.com> <MWHPR15MB11825419AF296AE7EC26F3BDAFEA0@MWHPR15MB1182.namprd15.prod.outlook.com> <CABcZeBNyQB3FOik3ZBZvgX7FnEjUydHdJwfa5OkACYDO_FQHaA@mail.gmail.com>
From: Erik Nygren <erik+ietf@nygren.org>
Date: Thu, 04 May 2017 18:00:13 -0400
X-Google-Sender-Auth: NNK8mhZoSQnUtjDhKuWx2EmDAYI
Message-ID: <CAKC-DJj2JzjP8+6ygsWOxTG3u8Ps3NmiyV5zyq7UyrNqaXNFZA@mail.gmail.com>
To: Eric Rescorla <ekr@rtfm.com>
Cc: Kyle Nekritz <knekritz@fb.com>, "tls@ietf.org" <tls@ietf.org>
Content-Type: multipart/alternative; boundary="94eb2c07631eb98dbd054eb9e5d4"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/z1TY5tQSCn2AV6atDm7_Wb5f2cY>
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: Thu, 04 May 2017 22:00:17 -0000

On Thu, May 4, 2017 at 5:37 PM, Eric Rescorla <ekr@rtfm.com> wrote:

>
>
>
> On Thu, May 4, 2017 at 2:27 PM, Kyle Nekritz <knekritz@fb.com> wrote:
>
>> > 1. A SHOULD-level requirement for server-side 0-RTT defense, explaining
>> both session-cache and strike register styles and the merits of each.
>>
>>
>>
>> First, a point of clarification, I think two issues have been conflated
>> in this long thread:
>>
>> 1) Servers rejecting replayed 0-RTT data (using a single use session
>> cache/strike register/replay cache/some other method)
>>
>>
>>
>> There are definitely cases (i.e. application profiles) where this should
>> be done. I think a general case HTTPS server is one. But I don’t think this
>> is strictly necessary across the board (for every application using 0-RTT
>> at all). DNS was brought up earlier in this thread as an example of a
>> protocol that is likely quite workable without extra measures to prevent
>> replay.
>>
>>
>>
>> We already state “Protocols MUST NOT use 0-RTT data without a profile
>> that defines its use.”. We could also describe methods that may be used to
>> provide further replay protection. But I don’t think it’s appropriate to
>> make a blanket requirement that *all* application protocols should require
>> it.
>>
>>
>>
>> I also consider it quite misleading to say TLS 1.3 is insecure without
>> such a recommendation. Uses of TLS can be insecure, that does not mean the
>> protocol itself is. It’s insecure to use TLS without properly
>> authenticating the server. Some users of TLS do not do this correctly. I’d
>> actually argue that it is easier to mess this up than it is to mess up a
>> 0-RTT deployment (and it can result in worse consequences). That doesn’t
>> mean we should require a particular method of authentication, for all uses
>> of TLS.
>>
>
> I think this is basically right. In the PR I just posted, I spent most of
> my time describing the
> mechanisms and used a SHOULD-level requirement to do one of the mechanisms.
> I think there's a bunch of room to wordsmith the requirement. Perhaps we
> say:
>
> - You can't do 0-RTT without an application profile
> - Absent the application profile saying otherwise you SHOULD/MUST do one
> of these mitigations?
>

I generally agree with Kyle here (and also added a few minor comments to
the PR).
I think we should be clear where the responsibilities generally lie as
well, for example:

"The onus is on clients not to send messages in 0-RTT data which are not
safe to have replayed and which they would not be willing to retry across
multiple 1-RTT connections. The onus is on servers to protect themselves
against attacks employing 0-RTT data replication."

The server responsibility is a general property TLS can maintain while the
client responsibility requires an application profile to define.

        Erik