Abstract:
We integrate programming constructs for managing confidentiality in an
ML-like imperative and higher-order programming language, dealing with
both access control and information flow control. Our language
includes in particular a construct for declassifying information, and
constructs for granting, restricting or testing the read access level
of a program. We introduce a type and effect system to statically
check access rights and information flow. We show that typable
programs are secure, that is, they do not attempt at making illegal
read accesses, nor illegal information leakage. This provides us with
a natural restriction on declassification, namely that a program may
only declassify information that it has the right to read.
[.pdf]