Re: [OAUTH-WG] mistake in draft-ietf-oauth-v2-http-mac-01

"Richer, Justin P." <jricher@mitre.org> Fri, 10 August 2012 14:38 UTC

Return-Path: <jricher@mitre.org>
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 EF57421F8678 for <oauth@ietfa.amsl.com>; Fri, 10 Aug 2012 07:38:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.567
X-Spam-Level:
X-Spam-Status: No, score=-6.567 tagged_above=-999 required=5 tests=[AWL=0.032, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id LtPbIMgOlEh8 for <oauth@ietfa.amsl.com>; Fri, 10 Aug 2012 07:38:06 -0700 (PDT)
Received: from smtpksrv1.mitre.org (smtpksrv1.mitre.org [198.49.146.77]) by ietfa.amsl.com (Postfix) with ESMTP id 387D321F8568 for <oauth@ietf.org>; Fri, 10 Aug 2012 07:38:06 -0700 (PDT)
Received: from smtpksrv1.mitre.org (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with SMTP id 3566721B05B0; Fri, 10 Aug 2012 10:38:05 -0400 (EDT)
Received: from IMCCAS03.MITRE.ORG (imccas03.mitre.org [129.83.29.80]) by smtpksrv1.mitre.org (Postfix) with ESMTP id 1E58821B043D; Fri, 10 Aug 2012 10:38:05 -0400 (EDT)
Received: from IMCMBX01.MITRE.ORG ([169.254.1.151]) by IMCCAS03.MITRE.ORG ([129.83.29.80]) with mapi id 14.02.0309.002; Fri, 10 Aug 2012 10:38:04 -0400
From: "Richer, Justin P." <jricher@mitre.org>
To: Hannes Tschofenig <hannes.tschofenig@gmx.net>
Thread-Topic: [OAUTH-WG] mistake in draft-ietf-oauth-v2-http-mac-01
Thread-Index: AQHNdsaCSF2cG8V1/E2FdFvBUY4SypdTYP+A
Date: Fri, 10 Aug 2012 14:38:03 +0000
Message-ID: <B33BFB58CCC8BE4998958016839DE27E067DF34F@IMCMBX01.MITRE.ORG>
References: <CAOKdZ1dzVcKBDt6CSLuHwc4NzUVd_hUMWdpJVS6=ncdJo05=UQ@mail.gmail.com> <502280D8.40708@mitre.org> <9AD4EEF7-6187-4A4F-A855-32819BCB8321@gmx.net> <5022D344.40600@mitre.org> <EEBC9705-16C0-4697-8F38-28660C3CB553@ve7jtb.com> <5023CC18.9090809@mitre.org> <1344531175.4871.YahooMailNeo@web31812.mail.mud.yahoo.com> <3940317E-948C-4909-9B8F-2689A6B8D4EB@gmail.com> <1344534823.39489.YahooMailNeo@web31801.mail.mud.yahoo.com> <5B59B739-F8E7-4F5A-A39C-8C46055D0E98@ve7jtb.com> <1344537819.41154.YahooMailNeo@web31803.mail.mud.yahoo.com> <50241165.40209@mitre.org> <047A5679-FE6B-4EF4-8D43-A3372B928F05@gmx.net>
In-Reply-To: <047A5679-FE6B-4EF4-8D43-A3372B928F05@gmx.net>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [172.31.36.81]
Content-Type: text/plain; charset="us-ascii"
Content-ID: <2536DA04C1FE1844B1057799939326E1@imc.mitre.org>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: "<oauth@ietf.org>" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] mistake in draft-ietf-oauth-v2-http-mac-01
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.12
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: Fri, 10 Aug 2012 14:38:10 -0000

On Aug 10, 2012, at 3:05 AM, Hannes Tschofenig wrote:

> Hi Justin, 
> 
> thanks for the feedback. Comments below. 

Sure thing, I think that use cases are very important to enumerate. I think the fact that several people in the WG are coming forward and saying "Yes I have use cases for this" is very telling that this is an important problem to solve.

> 
> On Aug 9, 2012, at 10:37 PM, Justin Richer wrote:
> 
>> Use case #2: signature protection over plain HTTP parameters
>> 
>> MAC gives us message-level signing in a way that doesn't require all the parameters to be packed into an extra structure, like JWT/SAML do. TLS gives no application-layer verification of integrity of parameters, nor does it give you the ability to know who presented those parameters (unless you're doing mutual TLS, which nobody does). MAC gives you a fairly simple way to protect all parameters on a call to the resource server while still keeping all of those parameters in their native HTTP forms.
>> 
> 
> First, we have to assume as a starting point that we have bearer. So, assuming that there is actually plain HTTP for the communication between the client and the resource server does not exist. 

I'm confused here -- what exactly do you mean by this statement?

> 
> TLS does indeed not give the ability for the resource server to know who the client is. Client authentication would do that. 
> Btw, the MAC draft does not allow the client to be authenticated. 

TLS mutual auth doesn't let you express the full context that comes with an OAuth token. 

> 
> The MAC token does not protect all the parameters in the message. In fact, it protects only very, very few!

Which is why we need to update and fix it! I never said that MAC was *done*, just that it's a pretty good starting point and we shouldn't ignore it. This is the point that Bill was making, too, if I read it right.

