[cap-talk] keyrings and bootstrapping capabilities

Peter Amstutz tetron at interreality.org
Thu May 24 11:53:20 EDT 2007


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?

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 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.  Access to the keyring would be carefully controlled, of course, 
and by ensuring that untrusted code is never granted access to the 
keyring, you can still delegate authority without giving away the keys 
to the city.

Accomdating groups in this scheme is trivial, as a "group" simply 
becomes a keyring shared between multiple users.

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.

This may be the conventional solution -- I'm not sure, the E-Rights page 
is heavy on theory and abstract transactions, and light on design 
patterns in practice.

Are there any particular holes in this approach, and if so, are there 
alternate preferred ways of designing a capability system that address 
a) and b) above?  I think capabilities are the right underlying tool, 
but the user experience needs to be more or less the same as how people 
interact with computer security now (minus the security breaches, 
spyware, viruses etc :-)

-- 
[   Peter Amstutz  ][ tetron at interreality.org ][ peter.amstutz at gdit.com ]
[Lead Programmer][Interreality Project][Virtual Reality for the Internet]
[ VOS: Next Generation Internet Communication][ http://interreality.org ]
[ http://interreality.org/~tetron ][ pgpkey:  pgpkeys.mit.edu  18C21DF7 ]

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://www.eros-os.org/pipermail/cap-talk/attachments/20070524/32d15db1/attachment.bin 


More information about the cap-talk mailing list