Daniel P. Barron

Testing Goats

Wednesday, June 14, 2017

FG is a joy to use. I can not think of an easier piece of hardware to install and use -- be it a keyboard or a hard drive. Granted, I had to recompile a kernel to get the USB TTY adapter to show up, but that is arguably not a strike against FG itself. The thing just works. Plug it in and right away see data flow forth. I used it to create two files over the course of about four days, and ran them through the recommended tests.


peninnah ~ # du -h fg.bin
1.4G	fg.bin
peninnah ~ # ent fg.bin
Entropy = 8.000000 bits per byte.

Optimum compression would reduce the size
of this 1465266688 byte file by 0 percent.

Chi square distribution for 1465266688 samples is 261.00, and randomly
would exceed this value 38.48 percent of the times.

Arithmetic mean value of data bytes is 127.5008 (127.5 = random).
Monte Carlo value for Pi is 3.141552305 (error 0.00 percent).
Serial correlation coefficient is -0.000011 (totally uncorrelated = 0.0).

peninnah ~ # dieharder -a -g 201 -f fg.bin
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |           filename             |rands/second|
 file_input_raw|                          fg.bin|  1.55e+07  |
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.87587112|  PASSED
      diehard_operm5|   0|   1000000|     100|0.96015925|  PASSED
  diehard_rank_32x32|   0|     40000|     100|0.63388649|  PASSED
    diehard_rank_6x8|   0|    100000|     100|0.42921798|  PASSED
   diehard_bitstream|   0|   2097152|     100|0.66727620|  PASSED
# The file file_input_raw was rewound 1 times
        diehard_opso|   0|   2097152|     100|0.78465705|  PASSED
# The file file_input_raw was rewound 1 times
        diehard_oqso|   0|   2097152|     100|0.74785318|  PASSED
# The file file_input_raw was rewound 2 times
         diehard_dna|   0|   2097152|     100|0.29367572|  PASSED
# The file file_input_raw was rewound 2 times
diehard_count_1s_str|   0|    256000|     100|0.99999624|   WEAK
# The file file_input_raw was rewound 2 times
diehard_count_1s_byt|   0|    256000|     100|0.17355435|  PASSED
# The file file_input_raw was rewound 2 times
 diehard_parking_lot|   0|     12000|     100|0.79600924|  PASSED
# The file file_input_raw was rewound 2 times
    diehard_2dsphere|   2|      8000|     100|0.21990710|  PASSED
# The file file_input_raw was rewound 2 times
    diehard_3dsphere|   3|      4000|     100|0.19449387|  PASSED
# The file file_input_raw was rewound 3 times
     diehard_squeeze|   0|    100000|     100|0.74343805|  PASSED
# The file file_input_raw was rewound 3 times
        diehard_sums|   0|       100|     100|0.62449613|  PASSED
# The file file_input_raw was rewound 3 times
        diehard_runs|   0|    100000|     100|0.64815009|  PASSED
        diehard_runs|   0|    100000|     100|0.65768515|  PASSED
# The file file_input_raw was rewound 3 times
       diehard_craps|   0|    200000|     100|0.59858631|  PASSED
       diehard_craps|   0|    200000|     100|0.69964834|  PASSED
# The file file_input_raw was rewound 8 times
 marsaglia_tsang_gcd|   0|  10000000|     100|0.48645093|  PASSED
 marsaglia_tsang_gcd|   0|  10000000|     100|0.92449907|  PASSED
# The file file_input_raw was rewound 8 times
         sts_monobit|   1|    100000|     100|0.14747070|  PASSED
# The file file_input_raw was rewound 8 times
            sts_runs|   2|    100000|     100|0.43752663|  PASSED
