github.com/safing/portbase@v0.19.5/rng/test/README.md (about) 1 # Entropy Testing 2 3 In order verify that the random package actually generates random enough entropy/data, this test program holds the core functions that generate entropy as well as some noise makers to simulate a running program. 4 5 Please also note that output from `tickFeeder` is never used directly but fed as entropy to the actual RNG - `fortuna`. 6 7 With `tickFeeder`, to be sure that the delivered entropy is of high enough quality, only 1 bit of entropy is expected per generated byte - ie. we gather 8 times the amount we need. The following test below is run on the raw output. 8 9 To test the quality of entropy, first generate random data with the test program: 10 11 go build 12 13 ./test tickfeeder tickfeeder.out 1 # just the additional entropy feed 14 # OR 15 ./test fortuna fortuna.out 10 # the actual CSPRNG with feeders 16 17 Then, run `dieharder`, a random number generator test tool: 18 19 dieharder -a -f output.bin 20 21 Below you can find two test outputs of `dieharder`. 22 Please note that around 5 tests of `dieharder` normally fail. This is expected and even desired. 23 Also, the rng currently reseeds (ie. adds entropy) after 1MB or 10 minutes. 24 25 `dieharder` of two samples of 10MB of fortuna (with feeders) (`go version go1.14.2 linux/amd64` on 21.04.2020): 26 27 #=============================================================================# 28 # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # 29 #=============================================================================# 30 rng_name | filename |rands/second| 31 mt19937| fortuna.out| 1.00e+08 | 32 #=============================================================================# 33 test_name |ntup| tsamples |psamples| p-value |Assessment 34 #=============================================================================# 35 diehard_birthdays| 0| 100| 100|0.69048981| PASSED | 2nd sample: PASSED 36 diehard_operm5| 0| 1000000| 100|0.76010702| PASSED | 2nd sample: PASSED 37 diehard_rank_32x32| 0| 40000| 100|0.86291558| PASSED | 2nd sample: PASSED 38 diehard_rank_6x8| 0| 100000| 100|0.63715647| PASSED | 2nd sample: PASSED 39 diehard_bitstream| 0| 2097152| 100|0.25389670| PASSED | 2nd sample: PASSED 40 diehard_opso| 0| 2097152| 100|0.70928590| PASSED | 2nd sample: PASSED 41 diehard_oqso| 0| 2097152| 100|0.75643141| PASSED | 2nd sample: PASSED 42 diehard_dna| 0| 2097152| 100|0.57096286| PASSED | 2nd sample: PASSED 43 diehard_count_1s_str| 0| 256000| 100|0.39650366| PASSED | 2nd sample: PASSED 44 diehard_count_1s_byt| 0| 256000| 100|0.26040557| PASSED | 2nd sample: PASSED 45 diehard_parking_lot| 0| 12000| 100|0.92327672| PASSED | 2nd sample: PASSED 46 diehard_2dsphere| 2| 8000| 100|0.86507605| PASSED | 2nd sample: PASSED 47 diehard_3dsphere| 3| 4000| 100|0.70845388| PASSED | 2nd sample: PASSED 48 diehard_squeeze| 0| 100000| 100|0.99744782| WEAK | 2nd sample: PASSED 49 diehard_sums| 0| 100| 100|0.27275938| PASSED | 2nd sample: PASSED 50 diehard_runs| 0| 100000| 100|0.27299936| PASSED | 2nd sample: PASSED 51 diehard_runs| 0| 100000| 100|0.42043270| PASSED | 2nd sample: PASSED 52 diehard_craps| 0| 200000| 100|0.91674884| PASSED | 2nd sample: PASSED 53 diehard_craps| 0| 200000| 100|0.77856237| PASSED | 2nd sample: PASSED 54 marsaglia_tsang_gcd| 0| 10000000| 100|0.77922797| PASSED | 2nd sample: PASSED 55 marsaglia_tsang_gcd| 0| 10000000| 100|0.94589532| PASSED | 2nd sample: PASSED 56 sts_monobit| 1| 100000| 100|0.99484549| PASSED | 2nd sample: PASSED 57 sts_runs| 2| 100000| 100|0.70036713| PASSED | 2nd sample: PASSED 58 sts_serial| 1| 100000| 100|0.79544015| PASSED | 2nd sample: PASSED 59 sts_serial| 2| 100000| 100|0.91473958| PASSED | 2nd sample: PASSED 60 sts_serial| 3| 100000| 100|0.66528037| PASSED | 2nd sample: PASSED 61 sts_serial| 3| 100000| 100|0.84028312| PASSED | 2nd sample: PASSED 62 sts_serial| 4| 100000| 100|0.82253130| PASSED | 2nd sample: PASSED 63 sts_serial| 4| 100000| 100|0.90695315| PASSED | 2nd sample: PASSED 64 sts_serial| 5| 100000| 100|0.55160515| PASSED | 2nd sample: PASSED 65 sts_serial| 5| 100000| 100|0.05256789| PASSED | 2nd sample: PASSED 66 sts_serial| 6| 100000| 100|0.25857850| PASSED | 2nd sample: PASSED 67 sts_serial| 6| 100000| 100|0.58661649| PASSED | 2nd sample: PASSED 68 sts_serial| 7| 100000| 100|0.46915559| PASSED | 2nd sample: PASSED 69 sts_serial| 7| 100000| 100|0.57273130| PASSED | 2nd sample: PASSED 70 sts_serial| 8| 100000| 100|0.99182961| PASSED | 2nd sample: PASSED 71 sts_serial| 8| 100000| 100|0.86913367| PASSED | 2nd sample: PASSED 72 sts_serial| 9| 100000| 100|0.19259756| PASSED | 2nd sample: PASSED 73 sts_serial| 9| 100000| 100|0.61225842| PASSED | 2nd sample: PASSED 74 sts_serial| 10| 100000| 100|0.40792308| PASSED | 2nd sample: PASSED 75 sts_serial| 10| 100000| 100|0.99930785| WEAK | 2nd sample: PASSED 76 sts_serial| 11| 100000| 100|0.07296973| PASSED | 2nd sample: PASSED 77 sts_serial| 11| 100000| 100|0.04906522| PASSED | 2nd sample: PASSED 78 sts_serial| 12| 100000| 100|0.66400927| PASSED | 2nd sample: PASSED 79 sts_serial| 12| 100000| 100|0.67947609| PASSED | 2nd sample: PASSED 80 sts_serial| 13| 100000| 100|0.20412325| PASSED | 2nd sample: PASSED 81 sts_serial| 13| 100000| 100|0.19781734| PASSED | 2nd sample: PASSED 82 sts_serial| 14| 100000| 100|0.08541533| PASSED | 2nd sample: PASSED 83 sts_serial| 14| 100000| 100|0.07438464| PASSED | 2nd sample: PASSED 84 sts_serial| 15| 100000| 100|0.04607276| PASSED | 2nd sample: PASSED 85 sts_serial| 15| 100000| 100|0.56460340| PASSED | 2nd sample: PASSED 86 sts_serial| 16| 100000| 100|0.40211405| PASSED | 2nd sample: PASSED 87 sts_serial| 16| 100000| 100|0.81369172| PASSED | 2nd sample: PASSED 88 rgb_bitdist| 1| 100000| 100|0.52317549| PASSED | 2nd sample: PASSED 89 rgb_bitdist| 2| 100000| 100|0.49819655| PASSED | 2nd sample: PASSED 90 rgb_bitdist| 3| 100000| 100|0.65830167| PASSED | 2nd sample: PASSED 91 rgb_bitdist| 4| 100000| 100|0.75278398| PASSED | 2nd sample: PASSED 92 rgb_bitdist| 5| 100000| 100|0.23537303| PASSED | 2nd sample: PASSED 93 rgb_bitdist| 6| 100000| 100|0.82461608| PASSED | 2nd sample: PASSED 94 rgb_bitdist| 7| 100000| 100|0.46944789| PASSED | 2nd sample: PASSED 95 rgb_bitdist| 8| 100000| 100|0.44371293| PASSED | 2nd sample: PASSED 96 rgb_bitdist| 9| 100000| 100|0.61647469| PASSED | 2nd sample: PASSED 97 rgb_bitdist| 10| 100000| 100|0.97623808| PASSED | 2nd sample: PASSED 98 rgb_bitdist| 11| 100000| 100|0.26037998| PASSED | 2nd sample: PASSED 99 rgb_bitdist| 12| 100000| 100|0.59217788| PASSED | 2nd sample: PASSED 100 rgb_minimum_distance| 2| 10000| 1000|0.19809129| PASSED | 2nd sample: PASSED 101 rgb_minimum_distance| 3| 10000| 1000|0.97363365| PASSED | 2nd sample: PASSED 102 rgb_minimum_distance| 4| 10000| 1000|0.62281709| PASSED | 2nd sample: PASSED 103 rgb_minimum_distance| 5| 10000| 1000|0.13655852| PASSED | 2nd sample: PASSED 104 rgb_permutations| 2| 100000| 100|0.33726465| PASSED | 2nd sample: PASSED 105 rgb_permutations| 3| 100000| 100|0.21992025| PASSED | 2nd sample: WEAK 106 rgb_permutations| 4| 100000| 100|0.27074573| PASSED | 2nd sample: PASSED 107 rgb_permutations| 5| 100000| 100|0.76925248| PASSED | 2nd sample: PASSED 108 rgb_lagged_sum| 0| 1000000| 100|0.91881971| PASSED | 2nd sample: PASSED 109 rgb_lagged_sum| 1| 1000000| 100|0.08282106| PASSED | 2nd sample: PASSED 110 rgb_lagged_sum| 2| 1000000| 100|0.55991289| PASSED | 2nd sample: WEAK 111 rgb_lagged_sum| 3| 1000000| 100|0.94939920| PASSED | 2nd sample: PASSED 112 rgb_lagged_sum| 4| 1000000| 100|0.21248759| PASSED | 2nd sample: PASSED 113 rgb_lagged_sum| 5| 1000000| 100|0.99308883| PASSED | 2nd sample: PASSED 114 rgb_lagged_sum| 6| 1000000| 100|0.83174944| PASSED | 2nd sample: PASSED 115 rgb_lagged_sum| 7| 1000000| 100|0.49883983| PASSED | 2nd sample: PASSED 116 rgb_lagged_sum| 8| 1000000| 100|0.99900807| WEAK | 2nd sample: PASSED 117 rgb_lagged_sum| 9| 1000000| 100|0.74164128| PASSED | 2nd sample: PASSED 118 rgb_lagged_sum| 10| 1000000| 100|0.53367081| PASSED | 2nd sample: PASSED 119 rgb_lagged_sum| 11| 1000000| 100|0.41808417| PASSED | 2nd sample: PASSED 120 rgb_lagged_sum| 12| 1000000| 100|0.96082733| PASSED | 2nd sample: PASSED 121 rgb_lagged_sum| 13| 1000000| 100|0.38208924| PASSED | 2nd sample: PASSED 122 rgb_lagged_sum| 14| 1000000| 100|0.98335747| PASSED | 2nd sample: PASSED 123 rgb_lagged_sum| 15| 1000000| 100|0.68708033| PASSED | 2nd sample: PASSED 124 rgb_lagged_sum| 16| 1000000| 100|0.49715110| PASSED | 2nd sample: PASSED 125 rgb_lagged_sum| 17| 1000000| 100|0.68418225| PASSED | 2nd sample: PASSED 126 rgb_lagged_sum| 18| 1000000| 100|0.97255087| PASSED | 2nd sample: PASSED 127 rgb_lagged_sum| 19| 1000000| 100|0.99556843| WEAK | 2nd sample: PASSED 128 rgb_lagged_sum| 20| 1000000| 100|0.50758123| PASSED | 2nd sample: PASSED 129 rgb_lagged_sum| 21| 1000000| 100|0.98435826| PASSED | 2nd sample: PASSED 130 rgb_lagged_sum| 22| 1000000| 100|0.15752743| PASSED | 2nd sample: PASSED 131 rgb_lagged_sum| 23| 1000000| 100|0.98607886| PASSED | 2nd sample: PASSED 132 rgb_lagged_sum| 24| 1000000| 100|0.86645723| PASSED | 2nd sample: PASSED 133 rgb_lagged_sum| 25| 1000000| 100|0.87384758| PASSED | 2nd sample: PASSED 134 rgb_lagged_sum| 26| 1000000| 100|0.98680940| PASSED | 2nd sample: PASSED 135 rgb_lagged_sum| 27| 1000000| 100|0.56386729| PASSED | 2nd sample: PASSED 136 rgb_lagged_sum| 28| 1000000| 100|0.16874165| PASSED | 2nd sample: PASSED 137 rgb_lagged_sum| 29| 1000000| 100|0.10369211| PASSED | 2nd sample: PASSED 138 rgb_lagged_sum| 30| 1000000| 100|0.91356341| PASSED | 2nd sample: PASSED 139 rgb_lagged_sum| 31| 1000000| 100|0.42526940| PASSED | 2nd sample: PASSED 140 rgb_lagged_sum| 32| 1000000| 100|0.99939460| WEAK | 2nd sample: PASSED 141 rgb_kstest_test| 0| 10000| 1000|0.11414525| PASSED | 2nd sample: PASSED 142 dab_bytedistrib| 0| 51200000| 1|0.27693890| PASSED | 2nd sample: PASSED 143 dab_dct| 256| 50000| 1|0.15807123| PASSED | 2nd sample: PASSED 144 Preparing to run test 207. ntuple = 0 145 dab_filltree| 32| 15000000| 1|0.33275771| PASSED | 2nd sample: PASSED 146 dab_filltree| 32| 15000000| 1|0.15704033| PASSED | 2nd sample: PASSED 147 Preparing to run test 208. ntuple = 0 148 dab_filltree2| 0| 5000000| 1|0.85562670| PASSED | 2nd sample: PASSED 149 dab_filltree2| 1| 5000000| 1|0.35187836| PASSED | 2nd sample: PASSED 150 Preparing to run test 209. ntuple = 0 151 dab_monobit2| 12| 65000000| 1|0.03099468| PASSED | 2nd sample: PASSED 152 153 `dieharder` output of 22KB of contextswitch (`go version go1.10.3 linux/amd64` on 23.08.2018): 154 155 #=============================================================================# 156 # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # 157 #=============================================================================# 158 rng_name | filename |rands/second| 159 mt19937| output.bin| 1.00e+08 | 160 #=============================================================================# 161 test_name |ntup| tsamples |psamples| p-value |Assessment 162 #=============================================================================# 163 diehard_birthdays| 0| 100| 100|0.75124818| PASSED 164 diehard_operm5| 0| 1000000| 100|0.71642114| PASSED 165 diehard_rank_32x32| 0| 40000| 100|0.66406749| PASSED 166 diehard_rank_6x8| 0| 100000| 100|0.79742497| PASSED 167 diehard_bitstream| 0| 2097152| 100|0.68336079| PASSED 168 diehard_opso| 0| 2097152| 100|0.99670345| WEAK 169 diehard_oqso| 0| 2097152| 100|0.85930861| PASSED 170 diehard_dna| 0| 2097152| 100|0.77857540| PASSED 171 diehard_count_1s_str| 0| 256000| 100|0.27851730| PASSED 172 diehard_count_1s_byt| 0| 256000| 100|0.29570009| PASSED 173 diehard_parking_lot| 0| 12000| 100|0.51526020| PASSED 174 diehard_2dsphere| 2| 8000| 100|0.49199324| PASSED 175 diehard_3dsphere| 3| 4000| 100|0.99008122| PASSED 176 diehard_squeeze| 0| 100000| 100|0.95518110| PASSED 177 diehard_sums| 0| 100| 100|0.00015930| WEAK 178 diehard_runs| 0| 100000| 100|0.50091086| PASSED 179 diehard_runs| 0| 100000| 100|0.44091340| PASSED 180 diehard_craps| 0| 200000| 100|0.77284264| PASSED 181 diehard_craps| 0| 200000| 100|0.71027434| PASSED 182 marsaglia_tsang_gcd| 0| 10000000| 100|0.38138922| PASSED 183 marsaglia_tsang_gcd| 0| 10000000| 100|0.36661590| PASSED 184 sts_monobit| 1| 100000| 100|0.06209802| PASSED 185 sts_runs| 2| 100000| 100|0.82506539| PASSED 186 sts_serial| 1| 100000| 100|0.99198615| PASSED 187 sts_serial| 2| 100000| 100|0.85604831| PASSED 188 sts_serial| 3| 100000| 100|0.06613657| PASSED 189 sts_serial| 3| 100000| 100|0.16787860| PASSED 190 sts_serial| 4| 100000| 100|0.45227401| PASSED 191 sts_serial| 4| 100000| 100|0.43529092| PASSED 192 sts_serial| 5| 100000| 100|0.99912474| WEAK 193 sts_serial| 5| 100000| 100|0.94754128| PASSED 194 sts_serial| 6| 100000| 100|0.98406523| PASSED 195 sts_serial| 6| 100000| 100|0.92895983| PASSED 196 sts_serial| 7| 100000| 100|0.45965410| PASSED 197 sts_serial| 7| 100000| 100|0.64185152| PASSED 198 sts_serial| 8| 100000| 100|0.57922926| PASSED 199 sts_serial| 8| 100000| 100|0.52390292| PASSED 200 sts_serial| 9| 100000| 100|0.82722325| PASSED 201 sts_serial| 9| 100000| 100|0.89384819| PASSED 202 sts_serial| 10| 100000| 100|0.79877889| PASSED 203 sts_serial| 10| 100000| 100|0.49562348| PASSED 204 sts_serial| 11| 100000| 100|0.09217966| PASSED 205 sts_serial| 11| 100000| 100|0.00342361| WEAK 206 sts_serial| 12| 100000| 100|0.60119444| PASSED 207 sts_serial| 12| 100000| 100|0.20420318| PASSED 208 sts_serial| 13| 100000| 100|0.76867489| PASSED 209 sts_serial| 13| 100000| 100|0.35717970| PASSED 210 sts_serial| 14| 100000| 100|0.67364089| PASSED 211 sts_serial| 14| 100000| 100|0.98667204| PASSED 212 sts_serial| 15| 100000| 100|0.24328833| PASSED 213 sts_serial| 15| 100000| 100|0.52098866| PASSED 214 sts_serial| 16| 100000| 100|0.48845863| PASSED 215 sts_serial| 16| 100000| 100|0.61943558| PASSED 216 rgb_bitdist| 1| 100000| 100|0.24694812| PASSED 217 rgb_bitdist| 2| 100000| 100|0.75873723| PASSED 218 rgb_bitdist| 3| 100000| 100|0.28670990| PASSED 219 rgb_bitdist| 4| 100000| 100|0.41966273| PASSED 220 rgb_bitdist| 5| 100000| 100|0.80463973| PASSED 221 rgb_bitdist| 6| 100000| 100|0.44747725| PASSED 222 rgb_bitdist| 7| 100000| 100|0.35848420| PASSED 223 rgb_bitdist| 8| 100000| 100|0.56585089| PASSED 224 rgb_bitdist| 9| 100000| 100|0.23179559| PASSED 225 rgb_bitdist| 10| 100000| 100|0.83369283| PASSED 226 rgb_bitdist| 11| 100000| 100|0.74761235| PASSED 227 rgb_bitdist| 12| 100000| 100|0.50477673| PASSED 228 rgb_minimum_distance| 2| 10000| 1000|0.29527530| PASSED 229 rgb_minimum_distance| 3| 10000| 1000|0.83681186| PASSED 230 rgb_minimum_distance| 4| 10000| 1000|0.85939646| PASSED 231 rgb_minimum_distance| 5| 10000| 1000|0.90229335| PASSED 232 rgb_permutations| 2| 100000| 100|0.99010460| PASSED 233 rgb_permutations| 3| 100000| 100|0.99360922| PASSED 234 rgb_permutations| 4| 100000| 100|0.30113906| PASSED 235 rgb_permutations| 5| 100000| 100|0.60701235| PASSED 236 rgb_lagged_sum| 0| 1000000| 100|0.37080580| PASSED 237 rgb_lagged_sum| 1| 1000000| 100|0.91852932| PASSED 238 rgb_lagged_sum| 2| 1000000| 100|0.74568323| PASSED 239 rgb_lagged_sum| 3| 1000000| 100|0.64070201| PASSED 240 rgb_lagged_sum| 4| 1000000| 100|0.53802729| PASSED 241 rgb_lagged_sum| 5| 1000000| 100|0.67865656| PASSED 242 rgb_lagged_sum| 6| 1000000| 100|0.85161494| PASSED 243 rgb_lagged_sum| 7| 1000000| 100|0.37312323| PASSED 244 rgb_lagged_sum| 8| 1000000| 100|0.17841759| PASSED 245 rgb_lagged_sum| 9| 1000000| 100|0.85795513| PASSED 246 rgb_lagged_sum| 10| 1000000| 100|0.79843176| PASSED 247 rgb_lagged_sum| 11| 1000000| 100|0.21320830| PASSED 248 rgb_lagged_sum| 12| 1000000| 100|0.94709672| PASSED 249 rgb_lagged_sum| 13| 1000000| 100|0.12600611| PASSED 250 rgb_lagged_sum| 14| 1000000| 100|0.26780352| PASSED 251 rgb_lagged_sum| 15| 1000000| 100|0.07862730| PASSED 252 rgb_lagged_sum| 16| 1000000| 100|0.21102254| PASSED 253 rgb_lagged_sum| 17| 1000000| 100|0.82967141| PASSED 254 rgb_lagged_sum| 18| 1000000| 100|0.05818566| PASSED 255 rgb_lagged_sum| 19| 1000000| 100|0.01010140| PASSED 256 rgb_lagged_sum| 20| 1000000| 100|0.17941782| PASSED 257 rgb_lagged_sum| 21| 1000000| 100|0.98442639| PASSED 258 rgb_lagged_sum| 22| 1000000| 100|0.30352772| PASSED 259 rgb_lagged_sum| 23| 1000000| 100|0.56855155| PASSED 260 rgb_lagged_sum| 24| 1000000| 100|0.27280405| PASSED 261 rgb_lagged_sum| 25| 1000000| 100|0.41141889| PASSED 262 rgb_lagged_sum| 26| 1000000| 100|0.25389013| PASSED 263 rgb_lagged_sum| 27| 1000000| 100|0.10313177| PASSED 264 rgb_lagged_sum| 28| 1000000| 100|0.76610028| PASSED 265 rgb_lagged_sum| 29| 1000000| 100|0.97903830| PASSED 266 rgb_lagged_sum| 30| 1000000| 100|0.51216732| PASSED 267 rgb_lagged_sum| 31| 1000000| 100|0.98578832| PASSED 268 rgb_lagged_sum| 32| 1000000| 100|0.95078719| PASSED 269 rgb_kstest_test| 0| 10000| 1000|0.24930712| PASSED 270 dab_bytedistrib| 0| 51200000| 1|0.51100031| PASSED 271 dab_dct| 256| 50000| 1|0.28794956| PASSED 272 Preparing to run test 207. ntuple = 0 273 dab_filltree| 32| 15000000| 1|0.93283449| PASSED 274 dab_filltree| 32| 15000000| 1|0.36488075| PASSED 275 Preparing to run test 208. ntuple = 0 276 dab_filltree2| 0| 5000000| 1|0.94036105| PASSED 277 dab_filltree2| 1| 5000000| 1|0.30118240| PASSED 278 Preparing to run test 209. ntuple = 0 279 dab_monobit2| 12| 65000000| 1|0.00209003| WEAK