Pass threshold: p > 0.01 for all tests · Entropy > 7.90 bits/byte · Bias < 1%
QUANTUM STATE — BLOCH SPHERELIVE
–
θ polar
–
φ azimuth
–
purity
–
P(|0⟩)
–
P(|1⟩)
–
g²(0)
What am I seeing? The Bloch sphere represents a single qubit
— the fundamental unit of quantum information. Every pure quantum
state lives on the surface. |0⟩ (north pole) = photon detected
on channel A. |1⟩ (south pole) = channel B.
θ (polar angle) encodes the probability ratio of the two
outcomes: P(|0⟩) = cos²(θ/2). φ (azimuthal angle) is the
quantum phase — visible only through interference.
The scattered purple dots are
individual photon measurement events landing on the sphere in
real time. The arrow is the
state vector — its tip is your qubit's current state.
Single photons show wave interference. Toggle observer mode to collapse to particle distribution in real-time. Requires the Double-Slit Module add-on.
DOUBLE-SLIT MODULE
EXP-09 · $2M STRETCH GOAL
Quantum Eraser
Erase which-path information after the fact. Demonstrates non-local correlations and restores interference. Requires Entanglement Module.
ENTANGLEMENT MODULE
EXP-10 · $2M STRETCH GOAL
Hong-Ou-Mandel Dip
Two indistinguishable photons on a beam splitter always exit together. Coincidences drop to zero at zero delay. Requires Entanglement Module.
ENTANGLEMENT MODULE
EXP-11 · $2M STRETCH GOAL
Entanglement Visibility
Full polarization correlation measurement of entangled photon pairs. Compute entanglement visibility V. Requires Entanglement Module.
ENTANGLEMENT MODULE
EXP-12 · $2M STRETCH GOAL
Delayed Choice
Wheeler's delayed-choice experiment. QRNG decides observation mode after photon enters the interferometer. Requires Entanglement Module.
ENTANGLEMENT MODULE
Labs
Guided structured experiments with data capture and export
LAB-01 — Photon Statistics
STATS
Verify SiPM detectors produce Poisson-distributed counts. Measure Mandel Q parameter and Fano factor.
Set integration time T (1 ms – 10 s)
Record N intervals of count data via GET /api/telemetry
Compute mean λ, variance σ², Mandel Q = (σ²−λ)/λ
Plot histogram vs Poisson PMF
Chi-squared goodness-of-fit test
LAB-02 — Coincidence Timing Resolution
TIMING
Characterise coincidence window. Measure accidental rate and determine optimal window for signal-to-noise.
Sweep coincidence window 1–7 ticks (6.7–46.7 ns)
Record coincidence rate at each window
Plot R_total vs window — slope = accidental rate
Compute R_true = R_total − R_accidental
Identify optimal window for maximum SNR
LAB-03 — Polarization & Malus’s Law
OPTICS
Measure polarization extinction ratio. Fit I = I₀cos²(θ−θ₀) + I_bg and verify quantum prediction.
Home stepper motor
Sweep 0°–360° in 5° steps with dwell = 200 ms
Fit cos² function to data
Compute extinction ratio ER = I_max / I_min
Compare to quantum prediction vs classical
LAB-04 — Fringe Visibility & Coherence
INTERFEROMETRY
Measure interference fringe visibility V and estimate coherence length L_c from visibility vs path length.
Run motorised fringe scan (EXP-05)
Fit I(x) = A·sin(2πx/Λ + φ) + C
Compute V = A / C
Vary path length — record V(ΔL) envelope
Extract coherence length L_c from V(L_c) = 1/e
LAB-05 — Bell Inequality / CHSH
QUANTUM
Full CHSH test. Confirm violation of classical Bell bound S ≤ 2 and compare to quantum limit 2√2 ≈ 2.828.
Align polarizers to four angle combinations (0°, 22.5°, 45°, 67.5°)
Collect N ≥ 1000 coincidences at each setting
Compute correlation functions E(a,b)
Compute S = |E(a,b) − E(a,b') + E(a',b) + E(a',b')|
Compare S to classical bound 2 and quantum limit 2√2
LAB-06 — HBT Antibunching
PHOTONICS
Measure g²(τ) and confirm g²(0) < 1 (sub-Poissonian). Fit to extract coherence time τ_c.
Configure FPGA delay scan (τ = −50 to +50 ticks)
Record coincidences at each delay
Normalise: g²(τ) = R(τ) / R(∞)
Fit g²(τ) = 1 − exp(−|τ|/τ_c)
Extract g²(0) and coherence time τ_c
LAB-07 — QRNG Quality Assessment
ENTROPY
Characterise the photonic QRNG: entropy rate, bias, throughput, and full NIST SP 800-22 compliance.
Fill RNG buffer (≥ 128 KB)
Run full 15-test NIST SP 800-22 suite
Measure entropy rate (bits/s) vs photon rate
Compare Von Neumann vs Toeplitz extractor performance
Export NIST HTML report
LAB-08 — Crypto Lab
CRYPTO
Use photonic QRNG for cryptographic key generation, OTP, and protocol demonstration. NIST-verified entropy.
Verify NIST health before key generation
Generate AES-256 / Ed25519 / RSA keys
Demonstrate OTP: encrypt and attempt intercept
Run BB84 QKD simulation with QRNG bases
Export session bytes + NIST report
Don't Look
Double-slit observer paradox · Multiplayer · Real photons
YO
You
0
PHOTONS
SUPERPOSITIONpattern coherence:0%
Quantum Coin Flip
One photon = one bit · True quantum randomness
FLIP COIN1 photon = 1 bit
?
0
HEADS
:
0
TAILS
Bit history
Quantum Dice
Rejection sampling for perfect uniformity · No modulo bias
ROLL DICE
?
?
?
?
CountType
Quantum Casino
Provably fair · QRNG-powered · Live NIST score
ROULETTEQRNG
–
SLOTS
?
?
?
Bell Test Challenge
Can you beat classical physics? Two players · 4 angles · Real coincidences
Two players (Alice & Bob) each pick a polarizer angle.
Real coincidences are measured and S parameter computed.
Classical limit: S ≤ 2 · Quantum prediction: S = 2√2 ≈ 2.828
Requires FPGA + SiPM detectors or test mode.
BB84 QKD Simulation
Alice encodes bits · Bob measures in QRNG bases · Sifted key extraction
KEY EXCHANGEQRNG
Key bits
Alice's bits
—
Bob's bases
—
Sifted key (matching bases)
—
Sift ratio
—
Quantum random bytes
Raw entropy from SiPM photon arrival timing · NIST SP 800-22 compliant
CBD rejection sampling → small FSM with SHAKE256 frontend · feeds NTT directly
Barrett/Montgomery reduction mod 3329 → single-cycle per coefficient
Design decision: full ML-KEM keygen + encap + decap fits on the Tang Primer 20K. ESP32 issues one UART command; FPGA returns (pk, sk, ss) in ≈ 3 ms.
CRYSTALS-Dilithium · ML-DSA
NIST FIPS 204 · Lattice-based digital signatures · Quantum-safe
NIST Level
2
Public key
1312
bytes
Signature
2420
bytes
Sign time
–
ms
GENERATE ML-DSA KEYPAIRQUANTUM-SAFE
VariantEntropy
Message to sign
Public key (hex preview)
—
Signature (hex preview)
—
FPGA ACCELERATIONRev4.x core
NTT mod 8380417 → reuses Kyber NTT datapath with wider 32-bit coefficients on DSP48
SampleInBall (rejection sampling) → SHAKE256 core drives a 6-bit index LUT · constant-time by spec
Decompose / HighBits / LowBits → combinatorial, single cycle each
Signature rejection loop → runs entirely on FPGA; average 4-8 iterations for ML-DSA-44
Design decision: full ML-DSA keygen + sign + verify on FPGA. ESP32 sends message over UART; receives 2420-byte signature in ≈ 8 ms (Level 2).
SPHINCS+ · SLH-DSA
NIST FIPS 205 · Stateless hash-based signatures · Quantum-safe
NIST Level
1
Public key
32
bytes
Signature
17088
bytes
Hashes/sig
~490k
GENERATE SLH-DSA KEYPAIRQUANTUM-SAFE
VariantEntropy
Message to sign
Public key (hex, full)
—
Signature (hex preview · first 256 bytes)
—
FPGA ACCELERATIONRev4.x core
SHA-256 / SHAKE256 core → pipelined 1 hash/clock after warm-up · 150 MHz × 64 B = 1.2 GB/s
WOTS+ hash chains → 64 parallel chains per keypair · each = 15× SHA · all parallelised on FPGA
FORS tree authentication → 33 Merkle trees of depth 6 · tree traversal FSM in fabric
XMSS hypertree → 22 sub-trees of depth 3 · batched signing via on-chip BRAM cache
Design decision: entire SLH-DSA on FPGA. ESP32 role is trivial (UART shuttle). ARM softcore would take 500 ms per sign; FPGA pipeline hits ≈ 4 ms for SLH-DSA-128f.
The prover knows secret witnesses x, y. The verifier only sees the public z and the proof π. Proof reveals nothing about x or y, yet convinces the verifier that x·y + x = z.
Proof π (BN254 Fr elements)
—
Verifier result
—
FPGA ACCELERATIONRev4.x core
BN254 Fr multiplication → 256-bit Montgomery on 9× DSP48 blocks · 14 cycles per mul
Multi-Scalar Multiplication (MSM) → Pippenger buckets in BRAM · dominant cost of prover
Number-Theoretic Transform (2ⁿ point FFT) → reuses Kyber NTT datapath with 256-bit coefficients
Design decision: prover compute (MSM + FFT + polynomial opening) fully offloaded to FPGA. Pairing check on verifier is ≈ 2 ms on ESP32 (rare path). QRNG supplies blinding factors — every proof is unlinkable.