Expressing Security Properties in CSP
Security properties: the goals that a protocol is meant to satisfy, relatively to specific kinds and levels of threat ñ the intruders and their capabilities
We will consider the following security properties:
Secrecy
No information leakage
Authentication
No falsification of identity
Non-repudiation
Evidence of the involvement of the other party
Anonymity
Protecting the identity of agents wrt particular events

Secrecy and authentication
They are both safety properties: a certain bad thing should not happen
Explicit annotations: In the CSP approach, these properties are defined by ìenhancingî the code of the processes with explicit signal claiming the success of the protocol wrt theİ intended property
Secrecy:İİİ Claim_secret. m
Information m has not become known to the intruder
Authentication:İİ Run with A ,İ Commit with B
The matching of these two events guarrantees the identities of A and B

Secrecy and authentication

Example: The Yahalom Protocol
The protocol
Message 1İİ a -> b : a.na
Message 2İİ b -> s : b.{a.na.nb}ServerKey(b)
Message 3İİ s -> a : {b.kab.na.nb}ServerKey(a) {a.kab}ServerKey(b)
Message 4İİ a -> b : {a.kab}ServerKey(b) .{nb}kab
Authentication of the participants
Kab should remain secret
We may require secrecy also on nb

Exm: Secrecy in the Yahalom protocol
CSP description of the two parties - Original
Initiator(a,na ) =
İİİ env?b: Agent
İİİİİİİİ g send.a.b.a.na
İİİİİİİİ g []İ (receive.J.a{b. kab.na.nb}ServerKey(a) .m
İİİİİİİİİİİİİİİİİ kab e Keyİİİİİİİİ g send.a.b.m.{nb}kab
İİİİİİİİİİİİİİİİ nb e Nonceİİİİİİ g Session(a,b,kab,na,nb) )
İİİİİİİİİİİİİİİİİİİ m e T
Responder(b,nb ) =
İİİ []İ (receive.a.b.a.na g send.b.J.b .{a.na.nb}ServerKey(b)
İ kab e Keyİİİİİİİİİ g receive.a.b.{a. kab}ServerKey(b) .{nb}kab
nb e Nonceİ g Session(b,a,kab,na,nb) )
İİİ m e T

Exm: Secrecy in the Yahalom protocol
CSP description of the two parties - Enhanced
İİİ Initiatorí(a,na ) =
İİİ env?b: Agent
İİİİİİİİ g send.a.b.a.na
İİİİİİİİ g []İ (receive.J.a{b. kab.na.nb}ServerKey(a) .m
İİİİİİİİİİİİİİİİİ kab e Keyİİİİİİİİ g send.a.b.m.{nb}kab
İİİİİİİİİİİİİİİİ nb e Nonceİİİİİİ g signal.Claim_Secret.a.b. kab
İİİİİİİİİİİİİİİİİİİ m e Tİİİİİİİİİİİİ g Session(a,b,kab,na,nb) )
Responderí(b,nb ) =
İİİ []İ (receive.a.b.a.na g send.b.J.b .{a.na.nb}ServerKey(b)
İ kab e Keyİİİİİİİİİ g receive.a.b.{a. kab}ServerKey(b) .{nb}kab
nb e Nonceİ g signal.Claim_Secret.a.b. kab
İİ m e Tİİİİİİİİİİİİİİ g Session(b,a,kab,na,nb) )

Exm: Secrecy in the Yahalom protocol
CSP description of the server
Server(J,kab ) =
İİİ []İ (receive.b.J.b .{a.na.nb}ServerKey(b)
İ A,B e Agentİİİİİİİİİ g send.J.a. {b. kab.na.nb}ServerKey(a) .{a.kab}ServerKey(b)
Nb ,nb e Nonceİ g Server(J,ks ) )
İServer(J)İİ =İ ||| Server(J,kab )
İİİİİİİİİİİİİİİİİİİ kab e KeysServer

Exm: Secrecy in the Yahalom protocol
CSP description of the intruder
İİİİ Intruder(X) = learn?m: messages gIntruder(close(X U {m})
İİİİİİİİİİİİİİİİİİİİİİİİİİİ []
İİİİİİİİİİİİİİİİİİİİİİİİİİİ say!m: X /\ messages gIntruder(X)
Close(X) represents all the possible information that the attacker can infer from X. Typically we assume
İ{k,m}İ |-İ encript(k,m)
{encript(k,m), k-1}İ |-İ m
{Sq<x1,Ö,xn>} |- xi
{x1,Ö,xn}İ |-İ Sq<x1,Ö,xn>}

Exm: Secrecy in the Yahalom protocol
Initiatorí(Anne,nA)Sİ |||İ Responder(Bob,nB)Sİ |||İ Server(Jeeves)Sİ |||İ Intruderí(f)Sí
S = [fake,take/receive,send]
Sí = [take.x.y/learn][fake.x.y, leak/say]

Exm: Secrecy in the Yahalom protocol
İThe property to be verified:
Signal.Claim_Secret.a.b.m e Traces(System)
a
not(leak.m e Traces(System) )
As usual, this property can be verified automatically by checking the traces

Authentication
The CSP approach is based on inserting signals:
Running.a.bİ (in aís protocol)
Agent a is executing a protocol run apparently with b
Commit.b.aİ (in bís protocol)
Agent b has completed a protocol run apparently with a
Authentication is achieved if Running.a.b always precedes Commit.b.a in the traces of the system
Weaker or stronger forms of authentication can be achieved by variations of the parameters of these signals and the constraints on them

Authentication in the Yahalom Pr.
The Yahalom Protocol aims at providing authentication of both parties : authentication of the initiator to the responder, and viceversa
We will analyze the two authentication properties separately
This requires two separateİ enhancements of the protocol

