Skip to main content
. 2024 Dec 13;24(24):7979. doi: 10.3390/s24247979
Algorithm 10 proc_UE
   Played by: UE
   Input: SUPI, sqn, pkHN, K
   
   [Step 1.1]
      new skUE;
      let (c0, c1, c2) = calc_ue_suci(skUE, SUPI, pkHN) in
      event beginUE_HN_SUPI(SUPI, c0, pkHN);
      out(usch, (c0, c1, c2));
   [Step 2.3]
      in(usch, (RAND, CONC, AMF, MAC1));
      let DHK = DHkey(sk(c0), RAND) in
      let (MAC2, SQN, AK) = calc_ue_mac(RAND, DHK, K, CONC, AMF) in
      if MAC1 <> MAC2 true then MACFailure;
      if SQN <> calc_sqn(sqn, c0, RAND) true then SYNCFailure;
      event endUE_HN_MAC(SUPI, K, RAND, SQN);
      event beginUE_RES(SUPI, K, RAND, SQN);
      let (RES’, HXRES’, KAUSF, KSEAF) = calc_hn_key(RAND, DHK, K, SQN, AK) in
      out(usch, RES’);