[cap-talk] Capability analogies

David Hopwood david.hopwood at industrial-designers.co.uk
Thu Oct 4 08:45:43 EDT 2007


Ka-Ping Yee wrote:
[...]
> The typical real-world analogy for a capability system is a key.  If
> you possess the right key, you can unlock the door and enter the room.
> This analogy errs *against* capabilities:
> 
>   - It ignores confinement.  People are free to move about the world
>     and interact with anyone.  So, naturally you can give anyone your
>     key, or a copy of it.  Not true for programs.
> 
>   - It ignores delegation, to a degree.  It is usually obvious that
>     keys are easier to delegate than IDs -- you can lend your friend
>     a key.  But it is not usual for people to carry around key cutters
>     and make duplicate keys instantly, whenever they want.
> 
>   - It ignores behaviour.  Keys are inert, but capabilities have
>     programmable behaviour.  You can't give a key to a key.  That's
>     nonsense.  But of course you can pass capabilities as arguments
>     to other capabilities.
> 
>   - It ignores attenuation.  When people think about keys it doesn't
>     occur to them that one could create keys on the fly that provide
>     temporary access to the room -- or even to different parts of
>     the room.  It is completely counterintuitive that one could do
>     this without rekeying (reprogramming) the door, but just by
>     programming the keys.

It also ignores the fact that in a capability system, capabilities are
the usual way to designate anything. In terms of the analogy, it is as
if everyone spoke in a language in which words were keys (and you could
only speak a word if someone had spoken it to you, or if you had made
it up uniquely).

-- 
David Hopwood <david.hopwood at industrial-designers.co.uk>




More information about the cap-talk mailing list