[cap-talk] keyrings and bootstrapping capabilities
Kevin Reid
kpreid at mac.com
Thu May 24 12:33:45 EDT 2007
On May 24, 2007, at 11:53, Peter Amstutz wrote:
> As part of the system I'm designing that I discussed the previous
> thread, I've been mulling over the bootstrapping problem for a
> capability system. In particular, I see two challenges:
>
> a) Alice and Bob are looking at directory D. Alice has read-only
> access to the directory and all its contents. Bob has read-only
> access to the directory (cannot add or delete files), but read-
> write access to certain specific files. If Alice shares her read-
> only reference to the directory with Bob, how does Bob determine
> which files he can write to?
Bob asks for (or already has, in a suitable table) each of his RW
files' read-only facets (or no-authority identifying facets if they
have them), and checks for equality to those of the files in the
directory Alice provided to Bob.
> b) A user sits down at a public terminal and wants to log in to a
> remote system and edit a file for which he knows a public
> identifier, but doesn't happen to have the 128 bit capability key
> granting write access on hand. The user should be able to log in
> with a user name and password and then be able to go on to acquire
> the capability to permit editing the file.
The user name and password (or just a password!) constitute access to
the user's "home directory" of capabilities, from which he (his
software) can look up his own access to the file given its "public
identifier".
> The best solution I have been able to come up with seems to provide
> the user a "keyring" of capabilities. When some code acting on
> behalf of the user requires higher access than is available from
> the reference it currently holds, it would look up the object
> identifier in the keyring to get the best capability for that
> object that has been granted to that user.
I think this is essentially the same as what I described above, but
the way you say it makes me think of ambient authority and/or over-
broad use of rights amplification.
> In following with the c-list implementation I described previously,
> each capability key that is distributed would be logged with a user
> id. Revoking a user's access to part or all of the system would be
> a matter of revoking the capabilities granted to that user.
Such management need not be built into the core of the capability
system - it need not know anything about user IDs. Take a look at the
Horton system discussed recently.
--
Kevin Reid <http://homepage.mac.com/kpreid/>
More information about the cap-talk
mailing list