SlideShare une entreprise Scribd logo
1  sur  68
Télécharger pour lire hors ligne
Term Rewriting applied to Cryptographic
Protocol Analysis: the Maude-NPA tool
Santiago Escobar
Departamento de Sistemas Inform´aticos y Computaci´on
Universitat Polit`ecnica de Val`encia
sescobar@dsic.upv.es
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 1 / 68
Outline
1 Formal Analysis of Protocols
The Needham-Schroeder Public Key
Motivating Protocols
Some Examples of Algebraic Identities
2 Introduction to Rewriting Logic
3 How Maude-NPA works
4 Examples of execution
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 2 / 68
Formal Analysis of Protocols
Outline
1 Formal Analysis of Protocols
The Needham-Schroeder Public Key
Motivating Protocols
Some Examples of Algebraic Identities
2 Introduction to Rewriting Logic
3 How Maude-NPA works
4 Examples of execution
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 3 / 68
Formal Analysis of Protocols
Formal Analysis of Protocols
• Crypto protocol analysis in the standard model is well understood.
• Need to support algebraic properties of some protocols
• Diffie-Hellman exponentiation,
• exclusive-or,
• homomorphism (one-sided distributivity)
• These operations well understood in the bounded sessions case
• Decidability results for exclusive-or, exponentiation, homomorphisms,
etc.
• What is lacking:
(1) more general understanding, especially for unbounded sessions,
(2) tool support.
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 4 / 68
Formal Analysis of Protocols
Our approach
• Use rewriting logic as general theoretical framework
• protocols and intruder rules specified as transition rewrite rules
• crypto properties as oriented equational properties and axioms
• Use narrowing modulo equational theories in two ways
• as a symbolic reachability analysis method
• as an extensible equational unification method
• Combine with state reduction techniques (grammars, optimizations,
etc.)
• Implement in Maude programming environment
• Rewriting logic gives us theoretical framework and understanding
• Maude implementation gives us tool support
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 5 / 68
Formal Analysis of Protocols
Our Plans
1 Start by formalizing NPA techniques in rewriting logic (2005)
2 Extend model to different types of equational theories (2006)
• Explicit Encryption and Decryption, AC-unification, Diffie-Hellman
Exponentiation, Exclusive-or
3 Include state reduction techniques (2008, 2013)
4 Document and distribute the tool (v1.0 2007)
5 Sequential protocol composition: specification and analysis (2010)
6 Integrate dedicated unification algorithms (2011)
• Homomorphism, Exclusive-or
7 Document and distribute the tool (v2.0 2012)
8 Extensive protocol analysis (2012-now)
• Homomorphism, Exclusive-or, Abelian groups
9 Advanced properties:
• Indistinguishability (2013-now), Conditional protocols (2016)
10 Standard APIs: IBM CCA, PKCS#11, Yubikey (2014-now)
11 Document and distribute the tool (v3.0 2016)
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 6 / 68
Formal Analysis of Protocols The Needham-Schroeder Public Key
Outline
1 Formal Analysis of Protocols
The Needham-Schroeder Public Key
Motivating Protocols
Some Examples of Algebraic Identities
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 7 / 68
Formal Analysis of Protocols The Needham-Schroeder Public Key
Building Blocks for Security Protocols
An example: Needham-Schroeder Public Key protocol
Building Blocks for Security Protocols
Cryptographic Procedures: encryption of messages.
{{M}KB
}K−1
B
= M
(Pseudo-)Random Number Generators: to generate “nonces”, e.g.
for “challenge/response”.
Protocols: recipe for exchanging messages.
Steps like: A sends B her name together with the message M.
The pair {A, M} is encrypted with B’s public key.
A → B : {A, M}KB
Luca Viganò (University of Verona) OFMC Fosad 2009 10 / 116
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 8 / 68
Formal Analysis of Protocols The Needham-Schroeder Public Key
An authentication protocol
An example: Needham-Schroeder Public Key protocol
An authentication protocol
The Needham-Schroeder Public Key protocol (NSPK):
1. A → B : {NA, A}KB
2. B → A : {NA, NB}KA
3. A → B : {NB}KB
Goal: mutual authentication. Translation:
“This is Alice and I have chosen a nonce NA.”
“Here is your nonce NA. Since I could read it,
I must be Bob. I also have a challenge NB for you.”
“You sent me NB. Since only Alice can read this
and I sent it back, you must be Alice.”
NSPK proposed in 1970s and used for decades, until...
Protocols are typically small and convincing... and often wrong!
Luca Viganò (University of Verona) OFMC Fosad 2009 11 / 116
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 9 / 68
Formal Analysis of Protocols The Needham-Schroeder Public Key
How to at least tie against a Chess Grandmaster
w to at least tie against a Chess Grandmaster
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 10 / 68
Formal Analysis of Protocols The Needham-Schroeder Public Key
Man-in-the-middle attack on NSPK
an-in-the-middle attack on the NSPK
X → Y : {N1, X}KY
Y → X : {N1, N2}KX
X → Y : {N2}KY
X → Y : {N1, X}KY
X → Y : {N1, X}KY
Y → X : {N1, N2}KX
Y → X : {N1, N2}KX
X → Y : {N2}KY
X → Y : {N2}KY
NSPK #1 NSPK #2
{ }NA,A KC
{ }NA,A KB
{ }NA,NB KA
{ }NA,NB AK
{ }NB CK { }NB KB
B believes he is speaking with A!
Viganò (University of Verona) OFMC Fosad 2009 13 / 116
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 11 / 68
Formal Analysis of Protocols The Needham-Schroeder Public Key
What went wrong?
• Problem in step 2:
B → A : {NA, NB}KA
• Agent B should also give his name: NA, NB, BKA .
• The improved version is called NSL protocol by Gavin Lowe.
• Is the protocol now correct?
An example: Needham-Schroeder Public Key protocol
What went wrong?
Problem in step 2:
B → A : {NA, NB}KA
Agent B should also give his name: {NA, NB, B}KA
.
The improved version is called NSL protocol.
Is the protocol now correct?
Luca Viganò (University of Verona) OFMC Fosad 2009 14 / 116
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 12 / 68
Formal Analysis of Protocols The Needham-Schroeder Public Key
Needham-Schroeder-Lowe Public Key Exchange Protocol
e NSL Protocol
X → Y : {N1, X}KY
Y → X : {N1, N2, Y}KX
X → Y : {N2}KY
X → Y : {N1, X}KY
X → Y : {N1, X}KY
Y → X : {N1, N2, Y}KX
Y → X : {N1, N2, Y}KX
NSL #1 NSL #2
{ }NA,A KC
{ }NA,A KB
KA
NA,NB,B{ }KA
NA,NB,B{ }
A aborts the protocol execution!
(or ignores the message)
Viganò (University of Verona) OFMC Fosad 2009 15 / 116Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 13 / 68
Formal Analysis of Protocols Motivating Protocols
Outline
1 Formal Analysis of Protocols
The Needham-Schroeder Public Key
Motivating Protocols
Some Examples of Algebraic Identities
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 14 / 68
Formal Analysis of Protocols Motivating Protocols
Example: Needham-Schroeder Public Key Protocol
Protocol (text-book)
A −→ B : pk(B, A; NA)
B −→ A : pk(A, NA; NB)
A −→ B : pk(B, NB)
Attack sequence
1. (pk(i, a; n(a, r1)))+
2. (pk(i, n(b, r2)))−
3. (a; n(a, r1))+
4. (a; n(a, r1))−
5. (pk(b, a; n(a, r1)))+
6. (pk(b, a; n(a, r1)))−
7. (pk(a, n(a, r1); n(b, r2)))+
8. (pk(a, n(a, r1); n(b, r2)))−
9. (pk(i, n(b, r2)))+
10. (pk(i, n(b, r2)))−
11. (n(b, r2))+
12. (n(b, r2))−
13. (pk(b, n(b, r2)))+
14. (pk(b, n(b, r2)))−
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 15 / 68
Formal Analysis of Protocols Motivating Protocols
Example: Needham-Schroeder-Lowe Protocol
Protocol (text-book)
A −→ B : pk(B, A; NA)
B −→ A : pk(A, NA; NB; B)
A −→ B : pk(B, NB)
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 16 / 68
Formal Analysis of Protocols Motivating Protocols
Example: NSL-xor Protocol
Protocol (text-book)
A −→ B : pk(B, A; NA)
B −→ A : pk(A, NA; NB ⊕ B)
A −→ B : pk(B, NB)
Attack sequence
1. (pk(i, a; n(a, r1)))+
2. (pk(i, n(b, r2)))−
3. (a; n(a, r1))+
4. (a; n(a, r1))−
5. (pk(b, a; n(a, r1)))+
6. generatedByIntruder(b ⊕ i)
7. (pk(b, a; n(a, r1)))−
8. (pk(a, n(a, r1); n(b, r2); b))+
9. (pk(a, n(a, r1); n(b, r2); b))−
10. (pk(i, n(b, r2) ⊕ b ⊕ i))+
11. (pk(i, n(b, r2) ⊕ b ⊕ i))−
12. (n(b, r2) ⊕ b ⊕ i)+
13. (b ⊕ i)−
14. (n(b, r2) ⊕ b ⊕ i)+
15. (n(b, r2)))+
16. (n(b, r2)))−
17. (pk(b, n(b, r2)))+
18. (pk(b, n(b, r2)))−
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 17 / 68
Formal Analysis of Protocols Motivating Protocols
Example: NSL-homomorphism Protocol
Protocol (text-book)
A −→ B : pk(B, A; NA)
B −→ A : pk(A, NA; NB; B)
A −→ B : pk(B, NB)
Attack sequence
1. generatedByIntruder(pk(a, i))
2. generatedByIntruder(pk(b, a; NI))
3. (pk(b, a; NI))−
4. (pk(a, NI; n(b, r2); b))+
5. (pk(a, NI); pk(a, n(b, r2)); pk(a, b))−
6. (pk(a, n(b, r2)); pk(a, b))+
7. (pk(a, n(b, r2)); pk(a, b))−
8. (pk(a, n(b, r2)))+
9. (pk(a, i)−
10. (pk(a, n(b, r2)))−
11. (pk(i, a); pk(a, n(b, r2)))+
12. pk(a, i; n(b, r2))−
13. (pk(i, n(b, r1); n(a, r1); a))+
14. (pk(i, n(b, r2)); pk(i, n(a, r1)); pk(i, a))−
15. (pk(i, n(b, r2)))+
16. (pk(i, n(b, r2)))−
17. (n(b, r2))+
18. (n(b, r2))−
19. (pk(b, n(b, r2)))+
20. (pk(b, n(b, r2)))−
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 18 / 68
Formal Analysis of Protocols Some Examples of Algebraic Identities
Outline
1 Formal Analysis of Protocols
The Needham-Schroeder Public Key
Motivating Protocols
Some Examples of Algebraic Identities
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 19 / 68
Formal Analysis of Protocols Some Examples of Algebraic Identities
Explicit Encryption and Decryption
• Most formal models lack explicit decryption operator and assume
implicit decryption
• If a principal knows an encrypted message and the key, assume
principal can decrypt message under the following conditions
• Implicit assumption that principal never decrypts a message that
wasn’t encrypted with a key known by the principal
• Assumption that principals can check format of decrypted message
• What if these assumptions do not hold?
• In that case, need to model both encryption and decryption symbols
explicitly, plus their cancellation, e.g. d(K, e(K, Y)) = Y.
Example: Needham-Schroeder Public Key (NSPK)
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 20 / 68
Formal Analysis of Protocols Some Examples of Algebraic Identities
Modular Exponentiation in Diffie-Hellman
• Basic DH example protocol (each nonzero residue mod P is a power
of g)
1 A → B : gNA mod P
B computes (gNA )NB mod P
2 B → A : gNB mod P
A and B compute (gNB )NA = (gNA )NB mod P and get a shared secret
key.
• Properties:
(gX)Y = gX∗Y = gY∗X = (gY)X
(X ∗ Y) ∗ Z = X ∗ (Y ∗ Z) X ∗ Y = Y ∗ X
of modular exponentiation in order to faithfully represent this
protocol
Example: Diffie-Hellman Protocol
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 21 / 68
Formal Analysis of Protocols Some Examples of Algebraic Identities
Exclusive-Or
• Cheap and has provable security properties
• If we send X ⊕ R, where R a random secret, observer learns no more
about X than before it saw message
• On the other hand, associativity-commutativity and cancellation
properties make it tricky to reason about
X ⊕ Y = Y ⊕ X X ⊕ X = 0
(X ⊕ Y) ⊕ Z = X ⊕ (Y ⊕ Z) X ⊕ 0 = X
Example: Needham-Schroeder-Lowe with XOR (NSL-xor)
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 22 / 68
Formal Analysis of Protocols Some Examples of Algebraic Identities
Homomorphism
• The electronic codebook (ECB) encryption splits a message into
blocks and cyphers the blocks using the same key
• Identical plaintext blocks are encrypted into identical ciphertext
blocks (does not hide data patterns well). Sensitive to the property:
e(K, X; Y) = e(K, X); e(K, Y)
Example: NSL with homomorphic encryption
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 23 / 68
Introduction to Rewriting Logic
Outline
1 Formal Analysis of Protocols
The Needham-Schroeder Public Key
Motivating Protocols
Some Examples of Algebraic Identities
2 Introduction to Rewriting Logic
3 How Maude-NPA works
4 Examples of execution
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 24 / 68
Introduction to Rewriting Logic
Rewriting Logic in a Nutshell
Definition
A rewrite theory R is a triple R = (Σ, E, R), with:
• (Σ, R) a set of rewrite rules of the form t → s
e.g. e(K, NA; X) → e(K, X)
• (Σ, E) a set of equations of the form t = s
e.g. d(K, e(K, Y)) = Y
Intuitively, R specifies a concurrent system,
whose states are elements of the initial algebra TΣ/E specified by (Σ, E),
and whose concurrent transitions are specified by the rules R.
e(k, na; m) ∈ TΣ/E
d(k2, e(k2, e(k, na; m))) /∈ TΣ/E
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 25 / 68
Introduction to Rewriting Logic
Rewriting modulo
Definition
Given (Σ, E, R), t →R,E s if there is
• a position p ∈ Pos(t);
• a rule l → r in R;
• a matching σ (modulo E)
such that t|p =E σ(l), and s = t[σ(r)]p.
Example:
• R = { e(K, NA; X) → e(K, X) }
• E = { d(K, e(K, Y)) = Y }
• e(k, nA; m) →R,E e(k, m)
d(k, e(k, e(k2, nA; m))) =E e(k2, na; m) →R,E e(k2, m)
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 26 / 68
Introduction to Rewriting Logic
Narrowing and Backwards Narrowing
Definition
Given (Σ, E, R), t σ,R,E s if there is
• a non-variable position p ∈ Pos(t);
• a rule l → r ∈ R;
• a unifier σ (modulo E) such that σ(t|p) =E σ(l), and s = σ(t[r]p).
Example:
• R = { e(K, NA; X) → e(K, X) }
• E = { d(K, e(K, Y)) = Y }
• e(k, X) {X→NA;X },R,E e(k, X )
d(k, X) {X→e(k,e(K,NA;X ))},R,E e(K, X )
Backwards Narrowing: Narrowing with rewrite rules reversed
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 27 / 68
Introduction to Rewriting Logic
Narrowing Reachability Analysis
Narrowing can be used as a general deductive procedure for solving symbolic
reachability problems of the form
(∃x) t1(x) → t1(x) ∧ . . . ∧ tn(x) → tn(x)
in a given rewrite theory.
• The terms ti and ti denote sets of states (all the possible instances of
the term)
• Symbolyc reachability means for what subset of states denoted by ti
are the states denoted by ti reachable?
• No finiteness assumptions about the state space.
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 28 / 68
Introduction to Rewriting Logic
Equational Unification
Definition
Given an order-sorted equational theory (Σ, Ax E) and t
?
= t , an
(Ax E)-unifier is an order-sorted subst. σ s.t. σ(t) =Ax E σ(t ).
Compared to syntactic unification:
• f(a, X) = f(Y, b) has solution X → b, Y → a
• f(a, X) =AC f(b, Y) has solution X → b, Y → a
• X + 0 =ACU X, where 0 is the identity, has solution id
• X + a + b =XOR a has solution X → b, Y → a
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 29 / 68
Introduction to Rewriting Logic
Equational Unification - Complete
When Ax = ∅ and E convergent TRS
Narrowing provides a complete (but semi-decidable) E-unification
procedure [Hullot80]. e.g. cancellation d(K, e(K, M)) → M.
When Ax = ∅ and E convergent and coherent TRS modulo
Ax
Narrowing provides a complete (but semi-decidable) E-unification
procedure [Jouannaud-Kirchner-Kirchner-83] e.g. exclusive-or
X ∗ 0 → X, X ∗ X → 0 | (X ∗ Y) ∗ Z = X ∗ (Y ∗ Z), X ∗ Y = Y ∗ X
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 30 / 68
Introduction to Rewriting Logic
Equational Unification - Decidable
When Ax = ∅
Basic narrowing strategy [Hullot80] is complete for normalized
substitutions.
Cases where basic narrowing terminates have been studied
[Alpuente-Escobar-Iborra-TCS09].
When Ax = ∅
Folding variant-narrowing [Escobar-Meseguer-Sasse-JLAP12] is the most
promising strategy for equational unification. Fully implemented in
Maude.
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 31 / 68
Introduction to Rewriting Logic
E,Ax-variants
E,Ax-variant
Given a term t and an equational theory Ax E, (t , θ) is an
E,Ax-variant of t if θ(t)↓E,Ax =Ax t [Comon-Delaune-RTA05]
Finite and complete set of E,Ax-variants
∀σ s.t. σ(t)↓E,Ax = t , ∃(t , θ) ∈ VE,Ax(t) s.t.
1 t is in →E,Ax-normal form
2 t and t (σ↓E,Ax and θ) are just renamings modulo Ax.
Finite Variant Property
Theory has FVP if there is a finite number of most general E,Ax-variants
for every term.
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 32 / 68
Introduction to Rewriting Logic
E,Ax-variants - Example
X ⊕ 0 → X
X ⊕ X → 0
X ⊕ X ⊕ Y → Y
(cancellation rules: E)
X ⊕ (Y ⊕ Z) = (X ⊕ Y) ⊕ Z
X ⊕ Y = Y ⊕ X
(axioms: Ax)
• For X ⊕ X only E,Ax-variant is: (0, id)
• For X ⊕ Y there are 7 most general E,Ax-variants
1. (X ⊕ Y, id)
3. (Z, {X → 0, Y → Z})
5. (Z, {X → Z, Y → 0})
2. (0, {X → U, Y → U})
4. (Z, {X → Z ⊕ U, Y → U})
6. (Z, {X → U, Y → Z ⊕ U})
7. (Z1 ⊕ Z2, {X → U ⊕ Z1, Y → U ⊕ Z2})
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 33 / 68
Introduction to Rewriting Logic
Narrowing & Unification in Maude-NPA
• Cryptographic protocols are modeled as a rewrite theory
P = (Σ, ∆ B, R)
• Narrowing at two levels in Maude-NPA
1 a theory (Σ, ∆ B, R): (∆ B-narrowing with rules R)
2 for ∆ B-unification (B-narrowing with rules ∆)
• ∆ B-unification for each backwards step using R
1 Built-in Maude ACU unification algorithms
2 Dedicated unification algorithms (xor, homomorphism)
3 Hybrid approach: built-in algorithms for B, and a generic algorithm
(variant narrowing) for ∆.
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 34 / 68
How Maude-NPA works
Outline
1 Formal Analysis of Protocols
The Needham-Schroeder Public Key
Motivating Protocols
Some Examples of Algebraic Identities
2 Introduction to Rewriting Logic
3 How Maude-NPA works
4 Examples of execution
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 35 / 68
How Maude-NPA works
Maude-NPA
• A tool to find or prove the absence of attacks
• Analyzes infinite state systems:
• Active Dolev-Yao intruder
• No abstraction or approximation of nonces
• Unbounded number of sessions
• Performs symbolic backwards search from an insecure state to find
attacks or to prove unreachability of cryptographic protocols
• Sensitive to past and future
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 36 / 68
How Maude-NPA works
Basic Structure of Maude-NPA
• Honest principal and intruder actions are modeled as a strand space
(Thayer, Herzog, and Guttman)
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 37 / 68
How Maude-NPA works
Basic Structure of Maude-NPA
• A strand is a sequence of positive and negative terms
• Negative term stand for received message
• Positive terms stand for sent messages
• Example:
(honest) [ pke(B, NA; A)+, pke(A, NA; NB)−, pke(B, NB)+ ]
(intruder [X−, pke(A, X)+] and [X−, Y−, (X; Y)+]
• Modified strand notation: a marker denoting the current state
• Example: [ pke(B, NA; A)+ | pke(A, NA; NB)−, pke(B, NB)+ ]
• Strand annotated with fresh terms generated by principal executing
strands (to obtain an infinite number of nonces)
:: r :: [ pke(B, n(A, r); A)+ | pke(A, n(A, r); NB)−, pke(B, NB)+ ]
• Intruder knowledge explicitly represented
• m ∈ I: terms already learnt by the intruder
• m /∈ I: terms the intruder does not know, but that will be learnt
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 38 / 68
How Maude-NPA works
Basic Structure of Maude-NPA
• A state is a set of strands plus the intruder knowledge
. . . [ nil, m±
1 , . . . , m±
i | m±
i+1, . . . , m±
k , nil ] &
{t1 /∈ I, . . . , tj /∈ I}, {s1 ∈ I, . . . , sm ∈ I}
• Initial strand [ nil | m±
1 , . . . , m±
n , nil ]
• Final strand [ nil, m±
1 , . . . , m±
n , | nil ]
• Initial Intruder knowledge {t1 /∈ I, . . . , tn /∈ I}
• Final Intruder knowledge {t1 ∈ I, . . . , tn ∈ I}
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 39 / 68
How Maude-NPA works
Protocol Rules and Their Execution
. . . [ nil, m±
1 , . . . , m±
i | m±
i+1, . . . , m±
k , nil ] &
{t1 /∈ I, . . . , tj /∈ I}, {s1 ∈ I, . . . , sm ∈ I}
• Negative message m−
i in the past part of the strand is
• E-unified with a term already known by the intruder sp ∈ I
• or introduced into the intruder knowledge as mi ∈ I
• Positive message m+
i in the past part of the strand is
• E-unified with term known by the intruder sp ∈ I, and then sp ∈ I is
transformed into sp /∈ I
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 40 / 68
How Maude-NPA works
Protocol Rules and Their Execution
To execute a protocol P associate to it a rewrite theory on sets of
strands as follows. Let I informally denote the set of terms known by the
intruder, and K the facts known or unknown by the intruder
1 [ L | M−, L ] & {M ∈ I, K} → [ L, M− | L ] & {M ∈ I, K}
Moves input messages into the past
2 [ L | M+, L ] & {K} → [ L, M+ | L ] & {K}
Moves output message that are not read into the past
3 [ L | M+, L ] & {M ∈ I, K} → [ L, M+ | L ] & {M ∈ I, K}
Joins output message with term in intruder knowledge.
For backwards execution, just reverse
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 41 / 68
How Maude-NPA works
Introducing New Strands
• If we want an unbounded number of strands, need some way of
introducing new strands in the backwards search
• Specialize rule 3 using each strand of the protocol P:
{ [ l1 | u+, l2 ] & {u ∈ I, K} → {u ∈ I, K}
s.t. [ l1, u+, l2 ] ∈ P}
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 42 / 68
How Maude-NPA works
Backwards Reachability Analysis
• Backwards narrowing protocol execution defines a backwards
reachability relation
• Specify a state describing the attack state, including a set of final
strands plus terms u ∈ I and u ∈ I
• Execute the protocol backwards to an initial state, if possible
• In initial step, prove lemmas that identify certain states unreachable
(if necessary)
• For each intermediate state found, several optimizations available
(check if it can be proved unreachable and discard)
• Also global optimizations (super lazy intruder, state subsumption)
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 43 / 68
Examples of execution
Outline
1 Formal Analysis of Protocols
The Needham-Schroeder Public Key
Motivating Protocols
Some Examples of Algebraic Identities
2 Introduction to Rewriting Logic
3 How Maude-NPA works
4 Examples of execution
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 44 / 68
Examples of execution
Example: Needham-Schroeder Public Key Protocol
Protocol (text-book)
A −→ B : pk(B, A; NA)
B −→ A : pk(A, NA; NB)
A −→ B : pk(B, NB)
Protocol (strand spaces) Intruder capabilities
:: r1 :: [nil | (pk(B, A; n(A, r1)))+,
(pk(A, n(A, r1); NB))−,
pk(B, NB)+]
:: r2 :: [nil | (pk(B, A; NA))−,
(pk(A, NA; n(B, r2)))+,
(pk(B, n(B, r2)))−]
[nil | (M1; M2)−, M+
1 ]
[nil | (M1; M2)−, M+
2 ]
[nil | M−
1 , M−
2 , (M1; M2)+]
[nil | M−, (sk(i, M))+]
[nil | M−, (pk(Ke, M))+]
Equational Theory - Algebraic properties
B = { (X ; Y) ; Z = X ; (Y ; Z)}
∆ = { pk(Ke, sk(Ke, X)) = X,
sk(Ke, pk(Ke, X)) = X}
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 45 / 68
Examples of execution
Needham-Schroeder Public Key: Attack State Pattern
:: r2 ::
[nil, (pk(B, A; NA))−, (pk(A, NA; n(B, r2)))+, (pk(B, n(B, r2)))− | nil ]
& SS & {n(B, r2) ∈ I, IK}
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 46 / 68
Examples of execution
Needham-Schroeder Public Key: Search State Space
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 47 / 68
Examples of execution
Needham-Schroeder Public Key: Initial State
[nil | (pk(i, n(b, r2)))−, (n(b, r2))+, nil] &
[nil | (pk(i, a; n(a, r1)))−, (a; n(a, r1))+, nil] &
[nil | (n(b, r2))−, (pk(b, n(b, r2)))+, nil] &
[nil | (a; n(a, r1))−, (pk(b, a; n(a, r1)))+, nil] &
:: r1 ::
[nil | (pk(i, a; n(a, r1)))+, (pk(a, n(a, r1); n(b, r2)))−, (pk(i, n(b, r2)))+, nil] &
:: r2 ::
[nil | (pk(b, a; n(a, r1)))−, (pk(a, n(a, r1); n(b, r2)))+, (pk(b, n(b, r2)))−, nil]
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 48 / 68
Examples of execution
Needham-Schroeder Public Key: Attack sequence
1. (pk(i, a; n(a, r1)))+
2. (pk(i, n(b, r2)))−
3. (a; n(a, r1))+
4. (a; n(a, r1))−
5. (pk(b, a; n(a, r1)))+
6. (pk(b, a; n(a, r1)))−
7. (pk(a, n(a, r1); n(b, r2)))+
8. (pk(a, n(a, r1); n(b, r2)))−
9. (pk(i, n(b, r2)))+
10. (pk(i, n(b, r2)))−
11. (n(b, r2))+
12. (n(b, r2))−
13. (pk(b, n(b, r2)))+
14. (pk(b, n(b, r2)))−
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 49 / 68
Examples of execution
Example: Needham-Schroeder-Lowe Protocol
Protocol (text-book)
A −→ B : pk(B, A; NA)
B −→ A : pk(A, NA; NB; B)
A −→ B : pk(B, NB)
Protocol (strand spaces) Intruder capabilities
:: r1 :: [nil | (pk(B, A; n(A, r1)))+,
(pk(A, n(A, r1); NB; B))−,
pk(B, NB)+]
:: r2 :: [nil | (pk(B, A; NA))−,
(pk(A, NA; n(B, r2); B))+,
(pk(B, n(B, r2)))−]
[nil | (M1; M2)−, M+
1 ]
[nil | (M1; M2)−, M+
2 ]
[nil | M−
1 , M−
2 , (M1; M2)+]
[nil | M−, (sk(i, M))+]
[nil | M−, (pk(Ke, M))+]
Equational Theory - Algebraic properties
B = { (X ; Y) ; Z = X ; (Y ; Z)}
∆ = { pk(Ke, sk(Ke, X)) = X,
sk(Ke, pk(Ke, X)) = X}
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 50 / 68
Examples of execution
Needham-Schroeder-Lowe: Attack State Pattern
:: r2 ::
[nil, (pk(B, A; NA))−, (pk(A, NA; n(B, r2); B))+, (pk(B, n(B, r2)))− | nil ]
& SS & {n(B, r2) ∈ I, IK}
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 51 / 68
Examples of execution
Needham-Schroeder-Lowe: Search State Space
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 52 / 68
Examples of execution
Example: NSL-xor Protocol
Protocol (text-book)
A −→ B : pk(B, A; NA)
B −→ A : pk(A, NA; NB ⊕ B)
A −→ B : pk(B, NB)
Protocol (strand spaces) Intruder capabilities
:: r1 :: [nil | (pk(B, A; n(A, r1)))+,
(pk(A, n(A, r1); NB ⊕ B))−,
pk(B, NB)+]
:: r2 :: [nil | (pk(B, A; NA))−,
(pk(A, NA; n(B, r2) ⊕ B))+,
(pk(B, n(B, r2)))−]
[nil | (M1; M2)−, M+
1 ]
[nil | (M1; M2)−, M+
2 ]
[nil | M−
1 , M−
2 , (M1; M2)+]
[nil | NS−
1 , NS−
2 , (NS1 ⊕ NS2)+]
[nil | null+]
[nil | M−, (sk(i, M))+]
[nil | M−, (pk(Ke, M))+]
Equational Theory - Algebraic properties
B = { (X ⊕ Y) ⊕ Z = X ⊕ (Y ⊕ Z),
X ⊕ Y = Y ⊕ X}
∆ = { pk(Ke, sk(Ke, X)) = X, sk(Ke, pk(Ke, X)) = X, NS ⊕ NS = null,
NS1 ⊕ NS1 ⊕ NS2 = NS2, NS ⊕ null = NS}
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 53 / 68
Examples of execution
NSL-xor: Attack State Pattern
:: r2 ::
[nil, (pk(B, A; NSA))−, (pk(A, NSA; n(B, r2) ⊕ B))+,
(pk(B, n(B, r2)))− | nil ]
& SS & {n(B, r2) ∈ I, IK}
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 54 / 68
Examples of execution
NSL-xor: Search State Space
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 55 / 68
Examples of execution
NSL-xor: Initial State
[nil | (pk(i, a; n(a, r1)))−, (a; n(a, r1))+, nil] &
[nil | (pk(i, b ⊕ i ⊕ n(b, r1)))−, (b ⊕ i ⊕ n(b, r1))+, nil] &
[nil | (a; n(a, r1))−, (pk(b, a; n(a, r1))+, nil] &
[nil | (n(b, r2))−, (pk(b, n(b, r2)))+, nil] &
[nil | (b ⊕ i)−, (b ⊕ i ⊕ n(b, r2))−, (n(b, r2))+, nil] &
:: r1 ::
[nil | (pk(i, a; n(a, r1)))+, (pk(a, n(a, r1); n(b, r2) ⊕ b))−, (pk(i, b ⊕ i ⊕
n(b, r1)))+, nil] &
:: r2 ::
[nil | (pk(b, a; n(a, r1)))−, (pk(a, n(a, r1); n(b, r2) ⊕
b))+, (pk(b, n(b, r2)))−, nil]
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 56 / 68
Examples of execution
NSL-xor: Attack sequence
1. (pk(i, a; n(a, r1)))+
2. (pk(i, n(b, r2)))−
3. (a; n(a, r1))+
4. (a; n(a, r1))−
5. (pk(b, a; n(a, r1)))+
6. generatedByIntruder(b ⊕ i)
7. (pk(b, a; n(a, r1)))−
8. (pk(a, n(a, r1); n(b, r2); b))+
9. (pk(a, n(a, r1); n(b, r2); b))−
10. (pk(i, n(b, r2) ⊕ b ⊕ i))+
11. (pk(i, n(b, r2) ⊕ b ⊕ i))−
12. (n(b, r2) ⊕ b ⊕ i)+
13. (b ⊕ i)−
14. (n(b, r2) ⊕ b ⊕ i)+
15. (n(b, r2)))+
16. (n(b, r2)))−
17. (pk(b, n(b, r2)))+
18. (pk(b, n(b, r2)))−
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 57 / 68
Examples of execution
Example: NSL-homomorphism Protocol
Protocol (text-book)
A −→ B : pk(B, A; NA)
B −→ A : pk(A, NA; NB; B)
A −→ B : pk(B, NB)
Protocol (strand spaces) Intruder capabilities
:: r1 :: [nil | (pk(B, A; n(A, r1)))+,
(pk(A, n(A, r1); NB; B))−,
pk(B, NB)+]
:: r2 :: [nil | (pk(B, A; NA))−,
(pk(A, NA; n(B, r2); B))+,
(pk(B, n(B, r2)))−]
[nil | (M1; M2)−, M+
1 ]
[nil | (M1; M2)−, M+
2 ]
[nil | M−
1 , M−
2 , (M1; M2)+]
[nil | M−, (pk(Ke, M))+]
[nil | (pk(i, M))+, M+]
Equational Theory - Algebraic properties
B = { (X ; Y) ; Z = X ; (Y ; Z)}
∆ = { pk(Ke, X; Y) = pk(Ke, X); pk(Ke, Y)}
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 58 / 68
Examples of execution
NSL-homomorphism: Attack State Pattern
:: r2 ::
[nil, (pk(B, A; NA))−, (pk(A, NA; n(B, r2); B))+, (pk(B, n(B, r2)))− | nil ]
& SS & {n(B, r2) ∈ I, IK}
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 59 / 68
Examples of execution
NSL-homomorphism: Search State Space
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 60 / 68
Examples of execution
NSL-homomorphic: Initial State
[nil | (pk(a, i)−, (pk(a, n(b, r2)))−, (pk(i, a); pk(a, n(b, r2)))+, nil]
[nil | (pk(i, n(b, r2)))−, (n(b, r2))+, nil]
[nil | (n(b, r2))−, (pk(b, n(b, r2)))+, nil]
[nil | (pk(a, NI); pk(a, n(b, r2)); pk(a, b))−, (pk(a, n(b, r2)); pk(a, b))+, nil]
[nil | (pk(a, n(b, r2)); pk(a, b))−, (pk(a, n(b, r2)))+, nil]
[nil | (pk(i, n(b, r2)); pk(i, n(a, r1)); pk(i, a))−, (pk(i, n(b, r2)))+, nil]
:: r1 ::
[nil | (pk(a, i; n(b, r2))−, (pk(i, n(b, r2); n(a, r1); a))+, nil]
:: r2 ::
[nil | (pk(b, a; NI))−, (pk(a, NI; n(b, r2); b))+, (pk(b, n(b, r2)))−, nil]
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 61 / 68
Examples of execution
NSL-homomorphism: Attack sequence
1. generatedByIntruder(pk(a, i))
2. generatedByIntruder(pk(b, a; NI))
3. (pk(b, a; NI))−
4. (pk(a, NI; n(b, r2); b))+
5. (pk(a, NI); pk(a, n(b, r2)); pk(a, b))−
6. (pk(a, n(b, r2)); pk(a, b))+
7. (pk(a, n(b, r2)); pk(a, b))−
8. (pk(a, n(b, r2)))+
9. (pk(a, i)−
10. (pk(a, n(b, r2)))−
11. (pk(i, a); pk(a, n(b, r2)))+
12. pk(a, i; n(b, r2))−
13. (pk(i, n(b, r1); n(a, r1); a))+
14. (pk(i, n(b, r2)); pk(i, n(a, r1)); pk(i, a))−
15. (pk(i, n(b, r2)))+
16. (pk(i, n(b, r2)))−
17. (n(b, r2))+
18. (n(b, r2))−
19. (pk(b, n(b, r2)))+
20. (pk(b, n(b, r2)))−
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 62 / 68
Examples of execution
Example: Diffie-Hellman Protocol
Protocol (text-book)
A −→ B : (A; B; exp(g, NA))
B −→ A : (A; B; exp(g, NB))
A −→ B : e(exp(exp(g, NB), NA), sec(A, B) )
Protocol (strand spaces) Intruder capabilities
:: r1, r2 :: [nil | (A; B; exp(g, n(A, r1)))+,
(A; B; XB)−,
e(exp(XB, n(A, r1)), sec(A, r2))+]
:: r3 :: [nil | (A; B; XA)−,
(A; B; exp(g, n(B, r3)))+,
(e(exp(XA, n(B, r3)), S))−]
[nil | (M1; M2)−, M+
1 ]
[nil | (M1; M2)−, M+
2 ]
[nil | M−
1 , M−
2 , (M1; M2)+]
[nil | K−, M−, e(K, M)+]
[nil | K−, M−, d(K, M)+]
[nil | N1−, N2−, (N1 ∗ N2)+]
[nil | E−, N−, exp(E, N)+]
Equational Theory Algebraic properties
B = { (X ∗ Y) ∗ Z = X ∗ (Y ∗ Z), (X ∗ Y) = Y ∗ X }
∆ = { dec(K, enc(K, X)) = X, exp(exp(W, Y), Z) = exp(W, Y ∗ Z) }
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 63 / 68
Examples of execution
Diffie-Helllman: Attack State Pattern
attack pattern, the protocol has been proved secure for that attack pattern with
respect to the assumed intruder capabilities and the algebraic properties. If an
initial state is found, then we conclude that the attack pattern is possible and a
concrete attack can be inferred from the exchange sequence stored in the initial
state. Note that an initial state may be generic, in the sense of having logical
variables for those elements that are not relevant for the attack.
Example 2. (Example 1 continued) The attack pattern that we are looking for
is one in which Bob completes the protocol and the intruder is able to learn the
secret. The attack state pattern to be given as input to Maude-NPA is:
:: r
:: [ (A; B; Y )−
, (B; A; exp(g, n(B, r
)))+
, (e(exp(Y, n(B, r
)), sec(a, r
)))−
| nil ]
 SS  (sec(a, r
)∈I, IK)
(†)
Using the above attack pattern Maude-NPA is able to find an initial state of the
protocol, showing that the attack state is possible. Note that this initial state is
generalized to two sessions in parallel: one session where Alice (i.e., principal
named a) is talking to another principal B
—in this session the intruder gets a
nonce n(a, r) originated from a— and another session where Bob (i.e., principal
named b) is trying to talk to Alice. If we instantiate B
to be b, then one
session is enough, although the tool returns the most general attack. The strands
associated to the initial state found by the backwards search are as follows:
[nil | exp(g, n(a, r)))−
, Z−
, exp(g, Z ∗ n(a, r))+
] 
−  −  +Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 64 / 68
Examples of execution
Diffie-Helllman: Attack Space
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 65 / 68
Examples of execution
Diffie-Helllman: Initial State
Using the above attack pattern Maude-NPA is able to find an initial state of the
protocol, showing that the attack state is possible. Note that this initial state is
generalized to two sessions in parallel: one session where Alice (i.e., principal
named a) is talking to another principal B
—in this session the intruder gets a
nonce n(a, r) originated from a— and another session where Bob (i.e., principal
named b) is trying to talk to Alice. If we instantiate B
to be b, then one
session is enough, although the tool returns the most general attack. The strands
associated to the initial state found by the backwards search are as follows:
[nil | exp(g, n(a, r)))−
, Z−
, exp(g, Z ∗ n(a, r))+
] 
[nil | exp(g, Z ∗ n(a, r))−
, e(exp(g, Z ∗ n(a, r)), sec(a, r
))−
, sec(a, r
)+
] 
[nil | exp(g, n(b, r
)))−
, W−
, exp(g, W ∗ n(b, r
))+
] 
[nil | exp(g, W ∗ n(b, r
))−
, sec(a, r
)−
, e(exp(g, W ∗ n(b, r
)), sec(a, r
))+
] 
[nil | (a; b; exp(g, n(b, r
)))−
, (b; exp(g, n(b, r
)))+
] 
[nil | (b; exp(g, n(b, r
)))−
, exp(g, n(b, r
))+
] 
[nil | (a; B
; exp(g, n(a, r)))−
, (B
; exp(g, n(a, r)))+
] 
[nil | (B
; exp(g, n(a, r)))−
, exp(g, n(a, r))+
] 
:: r
::
[nil | (a; b; exp(g, W))−
, (a; b; exp(g, n(b, r
)))+
, e(exp(g, W ∗ n(b, r
)), sec(a, r
))−
] 
:: r
, r ::
[nil | (a; B
; exp(g, n(a, r)))+
, (a; B
; exp(g, Z))−
, e(exp(g, Z ∗ n(a, r)), sec(a, r
))+
]
10
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 66 / 68
Examples of execution
Diffie-Helllman: Attack sequence
Note that the last two strands, generating fresh variables r, r
, r
, are protocol
strands and the others are intruder strands.
The concrete message exchange sequence obtained by the reachability analysis
is the following:
1.(a; b; exp(g, W))−
2.(a; b; exp(g, n(b, r
)))+
3.(a; b; exp(g, n(b, r
)))−
4.(b; exp(g, n(b, r
)))+
5.(b; exp(g, n(b, r
)))−
6.(exp(g, n(b, r
)))+
7.(exp(g, n(b, r
)))−
8.W−
9.exp(g, W ∗ n(b, r
))+
10.(a; B
; exp(g, n(a, r)))+
11.(a; B
; exp(g, n(a, r)))−
12.(B
; exp(g, n(a, r)))+
13.(B
; exp(g, n(a, r)))−
14.(exp(g, n(a, r)))+
15.(exp(g, n(a, r)))−
16.Z−
17.exp(g, Z ∗ n(a, r))+
18.(a; B
; exp(g, Z))−
19.e(exp(g, Z ∗ n(a, r)), sec(a, r
))+
20.e(exp(g, Z ∗ n(a, r)), sec(a, r
))−
21.exp(g, Z ∗ n(a, r))−
22.sec(a, r
)+
23.exp(g, W ∗ n(b, r
))−
24.sec(a, r
)−
25.e(exp(g, W ∗ n(b, r
), sec(a, r
))+
26.e(exp(g, W ∗ n(b, r
)).sec(a, r
))−
Step 1) describes Bob (i.e., principal named b) receiving an initiating message
from the intruder impersonating Alice. Step 2) describes Bob sending the re-
sponse, and Step 3) describes the intruder receiving it. Steps 4) through 9)
describe the intruder computing the key exp(g, W ∗ n(b, r
)) she will use to com-
municate with Bob. Step 10) describes Alice initiating the protocol with a prin-
cipal B
. Step 11) describes the intruder receiving it, and steps 11) through
17) describe the intruder constructing the key exp(g, Z ∗ n(a, r)) she will use to
communicate with Alice. Steps 18) and 19) describe Alice receiving the response
from the intruder impersonating B
and Alice sending the encrypted message.
Steps 20) through 22) describe the intruder decrypting the message to get the
secret. In steps 23) through 25) the intruder re-encrypts the secret with the key
she shares with Bob and sends it, and in Step 26) Bob receives the message.Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 67 / 68
Examples of execution
Many thanks
Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 68 / 68

