CryptoPUF is a lightweight, machine-learning-resilient Physically Unclonable Function (PUF) implementation designed for secure, efficient authentication/encryption. By combining a weak PUF (DD-PUF) with a cryptographic encryption core (TinyJAMBU), CryptoPUF provides improved resistance against machine learning attacks and is optimized for low-power IoT and edge devices.
- Lightweight Design: Combines a weak PUF (e.g. DD-PUF) with a crypto core (e.g. TinyJAMBU) to offer security in hardware-constrained environments.
- Machine Learning Resilience: Integrates a cryptographic core to reduce vulnerability to ML-based attacks.
- Configurable Challenge-Response Pairs (CRPs): Supports customizable CRP generation and testing.
- Extensibility: Allows users to support new cryptographic algorithms by adding a subfolder under crypto with the defined encryption function. (TinyJAMBU can be used as a template example).
- Python 3.7+
- Required packages:
numpy
,scikit-learn
,matplotlib
-
Clone the repository:
git clone https://github.com/hplp/CryptoPUF cd CryptoPUF
-
Run the example Jupyter notebooks
You can explore the included notebooks to see how to model a CryptoPUF and evaluate its resilience to various ML attacks.
-
Extensible Cryptographic Core
The CryptoPUF implementation is designed to allow easy integration of different cryptographic cores. The crypto_functions
dictionary in crypto/cryptopuf.py maps each crypto core name to its corresponding encryption function, enabling you to add and configure new cryptographic algorithms simply by updating this dictionary. By default, it supports TinyJAMBU, but other cryptographic functions can be added as needed.
- Paper Results The code to reproduce results for the CryptoPUF paper is available at CryptoPUF Results Repository.