HLIO: Mixing Static and Dynamic Typing for Information-Flow Control in Haskell
Artikel i vetenskaplig tidskrift, 2015

Information-Flow Control (IFC) is a well-established approach for allowing untrusted code to manipulate sensitive data without disclosing it. IFC is typically enforced via type systems and static analyses or via dynamic execution monitors. The LIO Haskell library, originating in operating systems research, implements a purely dynamic monitor of the sensitivity level of a computation, particularly suitable when data sensitivity levels are only known at runtime. In this paper, we show how to give programmers the flexibility of deferring IFC checks to runtime (as in LIO), while also providing static guarantees---and the absence of runtime checks---for parts of their programs that can be statically verified (unlike LIO). We present the design and implementation of our approach, HLIO (Hybrid LIO), as an embedding in Haskell that uses a novel technique for deferring IFC checks based on singleton types and constraint polymorphism. We formalize HLIO, prove non-interference, and show how interesting IFC examples can be programmed. Although our motivation is IFC, our technique for deferring constraints goes well beyond and offers a methodology for programmer-controlled hybrid type checking in Haskell.

gradual typing

singleton types

data kinds

dynamic typing

Information-flow control

hybrid typing

constraint kinds

Författare

Pablo Buiras

Chalmers, Data- och informationsteknik, Programvaruteknik

Dimitrios Vytiniotis

Microsoft Research

Alejandro Russo

Chalmers, Data- och informationsteknik, Programvaruteknik

ACM SIGPLAN Notices

1523-2867 (ISSN)

Vol. 50 9 289-301

Styrkeområden

Informations- och kommunikationsteknik

Ämneskategorier

Programvaruteknik

Datavetenskap (datalogi)

DOI

10.1145/2784731.2784758

Mer information

Senast uppdaterat

2023-08-07