Contenu connexe

Similaire à Term Rewriting applied to Cryptographic Protocol Analysis: the Maude-NPA tool

Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...
Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...
Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...Julien PLU
 
Detailed cryptographic analysis of contact tracing protocols
Detailed cryptographic analysis of contact tracing protocolsDetailed cryptographic analysis of contact tracing protocols
Detailed cryptographic analysis of contact tracing protocolsChristian Spolaore
 
RVC: A Multi-Decoder CAL Composer Tool
RVC: A Multi-Decoder CAL Composer ToolRVC: A Multi-Decoder CAL Composer Tool
RVC: A Multi-Decoder CAL Composer ToolMDC_UNICA
 
A Project Based Lab Report On AMUZING JOKE
A Project Based Lab Report On AMUZING JOKEA Project Based Lab Report On AMUZING JOKE
A Project Based Lab Report On AMUZING JOKEDaniel Wachtel
 
!FTL, an Articulation-Invariant Stroke Gesture Recognizer with Controllable P...
!FTL, an Articulation-Invariant Stroke Gesture Recognizer with Controllable P...!FTL, an Articulation-Invariant Stroke Gesture Recognizer with Controllable P...
!FTL, an Articulation-Invariant Stroke Gesture Recognizer with Controllable P...Jean Vanderdonckt
 
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001Casiano Rodriguez-leon
 
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001Casiano Rodriguez-leon
 
