Flexible and Practical Information-Flow Control
Licentiate thesis, 2016

As more and more sensitive data is handled by software, its trustworthiness becomes an increasingly important concern. This thesis presents work on ensuring that information that is processed by computing systems is not disclosed to third parties without the user's permission; i.e. to prevent unwanted flows of information. Since most approaches to information-flow control have not seen widespread use in practice, this work explores flexible policies and enforcement techniques to guarantee that information is not leaked by a program. The thesis consists of three parts: The first chapter explores opacity, a security policy for protecting sensitive system properties, motivated by location privacy and privacy-preserving aggregation scenarios. We present a general, parametric framework for opacity and relate it to noninterference. Moreover, we present two approaches to enforcement: a dynamic monitor making use of SMT solving, and a blackbox sampling-based approach based on the random testing tool QuickCheck. The second chapter discusses taint tracking, a popular security mechanism for tracking data-flow dependencies, which is widely used for both high-level languages and machine code. However, the question of what, exactly, tainting means - what security policy it embodies - remains largely unexplored. We propose explicit secrecy, a generic framework capturing the essence of explicit flows, i.e., the data flows tracked by tainting. We illustrate our approach by instantiating explicit secrecy to both, a high-level imperative language and machine code. Additionally, we prove soundness with respect to explicit secrecy for the cores of dynamic and static taint trackers. Lastly, we present JSLINQ, a framework providing end-to-end information-flow control for multi-tiered web applications; i.e. web applications consisting of a database, server-side code, and client-side JavaScript code. To prevent information flows at component boundaries, we leverage homogeneous meta-programming features in F# to provide a unified language for programming all components. We present a security type system for a core of F# and prove that all well-typed programs are noninterfering. We evaluate our approach using various case studies indicating that JSLINQ is suitable for implementing practical web applications.

software security

information flow

Room EE, EDIT building, Rännvägen 6B, Chalmers University of Technology
Opponent: Matteo Maffei

Author

Daniel Schoepe

Chalmers, Computer Science and Engineering (Chalmers), Computing Science (Chalmers)

Understanding and Enforcing Opacity

28th IEEE Computer Security Foundations Symposium, CSF 2015, Verona, Italy, 13 July-17 July,; Vol. 2015-September(2015)p. 539-553

Paper in proceeding

Subject Categories

Computer Science

Room EE, EDIT building, Rännvägen 6B, Chalmers University of Technology

Opponent: Matteo Maffei

More information

Created

10/7/2017