Research Article

A Lightweight Privacy Protection User Authentication and Key Agreement Scheme Tailored for the Internet of Things Environment: LightPriAuth

Algorithm 3

(gateway )
let processGateway(xgwn: bitstring) =
 ( Message 2)
 in(cug,(A:G, ki:bitstring, M1:bitstring, T1:bitstring));
 let ei’ = hash(con(ki,xgwn)) in
 let (tem:bitstring) = xor(M1, ei’) in
 let (idi’:bitstring, tem1: bitstring) = Split(tem) in
 let di’= hash(con(idi’,xgwn)) in
 let (sidj’: bitstring, m2’: bitstring) = Split(tem1) in
 if (m2’) = hash(con(g2h(A),con(sidj’,hash(con(idi’,xgwn))))) then
  event acceptUserbyGateway(di’);
 new T2: bitstring;
 let xj’=hash(con(sidj’,xgwn)) in
 let m3 = hash(con(g2h(A),con(sidj’,con(xj’,T2)))) in
 out(csg,(A,m3,T2));
 ( Message 4)
 in(csg,(B:G, m4:bitstring, m5:bitstring));
 if (m5) = hash(con(xj’,con(m3,con(m4,g2h(B))))) then
 new k3:bitstring;
 let einew = hash(con(k3,xgwn)) in
 let m7 = hash(con(einew,con(k3,con(di’,con(T1,m4))))) in
  event acceptSensorbyGateway(xj’);
  event termGatewaywithSensor(xj’);
 let m6 = xor(con(einew,con(k3,m7)),ei’) in
 out(cug,(B,m6));
  event termGatewaywithUser(di’).
( User registration )
let processUserRegistration(xgwn: bitstring) =
   in(scUser, (idi: bitstring, mpi:bitstring));
 let di = hash(con(idi,xgwn)) in
 let fi = xor(di,mpi) in
 new ki:bitstring;
  let ei= hash(con(idi,xgwn)) in
  let li= xor(ei,mpi) in
 out(scUser,(fi,li,ki)).
( Sensor registration )
let processSensorRegistration(xgwn: bitstring) =
 in(scSensor, sidj:bitstring);
 let xj = hash(con(sidj,xgwn)) in
 out(scSensor,xj).