On Fri, Jan 6, 2012 at 8:31 AM, David Bruant <span dir="ltr"><<a href="mailto:bruant.d@gmail.com">bruant.d@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">Le 06/01/2012 06:03, Mark S. Miller a écrit :<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Such a built in memoization, whether by boundTo or this enhancement to bind itself, creates a fatal ambient communications channel.<div class="im"><br>
<br>
    // initSES initialization, freezing all built in primordials other than the true global<br>
<br>
    // load Alice as a confined object graph<br>
<br>
    // load Bob as a confined object graph. Alice and Bob should not be able to communicate<br>
    // Covert channels mean we might not be able to prevent them from communicating bits<br>
    // But we must certainly prevent capability leaks<br>
<br>
    Alice says<br>
<br>
        Object.boundTo(Object).foo = capabilityBobShouldntGet;<br>
<br></div><div class="im">
    Bob says<br>
<br>
        var HAH = Object.boundTo(Object).foo;<br>
</div></blockquote>
If Alice and Bob have been loaded as confined object graphs, they could both be exposed different objects for what each refer to as "Object", no?</blockquote><div><br></div><div>It depends on the intentions of the party that instantiated the confined Alice and Bob -- call her Carol the Confiner, or simply Carol.</div>
<div><br></div><div>If Carol wants to have a rich interaction with Alice and Bob, then she will typically want Alice, Bob, and Carol to all exist within a single SES context (frame) and thereby share the same Object. That way, none of them have to worry about the weird and complex behavior of, for example, instanceof, when computing across multiple frames.</div>
<div><br></div><div>Very concretely, Carol will want to have the same Object as Alice, and to have the same Object as Bob. Therefore, Alice and Bob will have the same Object as each other. Sharing Object and the other accessible built-in primordials (i.e., all the primordials except the global object) is safe in SES because the accessible primordial state contains no communications channels. To a first approximation, it contains no mutable state at all. The only exceptions are Date.now(), Date(), and Math.random(), none of which creates a communications channel.</div>
<div><br></div><div>[...]</div><div><br></div><div> > Ps: by the way, what does "HAH" mean?</div></div><br>It is Bob's evil laugh, as Alice and Bob have successfully conspired to leak capabilityBobShouldntGet to Bob.<br clear="all">
<div><br></div>-- <br>    Cheers,<br>    --MarkM<br>