ISO Public Key Three-Pass Mutual Authentication Protocol
Purpose
Self-explanatory
Informal Specification
- B -> A: Rb,Text1
- A -> B: CertA, Ra, Rb, B, Text3, E(Ka-1:Ra,Rb,B,text2)
- B -> A: CertB, Rb, Ra, A, Text5, E(Kb-1:Rb,Ra,A,text4)
See Commonly Used Representations
MSR Specification
Click here to download
--- Author: rishav
--- Date: 16 September 2007
--- ISO Three-Pass Mutual Authentication Protocol
---
--- B -> A: Rb,Text1
--- A -> B: CertA, Ra, Rb, B, Text3, E(Ka-1:Ra,Rb,B,text2)
--- B -> A: CertB, Rb, Ra, A, Text5, E(Kb-1:Rb,Ra,A,text4)
(reset)
(
module ISOPublicThreePassMutual
export * .
key : type.
skey : type.
pvtk : princ -> type. pvtk A <: key.
randomNo: type. randomNo <: msg.
enc : pvtk -> msg -> msg.
text: type. text <: msg.
net : msg -> state.
initiator:
forall B : princ.
{
exists LB : randomNo -> state.
ISO3initRule1:
forall text1 : text.
empty
=> exists Rb : randomNo.
net(Rb & text1), LB Rb.
ISO3initRule3:
forall A : princ.
forall Rb : randomNo.
forall Ra : randomNo.
forall Ka-1 : pvtk.
forall text3 : text.
forall text2 : text.
forall text4 : text.
forall text5 : text.
net(CertA & Ra & Rb & B & text3 & enc Ka-1 (Rb & Ra & B & text2)), LB Rb
=> net(CertB & Rb & Ra & A & text5 & enc Kb-1 (Rb & Ra & A & text4)).
}
reciever:
forall A : princ.
{
exists LA : princ -> randomNo -> randomNo -> state.
ISO3initRule2:
forall B : princ.
forall Rb : randomNo.
forall Ka-1 : pvtk.
forall text3 : text.
forall text2 : text.
forall text1 : text.
net(Rb & text1)
=>exists Ra : randomNo.
net(CertA & Ra & Rb & B & text3 & enc Ka-1 (Rb & Ra & B & text2)), LA B Ra Rb.
ISO3initRule4:
forall B : princ.
forall Rb : randomNo.
forall Ra : randomNo.
forall text4 : text.
forall text5 : text.
net(CertB & Rb & Ra & A & text5 & enc Kb-1 (Rb & Ra & A & text4)), LA B Ra Rb
=> empty.
}
)