[cap-talk] OLPC talk - implications of cap-like security?

Ivan Krstić krstic at solarsail.hcs.harvard.edu
Mon Jul 2 19:19:39 EDT 2007


On Jul 1, 2007, at 1:45 AM, Mark Miller wrote:
> I watched your talk, which I quite enjoyed. My compliments.

Thanks!

> you refer to a "bitfrost specification". Has an actual spec been
> posted yet?

As someone pointed out, I was referring to the architecture-level  
spec (there's a nicer-to-read version of it at <http:// 
wiki.laptop.org/go/OLPC_Bitfrost>), not the implementation one. The  
latter was scheduled to be done a while ago, but for a number of  
reasons, the implementation details ended up strongly fluctuating  
until just very recently. I posted a status update on the security  
implementation two days ago to the OLPC development list:

     <http://lists.laptop.org/pipermail/devel/2007-June/005622.html>

With that finally unblocked, writing an implementation-level  
specification is back in my queue but the realities of our schedule  
mean it's no longer possible to produce one before we ship the  
laptops, unfortunately.

> I'm curious to know what you mean by "object store" above.

We want to preserve the use of files as binary blobs as is common  
today, but we also want for there to exist a rich centralized (system- 
wide, file format-independent) metadata layer on top of that. So we  
have an object store that keeps track of all the files on the system  
in an embedded database, allowing for versioning, tagging, and so  
forth -- while still mapping those rich metadata records to actual  
file blobs. This is very similar to what any version control system  
does, really, except we're making it more featureful and managing all  
the files on our machine in this way.

Now, when an application asks to open a file, the user is asked to  
choose not a filename from a filesystem but an object from a  
hierarchy-free store; the object can be a picture, a chat transcript,  
a text document, a web page, an e-mail, etc. The application can  
specify only wanting to open a particular kind of object, of course.

The way an application asks to open a file is to send a message  
through D-BUS (purely an IPC mechanism) to the object store, which  
gets a trusted chooser ("powerbox") shown to the user, and then  
materializes the file blob for the object of the user's choosing in  
the application's directory space. Finally, it sends the application  
a message telling it the filename that just appeared in its space and  
also allowing access to the corresponding metadata record.

> Do you use D-BUS for communication between mutually suspicious
> processes? Do you treat D-BUS object "names" as unguessable (sparse)
> capabilities?

Suspicious processes -- user applications, termed 'activities' in  
OLPC-speak -- can only communicate with system services. They cannot  
communicate with one another, or even see that other suspicious  
processes are running or such applications installed. For all any  
activity knows, it's the only program installed on the machine aside  
from the operating system.

> It occurs to me that Plash <http://plash.beasts.org> may already solve
> many of the same problems you're facing. AFAIK, it uses Unix Domain
> Sockets for inter-process communication, so it can use file
> descriptors directly as object-capabilities. Have you looked at it?

Yes, I'm aware of Plash. In some ways, Bitfrost is solving a far  
wider problem than sandboxing FS views: we also want network  
isolation, resource consumption constraints, variable granularity  
(not just per-process), etc.

> I like your choice of VServer for what you're doing. But every time
> you use the term "VM" to describe it, I get confused and then have to
> remind myself: "He means virtual operating system, not virtual
> machine." If it were a VM, then I could run different OSes in
> different VMs.

A bunch of the VM people I talk to refer to containers as "container- 
based VMs". I've devolved into saying VM because most people I talk  
to aren't familiar with the idea of containers.

> Can VServers within one host Linux communicate with each other using
> Unix Domain Sockets? If the answer is currently "no", how easy would
> it be to fix this?

Sure, if you let them.

Cheers,

--
Ivan Krstić <krstic at solarsail.hcs.harvard.edu> | GPG: 0x147C722D




More information about the cap-talk mailing list