Application of dependency graph to security protocol analysis Ilja Tšahhirov (joint work with Peeter Laud) Theory Days at Jõulumäe 5 Oct 2008.

Slides:



Advertisements
Similar presentations
Decision Structures - If / Else If / Else. Decisions Often we need to make decisions based on information that we receive. Often we need to make decisions.
Advertisements

While loops.
Logic Programming Automated Reasoning in practice.
SSA.
Hash Function. What are hash functions? Just a method of compressing strings – E.g., H : {0,1}*  {0,1} 160 – Input is called “message”, output is “digest”
Timed Automata.
School of EECS, Peking University “Advanced Compiler Techniques” (Fall 2011) Dataflow Analysis Introduction Guo, Yao Part of the slides are adapted from.
Tutorial 6 of CSCI2110 Bipartite Matching Tutor: Zhou Hong ( 周宏 )
Theory Days at Andup.1 Proving the Correctness of Dependency Graph Transformation Ilja Tšahhirov (joint work with Peeter Laud and Keiko Nakata)
CMPT 354, Simon Fraser University, Fall 2008, Martin Ester 52 Database Systems I Relational Algebra.
1 Basic abstract interpretation theory. 2 The general idea §a semantics l any definition style, from a denotational definition to a detailed interpreter.
Constraint Logic Programming Ryan Kinworthy. Overview Introduction Logic Programming LP as a constraint programming language Constraint Logic Programming.
Week 10 Recap CSE 115 Spring For-each loop When we have a collection and want to do something to all elements of that collection we use the for-each.
CS 536 Spring Intermediate Code. Local Optimizations. Lecture 22.
1 Digital Logic
February 12, 2009 Center for Hybrid and Embedded Software Systems Encapsulated Model Transformation Rule A transformation.
February 12, 2009 Center for Hybrid and Embedded Software Systems Model Transformation Using ERG Controller Thomas H. Feng.
Digital signature in automatic analyses for confidentiality against active adversaries Ilja Tšahhirov, Peeter Laud.
CPSC 171 Introduction to Computer Science Boolean Logic, Gates, & Circuits.
Introduction to ASMs Dumitru Roman Digital Enterprise Research Institute
Invitation to Computer Science, Java Version, Second Edition.
COMPUTER PROGRAMMING. Control Structures A program is usually not limited to a linear sequence of instructions. During its process it may repeat code.
1 Relational Expressions Relational expressions: –Expressions that compare operands –Sometimes called conditions –Evaluated to yield a result –Typically.
VB Games: Preparing for Memory Brainstorm controls & events Parallel structures (again), Visibility, LoadPicture, User-defined procedures, Do While/Loop,busy.
1 Week 2: Variables and Assignment Statements READING: 1.4 – 1.6 EECS Introduction to Computing for the Physical Sciences.
Password Mistyping in Two-Factor Authenticated Key Exchange Vladimir KolesnikovCharles Rackoff Bell LabsU. Toronto ICALP 2008.
CS231 Boolean Algebra1 K-map Summary K-maps are an alternative to algebra for simplifying expressions. – The result is a minimal sum of products, which.
1 Code optimization “Code optimization refers to the techniques used by the compiler to improve the execution efficiency of the generated object code”
CMP-MX21: Lecture 4 Selections Steve Hordley. Overview 1. The if-else selection in JAVA 2. More useful JAVA operators 4. Other selection constructs in.
Propositional Calculus CS 270: Mathematical Foundations of Computer Science Jeremy Johnson.
In1200/04-PDS 1 TU-Delft Digital Logic. in1200/04-PDS 2 TU-Delft Unit of Information l Computers consist of digital (binary) circuits l Unit of information:
Loops Robin Burke IT 130. Outline Announcement: Homework #6 Conditionals (review) Iteration while loop while with counter for loops.
Basic Scheme February 8, 2007 Compound expressions Rules of evaluation Creating procedures by capturing common patterns.
XP New Perspectives on XML, 2 nd Edition Tutorial 7 1 TUTORIAL 7 CREATING A COMPUTATIONAL STYLESHEET.
1Computer Sciences Department. Book: INTRODUCTION TO THE THEORY OF COMPUTATION, SECOND EDITION, by: MICHAEL SIPSER Reference 3Computer Sciences Department.
LDK R Logics for Data and Knowledge Representation ClassL (part 2): Reasoning with a TBox 1.
1/33 Basic Scheme February 8, 2007 Compound expressions Rules of evaluation Creating procedures by capturing common patterns.
Functional Modeling.
COMPE 111 Introduction to Computer Engineering Programming in Python Atılım University
Copyright 2006 Addison-Wesley Brief Version of Starting Out with C++ Chapter 5 Looping.
Arrays and Loops. Learning Objectives By the end of this lecture, you should be able to: – Understand what a loop is – Appreciate the need for loops and.
4 - Conditional Control Structures CHAPTER 4. Introduction A Program is usually not limited to a linear sequence of instructions. In real life, a programme.
Introduction to Programming Lesson 1. Algorithms Algorithm refers to a method for solving problems. Common techniques for representing an algorithms:
NUMBER SYSTEMS.
Algorithms, Part 1 of 3 The First step in the programming process
Basic Scheme February 8, 2007 Compound expressions Rules of evaluation
Software Testing.
Logics for Data and Knowledge Representation
Introduction to Programming for Mechanical Engineers (ME 319)
INC 161 , CPE 100 Computer Programming
Introduction to Computer Science / Procedural – 67130
Graph-Based Operational Semantics
Invitation to Computer Science, Java Version, Third Edition
Relational Algebra Chapter 4, Part A
Boolean logic Taken from notes by Dr. Neil Moore
Computers & Programming Languages
Logics for Data and Knowledge Representation
Algorithm Discovery and Design
Introduction to Primitive Data types
Coding Concepts (Basics)
Logical Operations In Matlab.
Resolution Proofs for Combinational Equivalence
M150: Data, Computing and Information
Boolean logic Taken from notes by Dr. Neil Moore
Using Decision Structures
Introduction to the Lab
Chapter 3 – Describing Logic Circuits
Flow of Control Flow of control is the order in which a program performs actions. Up to this point, the order has been sequential. A branching statement.
Introduction to Primitive Data types
Logics for Data and Knowledge Representation
Presentation transcript:

