[cap-talk] cap-talk Digest, Vol 57, Issue 14
Mitsu Hadeishi
mitsu at syntheticzero.com
Mon Dec 29 17:34:49 EST 2008
I'd love to get into the specific details of it but the system Monty
and I worked on is still not fully released yet, so I think the
details of that particular system may need to stay somewhat under
wraps for a while (I'll defer to Monty about that question because
he's still working there and I'm working at another company now).
However, I can speak in general, theoretical terms.
So yes, in the case of the systems I've been referring to, they do
involve significant pluggability (in fact that's the whole point of
them). That would also apply to the Caja project which is open source
as you know, where they use capability security to allow using
Javascript libraries with far less security risk than raw Javascript
allows. In general the "layer" approach Monty and I are talking about
use capabilities for everything --- all access to any resource,
whatsoever, is, within the layer, mediated by a capability. I.e., you
need a capability to access the filesystem, a database, an internet
connection, to execute code, etc., everything. So in that sense the
capability model is not partial at all; it is complete --- within the
layer. The sense in which it is a layer is just that, underneath,
some of these capabilities are actually implemented by simply wrapping
ACL-based credentials. However, because everything within the layer
is based on capabilities, those ACL-based credentials are never used
directly --- they are only used by an administrator who has the
authority to create the capability (this authority itself also being a
capability). I think this is a general design that would apply to any
sort of layer-style capability system of the sort we're discussing.
Thus, ACLs only make an apperance on the edges of the system; they are
not used except to create what one might call root capabilities which,
once created, are passed around and used as capabilities, and can in
fact be further refined and wrapped to create more fine-grained
capabilities (i.e., a database service that only allows certain
queries, or only allows access to specific tables, etc., all without
having to reference ACLs at all).
So yes, these layers are, essentially, languages. However, I could
imagine building a system that used capability security as a form of
access control which wasn't a full-blown language, but merely used
capability security as a theoretical model for passing around
authority within the system. Such a system would be of less utility
but would still allow fine-grained and mixed permissions which are
very difficult to model with any role-based approach.
Mitsu
On Dec 29, 2008, at 12:32 PM, Steve Witham wrote:
>> From: Mitsu Hadeishi <mitsu at syntheticzero.com>
>>
>> [W]e found that it was quite
>> possible to implement capability security just at a specific layer of
>> a system, so that one can combine ordinary ACL-based security with
>> capability security principles to gain many of the benefits of cap
>> security without having to make every cooperating system capability
>> secure.
>
> Mitsu and Monty, to the extent you're able to talk about it,
>
> I'm curious what this looks like: how the cap layer is accessed by
> users or software making use of it, what sorts of plumbing go on
> within it, and how (and by what authorities) it in turn reaches out to
> things like disk files and internet connections.
>
> How does a user divide up his power on the outside, so that
> he's giving only limited powers to agents on the inside?
>
> I thought the benefit of cap security was in the ability to construct
> and connect things with components. That wouldn't seem very helpful
> if the layer within which you use capabilities is thin, static, or
> very simple. Do the layers you're thinking of involve significant
> constructability or plugability?
>
> Capability security means a safer framework for plugging new
> chunks of software together in. You don't get
> the benefit if one component works within one framework, but
> another component only works within an incompatible framework,
> right? So the tendency is to want larger & fewer frameworks.
>
> Conversely, doesn't any
> capability framework start to look like a language or OS?
> For instance, in the layer you're talking about, how can you
> implement objects within it such that bad code
> can't break out of its box? Each object its own OS process?
> A bytecode interpreter?
>
> --Steve
> P.S. "Deputy" is a good word.
> deputee, someone who's been deputed ("deputize" is newspeak)
> depute -- authorize, delegate
> impute -- attribute cause to, but also credit with a property
> dispute
> computation -- combining imputations
> repute -- reputation
> putative -- supposed or believed (of a quality)
> "From Latin putare, to prune, think, recon."
> http://en.wiktionary.org/wiki/puto#Latin :
> 1. I clean, cleanse.
> 2. I arrange, settle.
> 3. I value, esteem, deem, regard.
> 4. I judge, suspect, suppose.
> 5. I ponder, consider.
> _______________________________________________
> cap-talk mailing list
> cap-talk at mail.eros-os.org
> http://www.eros-os.org/mailman/listinfo/cap-talk
More information about the cap-talk
mailing list