PRODUCTS
wolfPUF SRAM-Based Device-Unique Key Generation
wolfPUF is a software-based SRAM Physical Unclonable Function (PUF) implementation in wolfCrypt. It generates stable, device-unique 256-bit cryptographic keys from the power-on state of SRAM. The keys are reconstructed with error correction when required instead of being stored in flash or eFuses. Only non-secret data needed for reconstruction remains on the device. wolfPUF requires no secure element, TPM, or vendor-specific PUF hardware.
Almost every connected device holds a secret key to sign firmware, authenticate a TLS session, or encrypt stored data. Keeping that key out of an attacker’s hands is the hard part, and it is not just a small-device problem. Store it in on-chip or external flash and anyone with JTAG, an exposed debug port, or access to the flash bus can read it out. Burn it into eFuses, and it can still be recovered by decapping the die. A secure element or TPM solves this but adds cost, board space, and another supplier to qualify — and many designs, large and small, ship without one. Read the blog to learn more.
Contact us at facts@wolfssl.com to evaluate wolfPUF for your hardware or discuss integration requirements.
Get the latest open source GPLv3 version now!
View ChangeLog
Highlights
- Device-unique 256-bit cryptographic keys
- No secret keys stored in flash or eFuses
- No secure element, TPM, or dedicated PUF hardware
- Hardware-independent design using existing SRAM
- Stable reconstruction with configurable BCH error correction
- Multiple purpose-specific keys through HKDF-SHA256
Features
- One-time enrollment and per-boot key reconstruction
- Configurable BCH error-correction profiles
- HKDF-SHA256 key derivation with caller-defined labels
- SHA-256 device identity generation
- Independent keys for different applications from one SRAM fingerprint
- Public helper-data generation during enrollment
- Key reconstruction using stored helper data
- Optional compact helper-data format
- SRAM health testing before enrollment and reconstruction
- Rejection of invalid or degenerate SRAM readings
- Secure key and PUF context zeroization
- Designed for MCUs with reservable, uninitialized SRAM
- No vendor-specific PUF peripheral required
- Bare-metal example for Cortex-M targets
- Tested on the ST NUCLEO-H563ZI with STM32H5
- Coming soon: Xilinx Zynq-7000
- Synthetic SRAM mode for host development and CI testing
- Autotools, CMake, and user_settings.h configuration

