Re: [hrpc] When are HRPCs normative in an IETF protocol?

Adrian Gropper <agropper@healthurl.com> Tue, 29 November 2022 16:33 UTC

Return-Path: <agropper@gmail.com>
X-Original-To: hrpc@ietfa.amsl.com
Delivered-To: hrpc@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1113CC1524C5 for <hrpc@ietfa.amsl.com>; Tue, 29 Nov 2022 08:33:56 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.387
X-Spam-Level:
X-Spam-Status: No, score=-6.387 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_DNSWL_HI=-5, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BNTDf0L2h8J6 for <hrpc@ietfa.amsl.com>; Tue, 29 Nov 2022 08:33:52 -0800 (PST)
Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 21554C1524BC for <hrpc@irtf.org>; Tue, 29 Nov 2022 08:33:52 -0800 (PST)
Received: by mail-yb1-f178.google.com with SMTP id i131so18124180ybc.9 for <hrpc@irtf.org>; Tue, 29 Nov 2022 08:33:52 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=i2lPyi5xinezBPb4JmobKGWyA6i41prBAeGq+3LFozk=; b=hXUgz8ckfqt0vh2ROUSR6Mkl4El4e2HfP48ShB8OuvyGvjyX7hEl32vrwE3E1o7+Ox ZDPsp+t1kI5tanIGlZNj9iNL35DRnRykexPvVVpYRTspJjYeq9rLYhs1r8+woRjqlHRG jft43u7rNp/7aWVkTKcSs4E6cwuem9BgDHosTofVp47SbYbchNEACEiN6+wX2nJ1XAIZ Qgp5CjLaUtSRI4Wt4ldBpX+Ew5MiRWGc6u0gMRKV2YNb+0Y38mRJHVRwjmJOc4jQ2K8k nV/OJyTqM/OOxRjSHMaWZTYB4JMp/x1yETM2oNy/Mszvns9Ynt5Y13E10JXhOmPHWxt7 EDJw==
X-Gm-Message-State: ANoB5pnZ0ZTIpbPkmJONCRd9gM8MP1zqUNp5SWM5a5isF71/lOduIult jIG5jXIk3WiFxn+y35aI/k0dZTHrn9bqKrNyVxA=
X-Google-Smtp-Source: AA0mqf58QQrTJmZPLj8pHEZbSJx/XTpJqNvJx2bnEVdtvxAW+qN5tcNx9nB8+QnlCrAH1gQVjJJG4KkcGAJ45lH+6BE=
X-Received: by 2002:a25:d88:0:b0:6f0:9db5:63e7 with SMTP id 130-20020a250d88000000b006f09db563e7mr27054431ybn.387.1669739630618; Tue, 29 Nov 2022 08:33:50 -0800 (PST)
MIME-Version: 1.0
References: <CANYRo8ivdeQOc8KkroQ8ZZCoif-CPwNcc9qG0jU6nW8GUHTe1w@mail.gmail.com> <cd45f2f9-a3fd-8516-5635-ebf3280568cc@cs.tcd.ie> <CANYRo8iyjwRfvqq=LftiRCM0AxsVQdSE=VeFKHqPS9qbJDh6WA@mail.gmail.com> <88ff0ab6-8061-e3c9-a9a6-f008ade33549@cs.tcd.ie> <CANYRo8iSP7mLnR7fubegLNq5AEAwGuZb9GsQ25HbPo8F3Fo-5A@mail.gmail.com> <CADnDZ8_YkG_FG+D1-Mt3euQGZ_YAEmnGLputg_fvDTRVJe3g+g@mail.gmail.com> <CANYRo8h=UX7Lk7RyQMLdead6H1xcvWtEZyu_MqSEeWw+Fk+_5A@mail.gmail.com> <CAM8feuQPvALbMoejfDobF_FUv14X33bMxg7m=WpAW8-BCnYcUg@mail.gmail.com> <CANYRo8jDWV_30c5M1Jvj232d3jBZbtf+NbeNuMqFigHov3T58Q@mail.gmail.com> <21B3ED92-FFB8-4D25-9F57-C3407835E659@mit.edu> <CANpA1Z0C3YfXe=frGrhL3=yrT53LK2LF7D6now2pwk7EsrS5Fw@mail.gmail.com> <CANYRo8juxdVN2iJLPnOZkSdK8aQtLHJ1UTh8w0p3G=K61+r4oA@mail.gmail.com> <CAM8feuRBEBUt0F417y1VmnnkS4=nH0TLAczVmZYsqM9_q34r=w@mail.gmail.com> <CANYRo8iPmP4bRNC8NrgoZCHO2+DT5dYt66M3q8nMPUSua9Sarw@mail.gmail.com> <029A5B0E-E652-4B98-9A7F-F41DAD0AF68B@mit.edu> <CANYRo8hNNn5KaH-=zKXHUFKxB+2M=335nAV-hX_=V02d+s2XaA@mail.gmail.com> <92FAD027-7A9C-4A24-A46A-6EB19CCB5435@mit.edu> <CANYRo8gzhd_2TmnHqdtsnZAjmY_kfDDFtT+FFv8wOiJ1tA25cw@mail.gmail.com> <CAM8feuRtOnRQ=RUdrB3=L=ktD0oe766H-Fki7U=z96hj88=8eA@mail.gmail.com> <CANYRo8g3Zidh9C7BOoGY02LxsGATgP2WHU+XdTQ5G-93jMGhog@mail.gmail.com> <0A6891AA-2618-4FD7-9EC9-76DBBCF97714@mit.edu>
In-Reply-To: <0A6891AA-2618-4FD7-9EC9-76DBBCF97714@mit.edu>
From: Adrian Gropper <agropper@healthurl.com>
Date: Tue, 29 Nov 2022 11:33:38 -0500
Message-ID: <CANYRo8hSJ2RW3NPiGshYxp4jizA7RtyFVS3PCrwa5AONBN81BA@mail.gmail.com>
To: Justin Richer <jricher@mit.edu>
Cc: Fabien Imbault <fabien.imbault@gmail.com>, Abdussalam Baryun <abdussalambaryun@gmail.com>, Alan Karp <alanhkarp@gmail.com>, Leif Johansson <leifj@sunet.se>, Stephen Farrell <stephen.farrell@cs.tcd.ie>, Yaron Sheffer <yaronf.ietf@gmail.com>, "hrpc@irtf.org" <hrpc@irtf.org>
Content-Type: multipart/alternative; boundary="0000000000008cf00905ee9e8d4b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/hrpc/VhroNqqmg9SuqXlsOWieijuobCI>
Subject: Re: [hrpc] When are HRPCs normative in an IETF protocol?
X-BeenThere: hrpc@irtf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: hrpc discussion list <hrpc.irtf.org>
List-Unsubscribe: <https://www.irtf.org/mailman/options/hrpc>, <mailto:hrpc-request@irtf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/hrpc/>
List-Post: <mailto:hrpc@irtf.org>
List-Help: <mailto:hrpc-request@irtf.org?subject=help>
List-Subscribe: <https://www.irtf.org/mailman/listinfo/hrpc>, <mailto:hrpc-request@irtf.org?subject=subscribe>
X-List-Received-Date: Tue, 29 Nov 2022 16:33:56 -0000