A Survey Of Aspect Mining Approaches
A Survey Of Aspect Mining ApproachesA Survey Of Aspect Mining Approaches
A Survey Of Aspect Mining Approacheskim.mens
 
On the need for a W3C community group on RDF Stream Processing
On the need for a W3C community group on RDF Stream ProcessingOn the need for a W3C community group on RDF Stream Processing
On the need for a W3C community group on RDF Stream ProcessingPlanetData Network of Excellence
 
OrdRing 2013 keynote - On the need for a W3C community group on RDF Stream Pr...
OrdRing 2013 keynote - On the need for a W3C community group on RDF Stream Pr...OrdRing 2013 keynote - On the need for a W3C community group on RDF Stream Pr...
OrdRing 2013 keynote - On the need for a W3C community group on RDF Stream Pr...Oscar Corcho
 
GenAi LLMs Zero to Hero: Mastering GenAI
GenAi LLMs Zero to Hero: Mastering GenAIGenAi LLMs Zero to Hero: Mastering GenAI
GenAi LLMs Zero to Hero: Mastering GenAIShakeelAhmed286165
 
Bytewise Approximate Match: Theory, Algorithms and Applications
Bytewise Approximate Match:  Theory, Algorithms and ApplicationsBytewise Approximate Match:  Theory, Algorithms and Applications
Bytewise Approximate Match: Theory, Algorithms and ApplicationsLiwei Ren任力偉
 
