Re: [TLS] [Emu] Underspecification of EAP-TLS 1.3 State Machine

Bernard Aboba <bernard.aboba@gmail.com> Thu, 04 February 2021 23:26 UTC

Return-Path: <bernard.aboba@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 BDB6F3A1960; Thu, 4 Feb 2021 15:26:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.1
X-Spam-Level:
X-Spam-Status: No, score=-0.1 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URI_DOTEDU=1.997] autolearn=no 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 cgY3H-j1r3XC; Thu, 4 Feb 2021 15:26:29 -0800 (PST)
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::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 C6E1E3A195F; Thu, 4 Feb 2021 15:26:28 -0800 (PST)
Received: by mail-lj1-x229.google.com with SMTP id s18so5531070ljg.7; Thu, 04 Feb 2021 15:26:28 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=hKxPvpw1UAaLlQk9nq+DBpV+m7iyFk5nKWUmKlwQ17k=; b=l08PzZ3Xw9MY2jduCdBQWofV8s2T0mz40eZ7dvH+YkHdIS1nsqHZ+AR12NlNzVY0rB d033AkX9IUIuex/PPa9St3TC9ArS/knYEXRXSz7z8lGJ29D/nkEsChd61lRwRmOKG8Wm g+lSyKAZqLOYk6/4t/vn8CdDVFHKWbaAA1bltvKzG6YHpmjGf7jUaWZWOforhgFUMmHG NBT3k00rZyxqk11ysUhrB0vOYs4BANrpu/B0U7bzTSQoxMQ4zbhNp0jYbWzeeWw0SoNI 6q6capTO6Ky1vhn6Amb0s6LNi1Fw4shwm4/7ADNTCvFdeJd5DQWaWXjLT3T5Eg6uNOru gclg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=hKxPvpw1UAaLlQk9nq+DBpV+m7iyFk5nKWUmKlwQ17k=; b=Zgh9htlR8aC3UA6A2AEZH6pR1DSJe9fclRBnB6pxyo+zGnJfIypoJj4grdycoOMk8v iQeaR0SIBllHY2uGzC11MNajz6U46gZNLjmc/IoNNrC4CbQdJEBncaQDNo99vPMStTVL +0Ydekxl3e059M5GWAn/VMtK+Tdv94U1lKdR5uAPlU2H3V4GaZKwqfveJ5+9GcXzgRXO O9I7IiD2zmvWTzdsxDKmr7SqiU/KmPmgDn92G7+H7rTvib0hbC491JHCNuP3ak24l2/b xfBclDAR/3B1X5NpC571DZxFvW8RFmoXXUmJ6hQ8wl8Sp1Qo+MuGVnxVlIhZ5aMuCfDW FbQA==
X-Gm-Message-State: AOAM5308l/DIdVM8I7GNp26WabrEPqUvrP4ScPDAAwBTdNZogJIfn2i0 jRUWpttz9b3tIqy5KGp0QRUYjP2EY8EnOkAXEJM=
X-Google-Smtp-Source: ABdhPJwxHpfpYBOb/EqZOEhkQ8YYdaf7pUYfQOVoSKN/zOsqm/mT+Kz1PyfnHbjS8SVvptzwoGlts1jAEf6Z6woaUDs=
X-Received: by 2002:a2e:9ac1:: with SMTP id p1mr949775ljj.327.1612481186600; Thu, 04 Feb 2021 15:26:26 -0800 (PST)
MIME-Version: 1.0
References: <CAOW+2dvGQGc4-awvmaj=k4esv=vDp+Eb7RRvv88xEqPhOGJSFQ@mail.gmail.com> <4991F280-1644-43CB-A5DE-CE364641966F@ericsson.com> <C3B0FD18-9305-450F-B8C7-FEF2AFFCB818@ericsson.com> <76490599-4B8D-4E2C-8D19-EF19C4539DD3@ericsson.com>
In-Reply-To: <76490599-4B8D-4E2C-8D19-EF19C4539DD3@ericsson.com>
From: Bernard Aboba <bernard.aboba@gmail.com>
Date: Thu, 04 Feb 2021 15:26:15 -0800
Message-ID: <CAOW+2duvbs2FjROys_VA9rXfbmsv68ZdYUrcC_EAvin3ih7Zcg@mail.gmail.com>
To: John Mattsson <john.mattsson@ericsson.com>, Alan DeKok <adekok@gmail.com>, jovergar@microsoft.com
Cc: "emu@ietf.org" <emu@ietf.org>, "TLS@ietf.org" <TLS@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000559bc905ba8b08e0"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/5Fsew0y8HAnILr-DWsLovYe9P_M>
Subject: Re: [TLS] [Emu] Underspecification of EAP-TLS 1.3 State Machine
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: Thu, 04 Feb 2021 23:26:33 -0000

