CCITT X.509
Purpose
This is the classic description of three protocols, either message 1 or message 1 and 2 or all three.
Informal Specification
- A -> B : A, E(Ka-1: Ta, Na, B, Xa, E(Kb : Ya))
- B -> A : B, E(Kb-1: Tb, Nb, A, Na, Xb, E(Ka : Yb))
- A -> B : A, E(Ka-1 : Nb)
See Commonly Used Representations
  Xa,Xb,Ya,Yb - user data
MSR Specification
Click here to download
--- Author: rishav
--- Date: 13 October 2007
--- CCITT X.509
--- A -> B : A, E(Ka-1: Ta, Na, B, Xa, E(Kb : Ya))
--- B -> A : B, E(Kb-1: Tb, Nb, A, Na, Xb, E(Ka : Yb))
--- A -> B : A, E(Ka-1 : Nb)
(reset)
(
module CCITT
export * .
key : type.
ltk : princ -> type. ltk A <: key. ltk A <: msg.
ltks : princ -> type. ltks A <: key.
nonce : type. nonce <: msg.
enc : key -> msg -> msg.
net : msg -> state.
initiator:
forall A : princ.
{
exists LA : nonce -> {A : princ} ltks A -> state.
CCRule1:
forall B : princ.
forall Ka-1 : ltks A.
forall Kb : ltk B.
forall Ta : msg.
forall Xa : msg.
forall Ya : msg.
empty
=> exists Na : nonce.
net (A & enc Ka-1 (Ta & Na & B & Xa & enc Kb Ya)), LA Na A Ka-1.
CCRule3:
forall B : princ.
forall Nb : nonce.
forall Na : nonce.
forall Kb-1 : ltks B.
forall Ka-1 : ltks A.
forall Ka : ltk A.
forall Tb : msg.
forall Xb : msg.
forall Yb : msg.
net (B & enc Kb-1 (Tb & Nb & A & Na & Xb & enc Ka Yb)), LA Na A Ka-1
=> net(enc Ka-1 Nb).
}
receiver:
forall B : princ.
{
exists LB : nonce -> {A : princ} ltks A -> state.
CCRule2:
forall A : princ.
forall Na : nonce.
forall Ka-1 : ltks A.
forall Kb-1 : ltks B.
forall Kb : ltk B.
forall Ka : ltk A.
forall Ta : msg.
forall Xa : msg.
forall Ya : msg.
forall Tb : msg.
forall Xb : msg.
forall Yb : msg.
net (A & enc Ka-1 (Ta & Na & B & Xa & enc Kb Ya))
=> exists Nb : nonce.
net (B & enc Kb-1 (Tb & Nb & A & Na & Xb & enc Ka Yb)), LB Nb A Ka-1.
CCRule4:
forall A : princ.
forall Ka-1 : ltks A.
forall Nb : nonce.
net(enc Ka-1 Nb), LB Nb A Ka-1
=> empty.
}
)