![Page 1: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/1.jpg)
Current State of IQOQI’s Quantum Random Number Generator
Breakfast-Talk 22.06.2010
Alex Treiber
![Page 2: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/2.jpg)
IQOQI’s QRNGs
Based on Thomas Jennewein‘s QRNGT. Jennewein, U. Achleitner, G. Weihs, H.Weinfurter, and A. Zeilinger, A Fast and Compact Quantum Random Number Generator, Review of Scientific Instruments 71, 1675–1680 (2000).
Optics: Blue LED + BS + PMT
ECL comparators and Flip-flop
FPGA for sampling, evaluation and USB
BS
S
RQLED
FPGA(Xilinx
Spartan 3)CLK
USB
Optics Electronics
OUT
ECL
PMT
![Page 3: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/3.jpg)
Duties of the FPGA
Sampling (10kHz to 100MHz, user defined)
Symmetry evaluation
Randomness evaluation (runs-test) “Valid” LED on front panel
Two control loops (PWM)
- optimisation of symmetry (high entropy)
- LED intensity
Q DQ
CLKCLK
USB
OUT
SymmetryEvaluation
UTMI
FPGA
BS
S
RLED
ECL
RandomnessEvaluation
Intensity Valid LED
![Page 4: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/4.jpg)
Sampling
Det 1=S
Det 0=R
Q
CLK
OUT 1 0 0 1 0 1 0
FPGA samples the Flipflop output with a user-defined rate (up to 100MHz)
Typical timing:
![Page 5: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/5.jpg)
Really random?
C. Calude, M. Dinneen, M. Dumitrescu, K, Svozil, How Random Is Quantum Randomness? An Experimental Approach, arXiv:0912.4379v1
Tested RNGs: IQOQI QRNG, idQuantique Quantis, Mathematica, Maple
Five different tests (entropy, compression, book-stack, Solvay-Strassen, random-walk), each 10 times
Conclusion[…] overall, quantum random generators appear to be different from pseudo-random generators; with the Vienna strings emerging as the clear outlier (in all tests with various degrees of confidence) […]
![Page 6: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/6.jpg)
Test suites
Five tests enough?
No Use a standard test suite
DieHard (Robert Marsaglia, 1995)
Statistical Test Suite (NIST, 2001)
DieHarder (Robert G. Brown)
- contains DieHard, STS and others
- 107 tests, each 100 times
- last version: Oct. 2009
- requires at least 1 GB files
![Page 7: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/7.jpg)
#==================================================================## dieharder version 3.29.4beta Copyright 2003 Robert G. Brown ##==================================================================# rng_name | filename |rands/second| file_input_raw| Random021.dat| 3.25e+06 |#==================================================================# test_name |ntup| tsamples |psamples| p-value |Assessment#==================================================================# diehard_birthdays| 0| 100| 100|0.08247890| PASSED diehard_operm5| 5| 1000000| 100|0.07620363| PASSED diehard_rank_32x32| 0| 40000| 100|0.57898856| PASSED diehard_rank_6x8| 0| 100000| 100|0.00000000| FAILED diehard_bitstream| 0| 2097152| 100|0.00000000| FAILED diehard_opso| 0| 2097152| 100|0.00000000| FAILED diehard_oqso| 0| 2097152| 100|0.00000000| FAILED diehard_dna| 0| 2097152| 100|0.00000000| FAILED diehard_count_1s_str| 0| 256000| 100|0.00000000| FAILED diehard_count_1s_byt| 0| 256000| 100|0.00000000| FAILED diehard_parking_lot| 0| 12000| 100|0.00589179| PASSED diehard_2dsphere| 2| 8000| 100|0.82103324| PASSED diehard_3dsphere| 3| 4000| 100|0.38416615| PASSED diehard_squeeze| 0| 100000| 100|0.00000000| FAILED diehard_sums| 0| 100| 100|0.03964794| PASSED diehard_runs| 0| 100000| 100|0.02339595| PASSED diehard_runs| 0| 100000| 100|0.51776461| PASSED diehard_craps| 0| 200000| 100|0.00000000| FAILED diehard_craps| 0| 200000| 100|0.00000000| FAILED marsaglia_tsang_gcd| 0| 10000000| 100|0.00000000| FAILED marsaglia_tsang_gcd| 0| 10000000| 100|0.00000000| FAILED sts_monobit| 1| 100000| 100|0.01116767| PASSED sts_runs| 2| 100000| 100|0.00000000| FAILED sts_serial| 1| 100000| 100|0.49957123| PASSED sts_serial| 2| 100000| 100|0.00000000| FAILED sts_serial| 3| 100000| 100|0.00000000| FAILED sts_serial| 3| 100000| 100|0.00000000| FAILED sts_serial| 4| 100000| 100|0.00000000| FAILED sts_serial| 4| 100000| 100|0.00000000| FAILED sts_serial| 5| 100000| 100|0.00000000| FAILED sts_serial| 5| 100000| 100|0.00000000| FAILED sts_serial| 6| 100000| 100|0.00000000| FAILED sts_serial| 6| 100000| 100|0.00000000| FAILED sts_serial| 7| 100000| 100|0.00000000| FAILED sts_serial| 7| 100000| 100|0.00000000| FAILED sts_serial| 8| 100000| 100|0.00000000| FAILED sts_serial| 8| 100000| 100|0.00000000| FAILED sts_serial| 9| 100000| 100|0.00000000| FAILED sts_serial| 9| 100000| 100|0.00000001| FAILED sts_serial| 10| 100000| 100|0.00000000| FAILED sts_serial| 10| 100000| 100|0.00000178| FAILED
sts_serial| 11| 100000| 100|0.00000000| FAILED sts_serial| 11| 100000| 100|0.00554045| PASSED sts_serial| 12| 100000| 100|0.00000000| FAILED sts_serial| 12| 100000| 100|0.00342450| WEAK sts_serial| 13| 100000| 100|0.00000000| FAILED sts_serial| 13| 100000| 100|0.01912665| PASSED
sts_serial| 14| 100000| 100|0.00000000| FAILED
sts_serial| 14| 100000| 100|0.45969512| PASSED sts_serial| 15| 100000| 100|0.00000000| FAILED sts_serial| 15| 100000| 100|0.78370019| PASSED sts_serial| 16| 100000| 100|0.00000000| FAILED sts_serial| 16| 100000| 100|0.03630893| PASSED rgb_bitdist| 1| 100000| 100|0.00000000| FAILED rgb_bitdist| 2| 100000| 100|0.00000000| FAILED rgb_bitdist| 3| 100000| 100|0.00000000| FAILED rgb_bitdist| 4| 100000| 100|0.00000000| FAILED rgb_bitdist| 5| 100000| 100|0.00000000| FAILED rgb_bitdist| 6| 100000| 100|0.00000000| FAILED rgb_bitdist| 7| 100000| 100|0.00000000| FAILED rgb_bitdist| 8| 100000| 100|0.00000000| FAILED rgb_bitdist| 9| 100000| 100|0.00000000| FAILED rgb_bitdist| 10| 100000| 100|0.00000000| FAILED rgb_bitdist| 11| 100000| 100|0.00000000| FAILED rgb_bitdist| 12| 100000| 100|0.00000000| FAILED rgb_minimum_distance| 2| 10000| 1000|0.01494450| PASSED rgb_minimum_distance| 3| 10000| 1000|0.00154972| WEAK rgb_minimum_distance| 4| 10000| 1000|0.60482393| PASSED rgb_minimum_distance| 5| 10000| 1000|0.70511628| PASSED rgb_permutations| 2| 100000| 100|0.34235760| PASSED rgb_permutations| 3| 100000| 100|0.86890546| PASSED rgb_permutations| 4| 100000| 100|0.21494509| PASSED rgb_permutations| 5| 100000| 100|0.59106760| PASSED rgb_lagged_sum| 0| 1000000| 100|0.00000335| FAILED rgb_lagged_sum| 1| 1000000| 100|0.00041163| FAILED rgb_lagged_sum| 2| 1000000| 100|0.00989398| PASSED rgb_lagged_sum| 3| 1000000| 100|0.00259564| WEAK rgb_lagged_sum| 4| 1000000| 100|0.06399568| PASSED rgb_lagged_sum| 5| 1000000| 100|0.00115085| WEAK rgb_lagged_sum| 6| 1000000| 100|0.48988508| PASSED rgb_lagged_sum| 7| 1000000| 100|0.02460248| PASSED rgb_lagged_sum| 8| 1000000| 100|0.00523681| PASSED rgb_lagged_sum| 9| 1000000| 100|0.00007564| FAILED rgb_lagged_sum| 10| 1000000| 100|0.04677801| PASSED rgb_lagged_sum| 11| 1000000| 100|0.00016413| FAILED rgb_lagged_sum| 12| 1000000| 100|0.06228074| PASSED rgb_lagged_sum| 13| 1000000| 100|0.01848025| PASSED rgb_lagged_sum| 14| 1000000| 100|0.02429956| PASSED rgb_lagged_sum| 15| 1000000| 100|0.02444103| PASSED
DieHarder Results I
![Page 8: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/8.jpg)
What was wrong?
ECL comparators were floating
Optical part not shielded (too many photons from outside)
Default parameter improper
Control loops not reliable
Onboard randomness test not meaningful
Good news: we could (almost) fix all problems
![Page 9: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/9.jpg)
#========================================================================## dieharder version 3.29.4beta Copyright 2003 Robert G. Brown#========================================================================# rng_name | filename |rands/second| file_input_raw| q1_5MHz_1.dat| 1.76e+07 |#========================================================================# test_name |ntup| tsamples |psamples| p-value |Assessment#========================================================================# diehard_birthdays| 0| 100| 100|0.42792545| PASSED diehard_operm5| 5| 1000000| 100|0.03697549| PASSED diehard_rank_32x32| 0| 40000| 100|0.46441942| PASSED diehard_rank_6x8| 0| 100000| 100|0.33915293| PASSED diehard_bitstream| 0| 2097152| 100|0.81081015| PASSED diehard_opso| 0| 2097152| 100|0.30000974| PASSED diehard_oqso| 0| 2097152| 100|0.31726000| PASSED diehard_dna| 0| 2097152| 100|0.27335546| PASSEDdiehard_count_1s_str| 0| 256000| 100|0.37126012| PASSEDdiehard_count_1s_byt| 0| 256000| 100|0.40185116| PASSED diehard_parking_lot| 0| 12000| 100|0.34627402| PASSED diehard_2dsphere| 2| 8000| 100|0.73612316| PASSED diehard_3dsphere| 3| 4000| 100|0.95666919| PASSED diehard_squeeze| 0| 100000| 100|0.54262436| PASSED diehard_sums| 0| 100| 100|0.00921142| PASSED diehard_runs| 0| 100000| 100|0.81530352| PASSED diehard_runs| 0| 100000| 100|0.91126300| PASSED diehard_craps| 0| 200000| 100|0.16119635| PASSED diehard_craps| 0| 200000| 100|0.96676853| PASSED marsaglia_tsang_gcd| 0| 10000000| 100|0.23946275| PASSED marsaglia_tsang_gcd| 0| 10000000| 100|0.04561348| PASSED sts_monobit| 1| 100000| 100|0.30930831| PASSED sts_runs| 2| 100000| 100|0.00583346| PASSED sts_serial| 1| 100000| 100|0.07885875| PASSED sts_serial| 2| 100000| 100|0.00769865| PASSED sts_serial| 3| 100000| 100|0.60870308| PASSED sts_serial| 3| 100000| 100|0.62207017| PASSED sts_serial| 4| 100000| 100|0.04292822| PASSED sts_serial| 4| 100000| 100|0.10920534| PASSED sts_serial| 5| 100000| 100|0.56162316| PASSED sts_serial| 5| 100000| 100|0.21360406| PASSED sts_serial| 6| 100000| 100|0.30747938| PASSED sts_serial| 6| 100000| 100|0.37477593| PASSED sts_serial| 7| 100000| 100|0.87972507| PASSED sts_serial| 7| 100000| 100|0.22326564| PASSED sts_serial| 8| 100000| 100|0.42296250| PASSED sts_serial| 8| 100000| 100|0.01008196| PASSED sts_serial| 9| 100000| 100|0.22975862| PASSED sts_serial| 9| 100000| 100|0.54589223| PASSED sts_serial| 10| 100000| 100|0.20396017| PASSED sts_serial| 10| 100000| 100|0.84905794| PASSED
sts_serial| 11| 100000| 100|0.11783167| PASSED sts_serial| 11| 100000| 100|0.81136758| PASSED sts_serial| 12| 100000| 100|0.25171972| PASSED
sts_serial| 12| 100000| 100|0.95893614| PASSED
sts_serial| 13| 100000| 100|0.04254038| PASSED sts_serial| 14| 100000| 100|0.41334169| PASSED sts_serial| 14| 100000| 100|0.43896175| PASSED sts_serial| 15| 100000| 100|0.65951829| PASSED sts_serial| 15| 100000| 100|0.79833150| PASSED sts_serial| 16| 100000| 100|0.97863323| PASSED sts_serial| 16| 100000| 100|0.85960638| PASSED rgb_bitdist| 1| 100000| 100|0.36194616| PASSED rgb_bitdist| 2| 100000| 100|0.00306661| WEAK rgb_bitdist| 3| 100000| 100|0.08020477| PASSED rgb_bitdist| 4| 100000| 100|0.26389978| PASSED rgb_bitdist| 5| 100000| 100|0.76031260| PASSED rgb_bitdist| 6| 100000| 100|0.78364264| PASSED rgb_bitdist| 7| 100000| 100|0.65092735| PASSED rgb_bitdist| 8| 100000| 100|0.62388358| PASSED rgb_bitdist| 9| 100000| 100|0.31256060| PASSED rgb_bitdist| 10| 100000| 100|0.99742050| WEAK rgb_bitdist| 11| 100000| 100|0.15845754| PASSED rgb_bitdist| 12| 100000| 100|0.83499628| PASSEDrgb_minimum_distance| 2| 10000| 1000|0.83391342| PASSEDrgb_minimum_distance| 3| 10000| 1000|0.93666636| PASSEDrgb_minimum_distance| 4| 10000| 1000|0.96425293| PASSEDrgb_minimum_distance| 5| 10000| 1000|0.59957796| PASSED rgb_permutations| 2| 100000| 100|0.71516737| PASSED rgb_permutations| 3| 100000| 100|0.52658846| PASSED rgb_permutations| 4| 100000| 100|0.88877864| PASSED rgb_permutations| 5| 100000| 100|0.12378512| PASSED rgb_lagged_sum| 0| 1000000| 100|0.19291263| PASSED rgb_lagged_sum| 1| 1000000| 100|0.34584867| PASSED rgb_lagged_sum| 2| 1000000| 100|0.11270643| PASSED rgb_lagged_sum| 3| 1000000| 100|0.30984206| PASSED rgb_lagged_sum| 4| 1000000| 100|0.19750075| PASSED rgb_lagged_sum| 5| 1000000| 100|0.50104956| PASSED rgb_lagged_sum| 6| 1000000| 100|0.41981165| PASSED rgb_lagged_sum| 7| 1000000| 100|0.07927663| PASSED rgb_lagged_sum| 8| 1000000| 100|0.27889421| PASSED rgb_lagged_sum| 9| 1000000| 100|0.83286461| PASSED rgb_lagged_sum| 10| 1000000| 100|0.44481093| PASSED rgb_lagged_sum| 11| 1000000| 100|0.23857647| PASSED rgb_lagged_sum| 12| 1000000| 100|0.15082577| PASSED rgb_lagged_sum| 13| 1000000| 100|0.07655460| PASSED rgb_lagged_sum| 14| 1000000| 100|0.72278013| PASSED rgb_lagged_sum| 15| 1000000| 100|0.00607258| PASSED rgb_lagged_sum| 16| 1000000| 100|0.77962966| PASSED rgb_lagged_sum| 17| 1000000| 100|0.78183082| PASSED
DieHarder Results II
![Page 10: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/10.jpg)
Comparison of some RNGs
Typical DieHarder results
C++ rand() 3x FAIL
Linux /dev/random 6x FAIL
AES OFB 0x FAIL
QRNG, 1MHz 50x FAIL
QRNG after modifications 1x FAIL
QRNG can produce cryptographic random numbers now
(without any post-processing)
![Page 11: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/11.jpg)
Want to use the RNG?
Pay attention to:
the QRNG is not a plug & play device
use the TRNG software for Windows
don’t trust the “Valid” LED on front panel
read the fucking manual (English version coming soon)
stick to the manual
![Page 12: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/12.jpg)
Thank you for your attention
![Page 13: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/13.jpg)
In Thomas Scheidl’s PhD thesis
T. Scheidl, A fundamental test and an application of quantum entanglement, PhD thesis, University of Vienna, 2009
![Page 14: Current State of IQOQI’s Quantum Random Number Generator Breakfast-Talk 22.06.2010 Alex Treiber alexander.treiber@univie.ac.at](https://reader036.vdocuments.net/reader036/viewer/2022062408/56649ef65503460f94c0954f/html5/thumbnails/14.jpg)
What is inside?
Optik
Elektronik
FPGA
Netzteil