John said:

"The keying material becomes available in the EAP-TLS server after the

   server Finished has been sent.  The keying material becomes available
   in the EAP-TLS peer after the server Finished has been received."

[BA]  There is a distinction between when keys are available on the EAP
server,  and when they are transmitted by the EAP Server to the
authenticator (after an EAP-Success is sent).  Also, there is a distinction
between when the EAP peer derives the keys and when they are to be pushed
down to the lower layer (this should only happen after an alternative
success indication is received). The state machine is more driven by the
transmission/push-down of keys than by their mere derivation.

I'll let the implementers comment on the practicality of a close_notify as
an alternative success indication, as opposed to other potential solutions.





I'll let the implementers comment on the practicality of what you are
proposing.

On Thu, Feb 4, 2021 at 3:14 PM John Mattsson <john.mattsson@ericsson.com>
wrote:

> Hi Bernard,
>
>
>
> 802.11 is a very important use case for EAP-TLS so if an authenticated
> alternate success indication is needed there, it absolutely needs to be
> supported by EAP-TLS 1.3
>
>
>
> I updated the EAP state machine chapter based on your comments.
>
>
>
> ---------------------------------------------------------------------------
>
> 2.5.  EAP State Machines
>
>
>
>    This is a new section when compared to [RFC5216] and only applies to
>
>    TLS 1.3 (or higher).  [RFC4137] offers a proposed state machine for
>
>    EAP
>
>
>
>    TLS 1.3 [RFC8446] introduces Post-Handshake messages.  These Post-
>
>    Handshake messages use the handshake content type and can be sent
>
>    after the main handshake.  Examples of Post-Handshake messages are
>
>    NewSessionTicket, which is used for resumption and KeyUpdate, which
>
>    is not useful and not expected in EAP-TLS.  After sending TLS
>
>    Finished, the EAP-TLS server may send any number of Post-Handshake
>
>    messages in separate EAP-Requests.
>
>
>
>    To provide an authenticated success result indication and to decrease
>
>    the uncertainty for the EAP-TLS peer, the following procedure MUST be
>
>    followed:
>
>
>
>    When an EAP-TLS server has successfully processed the TLS client
>
>    Finished and sent its last handshake message (Finished or a Post-
>
>    Handshake), it commits to not sending any more handshake messages by
>
>    sending a TLS close_notify alert.  The TLS close_notify alert is an
>
>    authenticated success result indication, as defined in [RFC3748].
>
>    After sending the TLS close_notify alert, the EAP-TLS server may only
>
>    send an EAP-Success.  The EAP-TLS server MUST NOT send an TLS
>
>    close_notify alert before it has successfully processed the client
>
>    finished and sent its last handshake message.
>
>
>
>    Receipt of any TLS Error alert SHOULD be considered a failure result
>
>    indication, as defined in [RFC3748].  After sending or receiving a
>
>    TLS Error alert, the EAP-TLS server may only send an EAP-Failure.
>
>
>
>    The keying material becomes available in the EAP-TLS server after the
>
>    server Finished has been sent.  The keying material becomes available
>
>    in the EAP-TLS peer after the server Finished has been received.
>
> ---------------------------------------------------------------------------
>
>
>
> I used RFC 3748 terminology as RFC 4237 is an informal draft.
>
>
>
> close_notify is now an authenticated success result indication (close_notify
> could be replaced by TLS application data).
>
>
>
> My undertstanding from RFC 4137 is that eapKeyAvailable and
> aaaEapKeyAvailable seems
>
> to be automatically set at success if eapKeyData and aaaEapKeyData are set.
>
>
>
> if (eapKeyData != NONE)
>
>   eapKeyAvailable = TRUE
>
>
>
> if (aaaEapKeyData != NONE)
>
>   aaaEapKeyAvailable = TRUE
>
>
>
> I therefore only described when the "keying material becomes available"
> which is the words used by RFC 4137 for eapKeyData and aaaEapKeyData.
>
>
>
> Open question if Section 2.5 should say something about TLS 1.2.
>
>
>
> Cheers,
>
> John
>
>
>
> *From: *John Mattsson <john.mattsson@ericsson.com>
> *Date: *Thursday, 4 February 2021 at 15:22
> *To: *Bernard Aboba <bernard.aboba@gmail.com>, "emu@ietf.org" <
> emu@ietf.org>, "TLS@ietf.org" <TLS@ietf.org>
> *Subject: *Re: [Emu] Underspecification of EAP-TLS 1.3 State Machine
>
>
>
>
>
> I think the major decision for the EMU WG to make going forward is to
> agree if EAP-TLS 1.3 MUST have an alternative success indication. RFC 5216
> does not discuss the EAP state machine at all, but in TLS 1.2 the server
> finished can be used as an alternative success indication.
>
>
>
> close_notify might be possible to turn into an alternative success
> indication if the TLS implementation can be profiled to not send any
> close_notify by itself. I don't know if there are any cases where an
> implementation would send close_notify without the application telling it
> to.
>
>
>
> If the wg agrees that an authenticated alternative success indication is
> needed (this is to my understanding needed in e.g. 802.11) then the process
> would be that the EAP-TLS server first process the second flight from the
> client, if that verifies correctly, the server send application data commit
> message / close_notify.
>
>
>
> Introducing an authenticated alternative success indication would not
> require any changes to the -14 message flows. In -13 the commitment message
> would have to be sent in a later flight than server finished.
>
>
>
> If a mandatory authenticated alternative success indication is introduced
> in EAP-TLS 1.3, I do not think any future additions to TLS 1.3 would be
> needed for EAP-TLS 1.3.
>
>
>
>
>
> *From: *John Mattsson <john.mattsson@ericsson.com>
> *Date: *Thursday, 4 February 2021 at 13:18
> *To: *Bernard Aboba <bernard.aboba@gmail.com>, "emu@ietf.org" <
> emu@ietf.org>, "TLS@ietf.org" <TLS@ietf.org>
> *Subject: *Re: [Emu] Underspecification of EAP-TLS 1.3 State Machine
>
>
>
> Hi Bernard,
>
>
>
> I (re-)read the papers you send.
>
>
>
> - "Extensible Authentication Protocol Vulnerabilities and Improvements
> Improvements"
>
>
>
>   This paper talks attacks on availability by spoofing messages. It looks
> into a small amount of ways where spoofed messages causes the TLS
> connection to fail, especially it focus on alert messages.
>
>
>
>   TLS and EAP-TLS is trivial for an on-path attacker to shut down.
> Basically any small error is fatal in TLS. Focusing on alert messages does
> not seem correct. An attacker can e.g. at any time send a small record with
> length 2^15, which causes TLS to terminate the connection. I think the only
> thing that can be achieved without rewriting TLS is that availability
> attacks does not cause long-term damage, i.e. the nodes can retry the
> handshake.
>
>
>
> - "An Initial Security Analysis of the IEEE 802.1X Standard"
>
>
>
>   This paper discusses attacks on 801.11. The weaknesses described seems
> to come from 802.11 / EAP interactions.
>
>
>
> The discussions around IETF 102 was that the uncertainty (NewSessionTicket
> or not) in TLS 1.3 was "inconvinient" and that it would be convient to get
> rid of the uncertainty. Bernard then pointed out that any message changing
> the state need to be authenticated to that it is not possible to spoof. I
> think that both the application layer commit message as well as
> close_notify fulfill these old requirements.
>
>
>
>
>
> I think your analysis is correct.
>
>
>
> 1. What constitutes an "alternative success" indication in the EAP-TLS 1.3
> protocol?
>
>
>
> The -13 commitment message verifies that both sides are in possession of a
> derived key. But the server finished already does that. As you state, the
> -13 commitment message is not an alternative success indication. I think it
> would be easy to make it an alternative success indication be mandating
> that the EAP-TLS server must only send it after verifying the client
> finished. I do not think defining a new exporter is needed.
>
>
>
> The -14 close_notify is also not an alternative success indication and can
> not be made into one either.
>
>
>
> If the requirement is that an alternative authenticated success indication
> is needed. Then I think:
>
>
>
> - We need to have an extra roundtrip.
>
> - close_notify does not work and cannot be made to work
>
> - Application data commit message could work as an alternative success
> indication. TLS would have to be profiled so the alternative success is
> only send be EAP-TLS server after client finished processed successfully.
>
>
>
> 2. At what point should keys be pushed down to the lower layer?
>
>
>
> What is the exact requirement for eapKeyAvailable = TRUE to be set?
>
>
>
> My understanding reading RFC 4137 (correct me if I am wrong) is that it is
> not enough that the other party is authenticated, but that an alternative
> success indication has been sent/received. If that is correct the EAP-TLS
> server would set eapKeyAvailable = TRUE after sendign the alternative
> success indication and the EAP-TLS client would set eapKeyAvailable = TRUE
> after receiving the alternative success indication.
>
>
>
> 3. What constitutes an "alternative failure" indication in EAP-TLS 1.3?
>
>
>
> Yes, I agree, receipt of TLS Alert messages should be considered an
> alternative failure mechanism.
>
>
>
> 4. What is the purpose of the commitment message?
>
>
>
> The -01 to -13 purpose was to indicate in an authenticated way that the
> EAP-TLS method would not continue and that only success or failure could
> follow.
>
>
>
> If an alternative success indication is required. Which it seems to be
> according to your mail. I think the alternative success indication would
> replace the old commitment message.
>
>
>
> I think
>
>
>
> Cheers,
>
> John
>
>
>
> *From: *Emu <emu-bounces@ietf.org> on behalf of Bernard Aboba <
> bernard.aboba@gmail.com>
> *Date: *Tuesday, 2 February 2021 at 16:25
> *To: *"emu@ietf.org" <emu@ietf.org>
> *Subject: *[Emu] Underspecification of EAP-TLS 1.3 State Machine
>
>
>
> The EAP TLS 1.3 specification does not currently specify how EAP TLS 1.3
> interacts with the EAP state machine as specified in RFC 4137.  It appears
> to me that this under-specification is at the root of the questions about
> the commitment message.
>
>
>
> Historically, under-specification of the EAP-TLS state machine has been a
> source of potential security vulnerabilities by enabling packet injection
> attacks [1][2], including attacks involving the injection of EAP-Success
> and EAP-Failure mechanisms.
>
>
>
> RFC 4137 Sections 4.1.1 and 4.1.2 define several variables:
>
>
>
>    altAccept (boolean)
>
>
>
>       Alternate indication of success, as described in [RFC3748 <https://tools.ietf.org/html/rfc3748>].
>
>
>
>    altReject (boolean)
>
>
>
>       Alternate indication of failure, as described in [RFC3748 <https://tools.ietf.org/html/rfc3748>].
>
>
>
>    eapKeyData (EAP key)
>
>
>
>       Set in peer state machine when keying material becomes available.
>
>       Set during the METHOD state.  Note that this document does not
>
>       define the structure of the type "EAP key".  We expect that it
>
>       will be defined in [Keying <https://tools.ietf.org/html/rfc4137#ref-Keying>].
>
>
>
>    eapKeyAvailable (boolean)
>
>
>
>       Set to TRUE in the SUCCESS state if keying material is available.
>
>       The actual key is stored in eapKeyData.
>
>
>
> The issue in the EAP-TLS 1.3 specification is that the interlock with these variables is not defined.
>
>
>
> For example, it appears to me that the commitment message verifies that both sides are in possession of a derived key,
>
> allowing the eapKeyData variables to be set.  However, it does not appear to me that the successful validation of the commitment message is
>
> sufficient to allow keys to be pushed down to the lower layer, allowing data to flow.
>
> Therefore the eapKeyAvailable variable should not yet be set to TRUE.
>
>
>
> Also, the commitment message does not constitute an alternative success indication because it is possible for an
>
> alternative failure indication (e.g. a TLS alert) to be sent after the commitment message.
>
> If the commitment message did constitute an alternative success mechanism, then an attacker injecting an
>
> EAP-Success message would be able to cause the peer to believe that authentication
>
> had succeeded even though it had actually failed (e.g. TLS alert sent after the commitment message).
>
>
>
> Given these issues, I believe the specification needs to answer several questions:
>
>
>
> 1. What constitutes an "alternative success" indication in the EAP-TLS 1.3 protocol?
>
> 2. At what point should keys be pushed down to the lower layer?
>
> 3. What constitutes an "alternative failure" indication in EAP-TLS 1.3?
>
> 4. What is the purpose of the commitment message?
>
>
>
> Only question 3 looks straight forward to me: receipt of TLS Alert messages should be considered an alternative failure mechanism,
>
> although perhaps some caveats need to be applied to address the injection attacks described in [1].
>
>
>
> [1] EAP Vulnerabilities and Improvements, Extensible Authentication Protocol Vulnerabilities and Improvements (sjsu.edu) <https://scholarworks.sjsu.edu/cgi/viewcontent.cgi?article=1431&context=etd_projects>
>
> [2] An Analysis of the IEEE 802.1X Standard, An Initial Security Analysis of the IEEE 802.1X Standard | Request PDF (researchgate.net) <https://www.researchgate.net/publication/2562682_An_Initial_Security_Analysis_of_the_IEEE_8021X_Standard>
>
>