[cap-talk] Capability levels - transparent network extension, no encryption

Jed at Webstart donnelley1 at webstart.com
Fri Aug 18 17:42:18 CDT 2006


At 02:51 PM 8/18/2006, Jed Donnelley wrote:
>At 05:46 PM 8/17/2006, Mark S. Miller wrote:
>>Jed at Webstart wrote:
>> >> Yes, if Alice, Bob, and Carol are mutually non-reliant machines
>> >> plugged in to the Internet, Alice cannot safely make assumptions
>> >> about who Bob cannot talk to. OTOH, within an object-capability
>> >> system, if Bob is an object instantiated by Alice, Alice can know
>> >> that Bob can talk to only those that Alice has enabled him to talk
>> >> to. This is the difference.
>> >
>> > I understand.  Now consider a situation where Bob is a process on
>> > a separate CCS on the other side of an "open" network, but where
>> > the two CCS systems communicate over an encrypted link (e.g. latest
>> > KGx) and then use something like the DCCS mechanism to distribute
>> > capabilities between the systems.  Under this scenario Alice creates a
>> > remote "Bob" and initializes it with the limited capabilities that Bob
>> > should have.  I.e. Bob is confined by the remote CCS system much
>> > like Bob could be confined locally.  In that case can one trust the
>> > confinement across the 'open' network?
>>
>>Can who trust...? I care about - can Alice trust...? Since, by assumption
>>(mutually non reliant machines), Alice does not trust the machine Bob is
>>running on, the answer is no. Alice cannot trust that Bob's 
>>platform (machine,
>>TCB, whatever) is playing by the rules. Therefore, she can't trust that Bob
>>doesn't have other access.

I think I see where my confusion is.  I think I misunderstood what 
you meant by "mutually non-reliant machines" plugged into the 
Internet - though in retrospect I think your wording is clear.  I was 
focusing on the network as the "non reliant" hardware that I was 
trying to extend over, but assuming that the machines at both ends 
(what I refer to as the CCSs) can be depended on.

However, tying this back to the source, this is the quote from your 
thesis that I was concerned with:
_______________________________________________________________
"11.5 The Limits of Decentralized Access Control

This dissertation mentions three forms of capability system: 
operating systems like DVH,
programming languages like the non-distributed subset of E, and 
cryptographic capability
protocols like Pluribus. The object-capability model we have 
presented applies only to the
first two: operating systems and programming languages. Our model 
implicitly assumes a
mutually relied upon platform, which is therefore a central point of 
failure. In the absence
of this assumption, we are left only with cryptographic enforcement 
mechanisms. Cryptog-
raphy by itself can only enforce weaker access control properties. In 
exchange, cryptography
enables us to build systems with no central points of failure."
_________________________________________________________________

Perhaps you can see where my confusion came from.  You say "Our model 
implicitly assumes a mutually relied upon platform [e.g. as you seem 
to suggest above the two CCS systems that mutually rely on each 
other], which is therefore a central point of failure."  Why is it 
that a "mutually relied upon platform" implies a single point of 
failure?  Remember our discussion about distributed hardware (no 
single point of failure) that can reliably process network addresses 
and how something like a DCCS can be build on such an infrastructure.

I wonder if I'm not somehow also misunderstanding the above.  The 
specific issue that I don't understand is how cryptographic systems 
can achieve any more fault tolerance than non cryptographic systems - 
or visa versa, how non-cryptographic system are necessarily less 
fault tolerant.  From my perspective (e.g. consider a "cryptographic 
system" like Amoeba or NLTSS vs. a non-cryptographic system like the 
DCCS) the fault tolerances issues are the same.  A failure in a 
component CCS takes down that part of the system and anything that 
depends on it, but not the whole distributed system.  Similarly a 
failure in a component of a cryptographic distributed capability 
system takes down anything that depends on that component and not the 
whole distributed system.  Can you clarify (perhaps only for me - 
apologies if so) what you mean in the above?  Does this issue come 
back to our discussion of an "open" (can't depend on network 
addresses) network vs. a network where network addresses can be 
trusted - but still with no central point of failure?

 From my perspective a transparent network extension of a CCS such as 
the DCCS could be implemented without cryptography (as was done in 
the DCCS paper) or with cryptography (e.g. as described in the 
Managing Domains paper - though in a strictly network context) and 
the fault tolerance would be the same.  You seem to suggest that such 
implementations must necessarily be different regarding single points 
of failure.  I'd like to understand why.  I hope we're not going in a 
loop here.

--Jed http://www.webstart.com/jed/ 




More information about the cap-talk mailing list