Run-time principals in information-flow type systems

Author(s):  
S. Tse ◽  
S. Zdancewic
2013 ◽  
Vol 23 (5) ◽  
pp. 1032-1081 ◽  
Author(s):  
GILLES BARTHE ◽  
DAVID PICHARDIE ◽  
TAMARA REZK

Non-interference guarantees the absence of illicit information flow throughout program execution. It can be enforced by appropriate information flow type systems. Much of the previous work on type systems for non-interference has focused on calculi or high-level programming languages, and existing type systems for low-level languages typically omit objects, exceptions and method calls. We define an information flow type system for a sequential JVM-like language that includes all these programming features, and we prove, in the Coq proof assistant, that it guarantees non-interference. An additional benefit of the formalisation is that we have extracted from our proof a certified lightweight bytecode verifier for information flow. Our work provides, to the best of our knowledge, the first sound and certified information flow type system for such an expressive fragment of the JVM.


2014 ◽  
Vol 24 (12) ◽  
pp. 2767-2781
Author(s):  
Hao SUN ◽  
Hui-Peng LI ◽  
Qing-Kai ZENG
Keyword(s):  

2014 ◽  
Vol 24 (6) ◽  
pp. 675-716 ◽  
Author(s):  
ANDREW W. KEEP ◽  
R. KENT DYBVIG

AbstractThe Revised6 Report on the Algorithmic Language Scheme added a mechanism to the Scheme programming language for creating new record types procedurally. While many programming languages support user defined, structured data types, these are usually handled syntactically, so that the compiler can make choices at compile time about the memory layout of these data types. The procedural record types in Scheme, however, can be constructed at run time, making the efficient run-time representation of record types important to ensure good run-time performance. The run-time representation used in our implementation provides an extended model for record types allowing record types to represent foreign scalar data types, e.g., machine word integers, and allows the base record type to be extended to create non-R6RS record-type systems. This article describes our run-time representation for record types, how the garbage collector handles foreign scalar data types, and includes extended record type systems both for an object-oriented programming model and a representation of foreign structured data types.


2017 ◽  
Vol 4 (1) ◽  
pp. 6-21 ◽  
Author(s):  
Vineet Rajani ◽  
Iulia Bastys ◽  
Willard Rafnsson ◽  
Deepak Garg

2011 ◽  
Vol 21 (6) ◽  
pp. 1207-1252 ◽  
Author(s):  
GILLES BARTHE ◽  
PEDRO R. D'ARGENIO ◽  
TAMARA REZK

Information flow policies are confidentiality policies that control information leakage through program execution. A common way to enforce secure information flow is through information flow type systems. Although type systems are compositional and usually enjoy decidable type checking or inference, their extensibility is very poor: type systems need to be redefined and proved sound for each new variation of security policy and programming language for which secure information flow verification is desired.In contrast, program logics offer a general mechanism for enforcing a variety of safety policies, and for this reason are favoured in Proof Carrying Code, which is a promising security architecture for mobile code. However, the encoding of information flow policies in program logics is not straightforward because they refer to a relation between two program executions.The purpose of this paper is to investigate logical formulations of secure information flow based on the idea of self-composition, which reduces the problem of secure information flow of a program P to a safety property for a program derived from P by composing P with a renaming of itself. Self-composition enables the use of standard techniques for information flow policy verification, such as program logics and model checking, that are suitable in Proof Carrying Code infrastructures.We illustrate the applicability of self-composition in several settings, including different security policies such as non-interference and controlled forms of declassification, and programming languages including an imperative language with parallel composition, a non-deterministic language and, finally, a language with shared mutable data structures.


Author(s):  
Limin Jia ◽  
Jassim Aljuraidan ◽  
Elli Fragkaki ◽  
Lujo Bauer ◽  
Michael Stroucken ◽  
...  

Sign in / Sign up

Export Citation Format

Share Document