# The file file_input_raw was rewound 8 times
          sts_serial|   1|    100000|     100|0.49942085|  PASSED
          sts_serial|   2|    100000|     100|0.79110527|  PASSED
          sts_serial|   3|    100000|     100|0.13521837|  PASSED
          sts_serial|   3|    100000|     100|0.75936926|  PASSED
          sts_serial|   4|    100000|     100|0.71378645|  PASSED
          sts_serial|   4|    100000|     100|0.82458666|  PASSED
          sts_serial|   5|    100000|     100|0.91349881|  PASSED
          sts_serial|   5|    100000|     100|0.77236497|  PASSED
          sts_serial|   6|    100000|     100|0.83690635|  PASSED
          sts_serial|   6|    100000|     100|0.11520241|  PASSED
          sts_serial|   7|    100000|     100|0.59018155|  PASSED
          sts_serial|   7|    100000|     100|0.71582962|  PASSED
          sts_serial|   8|    100000|     100|0.94832462|  PASSED
          sts_serial|   8|    100000|     100|0.79664845|  PASSED
          sts_serial|   9|    100000|     100|0.61190018|  PASSED
          sts_serial|   9|    100000|     100|0.46706842|  PASSED
          sts_serial|  10|    100000|     100|0.59175209|  PASSED
          sts_serial|  10|    100000|     100|0.43626668|  PASSED
          sts_serial|  11|    100000|     100|0.07062130|  PASSED
          sts_serial|  11|    100000|     100|0.06074906|  PASSED
          sts_serial|  12|    100000|     100|0.33158937|  PASSED
          sts_serial|  12|    100000|     100|0.39439959|  PASSED
          sts_serial|  13|    100000|     100|0.46472363|  PASSED
          sts_serial|  13|    100000|     100|0.51269561|  PASSED
          sts_serial|  14|    100000|     100|0.07918865|  PASSED
          sts_serial|  14|    100000|     100|0.16238744|  PASSED
          sts_serial|  15|    100000|     100|0.15625993|  PASSED
          sts_serial|  15|    100000|     100|0.97190190|  PASSED
          sts_serial|  16|    100000|     100|0.07682345|  PASSED
          sts_serial|  16|    100000|     100|0.58495694|  PASSED
# The file file_input_raw was rewound 9 times
         rgb_bitdist|   1|    100000|     100|0.91212650|  PASSED
# The file file_input_raw was rewound 9 times
         rgb_bitdist|   2|    100000|     100|0.68566372|  PASSED
# The file file_input_raw was rewound 9 times
         rgb_bitdist|   3|    100000|     100|0.24740597|  PASSED
# The file file_input_raw was rewound 9 times
         rgb_bitdist|   4|    100000|     100|0.92670153|  PASSED
# The file file_input_raw was rewound 9 times
         rgb_bitdist|   5|    100000|     100|0.58055076|  PASSED
# The file file_input_raw was rewound 10 times
         rgb_bitdist|   6|    100000|     100|0.24329557|  PASSED
# The file file_input_raw was rewound 10 times
         rgb_bitdist|   7|    100000|     100|0.28990384|  PASSED
# The file file_input_raw was rewound 10 times
         rgb_bitdist|   8|    100000|     100|0.06298846|  PASSED
# The file file_input_raw was rewound 11 times
         rgb_bitdist|   9|    100000|     100|0.55779701|  PASSED
# The file file_input_raw was rewound 11 times
         rgb_bitdist|  10|    100000|     100|0.10205715|  PASSED
# The file file_input_raw was rewound 12 times
         rgb_bitdist|  11|    100000|     100|0.43845244|  PASSED
# The file file_input_raw was rewound 13 times
         rgb_bitdist|  12|    100000|     100|0.81873239|  PASSED
# The file file_input_raw was rewound 13 times
rgb_minimum_distance|   2|     10000|    1000|0.86683062|  PASSED
# The file file_input_raw was rewound 13 times
rgb_minimum_distance|   3|     10000|    1000|0.95287146|  PASSED
# The file file_input_raw was rewound 13 times
rgb_minimum_distance|   4|     10000|    1000|0.15691677|  PASSED
# The file file_input_raw was rewound 13 times
rgb_minimum_distance|   5|     10000|    1000|0.87747412|  PASSED
# The file file_input_raw was rewound 13 times
    rgb_permutations|   2|    100000|     100|0.47847209|  PASSED
# The file file_input_raw was rewound 13 times
    rgb_permutations|   3|    100000|     100|0.82402816|  PASSED
