Information flow control (IFC) is a technique to assert the security
of a given program with respect to a given security policy. The classical
security policy noninterference requires that public output of a
program may not be influenced from secret input. This thesis leverages
a technique called program slicing, which is closely connected to
IFC and offers many dimensions for improving analysis precision.
It presents a precise model for object-oriented programs in a classic
data structure for slicing and extends the slicing algorithms to
allow for precise IFC and to provide a means to downgrade secret
information, if necessary. Path conditions provide further insight
into how one statement influences another. They may thus lead to
conditions for illicit information flow, or they may provide evidence
that an assumed flow is impossible.
An evaluation shows that
these techniques scale well to the security kernels which we have
in mind, while the burden for specifying the security policy is very
low. But most importantly, our security analysis can certify programs
written in a realistic programing language, namely full Java bytecode.