W3C home > Mailing lists > Public > public-credentials@w3.org > September 2022

Re: Funded Deployments of Verifiable Credentials - framework for meta-credentials

From: Alan Karp <alanhkarp@gmail.com>
Date: Tue, 13 Sep 2022 10:01:54 -0700
Message-ID: <CANpA1Z1Dx+DN7iqvb8gBR19i3rVtB3wAZrewU9+a+2FRh-f72g@mail.gmail.com>
To: David Chadwick <david.chadwick@crosswordcybersecurity.com>
Cc: "W3C Credentials CG (Public List)" <public-credentials@w3.org>
On Tue, Sep 13, 2022 at 1:16 AM David Chadwick <
david.chadwick@crosswordcybersecurity.com> wrote:

> I should have said there is no separate deputy entity. The PEP is of
> course the deputy using your terminology. So we have resolved this issue
>
I do not agree.  Many services mediate your requests.  When you log into
your account at Dropbox and ask to see a particular file, your request does
not go directly to the PEP.  A component of the web server makes the
request on your behalf.  That component is a deputy.  The same is true in a
microservices architecture.  Your request may pass through dozens of
microservices before the resource you specify is accessed.

--------------
Alan Karp


On Tue, Sep 13, 2022 at 1:16 AM David Chadwick <
david.chadwick@crosswordcybersecurity.com> wrote:

