Re: [OAUTH-WG] [UNVERIFIED SENDER] Call for Adoption - OAuth Proof of Possession Tokens with HTTP Message Signature

Warren Parad <wparad@rhosys.ch> Thu, 14 October 2021 12:47 UTC

Return-Path: <wparad@rhosys.ch>
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 187953A0866 for <oauth@ietfa.amsl.com>; Thu, 14 Oct 2021 05:47:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.088
X-Spam-Level:
X-Spam-Status: No, score=-2.088 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, T_KAM_HTML_FONT_INVALID=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rhosys.ch
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 4e197MXm7qEj for <oauth@ietfa.amsl.com>; Thu, 14 Oct 2021 05:47:32 -0700 (PDT)
Received: from mail-yb1-xb29.google.com (mail-yb1-xb29.google.com [IPv6:2607:f8b0:4864:20::b29]) (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 43B113A08A9 for <oauth@ietf.org>; Thu, 14 Oct 2021 05:47:32 -0700 (PDT)
Received: by mail-yb1-xb29.google.com with SMTP id u32so14331493ybd.9 for <oauth@ietf.org>; Thu, 14 Oct 2021 05:47:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rhosys.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=d6tqjBV76o11EmbdBKUjkeAuvII3sDfWKvmJhOUaXio=; b=aTL0JK9U8Qlf5Z2Frw1ek966QeRLeNKDeGvFZxTuOmeGb5B7AUYOqs3qJ5mb/+OGsW Fis/Ky4vVlvzrK+xwdGKeCd1bNxr19B4i7yvFZL9MgMPVpV53nbvkEEjRYNv7KFbp9de 8kv3libzbT/N5NdlfWpddxljlrARbmTRnJy5uuCXZZZvvejj5rC397NkJ1aty5lhcjXn vKha4ebCRpocN+foYhcPAsjyDXwu6Bd8SGnBBPb2UUTNwgSzpwdhvS9rj7sHjjZ3Yt/u kNmO199Vjb1m9+kkxWoW3BmAJgfwCcmoAFOzTA/RfOeKyjcNLNZ0trXHinN7W9DcXeEb b16w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=d6tqjBV76o11EmbdBKUjkeAuvII3sDfWKvmJhOUaXio=; b=fhYbo8wov8XGzU+tPgu0RBXR+JKKnuLJFw8CkFkdvOio8TxqdYprlRd1NsOztBk6/s YxID7VaHTmkhuPzJ1dEvxEx0nwHGWf15FoYcR+woCG6QWxOYaolS+tVJCAu03Dmpf8+I QRvV3tiQ6EpDOlS7ag2GiRSg1Soe3a3EAQsIl65sULQZ2PrafJorpz2SlxmNZ9H6lAX2 7O4J6K5d47ggINOGp2hllwhrcYgwXT2l/J3FQUEjDgx/w5ymn/LTgUvLd7QqsLbMycMB wh27s82cf/kz2aKZ/gGSxhuE8mxn2k9/cIcPG51qiEwZBbTzSs1W9cqjwmKBK+l9eg6f 0cMw==
X-Gm-Message-State: AOAM532DNknLoXHdBFhed56eV/malP8re5vqrZdLVPxkX3JJP8PpZklL zkUP8TtDYjobLx6DY9iuiWkxbY4Nn4npSRJ1KLnBXtg4JYsXPWY=
X-Google-Smtp-Source: ABdhPJwFqCa4yo1QNhqk52Q2Irz+YoSNhszWTLx+4lrSNO41gWkpwF62+7QowlKT4vg041SbM9Y0Sg2z+YoommOXYJ4=
X-Received: by 2002:a25:dc82:: with SMTP id y124mr5981938ybe.521.1634215650995; Thu, 14 Oct 2021 05:47:30 -0700 (PDT)
MIME-Version: 1.0
References: <CADNypP9QXCEjJmkhBvTHn68kDcJ2Mfg-tSQx1-hvfPoOTXCKzA@mail.gmail.com> <CAGBSGjqasD=eYnsMm7gZB2g+=C4abZoVi7FH4e7EFfgwKdjS8w@mail.gmail.com> <CAD9ie-uH9xGL9orTFxEd=tfhO6Q-S3sDHrQDtU7h0_dr6YeLOg@mail.gmail.com> <EE56CE99-5592-40AF-9BA5-7F3886ED315A@mit.edu> <CAD9ie-t9i1sVLhVhJp-mWSchV_x0b3no7i4qNXvcaQS+8OqCVA@mail.gmail.com> <CAGBSGjrgVbGWwFq6LDX_2Vhv7yQkwtEEjy36GpLj-bN+MtcX-w@mail.gmail.com> <CAD9ie-vJiwBSV71z4_2TJJO7A52mV763XvXmEPsEFgOMFVOwyQ@mail.gmail.com> <D445073E-D495-4250-9773-9AEEB09C01E0@amazon.com> <CAD9ie-t5EBZLtHmmbDQu9iq-d87gf07X5Fes_ZqFts5hDCOOuw@mail.gmail.com> <A312C403-3341-4B29-AEB3-B547E9A802E7@amazon.com> <CAD9ie-sW537PEzavzv1v6JSOFSfLa7iRVPAXD-miuEY8GMmDeQ@mail.gmail.com> <CAJot-L1fio+-1sSn6Z88ianq04RoHJ3M5yxe0Bzu2Cs-CWCPkg@mail.gmail.com> <54A59064-B40B-4F6C-9E7C-A5618C2C4D3E@alkaline-solutions.com> <3CAB48B9-B517-4693-8CBB-3377122A6077@amazon.com> <CAJot-L3CiPf0XbTRHPgs71cxfhr2626+vt4XELDSf5nhkj8wdg@mail.gmail.com> <EB86A178-052C-48CD-9F99-63B9173DF7B0@amazon.com> <7618AC29-8221-4FC0-BCF3-199C6BA96FE5@alkaline-solutions.com> <CAJot-L2ztfruwe3L=uQuCYoZ++NTbejv_r3GOL4546q0nOTQPA@mail.gmail.com> <E8AB2162-98DE-452E-A64B-0BCCDC36CECD@amazon.com>
In-Reply-To: <E8AB2162-98DE-452E-A64B-0BCCDC36CECD@amazon.com>
From: Warren Parad <wparad@rhosys.ch>
Date: Thu, 14 Oct 2021 14:47:20 +0200
Message-ID: <CAJot-L3a3p1ROxdnb2wNCEJPfyurRD=-g__rEe5ZVXRskpZBcg@mail.gmail.com>
To: "Richard Backman, Annabelle" <richanna@amazon.com>
Cc: David Waite <david=40alkaline-solutions.com@dmarc.ietf.org>, oauth <oauth@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000005d484705ce4f7b0f"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/5OEXBbPczShZX5KXMvEj-s02mhE>
Subject: Re: [OAUTH-WG] [UNVERIFIED SENDER] Call for Adoption - OAuth Proof of Possession Tokens with HTTP Message Signature
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: Thu, 14 Oct 2021 12:47:37 -0000

I feel like there are a bunch of pieces of the implementation fundamentally
missing here, so we are back to, as it is right now, the draft isn't
sufficient. What prevents the signature from being used without this RFC?
How do you do expect the symmetric key exchange to be oauth compliant? How
does the RS know that there is supposed to be a signature, if the client
doesn't provide it?

Warren Parad

Founder, CTO
Secure your user data with IAM authorization as a service. Implement
Authress <https://authress.io/>.


On Wed, Oct 13, 2021 at 11:55 PM Richard Backman, Annabelle <
richanna@amazon.com> wrote:

> If keeping DPoP simple means we have to have come up with 10 different
> variants to handle all the different cases that it doesn't support, then it
> isn't keeping it simple, it is just pushing the problem forward to the
> implementers to figure out which set of RFCs to implement.
>
>
> I'm hoping we can stop at 3: mTLS, DPoP, and Justin's draft. If someone
> has use cases that aren't covered by one or more of those, they should
> bring those up so we can discuss them and decide what changes are
> warranted. (Either here, or in HTTPbis if changes should be made to Message
> Signatures) My preference would've been to stop at 2, but the consensus has
> not been in favor of expanding the scope of use cases served by DPoP.
>
>
> If there are really so many cases, then I think we need to focus on
> recreating PoP in an extensible way that allows the DPoP to sit on top, and
> other RFCs to be layered in without a bunch of RFCs to all have competing
> semantics.
>
>
> This is what we are doing with Message Signatures. We're providing a
> general purpose signature mechanism, which higher-level protocols can build
> on.
>
>
> Here's a great example. I think having an additional header is
> unjustified, DPoP, Signature, or whatever you want to call it. But the only
> thing more unjustified than that is having different headers for different
> implementations of PoP. We can start with a new Draft that just says, PoP
> header is X, end of story, might as well call it
> *Authorization-Extra-Info*, and then layer in what you want in there.
>
>
> I can see the argument for DPoP including the proof in the `Authorization`
> header field, since the proof is intrinsically related to the access token
> and request authorization – not making a judgement on that, as this is the
> wrong thread and I don't have a horse in that race. Packing everything into
> a single header field doesn't make sense for Message Signatures, since they
> may or may not have anything to do with request authorization, access
> tokens, or anything of the sort. Additionally, the use of separate
> `Signature-Input` and `Signature` header fields allows us to have a very
> simple field syntax using Structured Field Values for HTTP
> <https://datatracker.ietf.org/doc/html/rfc8941>, and makes it easy for
> intermediaries to chain signatures. (E.g., a reverse proxy might add an
> `X-Forwarded-For` header field, and add a Message Signature covering that
> header field plus the PoP signature included by the client.) …and I'll stop
> there lest we dive into topics for the HTTPbis WG.
>
> —
> Annabelle Backman (she/her)
> richanna@amazon.com
>
>
>
>
> On Oct 13, 2021, at 12:01 PM, Warren Parad <wparad@rhosys.ch> wrote:
>
> *CAUTION*: This email originated from outside of the organization. Do not
> click links or open attachments unless you can confirm the sender and know
> the content is safe.
>
> If keeping DPoP simple means we have to have come up with 10 different
> variants to handle all the different cases that it doesn't support, then it
> isn't keeping it simple, it is just pushing the problem forward to the
> implementers to figure out which set of RFCs to implement.
>
> I would agree with keeping DPoP simple if it meant that 99% of problems
> were solved, in which case the question would be why do we need this RFC,
> and if what is here is so common, then what good is the DPoP one? Simple is
> useless if it is never used.
>
> If there are really so many cases, then I think we need to focus on
> recreating PoP in an extensible way that allows the DPoP to sit on top, and
> other RFCs to be layered in without a bunch of RFCs to all have competing
> semantics.
>
> Here's a great example. I think having an additional header is
> unjustified, DPoP, Signature, or whatever you want to call it. But the only
> thing more unjustified than that is having different headers for different
> implementations of PoP. We can start with a new Draft that just says, PoP
> header is X, end of story, might as well call it
> *Authorization-Extra-Info*, and then layer in what you want in there.
> Then the number of differences through these refactoring between these two
> drafts becomes smaller. Surely we can agree to a draft that contains only
> the semantics that are the same between the existing two, and then reuse
> the same terminology and the same implementation, header name, etc...
>
> We definitely need a PoP RFC, there's no question there (at least I don't
> think there is), so let's start with the subset of all pieces that both
> sets of authors can agree to.
>
> Is this the list of current concerning limitations?
>
>>
>>    1. Does not support symmetric keys.
>>    2. Requires the same key to be used with AS and RSes.
>>    3. Does not support multiple valid signing keys.
>>    4. Signed content is copied into the JWT and therefore duplicated
>>    within the message. This allows for bugs where the verifier fails to check
>>    that these values match, or performs that check incorrectly. (e.g.,
>>    assuming case insensitivity)
>>    5. Only covers the method, scheme, host, and path. Allows for
>>    additional arbitrary content to be signed, but does not provide any
>>    guidance or support for defining interoperable extensions.
>>    6. Depends on JWT, which may be a new dependency, particularly for
>>    clients that are doing OAuth 2.0 but not OIDC.
>>
>> Can we narrow this down to the non-negotiables? For instance surely (1),
> (4), (6) aren't that bad, sure they may not be optimal for every case. I
> can (2) & (3) to be actually limiting and (5) to be easy to allow
> extensibility. Would your concerns be at least somewhat be mitigated by
> allowing for solutions regarding (2) & (3)?
>
> Warren Parad
> Founder, CTO
> Secure your user data with IAM authorization as a service. Implement
> Authress <https://authress.io/>.
>
>
> On Wed, Oct 13, 2021 at 8:41 PM David Waite <david=
> 40alkaline-solutions.com@dmarc.ietf.org> wrote:
>
>>
>>
>> > On Oct 13, 2021, at 12:26 PM, Richard Backman, Annabelle <
>> richanna@amazon.com> wrote:
>> >
>> > Those issues that could be addressed without completely redesigning
>> DPoP have been discussed within the Working Group multiple times. (See
>> quotes and meeting notes references in my previous message) The authors
>> have pushed back on extending DPoP to cover additional use cases them due
>> to a desire to keep DPoP simple and lightweight. I don't begrudge them
>> that. I think it's reasonable to have a "dirt simple" solution,
>> particularly for SPAs given the relative limitations of the browser
>> environment.
>> >
>> > Other issues are inherent to fundamental design choices, such as the
>> use of JWS to prove possession of the key. E.g., you cannot avoid the data
>> duplication issue since a JWS signature only covers a specific
>> serialization of the JWT header and body.
>>
>> Agreed with keeping DPoP simple, which was why I was asking if the
>> proposal could indicate it was targeting some of these other use cases. The
>> current draft being proposed for adoption I believe is fixed to the same
>> HTTP properties that DPoP leverages, and thus appears to be targeting the
>> same use cases with a different proof expression.
>>
>> The duplication within the token is also a trade-off: it allows an
>> implementation to have a white list of acceptable internal values, if say
>> the host and path are rewritten by reverse proxies. It also allows an
>> implementation to give richer diagnostic information when receiving
>> unacceptable DPoP tokens, which may very well come at runtime from an
>> independently-operating portion of an organization reconfiguring
>> intermediaries.
>>
>> -DW
>
>
>