Krypto: Alternative zu NIST_800-22 ?

Oct 07, 2026 0 Replies

Statistische Tests sind als Grundlage unverzichtbar für die Beurteilung von Zufallszahlen. Solch ein Test ist der bekannte NIST_800-22. Die kryptographische Sicherheit ist ebenso eine wichtige Eigenschaft. Diese Eigenschaft können statistische Tests allerdings nicht/kaum feststellen.



Ich habe mich gestern intensiv um alternative Prüfmittel gekümmert. Resultat: Eine lohnende praktische Alternative für Privatleute zum NIST_800-22 gibt es nicht. Eine Alternative _wäre_ der modernere 800-90b.



formatting link
Die vorstehend gezeigten Tests sind auch nichts entscheidend Anderes als der 800-22. Der 800-22 glänzt zudem mit umfangreichen und strukturierten Resultaten.



Absolut betrachtet, ist der Test 'Big Crunch' eine Alternative, die mit etwa 160 Tests auch die kryptographische Sicherheit feststellen kann. Dazu werden jedoch Tera-Byte an Daten benötigt, die über Tage und Wochen hinweg



24/7 analysiert werden müssen. Das ist für Privatleute jedoch hanebüchener Unsinn.

Was den Punkt 'Unvorhersagbarkeit' angeht, sind rdrand und rdseed exzellent. Es gibt da zudem auch keine Mengenbegrenzung.



'rdtsc' im Zusammenwirken mit 'randtsc' liefert ebenso 'Unvorhersagbarkeit'. Weil die Verzögerungswirkungen der HW+SW des Computers unterlegt sind und sich aufsummieren. Diese Verzögerungswirkungen, wie auch die interne (randtsc), sind beide zufällig. Da der Counter etwa 188 Jahre braucht, bis zum Überlauf nach 0, liegt hier praktisch ebenfalls keine Mengenbegrenzung vor. Statistische Testergebnisse sind außerordentlich gut, besser als bei 'rdrand/rdseed'.


Der 800-90b ist leider ein C++Projekt, das wie hier üblich, massenweise auf externe 3rd-Party-Libraries setzt, die kaum portabel sind, unter dem Aspekt, daß diese ja zu 100% vorhanden sein müssen. Konkret getestet wurde nur mit gcc unter einem Linux.



============================================================================================== ## Requirements This code package requires a C++11 compiler. The code uses OpenMP directives, so compiler support for OpenMP is expected. GCC is preferred (and the only platform tested). There is one method that involves a GCC built-in function (`chi_square_tests.h -> binary_goodness_of_fit() -> __builtin_popcount()`). To run this you will need some compiler that supplies this GCC built-in function (GCC and clang both do so).



The resulting binary is linked with bzlib, divsufsort, jsoncpp, GMP MP and GNU MPFR, so these libraries (and their associated include files) must be installed and accessible to the compiler.



On Ubuntu they can be installed with `apt-get install libbz2-dev libdivsufsort-dev libjsoncpp-dev libssl-dev libmpfr-dev`. ==============================================================================================



'divsufsort' konnte ich unter FreeBSD aus den Ports installieren, aber mit 'divsufsort64' war es dann z.B. vorbei. Auch -I/usr/include/jsoncpp und <json/json.h> gibt es nicht. <json-c/json.h> existiert, jedoch wurde dann der Name 'Json:' nicht gefunden. Es ist stets ein riesiger Rattenschwanz, mit dem ich meine Zeit nicht verplempern will.



Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required