Faceted Execution of Policy-Agnostic Programs

Faceted Execution of Policy-Agnostic Programs

Faceted execution of policy-agnostic programs The MIT Faculty has made this article openly available. Please share how this access benefits you. Your story matters. Citation Thomas H. Austin, Jean Yang, Cormac Flanagan, and Armando Solar-Lezama. 2013. Faceted execution of policy-agnostic programs. In Proceedings of the Eighth ACM SIGPLAN workshop on Programming languages and analysis for security (PLAS '13). ACM, New York, NY, USA, 15-26. As Published http://dx.doi.org/10.1145/2465106.2465121 Publisher Association for Computing Machinery (ACM) Version Author's final manuscript Citable link http://hdl.handle.net/1721.1/90875 Terms of Use Creative Commons Attribution-Noncommercial-Share Alike Detailed Terms http://creativecommons.org/licenses/by-nc-sa/4.0/ Faceted Execution of Policy-Agnostic Programs Thomas H. Austin Jean Yang Cormac Flanagan UC Santa Cruz MIT Computer Science and Artificial UC Santa Cruz [email protected] Intelligence Laboratory [email protected] [email protected] Armando Solar-Lezama MIT Computer Science and Artificial Intelligence Laboratory [email protected] Abstract cies. Yang et al. describe Jeeves [48], a language that supports It is important for applications to protect sensitive data. Even for confidentiality policies describing how to reveal views of sensi- simple confidentiality and integrity policies, it is often difficult for tive values based on the output channel. Sensitive values are pairs programmers to reason about how the policies should interact and hℓ ? vH : vLi, where vH is the high-confidentiality value, vL is the how to enforce policies across the program. A promising approach low-confidentiality value, and guard ℓ is a label. The initial imple- is policy-agnostic programming, a model that allows the program- mentation of Jeeves relies on symbolic evaluation and constraint- mer to implement policies separately from core functionality. Yang solving to produce outputs adhering to the policies. This strategy et al. describe Jeeves [48], a programming language that supports provides strong confidentiality guarantees, but at the cost of expres- information flow policies describing how to reveal sensitive val- siveness and implementation feasibility. For instance, this imple- ues in different output channels. Jeeves uses symbolic evaluation mentation restricts recursion under symbolic conditionals and re- quires the cumulative constraint environment to persist. and constraint-solving to produce outputs adhering to the policies. 1 This strategy provides strong confidentiality guarantees but limits In this paper , we present a faceted semantics for Jeeves that expressiveness and implementation feasibility. exploits the structure of sensitive values in order to increase expres- We extend Jeeves with faceted values [6], which exploit the siveness, facilitate reasoning about runtime behavior, and automati- structure of sensitive values to yield both greater expressiveness and cally enforce confidentiality policies. We base the Jeeves evaluation to facilitate reasoning about runtime behavior. We present a faceted strategy on Austin et al.’s faceted execution [6], which manipulates semantics for Jeeves and describe a model for propagating multiple explicit representations of sensitive values. With this strategy, la- views of sensitive information through a program. We provide a bels variables are the only symbolic variables, allowing Jeeves to proof of termination-insensitive non-interference and describe how lift restrictions on the flow of sensitive values. To further improve the semantics facilitate reasoning about program behavior. ease of reasoning, Jeeves allows policies to only constrain labels to low. This guarantees that the constraint environment is always Categories and Subject Descriptors D.3.3 [PROGRAMMING consistent, a property that allows for policy garbage-collection. LANGUAGES]: Language Constructs and Features In this paper we make the following contributions: General Terms Languages, Security • Language design, run-time system, privacy, security We present a faceted evaluation semantics for Jeeves, a lan- guage for automatically enforcing confidentiality policies. The execution model exploits the structure of sensitive values in or- 1. Introduction der to increase expressiveness and to facilitate reasoning about It is increasingly important for applications to protect user privacy. runtime behavior. Even for simple confidentiality and integrity policies, it is often • We present a dynamic semantics for faceted execution of Jeeves difficult for programmers to reason about how the policies should in terms of the λjeeves core language. We prove termination- interact and how to enforce policies across the program. insensitive non-interference, and policy compliance. We show Policy-agnostic programming has the goal of allowing the pro- that it is possible to reason about termination, policy consis- grammer to implement core functionality separately from privacy tency, and policy independence: properties that were not pos- policies. The programmer specifies policies as declarative rules sible to reason about with the original semantics of Jeeves [48]. and relies on the system to produce outputs adhering to the poli- • We describe our implementation of Jeeves as an embedded domain-specific language in Scala and our experience using Permission to make digital or hard copies of all or part of this work for Jeeves to implement a conference management system that in- personal or classroom use is granted without fee provided that copies teracts with a web-based frontend and a persistent database. are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. 1 This paper is a slightly revised version of our PLAS 2013 paper that PLAS’13, June 20, 2013, Seattle, WA, USA. corrects the statement and proof of Theorem 3, using a revised [F-PRINT] Copyright c 2013 ACM 978-1-4503-2144-0/13/06. $15.00 rule. 2. Jeeves and Faceted Evaluation alice .name to user alice and b is low and we display nobody.name We introduce faceted values into Jeeves in order to provide con- to user nobody. The Jeeves runtime ensures maximal functionality: fidentiality guarantees, and compare its design with systems that if the policies allow a labels to be high or low, the value will be rely on a declassification primitive and with the symbolic execution high. strategy used in an earlier implementation of Jeeves. 2.2 A Health Database in Jeeves In this section, we present Jeeves using an ML-like concrete syntax, shown in Figure 1. Jeeves extends the λ-calculus with refer- To show how to use Jeeves for real-world applications, let us build ences, facets (hℓ ? ExpH : ExpLi), a label construct for introduc- a simple health database with records of the following form: ing labels that guard access to facets, and a restrict construct for type Patient { identity : User ref introducing policies on labels. Jeeves statements include let-bound ; doctor : User ref expressions and the effectful print statement. ; meds: ( Medication list ) ref } 2.1 Jeeves for Confidentiality In these records, each of the fields identity, doctor, and meds could Jeeves allows the programmer to introduce a variable name that be sensitive values that show different values of the correct type to can be either "Alice" or "Anonymous" depending on the output low-confidentiality output channels. channel: In this example, the output context has type HealthCtxt, which we define as follows: let name: string = label a in <a ? "Alice" : "Anonymous" > type HealthCtxt { viewer : User, time: Date } in ... This context contains information not just for the viewer but also The above code introduces a label a that determines whether the for the current date, allowing policies to define activation and expi- private (high-confidentiality) value "Alice " or the public (low- ration times for visibility. confidentiality) "Anonymous" should be revealed. Labels take on The idiomatic way of attaching policies to a value is to create the values { low, high }. sensitive values for each field and then attach policies: A simple policy on a sensitive value name is that the user must be the user alice to have high-confidentiality status: let mkPatient ( identity : User) (doctor : User) ( meds: Medication list ) : Patient = let name: string = label a in in == label np, dp, mp restrict a: λ(c: User).(c alice) in let p = { identity = <np ? identity : nobody> <a ? "Alice" : "Anonymous"> ; doctor = <dp ? doctor : nobody> in ... ; meds = <mp ? meds : []> in The restrict statement introduces a rule that strengthens the policy addNamePolicy p np; relating the output channel to the high-confidentiality value. To addDoctorPolicy p dp; addMedicationsPolicy p mp; produce an assignment to label, the Jeeves system translates this in p rule to the declarative constraint !(c == alice) ⇒ (a == low). This rule is not used until evaluation of print, so other policies could This function introduces labels, creates sensitive values, attaches further restrict the label to be low. policies to the labels, and returns the resulting Patient record. The In Jeeves programs, sensitive values can be used as regular function makes use of the add ... Policy functions for attaching program values and effectful statements such as print require a policies to the labels. The add ... Policy functions take a Patient context parameter: record

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    13 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us