General Cryptography :WHY JOHNNY THE DEVELOPER CAN’T WORK WITH PUBLIC KEY CER...
General Cryptography :WHY JOHNNY THE DEVELOPER CAN’T WORK WITH PUBLIC KEY CER...General Cryptography :WHY JOHNNY THE DEVELOPER CAN’T WORK WITH PUBLIC KEY CER...
General Cryptography :WHY JOHNNY THE DEVELOPER CAN’T WORK WITH PUBLIC KEY CER...Priyanka Aash
 
The Semantics of SPARQL
The Semantics of SPARQLThe Semantics of SPARQL
The Semantics of SPARQLOlaf Hartig
 
On unifying query languages for RDF streams
On unifying query languages for RDF streamsOn unifying query languages for RDF streams
On unifying query languages for RDF streamsDaniele Dell'Aglio
 
Formal semantics for Cypher queries and updates
Formal semantics for Cypher queries and updatesFormal semantics for Cypher queries and updates
Formal semantics for Cypher queries and updatesopenCypher
 

Similaire à Term Rewriting applied to Cryptographic Protocol Analysis: the Maude-NPA tool (20)

Icsm19.ppt
Icsm19.pptIcsm19.ppt
Icsm19.ppt
 
Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...
Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...
Knowledge extraction in Web media: at the frontier of NLP, Machine Learning a...
 
Detailed cryptographic analysis of contact tracing protocols
Detailed cryptographic analysis of contact tracing protocolsDetailed cryptographic analysis of contact tracing protocols
Detailed cryptographic analysis of contact tracing protocols
 
Analysis of a Modified RC4
Analysis of a Modified RC4 Analysis of a Modified RC4
Analysis of a Modified RC4
 
RVC: A Multi-Decoder CAL Composer Tool
RVC: A Multi-Decoder CAL Composer ToolRVC: A Multi-Decoder CAL Composer Tool
RVC: A Multi-Decoder CAL Composer Tool
 
A Project Based Lab Report On AMUZING JOKE
A Project Based Lab Report On AMUZING JOKEA Project Based Lab Report On AMUZING JOKE
A Project Based Lab Report On AMUZING JOKE
 
Acm aictc2016
Acm aictc2016Acm aictc2016
Acm aictc2016
 
!FTL, an Articulation-Invariant Stroke Gesture Recognizer with Controllable P...
!FTL, an Articulation-Invariant Stroke Gesture Recognizer with Controllable P...!FTL, an Articulation-Invariant Stroke Gesture Recognizer with Controllable P...
!FTL, an Articulation-Invariant Stroke Gesture Recognizer with Controllable P...
 
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001
 
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001
PREDICTING THE TIME OF OBLIVIOUS PROGRAMS. Euromicro 2001
 
BEST gr-bertool
BEST gr-bertoolBEST gr-bertool
BEST gr-bertool
 
A Survey Of Aspect Mining Approaches
A Survey Of Aspect Mining ApproachesA Survey Of Aspect Mining Approaches
A Survey Of Aspect Mining Approaches
 
On the need for a W3C community group on RDF Stream Processing
On the need for a W3C community group on RDF Stream ProcessingOn the need for a W3C community group on RDF Stream Processing
On the need for a W3C community group on RDF Stream Processing
 
OrdRing 2013 keynote - On the need for a W3C community group on RDF Stream Pr...
OrdRing 2013 keynote - On the need for a W3C community group on RDF Stream Pr...OrdRing 2013 keynote - On the need for a W3C community group on RDF Stream Pr...
OrdRing 2013 keynote - On the need for a W3C community group on RDF Stream Pr...
 
GenAi LLMs Zero to Hero: Mastering GenAI
GenAi LLMs Zero to Hero: Mastering GenAIGenAi LLMs Zero to Hero: Mastering GenAI
GenAi LLMs Zero to Hero: Mastering GenAI
 
Bytewise Approximate Match: Theory, Algorithms and Applications
Bytewise Approximate Match:  Theory, Algorithms and ApplicationsBytewise Approximate Match:  Theory, Algorithms and Applications
Bytewise Approximate Match: Theory, Algorithms and Applications
 
General Cryptography :WHY JOHNNY THE DEVELOPER CAN’T WORK WITH PUBLIC KEY CER...
General Cryptography :WHY JOHNNY THE DEVELOPER CAN’T WORK WITH PUBLIC KEY CER...General Cryptography :WHY JOHNNY THE DEVELOPER CAN’T WORK WITH PUBLIC KEY CER...
General Cryptography :WHY JOHNNY THE DEVELOPER CAN’T WORK WITH PUBLIC KEY CER...
 
The Semantics of SPARQL
The Semantics of SPARQLThe Semantics of SPARQL
The Semantics of SPARQL
 
On unifying query languages for RDF streams
On unifying query languages for RDF streamsOn unifying query languages for RDF streams
On unifying query languages for RDF streams
 
Formal semantics for Cypher queries and updates
Formal semantics for Cypher queries and updatesFormal semantics for Cypher queries and updates
Formal semantics for Cypher queries and updates
 

Plus de Facultad de Informática UCM

¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?Facultad de Informática UCM
 
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...Facultad de Informática UCM
 
DRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation ComputersDRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation ComputersFacultad de Informática UCM
 
Tendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmTendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmFacultad de Informática UCM
 
Introduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented ComputingIntroduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented ComputingFacultad de Informática UCM
 
Inteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuroInteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuroFacultad de Informática UCM
 
Design Automation Approaches for Real-Time Edge Computing for Science Applic...
 Design Automation Approaches for Real-Time Edge Computing for Science Applic... Design Automation Approaches for Real-Time Edge Computing for Science Applic...
Design Automation Approaches for Real-Time Edge Computing for Science Applic...Facultad de Informática UCM
 
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...Facultad de Informática UCM
 
Fault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error CorrectionFault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error CorrectionFacultad de Informática UCM
 
Cómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intentoCómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intentoFacultad de Informática UCM
 
Automatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPCAutomatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPCFacultad de Informática UCM
 
Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...Facultad de Informática UCM
 
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...Facultad de Informática UCM
 
Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.Facultad de Informática UCM
 
Challenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore windChallenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore windFacultad de Informática UCM
 

Plus de Facultad de Informática UCM (20)

¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?¿Por qué debemos seguir trabajando en álgebra lineal?
¿Por qué debemos seguir trabajando en álgebra lineal?
 
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
TECNOPOLÍTICA Y ACTIVISMO DE DATOS: EL MAPEO COMO FORMA DE RESILIENCIA ANTE L...
 
DRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation ComputersDRAC: Designing RISC-V-based Accelerators for next generation Computers
DRAC: Designing RISC-V-based Accelerators for next generation Computers
 
uElectronics ongoing activities at ESA
uElectronics ongoing activities at ESAuElectronics ongoing activities at ESA
uElectronics ongoing activities at ESA
 
Tendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura ArmTendencias en el diseño de procesadores con arquitectura Arm
Tendencias en el diseño de procesadores con arquitectura Arm
 
Formalizing Mathematics in Lean
Formalizing Mathematics in LeanFormalizing Mathematics in Lean
Formalizing Mathematics in Lean
 
Introduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented ComputingIntroduction to Quantum Computing and Quantum Service Oriented Computing
Introduction to Quantum Computing and Quantum Service Oriented Computing
 
Computer Design Concepts for Machine Learning
Computer Design Concepts for Machine LearningComputer Design Concepts for Machine Learning
Computer Design Concepts for Machine Learning
 
Inteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuroInteligencia Artificial en la atención sanitaria del futuro
Inteligencia Artificial en la atención sanitaria del futuro
 
Design Automation Approaches for Real-Time Edge Computing for Science Applic...
 Design Automation Approaches for Real-Time Edge Computing for Science Applic... Design Automation Approaches for Real-Time Edge Computing for Science Applic...
Design Automation Approaches for Real-Time Edge Computing for Science Applic...
 
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
Estrategias de navegación para robótica móvil de campo: caso de estudio proye...
 
Fault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error CorrectionFault-tolerance Quantum computation and Quantum Error Correction
Fault-tolerance Quantum computation and Quantum Error Correction
 
Cómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intentoCómo construir un chatbot inteligente sin morir en el intento
Cómo construir un chatbot inteligente sin morir en el intento
 
Automatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPCAutomatic generation of hardware memory architectures for HPC
Automatic generation of hardware memory architectures for HPC
 
Type and proof structures for concurrency
Type and proof structures for concurrencyType and proof structures for concurrency
Type and proof structures for concurrency
 
Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...Hardware/software security contracts: Principled foundations for building sec...
Hardware/software security contracts: Principled foundations for building sec...
 
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
Jose carlossancho slidesLa seguridad en el desarrollo de software implementad...
 
Do you trust your artificial intelligence system?
Do you trust your artificial intelligence system?Do you trust your artificial intelligence system?
Do you trust your artificial intelligence system?
 
Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.Redes neuronales y reinforcement learning. Aplicación en energía eólica.
Redes neuronales y reinforcement learning. Aplicación en energía eólica.
 
Challenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore windChallenges and Opportunities for AI and Data analytics in Offshore wind
Challenges and Opportunities for AI and Data analytics in Offshore wind
 

Dernier

Cost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionCost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionSneha Padhiar
 
Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Romil Mishra
 
signals in triangulation .. ...Surveying
signals in triangulation .. ...Surveyingsignals in triangulation .. ...Surveying
signals in triangulation .. ...Surveyingsapna80328
 
OOP concepts -in-Python programming language
OOP concepts -in-Python programming languageOOP concepts -in-Python programming language
OOP concepts -in-Python programming languageSmritiSharma901052
 
11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdf11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdfHafizMudaserAhmad
 
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.elesangwon
 
Levelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodLevelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodManicka Mamallan Andavar
 
Mine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxMine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxRomil Mishra
 
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingSystem Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingBootNeck1
 
Research Methodology for Engineering pdf
Research Methodology for Engineering pdfResearch Methodology for Engineering pdf
Research Methodology for Engineering pdfCaalaaAbdulkerim
 
"Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ..."Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ...Erbil Polytechnic University
 
Main Memory Management in Operating System
Main Memory Management in Operating SystemMain Memory Management in Operating System
Main Memory Management in Operating SystemRashmi Bhat
 
TEST CASE GENERATION GENERATION BLOCK BOX APPROACH
TEST CASE GENERATION GENERATION BLOCK BOX APPROACHTEST CASE GENERATION GENERATION BLOCK BOX APPROACH
TEST CASE GENERATION GENERATION BLOCK BOX APPROACHSneha Padhiar
 
Module-1-(Building Acoustics) Noise Control (Unit-3). pdf
Module-1-(Building Acoustics) Noise Control (Unit-3). pdfModule-1-(Building Acoustics) Noise Control (Unit-3). pdf
Module-1-(Building Acoustics) Noise Control (Unit-3). pdfManish Kumar
 
US Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionUS Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionMebane Rash
 
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmComputer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmDeepika Walanjkar
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catcherssdickerson1
 
Turn leadership mistakes into a better future.pptx
Turn leadership mistakes into a better future.pptxTurn leadership mistakes into a better future.pptx
Turn leadership mistakes into a better future.pptxStephen Sitton
 
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSHigh Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSsandhya757531
 
List of Accredited Concrete Batching Plant.pdf
List of Accredited Concrete Batching Plant.pdfList of Accredited Concrete Batching Plant.pdf
List of Accredited Concrete Batching Plant.pdfisabel213075
 

Dernier (20)

Cost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionCost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based question
 
Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________
 
signals in triangulation .. ...Surveying
signals in triangulation .. ...Surveyingsignals in triangulation .. ...Surveying
signals in triangulation .. ...Surveying
 
OOP concepts -in-Python programming language
OOP concepts -in-Python programming languageOOP concepts -in-Python programming language
OOP concepts -in-Python programming language
 
11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdf11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdf
 
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
 
Levelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodLevelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument method
 
Mine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxMine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptx
 
System Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event SchedulingSystem Simulation and Modelling with types and Event Scheduling
System Simulation and Modelling with types and Event Scheduling
 
Research Methodology for Engineering pdf
Research Methodology for Engineering pdfResearch Methodology for Engineering pdf
Research Methodology for Engineering pdf
 
"Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ..."Exploring the Essential Functions and Design Considerations of Spillways in ...
"Exploring the Essential Functions and Design Considerations of Spillways in ...
 
Main Memory Management in Operating System
Main Memory Management in Operating SystemMain Memory Management in Operating System
Main Memory Management in Operating System
 
TEST CASE GENERATION GENERATION BLOCK BOX APPROACH
TEST CASE GENERATION GENERATION BLOCK BOX APPROACHTEST CASE GENERATION GENERATION BLOCK BOX APPROACH
TEST CASE GENERATION GENERATION BLOCK BOX APPROACH
 
Module-1-(Building Acoustics) Noise Control (Unit-3). pdf
Module-1-(Building Acoustics) Noise Control (Unit-3). pdfModule-1-(Building Acoustics) Noise Control (Unit-3). pdf
Module-1-(Building Acoustics) Noise Control (Unit-3). pdf
 
US Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionUS Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of Action
 
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmComputer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
 
Turn leadership mistakes into a better future.pptx
Turn leadership mistakes into a better future.pptxTurn leadership mistakes into a better future.pptx
Turn leadership mistakes into a better future.pptx
 
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSHigh Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
 
List of Accredited Concrete Batching Plant.pdf
List of Accredited Concrete Batching Plant.pdfList of Accredited Concrete Batching Plant.pdf
List of Accredited Concrete Batching Plant.pdf
 

