In the previous blog, we went over the various concepts related to the PUF and described how we can setup the example given in the application note AN12324. In this blog, we will demonstrate how to generate Unique keys or IDs using PUF technology.

You will need an LPC55x69 based development board along with the latest version of MCUXpresso IDE to follow this tutorial. 

Enrollment Process:

The first step is to download and install the elftosb-gui tool in your PC. This tool will enable us to do an enrollment process. Open the GUI interface for elftosb tool and follow the steps given below.

1. Select your target device from the drop down menu. In this case, we select the LPC55S1x.

2. Next, we will do the enrollment process. Connect the target device via USB to your PC and follow the below procedure to start the enrollment process.

  • Press and hold the PIO0_5 button for 1 sec then press the RESET button again for 1 sec,
  • release the RESET button
  • release the PIO0_5 button

The device is now ready for the enrollment process.

3. Check the Enroll box and the Export to nonvolatile device memory with memory ID: 648712. After this click the Process button.

The enrollment process is now complete and Activation Code(AC) is stored on the target device.

Generating Unique IDs:

After enrollment process, we can proceed with the following steps to generate unique IDs using PUF.

  • Clone the asvin-tutorials GitHub repository.
  • Open the folder in the MCUXpresso IDE
  • Navigate to source -> main.c
  • Debug and flash the code on to the OKDO board as shown in the earlier blog post

After the code is run you can see the activation code and the corresponding SHA-256 key generated in the console window. The activation code is 1192 bytes long, we print the first 32 bytes of it for readability.

This generated key can be used in your applications in various ways. We at asvin are using the generated ID as a unique device ID while making requests to the asvin BeeHive IoT update platform.