Kehne Langendorfer Schoenwalder
Purpose
Another repeated authentication protocol
Informal Specification
- A -> B : Na, A
- B -> S : Na, Nb, A, B
- S -> B : E(Kbs: Kab, Nb, A), E(Kas : B, Kab, Na)
- B -> A : E(Kas : B, Kab, Na), E(Kbb : tb, A, Kab), Nc, E(Kab:Na))
- A -> B : E(Kab : Nc)
See Commonly Used Representations
MSR Specification
Click here to download
--- Author: rishav
--- Date: 9 September 2007
--- Kehne Langendorfer Schoenwalder
--- A -> B : Na, A
--- B -> S : Na, Nb, A, B
--- S -> B : E(Kbs: Kab, Nb, A), E(Kas : B, Kab, Na)
--- B -> A : E(Kas : B, Kab, Na), E(Kbb : tb, A, Kab), Nc, E(Kab:Na))
--- A -> B : E(Kab : Nc)
(reset)
(
module KLS
export * .
server : type. server <: princ.
key : type.
stk : princ -> princ -> type. stk A B <: msg. stk A B <: key.
ltk : princ -> princ -> type. ltk A B <: key.
ltks : princ -> type. ltks B <: key.
nonce : type. nonce <: msg.
time : type. time <: msg.
enc : key -> msg -> msg.
net : msg -> state.
initiator:
forall A : princ.
{
exists LA : nonce -> state.
KLSRule1:
empty
=> exists Na : nonce.
net(A & Na), LA Na.
---tb is not recognised
KLSRule5:
forall tb : time.
forall Kab : stk A B.
forall Kas : ltk A S.
forall Kbs : ltk B S.
forall Kbb : ltks B.
forall Na : nonce.
forall Nb : nonce.
net(enc Kas (B & Kab & Na) & Nc & enc Kbb (tb & A & Kab) & enc Kab Na), LA Na
=> net(enc Kab Nc).
}
receiver:
forall B : princ.
{
exists LB1 : nonce -> nonce -> state.
exists LB2 : nonce -> {A : princ} {B : princ} stk A B -> state.
KLSRule2:
forall A : princ.
forall Na : nonce.
net(A & Na)
=> exists Nb : nonce.
net(Nb & A & Na & B), LB1 Na Nb.
KLSRule4:
forall A : princ.
forall tb : time.
forall Kab : stk A B.
forall Kas : ltk A S.
forall Kbs : ltk B S.
forall Kbb : ltks B.
forall Na : nonce.
forall Nb : nonce.
net(enc Kbs (A & Kab & Nb) & enc Kas (B & Kab & Na)), LB1 Na Nb
=> exists Nc : nonce.
net(enc Kas (B & Kab & Na) & Nc & enc Kbb (tb & A & Kab) & enc Kab Na), LB2 Nc A B Kab.
KLSRule6:
forall Kab : stk A B.
forall Nc : nonce.
net(enc Kab Nc), LB2 Nc A B Kab
=> empty.
}
server:
forall S : server.
{
KLSRule3:
forall Kas : ltk A S.
forall Kbs : ltk B S.
forall Na : nonce.
forall Nb : nonce.
net(Nb & A & Na & B)
=> exists Kab : stk A B.
net(enc Kbs (A & Kab & Nb) & enc Kas (B & Kab & Na)).
}
)