260 likes | 393 Vues
Some Properties (Lemmata). In set notation: parts(parts(H)) = parts(H) analz(analz(H)) = analz(H) synt(synt(H)) = synt(H) parts(analz(H)) = analz(parts(H)) parts(synt(H)) = parts(H) synt(H) analz(synt(H)) = analz(H) synt(H). Example: Needham-Schroeder Symmetric Key.
E N D
Some Properties (Lemmata) • In set notation: • parts(parts(H)) = parts(H) • analz(analz(H)) = analz(H) • synt(synt(H)) = synt(H) • parts(analz(H)) = analz(parts(H)) • parts(synt(H)) = parts(H) synt(H) • analz(synt(H)) = analz(H) synt(H)
Example: Needham-Schroeder Symmetric Key • Needham Schroeder Symmetric Key Protocol: • 1: A S : A, B, NA • 2: S A : {NA , B, KAB, {KAB, A} KBS }KAS • 3: A B : { KAB, A} KBS • 4: B A : {NB} KAB5: A B : {NB ,NB} KAB • Modification in the last line (step 5) : {NB ,NB} instead of {NB + 1}
Step3: Needham-Schroeder Theory • Needham-Schroeder Traces rules for protocol steps attacker
Line 1 Informally 1: A S : A, B, NA • evs is an admissible trace, e.g. evs nsch-sym, • A B • NA is a fresh nonce, e.g. Nonce(NA) used(evs), • A and B are not servers (friends or spy) • then: Says(A, S, [Agent(A), Agent(B), Nonce(NA)]) # evs nsch-sym
Step 3: Axiomatization of Line 1 has to be defined appropriately
Line 2 Informally 2: S A : {NA , B, KAB, {KAB, A} KBS }KAS • evs is an admissible trace, • KAB is a fresh session key, • Gets(S, [Agent(A), Agent(B), Nonce(NA)] ) evs, • then: Says(S, A, crypt( KAS, [Nonce(NA), B, KAB , crypt(KBS, [KAB, Agent(A)]) ] ) ) # evs 2 nsch-sym
Line 3 Informally 3: A B : { KAB, A} KBS • evs is an admissible trace, • Says(A, S, [Agent(A), Agent(B), Nonce(NA)]) 2 evs • Gets(A, crypt( KAS, [Nonce(NA), B, KAB , F ])) evs, • then: Says(A, B, F) # evs nsch-sym • F stands for the part of the message that cannot be decrypted by A.
Line 4 Informally 4: B A : {NB} KAB • evs is an admissible trace, • NB is a fresh nonce, • Gets(B, crypt(KBS, [KAB, Agent(A)]) ) evs, • then: Says(B, A, crypt(KAB, Nonce(NB)))# evs nsch-sym
Line 5 Informally 5: A B : {NB ,NB} KAB • evs is an admissible trace, • Says(A, S, [Agent(A), Agent(B), Nonce(NA)] 2 evs • Says(A, B, F) 2 evs, • Gets(A, crypt( KAS, [Nonce(NA), B, KAB, F ]) ) evs, • Gets(A, crypt(KAB, Nonce(NB))) 2 evs • then: Says(A, B, crypt(KAB, [Nonce(NB), Nonce(NB)]) # evs nsch-sym
Step3 : Loosing Keys • "Oops" – rule: Participants might loose keys. • Keys they got during a protocol run. • Allows to analyse what happens in these cases. • Does everything break down? • In the example: Loss of KAB after the protocol run.
Step3: Modeling of Attacks • "Fake" – rule: (spy can send messages at anytime) • if evs nsch-sym, • X synth(analz(spies(evs))), • then: Says(Spy, B, X) # evs nsch-sym • spies(evs) : The set of messages the spy sees (knows).
Step 3: Oops Rule • Binding (the loss of key) to the current run by the two nonces!
Step3: Generic Protocol Events (Attacker) What does this mean? What the spy sees (knows)
Step3: Knowledge of Participants • What (arbitrary) agents learn during execution of a protocol • main interest: knowledge of the spy The spy shares knowledge with bad agents.
Step4: Properties of Traces: Confidentiality Informally • Confidentiality: • if evs nsch-sym,Says(S, A, crypt( KAS, [Nonce(NA), B, KAB , crypt(KBS, [KAB, Agent(A)]) ] ) ) 2 evs, • A and B are not bad agents (Bad agents share theirknowledge with the spy.), • : Notes(spy, [Nonce(NA), Nonce(NB), KAB) 2 evs for some NB (The key was not lost by an oops event after the says event from above.) • then: : Key(KAB) 2 analz(spies(evs))
Step4: Properties of Traces • Authentification • if evs nsch-sym, • Gets(A, crypt( KAS, [Nonce(NA), B, KAB , F ])) 2 evs, • Says(A,B,F) 2 evs, • Gets(A, crypt(KAB(Nonce(NB))) 2 evs, • : Notes(spy, Nonce(NA), Nonce(NB), Key(KAB)) 2 evs(No loss of keys) • A and B are not bad agents, • then Says(B, A, crypt(KAB, Nonce(NB))) 2 evs • From Gets to Says