Re: [OAUTH-WG] Fwd: I-D Action: draft-ietf-oauth-mtls-03.txt

Vladimir Dzhuvinov <vladimir@connect2id.com> Mon, 07 August 2017 15:39 UTC

Return-Path: <vladimir@connect2id.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2C01D13261E for <oauth@ietfa.amsl.com>; Mon, 7 Aug 2017 08:39:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.92
X-Spam-Level:
X-Spam-Status: No, score=-1.92 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01] autolearn=ham autolearn_force=no
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 LBvRd34Gavj7 for <oauth@ietfa.amsl.com>; Mon, 7 Aug 2017 08:39:32 -0700 (PDT)
Received: from p3plsmtpa09-08.prod.phx3.secureserver.net (p3plsmtpa09-08.prod.phx3.secureserver.net [173.201.193.237]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 6EAC813261A for <oauth@ietf.org>; Mon, 7 Aug 2017 08:39:32 -0700 (PDT)
Received: from [192.168.0.103] ([78.130.190.73]) by :SMTPAUTH: with SMTP id ek7NdTKJbXPOMek7Od1p9c; Mon, 07 Aug 2017 08:38:59 -0700
To: John Bradley <ve7jtb@ve7jtb.com>
Cc: Brian Campbell <bcampbell@pingidentity.com>, oauth <oauth@ietf.org>
References: <150126635076.25225.3854025136006448469@ietfa.amsl.com> <CA+k3eCThoxNM394K=it4vCL2k-BW68Lg73eTN=4Z3LrupbXtVw@mail.gmail.com> <b3b27355-11fc-21c9-cfad-f6fb0571ed02@connect2id.com> <CA+k3eCR+YuVivqkUkdc+n4PFfQXPGwztC3PNSZnEe7Tds77xqQ@mail.gmail.com> <CA+k3eCRE9B8M4bAX0m5hY1t9Uvvz292Q5WYmSZjF7h_FkCJTKw@mail.gmail.com> <44d04086-4817-a96b-c060-fb0011dc4ad9@connect2id.com> <7EBDF15A-E2A7-4409-B2E8-01AF37D1C274@ve7jtb.com>
From: Vladimir Dzhuvinov <vladimir@connect2id.com>
Organization: Connect2id Ltd.
Message-ID: <6d150831-ab97-09eb-199c-65eb9e0457c7@connect2id.com>
Date: Mon, 07 Aug 2017 18:38:57 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1
MIME-Version: 1.0
In-Reply-To: <7EBDF15A-E2A7-4409-B2E8-01AF37D1C274@ve7jtb.com>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg="sha-256"; boundary="------------ms020409090402070806020607"
X-CMAE-Envelope: MS4wfC7uaEEVnJsNmb/XzE2pVdJ9amDEHTVlFSBxj7xIfwsLgnDt8+lAAt/JfZxm3K5aKi132rGeg8o7++GoQB1UH8FJdBejuhmgizHWlyMvd8l8Ylohftmd 9ZrMIzkcVhbVMXkzZ11ZbgIOLfNld05zL1UmIDwp3CwrWzyGENb8QIz8pRobiul9gtriB4hkKp3r2421JmdxouYy4fDJ+fkmReWawRXVlCYcfHEiHpKNmObB kC6EDncnXCgLaOy3MfvYyQ==
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/lbfxrmz3K11aTubcCal2MmgKlTA>
Subject: Re: [OAUTH-WG] Fwd: I-D Action: draft-ietf-oauth-mtls-03.txt
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Aug 2017 15:39:35 -0000

A while ago, if I'm not mistaken, I glimpsed some report of
vulnerabilities caused by incorrect public key comparison.

It looks like key comparison merits a section on its own.

How about giving the AS the option to check the signature of the
submitted client cert, which is better supported? (but will be much more
expensive in terms of CPU time than comparison)

If an AS registers an x5c with the JWK, is the AS supposed to validate
the x5c signature using the JWK public parameter? Any other checks?

Thanks,

Vladimir

On 04/08/17 23:16, John Bradley wrote:
> Having the whole certificate to compare may be easier in some environments that trying to directly compare the public keys.
>
> I believe most environments make the cert from TLS available to the app comparing that to the one retrieved from the x5c element is relatively strait forward.
>
> When comparing keys I worry that that may not be that easy to get from the TLS/HTTP stack.  
> Some environments will provide SPKI and others like java have methods to directly manipulate the keys.
>
> We should also check on any issues with representation of EC public keys.  
> While JWA docent allow compressed points RFC 5480 allows them in SPKI.
>
> Of the top of my head I don’t know if anyone issues certs in that format, but they could.  
>
> If the client receives compressed points from SPKI and uncompressed from JWK it is possible to compare them but I have a bad feeling people will get it wrong.   
>
> There is also a issue with leading zeros that must be present in the JWK but are not in the SPKI.
>
> For the most part comparing the raw keys will work with the three currently supported named curves. 
> New curves may also introduce new wrinkles.
>
> If we were only talking RSA I would definitely ditch x5c.
>
> However given that a certificate of some sort must exist to make MTLS work putting it in the x5c is not asking the world.
>
> Getting a app to string compare two blobs seems less likely to go wrong in deployment than asking apps to do atleast format normalization of the public keys to compare them.
>
> I wish it could be simpler.
>
> John B.
>
>
>> On Aug 4, 2017, at 3:17 PM, Vladimir Dzhuvinov <vladimir@connect2id.com> wrote:
>>
>> What are the potential uses of the x5c parameter?
>>
>> Vladimir
>>
>>
>> On 04/08/17 21:13, Brian Campbell wrote:
>>> Just wanted to note that, in an off-list exchange, John has pushed back on
>>> the idea to potentially drop mention of using x5c.
>>>
>>> On Wed, Aug 2, 2017 at 9:29 AM, Brian Campbell <bcampbell@pingidentity.com>
>>> wrote:
>>>
>>>> Thanks for the review, Vladimir.
>>>>
>>>> The text about which you have questions was written by Torsten (credit or
>>>> blame where it's due!) but I believe he's out of the office for a bit so
>>>> I'll try and answer.
>>>>
>>>> Your 1st question:
>>>> I've had the same thought regarding the public key method and using the
>>>> JWK x5c parameter. A JWK already has the public key, which is sufficient
>>>> for comparison in the public key method. So x5c is just superfluous here. I
>>>> believe that's a change that the next revision should have and will look to
>>>> make it unless someone wants to make a strong case for needing x5c.
>>>>
>>>> Your 2nd question:
>>>> I also found the sentence, "When used in conjunction with a trusted X.509
>>>> certificate source, it also allows the client to rotate its X.509
>>>> certificates without the need to change its respective authentication data
>>>> at the authorization server." somewhat difficult to understand when I first
>>>> read it. The intended meaning relies on content earlier in the same
>>>> paragraph that says, "As pre-requisite, the client registers a X.509
>>>> certificate or *a trusted source for its X.509 certificates (jwks uri as
>>>> defined in [RFC7591])* with the authorization server."  Basically what
>>>> it's trying to say is that when a client is registered or configured with a
>>>> jwks_uri, then client key rotation can be done without needing to
>>>> explicitly update the client config/registration with the AS. Does that
>>>> explain it? I believe the text could be more straightforward and will
>>>> endeavor to make it more clear in the next draft update.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Wed, Aug 2, 2017 at 1:53 AM, Vladimir Dzhuvinov <
>>>> vladimir@connect2id.com> wrote:
>>>>
>>>>> Thanks everyone for the update! Having a clear distinction between the
>>>>> PKIX vs public key bound methods will help interop, implementers' job, and
>>>>> it also appears good for security.
>>>>>
>>>>> Questions:
>>>>>
>>>>> https://datatracker.ietf.org/doc/html/draft-ietf-oauth-mtls-
>>>>> 03#section-2.3
>>>>>
>>>>> where the X.509 certificates are represented using the "x5c" parameter from [RFC7517 <https://datatracker.ietf.org/doc/html/rfc7517 <https://datatracker.ietf.org/doc/html/rfc7517>>]
>>>>>
>>>>> For the public key method, is it really necessary for the client to
>>>>> include its certificate in the JWK x5c parameter? This will make
>>>>> implementation harder for developers, and I'm not sure it adds anything in
>>>>> terms of security. Registering the public key parameters seems sufficient
>>>>> to me.
>>>>>
>>>>>
>>>>> https://datatracker.ietf.org/doc/html/draft-ietf-oauth-mtls- <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-mtls->
>>>>> 03#section-2.1
>>>>>
>>>>> When used in conjunction with a trusted X.509 certificate source, it also allows the client to rotate its X.509 certificates without the need to change its respective authentication data at the authorization server.
>>>>>
>>>>> I don't understand this - "in conjunction with a trusted X.509
>>>>> certificate source"
>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Vladimir
>>>>>
>>>>> On 28/07/17 21:33, Brian Campbell wrote:
>>>>>
>>>>> A new draft of "Mutual TLS Profile for OAuth 2.0" has been published with
>>>>> the changes listed below based on comments and dissuasion in Prague.
>>>>>
>>>>>   draft-ietf-oauth-mtls-03<https://datatracker.ietf.org/doc/html/draft-ietf-oauth-mtls-03 <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-mtls-03>> <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-mtls-03 <https://datatracker.ietf.org/doc/html/draft-ietf-oauth-mtls-03>>
>>>>>
>>>>>
>>>>>   o  Introduced metadata and client registration parameter to publish
>>>>>      and request support for mutual TLS sender constrained access
>>>>>      tokens
>>>>>   o  Added description of two methods of binding the cert and client,
>>>>>      PKI and Public Key.
>>>>>   o  Indicated that the "tls_client_auth" authentication method is for
>>>>>      the PKI method and introduced "pub_key_tls_client_auth" for the
>>>>>      Public Key method
>>>>>   o  Added implementation considerations, mainly regarding TLS stack
>>>>>      configuration and trust chain validation, as well as how to to do
>>>>>      binding of access tokens to a TLS client certificate for public
>>>>>      clients, and considerations around certificate bound access tokens
>>>>>   o  Added new section to security considerations on cert spoofing
>>>>>   o  Add text suggesting that a new cnf member be defined in the
>>>>>      future, if hash function(s) other than SHA-256 need to be used for
>>>>>      certificate thumbprints
>>>>>
>>>>>
>>>>>
>>>>> ---------- Forwarded message ----------
>>>>> From: <internet-drafts@ietf.org <mailto:internet-drafts@ietf.org>> <internet-drafts@ietf.org <mailto:internet-drafts@ietf.org>>
>>>>> Date: Fri, Jul 28, 2017 at 12:25 PM
>>>>> Subject: [OAUTH-WG] I-D Action: draft-ietf-oauth-mtls-03.txt
>>>>> To: i-d-announce@ietf.org <mailto:i-d-announce@ietf.org>
>>>>> Cc: oauth@ietf.org <mailto:oauth@ietf.org>
>>>>>
>>>>>
>>>>>
>>>>> A New Internet-Draft is available from the on-line Internet-Drafts
>>>>> directories.
>>>>> This draft is a work item of the Web Authorization Protocol WG of the IETF.
>>>>>
>>>>>        Title           : Mutual TLS Profile for OAuth 2.0
>>>>>        Authors         : Brian Campbell
>>>>>                          John Bradley
>>>>>                          Nat Sakimura
>>>>>                          Torsten Lodderstedt
>>>>>        Filename        : draft-ietf-oauth-mtls-03.txt
>>>>>        Pages           : 17
>>>>>        Date            : 2017-07-28
>>>>>
>>>>> Abstract:
>>>>>   This document describes Transport Layer Security (TLS) mutual
>>>>>   authentication using X.509 certificates as a mechanism for OAuth
>>>>>   client authentication to the token endpoint as well as for
>>>>>   certificate bound sender constrained access tokens.
>>>>>
>>>>>
>>>>> The IETF datatracker status page for this draft is:https://datatracker.ietf.org/doc/draft-ietf-oauth-mtls/ <https://datatracker.ietf.org/doc/draft-ietf-oauth-mtls/>
>>>>>
>>>>> There are also htmlized versions available at:https://tools.ietf.org/html/draft-ietf-oauth-mtls-03https://datatracker.ietf.org/doc/html/draft-ietf-oauth-mtls-03 <https://tools.ietf.org/html/draft-ietf-oauth-mtls-03https://datatracker.ietf.org/doc/html/draft-ietf-oauth-mtls-03>
>>>>>
>>>>> A diff from the previous version is available at:https://www.ietf.org/rfcdiff?url2=draft-ietf-oauth-mtls-03 <https://www.ietf.org/rfcdiff?url2=draft-ietf-oauth-mtls-03>
>>>>>
>>>>>
>>>>> Please note that it may take a couple of minutes from the time of submission
>>>>> until the htmlized version and diff are available at tools.ietf.org <http://tools.ietf.org/>.
>>>>>
>>>>> Internet-Drafts are also available by anonymous FTP at:ftp://ftp.ietf.org/internet-drafts/ <ftp://ftp.ietf.org/internet-drafts/>
>>>>>
>>>>> _______________________________________________
>>>>> OAuth mailing listOAuth@ietf.orghttps <mailto:listOAuth@ietf.orghttps>://www.ietf.org/mailman/listinfo/oauth
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> OAuth mailing list
>>>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>>> https://www.ietf.org/mailman/listinfo/oauth <https://www.ietf.org/mailman/listinfo/oauth>
>>>>>
>>>>>
>>
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>> https://www.ietf.org/mailman/listinfo/oauth <https://www.ietf.org/mailman/listinfo/oauth>