Wide Mouthed Frog Protocol
Purpose
In this protocol A generates the session key. S checks if the timestamp is timely then it forwards the key to B with its own timestamp. B checks if the timestamp is later than any other message it has received form S.
Informal Specification
- A -> S : A, E(Kas: Ta, B, Kab)
- S -> B : E(Kbs: Ts, A, Kab)
See Commonly Used Representations
  Tx - Timestamp generated by X
MSR Specification
Click here to download
--- Author: rishav
--- Date: 16 June 2007
--- Wide Mouthed Frog Protocol
--- A -> S : A, E(Kas: Ta, B, Kab)
--- S -> B : E(Kbs: Ts, A, Kab)
(reset)
(
module WMFprotocol
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.
time : type. time <: msg.
enc : key -> msg -> msg.
net : msg -> state.
initiator:
forall A : princ.
{
WMFRule1:
--- forall B : princ.
--- forall Kas : ltk A S.
--- forall Ta : time.
empty =>
exists Kab : stk A B.
net(A & enc Kas (Ta & B & Kab)).
}
receiver:
forall B : princ.
{
WMFRule3:
--- forall Kab : stk A B.
forall Kbs : ltk B S.
forall Ts : time.
net(enc Kbs (Ts & A & Kab))
=> empty.
}
server:
forall S : server.
{
WMFRule2:
forall Kab : stk A B.
forall Kas : ltk A S.
forall Kbs : ltk B S.
forall Ts : time.
net(A & enc Kas (Ta & B & Kab))
=> net(enc Kbs (Ts & A & Kab)).
}
)
 
Findings
Reconstruction possible in most places. But in some places MSR does not allow reconstruction when it is possible.