The Efficient Randomness Testing using Boolean Functions [SeCrypt 2017]

Authors: Marek Sys, Dusan Klinec, Petr Svenda

Primary contact: Marek Sys

Abstract: The wide range of security applications requires data either truly random or indistinguishable from the random. The statistical tests included in batteries like NIST STS or Dieharder are frequently used to assess this randomness property. We designed principally simple, yet powerful statistical randomness test working on the bit level and based on a search for boolean function(s) exhibiting bias not expected for truly random data when applied to the tested stream. The deviances are detected in seconds rather than tens of minutes required by the common batteries. Importantly, the boolean function exhibiting the bias directly describes the pattern responsible for this bias - allowing for construction of bit predictor or fixing the cause of bias in tested function design. The present bias is frequently detected in at least order of magnitude less data than required for NIST STS or Dieharder showing that the tests included in these batteries are either too simple to spot the common biases (like Monobit test) or overly complex (like Fourier Transform test) which requires an extensive amount of data. The proposed approach called BoolTest fills this gap. The performance was verified on more than 20 real world cryptographic functions – block and stream ciphers, hash functions and pseudorandom generators. Among others, the previously unknown bias in output of C rand() and Java Random generators which can be utilized as practical distinguisher was found.

Bibtex (regular paper)

   author = {Marek Sys \and Dusan Klinec \and Petr Svenda},
   title = {The Efficient Randomness Testing using Boolean Functions},
   booktitle = {14th International Conference on Security and Cryptography (Secrypt'2017)},
   year = {2017},
   pages = {92--103},
   isbn = {978-989-758-259-2},
   publisher = {SCITEPRESS}