Racets: Faceted Execution in Racket

07/24/2018
by   Kristopher Micinski, et al.
0

Faceted Execution is a linguistic paradigm for dynamic information-flow control. Under faceted execution, secure program data is represented by faceted values: decision trees that encode how the data should appear to its owner (represented by a label) versus everyone else. When labels are allowed to be first-class (i.e., predicates that decide at runtime which data to reveal), faceted execution enables policy-agnostic programming: a programming style that allows privacy policies for data to be enforced independently of code that computes on that data. To date, implementations of faceted execution are relatively heavyweight: requiring either changing the language runtime or the application code (e.g., by using monads). Following Racket's languages-as-libraries approach, we present Racets: an implementation of faceted execution as a library of macros. Given Racket's highly-expressive macro system, our implementation follows relatively directly from the semantics of faceted execution. To demonstrate how Racets can be used for policy-agnostic programming, we use it to build a web-based game of Battleship. Our implementation sheds light on several interesting issues in interacting with code written without faceted execution. Our Racets implementation is open source, under development, and available online.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/19/2022

Primrose: Selecting Container Data Types by their Properties

Container data types are ubiquitous in computer programming, enabling de...
research
05/25/2020

Transparent IFC Enforcement: Possibility and (In)Efficiency Results

Information Flow Control (IFC) is a collection of techniques for ensurin...
research
07/08/2020

BISM: Bytecode-Level Instrumentation for Software Monitoring

BISM (Bytecode-Level Instrumentation for Software Monitoring) is a light...
research
01/23/2019

LWeb: Information Flow Security for Multi-tier Web Applications

This paper presents LWeb, a framework for enforcing label-based, informa...
research
01/20/2017

Using LLVM-based JIT Compilation in Genetic Programming

The paper describes an approach to implementing genetic programming, whi...
research
05/07/2019

Programming Unikernels in the Large via Functor Driven Development

Compiling applications as unikernels allows them to be tailored to diver...
research
01/28/2021

Eye: Program Visualizer for CS2

In recent years, programming has witnessed a shift towards using standar...

Please sign up or login with your details

Forgot password? Click here to reset