> 
> TLS is an application layer protocol (it runs on top of TCP) and protects the integrity and the confidentiality of the parameters in an end-to-end fashion. However, as others have noted the end on the server side may be a load balancer in case a system administrator has intentionally decided to terminate all secure traffic there. Saying that MAC would then be "more e2e" may be true unless the administrator has again decided to terminate it also at the load balancer (which may not be completely unlikely). 

Load balancers and performance are a red herring and are distracting this conversation. There are other reasons to have message-level signing. Not everything is a single point-to-point HTTP transaction that TLS assumes. In such multi-hop scenarios, TLS can protect things on the wire but not within the components that can read and forward it, such as in use case #3 below.

> 
>> 
>> Use case #3: generic signed HTTP fetch (not directly addressed by MAC spec as of today)
>> 
>> Sometimes you want to create a URL with one service, fix all of the parameters in that URL, and protect those parameters with a signature. Then that URL can be passed to an untrusted service who cannot modify any portion of it. Nor can they re-use the signature portion to protect different parameters. We do this today with a 2-legged OAuth signature across a service URL. The "Client" generates the signed URLs and passes them to a user agent which actually does the fetch to the service.
>> 
>> 
> (I personally would have even liked to get rid of the 2-legged OAuth use cases). 

There are many, many important use cases that use the two legged pattern, and many, many people use them today in both OAuth1 (which never specified them) and OAuth2 (which finally embraced them as valid). They're not going away.

> 
> I think that this use case is again a bit different from what we have been talking about so far. Maybe you want to compile an Internet draft so that we have more details to assess the security properties better. 
> 

Yes it is, but it can be covered by the same solution set with some minor changes. Like I said, it's not directly covered by the MAC draft right now. 



I have other scenarios that have message-level signing as a stated requirement, full stop. I'd like to be able to use OAuth machinery to fulfill this.

 -- Justin

> Ciao
> Hannes
> 
>> -- Justin
>> 
>> On 08/09/2012 02:43 PM, William Mills wrote:
>>> OK, I'll play and start documenting the use cases.  
>>> 
>>> Use case #1: Secure authentication in plain text connections:
>>> 
>>> Some applications need a secure form authorization, but do not want or need the overhead of encrypted connections.  HTTP cookies and their ilk are replayable credentials and do not satisfy this need.   the MAC scheme using signed HTTP authorization credentials offer the capability to securely authorize a transaction, can offer integrity protection on all or part of an HTTP request, and can provide replay protection.
>>> 
>>> -bill
>>> 
>>> From: John Bradley <ve7jtb@ve7jtb.com>
>>> To: William Mills <wmills_92105@yahoo.com> 
>>> Cc: Dick Hardt <dick.hardt@gmail.com>; "oauth@ietf.org" <oauth@ietf.org> 
>>> Sent: Thursday, August 9, 2012 11:26 AM
>>> Subject: Re: [OAUTH-WG] mistake in draft-ietf-oauth-v2-http-mac-01
>>> 
>>> In Vancouver the question was asked about the future of the MAC spec due to it no linger having a editor.                
>>> 
>>> The Chair and AD indicated a desire to have a document on the use-cases we are trying to address before deciding on progressing MAC or starting a new document.
>>> 
>>> Phil Hunt is going to put together a summery of the Vancouver discussion and we are going to work on the use-case/problem description document ASAP.
>>> 
>>> People are welcome to contribute to the use-case document.
>>> 
>>> Part of the problem with MAC has been that people could never agree on what it was protecting against.  
>>> 
>>> I think there is general agreement that one or more proof mechanisms are required for access tokens.
>>> Security for the token endpoint also cannot be ignored. 
>>> 
>>> 
>>> John B.
>>> 
>>> On 2012-08-09, at 1:53 PM, William Mills wrote:
>>> 
>>>> MAC fixes the signing problems encountered in OAuth 1.0a, yes there are libraries out there for OAuth 1.0a.  MAC fits in to the OAuth 2 auth model and will provide for a single codepath for sites that want to use both Bearer and MAC.
>>>> 
>>>> From: Dick Hardt <dick.hardt@gmail.com>
>>>> To: William Mills <wmills_92105@yahoo.com> 
>>>> Cc: "oauth@ietf.org" <oauth@ietf.org> 
>>>> Sent: Thursday, August 9, 2012 10:27 AM
>>>> Subject: Re: [OAUTH-WG] mistake in draft-ietf-oauth-v2-http-mac-01
>>>> 
>>>> 
>>>> On Aug 9, 2012, at 9:52 AM, William Mills wrote:
>>>> 
>>>>> I find the idea of starting from scratch frustrating.  MAC solves a set of specific problems and has a well defined use case.  It's symmetric key based which doesn't work for some folks, and the question is do we try to develop something that supports both PK and SK, or finish the SK use case and then work on a PK based draft.
>>>>> 
>>>>> I think it's better to leave them separate and finish out MAC which is *VERY CLOSE* to being done.
>>>> 
>>>> Who is interested in MAC? People can use OAuth 1.0 if they prefer that model. 
>>>> 
>>>> For my projects, I prefer the flexibility of a signed or encrypted JWT if I need holder of key.
>>>> 
>>>> Just my $.02
>>>> 
>>>> -- Dick  
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> OAuth mailing list
>>>> OAuth@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/oauth
>>> 
>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> OAuth mailing list
>>> 
>>> OAuth@ietf.org
>>> https://www.ietf.org/mailman/listinfo/oauth
>> 
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth
>