Typestate: A programming language concept for enhancing software reliability
IEEE Transactions on Software Engineering
Eli: a complete, flexible compiler construction system
Communications of the ACM
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatically validating temporal safety properties of interfaces
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
ESP: path-sensitive program verification in polynomial time
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Bytecode verification on Java smart cards
Software—Practice & Experience
Construction of Abstract State Graphs with PVS
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Temporal-Safety Proofs for Systems Code
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
Safe, Untrusted Agents Using Proof-Carrying Code
Mobile Agents and Security
Boolean and Cartesian Abstraction for Model Checking C Programs
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Lightweight Bytecode Verification
Journal of Automated Reasoning
Invited talk: the blast query language for software verification
PPDP '04 Proceedings of the 6th ACM SIGPLAN international conference on Principles and practice of declarative programming
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Proof-Carrying Hardware: Towards Runtime Verification of Reconfigurable Modules
RECONFIG '09 Proceedings of the 2009 International Conference on Reconfigurable Computing and FPGAs
Clara: a framework for partially evaluating finite-state runtime monitors ahead of time
RV'10 Proceedings of the First international conference on Runtime verification
Predicate abstraction with adjustable-block encoding
Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design
CPACHECKER: a tool for configurable software verification
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Path-Sensitive dataflow analysis with iterative refinement
SAS'06 Proceedings of the 13th international conference on Static Analysis
Evaluating the effectiveness of slicing for model reduction of concurrent object-oriented programs
TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Conditional model checking: a technique to pass information between verifiers
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Hi-index | 0.00 |
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.