Thank you for concrete examples. Inline...

On Tue, Nov 29, 2022 at 8:36 AM Justin Richer <jricher@mit.edu> wrote:

> We’re not trying to say you have to compromise between human rights and
> security. We’re saying you can fulfill the human rights concerns in a
> different way than what you’re proposing without compromising security.
> You’re making a false comparison between the two, and we’ve been trying to
> show that it’s not an either-or.
>
> And to the statement below: if I show up to an AS with a verifiable
> credential that says “this person is a doctor in that hospital over there”
> and the AS has a policy that says “any doctor at that hospital can view all
> X-rays”, then the AS can easily grant an access token that says “this token
> is good for viewing this x-ray”. At no point here does the AS know the
> identity of the doctor. At no point does the RS need to know anything about
> doctors at all.
>

This is exactly the use-case I've been working on and testifying about for
over a decade in HL7 FHIR, Kantara UMA, OpenID HEART and the W3C VC
workgroups. Traditional health information exchange is an example of "One
set of policies applies to all patients and clinicians unless the patient
has requested an exception." This is also roughly analogous to Facebook
(mostly secret) or Twitter (somewhat secret) resource access policies for
who sees what.

It's the "the AS can easily grant" where the problems of Information
Blocking or unintended extremism come in. In practice, essentially zero
patients navigate the system to enter an HIE exception. The doctors also
struggle with exceptions when their practice style doesn't include
employment by a major institution. When it comes to humans, handling the
exceptions is the essence of avoiding forced association.

