| [1] |
Gilles Barthe, Delphine Demange, and David Pichardie.
A formally verified ssa-based middle-end - static single assignment
meets compcert.
In Proc. of 21th European Symposium on Programming (ESOP 2012),
Lecture Notes in Computer Science. Springer-Verlag, 2012.
To appear.
[ bib |
.pdf ]
CompCert is a formally verified compiler that generates compact and efficient PowerPC, ARM and x86 code for a large and realistic subset of the C language. However, CompCert foregoes using Static Single Assignment (SSA), an intermediate representation that allows for writing simpler and faster optimizers, and is used by many compilers. In fact, it has remained an open problem to verify formally a SSA-based compiler middle-end. We report on a formally verified, SSA-based, middle-end for CompCert. Our middle-end performs conversion from CompCert intermediate form to SSA form, optimization of SSA programs, including Global Value Numbering, and transforming out of SSA to intermediate form. In addition to provide the first formally verified SSA-based middle-end, we address two problems raised by Leroy: giving a simple and intuitive formal semantics to SSA, and leveraging the global properties of SSA to reason locally about program optimizations.
|
| [2] |
Frédéric Besson, Pierre-Emmanuel Cornilleau, and David Pichardie.
Modular smt proofs for fast reflexive checking inside coq.
In Proc. of the 1st International Conference on Certified
Programs and Proofs (CPP 2011), volume 7086 of Lecture Notes in
Computer Science, pages 151-166. Springer-Verlag, 2011.
[ bib |
.pdf ]
We present a new methodology for exchanging unsatisfiability proofs between an untrusted SMT solver and a sceptical proof assistant with computation capabilities like Coq. We advocate modular SMT proofs that separate boolean reasoning and theory reasoning; and structure the communication between theories using Nelson-Oppen combination scheme. We present the design and implementation of a Coq reflexive verifier that is modular and allows for fine-tuned theory-specific verifiers. The current verifier is able to verify proofs for quantifier-free formulae mixing linear arithmetic and uninterpreted functions. Our proof generation scheme benefits from the efficiency of state-of-the-art SMT solvers while being independent from a specific SMT solver proof format. Our only requirement for the SMT solver is the ability to extract unsat cores and generate boolean models. In practice, unsat cores are relatively small and their proof is obtained with a modest overhead by our proof-producing prover. We present experiments assessing the feasibility of the approach for benchmarks obtained from the SMT competition.
|
| [3] |
Thomas Jensen, Florent Kirchner, and David Pichardie.
Secure the clones: Static enforcement of policies for secure object
copying.
In Proc. of 20th European Symposium on Programming (ESOP 2011),
volume 6602 of Lecture Notes in Computer Science, pages 317-337.
Springer-Verlag, 2011.
[ bib |
.pdf ]
Exchanging mutable data objects with untrusted code is a delicate matter because of the risk of creating a data space that is accessible by an attacker. Consequently, secure programming guidelines for Java stress the importance of using defensive copying before accepting or handing out references to an internal mutable object.
|
| [4] | David Cachera and David Pichardie. Programmation d'un interpréteur abstrait certifié en logique constructive. Technique et Science Informatiques (TSI), 30(4):381-408, 2011. [ bib ] |
| [5] | David Pichardie, editor. Fifth Workshop on Bytecode Semantics, Verification, Analysis and Transformation (Bytecode 2010). Proceedings, Electronic Notes in Theoretical Computer Science, 2010. [ bib ] |
| [6] |
Laurent Hubert, Nicolas Barré, Frédéric Besson, Delphine Demange, Thomas
Jensen, Vincent Monfort, David Pichardie, and Tiphaine Turpin.
Sawja: Static Analysis Workshop for Java.
In Proc. of the 1st International Conference on Formal
Verification of Object-Oriented Software (FoVeOOS 2010), volume 6461 of
Lecture Notes in Computer Science, pages 92-106. Springer-Verlag, 2010.
[ bib |
.pdf ]
Static analysis is a powerful technique for automatic verification of programs but raises major engineering challenges when developing a full-fledged analyzer for a realistic language such as Java. Efficiency and precision of such a tool rely partly on low level components which only depend on the syntactic structure of the language and therefore should not be redesigned for each implementation of a new static analysis. This paper describes the Sawja library: a static analysis workshop fully compliant with Java 6 which provides OCaml modules for efficiently manipulating Java bytecode programs. We present the main features of the library, including i) efficient functional data-structures for representing a program with implicit sharing and lazy parsing, ii) an intermediate stack-less representation, and iii) fast computation and manipulation of complete programs. We provide experimental evaluations of the different features with respect to time, memory and precision.
|
| [7] |
Delphine Demange, Thomas Jensen, and David Pichardie.
A provably correct stackless intermediate representation for Java
bytecode.
In Proc. of the 8th Asian Symposium on Programming Languages and
Systems (APLAS 2010), volume 6461 of Lecture Notes in Computer
Science, pages 97-113. Springer-Verlag, 2010.
[ bib |
.pdf ]
The Java virtual machine executes stack-based bytecode. The intensive use of an operand stack has been identified as a major obstacle for static analysis and it is now common for static analysis tools to manipulate a stackless intermediate representation (IR) of bytecode programs. This paper provides such a bytecode transformation, describes its semantic correctness and evaluates its performance. We provide the semantic foundations for proving that an initial program and its IR behave similarly, in particular with respect to object creation and throwing of exceptions. The correctness of this transformation is proved with respect to a relation on execution traces taking into account that the object allocation order is not preserved by the transformation.
|
| [8] |
Laurent Hubert, Thomas Jensen, Vincent Monfort, and David Pichardie.
Enforcing secure object initialization in Java.
In Proc. of the 15th European Symposium on Research in Computer
Security (ESORICS 2010), volume 6345 of Lecture Notes in Computer
Science, pages 101-115. Springer-Verlag, 2010.
[ bib |
.pdf ]
Sun and the CERT recommend for secure Java development to not allow partially initialized objects to be accessed. The CERT considers the severity of the risks taken by not following this recommendation as high. The solution currently used to enforce object initialization is to implement a coding pattern proposed by Sun, which is not formally checked. We propose a modular type system to formally specify the initialization policy of libraries or programs and a type checker to statically check at load time that all loaded classes respect the policy. This allows to prove the absence of bugs which have allowed some famous privilege escalations in Java. Our experimental results show that our safe default policy allows to prove 91% of classes of java.lang, java.security and javax.security safe without any annotation and by adding 57 simple annotations we proved all classes but four safe. The type system and its soundness theorem have been formalized and machine checked using Coq.
|
| [9] |
David Cachera and David Pichardie.
A certified denotational abstract interpreter.
In Proc. of International Conference on Interactive Theorem
Proving (ITP-10), volume 6172 of Lecture Notes in Computer Science,
pages 9-24. Springer-Verlag, 2010.
[ bib |
.pdf ]
Abstract Interpretation proposes advanced techniques for static analysis of programs that raise specific challenges for machine-checked soundness proofs. Most classical dataflow analysis techniques iterate operators on lattices without infinite ascending chains. In contrast, abstract interpreters are looking for fixpoints in infinite lattices where widening and narrowing are used for accelerating the convergence. Smart iteration strategies are crucial when using such accelerating operators because they directly impact the precision of the analysis diagnostic. In this paper, we show how we manage to program and prove correct in Coq an abstract interpreter that uses iteration strategies based on program syntax. A key component of the formalization is the introduction of an intermediate semantics based on a generic least-fixpoint operator on complete lattices and allows us to decompose the soundness proof in an elegant manner.
|
| [10] | Frédéric Besson, Thomas Jensen, David Pichardie, and Tiphaine Turpin. Certified result checking for polyhedral analysis of bytecode programs. In Proc. of the 5th International Symposium on Trustworthy Global Computing (TGC 2010), volume 6084 of Lecture Notes in Computer Science, pages 253-267. Springer-Verlag, 2010. [ bib | .pdf ] |
| [11] | Guillaume Hiet, Frédéric Guihéry, Goulven Guiheux, David Pichardie, and Christian Brunette. Sécurité de la plate-forme d'exécution Java : limites et propositions d'améliorations. In Proc. of Symposium sur la sécurité des technologies de l'information et des communications (SSTIC 2010), 2010. [ bib | .pdf ] |
| [12] | Frédéric Besson, Thomas Jensen, Guillaume Dufay, and David Pichardie. Verifying resource access control on mobile interactive devices. Journal of Computer Security, 18(6):971-998, 2010. [ bib | .pdf ] |
| [13] | Frédéric Besson, David Cachera, Thomas P. Jensen, and David Pichardie. Certified static analysis by abstract interpretation. In Foundations of Security Analysis and Design V, FOSAD 2007/2008/2009 Tutorial Lectures, volume 5705 of Lecture Notes in Computer Science, pages 223-257. Springer-Verlag, 2009. [ bib | .pdf ] |
| [14] | Frédéric Dabrowski and David Pichardie. A certified data race analysis for a Java-like language. In Proc. of 22nd International Conference on Theorem Proving in Higher Order Logics (TPHOLs'09), volume 5674 of Lecture Notes in Computer Science, pages 212-227. Springer-Verlag, 2009. [ bib | .pdf ] |
| [15] | David Cachera and David Pichardie. Comparing techniques for certified static analysis. Proc. of the 1st NASA Formal Methods Symposium (NFM'09), pages 111-115, 2009. [ bib | .pdf ] |
| [16] | Laurent Hubert and David Pichardie. Soundly handling static fields: Issues, semantics and analysis. Proc. of the 4th International Workshop on Bytecode Semantics, Verification, Analysis and Transformation (BYTECODE'09), 253(5):15-30, 2009. [ bib | .pdf ] |
| [17] | Gilles Barthe, César Kunz, David Pichardie, and Julián Samborski Forlese. Preservation of proof obligations for hybrid certificates. In Proc. of the 6th IEEE International Conferences on Software Engineering and Formal Methods (SEFM'08), pages 127-136. IEEE Computer Society, 2008. [ bib | .pdf ] |
| [18] | Laurent Hubert, Thomas Jensen, and David Pichardie. Semantic foundations and inference of non-null annotations. In Proc. of the 10th International Conference on Formal Methods for Open Object-based Distributed Systems (FMOODS'08), volume 5051 of Lecture Notes in Computer Science, pages 132-149. Springer-Verlag, 2008. [ bib | .pdf ] |
| [19] | David Pichardie. Building certified static analysers by modular construction of well-founded lattices. In Proc. of the 1st International Conference on Foundations of Informatics, Computing and Software (FICS'08), volume 212 of Electronic Notes in Theoretical Computer Science, pages 225-239, 2008. [ bib | .pdf ] |
| [20] | Gilles Barthe, Pierre Crégut, Benjamin Grégoire, Thomas Jensen, and David Pichardie. The MOBIUS Proof Carrying Code infrastructure. In Proc. of the 6th International Symposium on Formal Methods for Components and Objects (FMCO'07), volume 5382 of Lecture Notes in Computer Science, pages 1-24. Springer-Verlag, 2007. [ bib ] |
| [21] | Gilles Barthe, David Pichardie, and Tamara Rezk. A Certified Lightweight Non-Interference Java Bytecode Verifier. In Proc. of 16th European Symposium on Programming (ESOP'07), volume 4421 of Lecture Notes in Computer Science, pages 125-140. Springer-Verlag, 2007. [ bib | .pdf ] |
| [22] | Frédéric Besson, Thomas Jensen, and David Pichardie. Proof-carrying code from certified abstract interpretation to fixpoint compression. Theoretical Computer Science, 364(3):273-291, 2006. [ bib | .pdf ] |
| [23] | Frédéric Besson, Thomas Jensen, and David Pichardie. A PCC Architecture based on Certified Abstract Interpretation. In Proc. of 1st International Workshop on Emerging Applications of Abstract Interpretation (EAAI'06), ENTCS. Springer-Verlag, 2006. [ bib | .pdf ] |
| [24] | Gilles Barthe, Julien Forest, David Pichardie, and Vlad Rusu. Defining and reasoning about recursive functions: A practical tool for the coq proof assistant. In Proc. of 8th International Symposium on Functional and Logic Programming (FLOPS'06), volume 3945 of Lecture Notes in Computer Science, pages 114-129. Springer-Verlag, 2006. [ bib | .pdf ] |
| [25] | Pichardie David. Interprétation abstraite en logique intuitionniste : extraction d'analyseurs Java certifiés. PhD thesis, Université Rennes 1, 2005. In french. [ bib | .pdf ] |
| [26] | David Pichardie. Modular proof principles for parameterized concretizations. In Proc. of 2nd International Workshop on Construction and Analysis of Safe, Secure and Interoperable Smart Devices (CASSIS 2005), number 3956 in Lecture Notes in Computer Science, pages 138-154. Springer-Verlag, 2005. [ bib | .pdf ] |
| [27] | David Cachera, Thomas Jensen, David Pichardie, and Gerardo Schneider. Certified Memory Usage Analysis. In Proc. of 13th International Symposium on Formal Methods (FM'05), number 3582 in Lecture Notes in Computer Science, pages 91-106. Springer-Verlag, 2005. [ bib | .pdf ] |
| [28] | David Cachera, Thomas Jensen, David Pichardie, and Vlad Rusu. Extracting a Data Flow Analyser in Constructive Logic. Theoretical Computer Science, 342(1):56-78, September 2005. Extended version of [29]. [ bib | .pdf ] |
| [29] | David Cachera, Thomas Jensen, David Pichardie, and Vlad Rusu. Extracting a Data Flow Analyser in Constructive Logic. In Proc. of 13th European Symposium on Programming (ESOP'04), number 2986 in Lecture Notes in Computer Science, pages 385-400. Springer-Verlag, 2004. [ bib | .pdf ] |
| [30] | Thomas Genet, Thomas Jensen, Vikash Kodati, and David Pichardie. A Java Card CAP converter in PVS. In Jens Knoop and Wolf Zimmermann, editors, Proc. of 2nd International Workshop on Compiler Optimization Meets Compiler Verification (COCV 2003), Electronic Notes in Theoretical Computer Science, volume 82. Elsevier, 2004. [ bib | .pdf ] |
| [31] | David Cachera and David Pichardie. Embedding of Systems of Affine Recurrence Equations in Coq. In Proc. of 16th International Conference on Theorem Proving in Higher Order Logics (TPHOLs'03), number 2758 in Lecture Notes in Computer Science, pages 155-170. Springer-Verlag, 2003. [ bib | .pdf ] |
| [32] | David Pichardie and Yves Bertot. Formalizing Convex Hulls Algorithms. In Proc. of 14th International Conference on Theorem Proving in Higher Order Logics (TPHOLs'01), number 2152 in Lecture Notes in Computer Science, pages 346-361. Springer-Verlag, 2001. [ bib | .pdf ] |
This file was generated by bibtex2html 1.95.