role sensor (Ui, Sj, GW: agent, | Kxj: symmetric_key, | H: hash_func, | P: text, | SND_SG,RCV_SG: channel(dy)) | played_by Sj | def= | local State: nat, | T2,K2,A,B,SK,M3,M4,M5,SIDj :text | const shared_key:protocol_id | init State:= 4 | transition | 1. State = 4 ⋀ RCV_SG(A’ | .H(A’.SIDj’.Kxj.T2’) | .T2’ | )=|> | State’:= 3 ⋀ K2’:= new() | ⋀ B:= exp(P,K2’) | ⋀ SK’:= H(exp(A’,K2)) | ⋀ M4’:= H(B.SK.A’) | ⋀ M5’:= H(Kxj.H(A’.SIDj’.Kxj.T2’).M4’.B) | ⋀ SND_SG(B.M4’.M5’) | ⋀ witness(Ui,Sj,shared_key,SK’) | ⋀ request(Ui,Sj,shared_key,SK’) | end role |
|