Re: [TLS] Simpler backward compatibility rules for 0-RTT

Martin Thomson <martin.thomson@gmail.com> Wed, 22 June 2016 03:54 UTC

Return-Path: <martin.thomson@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 D69F312D1AD for <tls@ietfa.amsl.com>; Tue, 21 Jun 2016 20:54:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 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, 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 lgVfYL9ZqUQn for <tls@ietfa.amsl.com>; Tue, 21 Jun 2016 20:54:26 -0700 (PDT)
Received: from mail-qk0-x231.google.com (mail-qk0-x231.google.com [IPv6:2607:f8b0:400d:c09::231]) (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 748A012D541 for <tls@ietf.org>; Tue, 21 Jun 2016 20:54:26 -0700 (PDT)
Received: by mail-qk0-x231.google.com with SMTP id a186so49240184qkf.0 for <tls@ietf.org>; Tue, 21 Jun 2016 20:54:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=KpxLf1A6JnVmmf/7ReecLK0YNpVz441JxDdx1YzRsiw=; b=Tpd0hy2lmt1GwXLjT0TjCdQy1vVB5GcT/sLsadg2qQT8UM8d4Bm9TplhDl8iEop+RD lut2AQVmfBYIusLrjwsg85MzKDKhQS9PpCkAFqIARCFfL1fD4sMpAc7k9IhKxkJfFPfY TIsDfSq4hfFyLFS4FL3GRIvzhd4Ix+xyP+csqcjBQi5rARLH6MURMNb2sFAsxtjJjDAO rZTp2hBcKp3sIneNRsDRgqstmhUhFz92kPBoEndfqAxxoHVPZtGtwGmCENhcaQ+oD+Xz bwDWDB4aZu53HIiWODhYKQlEtCBNWYK/lwzqWn07XcvxFn9VwaJskmnQhlB+09Dbhokh dk7Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=KpxLf1A6JnVmmf/7ReecLK0YNpVz441JxDdx1YzRsiw=; b=HdK39U48NNEb+rSgt2NrNoFruEURakL9I2Cd1+d6a1f1Gl93qBONK8eJ7zKR9TOplR dkJIwWIvVjzVw5xd1e/+iTTbS91Kbc50SlZEnLiUjSEHaSOpy6mN/K12zC+NzLzQawPb Gz1Q9MnIDaT57AfIu/3m3f8dlSfPIEY3R0ecA3gdJrcwKOn6kbxn/glX2vbrZbqMs526 ri+jZ2hl60FTRQ57MKSurQxNsetOxJfsbR0tDAvkSe0IOO1E36SRlVsBzV+I7T/G5PNh +wTDzUw6ihZbDPvL2OC9bcd3FdVEEi41SHQFkxCPypNiF/X9UUuAcGVkBEZKUeCLDw04 czJw==
X-Gm-Message-State: ALyK8tJmNTVarDjmVZidf95tZ/Vu2N2oDn5imh5+T09mIxDoLDIA5yUfEmnWyUlFKxQaENY767jrCaQyfJB4fA==
X-Received: by 10.55.157.196 with SMTP id g187mr35115733qke.68.1466567665566; Tue, 21 Jun 2016 20:54:25 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.140.22.38 with HTTP; Tue, 21 Jun 2016 20:54:25 -0700 (PDT)
In-Reply-To: <CAF8qwaCd_KPK91_77c0U_GyEEky5eo6f5cN9Ten-0ScN=uo1DQ@mail.gmail.com>
References: <CABkgnnUsnz3Uh8dH=ke9uO82cgP3S7nJ0fgcs=JpsZu3qr0K0g@mail.gmail.com> <r470Ps-10115i-6FFB9306D2CD4AF69546AD05CDF750C6@Williams-MacBook-Pro.local> <CABkgnnXr_s=Y9xrn34-EUh9P1aUg0ZbeOziMgeGgosLn7ZgTdw@mail.gmail.com> <CAF8qwaCd_KPK91_77c0U_GyEEky5eo6f5cN9Ten-0ScN=uo1DQ@mail.gmail.com>
From: Martin Thomson <martin.thomson@gmail.com>
Date: Wed, 22 Jun 2016 13:54:25 +1000
Message-ID: <CABkgnnXRB9AHZJLpSC7Q2tGBPv1h22jSjma1ktLcRg7Hw9qOxg@mail.gmail.com>
To: David Benjamin <davidben@chromium.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/dlWM0dUaCqiQ4YymZmLEftOPH04>
Cc: "tls@ietf.org" <tls@ietf.org>
Subject: Re: [TLS] Simpler backward compatibility rules for 0-RTT
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.17
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: Wed, 22 Jun 2016 03:54:29 -0000

I've added this option to my PR.  I've also weakened the deployment
requirement to a SHOULD in light of that.  I'll learn to live with the
bad taste that leaves :)

On 22 June 2016 at 12:31, David Benjamin <davidben@chromium.org> wrote:
> On Tue, Jun 21, 2016 at 8:45 PM Martin Thomson <martin.thomson@gmail.com>
> wrote:
>>
>> On 22 June 2016 at 10:30, Bill Frantz <frantz@pwpconsult.com> wrote:
>> > Well, it seems like a browser could try TLS 1.3 without 0-RTT first.
>> >
>> > If it connects with 1.3 non-0-RTT, then it could mark the host as not
>> > supporting 0-RTT for a day or so and after that time retry to see if the
>> > host has been fixed.
>>
>> Yes, that is an option.  Harder to manage, but certainly possible and
>> (overall) preferable to falling back to 1.2.
>
>
> Right, that (minus the statefulness because I don't care for adding state
> here) was exactly my intent with the specification text. Don't change the
> ClientHello version and only retry with the 0-RTT data dropped. It
> explicitly says "It is NOT RECOMMENDED to retry the connection in response
> to a more generic error or advertise lower versions of TLS."
>
> The version fallback is also inevitable (unless the version negotiation is
> moved elsewhere), but at least we can separate the two and someday retire
> the version fallback half.
>
> (Also, it's unlikely, but one could also imagine that the retry switches
> back to hitting a 1.3-capable server. Then changing the ClientHello version
> will trip fallback detection and the connection will fail again. Whereas
> retrying with only 0-RTT off is a handshake that will work against 1.2 and
> 1.3 servers alike.)
>
> I don't care much about the exact distribution of MAY/SHOULD/MUST, if that's
> all we disagree on. If we both agree that browsers will have to fallback, I
> want the mechanism written down somewhere. Because it's not obvious that
> this fallback may be triggered without a version downgrade and without a
> broad trigger, both of which have been problems with the past fallbacks.
> (The version downgrade has clear security implications and a broad trigger
> means debugging harder and, worse, it hides bugs. I've seen many cases of
> server software shipping new code that flat-out doesn't work but fallbacks
> are so easy to trigger that no one noticed.)
>
> Note that, since TLS stacks typically are not in charge of creating sockets,
> the implementation is the same with or without the fallback. The TLS stack
> needs to return a very specific error code (<= 1.2 ServerHello in response
> to 0-RTT ClientHello) and higher-level logic can condition on it as it
> pleases.
>
> David