Research Article

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

Algorithm 1

( Role of the user)
let processUser(idi: bitstring, sidj: bitstring, pwi: bitstring) =
 ( registration phase of the user )
  new ri:bitstring;
 let mpi = hash(con(ri,con(idi,pwi))) in
 out(scUser,(idi,mpi));
 in(scUser,(fi:bitstring,li:bitstring,ki:bitstring));
 let (ei:bitstring) = xor(li, mpi) in
  let (di:bitstring) = xor(fi, mpi) in
  ( Real start of the role )
   ( Message 1)
   new k1:exponent;
   let A = exp(g,k1) in
   new T1:bitstring;
   let m2 = hash(con(g2 h(A),con(idi,(con(sidj,con(di,T1)))))) in
   let m1 = xor(ei,con(idi,con(sidj,m2))) in
   out(cug, (A, ki, m1, T1));
   ( Message 4 )
   in(cug, (B:G, M6:bitstring));
   let (tem:bitstring) = xor(M6, ei) in
   let (einew’:bitstring, tem1: bitstring) = Split(tem) in
   let (k3’:bitstring, m7’:bitstring) = Split(tem1) in
   let skiju = hash(g2h(exp (B, k1))) in
   let m4’ = hash(con(g2h(B),con(skiju,g2h(A)))) in
   if (m7’) = hash(con(einew’,con(k3’,con(di,con(T1,m4’))))) then
       event acceptUser(di);
    let li = xor(mpi,einew’) in
    let ki = k3’ in
       event termUser(di).