Creative Commons Attribution 3.0 Unported license
LJGS is a lightweight Java core calculus with a gradual security type system. The calculus guarantees secure information flow for sequential, class-based, typed object-oriented programming with mutable objects and virtual method calls. An LJGS program is composed of fragments that are checked either statically or dynamically. Statically checked fragments adhere to a security type system so that they incur no run-time penalty whereas dynamically checked fragments rely on run-time security labels. The programmer marks the boundaries between static and dynamic checking with casts so that it is always clear whether a program fragment requires run-time checks. LJGS requires security annotations on fields and methods. A field annotation either specifies a fixed static security level or it prescribes dynamic checking. A method annotation specifies a constrained polymorphic security signature. The types of local variables in method bodies are analyzed flow-sensitively and require no annotation. The dynamic checking of fields relies on a static points-to analysis to approximate implicit flows. We prove type soundness and non-interference for LJGS.
@InProceedings{fennell_et_al:LIPIcs.ECOOP.2016.9,
author = {Fennell, Luminous and Thiemann, Peter},
title = {{LJGS: Gradual Security Types for Object-Oriented Languages}},
booktitle = {30th European Conference on Object-Oriented Programming (ECOOP 2016)},
pages = {9:1--9:26},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-014-9},
ISSN = {1868-8969},
year = {2016},
volume = {56},
editor = {Krishnamurthi, Shriram and Lerner, Benjamin S.},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2016.9},
URN = {urn:nbn:de:0030-drops-61031},
doi = {10.4230/LIPIcs.ECOOP.2016.9},
annote = {Keywords: gradual typing, security typing, Java, hybrid information flow control}
}