Term Rewriting applied to Cryptographic Protocol Analysis: the Maude-NPA tool

  • 1. Term Rewriting applied to Cryptographic Protocol Analysis: the Maude-NPA tool Santiago Escobar Departamento de Sistemas Inform´aticos y Computaci´on Universitat Polit`ecnica de Val`encia sescobar@dsic.upv.es Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 1 / 68
  • 2. Outline 1 Formal Analysis of Protocols The Needham-Schroeder Public Key Motivating Protocols Some Examples of Algebraic Identities 2 Introduction to Rewriting Logic 3 How Maude-NPA works 4 Examples of execution Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 2 / 68
  • 3. Formal Analysis of Protocols Outline 1 Formal Analysis of Protocols The Needham-Schroeder Public Key Motivating Protocols Some Examples of Algebraic Identities 2 Introduction to Rewriting Logic 3 How Maude-NPA works 4 Examples of execution Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 3 / 68
  • 4. Formal Analysis of Protocols Formal Analysis of Protocols • Crypto protocol analysis in the standard model is well understood. • Need to support algebraic properties of some protocols • Diffie-Hellman exponentiation, • exclusive-or, • homomorphism (one-sided distributivity) • These operations well understood in the bounded sessions case • Decidability results for exclusive-or, exponentiation, homomorphisms, etc. • What is lacking: (1) more general understanding, especially for unbounded sessions, (2) tool support. Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 4 / 68
  • 5. Formal Analysis of Protocols Our approach • Use rewriting logic as general theoretical framework • protocols and intruder rules specified as transition rewrite rules • crypto properties as oriented equational properties and axioms • Use narrowing modulo equational theories in two ways • as a symbolic reachability analysis method • as an extensible equational unification method • Combine with state reduction techniques (grammars, optimizations, etc.) • Implement in Maude programming environment • Rewriting logic gives us theoretical framework and understanding • Maude implementation gives us tool support Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 5 / 68
  • 6. Formal Analysis of Protocols Our Plans 1 Start by formalizing NPA techniques in rewriting logic (2005) 2 Extend model to different types of equational theories (2006) • Explicit Encryption and Decryption, AC-unification, Diffie-Hellman Exponentiation, Exclusive-or 3 Include state reduction techniques (2008, 2013) 4 Document and distribute the tool (v1.0 2007) 5 Sequential protocol composition: specification and analysis (2010) 6 Integrate dedicated unification algorithms (2011) • Homomorphism, Exclusive-or 7 Document and distribute the tool (v2.0 2012) 8 Extensive protocol analysis (2012-now) • Homomorphism, Exclusive-or, Abelian groups 9 Advanced properties: • Indistinguishability (2013-now), Conditional protocols (2016) 10 Standard APIs: IBM CCA, PKCS#11, Yubikey (2014-now) 11 Document and distribute the tool (v3.0 2016) Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 6 / 68
  • 7. Formal Analysis of Protocols The Needham-Schroeder Public Key Outline 1 Formal Analysis of Protocols The Needham-Schroeder Public Key Motivating Protocols Some Examples of Algebraic Identities Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 7 / 68
  • 8. Formal Analysis of Protocols The Needham-Schroeder Public Key Building Blocks for Security Protocols An example: Needham-Schroeder Public Key protocol Building Blocks for Security Protocols Cryptographic Procedures: encryption of messages. {{M}KB }K−1 B = M (Pseudo-)Random Number Generators: to generate “nonces”, e.g. for “challenge/response”. Protocols: recipe for exchanging messages. Steps like: A sends B her name together with the message M. The pair {A, M} is encrypted with B’s public key. A → B : {A, M}KB Luca Viganò (University of Verona) OFMC Fosad 2009 10 / 116 Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 8 / 68
  • 9. Formal Analysis of Protocols The Needham-Schroeder Public Key An authentication protocol An example: Needham-Schroeder Public Key protocol An authentication protocol The Needham-Schroeder Public Key protocol (NSPK): 1. A → B : {NA, A}KB 2. B → A : {NA, NB}KA 3. A → B : {NB}KB Goal: mutual authentication. Translation: “This is Alice and I have chosen a nonce NA.” “Here is your nonce NA. Since I could read it, I must be Bob. I also have a challenge NB for you.” “You sent me NB. Since only Alice can read this and I sent it back, you must be Alice.” NSPK proposed in 1970s and used for decades, until... Protocols are typically small and convincing... and often wrong! Luca Viganò (University of Verona) OFMC Fosad 2009 11 / 116 Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 9 / 68
  • 10. Formal Analysis of Protocols The Needham-Schroeder Public Key How to at least tie against a Chess Grandmaster w to at least tie against a Chess Grandmaster Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 10 / 68
  • 11. Formal Analysis of Protocols The Needham-Schroeder Public Key Man-in-the-middle attack on NSPK an-in-the-middle attack on the NSPK X → Y : {N1, X}KY Y → X : {N1, N2}KX X → Y : {N2}KY X → Y : {N1, X}KY X → Y : {N1, X}KY Y → X : {N1, N2}KX Y → X : {N1, N2}KX X → Y : {N2}KY X → Y : {N2}KY NSPK #1 NSPK #2 { }NA,A KC { }NA,A KB { }NA,NB KA { }NA,NB AK { }NB CK { }NB KB B believes he is speaking with A! Viganò (University of Verona) OFMC Fosad 2009 13 / 116 Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 11 / 68
  • 12. Formal Analysis of Protocols The Needham-Schroeder Public Key What went wrong? • Problem in step 2: B → A : {NA, NB}KA • Agent B should also give his name: NA, NB, BKA . • The improved version is called NSL protocol by Gavin Lowe. • Is the protocol now correct? An example: Needham-Schroeder Public Key protocol What went wrong? Problem in step 2: B → A : {NA, NB}KA Agent B should also give his name: {NA, NB, B}KA . The improved version is called NSL protocol. Is the protocol now correct? Luca Viganò (University of Verona) OFMC Fosad 2009 14 / 116 Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 12 / 68
  • 13. Formal Analysis of Protocols The Needham-Schroeder Public Key Needham-Schroeder-Lowe Public Key Exchange Protocol e NSL Protocol X → Y : {N1, X}KY Y → X : {N1, N2, Y}KX X → Y : {N2}KY X → Y : {N1, X}KY X → Y : {N1, X}KY Y → X : {N1, N2, Y}KX Y → X : {N1, N2, Y}KX NSL #1 NSL #2 { }NA,A KC { }NA,A KB KA NA,NB,B{ }KA NA,NB,B{ } A aborts the protocol execution! (or ignores the message) Viganò (University of Verona) OFMC Fosad 2009 15 / 116Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 13 / 68
  • 14. Formal Analysis of Protocols Motivating Protocols Outline 1 Formal Analysis of Protocols The Needham-Schroeder Public Key Motivating Protocols Some Examples of Algebraic Identities Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 14 / 68
  • 15. Formal Analysis of Protocols Motivating Protocols Example: Needham-Schroeder Public Key Protocol Protocol (text-book) A −→ B : pk(B, A; NA) B −→ A : pk(A, NA; NB) A −→ B : pk(B, NB) Attack sequence 1. (pk(i, a; n(a, r1)))+ 2. (pk(i, n(b, r2)))− 3. (a; n(a, r1))+ 4. (a; n(a, r1))− 5. (pk(b, a; n(a, r1)))+ 6. (pk(b, a; n(a, r1)))− 7. (pk(a, n(a, r1); n(b, r2)))+ 8. (pk(a, n(a, r1); n(b, r2)))− 9. (pk(i, n(b, r2)))+ 10. (pk(i, n(b, r2)))− 11. (n(b, r2))+ 12. (n(b, r2))− 13. (pk(b, n(b, r2)))+ 14. (pk(b, n(b, r2)))− Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 15 / 68
  • 16. Formal Analysis of Protocols Motivating Protocols Example: Needham-Schroeder-Lowe Protocol Protocol (text-book) A −→ B : pk(B, A; NA) B −→ A : pk(A, NA; NB; B) A −→ B : pk(B, NB) Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 16 / 68
  • 17. Formal Analysis of Protocols Motivating Protocols Example: NSL-xor Protocol Protocol (text-book) A −→ B : pk(B, A; NA) B −→ A : pk(A, NA; NB ⊕ B) A −→ B : pk(B, NB) Attack sequence 1. (pk(i, a; n(a, r1)))+ 2. (pk(i, n(b, r2)))− 3. (a; n(a, r1))+ 4. (a; n(a, r1))− 5. (pk(b, a; n(a, r1)))+ 6. generatedByIntruder(b ⊕ i) 7. (pk(b, a; n(a, r1)))− 8. (pk(a, n(a, r1); n(b, r2); b))+ 9. (pk(a, n(a, r1); n(b, r2); b))− 10. (pk(i, n(b, r2) ⊕ b ⊕ i))+ 11. (pk(i, n(b, r2) ⊕ b ⊕ i))− 12. (n(b, r2) ⊕ b ⊕ i)+ 13. (b ⊕ i)− 14. (n(b, r2) ⊕ b ⊕ i)+ 15. (n(b, r2)))+ 16. (n(b, r2)))− 17. (pk(b, n(b, r2)))+ 18. (pk(b, n(b, r2)))− Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 17 / 68
  • 18. Formal Analysis of Protocols Motivating Protocols Example: NSL-homomorphism Protocol Protocol (text-book) A −→ B : pk(B, A; NA) B −→ A : pk(A, NA; NB; B) A −→ B : pk(B, NB) Attack sequence 1. generatedByIntruder(pk(a, i)) 2. generatedByIntruder(pk(b, a; NI)) 3. (pk(b, a; NI))− 4. (pk(a, NI; n(b, r2); b))+ 5. (pk(a, NI); pk(a, n(b, r2)); pk(a, b))− 6. (pk(a, n(b, r2)); pk(a, b))+ 7. (pk(a, n(b, r2)); pk(a, b))− 8. (pk(a, n(b, r2)))+ 9. (pk(a, i)− 10. (pk(a, n(b, r2)))− 11. (pk(i, a); pk(a, n(b, r2)))+ 12. pk(a, i; n(b, r2))− 13. (pk(i, n(b, r1); n(a, r1); a))+ 14. (pk(i, n(b, r2)); pk(i, n(a, r1)); pk(i, a))− 15. (pk(i, n(b, r2)))+ 16. (pk(i, n(b, r2)))− 17. (n(b, r2))+ 18. (n(b, r2))− 19. (pk(b, n(b, r2)))+ 20. (pk(b, n(b, r2)))− Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 18 / 68
  • 19. Formal Analysis of Protocols Some Examples of Algebraic Identities Outline 1 Formal Analysis of Protocols The Needham-Schroeder Public Key Motivating Protocols Some Examples of Algebraic Identities Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 19 / 68
  • 20. Formal Analysis of Protocols Some Examples of Algebraic Identities Explicit Encryption and Decryption • Most formal models lack explicit decryption operator and assume implicit decryption • If a principal knows an encrypted message and the key, assume principal can decrypt message under the following conditions • Implicit assumption that principal never decrypts a message that wasn’t encrypted with a key known by the principal • Assumption that principals can check format of decrypted message • What if these assumptions do not hold? • In that case, need to model both encryption and decryption symbols explicitly, plus their cancellation, e.g. d(K, e(K, Y)) = Y. Example: Needham-Schroeder Public Key (NSPK) Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 20 / 68
  • 21. Formal Analysis of Protocols Some Examples of Algebraic Identities Modular Exponentiation in Diffie-Hellman • Basic DH example protocol (each nonzero residue mod P is a power of g) 1 A → B : gNA mod P B computes (gNA )NB mod P 2 B → A : gNB mod P A and B compute (gNB )NA = (gNA )NB mod P and get a shared secret key. • Properties: (gX)Y = gX∗Y = gY∗X = (gY)X (X ∗ Y) ∗ Z = X ∗ (Y ∗ Z) X ∗ Y = Y ∗ X of modular exponentiation in order to faithfully represent this protocol Example: Diffie-Hellman Protocol Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 21 / 68
  • 22. Formal Analysis of Protocols Some Examples of Algebraic Identities Exclusive-Or • Cheap and has provable security properties • If we send X ⊕ R, where R a random secret, observer learns no more about X than before it saw message • On the other hand, associativity-commutativity and cancellation properties make it tricky to reason about X ⊕ Y = Y ⊕ X X ⊕ X = 0 (X ⊕ Y) ⊕ Z = X ⊕ (Y ⊕ Z) X ⊕ 0 = X Example: Needham-Schroeder-Lowe with XOR (NSL-xor) Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 22 / 68
  • 23. Formal Analysis of Protocols Some Examples of Algebraic Identities Homomorphism • The electronic codebook (ECB) encryption splits a message into blocks and cyphers the blocks using the same key • Identical plaintext blocks are encrypted into identical ciphertext blocks (does not hide data patterns well). Sensitive to the property: e(K, X; Y) = e(K, X); e(K, Y) Example: NSL with homomorphic encryption Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 23 / 68
  • 24. Introduction to Rewriting Logic Outline 1 Formal Analysis of Protocols The Needham-Schroeder Public Key Motivating Protocols Some Examples of Algebraic Identities 2 Introduction to Rewriting Logic 3 How Maude-NPA works 4 Examples of execution Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 24 / 68
  • 25. Introduction to Rewriting Logic Rewriting Logic in a Nutshell Definition A rewrite theory R is a triple R = (Σ, E, R), with: • (Σ, R) a set of rewrite rules of the form t → s e.g. e(K, NA; X) → e(K, X) • (Σ, E) a set of equations of the form t = s e.g. d(K, e(K, Y)) = Y Intuitively, R specifies a concurrent system, whose states are elements of the initial algebra TΣ/E specified by (Σ, E), and whose concurrent transitions are specified by the rules R. e(k, na; m) ∈ TΣ/E d(k2, e(k2, e(k, na; m))) /∈ TΣ/E Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 25 / 68
  • 26. Introduction to Rewriting Logic Rewriting modulo Definition Given (Σ, E, R), t →R,E s if there is • a position p ∈ Pos(t); • a rule l → r in R; • a matching σ (modulo E) such that t|p =E σ(l), and s = t[σ(r)]p. Example: • R = { e(K, NA; X) → e(K, X) } • E = { d(K, e(K, Y)) = Y } • e(k, nA; m) →R,E e(k, m) d(k, e(k, e(k2, nA; m))) =E e(k2, na; m) →R,E e(k2, m) Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 26 / 68
  • 27. Introduction to Rewriting Logic Narrowing and Backwards Narrowing Definition Given (Σ, E, R), t σ,R,E s if there is • a non-variable position p ∈ Pos(t); • a rule l → r ∈ R; • a unifier σ (modulo E) such that σ(t|p) =E σ(l), and s = σ(t[r]p). Example: • R = { e(K, NA; X) → e(K, X) } • E = { d(K, e(K, Y)) = Y } • e(k, X) {X→NA;X },R,E e(k, X ) d(k, X) {X→e(k,e(K,NA;X ))},R,E e(K, X ) Backwards Narrowing: Narrowing with rewrite rules reversed Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 27 / 68
  • 28. Introduction to Rewriting Logic Narrowing Reachability Analysis Narrowing can be used as a general deductive procedure for solving symbolic reachability problems of the form (∃x) t1(x) → t1(x) ∧ . . . ∧ tn(x) → tn(x) in a given rewrite theory. • The terms ti and ti denote sets of states (all the possible instances of the term) • Symbolyc reachability means for what subset of states denoted by ti are the states denoted by ti reachable? • No finiteness assumptions about the state space. Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 28 / 68
  • 29. Introduction to Rewriting Logic Equational Unification Definition Given an order-sorted equational theory (Σ, Ax E) and t ? = t , an (Ax E)-unifier is an order-sorted subst. σ s.t. σ(t) =Ax E σ(t ). Compared to syntactic unification: • f(a, X) = f(Y, b) has solution X → b, Y → a • f(a, X) =AC f(b, Y) has solution X → b, Y → a • X + 0 =ACU X, where 0 is the identity, has solution id • X + a + b =XOR a has solution X → b, Y → a Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 29 / 68
  • 30. Introduction to Rewriting Logic Equational Unification - Complete When Ax = ∅ and E convergent TRS Narrowing provides a complete (but semi-decidable) E-unification procedure [Hullot80]. e.g. cancellation d(K, e(K, M)) → M. When Ax = ∅ and E convergent and coherent TRS modulo Ax Narrowing provides a complete (but semi-decidable) E-unification procedure [Jouannaud-Kirchner-Kirchner-83] e.g. exclusive-or X ∗ 0 → X, X ∗ X → 0 | (X ∗ Y) ∗ Z = X ∗ (Y ∗ Z), X ∗ Y = Y ∗ X Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 30 / 68
  • 31. Introduction to Rewriting Logic Equational Unification - Decidable When Ax = ∅ Basic narrowing strategy [Hullot80] is complete for normalized substitutions. Cases where basic narrowing terminates have been studied [Alpuente-Escobar-Iborra-TCS09]. When Ax = ∅ Folding variant-narrowing [Escobar-Meseguer-Sasse-JLAP12] is the most promising strategy for equational unification. Fully implemented in Maude. Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 31 / 68
  • 32. Introduction to Rewriting Logic E,Ax-variants E,Ax-variant Given a term t and an equational theory Ax E, (t , θ) is an E,Ax-variant of t if θ(t)↓E,Ax =Ax t [Comon-Delaune-RTA05] Finite and complete set of E,Ax-variants ∀σ s.t. σ(t)↓E,Ax = t , ∃(t , θ) ∈ VE,Ax(t) s.t. 1 t is in →E,Ax-normal form 2 t and t (σ↓E,Ax and θ) are just renamings modulo Ax. Finite Variant Property Theory has FVP if there is a finite number of most general E,Ax-variants for every term. Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 32 / 68
  • 33. Introduction to Rewriting Logic E,Ax-variants - Example X ⊕ 0 → X X ⊕ X → 0 X ⊕ X ⊕ Y → Y (cancellation rules: E) X ⊕ (Y ⊕ Z) = (X ⊕ Y) ⊕ Z X ⊕ Y = Y ⊕ X (axioms: Ax) • For X ⊕ X only E,Ax-variant is: (0, id) • For X ⊕ Y there are 7 most general E,Ax-variants 1. (X ⊕ Y, id) 3. (Z, {X → 0, Y → Z}) 5. (Z, {X → Z, Y → 0}) 2. (0, {X → U, Y → U}) 4. (Z, {X → Z ⊕ U, Y → U}) 6. (Z, {X → U, Y → Z ⊕ U}) 7. (Z1 ⊕ Z2, {X → U ⊕ Z1, Y → U ⊕ Z2}) Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 33 / 68
  • 34. Introduction to Rewriting Logic Narrowing & Unification in Maude-NPA • Cryptographic protocols are modeled as a rewrite theory P = (Σ, ∆ B, R) • Narrowing at two levels in Maude-NPA 1 a theory (Σ, ∆ B, R): (∆ B-narrowing with rules R) 2 for ∆ B-unification (B-narrowing with rules ∆) • ∆ B-unification for each backwards step using R 1 Built-in Maude ACU unification algorithms 2 Dedicated unification algorithms (xor, homomorphism) 3 Hybrid approach: built-in algorithms for B, and a generic algorithm (variant narrowing) for ∆. Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 34 / 68
  • 35. How Maude-NPA works Outline 1 Formal Analysis of Protocols The Needham-Schroeder Public Key Motivating Protocols Some Examples of Algebraic Identities 2 Introduction to Rewriting Logic 3 How Maude-NPA works 4 Examples of execution Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 35 / 68
  • 36. How Maude-NPA works Maude-NPA • A tool to find or prove the absence of attacks • Analyzes infinite state systems: • Active Dolev-Yao intruder • No abstraction or approximation of nonces • Unbounded number of sessions • Performs symbolic backwards search from an insecure state to find attacks or to prove unreachability of cryptographic protocols • Sensitive to past and future Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 36 / 68
  • 37. How Maude-NPA works Basic Structure of Maude-NPA • Honest principal and intruder actions are modeled as a strand space (Thayer, Herzog, and Guttman) Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 37 / 68
  • 38. How Maude-NPA works Basic Structure of Maude-NPA • A strand is a sequence of positive and negative terms • Negative term stand for received message • Positive terms stand for sent messages • Example: (honest) [ pke(B, NA; A)+, pke(A, NA; NB)−, pke(B, NB)+ ] (intruder [X−, pke(A, X)+] and [X−, Y−, (X; Y)+] • Modified strand notation: a marker denoting the current state • Example: [ pke(B, NA; A)+ | pke(A, NA; NB)−, pke(B, NB)+ ] • Strand annotated with fresh terms generated by principal executing strands (to obtain an infinite number of nonces) :: r :: [ pke(B, n(A, r); A)+ | pke(A, n(A, r); NB)−, pke(B, NB)+ ] • Intruder knowledge explicitly represented • m ∈ I: terms already learnt by the intruder • m /∈ I: terms the intruder does not know, but that will be learnt Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 38 / 68
  • 39. How Maude-NPA works Basic Structure of Maude-NPA • A state is a set of strands plus the intruder knowledge . . . [ nil, m± 1 , . . . , m± i | m± i+1, . . . , m± k , nil ] & {t1 /∈ I, . . . , tj /∈ I}, {s1 ∈ I, . . . , sm ∈ I} • Initial strand [ nil | m± 1 , . . . , m± n , nil ] • Final strand [ nil, m± 1 , . . . , m± n , | nil ] • Initial Intruder knowledge {t1 /∈ I, . . . , tn /∈ I} • Final Intruder knowledge {t1 ∈ I, . . . , tn ∈ I} Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 39 / 68
  • 40. How Maude-NPA works Protocol Rules and Their Execution . . . [ nil, m± 1 , . . . , m± i | m± i+1, . . . , m± k , nil ] & {t1 /∈ I, . . . , tj /∈ I}, {s1 ∈ I, . . . , sm ∈ I} • Negative message m− i in the past part of the strand is • E-unified with a term already known by the intruder sp ∈ I • or introduced into the intruder knowledge as mi ∈ I • Positive message m+ i in the past part of the strand is • E-unified with term known by the intruder sp ∈ I, and then sp ∈ I is transformed into sp /∈ I Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 40 / 68
  • 41. How Maude-NPA works Protocol Rules and Their Execution To execute a protocol P associate to it a rewrite theory on sets of strands as follows. Let I informally denote the set of terms known by the intruder, and K the facts known or unknown by the intruder 1 [ L | M−, L ] & {M ∈ I, K} → [ L, M− | L ] & {M ∈ I, K} Moves input messages into the past 2 [ L | M+, L ] & {K} → [ L, M+ | L ] & {K} Moves output message that are not read into the past 3 [ L | M+, L ] & {M ∈ I, K} → [ L, M+ | L ] & {M ∈ I, K} Joins output message with term in intruder knowledge. For backwards execution, just reverse Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 41 / 68
  • 42. How Maude-NPA works Introducing New Strands • If we want an unbounded number of strands, need some way of introducing new strands in the backwards search • Specialize rule 3 using each strand of the protocol P: { [ l1 | u+, l2 ] & {u ∈ I, K} → {u ∈ I, K} s.t. [ l1, u+, l2 ] ∈ P} Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 42 / 68
  • 43. How Maude-NPA works Backwards Reachability Analysis • Backwards narrowing protocol execution defines a backwards reachability relation • Specify a state describing the attack state, including a set of final strands plus terms u ∈ I and u ∈ I • Execute the protocol backwards to an initial state, if possible • In initial step, prove lemmas that identify certain states unreachable (if necessary) • For each intermediate state found, several optimizations available (check if it can be proved unreachable and discard) • Also global optimizations (super lazy intruder, state subsumption) Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 43 / 68
  • 44. Examples of execution Outline 1 Formal Analysis of Protocols The Needham-Schroeder Public Key Motivating Protocols Some Examples of Algebraic Identities 2 Introduction to Rewriting Logic 3 How Maude-NPA works 4 Examples of execution Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 44 / 68
  • 45. Examples of execution Example: Needham-Schroeder Public Key Protocol Protocol (text-book) A −→ B : pk(B, A; NA) B −→ A : pk(A, NA; NB) A −→ B : pk(B, NB) Protocol (strand spaces) Intruder capabilities :: r1 :: [nil | (pk(B, A; n(A, r1)))+, (pk(A, n(A, r1); NB))−, pk(B, NB)+] :: r2 :: [nil | (pk(B, A; NA))−, (pk(A, NA; n(B, r2)))+, (pk(B, n(B, r2)))−] [nil | (M1; M2)−, M+ 1 ] [nil | (M1; M2)−, M+ 2 ] [nil | M− 1 , M− 2 , (M1; M2)+] [nil | M−, (sk(i, M))+] [nil | M−, (pk(Ke, M))+] Equational Theory - Algebraic properties B = { (X ; Y) ; Z = X ; (Y ; Z)} ∆ = { pk(Ke, sk(Ke, X)) = X, sk(Ke, pk(Ke, X)) = X} Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 45 / 68
  • 46. Examples of execution Needham-Schroeder Public Key: Attack State Pattern :: r2 :: [nil, (pk(B, A; NA))−, (pk(A, NA; n(B, r2)))+, (pk(B, n(B, r2)))− | nil ] & SS & {n(B, r2) ∈ I, IK} Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 46 / 68
  • 47. Examples of execution Needham-Schroeder Public Key: Search State Space Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 47 / 68
  • 48. Examples of execution Needham-Schroeder Public Key: Initial State [nil | (pk(i, n(b, r2)))−, (n(b, r2))+, nil] & [nil | (pk(i, a; n(a, r1)))−, (a; n(a, r1))+, nil] & [nil | (n(b, r2))−, (pk(b, n(b, r2)))+, nil] & [nil | (a; n(a, r1))−, (pk(b, a; n(a, r1)))+, nil] & :: r1 :: [nil | (pk(i, a; n(a, r1)))+, (pk(a, n(a, r1); n(b, r2)))−, (pk(i, n(b, r2)))+, nil] & :: r2 :: [nil | (pk(b, a; n(a, r1)))−, (pk(a, n(a, r1); n(b, r2)))+, (pk(b, n(b, r2)))−, nil] Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 48 / 68
  • 49. Examples of execution Needham-Schroeder Public Key: Attack sequence 1. (pk(i, a; n(a, r1)))+ 2. (pk(i, n(b, r2)))− 3. (a; n(a, r1))+ 4. (a; n(a, r1))− 5. (pk(b, a; n(a, r1)))+ 6. (pk(b, a; n(a, r1)))− 7. (pk(a, n(a, r1); n(b, r2)))+ 8. (pk(a, n(a, r1); n(b, r2)))− 9. (pk(i, n(b, r2)))+ 10. (pk(i, n(b, r2)))− 11. (n(b, r2))+ 12. (n(b, r2))− 13. (pk(b, n(b, r2)))+ 14. (pk(b, n(b, r2)))− Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 49 / 68
  • 50. Examples of execution Example: Needham-Schroeder-Lowe Protocol Protocol (text-book) A −→ B : pk(B, A; NA) B −→ A : pk(A, NA; NB; B) A −→ B : pk(B, NB) Protocol (strand spaces) Intruder capabilities :: r1 :: [nil | (pk(B, A; n(A, r1)))+, (pk(A, n(A, r1); NB; B))−, pk(B, NB)+] :: r2 :: [nil | (pk(B, A; NA))−, (pk(A, NA; n(B, r2); B))+, (pk(B, n(B, r2)))−] [nil | (M1; M2)−, M+ 1 ] [nil | (M1; M2)−, M+ 2 ] [nil | M− 1 , M− 2 , (M1; M2)+] [nil | M−, (sk(i, M))+] [nil | M−, (pk(Ke, M))+] Equational Theory - Algebraic properties B = { (X ; Y) ; Z = X ; (Y ; Z)} ∆ = { pk(Ke, sk(Ke, X)) = X, sk(Ke, pk(Ke, X)) = X} Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 50 / 68
  • 51. Examples of execution Needham-Schroeder-Lowe: Attack State Pattern :: r2 :: [nil, (pk(B, A; NA))−, (pk(A, NA; n(B, r2); B))+, (pk(B, n(B, r2)))− | nil ] & SS & {n(B, r2) ∈ I, IK} Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 51 / 68
  • 52. Examples of execution Needham-Schroeder-Lowe: Search State Space Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 52 / 68
  • 53. Examples of execution Example: NSL-xor Protocol Protocol (text-book) A −→ B : pk(B, A; NA) B −→ A : pk(A, NA; NB ⊕ B) A −→ B : pk(B, NB) Protocol (strand spaces) Intruder capabilities :: r1 :: [nil | (pk(B, A; n(A, r1)))+, (pk(A, n(A, r1); NB ⊕ B))−, pk(B, NB)+] :: r2 :: [nil | (pk(B, A; NA))−, (pk(A, NA; n(B, r2) ⊕ B))+, (pk(B, n(B, r2)))−] [nil | (M1; M2)−, M+ 1 ] [nil | (M1; M2)−, M+ 2 ] [nil | M− 1 , M− 2 , (M1; M2)+] [nil | NS− 1 , NS− 2 , (NS1 ⊕ NS2)+] [nil | null+] [nil | M−, (sk(i, M))+] [nil | M−, (pk(Ke, M))+] Equational Theory - Algebraic properties B = { (X ⊕ Y) ⊕ Z = X ⊕ (Y ⊕ Z), X ⊕ Y = Y ⊕ X} ∆ = { pk(Ke, sk(Ke, X)) = X, sk(Ke, pk(Ke, X)) = X, NS ⊕ NS = null, NS1 ⊕ NS1 ⊕ NS2 = NS2, NS ⊕ null = NS} Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 53 / 68
  • 54. Examples of execution NSL-xor: Attack State Pattern :: r2 :: [nil, (pk(B, A; NSA))−, (pk(A, NSA; n(B, r2) ⊕ B))+, (pk(B, n(B, r2)))− | nil ] & SS & {n(B, r2) ∈ I, IK} Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 54 / 68
  • 55. Examples of execution NSL-xor: Search State Space Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 55 / 68
  • 56. Examples of execution NSL-xor: Initial State [nil | (pk(i, a; n(a, r1)))−, (a; n(a, r1))+, nil] & [nil | (pk(i, b ⊕ i ⊕ n(b, r1)))−, (b ⊕ i ⊕ n(b, r1))+, nil] & [nil | (a; n(a, r1))−, (pk(b, a; n(a, r1))+, nil] & [nil | (n(b, r2))−, (pk(b, n(b, r2)))+, nil] & [nil | (b ⊕ i)−, (b ⊕ i ⊕ n(b, r2))−, (n(b, r2))+, nil] & :: r1 :: [nil | (pk(i, a; n(a, r1)))+, (pk(a, n(a, r1); n(b, r2) ⊕ b))−, (pk(i, b ⊕ i ⊕ n(b, r1)))+, nil] & :: r2 :: [nil | (pk(b, a; n(a, r1)))−, (pk(a, n(a, r1); n(b, r2) ⊕ b))+, (pk(b, n(b, r2)))−, nil] Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 56 / 68
  • 57. Examples of execution NSL-xor: Attack sequence 1. (pk(i, a; n(a, r1)))+ 2. (pk(i, n(b, r2)))− 3. (a; n(a, r1))+ 4. (a; n(a, r1))− 5. (pk(b, a; n(a, r1)))+ 6. generatedByIntruder(b ⊕ i) 7. (pk(b, a; n(a, r1)))− 8. (pk(a, n(a, r1); n(b, r2); b))+ 9. (pk(a, n(a, r1); n(b, r2); b))− 10. (pk(i, n(b, r2) ⊕ b ⊕ i))+ 11. (pk(i, n(b, r2) ⊕ b ⊕ i))− 12. (n(b, r2) ⊕ b ⊕ i)+ 13. (b ⊕ i)− 14. (n(b, r2) ⊕ b ⊕ i)+ 15. (n(b, r2)))+ 16. (n(b, r2)))− 17. (pk(b, n(b, r2)))+ 18. (pk(b, n(b, r2)))− Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 57 / 68
  • 58. Examples of execution Example: NSL-homomorphism Protocol Protocol (text-book) A −→ B : pk(B, A; NA) B −→ A : pk(A, NA; NB; B) A −→ B : pk(B, NB) Protocol (strand spaces) Intruder capabilities :: r1 :: [nil | (pk(B, A; n(A, r1)))+, (pk(A, n(A, r1); NB; B))−, pk(B, NB)+] :: r2 :: [nil | (pk(B, A; NA))−, (pk(A, NA; n(B, r2); B))+, (pk(B, n(B, r2)))−] [nil | (M1; M2)−, M+ 1 ] [nil | (M1; M2)−, M+ 2 ] [nil | M− 1 , M− 2 , (M1; M2)+] [nil | M−, (pk(Ke, M))+] [nil | (pk(i, M))+, M+] Equational Theory - Algebraic properties B = { (X ; Y) ; Z = X ; (Y ; Z)} ∆ = { pk(Ke, X; Y) = pk(Ke, X); pk(Ke, Y)} Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 58 / 68
  • 59. Examples of execution NSL-homomorphism: Attack State Pattern :: r2 :: [nil, (pk(B, A; NA))−, (pk(A, NA; n(B, r2); B))+, (pk(B, n(B, r2)))− | nil ] & SS & {n(B, r2) ∈ I, IK} Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 59 / 68
  • 60. Examples of execution NSL-homomorphism: Search State Space Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 60 / 68
  • 61. Examples of execution NSL-homomorphic: Initial State [nil | (pk(a, i)−, (pk(a, n(b, r2)))−, (pk(i, a); pk(a, n(b, r2)))+, nil] [nil | (pk(i, n(b, r2)))−, (n(b, r2))+, nil] [nil | (n(b, r2))−, (pk(b, n(b, r2)))+, nil] [nil | (pk(a, NI); pk(a, n(b, r2)); pk(a, b))−, (pk(a, n(b, r2)); pk(a, b))+, nil] [nil | (pk(a, n(b, r2)); pk(a, b))−, (pk(a, n(b, r2)))+, nil] [nil | (pk(i, n(b, r2)); pk(i, n(a, r1)); pk(i, a))−, (pk(i, n(b, r2)))+, nil] :: r1 :: [nil | (pk(a, i; n(b, r2))−, (pk(i, n(b, r2); n(a, r1); a))+, nil] :: r2 :: [nil | (pk(b, a; NI))−, (pk(a, NI; n(b, r2); b))+, (pk(b, n(b, r2)))−, nil] Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 61 / 68
  • 62. Examples of execution NSL-homomorphism: Attack sequence 1. generatedByIntruder(pk(a, i)) 2. generatedByIntruder(pk(b, a; NI)) 3. (pk(b, a; NI))− 4. (pk(a, NI; n(b, r2); b))+ 5. (pk(a, NI); pk(a, n(b, r2)); pk(a, b))− 6. (pk(a, n(b, r2)); pk(a, b))+ 7. (pk(a, n(b, r2)); pk(a, b))− 8. (pk(a, n(b, r2)))+ 9. (pk(a, i)− 10. (pk(a, n(b, r2)))− 11. (pk(i, a); pk(a, n(b, r2)))+ 12. pk(a, i; n(b, r2))− 13. (pk(i, n(b, r1); n(a, r1); a))+ 14. (pk(i, n(b, r2)); pk(i, n(a, r1)); pk(i, a))− 15. (pk(i, n(b, r2)))+ 16. (pk(i, n(b, r2)))− 17. (n(b, r2))+ 18. (n(b, r2))− 19. (pk(b, n(b, r2)))+ 20. (pk(b, n(b, r2)))− Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 62 / 68
  • 63. Examples of execution Example: Diffie-Hellman Protocol Protocol (text-book) A −→ B : (A; B; exp(g, NA)) B −→ A : (A; B; exp(g, NB)) A −→ B : e(exp(exp(g, NB), NA), sec(A, B) ) Protocol (strand spaces) Intruder capabilities :: r1, r2 :: [nil | (A; B; exp(g, n(A, r1)))+, (A; B; XB)−, e(exp(XB, n(A, r1)), sec(A, r2))+] :: r3 :: [nil | (A; B; XA)−, (A; B; exp(g, n(B, r3)))+, (e(exp(XA, n(B, r3)), S))−] [nil | (M1; M2)−, M+ 1 ] [nil | (M1; M2)−, M+ 2 ] [nil | M− 1 , M− 2 , (M1; M2)+] [nil | K−, M−, e(K, M)+] [nil | K−, M−, d(K, M)+] [nil | N1−, N2−, (N1 ∗ N2)+] [nil | E−, N−, exp(E, N)+] Equational Theory Algebraic properties B = { (X ∗ Y) ∗ Z = X ∗ (Y ∗ Z), (X ∗ Y) = Y ∗ X } ∆ = { dec(K, enc(K, X)) = X, exp(exp(W, Y), Z) = exp(W, Y ∗ Z) } Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 63 / 68
  • 64. Examples of execution Diffie-Helllman: Attack State Pattern attack pattern, the protocol has been proved secure for that attack pattern with respect to the assumed intruder capabilities and the algebraic properties. If an initial state is found, then we conclude that the attack pattern is possible and a concrete attack can be inferred from the exchange sequence stored in the initial state. Note that an initial state may be generic, in the sense of having logical variables for those elements that are not relevant for the attack. Example 2. (Example 1 continued) The attack pattern that we are looking for is one in which Bob completes the protocol and the intruder is able to learn the secret. The attack state pattern to be given as input to Maude-NPA is: :: r :: [ (A; B; Y )− , (B; A; exp(g, n(B, r )))+ , (e(exp(Y, n(B, r )), sec(a, r )))− | nil ] SS (sec(a, r )∈I, IK) (†) Using the above attack pattern Maude-NPA is able to find an initial state of the protocol, showing that the attack state is possible. Note that this initial state is generalized to two sessions in parallel: one session where Alice (i.e., principal named a) is talking to another principal B —in this session the intruder gets a nonce n(a, r) originated from a— and another session where Bob (i.e., principal named b) is trying to talk to Alice. If we instantiate B to be b, then one session is enough, although the tool returns the most general attack. The strands associated to the initial state found by the backwards search are as follows: [nil | exp(g, n(a, r)))− , Z− , exp(g, Z ∗ n(a, r))+ ] − − +Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 64 / 68
  • 65. Examples of execution Diffie-Helllman: Attack Space Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 65 / 68
  • 66. Examples of execution Diffie-Helllman: Initial State Using the above attack pattern Maude-NPA is able to find an initial state of the protocol, showing that the attack state is possible. Note that this initial state is generalized to two sessions in parallel: one session where Alice (i.e., principal named a) is talking to another principal B —in this session the intruder gets a nonce n(a, r) originated from a— and another session where Bob (i.e., principal named b) is trying to talk to Alice. If we instantiate B to be b, then one session is enough, although the tool returns the most general attack. The strands associated to the initial state found by the backwards search are as follows: [nil | exp(g, n(a, r)))− , Z− , exp(g, Z ∗ n(a, r))+ ] [nil | exp(g, Z ∗ n(a, r))− , e(exp(g, Z ∗ n(a, r)), sec(a, r ))− , sec(a, r )+ ] [nil | exp(g, n(b, r )))− , W− , exp(g, W ∗ n(b, r ))+ ] [nil | exp(g, W ∗ n(b, r ))− , sec(a, r )− , e(exp(g, W ∗ n(b, r )), sec(a, r ))+ ] [nil | (a; b; exp(g, n(b, r )))− , (b; exp(g, n(b, r )))+ ] [nil | (b; exp(g, n(b, r )))− , exp(g, n(b, r ))+ ] [nil | (a; B ; exp(g, n(a, r)))− , (B ; exp(g, n(a, r)))+ ] [nil | (B ; exp(g, n(a, r)))− , exp(g, n(a, r))+ ] :: r :: [nil | (a; b; exp(g, W))− , (a; b; exp(g, n(b, r )))+ , e(exp(g, W ∗ n(b, r )), sec(a, r ))− ] :: r , r :: [nil | (a; B ; exp(g, n(a, r)))+ , (a; B ; exp(g, Z))− , e(exp(g, Z ∗ n(a, r)), sec(a, r ))+ ] 10 Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 66 / 68
  • 67. Examples of execution Diffie-Helllman: Attack sequence Note that the last two strands, generating fresh variables r, r , r , are protocol strands and the others are intruder strands. The concrete message exchange sequence obtained by the reachability analysis is the following: 1.(a; b; exp(g, W))− 2.(a; b; exp(g, n(b, r )))+ 3.(a; b; exp(g, n(b, r )))− 4.(b; exp(g, n(b, r )))+ 5.(b; exp(g, n(b, r )))− 6.(exp(g, n(b, r )))+ 7.(exp(g, n(b, r )))− 8.W− 9.exp(g, W ∗ n(b, r ))+ 10.(a; B ; exp(g, n(a, r)))+ 11.(a; B ; exp(g, n(a, r)))− 12.(B ; exp(g, n(a, r)))+ 13.(B ; exp(g, n(a, r)))− 14.(exp(g, n(a, r)))+ 15.(exp(g, n(a, r)))− 16.Z− 17.exp(g, Z ∗ n(a, r))+ 18.(a; B ; exp(g, Z))− 19.e(exp(g, Z ∗ n(a, r)), sec(a, r ))+ 20.e(exp(g, Z ∗ n(a, r)), sec(a, r ))− 21.exp(g, Z ∗ n(a, r))− 22.sec(a, r )+ 23.exp(g, W ∗ n(b, r ))− 24.sec(a, r )− 25.e(exp(g, W ∗ n(b, r ), sec(a, r ))+ 26.e(exp(g, W ∗ n(b, r )).sec(a, r ))− Step 1) describes Bob (i.e., principal named b) receiving an initiating message from the intruder impersonating Alice. Step 2) describes Bob sending the re- sponse, and Step 3) describes the intruder receiving it. Steps 4) through 9) describe the intruder computing the key exp(g, W ∗ n(b, r )) she will use to com- municate with Bob. Step 10) describes Alice initiating the protocol with a prin- cipal B . Step 11) describes the intruder receiving it, and steps 11) through 17) describe the intruder constructing the key exp(g, Z ∗ n(a, r)) she will use to communicate with Alice. Steps 18) and 19) describe Alice receiving the response from the intruder impersonating B and Alice sending the encrypted message. Steps 20) through 22) describe the intruder decrypting the message to get the secret. In steps 23) through 25) the intruder re-encrypts the secret with the key she shares with Bob and sends it, and in Step 26) Bob receives the message.Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 67 / 68
  • 68. Examples of execution Many thanks Santiago Escobar (UPV) Universidad Complutense de Madrid - March 14th 68 / 68