Encrypted Key Exchange
Purpose
P is the password used as the symmetric key. Ka is randomly generated public key. R is randomly generated session key.
Informal Specification
- A -> B: E(P : Ka)
- B -> A: E(P : E(Ka : R))
- A -> B: E(R : Na)
- B -> A: E(R : Na, Nb)
- A -> B: E(R : Nb)
See Commonly Used Representations
MSR Specification
Click here to download
--- Author: rishav
--- Date: 14 October 2007
--- Encrypted Key Exchange
--- A -> B: E(P : Ka)
--- B -> A: E(P : E(Ka : R))
--- A -> B: E(R : Na)
--- B -> A: E(R : Na, Nb)
--- A -> B: E(R : Nb)
(reset)
(
module EKE
export * .
key : type.
stk : type. stk <: msg. stk <: key.
ltk : princ -> type. ltk A <: msg. ltk A <: key.
nonce : type. nonce <: msg.
enc : key -> msg -> msg.
net : msg -> state.
initiator:
forall A : princ.
{
exists LA1 : stk -> {A : princ} ltk A -> state.
exists LA2 : nonce -> stk -> state.
EKERule1:
forall P : stk.
empty
=> exists Ka : ltk A.
net(enc P (Ka)), LA1 P A Ka.
EKERule3:
forall R : stk.
forall Ka : ltk A.
forall P : stk.
net(enc P (enc Ka R)), LA1 P A Ka
=> exists Na : nonce.
net(enc R Na), LA2 NA R.
EKERule5:
forall Na : nonce.
forall Nb : nonce.
forall R : stk.
net(enc R (Na & Nb)), LA2 NA R
=> net(enc R Nb).
}
reciever:
forall B : princ.
{
exists LB1 : stk -> state.
exists LB2 : nonce -> stk -> state.
EKERule2:
forall Ka : ltk A.
forall P : stk.
net(enc P (Ka))
=> exists R : stk.
net(enc P (enc Ka R)), LB1 R.
EKERule4:
forall Na : nonce.
forall R : stk.
net(enc R Na), LB1 R
=> exists Nb : nonce.
net(enc R (Na & Nb)), LB2 Nb R.
EKERule6:
forall Nb : nonce.
forall R : stk.
net(enc R Nb), LB2 Nb R
=> empty.
}
)