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 |
|
|
|
|