[cap-talk] The last 10% and Bitfrost (now with paper)

Ivan Krstić krstic at solarsail.hcs.harvard.edu
Mon Jul 9 18:29:50 EDT 2007


[Was: [cap-talk] Horton at HotSec '07: How broadly object/capability?]

On Jul 9, 2007, at 7:03 AM, Jed Donnelley wrote:
> I believe a number of systems have completed what I consider
> to be that final 10% (I could name some - but:), I think
> the issue comes down to achieving 100% and at the same time
> sufficient compatibility with legacy systems to have enough
> code running to increase market share.  That hasn't happened
> that I know of.

That's precisely what I'm saying. If we want to see capabilities in  
the real world, the final 10% of the work *is* the integration with  
(at least a selection of) existing and entrenched operating systems,  
and the derivation of a compelling and smooth transition path from  
where we are today. That's the work that hasn't been done, and is  
very hard to do. We have strong evidence from history of what happens  
when people pretend that they can avoid doing this work: exactly  
nothing. And thus, one might wonder if it's the right thing to do at  
all.

> Probably best the subject of another message.  I think the key
> is the dynamics.  That is, from what I understand of your bitfrost
> mechanism, it is able to support fine grained access (though I
> didn't see how access to files is controlled/communicated),
> but the means for managing such access (e.g. running programs
> initializing by requesting access rights) seems to me rather
> ad hoc and a bit complex (e.g. "certain bundles of rights"
> allowed by policy).

It's neither ad-hoc nor complex, but it is static (allocated at  
install-time) and not very fine-grained (the entirety of the program  
has access to all its permissions, and it isn't possible to support  
different modes of operation of the program having different  
permissions). It's far less elegant than capabilities, to be sure,  
and the mathematician in me balks at this. But it's the tradeoff I  
chose to make because it brings very strong immediate benefits and  
creates a relatively smooth transition path from full ambient  
authority towards the kind of finely-grained permission model that I  
see capabilities as representing.

> When you say that "The laptop's user can use the built-in security
> panel to grant additional rights to any application" - this sounds
> like what's been referred to on this list as a "power box".

I understood the powerbox to be an interface put forward by the TCB  
that allows the user to grant a capability (such as dealing with a  
file) to an untrusted program in a secure way -- please let me know  
if this is a misunderstanding. We implement a powerbox file chooser  
in Bitfrost. That is not what the security panel bit refers to -- the  
security panel is an interface allowing advanced users to grant or  
revoke permissions (e.g. network access) to and from installed  
software, and which the software can't request by itself.

The Bitfrost paper I'm presenting at SOUPS (at CMU, on July 20th) is  
now up:

     http://radian.org/~krstic/bitfrost_2007.pdf

and has more detail in a format that's probably easier to read than  
the requirements spec. I strongly welcome feedback, either privately  
or on-list. If any of you folks are planning to come to SOUPS or are  
in the area, let me know off-list; I'd be happy to meet up and chat  
over a beer.

> How does
> such a "security panel" communicate additional permissions to a
> running program?  Sounds like capability communication to me - by
> whatever name.

It's not. Additional permissions are granted by having the TCB mutate  
the program's permission list in a trusted permission database it  
keeps. This permission list takes effect the next time that the  
security service, which is a part of the TCB, initializes the program  
in question. In many cases, the additional permissions can be given  
to a running program by making things (files, sockets, devices)  
appear in its file space. If necessary, the program can be  
asynchronously notified of the "thing" appearing by virtue of D-BUS,  
a standard IPC mechanism, but the message that's communicated isn't a  
capability; it's merely a "this thing just appeared at this place in  
your filesystem" message.

Cheers,

--
Ivan Krstić <krstic at solarsail.hcs.harvard.edu> | http://radian.org




More information about the cap-talk mailing list