Re: [TLS] WG: New Version Notification for draft-bruckert-brainpool-for-tls13-00.txt

Eric Rescorla <ekr@rtfm.com> Tue, 04 September 2018 13:33 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 1E339130EDA for <tls@ietfa.amsl.com>; Tue, 4 Sep 2018 06:33:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.009
X-Spam-Level:
X-Spam-Status: No, score=-0.009 tagged_above=-999 required=5 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, T_DKIMWL_WL_MED=-0.01] 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 eXQFWjN1gRqX for <tls@ietfa.amsl.com>; Tue, 4 Sep 2018 06:33:03 -0700 (PDT)
Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) (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 74C99130E92 for <tls@ietf.org>; Tue, 4 Sep 2018 06:33:02 -0700 (PDT)
Received: by mail-lf1-x132.google.com with SMTP id l26-v6so2960439lfc.8 for <tls@ietf.org>; Tue, 04 Sep 2018 06:33:02 -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=OqskKNGCf2iZIoet5EXnt891vymVkkXxb3c9VSEVZUw=; b=A41P7la0Z9Qgyz9qymAh+yfMmXiSMxO5XvvVz4dm9QY4FbqWHu4alX2J2/DhGOzyPy atjVgFagHcgLemcvBlRE+StkKotTOc3HHRo5eU/a5Bh11w0f7XH/rMnjr+3mbv5xpTjw Dho47NoDONMIX+DyeLfGWn4SqfWRJjprB3ELcDZUlFffYfv4U3wTfbUzC8rU8g0+IDTv n0sbxxYn1zfxwmlwcIA5DU009is+jZ8/DY4+oY4w5iq1t6hmNpbRY3QrsF4E/8uq8d+j FgyW41xsvn8GHFAf5wSyblJ5qmeruYjTXBE0YOuGSmZAPlA3bb6ggD/lE6y5Q0slCGg/ Xk4g==
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=OqskKNGCf2iZIoet5EXnt891vymVkkXxb3c9VSEVZUw=; b=YbQl4B2IH0W4yQ7WM7YOM4DBxdDv3UsUj8XcXai1oCmWDqmXVuYiAuZhV6PBYQrF3H CzK60iOZwnqghP1Ngc1XwAD87Lp5mQe/K/AoIL0LtEICyN9zd8quuWVAWKPkLb9LazXo SJpOSGfOeSfsB/rzwuYKXUK+KAH14057LKbQotppVBkP6lbQABzIX7DGymeXFOamPTKa haNr5GmZNTiCIhYtJ1HcLlOKmesUCfL2o+FFujs10kkqmh2NIo8RJkm2TDi1/nIgp+Vn phmlyvJeUxsbcIw0vsruO6sH+yKXgu3x+SFv96cc2tRn+Xyu0oVpxOVdS1DSuhJfNmvm P/KA==
X-Gm-Message-State: APzg51DNJTRgiDGDfLmq5DFfbYZsi2XGsqpk/vlUiziW5joDwuy7PPr2 XBaT+D61n6rOBTNdwlbKI+TwlCr1vs8ISa9v+AqaPw==
X-Google-Smtp-Source: ANB0VdY9jCtSj9W4UkBwYKUseetrGpSXR3/i7tExQMlKDyUIggyMdWACM8pt5vyBl/ToLq71KvfLaCltnMr7LFZeD9M=
X-Received: by 2002:a19:9153:: with SMTP id y19-v6mr9739236lfj.98.1536067980454; Tue, 04 Sep 2018 06:33:00 -0700 (PDT)
MIME-Version: 1.0
Received: by 2002:ab3:538a:0:0:0:0:0 with HTTP; Tue, 4 Sep 2018 06:32:19 -0700 (PDT)
In-Reply-To: <1625822.1ukSxQMHAj@pintsize.usersys.redhat.com>
References: <153569768626.3253.16680905114240291331.idtracker@ietfa.amsl.com> <1980977.W4Fi656k57@pintsize.usersys.redhat.com> <CABcZeBNx=F87nuZFvaA2VdqMiRCTVosWKt+aaBLANyfYU6KRew@mail.gmail.com> <1625822.1ukSxQMHAj@pintsize.usersys.redhat.com>
From: Eric Rescorla <ekr@rtfm.com>
Date: Tue, 04 Sep 2018 06:32:19 -0700
Message-ID: <CABcZeBP4mg=kWRtgF7GHuVgT5+2SYRiuUxH5i2i7NoOoLRCeuw@mail.gmail.com>
To: Hubert Kario <hkario@redhat.com>
Cc: "<tls@ietf.org>" <tls@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000537ffe05750bb26c"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/-0Fev9G9TMGjtBDOiAjo5V5UBQg>
Subject: Re: [TLS] WG: New Version Notification for draft-bruckert-brainpool-for-tls13-00.txt
X-BeenThere: tls@ietf.org
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." <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: Tue, 04 Sep 2018 13:33:10 -0000

On Tue, Sep 4, 2018 at 5:46 AM, Hubert Kario <hkario@redhat.com> wrote:

> On Monday, 3 September 2018 21:26:06 CEST Eric Rescorla wrote:
> > On Mon, Sep 3, 2018 at 12:19 PM, Hubert Kario <hkario@redhat.com> wrote:
> > > On Monday, 3 September 2018 17:30:15 CEST Eric Rescorla wrote:
> > > > On Mon, Sep 3, 2018 at 8:20 AM, Hubert Kario <hkario@redhat.com>
> wrote:
> > > > > On Monday, 3 September 2018 17:15:24 CEST Eric Rescorla wrote:
> > > > > > On Mon, Sep 3, 2018 at 7:28 AM, Hubert Kario <hkario@redhat.com>
> > >
> > > wrote:
> > > > > > > On Monday, 3 September 2018 16:01:22 CEST Eric Rescorla wrote:
> > > > > > > > On Mon, Sep 3, 2018 at 4:18 AM, Hubert Kario <
> hkario@redhat.com>
> > > > > > >
> > > > > > > > wrote:
> > > > > > > not
> > > > > > > abort connection, so I still think it will create less
> confusion
> > > > > > > to
> > > > > > > re-allow
> > > > > > > them than to re-assign new codepoints
> > > > > >
> > > > > > The issue is that it's not possible to distinguish a
> non-compliant
> > >
> > > TLS
> > >
> > > > > 1.3
> > > > >
> > > > > > implementation which is inappropriately sending these code points
> > >
> > > from
> > >
> > > > > > one which actually supports Brainpool with TLS 1.3. Using new
> code
> > > > > > points makes this clear.
> > > > >
> > > > > and why having that distinction is that important?
> > > >
> > > > Because otherwise you are risking interop problems:
> > > >
> > > > 1. A stack which supports TLS 1.2 and TLS 1.3 but only supports
> > > > Brainpool
> > > > for TLS 1.2 (the only kind you can write at this point), and
> > >
> > > inappropriately
> > >
> > > > advertises the Brainpool curves in violation of the MUST above.
> > > > 2. A stack which supports TLS 1.2 and TLS 1.3 and supports Brainpool
> for
> > > > both (assuming that we adopt your proposal and reactivate these code
> > > > points).
> > > >
> > > > If stack 2 receives a CH from stack 1 and responds by selecting a
> > >
> > > Brainpool
> > >
> > > > curve, then there will be an interop issue when it sends an HRR [0]
> > > > selecting
> > > > the Brainpool curve.
> > > >
> > > > -Ekr
> > > >
> > > > [0] I'm assuming that the client doesn't offer a Brainpool KeyShare.
> > >
> > > ah, yes, missed this case. That does taint all those codepoints for TLS
> > > 1.3
> > >
> > > but while the server may abort the connection upon receiving them in
> TLS
> > > 1.3
> > > CH (as it is violation of the MUST clause), I don't think it actually
> > > should
> > > abort it...
> > >
> > > For one, and I think we can agree on that, is the server MUST ignore
> them
> > > if
> > > it doesn't support them in TLS 1.2.
> >
> > I don't think I agree with this. Why would that be the case?
>
> because when servers don't do it we have "TLS version intolerance", "TLS
> extension intolerance" and so on.
>
> From RFC 5246:
>
>    If the list contains cipher
>    suites the server does not recognize, support, or wish to use, the
>    server MUST ignore those cipher suites, and process the remaining
>    ones as usual.
>
> and:
>
>    the rules specified in [TLSEXT]
>    require servers to ignore extensions they do not understand.
>
> Not to mention the most explicit statement on this topic, from RFC 8446:
>
>    Future extensions or additions to the protocol may define new values.
>    Implementations need to be able to parse and ignore unknown values
>    unless the definition of the field states otherwise.
>
> In general, if the servers weren't required to ignore values they don't
> recognise, we would never be able to extend the value lists (be it
> SupportedGroups, or SignatureSchemes/SignatureAlgorithms).
>

This isn't an unknown value. It's a specifically prohibited value. Those
are different cases.



> > > Given that TLS 1.3 server usually implement both TLS 1.2 and TLS 1.3,
> > > having
> > > code that does ignore them in TLS 1.2 and doesn't ignore them in TLS
> 1.3
> > > is
> > > only inviting bugs.
> >
> > We already have other special case code that enforces such rules. For
> > instance,
> > compression:
> >
> >       For every TLS 1.3 ClientHello, this vector
> >       MUST contain exactly one byte, set to zero, which corresponds to
> >       the "null" compression method in prior versions of TLS.  If a
> >       TLS 1.3 ClientHello is received with any other value in this
> >       field, the server MUST abort the handshake with an
> >       "illegal_parameter" alert.  Note that TLS 1.3 servers might
> >       receive TLS 1.2 or prior ClientHellos which contain other
> >       compression methods and (if negotiating such a prior version) MUST
> >       follow the procedures for the appropriate prior version of TLS.
>
> the difference is that we we don't want people to use compression in TLS
> 1.2,
> while brainpool in TLS 1.2 is just not recommended, not provably dangerous
> even when implemented correctly
>

That's reading stuff into the spec that's not there. They're both
prohibited from
being offered by TLS 1.3 clients.

-Ekr


> --
> Regards,
> Hubert Kario
> Senior Quality Engineer, QE BaseOS Security team
> Web: www.cz.redhat.com
> Red Hat Czech s.r.o., Purkyňova 115, 612 00  Brno, Czech Republic
>