[cap-talk] What Boebert actually proved (was: Confinement Confusion (was: Communicating conspirators))

Fred Spiessens f.spiessens at 4c.ucc.ie
Tue Jul 18 02:56:18 EDT 2006


On 18 Jul 2006, at 05:48, Toby Murray wrote:
>
> Karget's work also argues that we need to restricted delegation in  
> order
> to achieve "confinement" (the *-property). It cites Boebert here
> erroneously I think because  Boebert's argument doesn't rely on
> unrestricted delegation but instead relies upon having no distinction
> between caps and data.

I've be wanting to give my two cent meaning for some time about how
http://www.erights.org/elib/capability/duals/myths.html
treats Boebert.
I think Karge has chosen the most probable interpretation of  
Boebert's proof, and, just like Boebert, is "only" confused by the  
difference between permission and authority.

I will not go into the difference between the *-property and  
confinement in this mail.

Boebert says : "In capability systems, every permission to exercise  
access carries with it a permission to delegate".
Crucial is where he uses this idea in his proof:  "The program places  
RW_low_object  in low_object"
-  "the program" is the adversary with low clearance,
-  "RW_low_object"  is  that adversary's Read-Write capability to a  
low-confidentiality file, and
-  "low_object" is that low-confidentiality file.

Depending on the interpretation of that sentence, he makes either one  
of the following mistakes:

1) Since low_object is a file,  "places" can be interpreted as  
"writes", and then he made an error right here: forgetting that  
capabilities are unforgeable and can therefore not be data and thus  
not be written to a file.  (I have more to say about this.)

2) "places" is interpreted as "delegates". This interpretation should  
have our preference, because he is arguing that "a permission to  
exercise access should not carry with it a permission to delegate".  
He definitely assumes that capabilities work like this: all of  
Alice's  capabilities-to-target-Bob give her the authority to  
delegate any of her capabilities-to-target-whomever to Bob.
	2a) It is possible that he makes this assumption on false grounds,  
and then this mistake can be explained as  confusing authority with  
permission. In Object-Capabilities we have only one right  
(permission) : access-permission, and it comes with NO guaranteed  
MINIMAL authority (e.g. Bob has still access to the Caretaker after  
revocation of his authority to Carol). If you forget that, you may  
confuse the true fact: "delegation never needs any permissions beyond  
access", with the false idea:  "all access provides you with the  
authority to delegate".
		There are grounds for this confusion, in the fact that some  
capability systems have (only) capabilities-with-guaranteed-minimum- 
authority. These can be modeled by Take-Grant systems.
	2b) But it is also possible that he is talking exactly about  
imaginary "capability systems" that actually work like this.  These  
would be modeled by take-grant systems that combine every write-right  
with a grant-right to the same target. (In that case he would still  
be mistaken, because his example also assumes, without explicitly  
stating it, that every read-right is combined with a take-right to  
the same target too.)

Thus Boebert's proof actually proves this:
If  write-capabilities guarantee grant-authority and read- 
capabilities guarantee take-authority,  then the *-property cannot be  
guaranteed by a simple clearance-level based policy to hand out read- 
capabilities and write-capabilities.

That is TRUE, but:
- not relevant for object capabilities because "access", the only  
permission, comes with no guaranteed authority. All authority stems  
from collaboration, completely mediated by the behavior of both  
invoker and responder. It is enough that one of them has suitably  
restricted behavior (It may not always be easy to find such suitably  
restricted behavior, and to prove that it is suitably restricted, but  
in the *-property case it is really simple: interpose a data-diode)
- not relevant for capabilities that have separate "take" and "grant"  
permissions.

It is somewhat more relevant for capabilities-as-unguessable-data,  
because write-authority to a file, followed by subsequent read- 
authority to that file would amount to delegate-authority.  In that  
case one has to:
- either make sure that capabilities come with no guaranteed  
authority (mediation by both behaviors, like object capabilities)
- or don't use a simple clearance-level based policy to hand out read- 
capabilities and write-capabilities (this may complicate things of  
course)

The solution simply follows from the strong preconditions of what  
Boebert really proved :
=> Avoid that all read and all write authority is carried by  
capabilities that guarantee delegation authority.
	o for instance, use access-permission-only Object-Capabilities like  
in E: they can easily provide as little as zero guaranteed authority.
	o or use Take-Grant capabilities that have no delegation-authority  
guaranteed by any other capabilities than take- or grant-capabilities  
themselves. (The normal Take-Grant systems will do just fine).
	o if you use capabilities-as-unguessable-data, find a way to  
distinguish authority-to-write-plain-data form authority-to-write- 
capabilities-as-data. In many cases that can be feasible (e.g.  
compete behavior mediation).

  In http://www.erights.org/elib/capability/duals/myths.html#confine
it is argued that:
"To prevent Alice from delegating to Bob, don't give Alice access to  
Bob."
"A subgraph of cooperating objects cannot delegate to Bob if Bob is  
not reachable from that subgraph"
--> This ALSO confuses permission with authority: Alice should get  
authority to Bob without getting authority to delegate to Bob.
--> Preventing  that Bob becomes indirectly-connected-in-the-access- 
graph to Alice, cuts of ALL of Alice's authority-to-Bob.
--> The solution is always in the authority-reducing behavior of a  
suitably inter-positioned relied-upon subject.

-------
Fred Spiessens
Research Scientist Secure Software at
Cork Constraint Computation Centre
http://4c.ucc.ie/~fsp


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.eros-os.org/pipermail/cap-talk/attachments/20060718/b00689eb/attachment-0001.html 


More information about the cap-talk mailing list