[cap-talk] Delegating Responsibility in Digital Systems: Horton's "Who Done It?"
Mark S. Miller
markm at cs.jhu.edu
Mon May 28 20:18:50 EDT 2007
Charles Landau wrote:
> In Figure 1, there are two rectangles labeled "Bob". Are these two
> different objects? If not, did you make separate boxes just to avoid
> a tangle of arrows? It's a little confusing either way.
Clarifying text added:
"All such rectangles with the same label are references to the same Who object."
Thanks.
> makeproxy does not seem to use its first parameter.
The first parameter is now gone from the code and the diagrams. Thanks.
> What if B happens to have a getGuts method and A says b.getGuts()? It
> appears that P1 won't forward that. I can see how to fix this, but
> your simplified code doesn't do it.
>
> At line 03, P1 calls an arbitrary capability passed by A. It might be
> wise for P1 to use a primitive such as MyCap? to ensure it is talking
> to another proxy.
Weasel words added:
"P1 asks for the value of P2’s stub and whoBlame fields, which hold S2 and
Carol’s Who (03–05). (To protect against misbehaving app-objects, P1 actually
does this by rights amplification[11] rather than the getGuts message shown
here.)"
Thanks.
> It isn't clear what the purpose of the "t" in p3Desc is.
It's gone.
> There's a fair amount of calling between the mutually suspicious
> Alice, Bob, and Carol. As previously discussed (around
> http://www.eros-os.org/pipermail/cap-talk/2006-December/006278.html),
> there's no guarantee that these calls will return soon, if ever. For
> example, Carol has the ability to delay forever the message from A to
> B. In the absence of Horton, Carol is limited to delaying anyone who
> *invokes* C, but not anyone who merely *passes* C around. I doubt
> there's any way around this without something mutually trusted. In
> some concurrency models (KeyKOS/EROS/CapROS), the lack of a guarantee
> of a return will be a problem.
I chose not to try to say anything about this in the submitted paper. But to
address the points here, I have posted the following two variations of the
Horton code in the paper:
<http://www.erights.org/elib/capability/horton/base.html>, which is the
sequential code from the paper augmented only with logging, so we can see who
can log what.
<http://www.erights.org/elib/capability/horton/eventual.html> is the above
code modified so that all inter-principal interactions use only
eventual-sends, promises, and when expressions. This should enable these
principals to be run in separate vats. I claim this transformation avoid
introducing any liveness hazards beyond those present in a non-Horton mediated
interaction between A, B, and C. In particular, should Carol's S2 be
unresponsive, the argument B receives will be a promise that never resolves.
Resource considerations aside, this hazard is no worse than Carol's C being
unresponsive to messages from Bob.
Other differences between this Horton-mediated interaction and the
non-mediated interaction:
* The Horton-mediated interaction is constrained to proceed in E-Order even if
the base object-capability system only guarantees FIFO order. This isn't an
issue for E of course, but is for Horton on ref_send, since ref_send only
guarantees FIFO.
* The Horton-mediated interaction cannot pipeline requests even if the base
system does, since Horton needs to resolve who to blame before letting a
message get sent.
* In the unresponsive S2 case explained above, the undelivered messages sent
by B will be occupy memory in Bob's vat. In the base non-mediated system,
where the storage obligation falls depends on what's unresponsive. If Carol's
vat's remoting system is unresponsive, then Bob's vat is still burdened.
> "messages in flight" - cute, but "messages in transit" is more accurate.
fixed.
> skyhunter.com/marcs/SecurityPictureBook.ppt - would you please make
> this available in a non-proprietary format?
The link to the non-proprietary pdf is now in the paper.
The paper as submitted is at <http://www.erights.org/download/horton/document.pdf>
Thanks again!
--
Text by me above is hereby placed in the public domain
Cheers,
--MarkM
More information about the cap-talk
mailing list