Communicating Conspirators

Mark S. Miller markm@caplet.com
Mon, 15 Nov 1999 11:52:31 -0800


At 07:20 AM 11/10/99 , Ralph Hartley wrote:
>You are making the logical error of assuming that because your
>notation can not express a difference that there is no difference.

Hi Ralph, I find it hard to imagine how you think I'm making that mistake.  
On that very page I say:

>This unenforceable prohibition is the only case that ACLs can express but 
>capabilities cannot. However, neither ACLs nor any force in the universe can 
>prevent what is here prohibited, so this extra expressiveness only gives the 
>users a false sense of security -- misleading them about what inabilities of 
>the other players they may count on.

I think I'm pretty clear here that ACLs can express this & capabilities 
cannot.  I am not claiming that it's unenforceable *because* capabilities 
cannot express it.  Rather I'm saying that, *since* it's unenforceable, for 
other reasons, it's fortunate that capabilities can't express it, and 
unfortunate for ACLs that they can.  It is a bug, not a feature, for a 
security system to allow the expression of unenforceable prohibitions.  The 
resulting confusion makes everyone less safe.

Or did I misunderstand what error you think I'm making?

>There are two unstated assumptions that you appear to make.
>
>     All communication is two way and continuous.

Not unstated at all.  Part of the definition of this situation, 
Communicating Conspirators, is "Bob and Mallet are properly in 
communication".  As opposed to Confinement 
http://www.erights.org/elib/capability/confinement.html , for which the 
corresponding part of the definition is "Mallet and Bob are not supposed to 
be able to communicate."  Perhaps you missed the orienting page 
http://www.erights.org/elib/capability/delegations.html setting up and 
distinguishing the four situations?

>     All powers can be described as the ability to send or receive a
>message.

Within the electronic world, I see no alternative.  I suspect this is where 
our real disagreement lies.

>The first assumption is the less problematical one. Depending on how
>it is violated it can result in a great number of different cases
>which may or may not be describable in terms of capabilities, but it
>does not change the results of the question you pose.

Violating the first assumption -- by trying to prevent various kinds of 
communication between Mallet and Bob -- does in fact have many cases, which 
to my mind are the various cases of confinement.  However, I have no ideas 
whether the distinctions I would make among confinement cases maps at all to 
the cases you have in mind.  Since you agree it does not bear on the matter 
at hand, we can defer this.

>The other assumption is more important. Consider the following
>scenario.
>
>Alice wishes to allow Bob, but not Mallet (who is in communication
>with Bob) to have sex with her. Unfortunately Bob's character may not
>be as good as she thinks; he could actually be working for Mallet who
>has designs on Alice.

If you are speaking of the physical world, sure.  If Alice has the lights 
on, she can tell with adequate probability who has walked into her bedroom.  
Bob and Mallet between them do not have adequate technology for Bob to 
enable Mallet to use his appearance and smell (or whatever other 
authentication cues Alice uses) in order to allow Mallet to have sex with 
Alice while Alice thinks it is Bob.

However, this isn't the physical world we are talking about here -- it is 
the world inside of computation.  The corresponding analogy might be phone 
sex.  Bob would be the handsome stupid fellow with the small nose.  Mallet 
would by Cyrano De Bergerac passing messages to Bob for Bob to read.

>Clearly the capability model has no way of dealing with, or even
>properly talking about, this situation. Fortunately ACLs can handle
>this easily.

ACLs can *express* this easily.  I said this explicitly.  My claim is that 
this prohibition is unenforceable.  Nothing has any way to handle it, but 
ACLs have a way to pretend to handle it.  In the electronic world, Alice 
cannot authorize a person, she can only authorize computation supposedly 
acting on behalf of that person.  For purposes of this argument, we can even 
drop the "supposedly".

In an ACL system, if she authorizes computation operating on behalf of Bob's 
principle, and Bob's principle is not prevented from putting Bob in 
communication with Mallet, then *how* can an ACLs system actually prevent 
Bob from enabling Mallet to do whatever Alice enabled Bob's principle to do? 
Until you explain *how* this proxying of access is preventable, in an ACL 
system or any other system, you haven't challenged anything I said.

>I can easily think of numerous (though less graphic) situations where
>I might want to grant a non-transferable power. This is why the word
>"Non-transferable" appears in so many contracts. Contrary to common
>belief, lawyers are not paid to litigate meaningless distinctions
>(though sometimes they do).

I have no doubt that preventing delegation among communicating conspirators 
is something many would want -- including myself! -- if one could find a 
meaningful definition of some such thing that could actually be prevented.  
If you have one, I'd be delighted.  Please reread carefully my two 
descriptions, of the allowed and of the prohibited situations.  Since you 
are claiming there is a meaningful distinction to be found -- in the 
electronic world -- either you can explain to me why these two are not 
equivalent, or you can offer alternate descriptions.

>Of course if powers are restricted to consist only of the ability to
>communicate, then there is no distinction since communication is
>transitive. But this restriction rules out a vast part, perhaps a
>majority of things that security is needed for.

Isn't it the case that whatever powers a computational entity has, it 
exercises those powers by issuing some kind of invocation or command?  Is 
not that invocation or command described by information that is somehow 
communicated to an underlying system that can bring it about?  For example, 
a process under an operating system exercises powers by performing a system 
call.  This communicates only information across the user/system boundary.

If Bob can exercise his authorized powers only by communicating information 
to the operating system, why can't Mallet adequately instruct Bob also by 
communicating only information to Bob?  If Mallet can instruct -- only by 
communicating information -- Bob to issue the invocation or command Mallet 
is interested in, how is that different, for Mallet's purposes, from Mallet 
issuing the invocation or command himself?  

Of course, it's possible I've completely misunderstood you.  If so, I hope 
this message gives you enough understanding of my confusion that you can 
clarify.


         Cheers,
         --MarkM