Re: [TLS] Working Group Last Call for draft-ietf-tls-downgrade-scsv-00

Brian Smith <brian@briansmith.org> Sat, 11 October 2014 05:07 UTC

Return-Path: <brian@briansmith.org>
X-Original-To: tls@ietfa.amsl.com
Delivered-To: tls@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9D6611A1AB7 for <tls@ietfa.amsl.com>; Fri, 10 Oct 2014 22:07:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.979
X-Spam-Level:
X-Spam-Status: No, score=-1.979 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham
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 FTAI-Oa2q_Oh for <tls@ietfa.amsl.com>; Fri, 10 Oct 2014 22:07:42 -0700 (PDT)
Received: from mail-oi0-f49.google.com (mail-oi0-f49.google.com [209.85.218.49]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9E12A1A1A8D for <tls@ietf.org>; Fri, 10 Oct 2014 22:07:42 -0700 (PDT)
Received: by mail-oi0-f49.google.com with SMTP id a3so8582716oib.36 for <tls@ietf.org>; Fri, 10 Oct 2014 22:07:42 -0700 (PDT)
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:date :message-id:subject:from:to:cc:content-type; bh=8RWJv99Xgzx+WA2OlF+N6vR764XRySYf4W9VKK6y1gg=; b=Jolqo+4tL+9S9tomgRIMfHGb8uQsOaphbiTRd3jvOpd27MxeyHDtbA+W3M6lHrCO4y QSStTyBQ4ja6Cj0snefeUHik5mmoA1OTtkVB0bVrP/iHtUsLxEkdMawUGhLa6GUAQqAi 0TMVYqBz9AV0lbPXb+GnYJXhp9NU/zRCoDF0YNFVAAsBdeRs4ERbfr8/g3wZvDcd4sEy FBFuoK9tBkd1+Xkxd4kJnrxyd4EuLEtqvd5sjWWHN4vGh26XnUayok0mqjwtoaJXJaCC FHPdZOFe1wb2HKBVEq3/tU1qlsI6E9Y1XxELhy6ZxmDmKbGFVRO235f4bgcAcwRyb4mm kYeg==
X-Gm-Message-State: ALoCoQk7+cbZ0fgE6DeuBkPnLkdVkHNkRI7tPA3zmlZ2pu79qs34I84I1SpCl3Sqwv2J0cD6cG4p
MIME-Version: 1.0
X-Received: by 10.182.215.131 with SMTP id oi3mr8803863obc.2.1413004061950; Fri, 10 Oct 2014 22:07:41 -0700 (PDT)
Received: by 10.76.102.40 with HTTP; Fri, 10 Oct 2014 22:07:41 -0700 (PDT)
In-Reply-To: <CADMpkcKh=6Y9u_utfLiccZTUKT-BV1+3NQO7OzDN-Dn38sx-TQ@mail.gmail.com>
References: <2112FCAD-4820-49D9-9871-6501C83A554D@cisco.com> <CABkgnnUxeouqDNhYFGDC2xqUaT8r7zFvAT5U1OUGJwHwCOuOwA@mail.gmail.com> <CADMpkcJKJiTCQXdDbepyiAf22J9VC03DDgiE521n3NsNnFmALA@mail.gmail.com> <CABkgnnWo9KGMkRrmA0wkJ5Dfnzh2Vo-cveCe_UeH71F8K_4oWw@mail.gmail.com> <CADMpkcJpHeKGV-xc4Uon8KWj=+p=6nQO1_rxb6sRN04nFX--gQ@mail.gmail.com> <CABkgnnU8DyzRvvq1e24bUsZdwx48mFOC6KstZaUCbvyQ-WwesQ@mail.gmail.com> <CADMpkc+wXf=SG3=C==SV77YXZdbXnbXspJLRZ1UORPF-WbVMEw@mail.gmail.com> <CAFewVt5mEodyqB6TWCmvOUBek9Bnb43bmw5mAqph-hQU=F=EpA@mail.gmail.com> <CAFewVt40ewzwujJZ8KQYYALnPjBSZnF-bDiVaz54URA6MaqPEg@mail.gmail.com> <CADMpkcKh=6Y9u_utfLiccZTUKT-BV1+3NQO7OzDN-Dn38sx-TQ@mail.gmail.com>
Date: Fri, 10 Oct 2014 22:07:41 -0700
Message-ID: <CAFewVt747+NJZxGohr_1=TqW=Pcu7qp7tz=8qYWP=Zg+vRPsPw@mail.gmail.com>
From: Brian Smith <brian@briansmith.org>
To: Bodo Moeller <bmoeller@acm.org>
Content-Type: text/plain; charset="UTF-8"
Archived-At: http://mailarchive.ietf.org/arch/msg/tls/doa3LxbT3dSTnWVFNJNlg38Hli0
Cc: "<tls@ietf.org>" <tls@ietf.org>
Subject: Re: [TLS] Working Group Last Call for draft-ietf-tls-downgrade-scsv-00
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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: Sat, 11 Oct 2014 05:07:44 -0000

On Fri, Oct 10, 2014 at 12:52 PM, Bodo Moeller <bmoeller@acm.org> wrote:
> (Given that the protocol version has previously been negotiated
> between the client and server, TLS_FALLBACK_SCSV is only
> expected to have an effect if the server has since been updated
> to support higher versions. Omitting TLS_FALLBACK_SCSV
> lets the client continue to use the previously negotiated protocol
> version. Sending TLS_FALLBACK_SCSV, in contrast, could lead
> to an inappropriate_fallback alert if the client should start anew
> to create a new session using the new highest protocol version.)"

Let's review the scenerio in detail:

1. Client attempts handshake with client_version == TLS 1.2, and the
handshake fails.
2. Client attempts handshake with client_version == TLS 1.1, and the
handshake succeeds, with both sides saving the session information.
3. Server is upgraded to support TLS 1.2 or higher.
4. Client attempts to handshake with client_version == TLS 1.1 and a
resumed session ticket.

There are four cases to consider:

CASE 1: Client included the TLS_FALLBACK_SCSV, server forgot session
state when it was upgraded. The result is an inappropriate_fallback
alert.

CASE 2: Client included the TLS_FALLBACK_SCSV, server (magically!!!)
retained the session state across the server software upgrade. The
result is an inappropriate_fallback alert.

CASE 3: Client did not include the TLS_FALLBACK_SCSV, the server
forgot session state when it was upgraded. The server starts a new TLS
1.1 session. Thus, the downgrade protection mechanism has failed to
prevent a version downgrade.

CASE 4: Client did not include the TLS_FALLBACK_SCSV, the server
(magically!!!) retained the session state across the software upgrade.
The server resumes the TLS 1.1 session instead of starting a new TLS
1.2 session. Thus, the downgrade protection mechanism has failed to
prevent a version downgrade.

> Previously I'd assumed you'd want to keep "normal" behavior (simply continue
> to use the previous protocol version), but I don't see a compelling reason
> for the specification to prescribe that to clients.

Doing that also allows version downgrade to succeed inappropriately in
the case where the server's capabilities were improved during the
lifetime of a session cached by a client.

I think the best solution is to take my original suggestion (i.e. keep
the current logic, but make it more clear), and also suggest that,
after the client has received an inappropriate_fallback alert, the
client SHOULD forget what it has learned about what the server's
version tolerance and cached sessions, and retry its version
intolerance logic over, taking care not to get into an infinite loop
in the even that it receives another inappropriate_fallback alert when
it retries.

I think it is realistic to expect that servers that implement the
inappropriate_fallback logic to implement at least TLS 1.2 (or at
least TLS 1.1), so you could also suggest that the client MUST (not
just SHOULD) send always send TLS_FALLBACK_SCSV when it negotiates TLS
1.1 or lower, because the "deployment of a new protocol version"
consideration does not apply for those versions.

If for some reason this cannot be done, then at a minimum the security
considerations need to be expanded to document that downgrade is still
possible in CASE 3 and CASE 4 above.

Cheers,
Brian