Re: Capabilities interact nicely with Substructural Types and Reactivity

David Wagner <[email protected]>
Newsgroups gmane.comp.capabilities.general
Message-ID <[email protected]>
I admit I'm puzzled by your email.  Have you looked at
E's DeepFrozen and Joe-E's Immutable in detail?  There
seem to be a number of points that don't seem to match
how I would have described the situation.

I confess I don't understand how using immutable/DeepFrozen
objects/types is "selling out", but maybe that just reflects a
difference in values or philosophy or something.  So I'll let
that one pass by.

Despite what you write, in Joe-E, the Immutable type does
not forbid code from constructing its own local mutable state.
In Joe-E it is possible to write a method that is verifiably
deterministic (meaning that its externally-observable
behavior is deterministic) yet also uses local mutable state.
So, your characterization is not quite right.

As far as loss of expressivity, the Joe-E paper discusses some
implementation experience with using Joe-E, so there is some data
on this you can peruse if you are interested.  Would you like
references to the Joe-E papers?

Contrary to what you write, Joe-E's Immutable type does provide a
way to ensure determinism.  Read the papers for details of how that
works; it's a little more detailed than I want to try to summarize in
this
email.  It's a good idea to understand the design before critiquing
it.  E's DeepFrozen might work a little bit differently, and I can't
speak
to the details of how it interacts with verifiable determinism, but
others might be able to.

Generally speaking, in a capability design, if you want to let untrusted
code access some capabilities and not others, a typical strategy
is to pass the untrusted code the capabilities you want it to have
access to and take care to never pass it the capabilities you don't.

I suspect we're talking past each other somehow....

-- David

On Thu, Sep 12, 2013, at 01:42 PM, David Barbour wrote:
> What draws me to capability security is the promise of
> security-by-construction, the promise of robust composition. I want
> flexible expression without a computer telling me 'no' after I obey the
> rules that are locally and syntactically valid.
> 
> It is true that relying on deep introspection and white-box analysis can
> offer extra guarantees.
> 
> But to depend on it seems like cheating, like selling out.
> 
> Further, relying on analysis can damage expressiveness. For example, it
> may
> be that we want to forbid the untrusted code from constructing its own
> local state, while at the same time we wish for the untrusted code to use
> capabilities that provide access to our (potentially audited) state.
> Unless
> DeepFrozen is designed with this idea in mind (e.g. accepting a
> capability
> whitelist), it can reject valid programs; and even if it does accept a
> whitelist, the act of building the whitelist results in a
> non-compositional
> system.
> 
> Compare: if obtaining state is granted by capability, rather than by
> ambient authority, then you could easily enforce deep frozen or immutable
> structures, or partially frozen, or anything in between. Without
> analysis.
> It would be constructive, compositional.
> 
> ...
> 
> And despite your selling out, a DeepFrozen auditor still doesn't address
> the issue of determinism. It can still create a unique stateful object
> every time it is called with the same argument.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.