Handling the exceptions isn't free to the resource service provider but it
doesn't have to be expensive or hard. GNAP already fixes many of the
problems that make OAuth "hard" like, for example, dealing with an end user
that doesn't have a browser as their user agent.

To avoid forced association of human subjects of a resource server the RS
or AS needs a way to flag that an exception to the baseline policies (be
they open or secret) has been requested for a specific resource that is
associated with a human subject. Almost universally, a service managing
human-subject resources has a list of the humans. In healthcare and beyond
these are increasingly a mobile phone number. Email addresses are second.
Adding a policy exception flag to that list is trivial. Whether the list of
humans and exceptions is kept by the RS or AS is irrelevant to my
perspective and I accept that GNAP prefers to have the AS keep a list of
humans and the RS keeps the list of resources. The separation of resource
processing from control of the resource processing is helpful and should be
encouraged.


> This is the kind of system that GNAP enables people to build. Extending
> this system to allow a patient to say “and let my partner see my x-ray”
> means we have to allow the patient to express how someone fulfills “my
> partner” to the AS. In most AS’s, especially in OAuth, this means you name
> a specific account. This is the google docs example you gave. But it could
> be any wide number of things that the AS can use to make that call that any
> particular end-user fulfills the policy.
>

Exactly. So the AS has a way for human subjects to request an exception to
the RS+AS policies. The question for GNAP is how that flag is handled.

It could be handled by the RS+AS offering to process more or less arbitrary
policies (very very hard) or it could be handled through delegated
authorization (which is what GNAP claims to be).

Discussions on the GNAP list have raised three possible ways to handle the
exceptions.
1 - Allow the human subject (RO) requesting the exception to point to an AS
they choose.
2 - Avoiding the exception flag altogether by issuing every RO a capability
associated with the resource that the human can pass on to their chosen
GNAP AS for attenuation.
3 - Specifying a token exchange endpoint at the AS where another AS acting
as a delegate of the RO can request an attenuated token.

My request to the GNAP WG is that they specify at least one of these three
as normative for human rights reasons. Any of them would avoid the forced
association problem and allow any human subject to manage policies if they
choose. Policy management at GNAP AS is already out of scope and can stay
that way.

>
> That policy is at the AS and the AS is still tightly tied to the RS,
> without creating a forced association in the way you’ve described in the
> problem statement and without requiring the RS to allow the patient to
> specify their own AS at runtime in the way you’ve described in your
> solution statement.
>

This is where we seem to diverge. One AS as a token factory can respect
that another AS is also a token factory by design and by default. This is
the normative change I'm requesting. This is the principle that can give
regulators a handle on hyperscale platforms.

>
> GNAP AS a protocol cannot force an AS to have any particular policy. What
> can is regulation telling the x-ray lab to allow patients to specify a
> policy that can be fulfilled by people without accounts on the lab’s AS.
> That is actionable and auditable regulation, but it is not a protocol
> concern, especially not for GNAP in the general case.
>

Yes. I already agreed that policy management is out of scope for GNAP.

A request to the RS+AS does not have to be signed by someone with an
account at the AS. The only accounts the AS needs to track are RO accounts
and these are absolutely necessary if we are to allow exceptions and avoid
forced association.

For scalability, security, privacy, AND human rights, A request to _ANY_
GNAP AS can be tied to the ability to hold the requesting party (GNAP End
User) accountable. For example, a VC presented  as part of the request
might be sufficient relative to policy at that AS. No account needed. A
credential that secures the right to raise an exception or delete the
resource is also required in order to protect the Resource Server from
frivolous challenges. That's part of AS policy no matter what.

Adrian

