9 research outputs found
Abstract interpretation of symbolic execution with explicit state updates
Systems for deductive software verification model the semantics of their target programming language with full precision. On the other hand, abstraction based approaches work with approximations of the semantics in order to be fully automatic. In this paper we aim at providing a uniform framework for both fully precise and approximate reasoning about programs. We present a sound dynamic logic calculus that integrates abstraction in the sense of abstract interpretation theory. In the second part of the paper, we apply the approach to the analysis of secure information flow
Deductive Verification of Concurrent Programs and its Application to Secure Information Flow for Java
Formal verification of concurrent programs still poses a major challenge in computer science. Our approach is an adaptation of the modular rely/guarantee methodology in dynamic logic. Besides functional properties, we investigate language-based security. Our verification approach extends naturally to multi-threaded Java and we present an implementation in the KeY verification system. We propose natural extensions to JML regarding both confidentiality properties and multi-threaded programs
Integration of a security type system into a program logic
Type systems and program logics are often conceived to be at opposing ends of the spectrum of formal software analyses. In this paper we show that a flow-sensitive type system ensuring non-interference in a simple while language can be expressed through specialised rules of a program logic. In our framework, the structure of non-interference proofs resembles the corresponding derivations in a recent security type system, meaning that the algorithmic version of the type system can be used as a proof procedure for the logic. We argue that this is important for obtaining uniform proof certificates in a proof-carrying code framework. We discuss in which cases the interleaving of approximative and precise reasoning allows us to deal with delimited information release. Finally, we present ideas on how our results can be extended to encompass features of realistic programming languages like Java
Integration of a Security Type System into a Program Logic
Type systems and program logics are often conceived to be at
opposing ends of the spectrum of formal software analyses. In this
paper we show that a flow-sensitive type system ensuring
non-interference in a simple while language can be expressed
through specialised rules of a program logic.
In our framework, the structure of non-interference proofs resembles
the corresponding derivations in a recent security type system,
meaning that the algorithmic version of the type system can be used
as a proof procedure for the logic. We argue that this is important
for obtaining uniform proof certificates in a proof-carrying code
framework. We discuss in which cases the interleaving of
approximative and precise reasoning allows us to deal with delimited
information release. Finally, we present ideas on how our results
can be extended to encompass features of realistic programming
languages like Java