role user (Ui, Sj, GW: agent, | Kdi,Kei: symmetric_key, | H: hash_func | P: text, | SND_US,RCV_US: channel (dy)) | played_by Ui | def= | local State: nat, | T1,K1,A,M1,M2,Ki,B,K3,K2,IDi,SIDj,M4,M6,M7,SK,Keinew: text | const shared_key,sc_user_id,sc_sensor_id:protocol_id | init State:= 0 | transition | 1. State = 0 RCV_US(start)=|> | State’: = 2 ⋀ T1’:= new() | ⋀ K1’:= new() | ⋀ A’:= exp(P,K1’) | ⋀ M2’:= H(A’.IDi.SIDj.Kdi.T1’) | ⋀ M1’:= xor(Kei,(IDi.SIDj. H(A’.IDi.SIDj.Kdi.T1’))) | ⋀ SND_UG(A’.M1’.Ki.T1’) | 2. State = 7 ⋀ RCV_UG(B | .xor((Keinew’.K3’.H(Kei.K3’.Kdi.T1.M4’)),Kei) | )=|> | State’:= 8 ⋀ Kei’:= Keinew’ | ⋀ Ki’:= K3’ | ⋀ SK’:= H(exp(B,K1)) | ⋀ witness(Ui,Sj,user_sensor_sk,SK’) | ⋀ request(Ui,Sj,user_sensor_sk,SK’) | end role |
|