Troupe

Troupe is a research prototype of a dynamically typed functional language for concurrent and distributed programming with information-flow control. Troupe is designed to run code from mutually distrusting parties. Dynamic information-flow monitoring tracks dependencies through computation and communication; capabilities govern privileged operations, and sandboxing confines the effects of untrusted code.

Information-flow control

Troupe enforces information flow dynamically, tracking confidentiality and integrity labels on individual values. The monitor follows dependencies through computation and communication, including dependencies on the progress of a process.

The progress-sensitive baseline follows from the combination of concurrency and untrusted code: a program can transmit information through whether a process sends a message at all. Because strict progress sensitivity is restrictive in practice, Troupe allows a program to release information about its progress, as well as individual values, under explicit authority. Authority can be attenuated before it is passed to another component. These uses of authority are the parts of the program that require careful auditing.

Sandboxing confines untrusted computations by restricting their effects, including message passing and process creation. Time boxing assigns a fixed interval to such a computation, separating the caller’s progress from whether the computation terminates.

Programming model

Troupe programs consist of lightweight processes that communicate through message passing. Messages can carry functions, supporting code mobility and dynamic update.

Processes run on Troupe nodes, each an instance of the runtime. Nodes are the units of trust: each node specifies how much it trusts other nodes. Communication between nodes is checked against these trust relationships and the labels of the exchanged data. Security labels express confidentiality and integrity policies.

Resources

Publications

Johan Bay and Aslan Askarov.
Reconciling progress-insensitive noninterference and declassification.
IEEE Computer Security Foundations Symposium (CSF), 2020, pp. 95–106. [PDF]

Teaching

Troupe is suitable for advanced courses in security and information flow. Please reach out for teaching material.