W3C home > Mailing lists > Public > public-credentials@w3.org > December 2020

Re: VCs - zCaps / OCap a Discussion

From: Adrian Gropper <agropper@healthurl.com>
Date: Thu, 10 Dec 2020 20:00:22 -0500
Message-ID: <CANYRo8hbhDbiGXTiK-=MTPXZSKbEeEfT-oRC4UVkwRS0u9esdw@mail.gmail.com>
To: Alan Karp <alanhkarp@gmail.com>
Cc: "W3C Credentials CG (Public List)" <public-credentials@w3.org>
*inline...*

On Thu, Dec 10, 2020 at 7:39 PM Alan Karp <alanhkarp@gmail.com> wrote:

> Adrian Gropper <agropper@healthurl.com> wrote:
>
>>
>> *Progress! *
>>
>> Progress indeed.
>
>>
>> On Thu, Dec 10, 2020 at 5:09 PM Alan Karp <alanhkarp@gmail.com> wrote:
>>
>>> Adrian Gropper <agropper@healthurl.com> wrote:
>>>
>>
>
>> Sorry.  You used the terms PEP and PDP, which I learned the same time I
>>> learned of PAP.  I thought they naturally go together.  A good description
>>> is at https://ldapwiki.com/wiki/Policy%20Based%20Management%20System.
>>> Basically, the PAP manages access authorization policies.
>>>
>>
>>
>> *No worries. I always presume the perspective of the data subject or DID
>> controller and the near-universal GDPR terminology of Data Processor and
>> Data Controller because that introduces the regulatory issues. Much of the
>> jargon predates human-centricity, zero-trust architectures, and
>> self-sovereign anything. *
>>
>
> I still have trouble keeping the GDPR terminology straight.
>
>>
>> *Here, I'm trying to stay as close as I can to SSI intent while bringing
>> in the most common of real-world use cases, like writing a prescription.*
>>
>>>
>>>> In the systems I know, the PEP stands between the client and the
>>>> service.  When a request comes in, the PEP forwards the request to the
>>>> PDP.  The PDP evaluates the policy provided by the PAP and returns an
>>>> Allow/Deny decision to the PEP.
>>>>
>>>
>>
>> *Yes, the PEP stands between the Client and the Service (Company A). *
>>
>> *No, Company A does not see a request because that violates data
>> minimization principles. Company A MUST redirect a Client or user agent to
>> the PDP + PEP combo so the request can be evaluated against policy that is
>> private to the Data Controller.*
>>
>
> Good point.  For simplicity, I usually assume the Data Controller is the
> same entity as the service provider.  Here, both Company A.
>
>>
>> *Yes, the PEP evaluates the policy and prepares the PDP to Allow/Deny a
>> capability introspection if required by the PEP. *
>>
>
*BIG typo on my part. I meant the PAP evaluates policy.*

>
> In the link I sent you, the PDP evaluates the policy and sends Allow/Deny
> to the PEP.
>
>
>> *In many cases, the PEP simply executes the capability because it is
>> deemed authentic without introspection.*
>>
>
> I don't see how that can possibly work.  Even with a bearer token, you
> have to verify that the requested invocation is allowed by the ocap.
> With certificate-based ocaps, at the very least, you need to check
> signatures.  You also get a vulnerability if you don't validate the
> delegation chain.  Company A can give me permission to invoke method X.  I
> can then delegate to you permission to invoke methods X and Y.
>

*This is above my pay grade. All I know is that some tokens don't need
introspection for things like scope or revocation whereas some tokens are
just an opaque handle to be introspected at the PDP. I fancy the result is
the same in terms of privacy but I may be missing a lot when it comes to
validating a delegation chain. I could be wrong about my terminology but
that's the behavior in the use-cases I'm familiar with.*

>
>>
>>>
>>>> PDP - A service controlled by Alice as data subject. This service is
>>>> not controlled by anyone else. It represents Alice's persona or identity to
>>>> everyone else.
>>>>
>>>
>>> That's a very different definition of a Policy Decision Point (PDP) than
>>> I've been using.
>>>
>>
>> *Sorry. I think we're getting to a shared understanding. My interest, and
>> the GDPR framing, is to allocate the security risk to Company A and the
>> privacy risk to the entity that has the policy and can therefore process
>> the request. If we all agree to use PEP for the entity that is the Data
>> Controller then I can drop the PDP term. Does anyone care?*
>>
>
> Since the PEP talks to untrusted clients, you want it to make it as simple
> as possible, which is why most deployments have a separate PDP.   Since
> that's just an implementation detail, we can call it the validator.  That
> word explains what it does without getting into implementation details.  Of
> course, if PEP is the term GDPR uses, we should stick to it.
>

*Here we still have a bit of confusion with terminology. My goal is a
separation of concerns to remove as much of the privacy liability from the
service as possible. Period. I think that goal aligns with GDPR, CCPA,
CPRA, and other regulatory approaches.  *

>
>>
>>>
>>>> A Request endpoint at the PDP where an input (from Bob and some user
>>>> agent of Bob's) is evaluated against Policy to return an authorization to
>>>> Bob's user agent.
>>>>
>>>
>>> That's the way it works in an ocap system.  In a conventional
>>> authentication-based system, the PDP directly sends an Allow/Deny response
>>> to the PEP instead of returning an authorization.
>>>
>>
>> *See above. I'm not proposing that the request be visible anywhere other
>> than the entity that holds the policy. Call the entities involved in any
>> decisions whatever you prefer. The PEP is clear as protecting the Data
>> Processor.  *
>>
>
> The API part of the request has to be visible to the service, of course.
>


*No. The request is never seen by the service (Company A) for privacy
reasons. I don't know what "the API part of the request" means. The PAP has
the policies and and an API to receive requests. *

>
>>
>>>
>>>> A Client - that may be operated by either Alice or Bob or Charlie that
>>>> presents a capability to the Company A PEP.
>>>>
>>>
>>> That's my definition.
>>>
>>
>> *This is the beauty of GNAP and why I think it fits nicely with a
>> capabilities-based, GDPR resonant, and zero-trust architecture.*
>>
>
> I guess I'll have to dig into GNAP.  All I know about now I got from
> Justin's oauth.xyz talk.
>

*Nov 17 version: GNAP:
https://datatracker.ietf.org/doc/draft-ietf-gnap-core-protocol/?include_text=1
<https://datatracker.ietf.org/doc/draft-ietf-gnap-core-protocol/?include_text=1>
*

>
>>
>>>> The Client software statement is an _optional_ certificate that may be
>>>> presented to the PEP.
>>>>
>>>
>>> How is the software statement used?
>>>
>>
>> *Even in a world where the Data Processor is denied much controller
>> privilege, they still have some claims on control in the name of security
>> or legal mandates. It is typical for these processors to need the
>> opportunity to raise exceptions if they don't like the smell of the Client
>> and capabilities combo.*
>>
>
> So it's only used for Deny?
>

*Yes, pretty much, although "Break the Glass" is another common pattern.
Break-the-glass works if there's an audit mechanism to keep the
authentication-based access honest.*

*Adrian *

>
> --------------
> Alan Karp
>
>>
Received on Friday, 11 December 2020 01:00:48 UTC

This archive was generated by hypermail 2.4.0 : Friday, 11 December 2020 01:00:49 UTC