TY - GEN
T1 - Abstracting Faceted Execution
AU - Micinski, Kristopher
AU - Darais, David
AU - Gilray, Thomas
N1 - Funding Information:
We thank the reviewers for their valuable feedback in improving this paper. This work was suppored in part by ODNI IARPA via 2019-1902070008, and NSF award CCF-1901278. The views, opinions and/or findings expresses are those of the authors and should not be interpreted as representing the official views or policies of any US Government agency. The US Government is authorized to reproduce and distribute reprints for Governmental purposes notwithstanding any copyright annotation therein.
Publisher Copyright:
© 2020 IEEE.
PY - 2020/6
Y1 - 2020/6
N2 - Faceted execution is a linguistic paradigm for dynamic information-flow control with the distinguishing feature that program values may be faceted. Such values represent multiple versions or facets at once, for different security labels. This enables policy-agnostic programming: a paradigm permitting expressive privacy policies to be declared, independent of program logic. Although faceted execution prevents information leakage at runtime, it does not guarantee the absence of failure due to policy violations. By contrast with static mechanisms (such as security type systems), dynamic information-flow control permits arbitrarily expressive and dynamic privacy policies but imposes significant runtime overhead and delays discovery of any possible violations. In this paper, we present the two different abstract interpretations for faceted execution in the presence of first-class policies. We first present an abstraction which allows one to reason statically about the shape of facets at each program point. This abstraction is useful for statically proving the absence of runtime errors and eliminating runtime checks related to facets. Reasoning statically about the contents of faceted values, however, is complicated by the presence of first-class security labels, especially because abstract labels may conflate more than one runtime label. To address these issues, we also develop a more precise abstraction that relies on an analysis tracking singleton heap abstractions. We present an implementation of our coarse abstraction in Racket and demonstrate its performance on several sample programs. We conclude by showing how our precise domain can be used to verify information-flow properties.
AB - Faceted execution is a linguistic paradigm for dynamic information-flow control with the distinguishing feature that program values may be faceted. Such values represent multiple versions or facets at once, for different security labels. This enables policy-agnostic programming: a paradigm permitting expressive privacy policies to be declared, independent of program logic. Although faceted execution prevents information leakage at runtime, it does not guarantee the absence of failure due to policy violations. By contrast with static mechanisms (such as security type systems), dynamic information-flow control permits arbitrarily expressive and dynamic privacy policies but imposes significant runtime overhead and delays discovery of any possible violations. In this paper, we present the two different abstract interpretations for faceted execution in the presence of first-class policies. We first present an abstraction which allows one to reason statically about the shape of facets at each program point. This abstraction is useful for statically proving the absence of runtime errors and eliminating runtime checks related to facets. Reasoning statically about the contents of faceted values, however, is complicated by the presence of first-class security labels, especially because abstract labels may conflate more than one runtime label. To address these issues, we also develop a more precise abstraction that relies on an analysis tracking singleton heap abstractions. We present an implementation of our coarse abstraction in Racket and demonstrate its performance on several sample programs. We conclude by showing how our precise domain can be used to verify information-flow properties.
UR - http://www.scopus.com/inward/record.url?scp=85090471224&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85090471224&partnerID=8YFLogxK
U2 - 10.1109/CSF49147.2020.00021
DO - 10.1109/CSF49147.2020.00021
M3 - Conference contribution
AN - SCOPUS:85090471224
T3 - Proceedings - IEEE Computer Security Foundations Symposium
SP - 184
EP - 198
BT - Proceedings - 2020 IEEE 33rd Computer Security Foundations Symposium, CSF 2020
PB - IEEE Computer Society
T2 - 33rd IEEE Computer Security Foundations Symposium, CSF 2020
Y2 - 22 June 2020 through 25 June 2020
ER -