>
>  — Justin
>
> On Nov 29, 2022, at 8:24 AM, Adrian Gropper <agropper@healthurl.com>
> wrote:
>
> Fabien,
>
> When requested, I have provided examples from healthcare, social media,
> GDPR, and other human-focused resources that are the major regulatory and
> privacy problems with the internet today.
>
> I know that Justin and you have world class experience with internet
> security and standards but can you try to respond to my arguments with
> examples of significant problems that cause compromise between security and
> human rights or use-cases that highlight how the tech problems of today
> will be addressed by GNAP?
>
> Adrian
>
> On Tue, Nov 29, 2022 at 1:03 AM Fabien Imbault <fabien.imbault@gmail.com>
> wrote:
>
>> Adrian,
>>
>> The fact that you find security and privacy considerations for GNAP is a
>> testament that you can't draw the line as you do (even if you intend it as
>> a simplified example).
>>
>> Also the AS might use policies (esp. in a corporate environment), but
>> doesn't need to in the general case. It might just act based on the "type"
>> of negotiation and some decision logic separate from identity. I think
>> that's a fairly different design compared to oauth2/oidc.
>>
>> Fabien
>>
>>
>> On Tue, 29 Nov 2022, 04:53 Adrian Gropper, <agropper@healthurl.com>
>> wrote:
>>
>>> On Mon, Nov 28, 2022 at 8:32 PM Justin Richer <jricher@mit.edu> wrote:
>>>
>>>> It is absolutely not doubling down, it is pointing out that the line is
>>>> drawn differently from where you are claiming it must be drawn.
>>>>
>>>> That difference is deeply important.
>>>>
>>>> That AS protecting an RS is a token factory. A regulatory body can
>>>> force a kind of or instance of AS to take inputs, including external
>>>> accounts, credentials, and policies, to create tokens for the RS’s it
>>>> protects.
>>>>
>>>> The AS doesn’t even need to know “who” the RO is anymore.
>>>>
>>>
>>> I find that last statement confusing. To act as a "token factory" for
>>> some RS, the AS must have policies specific to each RO. Google Docs AS has
>>> a list of people managed by the "owner". Twitter AS has a list of followers
>>> specific to an account. The RS only needs to know a scope associated with a
>>> token.
>>>
>>> The line I'm trying to draw is the same as GDPR Processor (as RS) and
>>> GDPR Controller (as AS). To oversimplify, the GDPR Processor has only
>>> security responsibility whereas the GDPR Controller has all privacy
>>> responsibility and it's security responsibility might be significantly less
>>> than the processor because the AS does not need to store or even see the
>>> resource itself - just the policies that it can use to issue tokens.
>>>
>>> How does GNAP draw the Processor / Controller line differently and why?
>>>
>>> Adrian
>>>
>>>
>>>
>>>
>>>>  — Justin
>>>>
>>>> On Nov 28, 2022, at 8:27 PM, Adrian Gropper <agropper@healthurl.com>
>>>> wrote:
>>>>
>>>> I read Justin's comment as doubling down on forced association.
>>>>
>>>> Protecting a resource that pertains to only one human subject does not
>>>> require the subject to share policies and requests with the protector. The
>>>> protector (be they RS or bundled RS+AS) merely needs to ensure that
>>>> authorizations that apply to the one subject do not negatively impact other
>>>> subjects hosted by the resource server. This distinction was extensively
>>>> discussed in the US federal hearings where I was an invited expert and the
>>>> conclusion / strategy I'm describing above was eventually approved by the
>>>> committee. Years later, and after significant congressional frustration,
>>>> the Information Blocking regulations came out based in part on the result
>>>> of that committee's work.
>>>>
>>>> Forced association is admittedly more "efficient" than what I'm
>>>> proposing but that's not surprising. Most human rights are less "efficient"
>>>> than the alternatives of making the powerful more powerful.
>>>>
>>>> Adrian
>>>>
>>>> On Mon, Nov 28, 2022 at 7:32 PM Justin Richer <jricher@mit.edu> wrote:
>>>>
>>>>> I would like to just point out that the “RS” talked about in the
>>>>> example here is not an “RS” in the GNAP definition. What’s called the RS
>>>>> below is actually a combination of a GNAP AS and RS — it’s the protected
>>>>> API and the security around it at a local level. The hospital doesn’t just
>>>>> run an RS, it runs an AS to protect, monitor, and audit that RS.
>>>>>
>>>>> This is just one reason why I think it’s vital not to get stuck on the
>>>>> “AS <-> RS connection” as the only mitigation, normative or otherwise. GNAP
>>>>> is very explicitly built to allow greater flexibility in how the AS makes
>>>>> its decisions as to who to give tokens to, and for what purpose — and this
>>>>> is where I believe the real power is. This is where we can get into
>>>>> delegation between people. This is where we can get into attenuation. This
>>>>> is where we can get into personal sovereignty. All of this is :input: to
>>>>> the AS, not replacement of the AS.
>>>>>
>>>>>  — Justin
>>>>>
>>>>> On Nov 28, 2022, at 6:35 PM, Adrian Gropper <agropper@healthurl.com>
>>>>> wrote:
>>>>>
>>>>> I agree that IETF can't stop an RS from doing anything. I also have
>>>>> more than a decade of experience with the issue of regulatory capture in
>>>>> this exact context. My experience includes extensive work on Kantara UMA,
>>>>> OpenID HEART, and invited testimony in Washington on this topic that
>>>>> current regulations call "Information Blocking" for directed access to
>>>>> health records. It's taken about a decade for government, in a totally
>>>>> bipartisan way, to figure out how to limit bad behavior by hospitals and
>>>>> their technology vendors. And, although the regulations are now final,
>>>>> enforcement is still to come. My position ith respect to GNAP is based on
>>>>> first-hand experience and implementation around OAuth and UMA in both the
>>>>> commercial hospital RS and government (Medicare) RS context.
>>>>>
>>>>> The "various stakeholders" that Fabien talks about include both
>>>>> regulators and the customers of IT products, patients and physicians have
>>>>> almost zero market power and are not considered stakeholders. I myself am
>>>>> self-funded and depend on volunteers for any example implementations.
>>>>> Information blocking regulation spent years developing what is hoped is an
>>>>> effective strategy for encouraging desired behavior by the IT vendors given
>>>>> that their customers were happy to hide their interest in exclusive deals
>>>>> and lack of transparency behind false dichotomies around security and
>>>>> privacy. Regulatory capture of standards continues as the industry picks
>>>>> and chooses which standards to develop and implement. As patients and
>>>>> physicians we still have practically no market power.
>>>>>
>>>>> What IETF and GNAP can do is make the regulator's job as easy as
>>>>> possible by being explicit, dare I say normative, in stating that there is
>>>>> no security compromise required in order to put resources under the control
>>>>> of the subject's agent. As standards engineers, we can allow for legitimate
>>>>> security exceptions just as health regulators allow for exceptions to the
>>>>> current information blocking rules. What we must avoid is making exceptions
>>>>> that apply to incompetent patients, for example, the reason to dilute
>>>>> control, through delegated authorization of the vast majority of the rest
>>>>> of us patients and physicians.
>>>>>
>>>>> Whether it's health or social media, control over personal information
>>>>> is being abused by powerful interests. Regulators and civil society need
>>>>> your help.
>>>>>
>>>>> Adrian
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Nov 28, 2022 at 5:13 PM Fabien Imbault <
>>>>> fabien.imbault@gmail.com> wrote:
>>>>>
>>>>>> Sorry but this doesn't make much sense imho. No normative requirement
>>>>>> can stop a RS to embed its own AS if it wants / needs to.
>>>>>>
>>>>>> What we can do is alert the various stakeholders on the risks and
>>>>>> provide pragmatic solutions for vast majority of implementers that do care.
>>>>>>
>>>>>>
>>>>>> On Mon, 28 Nov 2022, 22:55 Adrian Gropper, <agropper@healthurl.com>
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Nov 28, 2022 at 4:19 PM Alan Karp <alanhkarp@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> On Mon, Nov 28, 2022 at 11:52 AM Justin Richer <jricher@mit.edu>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Adrian,
>>>>>>>>>
>>>>>>>>> The core consideration you have raised is about the association
>>>>>>>>> between the RS and the AS.
>>>>>>>>>
>>>>>>>>
>>>>>>>> I don't think that's what Adrian is saying even though he keeps
>>>>>>>> using the term "AS."  I believe he just wants to be sure that the RO can
>>>>>>>> delegate authorizations to an agent of the RO's choosing.
>>>>>>>>
>>>>>>>
>>>>>>> It's not just that. In order to address the rise of hyperscale
>>>>>>> platforms, We need to ensure that any RS labeled GNAP does not offer any
>>>>>>> usability or convenience benefits for using a bundled AS as compared to a
>>>>>>> GNAP-standard request processing endpoint specified by the RO. History
>>>>>>> shows that surveillance (of RO policies and end-user requests) is typically
>>>>>>> traded for convenience and that privacy mitigations like "Notice and
>>>>>>> Consent" don't work. This is why a human rights approach is required to
>>>>>>> make the desired behavior the default behavior. This is also the reason I
>>>>>>> am pushing for normative treatment.
>>>>>>>
>>>>>>> Adrian
>>>>>>>
>>>>>> _______________________________________________
>>>>>> hrpc mailing list
>>>>>> hrpc@irtf.org
>>>>>> https://www.irtf.org/mailman/listinfo/hrpc
>>>>>>
>>>>>
>>>>>
>>>> _______________________________________________
>> hrpc mailing list
>> hrpc@irtf.org
>> https://www.irtf.org/mailman/listinfo/hrpc
>>
>
>