B629: Languages for Programming the Web
Papers

Contents

Basics
Java
Network Objects
Background
Java RMI
Foundations for Mobile Agents
Background
Join Calculus
Ambient Calculus
Low-level calculi for distribution and mobility
Other Foundational Models
Mobile Agent Programming
General
Application Studies
Mobile Agent Frameworks
Obliq
Telescript / Odyssey
Aglets
PLAN
Agent TCL
Concordia
ARA
Rover
Security
Java Security: General
Java Security: Hostile Applets
Java Security: Extensions
Security for Mobile Agents
Foundations for Security
Trust Management
Miscellaneous
Quality of Service Abstractions
The E Language
Unfiled

Basics

Java

James Gosling and Henry McGilton, The Java Language Environment: A White Paper
A slightly gushy, but informative, outline of the major decisions in the Java design.
Ken Arnold and James Gosling, The Java Programming Language (Addison Wesley, 1996)
The standard reference on the Java language. Also recommended as an introduction to the language.
James Gosling, Bill Joy, and Guy Steele, The Java Language Specification (Addison Wesley, 1996)
The full, gory details on the Java language. Surprisingly readable if taken in bite-sized portions.
Tim Lindholm and Frank Yellin, The Java Virtual Machine Specification (Addison Wesley, 1996)
The reference specification of the Java Virtual Machine, including a helpful introduction to the machine architecture and an opcode-by-opcode description of the instruction set.
May Campione and Kathy Walrath, The Java Tutorial: Object-Oriented Programming and the Internet (Addison Wesley, 1996)
A tutorial introduction to both basic java programming and applet programming with the AWT. Only partially up-to-date with changes made in Java 1.1.

For convenience, here is a local copy of the tutorial; for the most up-to-date information, please refer to the current version at Sun.

See also: Vijay Saraswat, Java is not Type Safe


Network Objects

Background

Birrell, Nelson, and Owicki, Network Objects
A classic paper, describing the design and implementation of an efficient "network object" framework. Cardelli's Obliq language is implemented directly on top of these network objects, which also strongly influenced the design of Java's RMI facilities.
Birrell, Nelson, Owicki, and Wobber, Distributed Garbage Collection for Network Objects
The inspiration for the garbage collection algorithm used in the Java RMI implementation.

Java RMI

RMI Specification
The first and last word on Java RMI.
RMI tutorial
A quick tutorial on Java RMI.

Foundations for Mobile Agents

Background

Luca Cardelli, Type Systems (Chapter in CRC Handbook of Computer Science and Engineering, 1996)
A brief, concentrated introduction to basic concepts of type systems, including polymorphism and subtyping. Useful background reading for many of the papers covered in this course.
Benjamin Pierce, Foundational Calculi for Programming Languages (Chapter in CRC Handbook of Computer Science and Engineering, 1996)
A high-level overview of lambda-calculus and pi-calculus viewed as foundational models of programming languages. The material on pi-calculus is useful background for the join-calculus papers and some of the other, more theoretical, papers listed here. Copious references.

Join Calculus

