Re: [OAUTH-WG] SPOP: Code Challenge Discussion

Hannes Tschofenig <hannes.tschofenig@gmx.net> Thu, 04 December 2014 09:50 UTC

Return-Path: <hannes.tschofenig@gmx.net>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EC0951A0117 for <oauth@ietfa.amsl.com>; Thu, 4 Dec 2014 01:50:05 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.71
X-Spam-Level:
X-Spam-Status: No, score=-0.71 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FROM=0.001, J_CHICKENPOX_45=0.6, J_CHICKENPOX_46=0.6, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=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 Uwy8nXbqc8Dv for <oauth@ietfa.amsl.com>; Thu, 4 Dec 2014 01:50:03 -0800 (PST)
Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0F6CE1A0145 for <oauth@ietf.org>; Thu, 4 Dec 2014 01:50:03 -0800 (PST)
Received: from [192.168.131.134] ([80.92.119.109]) by mail.gmx.com (mrgmx003) with ESMTPSA (Nemesis) id 0MSduu-1YNznI3whg-00RZnp; Thu, 04 Dec 2014 10:50:01 +0100
Message-ID: <54802E48.4050509@gmx.net>
Date: Thu, 04 Dec 2014 10:50:00 +0100
From: Hannes Tschofenig <hannes.tschofenig@gmx.net>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0
MIME-Version: 1.0
To: Bill Mills <wmills_92105@yahoo.com>, "oauth@ietf.org" <oauth@ietf.org>
References: <547EF145.5030501@gmx.net> <778679063.4544892.1417630207273.JavaMail.yahoo@jws10617.mail.bf1.yahoo.com>
In-Reply-To: <778679063.4544892.1417630207273.JavaMail.yahoo@jws10617.mail.bf1.yahoo.com>
OpenPGP: id=4D776BC9
Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="hk6IKx51xkWbsTD9gisxViIxTg27NKg17"
X-Provags-ID: V03:K0:WqFYAO07FuhyF/BLzYwXe9108j3FBqNRFxMdEJ0h49ReEAjEsw2 KOHPIBS/pMSPmP8ZXJdmPdNkt6QqEwZCB78L5LEXr2ja57H2RDxrcCkxUpSBqVMegpTa/QY MORIH4hD1hYL91ma1efoOnu+APFmBv2zVAU/2FcMyyyGmXNNsev+jeR0UfTtSQVJHlDIFl8 c2l8tKiCpa/lTmwhkajBQ==
X-UI-Out-Filterresults: notjunk:1;
Archived-At: http://mailarchive.ietf.org/arch/msg/oauth/uudu9Vs5skmQr9wu1zyAHDcWG6A
Subject: Re: [OAUTH-WG] SPOP: Code Challenge Discussion
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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: Thu, 04 Dec 2014 09:50:06 -0000

Hi Bill,

I actually wasn't quite sure what this sentence meant.

What I want is that the input to the hash is a 128-bit (or larger)
random number. The output will be determined by the hash function and,
in case of SHA-256 (as suggested in the document) that output will be
32-octets.

Ciao
Hannes


On 12/03/2014 07:10 PM, Bill Mills wrote:
> Quoting from 7.1 
> 
> "It is RECOMMENDED that the output of a suitable random number 
> generatorbe used to create a 32-octet sequence."
> 
> So the spec is already recommending 256 bits of randomness, is that
> language not clear enough?
> 
> 
> On Wednesday, December 3, 2014 3:17 AM, Hannes Tschofenig
> <hannes.tschofenig@gmx.net> wrote:
> 
> 
> Hi all,
> 
> I am trying to figure out how to progress the SPOP document and
> therefore I read through the discussion about the code challenge, see
> 
> I wanted to share my view about this topic.
> 
> As a summary, the mechanism works as follows:
> 
> C: Compute code_verifier:=rand()
> C: Compute code_challenge:=func(code_verifier)
> 
> (For this discussion, the function func() is SHA-256.)
> 
> C: Send(Authz Request + code_challenge,S)
> 
> S: store code_challenge
> S: Send(Authz Grant,C)
> 
> C: Send(Access Token Request || code_verifier, S)
> 
> S: Compute code_challenge':=func(code_verifier)
> S: IF (code_challenge'==code_challenge) THEN SUCCESS ELSE FAIL.
> 
> The document currently does not say how much entropy the random number
> has to have.
> 
> The text only talks about the output size and SHA-256 indeed produces a
> 256 bit output.
> 
> Here is the relevant text:
> 
> "
>   NOTE: code verifier SHOULD have enough entropy to make it impractical
>   to guess the value.  It is RECOMMENDED that the output of a suitable
>   random number generator be used to create a 32-octet sequence.
> "
> 
> I suggest to recommend at least 128 bits, which is inline with the
> recommendations for symmetric ciphers in
> http://tools.ietf.org/html/draft-ietf-uta-tls-bcp-07
> 
> I would also suggest to reference RFC 4086 concerning the creation of
> random numbers.
> 
> Furthermore, since you allow other hash functions to be used as well it
> would be good to give guidance about what the properties of those hash
> functions should be. You definitely want a cryptographic hash function
> that provides pre-image resistance, second pre-image resistance, and
> collision resistance.
> 
> Given the size of the input and output it is impractical to compute a
> table that maps code_verifies to code_challenges.
> 
> This mechanism provides better properties than the "plain" mechanism
> since it deals with an attacker that can see responses as well as
> requests (but cannot modify them). It does not provide any protection
> against a true man-in-the-middle attacker.
> 
> Ciao
> Hannes
> 
> 
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org <mailto:OAuth@ietf.org>
> https://www.ietf.org/mailman/listinfo/oauth
> 
>