# The file file_input_raw was rewound 13 times
    rgb_permutations|   4|    100000|     100|0.17345085|  PASSED
# The file file_input_raw was rewound 13 times
    rgb_permutations|   5|    100000|     100|0.96936326|  PASSED
# The file file_input_raw was rewound 14 times
      rgb_lagged_sum|   0|   1000000|     100|0.34427016|  PASSED
# The file file_input_raw was rewound 14 times
      rgb_lagged_sum|   1|   1000000|     100|0.40381806|  PASSED
# The file file_input_raw was rewound 15 times
      rgb_lagged_sum|   2|   1000000|     100|0.19408856|  PASSED
# The file file_input_raw was rewound 16 times
      rgb_lagged_sum|   3|   1000000|     100|0.92897681|  PASSED
# The file file_input_raw was rewound 18 times
      rgb_lagged_sum|   4|   1000000|     100|0.16649980|  PASSED
# The file file_input_raw was rewound 19 times
      rgb_lagged_sum|   5|   1000000|     100|0.61412624|  PASSED
# The file file_input_raw was rewound 21 times
      rgb_lagged_sum|   6|   1000000|     100|0.42159442|  PASSED
# The file file_input_raw was rewound 23 times
      rgb_lagged_sum|   7|   1000000|     100|0.48185104|  PASSED
# The file file_input_raw was rewound 26 times
      rgb_lagged_sum|   8|   1000000|     100|0.75025588|  PASSED
# The file file_input_raw was rewound 29 times
      rgb_lagged_sum|   9|   1000000|     100|0.49625842|  PASSED
# The file file_input_raw was rewound 32 times
      rgb_lagged_sum|  10|   1000000|     100|0.74186420|  PASSED
# The file file_input_raw was rewound 35 times
      rgb_lagged_sum|  11|   1000000|     100|0.95075159|  PASSED
# The file file_input_raw was rewound 38 times
      rgb_lagged_sum|  12|   1000000|     100|0.20457436|  PASSED
# The file file_input_raw was rewound 42 times
      rgb_lagged_sum|  13|   1000000|     100|0.38380392|  PASSED
# The file file_input_raw was rewound 46 times
      rgb_lagged_sum|  14|   1000000|     100|0.36071578|  PASSED
# The file file_input_raw was rewound 51 times
      rgb_lagged_sum|  15|   1000000|     100|0.00829390|  PASSED
# The file file_input_raw was rewound 55 times
      rgb_lagged_sum|  16|   1000000|     100|0.57666395|  PASSED
# The file file_input_raw was rewound 60 times
      rgb_lagged_sum|  17|   1000000|     100|0.76473173|  PASSED
# The file file_input_raw was rewound 65 times
      rgb_lagged_sum|  18|   1000000|     100|0.41578459|  PASSED
# The file file_input_raw was rewound 71 times
      rgb_lagged_sum|  19|   1000000|     100|0.99159799|  PASSED
# The file file_input_raw was rewound 77 times
      rgb_lagged_sum|  20|   1000000|     100|0.32769294|  PASSED
# The file file_input_raw was rewound 83 times
      rgb_lagged_sum|  21|   1000000|     100|0.93908723|  PASSED
# The file file_input_raw was rewound 89 times
      rgb_lagged_sum|  22|   1000000|     100|0.21834900|  PASSED
# The file file_input_raw was rewound 95 times
      rgb_lagged_sum|  23|   1000000|     100|0.77669306|  PASSED
# The file file_input_raw was rewound 102 times
      rgb_lagged_sum|  24|   1000000|     100|0.67332002|  PASSED
# The file file_input_raw was rewound 109 times
      rgb_lagged_sum|  25|   1000000|     100|0.38258605|  PASSED
# The file file_input_raw was rewound 117 times
      rgb_lagged_sum|  26|   1000000|     100|0.04205557|  PASSED
# The file file_input_raw was rewound 124 times
      rgb_lagged_sum|  27|   1000000|     100|0.97791293|  PASSED
# The file file_input_raw was rewound 132 times
      rgb_lagged_sum|  28|   1000000|     100|0.65316434|  PASSED
