Skip to main content

Nurturing a Root of Trust: A Step-by-Step Guide to Safeguarding Device's Unique Identity with Arbiter PUF and Ring Oscillator PUF

· 5 min read
Abid Arcot

Background: Understanding Physical Unclonable Functions (PUFs)

What are PUFs?

Physical Unclonable Functions (PUFs) are hardware-based security primitives that leverage the inherent manufacturing variations present in semiconductor devices. These variations, often microscopic and uncontrollable during fabrication, result in unique physical fingerprints for each device. PUFs exploit these variations to generate responses that are practically impossible to replicate, providing a reliable means of device authentication.

Importance in Hardware Security

PUFs play a crucial role in enhancing hardware security. Unlike traditional cryptographic methods that rely on stored secret keys, PUFs derive their security from the physical characteristics of the device. This makes PUFs resistant to various attacks, including invasive attacks attempting to clone or tamper with the device.

Applications of PUFs

  • Device Authentication: PUFs can be used to authenticate electronic devices by generating unique identifiers based on their physical characteristics.
  • Secure Key Generation: PUFs serve as a source of entropy for generating cryptographic keys, ensuring a high level of randomness and security.
  • Anti-Counterfeiting: PUFs help combat counterfeiting by providing a reliable way to verify the authenticity of electronic components.

In the subsequent sections, we will delve into the implementation details of Arbiter PUF and Ring Oscillator (RO) PUF, highlighting their design principles, testing methodologies, and achieved results.

Introduction

In the realm of hardware security and trust, the implementation of Physical Unclonable Functions (PUFs) stands as a formidable solution. This blog explores the design and implementation of two distinct PUF variants: Arbiter PUF and Ring Oscillator (RO) PUF. The source code and project details can be found on GitHub.

Arbiter PUF: Harnessing Delay Differences

Design Overview

The Arbiter PUF relies on delay differences in multiplexers to generate unique responses based on challenge bits. Leveraging Verilog and ModelSim, we crafted a robust PUF architecture capable of handling a 4-bit challenge with 32-bit responses.

Implementation Details

To simulate the Arbiter PUF, we utilized the provided mux module with varying propagation delays. The 4-bit delay values for each multiplexer were parameterized using the DELAY parameter. The resulting PUF demonstrated an impressive single-chip Hamming distance of 49.10%, affirming its high-quality output.

Sub-Module Hierarchy and Design Decisions

Our design incorporated additional modules for a single response bit and a single round of the Arbiter PUF. The sub-module hierarchy was carefully crafted for modularity and scalability. The report details the design decisions made during the implementation.

components

single-response-puf

arbiter-puf

Verification and Testing

Ensuring the reliability of our PUF, we developed a comprehensive test bench for every module. The ModelSim GUI proved instrumental in observing signal waveforms and validating the functionality of the Arbiter PUF. The following table represents challenge-response pairs generated from random dealy parameter bits.

ChallengeResponse
000011010110000010111010110011001011
000111011110001010010111110111011011
001001111111101000000101101101010010
001101110111010001011110101001010010
010000110101001001000101001101010000
010110110101000101001101001101010100
011011110100000001111011010101010001
011111110000000001000011110101010001
100000110001100101000101001100110100
100110100101000101111101001110110100
101010000000000111111011010110110101
101111011000000101110011010110110101
110011001100010010111010110010101011
110111011000100010110111110110101011
111000011111111110010101101110110010
111100000111010110011110101010100110

The resulting PUF demonstrated an impressive single-chip Hamming distance of 49.10%, affirming its high-quality output.

Ring Oscillator PUF: Unleashing FPGA Potential

RO PUF Architecture

Shifting focus to the RO PUF, our implementation targeted a Cyclone V GX FPGA. This variant employed multiple Ring Oscillators, each with unique frequencies due to fabrication variations. Challenge-Response Pairs (CRPs) were generated by racing counters using different RO outputs as clocks. We implemented RO PUF capable of producing 8-bit Challenge - 4-bit Response pairs. For a given 8-bit challenge - 1-bit Response PUF as shown below where N=16, 4 MSB from 8-bit challenge is used to select the ring oscillator for first MUX and the remaining 4 LSB for second MUX.

ro-puf

2*log2(N)-bit Challenge - 1-bit Response RO PUF

Synthesis and FPGA Integration

We utilized Quartus Prime to synthesize the Verilog design into an FPGA bit-stream. The Chip Planner tool facilitated the careful placement of RO modules within a single LAB Cell, minimizing propagation delays and ensuring optimal performance.

Results and Quality Assessment

The RO PUF exhibited a single-chip Hamming distance of 41.30% for 8-bit Challenge - 4-bit Response pairs, showcasing its robustness, while the utilizing 192 ALMS. The following table represents challenge-response pairs generated from FPGA.

ChallengeFPGA Response
000000001111
100010010101
011100111010
000011010011
111001010111
001100010101
011001101111
110001100111
110010001110
100001111010
000000111010
111101110101
100000010101
101110111111
000000010010
101001100001
111010111111
000101100011
100111111000
010000000101
001111000101
001011111010
011111001010
010101011111

Conclusion

This technical blog provides a comprehensive insight into the implementation of Arbiter PUF and RO PUF. The GitHub repository contains the complete source code and project files for further exploration. The achieved Hamming distances underscore the effectiveness of these PUF variants in generating unique and secure responses.

For detailed code snippets, project files, and a deeper dive into the implementation, visit our GitHub repository.