--
You received this message because you are subscribed to the Google Groups "cap-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cap-talk+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/cap-talk/CANpA1Z19m%2Bnwboe8H_SrwR%2B%2BuW8ZgtwQNCnMNSENVt07tqFqDA%40mail.gmail.com.
On Tue, Jun 16, 2026 at 11:48 AM Alan Karp <alan...@gmail.com> wrote:
>
> It's not unusual for a certificate delegation to be for multiple methods and multiple resources. For example, you can delegate read/write permission to several files in a single certificate. I've been insisting that such a delegation certificate can't be used in an invocation; you have to delegate to yourself exactly the one resource you want to use. My intuition is that a capability must designate a specific object.
>
> I'm currently reviewing a spec that doesn't have that restriction, and I'm having trouble justifying that constraint. Are there any issues with using a multi-resource delegation in an invocation aside from an extra line in the spec telling you how to designate the specific resource?
I was never familiar with this restriction in non-certificate systems
until you had brought it up in a previous conversation.
I can kind of justify it though based on an argument against
convenience. Let's say that a father has a certificate for his
tool-shop
containing all the tools, including some dangerous power tools. It can
be more convenient to just share the list of tools (it's already
made),
than to say share a certificate granting access to just a single
screwdriver to someone who may not be capable of using the entire list
of tools safely.
People are more likely to over-share more than the necessary amount of
authority if their unit of sharing is a bucket in which they store
multiple objects.
I have less concerns about this than say directories, which are
mutable and can suffer from forgetfulness about what you've shared in
the bucket and who you've shared it with previously.
That is to say, in a certificate it seems like the full receipt of
authorities that are granted are visible at grant time, so I struggle
to see there being a problem with "confusion".
But I can imagine a situation in which it is easier to over-share,
than it is to go through the process of creating a new certificate
with just the least authority necessary for the task.
At the very least it doesn't promote or promise that the natural unit
of sharing is the least authority way.
--
You received this message because you are subscribed to the Google Groups "cap-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cap-talk+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/cap-talk/CACTLOFqE4QHWxxatcc4RBJnr31ETyToLh_bJ3xYgauTP%2BMA0PA%40mail.gmail.com.
In this case, I’m confused between delegation and attenuation. Can you have an attenuated certificate?
To view this discussion visit https://groups.google.com/d/msgid/cap-talk/CACTLOFqTNE9kE39SoGMh2aw6ZFuWwWkgLPj6jL7cHp%2BUrSQw2g%40mail.gmail.com.
On Tue, Jun 16, 2026 at 8:59 PM Matt Rice <rat...@gmail.com> wrote:
Could you comment on how naming of resources works in multiple
resource delegation?
Because one thing that bothers me is, a certificate delegating a
single resource can go one of two ways.
It can name the resource within, (named by the issuer), or it can
leave the resource as an opaque identifier to be named by the
receiver.
I'm unfamiliar with any capability systems that have capabilities
named by their issuer or origin. It seems like trouble.
I find it unfathomable that a certificate with multiple resources
follows the pattern where resources are named by the receiver.
How would such a system distinguish the individual resources delegated?
I probably would not have considered a certificate delegating a single
resource, which carries its name from the issuer to be a capability.
Because issuer supplied names shouldn't necessarily be trusted.
This is not a problem of invocation of a resource within a
multi-resource delegation though. But something which feels like an
underlying problem.
I still don't like that supplying a multi-resource certificate as
proof of the single resource you tend to invoke seems to reveal more
information than is necessary to invoke the single resource.
> --------------
> Alan Karp
>
> The issuer of the root certificate names the resources. The receiver of the
> delegation has a local name for the certificate. Is that your concern?
Yes, that is basically my concern.
The veracity of issuer supplied names are pretty suspect
and highly dependent upon the trust relationship between the issuer
and the receiver.
For instance if I have a capability named "inbox for the bob donation fund",
which I didn't receive from bob, but rather received from one Mr.
Ponzi whom I have no real
relationship with, despite knowing and trusting bob the purported
destination (Mr. Ponzi may know that and exploit it).
I'm pretty skeptical of anything involving remote human meaningful naming.
Moreso if these are objects like inboxes rather than data files like *.mp3.
If the appropriate response to receiving a named resource is todisregard the name because it cannot be trusted,why should we be teaching people not to trust the name, and insteadjust not include the name.
What exactly is an "invocation?"
So about "issues with multi-resource delegation." In Op256, a "multi-resource delegation" would have to get expanded into a separate assertion for each resource. Otherwise, the security checks would become more complicated. But maybe not unreasonably so.
--
You received this message because you are subscribed to the Google Groups "cap-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cap-talk+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/cap-talk/CAFwScO_5qJtcQsrSgdWMgSHWQ%2BcffEE5B%2B6wLK0uVEmwPUOxwA%40mail.gmail.com.
I had mentioned this, and I thought that you had said that this wouldhappen anyways when redelegating the single resource, because the new
certificate forms a chain which relies upon the original delegation.
Perhaps we were talking past one another.
To view this discussion visit https://groups.google.com/d/msgid/cap-talk/CACTLOFoiRCT525bc7VUpNdVOhS1xew2i3ST3hJETZOvAGYQ71w%40mail.gmail.com.
In an object reference as capability system, a.foo(b) is an invocation, and b is a delegation because object a will be able to use object b.
In an object reference as capability system, a.foo(b) is an invocation, and b is a delegation because object a will be able to use object b.It seems that an object-reference-as-capability system is already implicitly bundling permissions, as it appears that a capability to object-a grants permission to invoke all of object-a's methods.