Re: [GNAP] DID as sub_id or assertion?

Adrian Gropper <agropper@healthurl.com> Wed, 17 March 2021 23:56 UTC

Return-Path: <agropper@gmail.com>
X-Original-To: txauth@ietfa.amsl.com
Delivered-To: txauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 868DD3A1852 for <txauth@ietfa.amsl.com>; Wed, 17 Mar 2021 16:56:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.399
X-Spam-Level:
X-Spam-Status: No, score=-1.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=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 SCaKyfCemcZ7 for <txauth@ietfa.amsl.com>; Wed, 17 Mar 2021 16:56:46 -0700 (PDT)
Received: from mail-vs1-f51.google.com (mail-vs1-f51.google.com [209.85.217.51]) (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 97AA53A182C for <txauth@ietf.org>; Wed, 17 Mar 2021 16:56:46 -0700 (PDT)
Received: by mail-vs1-f51.google.com with SMTP id h25so571480vso.2 for <txauth@ietf.org>; Wed, 17 Mar 2021 16:56:46 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=bwdwg3udDEC+Bcv5cLdULhR3Vi/EAyq2MVyUnni+TuI=; b=HWcBDCqpPJG78t1peIC/LntwwpnCrOqGvuq/H+ztB4n3ug3tzs3l8ztHBnCGI+I4Im AScD74hvCt4jM6U5nDe1Y7zAi0layAhgXgKRALT0fJz96BgFFsH/kmJXOMe7eSGNbDmh 4MTBBQcz2KbfI0I4R+eWdX1wGcMHJ3SV+AWso8vFrfd81u71g6/I+wx7G71WFHJpo3vY QEZ366VNQ0fz31GygKeOFc4s4SSN7LxIeLZoQvX2xciSYDz/JIf65CMbr+Lc8JUhFmtV E6J6seoMUp64/1ERGo/4Tc9ppB8cPI9NmFBp5D7zzbg+5s9nc3Mbj70hnJeEe7AWHQre AGHw==
X-Gm-Message-State: AOAM533E2W0DFpHT6SHNAtxf1IfaodysFjaXyE4+278HDw/ZXyq2zvRb aN7Cjt6aE/+DVtBcAz/ze/blSqJsohyTOLijHt7xt1Qude8=
X-Google-Smtp-Source: ABdhPJxfrditZHJLEmtc7VFOFhAa84AuzoqHFcKKoBM7wVeR6O5GpMvcuYX7wz0q3D4L1Gmkl6Oc92rx+cnY16xz69w=
X-Received: by 2002:a05:6102:222f:: with SMTP id d15mr5234271vsb.1.1616025405549; Wed, 17 Mar 2021 16:56:45 -0700 (PDT)
MIME-Version: 1.0
References: <CAM8feuQ5Q1LrGtniCH3WN5gyf6QhBa-9e+2kzaV0fxzA5D5m7w@mail.gmail.com> <B3A02C1B-5DF6-46AE-B806-8DBBF5F6B701@mit.edu> <CAM8feuRuCyKGCDNYXP_gwc=wk986q6m_-DDOcXR8T9k+LdoX9g@mail.gmail.com> <CAM8feuRHQJF6sWGBcvt41kH6V6fwXK0-O15aUgvRRiK9q8vefA@mail.gmail.com> <CAJmmfSSY03c1nn3qtQDhY+Zk490d++zftyftSWPOGPdgPOnkag@mail.gmail.com> <CAM8feuTSWko8q+Agn+0+tLmSAOG6NYH_dMCV697NLna1U-Sxew@mail.gmail.com> <CANYRo8immAFJ08pvd00U6zT6-zRsrHkJ28NuKyC28Fdx=F=USQ@mail.gmail.com> <CAM8feuQbDJfPqym-2VAb4VyDuL8rm_Yk-sGyrb8_qAapUBtEuw@mail.gmail.com> <CAM8feuS332Ng_Bi=doXzq0WEgLc7_+tOmB4uE71+bpJ_g4P-aw@mail.gmail.com> <CANYRo8jG+ZutU6Bhy7zSrKcgnVxjMze7i-y_UpU3+PWvsWfLvA@mail.gmail.com> <CAM8feuSixNA2oFTtYR0Y3vngc+3UbsOSqSBCA6RUEEByB25eNA@mail.gmail.com> <CANYRo8hts6P_4QNjjcUr-H9B9wGJeVckWw+3V3N9hdPHf_idLQ@mail.gmail.com> <CAM8feuQEQyCEOErds8rpcipaqyPm3L3XMdrbQ6X2t3y9xcO4dQ@mail.gmail.com> <CAJmmfSQKZWm=YsjBVV8O+vU9zzC+eka0CCaQO-xFP-GcWzEigw@mail.gmail.com> <CANYRo8jw9gHQESDk__aKM3jK-C9FvYTFYOzb-8iYzbc_hVjMPA@mail.gmail.com> <EDB79C39-D706-43B2-B7D6-234CB32F7411@mit.edu> <CANYRo8inRJa0bAe6gqOkLKqHnt-qxPrzhDufBLwXd-S4wfjdxg@mail.gmail.com> <D9367894-59FA-4B2A-96B0-73188EE43F79@mit.edu>
In-Reply-To: <D9367894-59FA-4B2A-96B0-73188EE43F79@mit.edu>
From: Adrian Gropper <agropper@healthurl.com>
Date: Wed, 17 Mar 2021 19:56:33 -0400
Message-ID: <CANYRo8gbizhbLhZqknM=diNafXzF6ud0O0DS577kKqHOsxW47g@mail.gmail.com>
To: Justin Richer <jricher@mit.edu>
Cc: Tobias Looker <tobias.looker@mattr.global>, Fabien Imbault <fabien.imbault@gmail.com>, GNAP Mailing List <txauth@ietf.org>, Alan Karp <alanhkarp@gmail.com>, Mark Miller <erights@gmail.com>
Content-Type: multipart/alternative; boundary="0000000000003ef10a05bdc43ca1"
Archived-At: <https://mailarchive.ietf.org/arch/msg/txauth/96rDqZr44UOip8Brmqg5hZraQjI>
Subject: Re: [GNAP] DID as sub_id or assertion?
X-BeenThere: txauth@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: GNAP <txauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/txauth>, <mailto:txauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/txauth/>
List-Post: <mailto:txauth@ietf.org>
List-Help: <mailto:txauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/txauth>, <mailto:txauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 17 Mar 2021 23:56:49 -0000

That's the vagueness we're talking about. For me, the RS holds all the
cards and can choose whether to hold them or pass them to some other actor.
"Same trust boundary" just reinforces that mental model for me, it's a
technicality that splits one actor into two pieces. If the RS does this it
should be completely invisible to GNAP and I would call the whole thing RS
anyway.

The reason I advocate for GNAP in the SSI workgroups is exactly because SSI
does not depend on "trust boundary" - which to me is another name for
"federation".

So, on the protocols side, I propose, in both the SSI and GNAP groups, that
the AS be defined as the actor that has policies, requests, and
capabilities in order to emit tokens. If there's a reason to treat this
actor as a trust boundary around an RO + the user-agent or the RO + an AS,
then I'm happy to state that explicitly.

Adrian

On Wed, Mar 17, 2021 at 7:36 PM Justin Richer <jricher@mit.edu> wrote:

> I still think the RS doesn’t do these things, the AS does. The AS is the
> component of the “API Provider’ (in your use case model) that handles the
> authorizations. The RS just fulfills them. They are part of the same trust
> boundary.
>
>  — Justin
>
> On Mar 17, 2021, at 7:18 PM, Adrian Gropper <agropper@healthurl.com>
> wrote:
>
> I'm sure you're right. Our vague terminology around client and end-user
> leads to my confusion. If GNAP is primarily about delegation then, of
> course, we should avoid any incentives to impersonate or we're wasting our
> time. This is partly why I'm trying to study up on capabilities and asking
> for expert advice from folks like Alan Karp and Mark Miller (cc'd)
>
> As best I can understand it, the RS has only two choices, it can:
>
>    - store an attribute of the RO a [DID, email address, GNAP AS URL], or
>    - hand the RO a capability as a sort-of promise and avoid making any
>    entries in an ACL or equivalent.
>
> When a token comes back to the RS, it will either be:
>
>    - validated according to something associated with the stored RO
>    attribute, or
>    - signed by the RS itself.
>
> Either way, trust in the client seems moot.
>
> Adrian
>
>
>
> On Wed, Mar 17, 2021 at 5:29 PM Justin Richer <jricher@mit.edu> wrote:
>
>> On Mar 17, 2021, at 4:55 PM, Adrian Gropper <agropper@healthurl.com>
>> wrote:
>>
>>
>> On Wed, Mar 17, 2021 at 4:23 PM Tobias Looker <tobias.looker@mattr.global>
>> wrote:
>>
>>> <snip>
>>> > A client might not have a DID but it could have a VC as a certificate
>>> of authenticity linked to some audit mechanism.
>>>
>>> To me a VC would come under the assertions umbrella (that is to say a VC
>>> could be one type of valid assertion). The client may possess or been
>>> presented with a VC that it could include in its request to the AS as a way
>>> to identify the subject and perhaps prove authentication and authorization.
>>>
>>
>> I do not assume that the client that interacts with the AS to make a
>> request and receive a token is the same as the client that will present the
>> token to the RS. In the US HIPAA use-case, for example, the root of trust
>> is a contract between the patient-subject and the doctor-requesting party
>> but the doctor workflow is expected to delegate the token to some other
>> end-user that may be using a totally different client such as an EHR.
>>
>>
>> If the client that gets the token is not same as the client that uses the
>> token, that is a violation of core security principles as it allows for
>> (and really designs for) impersonation by client software. I would have no
>> reason to trust client software that would hand its credentials over to
>> another piece of software, and in fact I shouldn’t trust it.
>>
>> I think you may be conflating several different kinds of parties under
>> the “client” umbrella here, though. It’s entirely possible that one client
>> might call an RS that in turn acts as a client for something else down
>> stream. But each of those hops is different from the last.
>>
>>  — Justin
>>
>>
>