8 Sep 2004 16:00
Revocation myth persists in ACM Queue article
Quoting from the "Capabilities and Naming Rights" section of: http://portal.acm.org/citation.cfm?id=1016998.1017001&coll=ACM&dl=ACM&idx=1016998&part=periodical&WantType=periodical&title=Queue&CFID=26935421&CFTOKEN=97178047 "The “capabilities” approach performs an access check upon first access, and then provides a reference to an object based on that check, which may be used indefinitely in the future. A widely used example of the capability model is the Unix file descriptor. This permits the continued use of a file-system object following an initial lookup and access check. The model emphasizes performance and simpler application error handling—at the cost of revocation—and relies on the safety of local and global naming schemes." The irony is that this paper is about virtualizing the filesystem to achieve better access control. I guess the myth is so ingrained that the author never even considered virtualizing the file descriptor, even though he was writing a paper about virtualization. Tyler -- -- The web-calculus is the union of REST and capability-based security. http://www.waterken.com/dev/Web/
Toby:
I think that perhaps you have fallen prey to a ``levels of abstraction''
error. You seem to be looking at a protection mechanism -- capabilities
-- and asking what policies it implements/prohibits. Capabilities are a
policy-neutral mechanism. Like every other protection mechanism I can
think of, it is possible to misconfigure a system in such a way that
policy enforcement becomes broken.
While there are other protection mechanisms (most notably RBAC-derived
and DTE-derived mechanisms) that can enforce selected security policies,
capabilities appear (to date) to be the *simplest* such mechanism.
Speaking subjectively, I also find that they are the easiest to reason
about, but this may result from the fact that I am most familiar with
capabilities rather than from any intrinsic advantages they may have.
If I recall the thread of discussion correctly, you have raised two
issues:
1. How do we ensure enforcement of some particular policy X
given that arbitrary policies can be constructed, and that
these other policies may be running on the same machine.
2. How do we reason (you asked: how do we reason formally) about
which capability transfers are "legal" when we wish to enforce
some particular policy.
RSS Feed