role user (Ui, Sj, GW : agent, | Kdi: symmetric_key, | Kug: symmetric_key, | H: hash_func, | P: text, | SND_US,RCV_US: channel (dy)) | played_by Ui | def= | local State : nat, | T1,K1,Na,Nb,SIDj,IDi,SK : text | const user_sensor_sk,sc_user_id:protocol_id | initState 0 | transition | (1) State = 0RCV_US(start)=> | State 2 T1 new() | K1 new() | Na exp(P,K1) | SND_US(Na | .xor((IDi.SIDj),Kug) | .H(Na.xor((IDi.SIDj),Kug).Kdi.T1) | .T1) | secret(IDi,sc_user_id,) | secret(IDi,sc_sensor_id,) | (2) State = 2 RCV_US(Nb | .H(Nb.Kdi.H(Na.xor((IDi.SIDj),Kug).Kdi.T1).Na.T1))=> | State 4 SK≔ H(exp(Nb,K1)) | witness(Ui,Sj,user_sensor_sk,SK) | request(Ui,Sj,user_sensor_sk,SK) | end role |
|