Check out the new USENIX Web site. next up previous
Next: Active Name Programs Up: Active Name Architecture Previous: Overview

Extensibility

To support extensibility, the architecture follows the philosophy of providing a basic set of building blocks and allowing services and clients maximum freedom to customize the systems for their needs [1]. At minimum, each resolver must provide a loader for fetching and loading an active name program, safe execution of untrusted code, local soft state, and interfaces for communicating with and invoking programs on remote nodes.

For safe execution, our prototype relies on the Java-2 security system [53], but we could have just as easily chosen another mechanism such as hardware protection domains, or software fault isolation [52]. On top of this basic security mechanism, individual programs define policies for delegating namespaces they control and for accepting requests from other namespaces.

To provide a hook for Active Name programs to enforce security, the interface also provides as input a capability certificate that identifies the caller and which may grant a subset of the caller's rights to the callee. If the program is invoked from a remote node, the certificate will be authenticated via encryption techniques; if the program is called locally, the identity of the caller is guaranteed by the integrity of the local operating system. An Active Name program is free to use this information about the caller for access control. For example, a program could choose to run only on behalf of previously registered users. Similarly, if a program needs to enforce that its after-method is invoked, it grants the downstream program the right to reply to it but not the right to reply to the original caller. Certificates may also be required from the machines used to run the programs and after-methods, since a program's results should not be trusted unless it is run on trusted machines. We expect Active Names programs to leverage the work of other researchers in showing how to provide authentication and access control for mobile computation [3,7]. We have implemented a prototype of such a certificate-based capability system, but we have not yet integrated this functionality into the Active Names prototype.

In a production system, nodes would enforce resource limitations using technology such as Jres [16]; such functionality is not implemented in our prototype.


next up previous
Next: Active Name Programs Up: Active Name Architecture Previous: Overview
Amin Vahdat
8/31/1999