[cap-talk] What sustained interest in capabilities
Mitsu Hadeishi
mitsu at syntheticzero.com
Sun Dec 28 02:21:11 EST 2008
On Dec 27, 2008, at 7:35 PM, David-Sarah Hopwood wrote:
> That's true to a certain extent. The main deficiency of this
> approach is
> that you end up with a system in which it may be possible to bypass
> the
> capability layer by taking advantage of flaws in other layers. There
> are also impedence mismatches between the layers that use different
> access control approaches. For these reasons, I consider it only to be
> a short-term solution.
Of course, these are concerns, but as Voltaire said, "Le mieux est
l'ennemi du bien" (the perfect is the enemy of the good). The
emphasis I've seen on top-to-bottom capability systems I believe has
impeded the spread of capability security ideas in practice, and the
net result is capability security remains a relatively little-known
and little-practiced architectural approach, when in fact, in my view,
it can and should be practiced right now, in production systems, as
Monty and I and the rest of us have done at our startup, as Google has
with the Caja project, and as I've done in another project I can't
discuss yet. Capability security, even implemented in just one layer,
can solve very real, practical security problems today (the project I
can't discuss had been wrestling with these problems for months prior
to my arrival on the project --- and capability security turned out to
be just the solution they were looking for).
Whenever you have any sort of scriptable system (for example, the Caja
folks dealing with Javascript) there's a vast space of potential
attacks that can occur even when the layer in question is operating
perfectly (i.e., even if you aren't relying on bugs in the underlying
system, buffer overflow errors, etc.) Making the programmable layer
itself capability secure can enable authority management techniques
that are simply impossible with role-based security, and enable
sharing of libraries and other code with far less risk. Of course,
there's always the possibility the layer can be breached, but my point
is even a correctly functioning layer, written using role-based
security, can pose huge risks, and in fact those risks dominate the
security picture.
The "impedance mismatch" is also far less of a problem than it may
seem, it turns out, for reasons I won't elaborate on in detail here,
but in brief it's because once you wrap an external ACL-based service
in a capability (which can have arbitrarily complex code controlling
access), the laws of capability authority transfer then take over.
You really don't have to think in terms of ACLs at all, or the fact
that the service itself is unaware of the capability wrapper, from the
POV of the layer it is pure capabilities.
>> I think this strategy ought to be applied far more frequently; [...]
>
> I agree with that, but possibly for a different reason: replacing
> layers
> individually is probably the only practical way to get to a top-to-
> bottom
> capability system in the longer term.
I'm simply going to have to disagree here, quite strongly. A well-
implemented capability security layer can be a huge boon for its own
reasons. I agree that in the long run, a top-to-bottom capability
world may well be desirable, but I suppose I quite disagree that this
is the main reason to build capability layers. Capability security
layers have their own powerful semantics which are immensely useful on
their own terms, and at the same time would serve to propagate the
concepts to the larger engineering world. I was asked once when I
presented some of my ideas to one senior engineer, "If capability
security is so great, why hasn't it been more widely adopted by now?"
I said I really didn't understand it myself, since it's so useful, but
I thought one reason is there's been too much focus on "pure" top-to-
bottom systems, and not enough on implementing layers and wrappers,
despite the fact that layers and wrappers can give you a lot of benefit.
>
>
> --
> David-Sarah Hopwood ⚥
>
> _______________________________________________
> 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