Yahalom: authentication of initiator
CSP description of the two parties - Enhanced
İİİ Initiatorí(a,na ) =
İİİ env?b: Agent
İİİİİİİİ g send.a.b.a.na
İİİİİİİİ g []İ (receive.J.a{b. kab.na.nb}ServerKey(a) .m
İİİİİİİİİİİİİİİİİ kab e Keyİİİİİİİİİ g signal.Running_Initiator.a.b.na.nb.kab
İİİİİİİİİİİİİİİ nb e Nonceİİİİİİİİİ g send.a.b.m.{nb}kab
İİİİİİİİİİİİİİİİİİ m e Tİİİİİİİİİİİİİİİ g Session(a,b,kab,na,nb) )
Responderí(b,nb ) =
İİİ []İ (receive.a.b.a.na g send.b.J.b .{a.na.nb}ServerKey(b)
İ kab e Keyİİİİİİİİİ g receive.a.b.{a. kab}ServerKey(b) .{nb}kab
nb e Nonceİ g signal. Commit_Responder.b.a.na.nb.kab
İİ m e Tİİİİİİİİİİİİİİ g Session(b,a,kab,na,nb) )

Yahalom: authentication of initiator

Yahalom: authentication of initiator
The property to be verified:
signal. Running_Initiator.a.b.na.nb.kab
precedes
signal.Commit_Responder.b.a.na.nb.kab
in all the Traces(System)
Again, this property can be verified automatically by checking the traces

Yahalom: authentication of responder
CSP description of the two parties - Enhanced
İİİ Initiatorí(a,na ) =
İİİ env?b: Agent
İİİİİİİİ g send.a.b.a.na
İİİİİİİİ g []İ (receive.J.a{b. kab.na.nb}ServerKey(a) .m
İİİİİİİİİİİİİİİİİ kab e Keyİİİİİİİ g send.a.b.m.{nb}kab
İİİİİİİİİİİİİİİ nb e Nonceİİİİİİİ gİİİ signal.Commit_Initiator.a.b.na.nb.kab
İİİİİİİİİİİİİİİİİİ m e Tİİİİİİİİİİİİİ g Session(a,b,kab,na,nb) )
Responderí(b,nb ) =
İİİ []İ (receive.a.b.a.na g send.b.J.b .{a.na.nb}ServerKey(b)
İ kab e Keyİİİİİİİİİ g signal. Running_Responder.b.a.na.nb
nb e Nonceİ g receive.a.b.{a. kab}ServerKey(b) .{nb}kab
İİİ m e Tİİİİİİİİİİİİİİ g Session(b,a,kab,na,nb) )

Yahalom: authentication of responder

Yahalom: authentication of responder
The property to be verified:
signal. Running_Responder.b.a.na.nb
precedes
signal.Commit_Initiator.a.b.na.nb.kab
in all the Traces(System)
Again, this property can be verified automatically by checking the traces

Non-repudiation
Goal: provide the parties of an interaction with evidence so that later they cannot deny having participated
Example: The Zhou-Gollmann protocol
Message 1İİ a -> b :İ {fNRO .b.l.c}Ska
Message 2İİ b -> a :İ {fNRR .a.l.c}Skb
Message 3İİ a -> j :İ {fSUB .b.l.k}Ska
Message 4İİ b <-> j :İ {fCON .a.b.l.k}Skj
Message 5İİ a <-> j :İ {fCON .a.b.l.k}Skj
c = k(m) where m is the message to be transmitted
a and b are the parties, j is the trusted server
fNRO , fNRR, etc. are flags identifying the steps. l is a nonce
Ska, Skb, etc. are signature keys known only to their owners
a can prove that b has got the message by presenting
{fNRR .a.l.c}Skbİ andİ İ{fCON .a.b.l.k}Skj

The Zhou-Gollmann protocol
Non-Repudiation of Recipient: a can prove that b has got the message by presenting
{fNRR .a.l.c}Skbİ andİ İ{fCON .a.b.l.k}Skj
Non-Repudiation of Origin: b can prove that a has sent the message by presenting
{fNRO .b.l.c}Skaİ andİ İ{fCON .a.b.l.k}Skj

CSP analysis of Non-Repudiation
Specification of the Zhou-Gollmann protocol in CSP
Agenta(S) =
İİ [] b e Agent, m e Sİ send.a.b.m -> Agenti(S)
İİ []İ receive.a.b?m -> Agenta(close(S U {m}))
İİ [] ftp.a.Jeeves?m -> Agenta(close(S U {m}))
İİ [] m e S evidence.a.m -> Agenti(S)
Close(S) represent the capability of inferring new information
Server(S) =
İİ receive.a.Jeeves?. {fSUB .b.l.k}Ska
İİİİİİİİİİİİİİİİİ -> Server(S U {fCON .a.b.l.k}Skj)
İİİ [] b e Agent, m e S ftp.a.Jeeves.m -> Server(S)

The Zhou-Gollmann protocol in CSP

Analysis of the Zhou-Gollmann protocol
Non-Repudiation of Recipient:
evidence.a.{fNRR .a.l.c}Skbİ in Trİ a b sent (fNRR .a.l.c)
evidence.a.{fCON.a.b.l.k}Skj in Trİ a receive.a.j. {fCON .a.b.l.k}Skj in Tr
Non-Repudiation of Origin:
evidence.b.{fNRO .b.l.c}Ska in Trİ a a sent (fNRO.b.l.c)
evidence.b.{fCON.a.b.l.k}Skj in Trİ a a sent (fSUB.b.l.k)
Again, these properties on traces can be proven automatically