[cap-talk] Communicating conspirators (Re: Second ABAC Google talk is now up)
Mark S. Miller
markm at cs.jhu.edu
Sun Jul 16 23:23:49 EDT 2006
Toby Murray wrote:
> [...] All involve the creation of a proxy that reduces the authority that's
> given to Bob.
> 1. The proxy is "use once", in that it breaks its own link after being
> invoked. This might work, depending on how Bob's "foo" operation is
> implemented.
> 2. The proxy only proxies those methods of Carol that Bob needs to call
> during his "foo" operation.
> 3. The proxy is an instance of Redell's Caretaker. We call its "revoke"
> method after calling bob.foo(carol).
>
> Each solution is probably valid in different cases, depending on the
> original motivation for only wanting Bob to have access to Carol during
> the "foo" operation.
Yes. Fortunately, all are easily implementable in E and several other objcap
languages.
Norm Hardy has mentioned a distinction between foreseen and unforeseen
authority attenuators. When an abstraction exports a method for obtaining a
reduced authority facet on itself (such as asking a File capability for a
read-only facet on itself), this is an attenuation of authority that was
foreseen by the abstraction's designer. When a filtering facet (such as a
Caretaker) is placed in front of an abstraction, this is an attenuation of
authority that the abstraction's designer did not need to foresee.
All three of the attenuators you list can be foreseen or unforeseen. I mention
this because often the form of revocation that's desired is not as leaky as
the Caretaker and not as absolute as the membrane. Some of the revocation
interfaces in the E libraries, such as TextWriter, are exported by the
abstraction in question. The precise statement of what they revoke when is
designed along with the abstraction in question.
On the one hand, building in such custom foreseen revocability results in a
less well factored system - similar revocation logic is repeated within each
such abstraction. OTOH, such custom revocation logic may fit better than
composition with a generic solution. This is similar to tensions that come up
with many normal, non-security-oriented, object design patterns.
--
Text by me above is hereby placed in the public domain
Cheers,
--MarkM
More information about the cap-talk
mailing list