# The file file_input_raw was rewound 140 times
      rgb_lagged_sum|  29|   1000000|     100|0.80146132|  PASSED
# The file file_input_raw was rewound 149 times
      rgb_lagged_sum|  30|   1000000|     100|0.37987553|  PASSED
# The file file_input_raw was rewound 158 times
      rgb_lagged_sum|  31|   1000000|     100|0.00162210|   WEAK
# The file file_input_raw was rewound 167 times
      rgb_lagged_sum|  32|   1000000|     100|0.63803843|  PASSED
# The file file_input_raw was rewound 167 times
     rgb_kstest_test|   0|     10000|    1000|0.96115995|  PASSED
# The file file_input_raw was rewound 167 times
     dab_bytedistrib|   0|  51200000|       1|0.31793136|  PASSED
# The file file_input_raw was rewound 167 times
             dab_dct| 256|     50000|       1|0.45562880|  PASSED
Preparing to run test 207.  ntuple = 0
# The file file_input_raw was rewound 167 times
        dab_filltree|  32|  15000000|       1|0.79566020|  PASSED
        dab_filltree|  32|  15000000|       1|0.01492029|  PASSED
Preparing to run test 208.  ntuple = 0
# The file file_input_raw was rewound 168 times
       dab_filltree2|   0|   5000000|       1|0.88946088|  PASSED
       dab_filltree2|   1|   5000000|       1|0.66182840|  PASSED
Preparing to run test 209.  ntuple = 0
# The file file_input_raw was rewound 168 times
        dab_monobit2|  12|  65000000|       1|0.42576186|  PASSED  

peninnah ~ # du -h fg2.bin
1.3G	fg2.bin
peninnah ~ # ent fg2.bin
Entropy = 8.000000 bits per byte.

Optimum compression would reduce the size
of this 1303843328 byte file by 0 percent.

Chi square distribution for 1303843328 samples is 284.35, and randomly
would exceed this value 9.99 percent of the times.

Arithmetic mean value of data bytes is 127.4954 (127.5 = random).
Monte Carlo value for Pi is 3.141632114 (error 0.00 percent).
Serial correlation coefficient is -0.000032 (totally uncorrelated = 0.0).

peninnah ~ # dieharder -a -g 201 -f fg2.bin
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |           filename             |rands/second|
 file_input_raw|                         fg2.bin|  2.25e+07  |
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.51690876|  PASSED
      diehard_operm5|   0|   1000000|     100|0.40346765|  PASSED
  diehard_rank_32x32|   0|     40000|     100|0.93217934|  PASSED
    diehard_rank_6x8|   0|    100000|     100|0.43367847|  PASSED
   diehard_bitstream|   0|   2097152|     100|0.66720249|  PASSED
        diehard_opso|   0|   2097152|     100|0.86010573|  PASSED
        diehard_oqso|   0|   2097152|     100|0.24593153|  PASSED
         diehard_dna|   0|   2097152|     100|0.06138150|  PASSED
