Running wolfEntropy on PetaLinux 2025.1 with ZCU102
wolfEntropy is a jitter based source of entropy provided by wolfSSL. Evaluating entropy sources is a critical step when building secure systems, especially on embedded platforms where hardware RNG behavior must be validated. This post walks through running wolfEntropy on PetaLinux 2025.1 targeting the ZCU102 Evaluation Kit platform and reviewing the results.
The outcome: the assessed minimum entropy is well above 1 bit per bit of output, indicating a strong entropy source suitable for cryptographic use.
Getting started with wolfSSL? Download the latest libraries and start exploring.
Test Environment
Platform: ZCU102 Evaluation Kit OS: PetaLinux 2025.1 Tool: wolfEntropy (from the wolfSSL ecosystem)
Building wolfEntropy
For this test, wolfEntropy was configured with a forced failure memory mode to remove fallback to other sources of entropy. Effectively, this means all entropy generation requests are forced to use wolfEntropy only.
./configure --enable-wolfEntropy CPPFLAGS=-DENTROPY_MEMUSE_FFORCE_FAILURE
make
sudo make install
Then 1,000,000 samples of entropy were collected using the function wc_Entropy_GetRawEntropy() and stored in (entropy-data-8bits-raw.dat). The results were then analyzed using an internal tool and the NIST standard tool SP800-90B_EntropyAssessment:
Results Summary
Shannon Entropy
Bit Stream Shannon Entropy: 0.999302 8-bit Stream Shannon Entropy: 5.848015
Shannon entropy close to 1.0 for the bitstream indicates very high unpredictability per bit.
Most Common Value (MCV)
Bit Stream MCV Entropy: 0.954539 8-bit Stream MCV Entropy: 4.989713
This measures the dominance of the most common value. Results here indicate no significant bias.
Additional Estimators Several conservative estimators were applied:
Collision Entropy: 1.000000 Markov Entropy: 0.721522 Compression Entropy: 0.348279 t-Tuple (8-bit): 4.753343 LRS (8-bit): 5.498328 Multi MCW (8-bit): 5.024049 Lag Prediction (8-bit): 5.479641 Multi MMC (8-bit): 5.014290 LZ78Y (8-bit): 5.025156
Each estimator targets different statistical weaknesses, such as repetition, predictability, structure, or compressibility.
Minimum and Assessed Entropy (Internal Tool)
The most important section of the output:
Minimum 8-bit Stream Entropy: 4.753343
Minimum Bit Stream Entropy: 0.348279 2.786234
Assessed Minimum Entropy: 2.786234
The Assessed Minimum Entropy = 2.786234.
For a binary source, anything above 1 bit per bit strongly indicates good entropy quality. Here, the assessment is comfortably above that threshold.
The lowest estimator (compression) is conservative by design. Even with that, the overall assessed entropy remains strong.
Minimum and Assessed Entropy (NIST SP800-90B_EntropyAssessment)
~/SP800-90B_EntropyAssessment/cpp$ ./ea_non_iid entropy-data-8bits-raw.dat
Running non-IID tests...
Running Most Common Value Estimate...
Running Entropic Statistic Estimates (bit strings only)...
Running Tuple Estimates...
Running Predictor Estimates...
H_original: 4.753343
H_bitstring: 0.348279
min(H_original, 8 X H_bitstring): 2.786233
The Assessed Minimum Entropy = 2.786233.
What This Means
On PetaLinux 2025.1 running on the ZCU102, the tested entropy source:
Shows near-ideal Shannon entropy Has no obvious dominant bias Passes conservative NIST-style entropy estimators Produces an assessed minimum entropy significantly above 1
This indicates the hardware entropy source on the platform is suitable for cryptographic seeding, DRBG initialization, and secure key generation workflows.
Why This Matters
Embedded Linux platforms often rely on hardware RNG blocks, but validation is essential—especially for:
Secure boot chains TLS key generation Device identity provisioning FIPS-related validation efforts
Using wolfEntropy provides quantitative backing for the quality of entropy feeding your cryptographic stack.
If you have questions about any of the above, please contact us at facts@wolfssl.com or +1 425 245 8247.
Download wolfSSL Now