Application of dependency graph to security protocol analysis Ilja Tšahhirov (joint work with Peeter Laud) Theory Days at Jõulumäe 5 Oct 2008

Last talk on the subject ended like this…

The Plan Dependency Graphs Improvements made Transformation specification  analysis NAND-analysis Independence Analysis Conclusion

Protocol Fragment – Common Syntax

Protocol fragment – Procedural Language Initialization Party AParty B

Protocol Fragment – Dependency Graph

Protocol Fragment – Dependency Graph (+ Control Dependencies)

Dependency Graph Execution Initialize the graph node values with  /false, Repeat{ Adversary sets the Req- and Receive-nodes Graph is evaluated Adversary is made aware of the values of Send-nodes } until Adversary indicates to stop Adversary’s goal in the game is to produce different output depending on the secret message

Dependency Graph Evaluation Node semantics defined as a step function (has to be monotone): Graph step function is parallel application of all the nodes step functions: – Is also monotone – Has a fixed point Special value – T – to indicate that something inconsistent has happened. If any node returns it – graph evaluation is stopped

Dependency Graph Transformation Transformations: – Dead code removal – Boolean logic based – Operations semantics based – Cryptographic-primitives-based – Duplicate computations removal – Changing the computations order

Transformations – Specification

Find the corresponding sub-graph and replace it Applying the transformation

