Programs from Proofs - A PCC Alternative

Proof-carrying code approaches aim at safe execution of untrusted code by having the code producer attach a safety proof to the code which the code consumer only has to validate. Depending on the type of safety property, proofs can however become quite large and their validation - though faster than their construction - still time consuming. In this paper we introduce a new concept for safe execution of untrusted code. It keeps the idea of putting the time consuming part of proving on the side of the code producer, however, attaches no proofs to code anymore but instead uses the proof to transform the program into an equivalent but more efficiently verifiable program. Code consumers thus still do proving themselves, however, on a computationally inexpensive level only. Experimental results show that the proof effort can be reduced by several orders of magnitude, both with respect to time and space.

[1]  Xavier Leroy,et al.  Bytecode verification on Java smart cards , 2002 .

[2]  Thomas A. Henzinger,et al.  Path invariants , 2007, PLDI '07.

[3]  Andreas Podelski,et al.  Boolean and Cartesian Abstraction for Model Checking C Programs , 2001, TACAS.

[4]  George C. Necula,et al.  Temporal-Safety Proofs for Systems Code , 2002, CAV.

[5]  Matthew B. Dwyer,et al.  Evaluating the Effectiveness of Slicing for Model Reduction of Concurrent Object-Oriented Programs , 2006, TACAS.

[6]  Thomas A. Henzinger,et al.  Conditional model checking: a technique to pass information between verifiers , 2012, SIGSOFT FSE.

[7]  Thomas A. Henzinger,et al.  Invited talk: the blast query language for software verification , 2004, PPDP '04.

[8]  J. C. Byington,et al.  Mobile agents and security , 1998, IEEE Commun. Mag..

[9]  Thomas A. Henzinger,et al.  Extreme Model Checking , 2003, Verification: Theory and Practice.

[10]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[11]  Sriram K. Rajamani,et al.  Automatically validating temporal safety properties of interfaces , 2001, SPIN '01.

[12]  Andrew W. Appel,et al.  Access control on the Web using proof-carrying authorization , 2003, Proceedings DARPA Information Survivability Conference and Exposition.

[13]  Matthew B. Dwyer,et al.  Residual dynamic typestate analysis exploiting static analysis: results to reformulate and reduce the cost of dynamic analysis , 2007, ASE.

[14]  George C. Necula,et al.  Safe, Untrusted Agents Using Proof-Carrying Code , 1998, Mobile Agents and Security.

[15]  Sorin Lerner,et al.  ESP: path-sensitive program verification in polynomial time , 2002, PLDI '02.

[16]  Dirk Beyer,et al.  Predicate abstraction with adjustable-block encoding , 2010, Formal Methods in Computer Aided Design.

[17]  Anthony M. Sloane,et al.  Eli: a complete, flexible compiler construction system , 1992, CACM.

[18]  Nachum Dershowitz,et al.  Verification: Theory and Practice , 2004, Lecture Notes in Computer Science.

[19]  George C. Necula,et al.  Proof-carrying code , 1997, POPL '97.

[20]  Andreas Podelski,et al.  ACSAR: Software Model Checking with Transfinite Refinement , 2007, SPIN.

[21]  Robert E. Strom,et al.  Typestate: A programming language concept for enhancing software reliability , 1986, IEEE Transactions on Software Engineering.

[22]  Thomas A. Henzinger,et al.  The Blast Query Language for Software Verification , 2004, SAS.

[23]  Eric Bodden,et al.  Clara: A Framework for Partially Evaluating Finite-State Runtime Monitors Ahead of Time , 2010, RV.

[24]  Eva Rose,et al.  Lightweight Bytecode Verification , 2004, Journal of Automated Reasoning.

[25]  Marco Platzner,et al.  Proof-Carrying Hardware: Towards Runtime Verification of Reconfigurable Modules , 2009, 2009 International Conference on Reconfigurable Computing and FPGAs.

[26]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[27]  Dinakar Dhurjati,et al.  Path-Sensitive Dataflow Analysis with Iterative Refinement , 2006, SAS.

[28]  Dirk Beyer,et al.  CPAchecker: A Tool for Configurable Software Verification , 2009, CAV.

[29]  Karl Crary,et al.  Resource bound certification , 2000, POPL '00.