A Scalable Architecture for Proof-Carrying Code
- George C. Necula
- … show all 1 hide
Proof-Carrying Code (PCC) is a general mechanism for verifying that a code fragment can be executed safely on a host system. The key technical detail that makes PCC simple yet very powerful is that the code fragment is required to be accompanied by a detailed and precise explanation of how it satisfies the safety policy. This leaves the code receiver with the simple task of verifying that the explanation is correct and that it matches the code in question.
Previous implementations of PCC used safety explanations in the form of explicit formal proofs of code safety, thus gaining leverage from a substantial amount of previous research in the area of proof representation and checking, but at the expense of poor scalability due to large proof sizes. In this paper we describe a series of changes that are necessary to achieve a truly scalable architecture for PCC. These include a new proof representation form along with a better integration of the various components of a PCC checker. We also present experimental results that show this architecture to be effective for checking the type safety of even very large programs expressed as machine code.
- Colby, C., Lee, P., Necula, G. C., Blau, F., Plesko, M., Cline, K. (2000) A certifying compiler for Java. ACM SIGPLAN Notices 35: pp. 95-107 CrossRef
- Bruijn, N. (1972) Lambda-calculus notation with nameless dummies, a tool for automatic formula manipulation. Indag. Mat. 34: pp. 381-392
- Harper, R., Honsell, F., Plotkin, G. (1993) A framework for defining logics. Journal of the Association for Computing Machinery 40: pp. 143-184
- Morrisett, G., Walker, D., Crary, K., Glew, N. (1999) From system F to typed assembly language 21: pp. 527-568
- George C. Necula. Proof-carrying code. In The 24th Annual ACM Symposium on Principles of Programming Languages, pages 106–119. ACM, January 1997.
- George C. Necula. Compiling with Proofs. PhD thesis, Carnegie Mellon University, September 1998. Also available as CMU-CS-98-154.
- George C. Necula and Peter Lee. Safe kernel extensions without runtime checking. In Second Symposium on Operating Systems Design and Implementations, pages 229–243. Usenix, October 1996.
- George C. Necula and Peter Lee. Efficient representation and validation of proofs. In Thirteenth Annual Symposium on Logic in Computer Science, pages 93–104, Indianapolis, June 1998. IEEE Computer Society Press.
- George C. Necula and Shree P. Rahul. Oracle-based checking of untrusted programs. In The 28th Annual ACM Symposium on Principles of Programming Languages. ACM, January 2001. To appear.
- Ramesh, R., Ramakrishnan, I. V., Scott Warren, D. (1995) Automatadriven indexing of Prolog clauses. Journal of Logic Programming 23: pp. 151-202 CrossRef
- A Scalable Architecture for Proof-Carrying Code
- Book Title
- Functional and Logic Programming
- Book Subtitle
- 5th International Symposium, FLOPS 2001 Tokyo, Japan, March 7–9, 2001 Proceedings
- pp 21-39
- Print ISBN
- Online ISBN
- Series Title
- Lecture Notes in Computer Science
- Series Volume
- Series ISSN
- Springer Berlin Heidelberg
- Copyright Holder
- Springer-Verlag Berlin Heidelberg
- Additional Links
- Industry Sectors
- eBook Packages
- Editor Affiliations
- 4. Institut für Wirtschaftsinformatik, WestfälischeWilhelms-Universität Münster
- 5. Department of Information and Computer Science, Waseda University
- George C. Necula (6)
- Author Affiliations
- 6. Department of Electrical Engineering and Computer Sciences, University of California, Berkeley, CA, 94720, USA
To view the rest of this content please follow the download PDF link above.