> I should have said there is no separate deputy entity. The PEP is of
> course the deputy using your terminology. So we have resolved this issue
>
> Kind regards
>
> David
> On 12/09/2022 19:16, Alan Karp wrote:
>
> On Mon, Sep 12, 2022 at 10:47 AM David Chadwick <
> david.chadwick@crosswordcybersecurity.com> wrote:
>
>> I think we have finally hit the nub of the problem.
>>
>> In your view there is the user, PEP, deputy and resource, but in the
>> ABAC/PEP/PDP model there is only the user, PEP and resource (with the PDP
>> off to the side). There is no deputy in the latter architecture
>>
> If there is no deputy with resource permissions of its own, then there is
> nobody to be confused.  However, it is quite common to invoke a service
> specifying a resource and have that service access it.  In that case, the
> service is the deputy.
>
> --------------
> Alan Karp
>
>
> On Mon, Sep 12, 2022 at 10:47 AM David Chadwick <
> david.chadwick@crosswordcybersecurity.com> wrote:
>
>> I think we have finally hit the nub of the problem.
>>
>> In your view there is the user, PEP, deputy and resource, but in the
>> ABAC/PEP/PDP model there is only the user, PEP and resource (with the PDP
>> off to the side). There is no deputy in the latter architecture
>>
>> Kind regards
>>
>> David
>> On 12/09/2022 18:15, Alan Karp wrote:
>>
>> On Mon, Sep 12, 2022 at 9:55 AM David Chadwick <
>> d.w.chadwick@truetrust.co.uk> wrote:
>>
>>>
>>> On 12/09/2022 17:34, Alan Karp wrote:
>>>
>>> I just popped out to pick up some bagels.  While standing in line I
>>> realized why I've been missing your point.  (Something about the smell of
>>> onion bagels?)
>>>
>>> I hope they tasted good :-)
>>>
>> Izzy's Brooklyn Bagels are the best.
>>
>>> You are saying that the deputy submits the request with the user's VC.
>>> Is that right?
>>>
>>> In ABAC the entity is called the PEP (policy enforcement point). But in
>>> your terminology it is a deputy since the user asks it to do something on
>>> its behalf.
>>>
>>
>> I believe you are talking about 2 parties, the user and the PEP acting as
>> deputy.  I am talking about 3 parties, the user, the deputy, and the PEP.
>>
>>>
>>> There are two problems with that.  First,  it's a gross violation of the
>>> Principle of Least Privilege,
>>>
>>> No its not, because prior to this step, the user requested to do
>>> something, and the PEP returned its LP policy, saying if you want to do
>>> this, then I need the following VCs from you. So LP has already been
>>> enforced because the PEP is required (in Europe at least due to GDPR) to
>>> only request those claims that are needed for the task in hand. (DIF has
>>> produced a draft spec for this request, called Presentation Exchange, to
>>> which the user returns a VP).
>>>
>> The problem is that a claim can authorize many permissions, not just the
>> one needed for a given request.
>>
>>>
>>> because the deputy can use any of the user's permissions.
>>>
>>> Again you are missing the point that the PEP is a trusted component of
>>> the resource site. So it would not request the wrong action on behalf of
>>> the user, and it could not use the user's VCs itself because it cannot
>>> prove possession of them.
>>>
>> See above.  There is a third party acting as the deputy.
>>
>>> Second, it only avoids confused deputy in the simplest case where there
>>> is only one argument.  You can still have a confused deputy when there are
>>> multiple arguments, and some need the permissions of the user and the
>>> others the permissions of the deputy.
>>>
>>> Now you are confusing me, because in the ABAC model the deputy never
>>> uses its own permissions to enact the task requested by the user (other
>>> than the ambient authority as we have agreed). If the user wants to perform
>>> a series of tasks, then the entire process is repeated so that least
>>> privileges is ensured for each action through the different VCs that the
>>> user presents to the PEP each time.
>>>
>> In the classic confused deputy described by Norm Hardy, there are two
>> arguments in the call.  One should use the permissions of the user; the
>> other, the permissions of the deputy.
>>
>> --------------
>> Alan Karp
>>
>>
>> On Mon, Sep 12, 2022 at 9:55 AM David Chadwick <
>> d.w.chadwick@truetrust.co.uk> wrote:
>>
>>>
>>> On 12/09/2022 17:34, Alan Karp wrote:
>>>
>>> I just popped out to pick up some bagels.  While standing in line I
>>> realized why I've been missing your point.  (Something about the smell of
>>> onion bagels?)
>>>
>>> I hope they tasted good :-)
>>>
>>>
>>>
>>> You are saying that the deputy submits the request with the user's VC.
>>> Is that right?
>>>
>>> In ABAC the entity is called the PEP (policy enforcement point). But in
>>> your terminology it is a deputy since the user asks it to do something on
>>> its behalf.
>>>
>>>
>>> There are two problems with that.  First,  it's a gross violation of the
>>> Principle of Least Privilege,
>>>
>>> No its not, because prior to this step, the user requested to do
>>> something, and the PEP returned its LP policy, saying if you want to do
>>> this, then I need the following VCs from you. So LP has already been
>>> enforced because the PEP is required (in Europe at least due to GDPR) to
>>> only request those claims that are needed for the task in hand. (DIF has
>>> produced a draft spec for this request, called Presentation Exchange, to
>>> which the user returns a VP).
>>>
>>>
>>> because the deputy can use any of the user's permissions.
>>>
>>> Again you are missing the point that the PEP is a trusted component of
>>> the resource site. So it would not request the wrong action on behalf of
>>> the user, and it could not use the user's VCs itself because it cannot
>>> prove possession of them.
>>>
>>>
>>> Second, it only avoids confused deputy in the simplest case where there
>>> is only one argument.  You can still have a confused deputy when there are
>>> multiple arguments, and some need the permissions of the user and the
>>> others the permissions of the deputy.
>>>
>>> Now you are confusing me, because in the ABAC model the deputy never
>>> uses its own permissions to enact the task requested by the user (other
>>> than the ambient authority as we have agreed). If the user wants to perform
>>> a series of tasks, then the entire process is repeated so that least
>>> privileges is ensured for each action through the different VCs that the
>>> user presents to the PEP each time.
>>>
>>> Kind regards
>>>
>>> David
>>>
>>>
>>> --------------
>>> Alan Karp
>>>
>>>
>>> On Sun, Sep 11, 2022 at 6:51 AM David Chadwick <
>>> d.w.chadwick@truetrust.co.uk> wrote:
>>>
>>>> Alan
>>>>
>>>> your argument is inconsistent. First you say the  PEP (which makes the
>>>> access request to the PDP) is never a confused deputy, then you say the
>>>> deputy (which makes the access request to the PDP) has the potential to be
>>>> a confused deputy. Which is it please?
>>>>
>>>> Second the PEP is a trusted component of the resource infrastructure
>>>> and therefore would never make "any" request to the PDP. It will only ever
>>>> make the request that the VC Holder is making (barring a bug in the
>>>> implementation). This is the beauty of the claim based infrastructure, the
>>>> VC holder decides the designation to make, whilst the resource holder
>>>> decides which designations are allowed and which are not, thereby greatly
>>>> increasing the flexibility of the system.
>>>>
>>>> Whilst I appreciate the difference between a claims based VC and
>>>> capability based VC, there is no possibility of a confused deputy in either
>>>> case (given an un-buggy implementation).
>>>>
>>>> Kind regards
>>>>
>>>> David
>>>> On 10/09/2022 23:36, Alan Karp wrote:
>>>>
>>>> On Sat, Sep 10, 2022 at 2:30 AM David Chadwick <
>>>> d.w.chadwick@truetrust.co.uk> wrote:
>>>>
>>>>> I think the model works perfectly well for both capability and claims
>>>>> based VCs. The gatekeeper/PEP blocks the user's access, passes the user's
>>>>> VCs (of either type) to the appropriate PDP (clearly there will be
>>>>> different policies for capability based and claims based VCs) and acts upon
>>>>> the result. In neither case does the PEP pass its own VCs. So there is no
>>>>> possibility of a confused deputy in either case (unless I have
>>>>> misunderstood something)
>>>>>
>>>> The PEP is never a confused deputy.  (In the simplest case, the PEP
>>>> only has permission to invoke the PDP.)  The confused deputy is one user
>>>> (the deputy) performing an action requested by another user.  The deputy
>>>> can be a confused deputy any time you separate designation from
>>>> authorization.
>>>>
>>>> An authorization VC necessarily designates a single resource and
>>>> specifies which operations on that resource are being authorized. Hence,
>>>> designation and authorization are combined in the VC, and there is no
>>>> confused deputy.  Note that the user delegates to the deputy a new
>>>> authorization VC for attenuation, selective revocation, and audit purposes.
>>>>
>>>> A claims VC says something about the holder, and typically does not
>>>> designate a specific resource.  When presented for access, the PDP checks
>>>> some property specified in the VC and makes an access decision for a
>>>> resource specified in the request.  Here designation and authorization are
>>>> separated, so there is a possibility of a confused deputy.  You might say
>>>> you are safer because the deputy can include the user's claims VC in the
>>>> request, but that would let the deputy make any request with the user's
>>>> claims VC, whether the user wants it done or not.
>>>>
>>>> The essential difference is that the authorization VC specifies
>>>> something about a specific resource, while a claims VC says something about
>>>> the holder.
>>>>
>>>> --------------
>>>> Alan Karp
>>>>
>>>>
>>>> On Sat, Sep 10, 2022 at 2:30 AM David Chadwick <
>>>> d.w.chadwick@truetrust.co.uk> wrote:
>>>>
>>>>>
>>>>> On 09/09/2022 21:16, Alan Karp wrote:
>>>>>
>>>>> On Fri, Sep 9, 2022 at 9:57 AM David Chadwick <
>>>>> david.chadwick@crosswordcybersecurity.com> wrote:
>>>>>
>>>>>> Sorry this just isn't the case. In the case of VCs, the user is
>>>>>> wanting to access a resource with their own VCs, and the resource has a
>>>>>> gatekeeper/PEP which is the Verifier/RP (the deputy in your terminology).
>>>>>> So the RP verifies the VC, then validates the VC, and if and only if the
>>>>>> verification and validation rules are passed is the user allowed to access
>>>>>> the resource. The RP does not use its own VCs during this process (in fact
>>>>>> it usually wont have any). I think you are thinking of the process that
>>>>>> takes place after the user has been granted (or denied) access. In this
>>>>>> case, say reading records from a database, the RP (deputy) is indeed the
>>>>>> user accessing the resource (on behalf of the real user). But the RP
>>>>>> already knows (from the PDP it queried) that the user has the necessary
>>>>>> permissions.
>>>>>>
>>>>> Clearly, I completely misunderstood your point.  If the user invokes
>>>>> the deputy with an authorization VC, we are talking about a capability
>>>>> invocation.  There is no confused deputy vulnerability.  I thought you were
>>>>> saying that the user invokes the deputy with a claims VC.  You might have a
>>>>> confused deputy depending on how you use those claims to make the access
>>>>> decision.
>>>>>
>>>>> I think the model works perfectly well for both capability and claims
>>>>> based VCs. The gatekeeper/PEP blocks the user's access, passes the user's
>>>>> VCs (of either type) to the appropriate PDP (clearly there will be
>>>>> different policies for capability based and claims based VCs) and acts upon
>>>>> the result. In neither case does the PEP pass its own VCs. So there is no
>>>>> possibility of a confused deputy in either case (unless I have
>>>>> misunderstood something)
>>>>>
>>>>> Kind regards
>>>>>
>>>>> David
>>>>>
>>>>>
>>>>>
>>>>> --------------
>>>>> Alan Karp
>>>>>
>>>>>
>>>>> On Fri, Sep 9, 2022 at 9:57 AM David Chadwick <
>>>>> david.chadwick@crosswordcybersecurity.com> wrote:
>>>>>
>>>>>>
>>>>>> On 09/09/2022 17:36, Alan Karp wrote:
>>>>>>
>>>>>> On Fri, Sep 9, 2022 at 2:49 AM David Chadwick <
>>>>>> d.w.chadwick@truetrust.co.uk> wrote:
>>>>>>
>>>>>>> Hi Alan
>>>>>>>
>>>>>>> we did discuss this many years ago in the context of X.509 Attribute
>>>>>>> Certificates and at the time you did agree that they could be used.
>>>>>>>
>>>>>> Yes, they can be used.  The question is if overloading something
>>>>>> meant as a form of authentication should also be used as a form of
>>>>>> authorization.  I have no problem doing that if the certificate clearly
>>>>>> indicates which of them it is for.
>>>>>>
>>>>>>> and providing their credentials. The deputy (acting as a PEP) then
>>>>>>> checks that these credentials are sufficient to do what was requested (by
>>>>>>> calling a PDP and passing the user's credentials. Note it NEVER passes its
>>>>>>> own). If the PDP returns OK then the user is granted access, otherwise the
>>>>>>> user is denied access. So there is no chance of the confused deputy
>>>>>>> situation arising.
>>>>>>>
>>>>>> I think that's the disconnect.  The deputy is not acting as a PEP.
>>>>>> As far as the PEP is concerned, the deputy is just another user.
>>>>>>
>>>>>>
>>>>>> Sorry this just isn't the case. In the case of VCs, the user is
>>>>>> wanting to access a resource with their own VCs, and the resource has a
>>>>>> gatekeeper/PEP which is the Verifier/RP (the deputy in your terminology).
>>>>>> So the RP verifies the VC, then validates the VC, and if and only if the
>>>>>> verification and validation rules are passed is the user allowed to access
>>>>>> the resource. The RP does not use its own VCs during this process (in fact
>>>>>> it usually wont have any). I think you are thinking of the process that
>>>>>> takes place after the user has been granted (or denied) access. In this
>>>>>> case, say reading records from a database, the RP (deputy) is indeed the
>>>>>> user accessing the resource (on behalf of the real user). But the RP
>>>>>> already knows (from the PDP it queried) that the user has the necessary
>>>>>> permissions.
>>>>>>
>>>>>>
>>>>>> Consider a simple use case in which the user asks the deputy to
>>>>>> translate a document from French to German and put the result in a
>>>>>> specified place.  The user never accesses either file directly.  It simply
>>>>>> tells the deputy which files to use.  It is the deputy that will do the
>>>>>> reading and writing, so the PEP makes the access decision based on the
>>>>>> deputy, not the user.
>>>>>>
>>>>>> We are talking about different PEPs. In my case, say I go to the
>>>>>> google translate web service with my browser, and say that it is not a free
>>>>>> service but a permissioned one. Then I pass my VCs to the google PEP (web
>>>>>> service) asking it to translate the attached French document. The PEP
>>>>>> checks my VCs by passing them to its PDP, and either grants or denies me
>>>>>> permission. If the PDP grants me permission based on my VCs, then the PEP
>>>>>> will ask for the translation to take place and return the German document
>>>>>> to me. I think you are talking about this latter step. But this latter step
>>>>>> will never take place if the user did not have the required permissions in
>>>>>> the first place.
>>>>>>
>>>>>> Kind regards
>>>>>>
>>>>>> David
>>>>>>
>>>>>> No the access decision has already been made by the PDP and enforced
>>>>>>> by the deputy. Of course if the PDP's policy is wrong, then the user could
>>>>>>> be granted access, but that is not a confused deputy it is a bug in
>>>>>>> implementation.
>>>>>>>
>>>>>>>
>>>>>>> In fact, the verifier does not even know who the user is.
>>>>>>>
>>>>>>> In the ABAC model the verifier (PDP) does have the subject
>>>>>>> attributes, resource attributes, action attributes and environment
>>>>>>> attributes in order to make the access control decision.
>>>>>>>
>>>>>> In the cases in which you have a confused deputy vulnerability, the
>>>>>> subject is the deputy, not the user.
>>>>>>
>>>>>>>
>>>>>>> The result can be a confused deputy.
>>>>>>>
>>>>>>>> Of course with an appropriate schema we can constrain VCs to be
>>>>>>>> capabilities, but in general this would lose the benefits of the RBAC/ABAC
>>>>>>>> model. However where the use case requires it e.g. key to open hotel room,
>>>>>>>> then it is easily achieved with VCs.
>>>>>>>>
>>>>>>> Roles, attributes, and even access control lists are fine ways to
>>>>>>> describe access policies.  In a capability system, those policies are used
>>>>>>> to decide who gets which capabilities.
>>>>>>>
>>>>>>> And a bug in that policy would give a capability to someone who
>>>>>>> should not have it. So both models can suffer from bugs in implementation.
>>>>>>>
>>>>>> Correct.
>>>>>>
>>>>>> --------------
>>>>>> Alan Karp
>>>>>>
>>>>>>>
Received on Tuesday, 13 September 2022 17:10:12 UTC

This archive was generated by hypermail 2.4.0 : Tuesday, 13 September 2022 17:10:13 UTC