I’d be interested in hearing why people think digital signatures are a good 
choice for PoP. As far as I can tell that choice has not been clearly 
motivated. 

I have no interest in canonicalised HTTP message signing. I don’t think it’s a 
good idea. 

— Neil

> On 24 Nov 2020, at 23:32, Justin Richer <jric...@mit.edu> wrote:
> 
> With the renewed work on HTTP Message Signatures[1] in the HTTP WG[2], I 
> think we might have a good avenue for this ECDH-with-KDF flavor of message 
> signature in that arena instead of trying to twist it into DPoP. I think that 
> this signing mechanism will be a better base for a general PoP effort in 
> OAuth, and I still believe that this could live alongside DPoP’s more 
> specific focus and intentional limitations. 
> 
>  — Justin
> 
> [1] https://tools.ietf.org/id/draft-ietf-httpbis-message-signatures-01.html
> 
> [2] https://github.com/httpwg/http-extensions/
> 
> 
>> On Nov 24, 2020, at 4:18 PM, Brian Campbell 
>> <bcampbell=40pingidentity....@dmarc.ietf.org> wrote:
>> 
>> It took me some time to warm to the ECDH based idea but I do think it has a 
>> lot of merit. For whatever it's worth, I put the idea forth as one potential 
>> path forward during the general PoP interim meeting back in March 
>> (https://datatracker.ietf.org/meeting/interim-2020-oauth-02/materials/slides-interim-2020-oauth-02-sessa-oauth-20-proof-of-possession-00.pdf
>>  slide 8) but the WG consensus was to pursue a signature style PoP for the 
>> current efforts, which was followed not long after by WG adoption of DPoP. I 
>> could potentially see an ECDH-style-POP effort making a resurgence in the 
>> future. But it's fundamentally pretty different.  
>> 
>> 
>> 
>> 
>> On Tue, Nov 24, 2020 at 4:03 AM Neil Madden <neil.mad...@forgerock.com> 
>> wrote:
>>> I agree with Daniel that I’d be a bit wary of assuming that this could 
>>> never be exploited. For example, a server-side web app that signs DPoP 
>>> proofs on behalf of client-side Javascript (to keep the key safe on the 
>>> server) and reuses the key for different users could be a risk. 
>>> 
>>> IMO this is another symptom of the general issue of using signatures for 
>>> authentication - they are too strong for the job. The fact that a signature 
>>> is equally valid to all parties and at all times means you have to be very 
>>> careful to include enough context in the signature calculation to ensure 
>>> all these kinds of attacks are eliminated. And you have to ensure that all 
>>> RSes check the context. 
>>> 
>>> Contrast that to my suggestion to use ECDH [1], which was already immune to 
>>> such attacks by including the access token in the key derivation step. (And 
>>> in such a way that requires no additional data on the wire and is almost 
>>> impossible for the RS not to verify). Even without including the access 
>>> token in the KDF, the attack could only happen if the client reused its key 
>>> and the RS reused a challenge key pair. 
>>> 
>>> Macaroon access tokens [2] are also immune to this attack, as in that case 
>>> the constraints that go in the DPoP proof are directly attached to the 
>>> access token itself so there is no way to reuse them separately. 
>>> (Interestingly, macaroons have a more direct analogue of DPoP in the form 
>>> of discharge macaroons. Such discharge macaroons are required to be 
>>> “prepared” before use, which cryptographically binds them to the equivalent 
>>> of the access token - so this kind of attack was also considered and 
>>> addressed there). 
>>> 
>>> [1]: 
>>> https://mailarchive.ietf.org/arch/msg/oauth/1Zltt75p5taPw0DRmhoKLbavu9s/
>>> [2]: 
>>> https://neilmadden.blog/2020/07/29/least-privilege-with-less-effort-macaroon-access-tokens-in-am-7-0/
>>> 
>>> — Neil
>>> 
>>>> On 24 Nov 2020, at 09:38, Daniel Fett <f...@danielfett.de> wrote:
>>>> 
>>>> 
>>>> Thanks Justin for bringing this to our attention.
>>>> 
>>>> Right now, I don't think that this is a big problem and I wasn't able to 
>>>> come up with a way to improve the attack. I hope that it doesn't come back 
>>>> to haunt us when somebody does a more in-depth analysis...
>>>> 
>>>> That said, the lack of binding to the access token makes it easier to 
>>>> precompute proofs if somebody has a limited code execution opportunity in 
>>>> the client. We have this paragraph in the spec:
>>>> 
>>>>    Malicious XSS code executed in the context of the browser-based
>>>>    client application is also in a position to create DPoP proofs with
>>>>    timestamp values in the future and exfiltrate them in conjunction
>>>>    with a token.  These stolen artifacts can later be used together
>>>>    independent of the client application to access protected resources.
>>>>    The impact of such precomputed DPoP proofs can be limited somewhat by
>>>>    a browser-based client generating and using a new DPoP key for each
>>>>    new authorization code grant.
>>>> 
>>>> The recommendation could be to use a fresh key pair for each token request.
>>>> 
>>>> -Daniel
>>>> 
>>>> 
>>>> Am 20.11.20 um 20:26 schrieb Justin Richer:
>>>>> While working on an implementation of DPoP recently, I realized that the 
>>>>> value of the access token itself is not covered by the DPoP signature at 
>>>>> all. What I’m wondering is whether or not this constitutes an attack 
>>>>> surface that we care about here. Here’s how it works:
>>>>> 
>>>>> 
>>>>> Let’s say that a client creates a DPoP key and uses that key to request 
>>>>> two tokens, T1 and T2, for different users, Alice and Bob, respectively. 
>>>>> Alice is malicious and wants to get Bob’s stuff. Alice manages to get a 
>>>>> hold of Bob’s token value, T2, through some means. Normally DPoP wouldn’t 
>>>>> let Alice create a new request using T2 since Alice doesn’t have the 
>>>>> client’s key. However, if Alice gets the client to create a request for 
>>>>> her using T1, she can copy the signature from that request onto a new 
>>>>> request using T2. Since the signature doesn’t cover the token value and 
>>>>> the key is the same, the RS should accept both requests, right?
>>>>> 
>>>>> An important aspect is that the parts needed to make this attack work are 
>>>>> a little weird: you’d need access to a valid signed request from the 
>>>>> client with T1 as well as access to a valid T2 attached to the same key 
>>>>> in order to make this substitution. However, this is effectively the same 
>>>>> attack area that bearer tokens have in a lot of ways, since it doesn’t 
>>>>> require the attacker gaining access to the singing key to generate or 
>>>>> modify a signature, nor does it require the attacker to generate or 
>>>>> modify an access token (merely obtain one).
>>>>> 
>>>>> 
>>>>> I’d like to understand if this is an actual attack against DPoP. If it 
>>>>> isn’t, how is it countered by DPoP today? If it is, do we discuss in the 
>>>>> DPoP draft? I didn’t see a mention of it there. If it’s not, should we 
>>>>> discuss it there?
>>>>> 
>>>>> 
>>>>> The old OAuth PoP draft mitigates this attack by putting the access token 
>>>>> itself inside the signature body instead of a second header. Another 
>>>>> option would be to include a hash of the token value (such as OIDC’s 
>>>>> “at_hash” method used in ID Tokens) in the DPoP payload. With either of 
>>>>> these approaches, Alice having access to T1, T2, and a signed message for 
>>>>> T1 does not allow her to use T2 effectively.
>>>>> 
>>>>>  — Justin
>>>>> _______________________________________________
>>>>> OAuth mailing list
>>>>> OAuth@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>> 
>>>> -- 
>>>> https://danielfett.de
>>>> _______________________________________________
>>>> OAuth mailing list
>>>> OAuth@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/oauth
>>> 
>>> ForgeRock values your Privacy_______________________________________________
>>> OAuth mailing list
>>> OAuth@ietf.org
>>> https://www.ietf.org/mailman/listinfo/oauth
>> 
>> CONFIDENTIALITY NOTICE: This email may contain confidential and privileged 
>> material for the sole use of the intended recipient(s). Any review, use, 
>> distribution or disclosure by others is strictly prohibited.  If you have 
>> received this communication in error, please notify the sender immediately 
>> by e-mail and delete the message and any file attachments from your 
>> computer. Thank you._______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth
> 

-- 
ForgeRock values your Privacy <https://www.forgerock.com/your-privacy>
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to