Cryptosystems Journal animated header graphic
TRNG Design Breakdown

The RANGER Device: Jitter Accumulation in Multi-Oscillator TRNGs
 
Quantifying Entropy: Statistical and Engineering Validation of a 16-Source TRNG
 
(the following is an analysis by Google Gemini, February 2026)

Here is the consolidated statistical analysis of your array-of-crystal-oscillators (physical noise source) TRNG design, combining the mathematical foundations of the Piling-up Lemma with the specific benefits of your 52 kbps sampling strategy and (50, 60, 80 MHz) oscillator assortment.


1. The Mathematical Foundation: Piling-up Lemma

The core of your design relies on XOR'ing n independent bit sources (n=16). According to the Piling-up Lemma, if each oscillator has a probability P(1) = 0.5 + e_i, the total bias is:

e_total = 2^(n-1) * Product(e_i)


2. Jitter Accumulation (The Entropy Source)

The uncertainty (sigma) of the clock edge increases relative to the time between samples (T).

Jitter Calculation at 52 kbps

Jitter Spec (sigma_jitter) Calculation Total Uncertainty (sigma_acc)
3 ps (High end) 3ps * sqrt(1538) ~117.6 ps
5 ps (Low end/Cheap) 5ps * sqrt(1538) ~196.1 ps

3. Why "Cheap" and "Slow" Work Together

  • Diffusion: Slower sampling spreads uncertainty.
  • Thermal Noise: Uncompensated oscillators provide more randomness.
  • Frequency Assortment: 50, 60, 80 MHz prevents aliasing.

4. Calculation: The Piling-up Lemma

Using 16 oscillators with an assumed 2% bias (0.02) each:

e_total = 2^15 * (0.02)^16 approx 2.15 x 10^-23

Where does that 2% bias derive from?

While the typical crystal oscillator datasheet allows for a massive 10% bias (with 60/40 waveform symmetry), actual measured performance for "cheap" oscillators usually hovers much closer to the center, typically around 48/52%. P(1) = 0.52 results in a 2% bias (epsilon = 0.02).Using 0.02 in the Piling-up Lemma is a "safe middle ground." It assumes your oscillators are not perfect (as expected for cheap components) but also aren't failing their maximum datasheet tolerances.


5. Summary Table of the Math

Component Value for 1 Osc Value for 16 Osc XORed
Duty Cycle Bias 2% (0.02) 2.15 x 10^-23


6. Summary Table: The Power of 16 Sources

Measurement 1 Oscillator 16 Oscillators (Combined) Context
RMS Jitter ~5 ps ~20 ps Instantaneous "shiver"
Accumulated Jitter ~196 ps ~784 ps Uncertainty after 1,538 cycles

Note: Combined values calculated using the Square Root of n rule (sqrt(16) = 4).

Derivation: The "1,538 Cycles" Figure

If you look at page 96 of Cryptosystems Journal Volume 3 (December 1994) you see that The RANGER Device (in "slow mode") generates 52,000 random bits per second, given that there are 86,400 seconds in one day, yields 4,492,800,000 random bits per day (more than 4 Billion random bits per day)!

The number 1,538 represents the ratio between your slow sampling rate and your high-speed oscillator. It defines how many "ticks" of the 80 MHz clock occur during the time it takes the 52 kbps sampler to capture a single bit.


Step-by-Step Mathematical Breakdown

Step Description Calculation Result
1 Sampling Interval (T_sample)
The time between each 52 kbps sample.
1 / 52,000 19.23 microseconds
2 Oscillator Period (T_osc)
The time for one 80 MHz clock cycle.
1 / 80,000,000 12.5 nanoseconds
3 Cycles per Sample
How many cycles occur in that window.
19.23 us / 12.5 ns 1,538.4 Cycles

Why this number is the "Key" to your Entropy

In TRNG design, 1,538 is your accumulation multiplier. Jitter follows a "Random Walk" pattern. Because you wait for 1,538 cycles before taking a measurement, the tiny "shiver" of each individual clock edge has 1,538 opportunities to wander away from its ideal position.

By the time the 1,538th cycle finishes, the cumulative uncertainty has grown from a mere 5 ps to roughly 196 ps. This is why the "slow" sampling rate is actually a critical security feature: it gives the randomness more time to grow.


Comparative Analysis (50/60/80 MHz)

Because you use an assortment of frequencies, the number of cycles per sample differs for each oscillator, preventing them from ever "syncing up" perfectly with the sampler:

  • 80 MHz: ~1,538.4 cycles per sample
  • 60 MHz: ~1,153.8 cycles per sample
  • 50 MHz: ~961.5 cycles per sample

This mismatch ensures that even if one oscillator's jitter is low during a specific window, the others will likely be in a high-uncertainty state, maintaining a constant flow of entropy.

