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 |
|
messages, keys, etc. have not become
known |
|
Authentication |
|
Guarantees about the parties involved
in the protocol |
|
Non-repudiation |
|
Evidence of the involvement of the
other party |
|
Anonymity |
|
Protecting the identity of agents wrt
particular events |
|
|
Anonymity
|
|
|
We will model events as consisting of
two components: the event itself, x, and the identity of the agent performing
the event, a |
|
a.x |
|
AnUsers: the users who want to remain
secret |
|
İGiven x, defineİİİİİ A =
{ a.x | a e AnUsers } |
|
|
|
Definition: A protocol described as a
CSP system P provides anonymity if an arbitrary permutation of the events in A,
applied to all the traces of P, does not alter the set of all possible traces
of P |
Anonymity
|
|
|
|
|
|
Traces of a process: the sequences of
visible actions in all possible runs |
|
|
|
Example:İİİ a -> b -> Stopİ
|||İ c -> d -> Stop |
|
|
|
Traces:İİİ a.b.c.dİİİ a.c.b.dİİ c.a.b.dİİ
a.c.d.bİİ c.a.d.bİİ c.d.a.b |
|
|
|
|
|
Example:İİİ a -> b -> c -> Stopİ
||{b} d -> b -> e -> Stop |
|
|
|
Traces:İİİİİ a.d.b.c.dİİİ d.a.b.c.dİİİ a.d.b.d.cİİİ d.a.b.d.c |
|
|
|
|
Anonymity
|
|
|
Letİİ
AnUsers = {p1,p2} |
|
|
|
Letİ
A = {p1.m, p2.m} |
|
|
|
Example 1İİİİ p1.m -> p2.m -> Stop |
|
Example 2İİİİ p1.m -> Stopİ
|||İ p2.m -> Stop |
|
Example 3İİİİ p1.m -> Stopİİ
+İİ p2.m -> Stop |
|
|
|
Question: for each system, say whether
or not it provides anonymity wrt A |
|
|
Anonymity
|
|
|
A more involved example: |
|
|
|
P =İ
p1.m -> a -> Stopİ
[]İ p2.m -> a
-> Stop |
|
İİİİİ
||{p1.m , p2.m
} |
|
İİİİİ
p1.m -> b -> Stopİ
[]İ p2.m -> c
-> Stop |
|
|
|
Question: Does P provides anonymity wrt |
|
A = {p1.m, p2.m} |
|
|
|
|
Anonymity
|
|
|
Answer: No |
|
İİ
P has tracesİ (p1.m).b.a
,İİ (p2.m).c.aİ ,İ
Ö |
|
İİİİİİİİİİİ but notİ (p2.m).b.a
,İİ (p1.m).c.a ,İ Ö |
|
İİ
The permutationİ { p1 ->
p2 , p2 -> p1 } changes the traces. |
|
|
|
However, if we assume that the observer
has no visibility of the actions b and c, then the system does provide
anonymity wrtİİİ A = {p1.m,
p2.m} |
|
|
|
One elegant way to formalize the
concept of visibility in CSP is to use the the hiding operator: |
|
P\{b, c} provides anonymity wrt A |
|
|
|
Note: the above example shows that
hiding A would not be enough |
Anonymity
|
|
|
|
In general, given P, consider the sets: |
|
A = { a.x | a e AnUsers }İ : the actions that we want to know only
partially (we want to know x but not a) |
|
B :İ
the actions that we want to observe |
|
C = Actions ñ (B U A) İ: The actions we want to hide |
|
|
|
|
Example: The dining
cryptographers
The dining cryptographers
|
|
|
Three cryptographers share a meal |
|
The meal is paid either by the
organization (master) or by one of them. The decision on who pays is taken by
the master |
|
Each of them is informed by the master
whether or not he is paying |
|
|
|
GOAL: The cryptographers would like to
know whether the organization is paying or not, but without knowing the
identity of the cryptographer who is paying (if any). |
|
|
The dining cryptographers
|
|
|
|
Solution: Each cryptographer tosses a
coin. Each coin is in between two cryptographers. |
|
The result of each coin-tossing is
visible to the adjacent cryptographers, and only to them. |
|
Each cryptographer examines the two
adjacent coins |
|
If he is not paying, he announces ìagreeî
if the results are the same, and ìdisagreeî otherwise. |
|
If he is paying, he says the opposite |
|
|
|
Claim: if the number of ìdisagreeî is
even, then the master is paying. Otherwise, one of them is paying. In the
latter case, the non paying cryptographers will not be able to deduce whom
exactly is paying |
The dining cryptographers
|
|
|
Specification in CSP: Master and Coins |
|
|
|
Master = |
|
İ
Sn pays.n -> notpays.(n+1) -> notpays (n+2) ->
Stop |
|
İİ
+ notpays.0 -> notpays.1 -> notpays.2 -> Stop |
|
|
|
Coin(n) = Heads(n) + Tails(n) |
|
|
|
Heads(n) = look.n.n.hd ->Stopİ |||İ
look.(n-1).n.hd ->Coin(n) |
|
|
|
Tails(n) = look.n.n.tl -> Stopİ |||İ
look.(n-1).n.tl ->Coin(n) |
|
|
|
Note: the arithmetic operations are
modulo 3 |
|
|
The dining cryptographers
|
|
|
Specification in CSP:İ Cryptographers |
|
|
|
Crypt(n) = notpays(n) -> Check(n) |
|
İİİİİİİİİİİİİİİİ [] pays(n) -> Checkí(n) |
|
|
|
Check(n) =İ look.n.n?x -> look.n.(n+1)?y -> |
|
İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ if (x=y) then out.n.agree ->
Stop |
|
İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ else out.n.disagree ->
Stop |
|
|
|
Checkí(n) =İ look.n.n?x -> look.n.(n+1)?y -> |
|
İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ if (x=y) then out.n.disagree ->
Stop |
|
İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ else out.n.agree
-> Stop |
|
|
|
|
The dining cryptographers
|
|
|
Specification in CSP:İ The whole system |
|
|
|
Crypts = Crypt(0)İ |||İ
Crypt(1)İ |||İ Crypt(2) |
|
|
|
Coinsİ
=İ Coin(0)İ |||İ
Coin(1)İ |||İ Coin(2) |
|
|
|
Mealİİ
=İ Master ||{pays,
notpays} ( Coins ||{look} Crypts ) |
|
|
|
|
The dining cryptographers
|
|
|
|
The anonymity property |
|
|
|
A = { pays.0, pays.1, pays.2 } |
|
B = { out } |
|
C = Actions ñ (B U A) = {look,notpays} |
|
|
|
Theorem:İ For every permutation r: A -> A, we have |
|
r(Meal\C) =T Meal\C |
|
|
|
=Tİ here represents trace equivalence. |
|
This theorem means that an external
observer cannot infer which cryptographer has paid. |
|
|
|
This theorem can be proved by using the
authomatic tool FDR. |
|
Of course, it can also be proved ìby
handî. Exercise |
The dining cryptographers
|
|
|
|
One can argue that previous result is
not strong enough: a cryptographer has more information than an external
observer. Let us then do the analysis for a cryptographer, say Crypt(0) |
|
|
|
A = { pays.1, pays.2 } |
|
B = { pays.0, notpays.0, look.0, out } |
|
C = Actions ñ (B U A) |
|
|
|
Theorem:İ For every permutation r: A -> A, we have |
|
r(Meal\C) =T Meal\C |
|
|
|
This means that if Crypt(1) or Crypt(2)
pay, then Crypt(0) canít infer which of them has paid. The same can be shown
for the other two. So Meal\C provides the desired anonymity property. |
|
|
The dining cryptographers
|
|
|
|
Example of a case in which the
anonymity property does not hold. |
|
Assume that Crypt(0) can access the
result of the third coin, namely has visibility of the result of the action look.2.2 |
|
|
|
A = { pays.1, pays.2 } |
|
B = { pays.0, notpays.0, look.0, out }
U { look.2.2 } |
|
C = Actions ñ (B U A) |
|
|
|
We have that for some permutation r: A
-> A, |
|
r(Meal\C)İİ =/=Tİ Meal\C |
|
|
|
pays.2İ
notpays.0İ look.00.headsİ look.0.1.headsİ look.2.2.headsİ
out.2.disagreeİ İYES |
|
pays.1İ
notpays.0İ look.00.headsİ look.0.1.headsİ look.2.2.headsİ
out.2.disagreeİ İNO |
|
|