RAVA is an open-source True Random Number Generator (TRNG) based on avalanche noise. It is designed to offer a transparent and customizable platform that makes auditable, high-quality entropy accessible to a wider audience.
The main characteristics of the RAVA device are:
-
High-quality entropy: Produces unbiased and statistically independent random bits directly from physical noise sources, without relying on post-processing algorithms.
-
Differential design: Enhances robustness against environmental influences by continuously comparing two similar and independent noise sources.
-
Dual entropy core: Incorporates two parallel and independent entropy channels that simultaneously produce random bytes. This architecture provides redundancy, a double output rate, or a unique feature for experiments employing a condition/control design.
-
Full transparency: As an open-source project, RAVA provides complete access to the hardware design, firmware, and host-side software, including drivers, libraries, and utilities. At the hardware level, dedicated monitoring headers allow real-time inspection of voltages and noise signals during operation.
-
Customizability: Interface headers enable integration with external circuits, sensors, and integrated circuits (ICs). Users can fully control device operation through a communication interface, while the open-source firmware can be modified to alter behavior or implement new features.
-
Accessibility: Built from low-cost, widely available components, including standard ICs and 0805 SMD resistors and capacitors. The design remains affordable and can be assembled by users with basic PCB soldering experience.
This repository contains the hardware design files for RAVA8, an implementation of the RAVA architecture based on the ATmega32U4 microcontroller and its integrated USB interface. Included are the schematic and PCB layout files required to manufacture and assemble the board. The name RAVA8 refers to the microcontroller's 8-bit architecture.
For a comprehensive overview, encompassing an in-depth exploration of the noise source, a stochastic model, and statistical tests, please consult the article
The physical phenomenon associated with the RAVA circuit’s entropy is the avalanche breakdown of reverse-biased diodes and the time unpredictability of those events.
A 25.5V voltage is applied to two reverse-biased 24V Zener diodes, inducing avalanche breakdown. Next, the noise voltages are buffered using operational amplifiers (OA1, OA3). The purpose of the buffering stage is to prevent distortions that could be introduced in the subsequent steps. The noise voltages are then DC decoupled and raised to a common level of 2.5V using unity-gain operational amplifiers (OA2, OA4). These operations result in the avalanche noise channels V_A1 and V_A2 containing the original noise voltages, which have been inverted and raised to the 2.5V DC level.
Finally, the analog channels V_A1 and V_A2 are connected to a comparator IC, which produces a digital output V_CMP representing which Zener produces the largest avalanche noise at a given time. The V_CMP output, referred to as differential noise, consists of a sequence of pulses with varying lengths and unknown rising edge times. The interval between successive pulses depends on the avalanche breakdown occurring in the reverse-biased Zener diodes. Consequently, the pulses' intervals are inherently unpredictable, serving as an entropy source for the circuit.
Below is an example showcasing data for V_A1, V_A2, and V_CMP
The noise source output V_CMP is wired to a timer/counter port in the microcontroller configured to count the measured rising edge pulses. Every ith-random bit is generated by evaluating the pulse count after a fixed sampling interval. The i-th bit results in 0 if the pulse count is even and 1 if odd. The example reveals nine pulses in the sampling interval of 3 mus that would result in a 1 bit.