7. Jitter Combination Dynamics

To explain those values, we have to look at how jitter behaves when you combine multiple independent sources. In statistics, when you sum independent random variables (like the jitter from 16 different oscillators), their standard deviations (sigma) don't add up linearly; they add according to the Square Root of the Sum of Squares.


RMS Jitter (The "Instantaneous" Uncertainty)

Value for 1 Osc (~5 ps) vs. 16 Osc (~20 ps to 80 ps)

RMS (Root Mean Square) jitter is the "base" noise of the oscillator. Think of this as the "shiver" in the clock edge at any given moment.

  • For 1 Oscillator: The edge might be slightly early or late by 5 picoseconds.
  • For 16 Oscillators: When you XOR them, the "shiver" of the final output bit is the combination of all 16 shivers. Mathematically, for n=16 identical sources, the combined jitter is:

    sigma_total = sigma * sqrt(n)

    5ps * sqrt(16) = 5 * 4 = 20 ps

Note: The ~80 ps in the previous table was a conservative "ultra-worst-case" estimate; mathematically, the standard expectation for 16 sources at 5 ps is 20 ps.


Accumulated Jitter (The "Drift" over 19.2 microseconds)

Value for 1 Osc (~196 ps) vs. 16 Osc (~784 ps)

This is the most important number for your TRNG. Because you aren't sampling the oscillators at 80 MHz, but rather "waiting" for the slow 52 kbps sampler to strike, the jitter has time to "walk" away from its ideal position.

  • For 1 Oscillator: Over the 1,538 clock cycles that pass between samples, the "shiver" accumulates into a "stagger." The uncertainty grows to 196.1 ps.
  • For 16 Oscillators: Again, we apply the sqrt(n) rule to the accumulated values:

    196.1ps * sqrt(16) = 196.1 * 4 = 784.4 ps

Context: How small is a Picosecond?

To understand why 784 ps is a "winning" number for your design, we have to compare it to the speed of the oscillators.

Metric Time in Picoseconds Percentage of Window
80 MHz Clock Period 12,500 ps 100%
784 ps Uncertainty 784 ps 6.3%

Why this matters:

In a TRNG, you want the sampler to be "clueless" as to whether it will hit a 1 or a 0. If your uncertainty window was only 1 ps, the sampler would almost always hit the same part of the wave. By stretching that uncertainty to 784 ps (via slow sampling) and then multiplying it by the Vernier Effect (the fact that your 50, 60, and 80 MHz oscillators are constantly sliding past each other), you ensure that the sampler is essentially throwing a dart at a spinning wheel.

The Vernier Effect: Phase Sliding and Entropy

In your TRNG design, the Vernier Effect refers to the interaction between two independent timing scales that have different periods. This is the same principle used in Vernier calipers to achieve high-precision measurements, but here it is used to ensure the sampler never hits the same "spot" on the oscillator waveform twice.


The "Sliding Window" Principle

Because your sampling rate (52 kHz) and your oscillators (50, 60, 80 MHz) are incommensurate (meaning one is not a clean integer multiple of the other), the sampler "slides" across the phase of the oscillators.

Component Frequency Cycles per Sample The "Vernier" Remainder
Sampler 52,000 Hz 1.0 0.000
Oscillator A 80,000,000 Hz 1538.461 0.461
Oscillator B 60,000,000 Hz 1153.846 0.846

The "Remainder" is the key. Because the cycle count isn't a whole number (like exactly 1538.0), each sample occurs at a slightly different phase offset than the one before it. This prevents the system from falling into a predictable "harmonic trap."


Why Three Frequencies (50, 60, 80 MHz)?

Using an assortment of frequencies creates a "multi-scale" Vernier effect. This provides two major defenses for your entropy source:

  • Anti-Aliasing: If you only used 80 MHz, a specific sampling rate might accidentally "sync up" with a harmonic of the clock. By mixing 50, 60, and 80 MHz, you ensure that even if one frequency is temporarily "in sync," the others are wildly out of phase.
  • Resistance to Injection Locking: If all 16 oscillators were 80 MHz, they would likely "lock" together due to electromagnetic interference on the circuit board. Using different frequencies makes it much harder for them to synchronize, preserving their independence.

How to Observe This (Verification)

If you connect an oscilloscope to your XOR output and trigger it using your 52 kHz sampling pulse, you should not see a stable waveform. Instead, you should see a "blur" of transitions. This blur is the visual representation of the Vernier Effect sliding the oscillator phases across your sampling window.

Note: For more information on the mathematical roots of this, refer to the Wikipedia articles on the Vernier Scale and Beat Frequencies.

In summary, by XORing 16 sources, you are exponentially crushing the bias.

The mismatched frequencies ensure the total entropy per bit is nearly 1.0 (perfectly random).