# Lowe's modified version of Yahalom # # Modelled after the description in the SPORE library # http://www.lsv.ens-cachan.fr/spore/yahalomLowe.html # # usertype SessionKey; protocol yahalom-Lowe(I,R,S) { role I { fresh Ni: Nonce; var Nr: Nonce; var Kir: SessionKey; send_1(I,R, I,Ni); recv_3(S,I, {R,Kir,Ni,Nr}k(I,S) ); send_5(I,R, {I, R, S, Nr}Kir ); claim_I1(I, Secret,Kir); claim_I2(I, Nisynch); } role R { fresh Nr: Nonce; var Ni: Nonce; var Kir: SessionKey; recv_1(I,R, I,Ni); send_2(R,S, {I,Ni,Nr}k(R,S) ); recv_4(S,R, {I,Kir}k(R,S)); recv_5(I,R, {I, R, S, Nr}Kir); claim_R1(R, Secret,Kir); claim_R2(R, Nisynch); } role S { fresh Kir: SessionKey; var Ni,Nr: Nonce; recv_2(R,S, {I,Ni,Nr}k(R,S) ); send_3(S,I, {R,Kir,Ni,Nr}k(I,S)); send_4(S,R, {I,Kir}k(R,S)); } }