Re: [OAUTH-WG] WGLC on draft-ietf-oauth-mtls-07

John Bradley <ve7jtb@ve7jtb.com> Mon, 30 April 2018 22:58 UTC

Return-Path: <ve7jtb@ve7jtb.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 B171E1275AB for <oauth@ietfa.amsl.com>; Mon, 30 Apr 2018 15:58:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level:
X-Spam-Status: No, score=-1.91 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_NONE=-0.0001, SPF_PASS=-0.001, T_DKIMWL_WL_MED=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=ve7jtb-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 bSJg4KyRcbwp for <oauth@ietfa.amsl.com>; Mon, 30 Apr 2018 15:58:49 -0700 (PDT)
Received: from mail-qt0-x235.google.com (mail-qt0-x235.google.com [IPv6:2607:f8b0:400d:c0d::235]) (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 BBC1D1274D2 for <oauth@ietf.org>; Mon, 30 Apr 2018 15:58:48 -0700 (PDT)
Received: by mail-qt0-x235.google.com with SMTP id h2-v6so12904814qtp.7 for <oauth@ietf.org>; Mon, 30 Apr 2018 15:58:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ve7jtb-com.20150623.gappssmtp.com; s=20150623; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=ksBXmRexTtFo9PRG4+fOmw/wap6jdpxcLfuwcEkcnvA=; b=lACGt9Ge0hr7MK/VpbF1o9WUiqvGiBYxoUZOam9JcH1KYmarAbMbjShyM7tsTHiERP 3x6cHBL9c/3Osv0LZLdmq2iXoQSmR+T/2I7iZ7ncfZxm0VlsjOWqhezPThVJhwMpgUn9 UrbblmQbIjB9GYuxTR9/viVYZ/nkZaUo1fHPi6kNrVwONWglxtNGWAjoLncUUtHnH/Fi btzh87iVS6ZSA2ARx6K1ODs0Pg9Ko71oPVOaxiBaGHB2ekY5czEogtDzH8AKHW7kQxPD RhTUAjbTf+/oJoLvTg4ECV0IjFFA3Ood8vaXs9dcHedylUbsisGBdkuX5artFP6WBbxA fzqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=ksBXmRexTtFo9PRG4+fOmw/wap6jdpxcLfuwcEkcnvA=; b=cXoXh4dxFUREeU11sen5Cj7o37/ybZHcK7XOBDeOnu1t99+g19VI03sRvYpJst9+XJ vXnMyTleOsb+6xJhzo7G9KY0mseEvbZMo5+fddkwWXXM+ncwyS9mIVEcuI7+GpsyR/ht GMbqFzjPE7Hv/c9bvUOoZ5x270fdMPhdy6h7G5gL4KVz8dzU5exONWVMnjKHdnrbX2Gq dUqIk7ufXRfbcmSgyOYImEb5K95IPyIdHXsyq2yBZD7CIA/bjrcn8E5YDMSH28tsqVhT NiFgTPvdSu258W0cwYFHDcuxn/LlN1/mvCqpYJXjU4FvrF1PojLvCwa6ITZ5CoW8q17s QKAQ==
X-Gm-Message-State: ALQs6tCedK+ZfpMSO/IB3jdluYQYTTDhjzERLruuiczJakrmY37AHBhB pjNR0B7/RiGUQuWAlwXCyHdgXw==
X-Google-Smtp-Source: AB8JxZqe6/Xlm+Pq79pUjhsmwFJGWqaX9vc1mws1UVOyHri+/nkRgOvkdmGYSRZgP/J+j54UBTFwzw==
X-Received: by 2002:a0c:d88f:: with SMTP id q15-v6mr11770944qvj.83.1525129127431; Mon, 30 Apr 2018 15:58:47 -0700 (PDT)
Received: from [192.168.8.102] ([181.203.105.125]) by smtp.gmail.com with ESMTPSA id f189sm6366144qkj.31.2018.04.30.15.58.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Apr 2018 15:58:46 -0700 (PDT)
From: John Bradley <ve7jtb@ve7jtb.com>
Message-Id: <2B100423-8427-4E02-BFBE-82FAEF873666@ve7jtb.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_EC645AAD-66EF-49E1-8501-462946674F8A"
Mime-Version: 1.0 (Mac OS X Mail 11.3 \(3445.6.18\))
Date: Mon, 30 Apr 2018 19:58:39 -0300
In-Reply-To: <CAEd-qYC2DA7oVDVTA7dbpeUuPVWOHFHYZFuLDtKZXs5T6B6M1A@mail.gmail.com>
Cc: Brian Campbell <bcampbell@pingidentity.com>, oauth <oauth@ietf.org>
To: Neil Madden <neil.madden@forgerock.com>
References: <CAGL6epK7X-jbO0c8GTxm2cAesYwU19R5_GsFY4tpUYxjW-MF_w@mail.gmail.com> <4D385B9E-AA8F-45B3-8C1D-C7B346FFA649@forgerock.com> <CA+k3eCRRUN0_+dVrRabjCrseV0C15wvKmY3jJQ4-eQqhZ2NUQQ@mail.gmail.com> <5758ae34-1d2d-4946-9190-7a2e2bc184d2@Canary> <9A56706A-5369-4F79-A8BB-74B15C37DFB9@ve7jtb.com> <CA+k3eCSTy7wqEOXxuoS4bCcQm=pfLTMMO+p4macVJ8p9wmfb7w@mail.gmail.com> <29445085-003F-45D4-A9E2-E23EFEE5A885@ve7jtb.com> <327DA0FA-96E4-4ECF-A7FF-AF6384B4D164@forgerock.com> <CA+k3eCQQU-7CjY8Rm0wEzi2xUr+TL1yeCtLCtbbJJm9ujHX2DA@mail.gmail.com> <CAANoGhL51NEFUcACvWNQqz8uFKLM3pE=gp_r=o0kSjjf=kRdkA@mail.gmail.com> <67CFD0C0-B5D9-4C85-BC53-87C582E93448@forgerock.com> <22823827-5743-4458-8C30-F5F386839630@ve7jtb.com> <CAEd-qYC2DA7oVDVTA7dbpeUuPVWOHFHYZFuLDtKZXs5T6B6M1A@mail.gmail.com>
X-Mailer: Apple Mail (2.3445.6.18)
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/F8tNDEO8WUojfzIRXss8AcGXvuc>
Subject: Re: [OAUTH-WG] WGLC on draft-ietf-oauth-mtls-07
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, 30 Apr 2018 22:58:53 -0000

We allow for new thumbprint algorithms to be defined and used with this spec.
I think that we all agree that is a good thing.

The question is if we should define them here or as part of JWT/CWT based on broader demand.

Including them in this document may be a distraction in my opinion.   There is no attack against SHA256 with a short duration token/key (days) that is better solved by using a long duration token/key (years) with a longer hash.

That said it woiulden't like me.  I just think it will distract people in the wrong direction.

John B.

> On Apr 30, 2018, at 7:23 PM, Neil Madden <neil.madden@forgerock.com> wrote:
> 
> Responses inline again. 
> 
> On Mon, 30 Apr 2018 at 19:44, John Bradley <ve7jtb@ve7jtb.com <mailto:ve7jtb@ve7jtb.com>> wrote:
> Inline.
> 
> 
>> On Apr 30, 2018, at 12:57 PM, Neil Madden <neil.madden@forgerock.com <mailto:neil.madden@forgerock.com>> wrote:
>> 
>> Hi John,
>> 
>>> On 30 Apr 2018, at 15:07, John Bradley <ve7jtb@ve7jtb.com <mailto:ve7jtb@ve7jtb.com>> wrote:
>>> 
>>> I lean towards letting new certificate thumbprints be defined someplace else.
>>> 
>>> With SHA256, it is really second preimage resistance that we care about for a certificate thumbprint, rather than simple collision resistance.  
>> 
>> That’s not true if you consider a malicious client. If I can find any pair of certificates c1 and c2 such that SHA256(c1) == SHA256(c2) then I can present c1 to the AS when I request an access token and later present c2 to the protected resource when I use it. I don’t know if there is an actual practical attack based on this, but a successful attack would violate the security goal implied by the draft: that that requests made to the protected resource "MUST be made […] using the same certificate that was used for mutual TLS at the token endpoint.”
>> 
>> NB: this is obviously easier if the client gets to choose its own client_id, as it can find the colliding certificates and then sign up with whatever subject ended up in c1.
>> 
> 
> Both C1 and C2 need to be valid certificates, so not just any collision will do.  
> 
> That doesn’t help much. There’s still enough you can vary in a certificate to generate collisions. 
> 
> If the client produces C1 and C2 and has the private keys for them, I have a hard time seeing what advantage it could get by having colliding certificate hashes.
> 
> Me too. But if the security goal is proof of possession, then this attack (assuming practical collisions) would break that goal. 
> 
> 
> If the AS is trusting a CA, the attacker producing a certificate that matches the hash of another certificate so that it seems like the fake certificate was issued by the CA, is an attack that worked on MD5 given some predictability.  That is why we now have entropy requirements for certificate serial numbers, that reduce known prefix attacks.
> 
> The draft allows for self-signed certificates. 
> 
> Second-preimage Resistance is being computationaly infusible to find a second preimage that has the same output as the first preimage.   The second preimage strength for SHA256 is 201-256bits and collision resistance strength is 128 bits.  See Appendix A of https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-107r1.pdf <https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-107r1.pdf> if you want to understand the relationship between message length and second Preimage resistance.
> 
> RFC 4270 is old but still has some relevant info. https://tools.ietf.org/html/rfc4270 <https://tools.ietf.org/html/rfc4270>
> 
> Think of the confirmation method as the out of band integrity check for the certificate that is presented in the TLS session.
> 
> This is all largely irrelevant. 
> 
>>> MD5 failed quite badly with chosen prefix collision attacks against certificates (Thanks to some X.509 extensions).
>>> SHA1 has also been shown to be vulnerable to a PDF chosen prefix attack (http://shattered.io <http://shattered.io/>)
>>> 
>>> The reason NIST pushed for development of SHA3 was concern that a preimage attack might eventually be found agains the SHA2 family of hash algorithms. 
>>> 
>>> While SHA512 may have double the number of bytes it may not help much against a SHA2 preimage attack,. (Some papers  suggest that the double word size of SHA512 it may be more vulnerable than SHA256 to some attacks)
>> 
>> This is really something where the input of a cryptographer would be welcome. As far as I am aware, the collision resistance of SHA-256 is still considered at around the 128-bit level, while it is considered at around the 256-bit level for SHA-512. Absent a total break of SHA2, it is likely that SHA-512 will remain at a higher security level than SHA-256 even if both are weakened by cryptanalytic advances. They are based on the same algorithm, with different parameters and word/block sizes.
>> 
> 
> SHA512 uses double words and more rounds, true.  It also has more rounds broken by known attacks than SHA256 https://en.wikipedia.org/wiki/SHA-2 <https://en.wikipedia.org/wiki/SHA-2>.. So it is slightly more complex than doubling the output size doubles the strength.
> 
> SHA-512 also has more rounds (80) than SHA-256 (64), so still has more rounds left to go...
> 
> 
>>> 
>>> It is currently believed that SHA256 has 256 bits of second preimage strength.   That could always turn out to be wrong as SHA2 has some similarities to SHA1, and yes post quantum that is reduced to 128bits. 
>>> 
>>> To have a safe future option we would probably want to go with SHA3-512.   However I don’t see that getting much traction in the near term.  
>> 
>> SHA3 is also slower than SHA2 in software.
> 
> Yes roughly half the speed in software but generally faster in hardware.  
> 
> I am not necessarily arguing for SHA3, rather I think this issue is larger than this spec and selecting alternate hashing algorithms for security should be separate from this spec.
> 
> I am for agility, but I don’t want to accidentally have people doing something that is just theatre.
> 
> Rotating certificates, and having the lifetime of a certificates validity is as useful as doubling the hash size. 
> 
> Why not allow both? 
> 
> 
> I don’t think the confirmation hash length is the weakest link.
> 
> Shouldn’t we allow all the parts to be as strong as possible?
> 
> 
> John B.
> 
>> 
>>> 
>>> Practical things people should do run more along the lines of:
>>> 1: Put at least 64 bits of entropy into the certificate serial number if using self signed or a local CA.  Commercial CA need to do that now.
>>> 2: Rotate certificates on a regular basis,  using a registered JWKS URI
>>> 
>>> My concern is that people will see a bigger number and decide it is better if we define it in the spec.  
>>> We may be getting people to do additional work and increasing token size without a good reason by putting it in the spec directly.
>> 
>> I’m not sure why this is a concern. As previously pointed out, SHA-512 is often *faster* than SHA-256, and an extra 32 bytes doesn’t seem worth worrying about.
>> 
>> [snip]
>> 
>> — Neil
> — Neil