Cedric Fournet and Luc Maranget, The Join-Calculus language, Release 1.01: Documentation and user's manual
A long tutorial introduction to programming in the join-calculus, along with a reference manual for the language and associated tools.
Cedric Fournet, Georges Gonthier, Jean-Jacques Levy, Luc Maranget, and Didier Remy, A calculus of mobile agents (Proceedings CONCUR'96 (LNCS 1119))
The main paper on the distributed join calculus.

Abstract: We introduce a calculus for mobile agents and give its chemical semantics, with a precise definition for migration, failure, and failure detection. Various examples written in our calculus illustrate how to express remote executions, dynamic loading of remote resources and protocols with mobile agents. We give the encoding of our distributed calculus into the join-calculus.

Cedric Fournet and Georges Gonthier, The reflexive chemical abstract machine and the join-calculus (Proceedings of POPL '96)
The original paper on the theoretical foundations of the join calculus.

Abstract: By adding reflexion to the chemical machine of Berry and Boudol, we obtain a formal model of concurrency that is consistent with mobility and distribution. Our model provides the foundations of a programming language with functional and object-oriented features. It can also be seen as a process calculus, the join-calculus, which we prove equivalent to the pi-calculus of Milner, Parrow and Walker.

Cedric Fournet, Cosimo Laneve, Luc Maranget, and Didier Remy, Implicit typing a la ML for the join calculus (Proceedings of CONCUR'97)
Abstract: We adapt the Damas-Milner typing discipline to the join-calculus. The main result is a new generalization criterion that extends the polymorphism of ML to join-definitions. We prove the correctness of our typing rules with regards to a chemical semantics. We also relate typed extensions of the core join-calculus to functional languages.

Ambient Calculus

Luca Cardelli and Andrew Gordon, Mobile Ambients
A draft paper on Cardelli and Andy Gordon's new ambient calculus.

Also see a set of slides on Abstractions for Mobile Computation and another on A Calculus of Mobile Ambients.

An implementation of the ambient calculus is described in Cardelli's technical note on Mobile Ambient Synchronization.

Low-level calculi for distribution and mobility

Peter Sewell, Pawel Wojciechowski, and Benjamin Pierce, Location Independence for Mobile Ambients
A preliminary investigation of a "low-level" calculus for migration and communication, intended to form a plausible foundation for implementing (parts of) join-calculus- or Ambit-like languages with higher-level primitives, while remaining close enough to the "bare hardware" that the low-level calculus itself can be implemented fairly straightforwardly.

Other Foundational Models

Roberto Amadio, An asynchronous model of locality, failure, and process mobility
Abstract: We present a model of distributed computation which is based on a fragment of the pi-calculus relying on asynchronous communication. We enrich the model with the following features: the explicit distribution of processes to locations, the failure of locations and their detection, and the mobility of processes. Our contributions are two folds. At the specication level, we give a synthetic and flexible formalization of the features mentioned above. At the verification level, we provide original methods to reason about the bisimilarity of processes in the presence of failures.
Tatsurou Sekiguchi and Akinori Yonezawa, Formulating Mobile Languages (EuroPar 97)
Abstract- This paper describes formal models of mobile computations, where dynamic transmission of code, data and execution environments is represented. Our models provide a foundation for mobile languages. We show how our models can represent the mobile mechanisms in Obliq, Telescript, Java, Facile, and Kali-Scheme. The relation between code mobility and partial continuations are discussed. The correctness criteria for data mobility are presented and the correctness of the data movement is proved.

Mobile Agent Programming

General

Luca Cardelli, Global Computation
Short position paper outlining novel challenges posed by programming physically distributed computations on a global scale.

Abstract: Computation over planet-wide structures is hindered by administrative, architectural, and physical constraints. These problems are surmountable, but must be addressed by developing new models of programming and of computation.

Also see a set of slides presented at the WWW5 workshop.

Carzaniga, Picco, and Vigna, Designing Distributed Applications with Mobile Code Paradigms,
A sensible, high-level discussion of design tradeoffs between different "mobile code paradigms": Concludes with a semi-quantitative analysis of a particular design problem, evaluating the different paradigms with respect to their effect on network traffic under various assumptions about characteristics and distribution of data across the network.
Tommy Thorn, Programming Languages for Mobile Code
A survey and discussion of six "mobile-code languages", including Java, Obliq, Limbo, Safe-Tcl, Objective CAML (!), and Telescript. Some of the opinions are arguable and there are some slightly dubious statements about some of the languages, but the introductory discussion of the uses of mobile agents and issues related to safety and security are useful.
Dejan S. Milojicic, Shai Guday, and Richard Wheeler, Old Wine in New Bottles: Applying OS Process Migration Technology to Mobile Agents

Abstract: We describe how our experience with classic operating system level process migration mechanisms influenced the design of MOA, a mobile agents project. A case is presented for implementing mobile agents using language environments and overcoming the limitations of those environments by employing mechanisms adapted from classic process migration implementations.

William T. Cockayne and Michael Zyda, Mobile Agents (Manning Publications, 1998)
The first popular book on mobile agent technologies. Long sections cover Telescript, Agent TCL, ARA, and Aglets in detail. Especially suitable for semi-technical readers. (Experts may be irritated by some of the explanations.)

Application Studies

Marc H. Brown and Marc Najork, Distributed Active Objects
Discussion of some simple examples using Obliq for creating distributed, shared applications to be run in web browsers.

Abstract: Many Web browsers now offer some form of active objects, written in a variety of languages, and the number and types of active objects are growing daily in interesting and innovative ways. This report describes our work on Oblets, active objects that are distributed over multiple machines. Oblets are written in Obliq, an object-oriented scripting language for distributed computation. The high-level support provided by Oblets makes it easy to write collaborative and distributed applications.

Krishna A. Bharat and Luca Cardelli, Migratory Applications
Abstract: We introduce a new genre of user interface applications that can migrate from one machine to another, taking their user interface and application contexts with them, and continue from where they left off. Such applications are not tied to one user or one machine, and can roam freely over the net work, rendering service to a community of users, gathering human input and interacting with people. We envisage that this will support many new agent-based collaboration met aphors. The ability to migrate executing programs has applicability to mobile computing as well. Users can have their applications travel with them, as they move from one computing environment to another. We present an elegant programming model for creating migratory applications and describe an implementation. The biggest strength of our implementation is that the details of migration are com pletely hidden from the application programmer; arbitrary user interface applications can be migrated by a single "migration" command. We address system issues such as robustness, persistence and memory usage, and also human factors relating to the application design process, the inter action metaphor and safety.
Harrison, Chess, and Kershenbaum, Mobile Agents: Are they a good idea?
An analytical comparison of mobile agent technologies with more conventional (RPC, message-based, etc.) approaches to the same problems. The most useful part is a comprehensive survey and evaluation of proposed arguments in favor of mobile agent solutions.

Abstract: [...] We consider the advantages offered by mobile agents and assess them against alternate methods of achieving the same function. We conclude that, while the individual advantages of agents do not represent an overwhelming motivation for their adoption, the creation of a pervasive agent framework facilities a very large number of network services and applications.

Carlo Ghezzi and Giovanni Vigna, Mobile Code Paradigms and Technologies: A Case Study,
An interesting follow-on to an earlier survey ( Carzaniga, Picco, and Vigna, Designing Distributed Applications with Mobile Code Paradigms,).

Abstract The opportunities offered by the Internet are encouraging research aimed at the creation of a computational infrastructure that exploits the wide spread communication infrastructure. The mobile computation paradigm is a proposal to build a computational infrastructure that goes beyond the well-known client-server paradigm and increases dynamicity and flexibility. Despite the promising first steps, there is still confusion on the role of paradigms and technology in the development on applications based on the mobile computation paradigm. We present a case study in which we develop several versions of an application us ing different paradigms and different technologies in order to show when these concepts come into play and which are their relationships.

Mobile Agent Frameworks

Obliq

Luca Cardelli, A Language with Distributed Scope
Overview of Cardelli's influential language Obliq.

Abstract: Obliq is a lexically-scoped, untyped, interpreted language that supports distributed object-oriented computation. Obliq objects have states and are local to a site. Obliq computations can roam over the network, while maintaining network connections. Distributed lexical scoping is the key mechanism for managing distributed computations.

Luca Cardelli, Obliq Reference Manual
See also: Krishna A. Bharat and Luca Cardelli, Migratory Applications and Marc H. Brown and Marc Najork, Distributed Active Objects

Telescript / Odyssey

Jim White, Mobile Agents White Paper
Overview of the Telescript mobile agent framework by its principal architect.

Abstract: This paper explores the concept of a public network designed as a platform for application developers. It introduces a new communication paradigm, the mobile agent, which provides the organizing principle for such a network, and a new communication software technology, General Magic's Telescript(TM) technology, which implements the concept in a commercial setting. The paper also presents and explores the vision of an electronic marketplace that allows automated access by agents, as well as conventional, interactive access by people. The paper has three sections. The first, "Enabling mobile agents," discusses the concept of a mobile agent, explains how Telescript technology implements the concept, and describes an electronic marketplace based on the technology. The second section, "Programming mobile agents," explains by example how a communicating application works. The example serves as an introduction to the Telescript language in which mobile agents are programmed. The third section, "Using mobile agents," explores the variety of applications that mobile agents make possible, using scenes from the electronic marketplace of the future.

Telescript Programming Guide
Draft (version 0.5 alpha) reference manual for the Telescript programming language.

Aglets

The Java Aglet API
Up-to-date (alpha-5) reference manual for the Aglets API.
Gunter Karjoth, Danny B. Lange, and Mitsuru Oshima, A Security Model for Aglets (IEEE Internet Computing, July-Aug 1997)
Journal article describing a proposed extension to the Aglets framework supporting flexible architectural definition of security policies.

PLAN

Michael Hicks, Pankaj Kakkar, Jonathan T. Moore, Carl A. Gunter, and Scott Nettles, PLAN: A Programming Language for Active Networks
Abstract: PLAN (Programming Language for Active Networks) is a new language for programs that are carried in the packets of a programmable network. PLAN programs replace the packet headers (which can be viewed as 'dumb' programs) used in current networks. As a header replacement, PLAN programs must be lightweight and of limited functionality. These limitations are mitigated by allowing PLAN code to call service routines written in other, more powerful languages. These service routines may also be loaded into the routers dynamically. This two-level architecture, in which PLAN serves as a scripting or 'glue' language for more general services, is the primary contribution of the paper.

PLAN is a strict functional language providing a limited set of primitives and datatypes. PLAN defines primitives for remotely executing PLAN programs on other nodes, and these primitives are used to provide basic data transport in the network. Because remote execution makes debugging difficult, PLAN provides strong static guarantees to the programmer, such as type safety. A more novel property aimed at protecting network availability is a guarantee that PLAN programs use a bounded amount of space and time on active routers and bandwidth in the network.

[For more information on the context in which PLAN works, see the SWITCHWARE white paper.]

Agent TCL

Robert Gray, David Kotz, Saurab Nog, Daniela Rus, George Cybenko, Mobile agents for mobile computing

General introduction to mobile agents and outline of Dartmouth's Agent TCL language.

Abstract: Mobile agents are programs that can move through a network under their own control, migrating from host to host and interacting with other agents and resources on each. We argue that these mobile, autonomous agents have the potential to provide a convenient, efficient and robust programming paradigm for distributed applications, particularly when partially connected computers are involved. Partially connected computers include mobile computers such as laptops and personal digital assistants as well as modem-connected home computers, all of which are often disconnected from the network. In this paper, we describe the design and implementation of our mobile-agent system, Agent Tcl, and the specific features that support mobile computers and disconnected operation. These features include network-sensing tools and a docking system that allows an agent to transparently move between mobile computers, regardless of when the computers connect to the network.

Concordia

Concordia: An Infrastructure for Collaborating Mobile Agents
Abstract: Use of the Internet and the World-Wide-Web has become widespread in recent years and mobile agent technology has proliferated at an equally rapid rate. In this paper, we introduce the Concordia infrastructure for the development and management of network-efficient mobile agent applications for accessing information anytime, anywhere, and on any device.

Concordia has been implemented in the Java language to ensure platform independence among agent applications. The design goals of Concordia have focused on providing complete coverage of flexible agent mobility, support for agent collaboration, agent persistence, reliable agent transmission, and agent security.

Concordia offers a flexible scheme for dynamic invocation of arbitrary method entry points within a common agent application and extends the notion of simple agent interaction with support for agent collaboration, which allows agents to interact, modify external states (e.g., a database), as well as internal agent states. Concordia provides support for agent persistence and recovery and guarantees the transmission of agents across a network. Concordia has also been designed to provide for fairly complete security coverage from the outset. An alpha release of Concordia is available.

[Also see a white paper on Concordia.]

ARA

Holger Peine and Torsten Stolpmann, The Architecture of the Ara Platform for Mobile Agents

Abstract: We describe a platform for the portable and secure execution of mobile agents written in various interpreted languages on top of a common run-time core. Agents may migrate at any point in their execution, fully preserving their state, and may exchange messages with other agents. One system may contain many virtual places, each establishing a domain of logically related services under a common security policy governing all agents at this place. Agents are equipped with allowances limiting their resource accesses, both globally per agent lifetime and locally per place. We discuss aspects of this architecture and report about ongoing work. [Also see An Introduction to Mobile Agent Programming and the Ara System by Holger Peine.]

Rover

Anthony D. Joseph, George M. Candea, and M. Frans Kaashoek, RFS: A Mobile-Transparent File System for the Rover Toolkit
A short overview of a file system for the Rover toolkit.

Abstract: The mobile computing environment presents application designers with a unique set of communication and data integrity constraints that are absent in traditional distributed computing settings. These constraints make it difficult to use existing, mobile-transparent applications and complicates the development of new mobile aware applications - applications that take advantage of information about the mobile environment to offer users better interactive performance and better utilization of network bandwidth. The difficulty arises mainly because an incremental port is usually not possible, due to the need to completely shift all of the application's data storage from one model (a file system) to a model that is better suited for disconnected operation (an object repository or database). To make the porting process easier for application designers, we are adding a file system proxy, the Rover File System (RFS), to the Rover toolkit's object-based model. This will allow the Rover toolkit to support both a file model and an object model for mobile applications.


Security

Java Security: General

Vijay Saraswat, Java is not Type Safe
Analysis of a suble type-safety bug involving multiple class loaders. Interesting discussion of the tensions between compile-time and run-time types in Java.
Zhenyu Qian, A Formal Specification of Java Virtual Machine Instructions
Abstract In this paper we formally specify a large subset of Java Virtual Machine instructions based on the descriptions in the Java Virtual Machine Specification by Lindholm and Yellin, in the Java Specification by Gosling, Joy and Steele, and based on the behaviors of some test programs on Sun's implementation of the Java Virtual Machine. The formal specification describes the runtime behaviors of the instructions in related memory areas as runtime state transitions and most structural constraints on instructions as a compile-time, or link time, type inference system. The latter part corresponds to a core of the Bytecode Verifier and resembles dataflow analysis and abstract interpretation*We prove properties based on the formal specification. In particular, we prove that if the type inference system can derive certain compile-time, or link-time, types for a program, then the runtime data of the program will be type-correct with respect to these types in a certain sense. Indeed, our formal specification clarifies some ambiguities and incompleteness and removes some -in our view- unnecessary restrictions in the description of the informal Java Virtual Machine Specification.
Gary McGraw and Edward Felten, Java Security: Hostile Applets, Holes, and Antidotes (Wiley Computer Publishing, 1997)
A broad introduction to many aspects of security in Java, concentrating on browsers and applets. Some parts are written to be widely accessible (and are necessarily somewhat shallow); other parts are more technical. Good for a quick introduction to the basic security mechanisms of the language, but the most interesting part to me was the fairly detailed history (with good explanations) of security flaws in Java that have been discovered and fixed over the past couple of years.
J. Steven Fritzinger and Marianne Mueller, Java Security
Brief white paper surveying the design of Java's security features.
Drew Dean, Edward Felton, and Dan Wallach, Java Security: From HotJava to Netscape and Beyond (1996 IEEE Symposium on Security and Privacy)
Abstract: The introduction of Java applets has taken the World Wide Web by storm. Information servers can customize the presentation of their content with server-supplied code which executes inside the Web browser. We examine the Java language and both the HotJava and Netscape browsers which support it, and find a significant number of flaws which compromise their security. These flaws arise for several reasons, including implementation errors, unintended interactions between browser features, differences between the Java language and bytecode semantics, and weaknesses in the design of the language and the bytecode format. On a deeper level, these flaws arise because of weaknesses in the design methodology used in creating Java and the browsers. In addition to the flaws, we discuss the underlying tension between the openness desired by Web application writers and the security needs of their users, and we suggest how both might be accommodated.

Also see a set of slides for a talk at Bell Labs.

Frank Yellin, Low Level Security in Java (1996 IEEE Symposium on Security and Privacy)
Abstract: The Java(tm) language allows Java-compatible Web browsers to download code fragments dynamically and then to execute those code fragments locally. However, users must be wary of executing any code that comes from untrusted sources or that passes through an insecure network. This paper presents the details of the lowest-levels of the Java security mechanism. Before any downloaded code is executed, it is scanned and verified to ensure that it conforms to the specifications of the virtual machine.

Java Security: Hostile Applets

Mark LaDue, Hostile Applets on the Horizon
A technical discussion of various kinds of hostile applets by a master of the form.
Mark LaDue, Security Threats from Deviant Java Byte Code
Abstract [...] This article will explore some of the implications of [the] curious lack of coherence between Java source code and byte code. It will also illustrate how easy it is to alter Java class files for malicious purposes. Section 2 contains an overview of some salient facts about the Java class file format. It highlights the ease with which class files can be altered to do things other than those intended by their source code authors. Section 3 describes the problem of incoherence between Java source code and byte code. It points out some very surprising properties of byte code as well as several rules unenforced by the Java Verifier, all of which could lead to security breaches. Section 4 then introduces a number of examples in order to illustrate the threats. Finally, Section 5 recounts recent experience with some rudimentary Java Platform viruses. The conclusion is inescapable - Java Security has a fundamental weakness, and much work remains to be done before even its most basic assertions can be tested for validity.

A slightly different version of the same paper is available in postscript format.

Java Security: Extensions

Dan S. Wallach, Dirk Balfanz, Drew Dean, and Edward W. Felten, Extensible Security Architectures for Java
Abstract: Mobile code technologies such as Java, JavaScript, and ActiveX generally limit all programs to a single security policy. However, software-based protection can allow for more flexible security models, with potentially significant performance improvements over traditional hardware-based solutions. We describe and analyze three implementation strategies for interposing flexible security policies in software-based security systems. Implementations exist for all three strategies: several vendors have adapted capabilities to Java, Netscape Communicator extended Java's stack introspection, and we built a type hiding system as an add-on to Microsoft Internet Explorer.

Security for Mobile Agents

See also: Gunter Karjoth, Danny B. Lange, and Mitsuru Oshima, A Security Model for Aglets

Foundations for Security

Martin Abadi and Andrew Gordon, A Calculus for Cryptographic Protocols: The Spi Calculus
Abstract: We introduce the spi calculus, an extension of the pi calculus designed for the description and analysis of cryptographic protocols. We show how to use the spi calculus, particularly for studying authentication protocols. The pi calculus (without extension) suffices for some abstract protocols; the spi calculus enables us to consider cryptographic issues in more detail. We represent protocols as processes in the spi calculus and state their security properties in terms of coarse-grained notions of protocol equivalence.

[A longer version of this paper (also covering material from the following paper) is also available, also titled A Calculus for Cryptographic Protocols: The Spi Calculus.]

Martin Abadi and Andrew Gordon, Reasoning about Cryptographic Protocols in the Spi Calculus
Abstract: The spi calculus is an extension of the pi calculus with constructs for encryption and decryption. This paper develops the theory of the spi calculus, focusing on techniques for establishing testing equivalence, and applying these techniques to the proof of authenticity and secrecy properties of cryptographic protocols.

[A longer version of this paper is also available, titled A Calculus for Cryptographic Protocols: The Spi Calculus.]

Martin Abadi, Secrecy by Typing in Security Protocols
Abstract: We develop principles and rules for achieving secrecy properties in security protocols. Our approach is based on traditional classification techniques, and extends those techniques to handle concurrent processes that use shared-key cryptography. The rules have the form of typing rules for a basic concurrent language with cryptographic primitives, the spi calculus. They guarantee that, if a protocol typechecks, then it does not leak its secret inputs.

[An exposition of the principles formalized here appears in an earlier paper by Abadi and Needham.]

Drew Dean, The Security of Static Typing with Dynamic Linking
Abstract: Dynamic linking is a requirement for portable executable content. Executable content cannot know, ahead of time, where it is going to be executed, nor know the proper operating system interface. This imposes a requirement for dynamic linking. At the same time, we would like languages supporting executable content to be statically typable, for increased efficiency and security. Static typing and dynamic linking interact in a security-relevant way. This interaction is the subject of this paper. One solution is modeled in PVS, and formally proven to be safe.

Trust Management

Rohit Khare and Adam Rifkin, Weaving a Web of Trust
Abstract To date, "World Wide Web Security" has been publicly associated with debates over cryptographic technology, protocols, and public policy. This narrow focus can obscure the wider challenge of building trusted Web applications. Since the Web aims to be an information space that reflects not just human knowledge but also human relationships, it will soon reflect the full complexity of trust relationships among people, computers, and organizations. Within the computer security community, Trust Management has emerged as a new philosophy for protecting open, decentralized systems, in contrast to traditional tools for securing closed systems. Trust Management is an essential approach, because the Web crosses many trust boundaries that old-school computer security cannot even begin to handle.

In this paper, we consider how this philosophy could be applied to the Web. We introduce the fundamental principles, principals, and policies of Trust Management, as well as Web-specific pragmatic issues. In so doing, we develop a taxonomy for how trust assertions can be specified, justified, and validated. We demonstrate the value of this framework by considering the trust questions faced by the designers of applications for secure document distribution, content filtering, electronic commerce, and downloadable-code systems. We conclude by sketching the limits to automatable Trust Management, demonstrating how trust on the Web will adapt to the trust rules of human communities and vice versa.

Matt Blaze, Joan Feigenbaum, and Jack Lacy, Decentralized Trust Management
Seminal paper on trust management.

Abstract We identify the trust management problem as a distinct and important component of security in network services. Aspects of the trust management problem include formulating security policies and security credentials, determining whether particular sets of credentials satisfy the relevant policies, and deferring trust to third parties. Existing systems that support security in networked applications, including X.501 and PGP, address only narrow subsets of the overall trust management problem and often do so in a manner that is appropriate to only one application. This paper presents a comprehensive approach to trust management, based on a simple language for specifying trusted actions and trust relationships. It also describes a prototype implementation of a new trust management system, called PolicyMaker, that will facilitate the development of security features in a wide range of network services.

Ronald L. Rivest and Butler Lampson, SDSI: A Simple Distributed Security Infrastructure

Abstract We propose a new distributed security infrastructure, called SDSI (pronounced "Sudsy). SDSI combines a simple public-key infrastructure design with a means of defining groups and issuing group-membership certificates. SDSI's groups provides simple, clear terminology for defining access-control lists and security policies SDSI's design emphasizes linked local name spaces rather than a hierarchical global name space.

Carl A. Gunter, Trevor Jim, and Bow-Yaw Wang, Authenticated Data Distribution using Query Certificate Managers

Abstract QCM is a special-purpose programming language for authenticated data distribution on the Internet. QCM programs maintain a database distributed among the nodes of a loosely-coupled network and interact by exchanging digitally-signed database queries and responses. The database primitives of QCM naturally support essential security functions such as the definition, distribution, and use of access control lists and public key directories. QCM has a formal semantics based on structural operational semantics and I/O automata which may be used to prove correctness properties of QCM programs.


Miscellaneous

Quality of Service Abstractions

Luca Cardelli and Rowan Davies, Service Combinators for Web Computing
A little gem of programming language design, theory, and implementation.

Abstract: The World-Wide Web is rich in content and services, but access to these resources must be obtained mostly through manual browsers. We would like to be able to write programs that reproduce human browsing behavior, including reactions to slow transmission-rates and failures on many simultaneous links. We thus introduce a concurrent model that directly incorporates the notions of failure and rate of communication, and then describe programming constructs based on this model.

The E Language

The E Extensions to Java: An Electric Communities White Paper
A short overview of the facilities of the E language, a bytecode-compatible Java extension providing network-transparent asynchronous channel communication and "trust-management" facilities. [More information on E, including white papers on the trust manager and distributed garbage collector, can be found at the E home page.]

Abstract: Electric Communities has developed a set of extensions to Java, called E, to help developers write distributed applications. E combines Sun's Java programming language with some powerful enhancements: communications extensions for the development of distributed applications; optimistic computation, a powerful method for reducing the effect of communications latency in distributed systems; and an improved security model based on capability semantics and public-key cryptography, permitting fine-grained control over access to system resources without sacrificing security. E is intended for programmers writing network applications, including databases, groupware, publishing systems, and multimedia.

Unfiled

The course papers directory also contains some papers that I have not gotten a chance yet to file properly. Feel free to have a look.


B629: Languages for Programming the Web
Benjamin Pierce (pierce@cs.indiana.edu)