Skip to main content
. 2020 Aug 5;20(16):4361. doi: 10.3390/s20164361
Algorithm 1 The mutual authentication between IoT device and server.
Input: An IoT device with identity IDd, and server that stores the IoT device’s information (SRAMk, CRP, and IDd);
Output: A mutual authentication between the IoT device and the server;
Begin
1: The IoT device generates a SRAM PUF cryptography key SRAMk, a timestamp TS1, and HMAC(SRAMk, TS1) message;
2: IoT device sends its IDd, TS1, and HMAC(SRAMk, TS1) message to the server;
3: If (the server finds IDd in its repository) then
4:   The server loads the SRAMk, and CRP (C, R) that belongs to the IDd from its repository to its memory;
5:   The server calculates HMAC(SRAMk, TS1) message;
6:   If (the calculated hash message in step 5 matches the hash message that was sent in step 2)
     then
7:     The server generates a timestamp TS2, calculates (CTS2), and generates HMAC(SRAMk, CTS2) message;
8:     The server sends C, TS2, and HMAC(SRAMk, CTS2) message to the IoT device;
9:   else
          Go to step 21;
     end if
10: else
       Go to step 21;
   end if
11: The IoT device calculates (CTS2), and generates HMAC(SRAMk, CTS2) message;
12: If (the calculated hash message in step 11 matches the hash message that was sent in step 8)
     then
       The authenticity of the server is verified;
13:   The IoT device passes the challenge C to its Arbiter PUF, and generates a response R;
14:   The IoT device generates a timestamp TS3, calculates (RTS3), and generates HMAC(SRAMk, RTS3) message;
15: The IoT device sends TS3, and HMAC(SRAMk, RTS3) message to the server;
16: else
          Go to step 21;
     end if
17: The server calculates (RTS3), and generates HMAC(SRAMk, RTS3) message;
18: If (the calculated hash message in step 17 matches the hash message that was sent in step 15)
     then
       The authenticity of the IoT device is verified;
19:   A mutual authentication between the IoT device and the server is established;
20: else
         Go to step 21;
      then
21: Stop (terminates the connection);
End