Temporal Logic for Proof-Carrying Code

Proof-carrying code (PCC) is a framework for ensuring that untrusted programs are safe to install and execute. When using PCC, untrusted programs are required to contain a proof that allows the program text to be checked efficiently for safe behavior. In this paper, we lay the foundation for a potential engineering improvement to PCC. Specifically, we present a practical approach to using temporal logic to specify security policies in such a way that a PCC system can enforce them.

[1]  George C. Necula,et al.  Compiling with proofs , 1998 .

[2]  David Walker,et al.  Typed memory management in a calculus of capabilities , 1999, POPL '99.

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

[4]  Karl Crary,et al.  From system F to typed assembly language , 1999, TOPL.

[5]  Andrew W. Appel,et al.  A semantic model of types and machine instructions for proof-carrying code , 2000, POPL '00.

[6]  George C. Necula,et al.  Oracle-based checking of untrusted software , 2001, POPL '01.

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

[8]  Frank Pfenning,et al.  System Description: Twelf - A Meta-Logical Framework for Deductive Systems , 1999, CADE.

[9]  Zohar Manna,et al.  The Temporal Logic of Reactive and Concurrent Systems , 1991, Springer New York.

[10]  Robert Wahbe,et al.  Efficient software-based fault isolation , 1994, SOSP '93.

[11]  Andrew W. Appel,et al.  Machine Instruction Syntax and Semantics in Higher Order Logic , 2000, CADE.

[12]  Dexter Kozen Efficient Code Certification , 1998 .

[13]  Úlfar Erlingsson,et al.  IRM enforcement of Java stack inspection , 2000, Proceeding 2000 IEEE Symposium on Security and Privacy. S&P 2000.

[14]  George C. Necula,et al.  A certifying compiler for Java , 2000, PLDI '00.

[15]  Fred B. Schneider,et al.  Enforceable security policies , 2000, TSEC.

[16]  David Walker,et al.  A type system for expressive security policies , 2000, POPL '00.

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