“Global” analyses Some transformations can be done locally (by just matching the fragment), while the most “fruitful” ones require the analysis of the whole graph Global transformations: –  - Analysis – Not-AND-Analysis – Independence analysis

 - Analysis Finding  : when A  B? – If A  B – If A = …  B  … – If B = …  A  … – If A  C and C  B – If B = C 1  …  C n and A  C i for all i – If A = C 1  …  C n and C i  B for all i Using  – Simplifying control dependencies – Finding additional invariants (control dependency implies one of the arguments to be equal to some other value) – Simplifying the multiplexors

Representing  Initial idea – parallel structure: But – there is a way of expressing these relationships using the semantics of the graph, and regular nodes

Nodes Needed for Representing the  Nodes with semantics depending on order of execution – A node before’ ( A, B ) initially equals false, but: If, after a fix point computation, A=true and B=false, then the node is replaced with true-node; If, after a fix point computation, B=true, then the node is replaced with false-node – If any of the before’-nodes was replaced with true, the fix-point computation is repeated T-node. A node T ( A ) equals: – false, if A=false – T, if A=true Finally: a  node. –  (A,B)  T( before’ ( A, B ) )

Representing 

Extending  For Bit String-Nodes If A and/or B is bit string node, then  is still useful – to express that A being not equal to  /false, implies B not being equal to  /false Expressing that A  B: – A – bit string, B – boolean:  ( OK ( A ), B ) – A – boolean, B – bit string:  ( A, OK ( B ) ) – A – bit string, B – bit string :  ( OK ( A ), OK ( B ) ) Finding A  B: – B is control dependency of (bit string) node A – B is data dependency of (bit string) node A, with strict operation – B is data dependency of (bit string-to-boolean) node A

Not-AND (NAND) -Analysis A NAND B means that at most one of the nodes can be different from  /false. Expressing NAND-relationship: – NAND( A, B )  T (  ( A, B ) ) – For bit string A,B: NAND ( OK ( A ), OK ( B ) ) Introducing A NAND B – When A or B is false or error-node – When A is IsEq ( C, D ) and B is IsNeq ( C, D ) – Cases following from the cryptographic primitives semantics Propagating NAND – If A NAND B and C = …  B  … then A NAND C – If A = C 1  …  C n and C i NAND B for all i then A NAND B The goal is to derive A NAND A – then A can be replaced with  /false

Independence Analysis If ancestors of two nodes being compared do not intersect, and one of them is a function of random coins… Note that it can only be done if the ancestors of second node does not depend on adversary

If the second node depends on adversary input Comparison can not be replaced with false, but there are certain conditions needed for it to return true: – Control dependency of RS-node is true – Control dependency of Send=node is true The idea is to add those conditions to the comparison node

I-node I ( C, R ) – if C is false, the adversary view is independent of R – i.e. if the graph contains fragment … then the adversary cannot determine which of the two random coins is used as a value of R-node, as long as C is false:

Introducing I-node Introduction: for each RS-node R, add – I ( OK ( R ), R ) Propagation: if there is I ( X  ( C 1  …  C n  OK ( V ) ), R ), and V 1,…, V k are all direct descendants of V, returning bit string, and V’’ 1,…, V’’ k’’ are all send-nodes, with data input V, and control inputs C’’ 1,…, C’’ k’’ Then the following node can be added: – I ( X  ( C 1  …  C n  OK ( V 1 ) )  … ( C 1  …  C n  OK ( V k ) )  ( C 1  …  C n  C’’ 1  OK ( V ) )  … ( C 1  …  C n  C’’ k’’  OK ( V ) ), R )

If the ancestors of nodes being compared don’t intersect, and one of the nodes depend on adversary, and another node is random Add the corresponding I-node to the comparison Using the I-Node

In closing… Currently the framework seems to be complete and suitable for experimenting with real protocols (tried it on several well-known protocols, results comply with public knowledge) Analyser prototype is sufficient for experiments, but its extensibility and usability need to be improved: – It has to be re-implemented according to the new transformation specifications, , NAND, and independent analysis representations – A GUI has to be added