diehard_count_1s_str|   0|    256000|     100|0.43683325|  PASSED
diehard_count_1s_byt|   0|    256000|     100|0.35921097|  PASSED
 diehard_parking_lot|   0|     12000|     100|0.66609484|  PASSED
    diehard_2dsphere|   2|      8000|     100|0.89297189|  PASSED
    diehard_3dsphere|   3|      4000|     100|0.96687561|  PASSED
     diehard_squeeze|   0|    100000|     100|0.72926845|  PASSED
        diehard_sums|   0|       100|     100|0.00070732|   WEAK
        diehard_runs|   0|    100000|     100|0.58813360|  PASSED
        diehard_runs|   0|    100000|     100|0.85788145|  PASSED
       diehard_craps|   0|    200000|     100|0.72997672|  PASSED
       diehard_craps|   0|    200000|     100|0.78468205|  PASSED
 marsaglia_tsang_gcd|   0|  10000000|     100|0.00004506|   WEAK
 marsaglia_tsang_gcd|   0|  10000000|     100|0.55156943|  PASSED
         sts_monobit|   1|    100000|     100|0.45774566|  PASSED
            sts_runs|   2|    100000|     100|0.96042269|  PASSED
          sts_serial|   1|    100000|     100|0.99443515|  PASSED
          sts_serial|   2|    100000|     100|0.10639532|  PASSED
          sts_serial|   3|    100000|     100|0.75641448|  PASSED
          sts_serial|   3|    100000|     100|0.90420108|  PASSED
          sts_serial|   4|    100000|     100|0.75016342|  PASSED
          sts_serial|   4|    100000|     100|0.08575288|  PASSED
          sts_serial|   5|    100000|     100|0.03281594|  PASSED
          sts_serial|   5|    100000|     100|0.19524235|  PASSED
          sts_serial|   6|    100000|     100|0.25109686|  PASSED
          sts_serial|   6|    100000|     100|0.58659811|  PASSED
          sts_serial|   7|    100000|     100|0.43221129|  PASSED
          sts_serial|   7|    100000|     100|0.81175508|  PASSED
          sts_serial|   8|    100000|     100|0.63456658|  PASSED
          sts_serial|   8|    100000|     100|0.65063391|  PASSED
          sts_serial|   9|    100000|     100|0.58288735|  PASSED
          sts_serial|   9|    100000|     100|0.71193409|  PASSED
          sts_serial|  10|    100000|     100|0.62519797|  PASSED
          sts_serial|  10|    100000|     100|0.55146077|  PASSED
          sts_serial|  11|    100000|     100|0.76770489|  PASSED
          sts_serial|  11|    100000|     100|0.59139324|  PASSED
          sts_serial|  12|    100000|     100|0.94453984|  PASSED
          sts_serial|  12|    100000|     100|0.94841134|  PASSED
          sts_serial|  13|    100000|     100|0.31653993|  PASSED
          sts_serial|  13|    100000|     100|0.14829483|  PASSED
          sts_serial|  14|    100000|     100|0.42320056|  PASSED
          sts_serial|  14|    100000|     100|0.10925685|  PASSED
          sts_serial|  15|    100000|     100|0.83878977|  PASSED
          sts_serial|  15|    100000|     100|0.25782489|  PASSED
          sts_serial|  16|    100000|     100|0.66793322|  PASSED
          sts_serial|  16|    100000|     100|0.55162347|  PASSED
         rgb_bitdist|   1|    100000|     100|0.89591957|  PASSED
         rgb_bitdist|   2|    100000|     100|0.98614161|  PASSED
         rgb_bitdist|   3|    100000|     100|0.80316018|  PASSED
         rgb_bitdist|   4|    100000|     100|0.89736784|  PASSED
         rgb_bitdist|   5|    100000|     100|0.29428507|  PASSED
         rgb_bitdist|   6|    100000|     100|0.95422575|  PASSED
         rgb_bitdist|   7|    100000|     100|0.39659444|  PASSED
         rgb_bitdist|   8|    100000|     100|0.46010761|  PASSED
         rgb_bitdist|   9|    100000|     100|0.76510075|  PASSED
         rgb_bitdist|  10|    100000|     100|0.95714334|  PASSED
         rgb_bitdist|  11|    100000|     100|0.35646381|  PASSED
         rgb_bitdist|  12|    100000|     100|0.98517330|  PASSED
