Proof-Carrying Code & Proof-Carrying Authentication Stuart Pickard CSCI 297 June 2, 2005.

Slides:



Advertisements
Similar presentations
Automated Theorem Proving Lecture 1. Program verification is undecidable! Given program P and specification S, does P satisfy S?
Advertisements

An Alternative to Short Lived Certificates By Vipul Goyal Department of Computer Science & Engineering Institute of Technology Banaras Hindu University.
Chapter 14 – Authentication Applications
PIS: Unit III Digital Signature & Authentication Sanjay Rawat PIS Unit 3 Digital Sign Auth Sanjay Rawat1 Based on the slides of Lawrie.
In this episode of The Verification Corner, Rustan Leino talks about Loop Invariants. He gives a brief summary of the theoretical foundations and shows.
Foundational Certified Code in a Metalogical Framework Karl Crary and Susmit Sarkar Carnegie Mellon University.
David Evans CS655: Programming Languages University of Virginia Computer Science Lecture 20: Total Correctness; Proof-
Reasoning About Code; Hoare Logic, continued
CSCE 715: Network Systems Security Chin-Tser Huang University of South Carolina.
David Evans CS655: Programming Languages University of Virginia Computer Science Lecture 19: Minding Ps & Qs: Axiomatic.
Partial correctness © Marcelo d’Amorim 2010.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Axiomatic Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
1 Semantic Description of Programming languages. 2 Static versus Dynamic Semantics n Static Semantics represents legal forms of programs that cannot be.
An Introduction to Proof-Carrying Code David Walker Princeton University (slides kindly donated by George Necula; modified by David Walker)
The Design and Implementation of a Certifying Compiler [Necula, Lee] A Certifying Compiler for Java [Necula, Lee et al] David W. Hill CSCI
Code-Carrying Proofs Aytekin Vargun Rensselaer Polytechnic Institute.
CLF: A Concurrent Logical Framework David Walker Princeton (with I. Cervesato, F. Pfenning, K. Watkins)
LAB#2 JAVA SECURITY OVERVIEW Prepared by: I.Raniah Alghamdi.
Introduction to PKI Seminar What is PKI? Robert Brentrup July 13, 2004.
Information Security of Embedded Systems : Public Key Cryptosystems, Communication Prof. Dr. Holger Schlingloff Institut für Informatik und Fraunhofer.
Proof-system search ( ` ) Interpretation search ( ² ) Main search strategy DPLL Backtracking Incremental SAT Natural deduction Sequents Resolution Main.
Mar 4, 2003Mårten Trolin1 This lecture Diffie-Hellman key agreement Authentication Certificates Certificate Authorities.
8-1 What is network security? Confidentiality: only sender, intended receiver should “understand” message contents m sender encrypts message m receiver.
Programmability with Proof-Carrying Code George C. Necula University of California Berkeley Peter Lee Carnegie Mellon University.
CMSC 414 Computer and Network Security Lecture 9 Jonathan Katz.
Language-Based Security Proof-Carrying Code Greg Morrisett Cornell University Thanks to G.Necula & P.Lee.
Software Reliability Methods Sorin Lerner. Software reliability methods: issues What are the issues?
CMSC 414 Computer and Network Security Lecture 19 Jonathan Katz.
A Type System for Expressive Security Policies David Walker Cornell University.
From last time S1: l := new Cons p := l S2: t := new Cons *p := t p := t l p S1 l p tS2 l p S1 t S2 l t S1 p S2 l t S1 p S2 l t S1 p L2 l t S1 p S2 l t.
Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Axiomatic Semantics ICS 535.
Describing Syntax and Semantics
Extensible Untrusted Code Verification Robert Schneck with George Necula and Bor-Yuh Evan Chang May 14, 2003 OSQ Retreat.
Extensible Code Verification Kun Gao (Senior EECS) with Professor George Necula, Evan Chang, Robert Schneck, Adam Chlipala An individual receives code.
Alexander Potapov.  Authentication definition  Protocol architectures  Cryptographic properties  Freshness  Types of attack on protocols  Two-way.
INTRODUCTION Why Signatures? A uthenticates who created a document Adds formality and finality In many cases, required by law or rule Digital Signatures.
By Jyh-haw Yeh Boise State University ICIKM 2013.
AQA Computing A2 © Nelson Thornes 2009 Section Unit 3 Section 6.4: Internet Security Digital Signatures and Certificates.
Pre/Post Condition Logic 03/06/2013. Agenda Hoare’s Logic Overview Application to Pre/Post Conditions.
NENA Development Conference | October 2014 | Orlando, Florida Security Certificates Between i3 ESInet’s and FE’s Nate Wilcox Emergicom, LLC Brian Rosen.
Csci5233 Computer Security1 Bishop: Chapter 14 Representing Identity.
Reading and Writing Mathematical Proofs
Proof Carrying Code Zhiwei Lin. Outline Proof-Carrying Code The Design and Implementation of a Certifying Compiler A Proof – Carrying Code Architecture.
Introduction1-1 Data Communications and Computer Networks Chapter 6 CS 3830 Lecture 31 Omar Meqdadi Department of Computer Science and Software Engineering.
VERIFICATION OF ASPECT-ORIENTED MODELS Review of Aspect-Oriented Definitions aspect – crosscutting concern that may involve multiple classes pointcut –
23-1 Last time □ P2P □ Security ♦ Intro ♦ Principles of cryptography.
ISBN Chapter 3 Describing Semantics -Attribute Grammars -Dynamic Semantics.
CS 363 Comparative Programming Languages Semantics.
Network Security7-1 CIS3360: Chapter 8: Cryptography Application of Public Cryptography Cliff Zou Spring 2012 TexPoint fonts used in EMF. Read the TexPoint.
sec1 IEEE MEDIA INDEPENDENT HANDOVER DCN: sec Title: TGa_Proposal_Antonio_Izquierdo (Protecting the Information Service.
Slide 1 © 2004 Reactivity The Gap Between Reliability and Security Eric Gravengaard Reactivity.
Encryption / Security Victor Norman IS333 / CS332 Spring 2014.
© Andrew IrelandDependable Systems Group On the Scalability of Proof Carrying Code for Software Certification Andrew Ireland School of Mathematical & Computer.
Security (and privacy) Larry Rudolph With help from Srini Devedas, Dwaine Clark.
The TAOS Authentication System: Reasoning Formally About Security Brad Karp UCL Computer Science CS GZ03 / M th November, 2008.
Lazy Annotation for Program Testing and Verification Speaker: Chen-Hsuan Adonis Lin Advisor: Jie-Hong Roland Jiang November 26,
Digital Signatures, Message Digest and Authentication Week-9.
Reasoning about programs March CSE 403, Winter 2011, Brun.
Chapter 3 Part II Describing Syntax and Semantics.
COP4020 Programming Languages Introduction to Axiomatic Semantics Prof. Robert van Engelen.
Network Security Continued. Digital Signature You want to sign a document. Three conditions. – 1. The receiver can verify the identity of the sender.
ANU COMP2110 Software Design in 2003 Lecture 10Slide 1 COMP2110 Software Design in 2004 Lecture 12 Documenting Detailed Design How to write down detailed.
SAFE KERNEL EXTENSIONS WITHOUT RUN-TIME CHECKING George C. Necula Peter Lee Carnegie Mellon U.
PROGRAMMING PRE- AND POSTCONDITIONS, INVARIANTS AND METHOD CONTRACTS B MODULE 2: SOFTWARE SYSTEMS 13 NOVEMBER 2013.
CSE 60641: Operating Systems George C. Necula and Peter Lee, Safe Kernel Extensions Without Run-Time Checking, OSDI ‘96 –SIGOPS Hall of fame citation:
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
Prof. Reuven Aviv, Nov 2013 Public Key Infrastructure1 Prof. Reuven Aviv Tel Hai Academic College Department of Computer Science Public Key Infrastructure.
State your reasons or how to keep proofs while optimizing code
The New Virtual Organization Membership Service (VOMS)
Presentation transcript:

Proof-Carrying Code & Proof-Carrying Authentication Stuart Pickard CSCI 297 June 2, 2005

Proof-Carrying Code Proof-Carrying Code George C. Necula. POPL97, January Proof-Carrying Authentication Proof-Carrying Authentication Andrew W. Appel and Edward W. Felten. 6th ACM Conference on Computer and Communications Security, November Papers

The “Proof-Carrying Code” paper is an extension on Tuesday’s presentation on Certifying Compilers. However, the “Proof-Carrying Authentication” is a new topic that uses similar logic to Proof-Carrying Code to prove the right of authentication.

Proof-Carrying Code (quick review) code Stuart Prof. Simha proof Can Professor Simha trust me that my code is safe to run on his computer?

Diagram from “Proof-Carrying Code” paper

The Basic ideas of the paper: General Proof Carrying Technique With Specific Implementations: Safety Policy Safety Proofs Validation of Safety Proofs

The implementation in the paper uses First-Order Predicate Logic as a basis to formalize the safety policy. The safety rules are expressed as a Floyd-style verification condition generator When given a program and a set of preconditions and postconditions the system can produce a verification condition predicate (VC) in First–Order Logic. If the VC can be proven using the proof rules associated with the logic, then the program satisfies the safety invariants. If the VC cannot be proven, then the program does not satisfy the safety invariants and is unsafe to run.

So what is First-Order Predicate Logic? First-order predicate calculus or first-order logic (FOL) permits the formulation of quantified statements such as "there exists an x such that..." In our case: The statements that need to be quantified are the annotated lines of code where type verification is needed.

The Typing Rules

Theorem 3.1 Any program with a valid verification condition starting in a state that satisfies the preconditions will only reference valid memory locations Theorem: For any program Π, set of invariants Inv and postcondition Post such that Π0 = INV Pre, if ► VC (Π, Inv, Post) and the initial state satisfies the precondition Pre, then the program reads only from valid memory locations as they are defined by the typing rules, and if it terminates, it does so in a state satisfying the postcondition.

Theorem Corollary These theorems can be used to help prove adequacy of the first-order logic to guarantee type safety as defined by the safety policy

Recap of Paper Proof-Carrying code is a mechanism to allow code users to be guaranteed safe code in regards to their safety policy. The main contribution of the paper was the fact that they implemented a system of program verification using certification (creating the proof on the code producer side) and proof validation (on the code user side)

Paper number 2: “Proof-Carrying Authentication” Main Idea: Say for example a client desired access to a server, but needed to be authenticated. The authors are purposing a strategy, analogous to Proof-Carrying Code, that makes the user construct a proof that shows they should have access. The server then verifies correctness of the proof and lets the user proceed

Access? proof Check Proof Grant Access Proof-Carrying Authentication

Example of Proof-Carrying Authentication Protocol Suppose Stuart wanted to access an server named GWU. The server receives a request from Stuart to “read Stuart’s .” GWU’s control list says that Stuart can read his . But is the request really from Stuart? How do we solve this?

Add a Certificate Authority The server GWU trusts the CA to guarantee key-to-name bindings, and the server also knows the CA’s public key. Stuart then obtains a certificate signed by CA’s private key that says “Ks is Stuart’s public key.” Stuart then signs the message ”read Stuart’s ” with his private key. With this information GWU can safely grant the request to “read Stuart’s .”

Constructing the Proof The server GWU starts with the following assumptions: A1 = trustedCA(CA) A2 = keybind(Kc, CA) A3 = Stuart controls read Stuart’s With these assumptions published to Stuart, Stuart can prove to the server GWU that he should be able to read his using high-order logic.

Proof:

How the Proof is checked: First check the two digital signatures to establish the fact that Ks signed “read Stuart’s ” and Kc signed the keybind(Ks, S) From assumption A1 we can prove C controls keybind(Ks, S) by the lemma trustedCA_e. From A2 and a digital; signature we prove C(keybind(Ks, S)) by the keybind_e lemma.

Proof Check continued Now from the last two results (C controls keybind(Ks, S) and C(keybind(Ks, S))) we prove keybind(Ks, S) by the controls_e lemma. From this result and a signature we prove S(read Stuart’s ) by the keybind_e lemma. Finally, from assumption A3 and S(read Stuart’s ) we prove “read Stuart’s ” by controls_e. Thus, the server GWU authenticates the user Stuart and allows him access to his

Note: All parts of the proof need to be true/ checked in order for authentication to occur

Advantages Just like Proof-Carrying Code, the burden is placed on one side. It is easy to check a proof, but hard to create a proof. The user takes the burden and leaves the server to perform the easy proof checking

Implementation of previous example in Twelf Twelf is an implementation of the Edinburgh Logical Framework. A standard way of representing this protocol is needed and the code on the next slide is an example of the standard used in this paper.

Twelf representation

Overview Overall, this example has shown that higher-order logic can be used for authentication purposes The proofs can be small and not too difficult to create. Also, proof checking is easy in comparison to proof creation.

Sources George C. Necula. Proof-Carrying Code POPL97, January 1997.Proof-Carrying Code Andrew W. Appel and Edward W. Felten. Proof-Carrying Authentication 6th ACM Conference on Computer and Communications Security, November 1999.Proof-Carrying Authentication Peter Lee osdi96/node2.html Tue Sep 17 15:37:44 EDT 1996http://www-2.cs.cmu.edu/Groups/fox/papers/necula- osdi96/node2.html

Discussion