Skip to main content

Proof-Carrying Code

  • Reference work entry

Related Concepts

Digital Signatures

Definition

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 why 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.

Background

More and more software systems are designed and built to be extensible and configurable dynamically. The extensions can be in the form of software upgrades, add-on modules, plugins, or applets. When the producer of the extension is not trusted, there is a need for a general mechanism that can be used to allow even untrusted system extensions to be integrated into an existing software system without compromising the stability and security of the host system.

Proof-Carrying Code...

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   799.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD   949.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Recommended Reading

  1. Appel AW, Felty PA (2000) A semantic model of types and machine instructions for proof-carrying code. In: Conference record of the symposium on Principles of Programming Languages (POPL’00). Boston, USA, pp 243–253

    Google Scholar 

  2. Cai H, Shao Z, Vaynberg A (2007) Certified self-modifying code. In: Conference on Programming Language Design and implementation PLDI’97. Las Vegas, USA

    Google Scholar 

  3. Colby C, Lee P, Necula GC, Blau F, Plesko M, Cline K (2000) A certifying compiler for Java. ACM SIGPLAN Not 35(5):95–107

    Google Scholar 

  4. Feng X, Shao Z, Guo Y, Dong Y (2009) Certifying low-level programs with hardware interrupts and preemptive threads. J Autom Reason 42:301–347

    MATH  Google Scholar 

  5. Hamid NA, Shao Z, Trifonov V, Monnier S, Ni Z (2002) A syntactic approach to foundational proof-carrying code. In: Seventeenth IEEE symposium on logic in computer science. Copenhagen, Denmark, pp 89–100

    Google Scholar 

  6. Harper R, Honsell F, Plotkin G (1993) A framework for defining logic. J Assoc Comput Machin 40(1):143–184

    MATH  MathSciNet  Google Scholar 

  7. Lindholm T, Yellin F (1997) The Java virtual machine Specification. The Java Series. Addison-Wesely, Reading

    Google Scholar 

  8. McCanne S, Jacobson V (1993) The BSD packet filter: a new architecture for user-level packet capture. In: The winter 1993 USENIX conference, San Diego. USENIX Association, pp 259–269

    Google Scholar 

  9. Microsoft Corporation (1996) Proposal for authenticating code via the Internet. http://www.microsoft.com/secruity/tech/authcode/authcode-f.htm. Accessed Apr 1996

  10. Necula GC (1997) Proof-carrying code. In: Conference record of the 24th symposium on Principles of Programming Languages (POPL’97), Paris. ACM Press, pp 106–119

    Google Scholar 

  11. Necula GC, Lee P (1996) Safe kernel extensions without run-time checking. In: second symposium on operating systems design and implementations. Usenix, Seattle, USA, pp 229–243

    Google Scholar 

  12. Necula GC, Rahul SP (2001) Oracle-based checking of untrusted software. In: Conference record of the symposium on Principles of Programming Languages (POPL’01). ACM Press, London, UK, pp 142–154

    Google Scholar 

  13. Wahbe R, Lucco S, Anderson TE (1993) Graham SL efficient software-based fault isolation. In: 14th ACM symposium on operating system principles. Asheville. North Carolina, pp 203–216

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer Science+Business Media, LLC

About this entry

Cite this entry

Necula, G. (2011). Proof-Carrying Code. In: van Tilborg, H.C.A., Jajodia, S. (eds) Encyclopedia of Cryptography and Security. Springer, Boston, MA. https://doi.org/10.1007/978-1-4419-5906-5_864

Download citation

Publish with us

Policies and ethics