Re: [TLS] Comments on draft-friel-tls-eap-dpp-01

Eric Rescorla <ekr@rtfm.com> Wed, 10 March 2021 12:13 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 66D1D3A2317 for <tls@ietfa.amsl.com>; Wed, 10 Mar 2021 04:13:29 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.895
X-Spam-Level:
X-Spam-Status: No, score=-1.895 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] 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 yvN8PctUADJH for <tls@ietfa.amsl.com>; Wed, 10 Mar 2021 04:13:27 -0800 (PST)
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com [IPv6:2a00:1450:4864:20::22b]) (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 1452B3A2315 for <tls@ietf.org>; Wed, 10 Mar 2021 04:13:27 -0800 (PST)
Received: by mail-lj1-x22b.google.com with SMTP id c19so16968165ljn.12 for <tls@ietf.org>; Wed, 10 Mar 2021 04:13:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=mzY7VOdLbn4zn3JuFUzOStvZBMmf7p9JP7uD+ZdneSY=; b=C/8jaOEKiCekV2lWhG0Lk1UvxYoYrZoZSfGZwPENQ4FyMvLbhid8efsR4CKWgyluA4 RaDjUY5Dd6Ku1Jvp5rx+DDi5tY7I/kk9/BpGjAWM4OAkzoUR9+y5iOugZws5nPFtB/4R R2m9eaedfNHSv9+HARKdBWVWmn6JlNB4OMY4zQBITlXVTR2BQr/GmKwECkdZ41M/Irf6 BOkSIa10rsrckvPr085dE1Qk4LlTVIkLDMAWw+zeNCqQxf0XHHr7HOAoCnPM6Bg9cyWe OkI0oPt+JTj0Ss2w6506dOOZXjFh8jFulbmAuI3ROm/hDSunKhYrBpXng5Hxziu/dZwI 8EEQ==
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=mzY7VOdLbn4zn3JuFUzOStvZBMmf7p9JP7uD+ZdneSY=; b=GjYKnO5Wa6i5GXZf/MnEkSMik0866J4SPqq406SiU2F7NPDbKkF/tk0iDqGYuGfbNn Aoc6thjpEy6npbrlMTcRtnHZwlsBhXhJHTrwYv0f+6wV/lQsPxeOWorG/i1ypTmbroE2 JVM9qWh6Z8M3Vb6Zp0u9p9Ex16dicqQ7gmKXAeAp0g3PWPxwl1i16WRL7XKqQCjb27yH nu92jlcIja2RFkhXnwAVCllBg5xAC0Kpig9k8XnCpclfXBF+aO8K0fAzugD8ZZGoCYal ic0fRZSkq2KEGwy0goQiijxH2t6r8jg1QTnxzkRo19koT66tpPNemeatclPSsxFoS50g MUtg==
X-Gm-Message-State: AOAM533zbyAsQ4drGYqmSMYT1DRkbUzI7C7ewSLK/lX71h8yp5E5AlYg Z6E2kckkEYZ91E7ORleAeFr7QWHjyL8tfaHPFteetw==
X-Google-Smtp-Source: ABdhPJy31ugeOOWiBZ0LAdrl79BO6iRV0OToMCAag2VGIu8GztsCzYQblUOqJryLSas1iXwRGPfw1pp/qvucKZ4nJ7M=
X-Received: by 2002:a2e:3609:: with SMTP id d9mr1771269lja.2.1615378405267; Wed, 10 Mar 2021 04:13:25 -0800 (PST)
MIME-Version: 1.0
References: <BN7PR11MB2641059009817305AEDD597FC1939@BN7PR11MB2641.namprd11.prod.outlook.com> <CABcZeBPzqTukj2m+DbufB3c9vwUPnCGyNQO22z0QeRbN9Csj0g@mail.gmail.com> <c0dbb4c9-af78-c64c-ad4c-22130f75e9cb@lounge.org> <CABcZeBNxczqb5Pzo5UBjGgy0-0Bb8Gj8hAz7GPTyqCFyUg315w@mail.gmail.com> <CY4PR11MB1685A02865105A18E21A10F2DB919@CY4PR11MB1685.namprd11.prod.outlook.com>
In-Reply-To: <CY4PR11MB1685A02865105A18E21A10F2DB919@CY4PR11MB1685.namprd11.prod.outlook.com>
From: Eric Rescorla <ekr@rtfm.com>
Date: Wed, 10 Mar 2021 04:12:49 -0800
Message-ID: <CABcZeBOx-=B4O2uEwaN6WQWR28BeNuo2q-cuifJhXwTuo5XS6A@mail.gmail.com>
To: "Owen Friel (ofriel)" <ofriel@cisco.com>
Cc: Dan Harkins <dharkins@lounge.org>, "<tls@ietf.org>" <tls@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000062d2f05bd2d9811"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/yKNY47hSeM86x4cEBK56iV6_0A8>
Subject: Re: [TLS] Comments on draft-friel-tls-eap-dpp-01
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: Wed, 10 Mar 2021 12:13:29 -0000

On Tue, Mar 9, 2021 at 11:43 PM Owen Friel (ofriel) <ofriel@cisco.com>
wrote:

>
>
>
>
> *From:* TLS <tls-bounces@ietf.org> *On Behalf Of *Eric Rescorla
> *Sent:* 09 March 2021 06:27
> *To:* Dan Harkins <dharkins@lounge.org>
> *Cc:* <tls@ietf.org> <tls@ietf.org>
> *Subject:* Re: [TLS] Comments on draft-friel-tls-eap-dpp-01
>
>
>
>
>
>
>
> On Mon, Mar 8, 2021 at 1:18 PM Dan Harkins <dharkins@lounge.org> wrote:
>
>
>   Hi Eric,
>
> On 3/8/21 8:00 AM, Eric Rescorla wrote:
>
> Taking a step back from the crypto, I'm trying to make sure I
> understand the desired security properties. As I understand the
> situation:
>
> - the client has a preconfigured key pair (X_c, Y_c)
> - the server is anonymous (i.e., doesn't have a valid TLS cert).
>
>
>
> [ofriel]Its not true that the server does not have a valid TLS cert, the
> EAP server will have a cert but the client will have no way of verifying
> it. Its more https://tools.ietf.org/html/rfc8446#appendix-C.5.
>
>
>
>
> - the server is preconfigured with information about each
>   client (in this case, Y_c).
>
> And the desired property you are looking for is that:
>
> 1. The client authenticates to the server using X_c
> 2. The client will only connect to servers that know the
>    per-client information
>
> Is this correct?
>
>
>   Yes.
>
>
>
> Assuming it is, it seems like we could accomplish this with
> less change to TLS. Here is one proposal (warning: not
> at all analyzed so may be totally broken).
>
> - Have the client take on the TLS server role, and use RFC 7250 raw
>   public keys. This addresses requirement 1.
>
>
>   This breaks the use of (T)EAP. In the case of EAP, the server is the
> one that grants access to the network and the client is the one that
> asks for access (which is why it's known as the "supplicant"). The
> EAP roles match the TLS roles so it wouldn't be possible for an EAP
> client to act as a TLS server in the EAP method.
>
>
>
> Thanks for the clarification. This is party of why it's helpful to
> understand the requirements.
>
>
>
>
>
> - Store a separate per-client value K_c (this can be derived from the
>   X_c to ease the burden on the client) and use RFC 8773 external PSK
>   with cert authentication to inject K_c into the key schedule.
>
>
>   There's no certs involved here. There is trust by the server in a
> raw public key and there's an assurance (not quite authentication) of
> the client based on who knows that public key
>
>
>
> To clarify, what I was proposing was that that you replace knowledge of
> the pubkey
>
> with knowledge of the PSK and have the client (acting as the server)
> present its
>
> public key in the RFC 7250 Raw Public Key mode. The reason certs come
>
> into play is that TLS 1.3 prohibits the use of certificate based exchanges
> (which
>
> should include Raw Public Key) with PSKs, and 8773 relaxes that.
>
>
>
> However, if you can't have the client act as the server, then we'll need
> to find
>
> another approach. As I indicated on the call, what would be helpful to me
> would
>
> be a description of the externally visible invariants that we need to
> satisfy.
>
>
>
> [ofriel] Another requirement is that the full public key Y_c is not
> transmitted as part of TLS handshake from client to server. We cannot not
> use RFC 7250 as is. Instead, something like the Known Certificates proposal
> in cTLS https://tools.ietf.org/html/draft-ietf-tls-ctls-01#section-5.1.3
> would work.
>

Is that a primary requirement or a derived requirement?



>
> Something like this could work:
>
>
>
> Setup:
>
>
>
> Client has X_c, Y_c
>
> Server is provisioned with Y_c (the bootstrap RPK)
>
>
>
> Both sides could derive (using some suitable hashing algorithm):
>
>
>
> keyID = H1(Y_c)
>
> PSK = H2(Y_c)
>
>
>
> Server keeps a map of keyID to Y_c.
>
>
>
> keyID could be common or unique for the PSK and RPK.
>
>
>
> C->S: Client sends the keyID for the derived PSK
>
>
>
> ClientHello
>
> +tls_cert_with_extern_psk
>
> +pre_shared_key identity=keyID
>
>
>
> S->C: Server looks up the Y_c, derives PSK, and injects into key_schedule.
> Server sends its PKI Certificate/CertificateVerify which client ignores.
> Server requests client cert so that client can prove it knows X_c.
>
>
>
> ServerHello
>
> +pre_shared_key selected_identity=keyID
>
> {EncryptedExtensions}
>
> {CertificateRequest}
>
> {Certificate}
>
> {CertificateVerify}
>
> {Finished}
>
>
>
> C->S: Ignores server Certificate/CertificateVerify. If handshake reaches
> here, at this stage, server has proven knowledge of Y_c via derived PSK.
>
>
>
> {Certificate, cert_data does not include RPK, but instead keyID as per
> cTLS}
>
> {CertificateVerify}
>
> {Finished}
>
>
>
> Server verifies Finished. At this stage, client has proven knowledge of
> X_c.
>
>
>
> I believe this meets the requirements that:
>
> - server proves knowledge of Y_c
>
> - client proves knowledge of X_c
>
> - Y_c is not send over the wire in cleartext
>
> - reuse existing RFCs, aligns better with existing TLS flows, no new
> extensions (well we need to do something for Certificate including keyID)
>

Yes, this might work. I think we would need analysis to demonstrate that
this doesn't allow an attacker to derive Y_c.

-Ekr