rgb_minimum_distance|   2|     10000|    1000|0.34562317|  PASSED
rgb_minimum_distance|   3|     10000|    1000|0.00929810|  PASSED
rgb_minimum_distance|   4|     10000|    1000|0.75795839|  PASSED
rgb_minimum_distance|   5|     10000|    1000|0.00873640|  PASSED
    rgb_permutations|   2|    100000|     100|0.49694367|  PASSED
    rgb_permutations|   3|    100000|     100|0.65402344|  PASSED
    rgb_permutations|   4|    100000|     100|0.79788641|  PASSED
    rgb_permutations|   5|    100000|     100|0.58529553|  PASSED
      rgb_lagged_sum|   0|   1000000|     100|0.52287218|  PASSED
      rgb_lagged_sum|   1|   1000000|     100|0.22764333|  PASSED
      rgb_lagged_sum|   2|   1000000|     100|0.17172871|  PASSED
      rgb_lagged_sum|   3|   1000000|     100|0.05124946|  PASSED
      rgb_lagged_sum|   4|   1000000|     100|0.49713592|  PASSED
      rgb_lagged_sum|   5|   1000000|     100|0.45635542|  PASSED
      rgb_lagged_sum|   6|   1000000|     100|0.96830965|  PASSED
      rgb_lagged_sum|   7|   1000000|     100|0.53419506|  PASSED
      rgb_lagged_sum|   8|   1000000|     100|0.86494381|  PASSED
      rgb_lagged_sum|   9|   1000000|     100|0.72881545|  PASSED
      rgb_lagged_sum|  10|   1000000|     100|0.56544878|  PASSED
      rgb_lagged_sum|  11|   1000000|     100|0.43609672|  PASSED
      rgb_lagged_sum|  12|   1000000|     100|0.91400206|  PASSED
      rgb_lagged_sum|  13|   1000000|     100|0.60227275|  PASSED
      rgb_lagged_sum|  14|   1000000|     100|0.56538826|  PASSED
      rgb_lagged_sum|  15|   1000000|     100|0.06302978|  PASSED
      rgb_lagged_sum|  16|   1000000|     100|0.16808054|  PASSED
      rgb_lagged_sum|  17|   1000000|     100|0.55036083|  PASSED
      rgb_lagged_sum|  18|   1000000|     100|0.93720548|  PASSED
      rgb_lagged_sum|  19|   1000000|     100|0.37353185|  PASSED
      rgb_lagged_sum|  20|   1000000|     100|0.13472207|  PASSED
      rgb_lagged_sum|  21|   1000000|     100|0.44509225|  PASSED
      rgb_lagged_sum|  22|   1000000|     100|0.76205513|  PASSED
      rgb_lagged_sum|  23|   1000000|     100|0.62304135|  PASSED
      rgb_lagged_sum|  24|   1000000|     100|0.39094558|  PASSED
      rgb_lagged_sum|  25|   1000000|     100|0.50961722|  PASSED
      rgb_lagged_sum|  26|   1000000|     100|0.15803949|  PASSED
      rgb_lagged_sum|  27|   1000000|     100|0.09251363|  PASSED
      rgb_lagged_sum|  28|   1000000|     100|0.58331044|  PASSED
      rgb_lagged_sum|  29|   1000000|     100|0.12363069|  PASSED
      rgb_lagged_sum|  30|   1000000|     100|0.71458079|  PASSED
      rgb_lagged_sum|  31|   1000000|     100|0.66807924|  PASSED
      rgb_lagged_sum|  32|   1000000|     100|0.65399068|  PASSED
     rgb_kstest_test|   0|     10000|    1000|0.02178401|  PASSED
     dab_bytedistrib|   0|  51200000|       1|0.36573309|  PASSED
             dab_dct| 256|     50000|       1|0.56628701|  PASSED
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|       1|0.28801332|  PASSED
        dab_filltree|  32|  15000000|       1|0.59182162|  PASSED
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|       1|0.19562700|  PASSED
       dab_filltree2|   1|   5000000|       1|0.13690412|  PASSED
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|       1|0.52568327|  PASSED

As another test, I used a FG to seed /dev/random via something called rngdi and then told gnupg to generate a new 4096 bit key. It was done within a minute, whereas a very similar machine operating without a FG took several minutes. I don't know if this is the right way to generate a key using such a device. I get strange results catting it directly into /dev/random -- if I then cat /dev/random > somewhere.bin the data barely trickles out. Even the rngd thing goes slow relative to a direct dd from /dev/myFG, and I know from very quick research that this is likely the result of obnoxious built-in saftey measures on /dev/random.

  1. Gentoo has it in the sys-apps/rng-tools package.

One Response

  1. [...] now. Others have done of course better than me and published their own tests waaaaay faster: mod6, danielpbarron, trinque, BingoBoingo. How about you, what's your own FG saying to you? Hey, they have been [...]

Leave a Reply

Your words may be altered or altogether purged in accordance with my preference to abstain from publishing statements that may be unnecessarily offensive to other readers. Your criticism is welcome. Your name and website are optional. Some HTML tags are allowed.