Return-Path: <ktsuzuku@yahoo-corp.jp>
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 3FA8C3A0CB7
 for <oauth@ietfa.amsl.com>; Wed,  3 Jun 2020 00:31:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level: 
X-Spam-Status: No, score=-2.098 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, HTML_MESSAGE=0.001,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001]
 autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key)
 header.d=yahoo-corp.jp header.b=AKdqzv3t;
 dkim=pass (1024-bit key)
 header.d=yjcorp.onmicrosoft.com header.b=S2xU/CrS
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 Yyu0WmINK2em for <oauth@ietfa.amsl.com>;
 Wed,  3 Jun 2020 00:31:02 -0700 (PDT)
Received: from obrelay01.is.bbt.yahoo.co.jp (obrelay01.is.bbt.yahoo.co.jp
 [182.22.8.164])
 (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 ED5883A0CB4
 for <oauth@ietf.org>; Wed,  3 Jun 2020 00:31:01 -0700 (PDT)
Received: from corp-ob06.is.ssk.ynwp.yahoo.co.jp
 (corp-ob06.is.ssk.ynwp.yahoo.co.jp [182.22.89.23])
 by obrelay01.is.bbt.yahoo.co.jp (Mailer-Daemon) with ESMTP id 0537Uxa1018531
 for <oauth@ietf.org>; Wed, 3 Jun 2020 16:30:59 +0900
Received: from yjwex2drcas02.yjoffice.local (yjwex2casdr02.is.kks.yahoo.co.jp
 [172.22.63.28])
 by corp-ob06.is.ssk.ynwp.yahoo.co.jp (Postfix) with ESMTP id 14EF9120067
 for <oauth@ietf.org>; Wed,  3 Jun 2020 16:30:59 +0900 (JST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo-corp.jp;
 s=default; t=1591169459;
 bh=nLBql/djBtu/gEmo1qXKNiMuEmaTiqVU8Q+B2YPh1Zw=;
 h=From:To:Subject:Date:References:In-Reply-To;
 b=AKdqzv3tTvRDyl8Gx4P5MVORVvoLYuy+LGv/yCm9B0CbHglbRUVFY3PzBkcTSBIGa
 XATyqi8WAqLmyQ6b7ari2Gx+/G97hX1V19zHlHNsuU16SkEWMK5o7FjL2NMiAi5F2G
 EE6C/g9waMab4ZjgmspQur/vjiB0vBhqkpWguH+8=
Received: from yjwex2drmbx01.yjoffice.local (172.22.63.31) by
 yjwex2drcas02.yjoffice.local (172.22.63.28) with Microsoft SMTP Server (TLS)
 id 15.0.1473.3; Wed, 3 Jun 2020 16:30:58 +0900
Received: from yjwex2drcas01.yjoffice.local (172.22.63.27) by
 yjwex2drmbx01.yjoffice.local (172.22.63.31) with Microsoft SMTP Server (TLS)
 id 15.0.1473.3; Wed, 3 Jun 2020 16:30:58 +0900
Received: from yjwex2edge02.yjoffice.local (103.2.245.142) by
 yjwex2drcas01.yjoffice.local (172.22.63.26) with Microsoft SMTP Server id
 15.0.1473.3 via Frontend Transport; Wed, 3 Jun 2020 16:30:58 +0900
Received: from APC01-HK2-obe.outbound.protection.outlook.com (104.47.124.52)
 by yjwex2edge02.yahoo-corp.jp (103.2.245.142) with Microsoft SMTP Server
 (TLS) id 15.0.1473.3; Wed, 3 Jun 2020 16:29:22 +0900
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=EmV3kK/oFLo90YJCxXys/gKi+UqDaU9hJFjk9f9v3ka53MQheeHin0cJDu6mZb87EicKp/u7OLJ2UxebQI7wkAS/aeGWbMy+w7Yr6PCgcH2yXcUNH7CC/q4DcfropFrlit9rVt53KlgY+h3LkEaobgonUPyiSXB3QiddRcUKwCXp0yBD1c1qf6/FyjJeoKk6fHN+snwln+dQgGBJBRrbUi1SrB/L/AtiOVd165Sjp1qqM52yL4MbQyESmG+tCt1mtdQBZweHIxlGQgVHHqxwadkEOGa0+2ULI2t+UK4qFzTBv5Fkk8TbpV9RPaxj6JVuK1GTMhagNdpacU8wTNmDWA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=nLBql/djBtu/gEmo1qXKNiMuEmaTiqVU8Q+B2YPh1Zw=;
 b=oeqY/hoPuPgLkzUGIBrKnaug9GLTxsS67G19BSCH3ptTiyBQkynIxC3E6ZLCTymQ6eh2lWDHeTlhSP5nfpV5Oow/i1ErnlK1sXUmV03+mG2AaxFewXfh+rQInpbUsDTEeIgmNI8SdMl5LMXG2HTT4TFyNnue1iDpxQqfvnzceapgf6vy7Oter+VznkkBNQBhqfol8BXg9HWvXal5RuZ2nP66ZCHHWJZQNjnC0OhyNgmO5kl9GUXHl5B/1uTQrz54F2/pz8d6tmCqFanCbHrJMo0yh0ephKefDfwIU5pSZYKlfJyEZFbAyIio684L317ovF0k1bHdHb7ikXZ0gW80WA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=yahoo-corp.jp; dmarc=pass action=none
 header.from=yahoo-corp.jp; dkim=pass header.d=yahoo-corp.jp; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=yjcorp.onmicrosoft.com; s=selector1-yjcorp-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=nLBql/djBtu/gEmo1qXKNiMuEmaTiqVU8Q+B2YPh1Zw=;
 b=S2xU/CrS9KeDsILnoWqjP6WIemeJ52Y5h1h+/npHxhUR3sndT7Dyv1Mdi0+venESJB4/Uwxn+j2tJ/i+MUbPFHP111UDlK0crhl5mBlVv27kqtlPz3swWfusHq2qvPTZEzIwRpUHaST5hPbXVhSvilvHjV7etAj2YQkfUmjjdao=
Received: from TY2PR01MB4700.jpnprd01.prod.outlook.com (2603:1096:404:10c::13)
 by TY2PR01MB2954.jpnprd01.prod.outlook.com (2603:1096:404:74::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.18; Wed, 3 Jun
 2020 07:30:56 +0000
Received: from TY2PR01MB4700.jpnprd01.prod.outlook.com
 ([fe80::fd94:5815:78a0:b1f9]) by TY2PR01MB4700.jpnprd01.prod.outlook.com
 ([fe80::fd94:5815:78a0:b1f9%6]) with mapi id 15.20.3066.018; Wed, 3 Jun 2020
 07:30:56 +0000
From: Kazuki Tsuzuku <ktsuzuku@yahoo-corp.jp>
To: "oauth@ietf.org" <oauth@ietf.org>
Thread-Topic: [OAUTH-WG] Downgrade attacks on PKCE
Thread-Index: AQHWOWp55OcPG6IcEUS6ob+YhLP7N6jGfOLD
Date: Wed, 3 Jun 2020 07:30:56 +0000
Message-ID: <TY2PR01MB4700C38A9557DA97E025421595880@TY2PR01MB4700.jpnprd01.prod.outlook.com>
References: <TY2PR01MB4700B388769E725EC2A7D8A095880@TY2PR01MB4700.jpnprd01.prod.outlook.com>
In-Reply-To: <TY2PR01MB4700B388769E725EC2A7D8A095880@TY2PR01MB4700.jpnprd01.prod.outlook.com>
Accept-Language: ja-JP, en-US
Content-Language: ja-JP
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
authentication-results: ietf.org; dkim=none (message not signed)
 header.d=none;ietf.org; dmarc=none action=none header.from=yahoo-corp.jp;
x-originating-ip: [211.14.29.147]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 6fddb812-4922-4920-4113-08d807900e10
x-ms-traffictypediagnostic: TY2PR01MB2954:
x-microsoft-antispam-prvs: <TY2PR01MB2954B9A7117F796105ED0CC495880@TY2PR01MB2954.jpnprd01.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 04238CD941
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: hiVX+yvLrashU0K2q+wTekF0tL7O+IViwVwlqwY0tEX2WAnE3n11THHPQeq93nhFd5Xry9seqCarm3SmtLD7It0GqYAaiZgMvFVA2oUGKKKLbXD6oZhrYMppk9VfMgWsloK+8qG8D8JzpS0VDrFBztxXDiUjQgTFnWx0d40IBhnR0ONlRQeqEENKX4QfjH/Eu7d9Q8v3eBcJs4qeWL6T97jIxnWWDDvHbDw4zWUd5mFdGNNkrWTu5QQoYPcXpfmbymgIRVRkt8cUZWl+G3wWoTEmDTrBG5kbEH9h9cmx1n+yrlSZ4wroCDYIdXarP9SsK6yWWMmlaERxLtU++3/9i7VqbT8S6f1zNGLa3Aj+D+bBzYBTATilCQv7IDnnO97jEio9oYiU/iNEFjsWXlvHWw==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; 
 IPV:NLI; SFV:NSPM;
 H:TY2PR01MB4700.jpnprd01.prod.outlook.com; PTR:; CAT:NONE; 
 SFTY:;
 SFS:(4636009)(366004)(376002)(346002)(396003)(136003)(39860400002)(186003)(86362001)(2940100002)(8936002)(55016002)(26005)(966005)(6916009)(316002)(19627405001)(6506007)(7696005)(8676002)(9686003)(53546011)(85182001)(478600001)(66476007)(66556008)(166002)(66446008)(66946007)(71200400001)(33656002)(76116006)(52536014)(83380400001)(64756008)(5660300002)(83080400001)(2906002);
 DIR:OUT; SFP:1102; 
x-ms-exchange-antispam-messagedata: CXdC3D18fLjIOGkGXL/HmhhTQcYIE0jobEUIWKb3/C0zfR7o4f8RC6fO7Ns7waCir32CC0UsmhiWX0uMK7+phYjMIGaQgT7xG6d+8cqsbujRDyVrQ5C4HJtGByxmo+SpDfac/oP+z0Hd+k6FOMFd0svG5NJBOQ8TxUpkSV9SLoeLTcGp0fIU6AR4V6it8+UZOMB0WKO9jTQJRRfdhvIIaengWowSwfEcXawogUD1qT4AMK6y+aKv1Re3y3+Fa/fbSDASukRAQBQxBtEFDPQYVesaM/Nt3TH1iRiSAjWheB1pmm5vr2w33Ch7c/ufOEI7rh3Y5a4p60o1H14HUe+y7wGeYzA1nDFpY2AmjFY0FXCCoX7PfU0Y5mX/+i8pEwtWqXSDJS4iQ1JKxHt7ptfDhP4Rf9ySPDfSRPlPqEkTuyTUtEz7+QGaL4UZzT/hS6HIHSGN+lJ3WqhwbjY0BZ7E/T4zKEwizM9IcI3bDnFUmTg=
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative;
 boundary="_000_TY2PR01MB4700C38A9557DA97E025421595880TY2PR01MB4700jpnp_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 6fddb812-4922-4920-4113-08d807900e10
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jun 2020 07:30:56.5286 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: a208d369-cd4e-4f87-b119-98eaf31df2c3
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: OENxltm+THx/wqYraEHEXF3VmRXMMxbTkQL5jow2M92GB8/hxESEg59PFXwcGlvk7p0q/UI7jZJN0F7kAgF8xg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY2PR01MB2954
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/DGR4b6kJ2hwX8mhvLpPg7sVKUAs>
Subject: Re: [OAUTH-WG] Downgrade attacks on PKCE
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.29
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: Wed, 03 Jun 2020 07:31:05 -0000

--_000_TY2PR01MB4700C38A9557DA97E025421595880TY2PR01MB4700jpnp_
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: quoted-printable

We(Yahoo! JAPAN) agree with option 2.

Option 1 is not realistic for us as an IdP with thousands of clients becaus=
e it will force them to change implementations.
Also, we already implemented 2 and it was not complicated.

Kazuki Tsuzuku

> On 30 May 2020, at 08:58, Daniel Fett <fett@danielfett.de> wrote:
>
> Hi all,
>
> Aaron, Dick, Torsten and I today discussed the downgrade attacks on PKCE =
[1] and how to mitigate them in OAuth 2.1 and 2.0. We came to the conclusio=
n that we have two options:
>
> 1. "Static" Solution
>
> For every client_id that is registered with an AS, the AS MUST either alw=
ays enforce the use of PKCE or always enforce the use of nonce. Whether PKC=
E or nonce is enforced can be part of the client registration or configured=
 in other ways.
>
> In other words: A single client is not allowed to switch between using PK=
CE and using nonce.
>
> Note that the client is allowed to use the respective other mechanism on =
top of the enforced one.
>
> Properties:
> Easy to understand mitigation.
> Implementation is mainly a new data field and a check in the authorizatio=
n request.
> Not compatible to deployments where clients sometimes use nonce and somet=
imes use PKCE with the same client_id.
> 2. "Dynamic" Solution
>
> Each AS that supports PKCE MUST check whether a code challenge is contain=
ed in the authorization request. This information MUST be bound to the code=
 that is issued.
>
> When a code arrives at the token endpoint, the AS MUST do the following c=
heck:
>
> If there was a code_challenge in the authorization request for which this=
 code was issued, there must be a code_verifier in the token request and it=
 must be verified according to RFC7636. (This is no change from the current=
 behavior in RFC7636.)
> If there was no code_challenge in the authorization request, any request =
to the token endpoint containing a code_verifier MUST be rejected.
> Properties:
>
> No change in behavior needed for properly implemented clients. Backwards =
compatible for all existing deployments.
> Implementation is mainly some logic for the authorization endpoint, token=
 endpoint, and a new data field in the authorization session maintained by =
the AS.
> Slightly more complex to implement for the AS, maybe.
> We would like to hear the feedback from the working group on these two so=
lutions before proceeding to propose wording for the affected documents.
>
> [1] https://danielfett.de/2020/05/16/pkce-vs-nonce-equivalent-or-not/ <ht=
tps://danielfett.de/2020/05/16/pkce-vs-nonce-equivalent-or-not/>
>
> -Daniel
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org
> https://www.ietf.org/mailman/listinfo/oauth

--_000_TY2PR01MB4700C38A9557DA97E025421595880TY2PR01MB4700jpnp_
Content-Type: text/html; charset="iso-2022-jp"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-2022-=
jp">
<style type=3D"text/css" style=3D"display:none;"> P {margin-top:0;margin-bo=
ttom:0;} </style>
</head>
<body dir=3D"ltr">
<div style=3D"font-family: Calibri, Arial, Helvetica, sans-serif; font-size=
: 12pt; color: rgb(0, 0, 0);">
We(Yahoo! JAPAN) agree with option 2.<br>
</div>
<div>
<div style=3D"font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12p=
t; color:rgb(0,0,0)">
<span><br>
</span>
<div>Option 1 is not realistic for us as an IdP with thousands of clients b=
ecause it will force them to change implementations.<br>
</div>
<span>Also, we already implemented 2 and it was not complicated.</span><br>
</div>
<div style=3D"font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12p=
t; color:rgb(0,0,0)">
<span><br>
</span></div>
<div style=3D"font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12p=
t; color:rgb(0,0,0)">
<span>Kazuki Tsuzuku</span></div>
<div style=3D"font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12p=
t; color:rgb(0,0,0)">
<span><br>
</span></div>
<div style=3D"font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12p=
t; color:rgb(0,0,0)">
<span>&gt; On 30 May 2020, at 08:58, Daniel Fett &lt;fett@danielfett.de&gt;=
 wrote:<br>
</span>
<div>&gt; <br>
</div>
<div>&gt; Hi all,<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; Aaron, Dick, Torsten and I today discussed the downgrade attacks =
on PKCE [1] and how to mitigate them in OAuth 2.1 and 2.0. We came to the c=
onclusion that we have two options:<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; 1. &quot;Static&quot; Solution<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; For every client_id that is registered with an AS, the AS MUST ei=
ther always enforce the use of PKCE or always enforce the use of nonce. Whe=
ther PKCE or nonce is enforced can be part of the client registration or co=
nfigured in other ways.<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; In other words: A single client is not allowed to switch between =
using PKCE and using nonce.<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; Note that the client is allowed to use the respective other mecha=
nism on top of the enforced one.<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; Properties:<br>
</div>
<div>&gt; Easy to understand mitigation.<br>
</div>
<div>&gt; Implementation is mainly a new data field and a check in the auth=
orization request.<br>
</div>
<div>&gt; Not compatible to deployments where clients sometimes use nonce a=
nd sometimes use PKCE with the same client_id.
<br>
</div>
<div>&gt; 2. &quot;Dynamic&quot; Solution<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; Each AS that supports PKCE MUST check whether a code challenge is=
 contained in the authorization request. This information MUST be bound to =
the code that is issued.<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; When a code arrives at the token endpoint, the AS MUST do the fol=
lowing check:<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; If there was a code_challenge in the authorization request for wh=
ich this code was issued, there must be a code_verifier in the token reques=
t and it must be verified according to RFC7636. (This is no change from the=
 current behavior in RFC7636.)<br>
</div>
<div>&gt; If there was no code_challenge in the authorization request, any =
request to the token endpoint containing a code_verifier MUST be rejected.<=
br>
</div>
<div>&gt; Properties:<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; No change in behavior needed for properly implemented clients. Ba=
ckwards compatible for all existing deployments.<br>
</div>
<div>&gt; Implementation is mainly some logic for the authorization endpoin=
t, token endpoint, and a new data field in the authorization session mainta=
ined by the AS.<br>
</div>
<div>&gt; Slightly more complex to implement for the AS, maybe.<br>
</div>
<div>&gt; We would like to hear the feedback from the working group on thes=
e two solutions before proceeding to propose wording for the affected docum=
ents.<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; [1] https://danielfett.de/2020/05/16/pkce-vs-nonce-equivalent-or-=
not/ &lt;https://danielfett.de/2020/05/16/pkce-vs-nonce-equivalent-or-not/&=
gt;<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; -Daniel<br>
</div>
<div>&gt; <br>
</div>
<div>&gt; _______________________________________________<br>
</div>
<div>&gt; OAuth mailing list<br>
</div>
<div>&gt; OAuth@ietf.org<br>
</div>
<span>&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/oauth" id=3D"LP=
NoLP794378">https://www.ietf.org/mailman/listinfo/oauth</a></span><br>
</div>
<div>
<div id=3D"Signature">
<div id=3D"divtagdefaultwrapper" dir=3D"ltr" style=3D"font-size:12pt; color=
:#000000; font-family:Calibri,Arial,Helvetica,sans-serif">
<p style=3D"margin-top: 0px; margin-bottom: 0px;margin-top:0px; margin-bott=
om:0px">
</p>
</div>
</div>
</div>
</div>
</body>
</html>

--_000_TY2PR01MB4700C38A9557DA97E025421595880TY2PR01MB4700jpnp_--

