Willkommen zurück zum zweiten Teil unserer Serie über den Bau eines Zufallszahlengenerators mit einer Strahlenquelle. Nachdem wir uns im letzten Teil mit dem Design und der Implementierung unseres Generators befasst haben, werden wir nun in diesem Teil auf die statistische Überprüfung der erzeugten Zahlen eingehen. Unser Ziel ist es, zu überprüfen, ob diese Zahlen wirklich zufällig sind.

Um einen Überblick über das Projekt zu erlangen empfiehlt es sich den ersten Beitrag zu lesen.

Warum ist das Testen auf Zufälligkeit wichtig?

Bei der Erzeugung von Zufallszahlen spielt die Qualität der Zufälligkeit eine wichtige Rolle, insbesondere in Anwendungen, in denen die Sicherheit entscheidend ist, wie z.B. in der Kryptographie. Eine wahre Zufallszahl sollte nicht vorhersehbar oder reproduzierbar sein, was bedeutet, dass selbst kleinste Muster oder Regelmäßigkeiten in den erzeugten Zahlen ein potentielles Sicherheitsrisiko darstellen könnten.

Was ist die NIST Test Suite?

Die NIST (National Institute of Standards and Technology) Test Suite ist eine Sammlung von statistischen Tests, die entwickelt wurden, um die Zufälligkeit von Binärsequenzen zu bewerten. Sie wurde ursprünglich für die Validierung von kryptographischen Zufallszahlengeneratoren entwickelt und ist heute ein anerkannter Standard in der Industrie.

Die Suite umfasst 15 verschiedene Tests, die auf verschiedene Arten von Mustern und Unregelmäßigkeiten in Binärsequenzen abzielen. Diese umfassen Frequenztests, Lauflängentests, Spektraltests und viele mehr.

Im Detail

  1. Frequency (Monobit) Test: Prüft, ob die Anzahl der 0en und 1en in einer Sequenz etwa gleich ist, was auf echte Zufälligkeit hindeutet.
  2. Frequency Test within a Block: Prüft, ob die Anzahl der 0en und 1en innerhalb kleinerer Blöcke der Sequenz etwa gleich ist.
  3. Runs Test: Prüft, ob die Anzahl der ununterbrochenen Sequenzen von 0en oder 1en (sogenannte „Runs“) innerhalb der Sequenz den Erwartungen entspricht.
  4. Longest Run of Ones in a Block Test: Prüft, ob die Länge der längsten Sequenz von 1en in verschiedenen Blöcken der Sequenz den Erwartungen entspricht.
  5. Binary Matrix Rank Test: Prüft, ob die Ränge von binären Matrizen, die aus der Sequenz generiert werden, den Erwartungen entsprechen.
  6. Discrete Fourier Transform (Spectral) Test: Verwandelt die Sequenz in das Frequenzspektrum und prüft, ob es zu viele Spitzen gibt, was auf nicht-zufällige Muster hindeuten könnte.
  7. Non-overlapping Template Matching Test: Prüft, ob bestimmte vorgegebene Muster zu oft innerhalb der Sequenz auftreten, wenn man die Sequenz in nicht überlappenden Blöcken betrachtet.
  8. Overlapping Template Matching Test: Ähnlich wie der vorherige Test, aber erlaubt überlappende Blöcke.
  9. Maurer’s „Universal Statistical“ Test: Prüft, ob die Sequenz komplex genug ist, um als zufällig zu gelten.
  10. Linear Complexity Test: Prüft, ob die lineare Komplexität der Sequenz (d.h., wie schwer es ist, sie mit einem linearen Feedback-Shift-Register zu reproduzieren) den Erwartungen entspricht.
  11. Serial Test: Prüft, ob alle möglichen Muster von einer bestimmten Länge in der Sequenz etwa gleich oft auftreten.
  12. Approximate Entropy Test: Ähnlich wie der Serial Test, aber prüft die Häufigkeit von Mustern relativ zur erwarteten Häufigkeit.
  13. Cumulative Sums (Cusums) Test: Prüft, ob die kumulativen Summen der Bits in der Sequenz zu weit von null abweichen.
  14. Random Excursions Test: Prüft, ob die Anzahl der Zyklen, in denen die kumulative Summe auf einen bestimmten Wert zurückkehrt, den Erwartungen entspricht.
  15. Random Excursions Variant Test: Ähnlich wie der Random Excursions Test, aber prüft mehr Werte.

Beispiele

  1. Frequency (Monobit) Test: Sequenz: „11001011“. Hier gibt es 5 Einsen und 3 Nullen. Der Test-Statistikwert S = abs(#Einsen – #Nullen)/sqrt(n), wo n die Länge der Sequenz ist. Für diesen Fall ist S = abs(5-3)/sqrt(8) = 0,71. Der p-Wert ist ermittelt durch die CDF der Normalverteilung. Wenn der p-Wert < 0,01, dann ist die Sequenz nicht zufällig.
  2. Frequency Test within a Block: Nehmen wir an, wir teilen die Sequenz „11001011“ in 2 Blöcke: „1100“ und „1011“. Die Teststatistik für jeden Block wird berechnet wie im Monobit Test und dann gemittelt. P-Wert ist ähnlich berechnet.
  3. Runs Test: In „11001011“ gibt es 5 „Runs“ (11, 00, 1, 0, 11). Der erwartete Wert für Runs ist (2n-1)/3, Varianz ist (16n-29)/90. Z = (Observed-Expected)/sqrt(Varianz). P-Wert ist ähnlich berechnet.
  4. Longest Run of Ones in a Block Test: Nehmen wir an, wir teilen „11001011“ in Blöcke der Größe 4: „1100“, „1011“. Die längsten Läufe von 1en sind 2 und 2. Der P-Wert wird durch die Berechnung der Chi-Quadrat-Statistik ermittelt.
  5. Binary Matrix Rank Test: „11010110“ kann als eine 3×3 Matrix dargestellt werden (aufgefüllt mit Nullen). Der Rang der Matrix wird berechnet und der P-Wert durch die Berechnung der Chi-Quadrat-Statistik ermittelt.
  6. Discrete Fourier Transform (Spectral) Test: Eine Fouriertransformation wird auf die Sequenz angewendet und der Test-Statistikwert wird berechnet. Der P-Wert wird durch die CDF der Normalverteilung ermittelt.
  7. Non-overlapping Template Matching Test: Wenn unser Muster „11“ ist und unsere Sequenz „11001011“ ist, gibt es 2 Übereinstimmungen. Der erwartete Wert und die Varianz werden berechnet und der P-Wert wird durch die Berechnung der Chi-Quadrat-Statistik ermittelt.
  8. Overlapping Template Matching Test: Hier könnte dasselbe Muster „11“ in der Sequenz „11001011“ drei Mal vorkommen. Der P-Wert wird ähnlich wie im nicht überlappenden Test berechnet.
  9. Maurer’s „Universal Statistical“ Test: Maurers „Universal Statistical“ Test ist ein Verfahren zur Prüfung der Zufälligkeit von Bitsequenzen. Es basiert auf der Theorie der Kompressionsalgorithmen und bewertet, ob die Sequenz zu stark komprimiert werden kann, was auf eine mangelnde Zufälligkeit hindeuten würde. Dieser Test hat eine hohe Komplexität und benötigt lange Bitsequenzen, um zuverlässige Ergebnisse zu liefern. Hier sind die allgemeinen Schritte des Tests:
    • Initialization: Ein Integer-Parameter L wird gewählt, der die Länge der Bitmuster bestimmt, die berücksichtigt werden. Ein weiterer Parameter Q definiert die Anzahl der Initialisierungsbits, die ausgelassen werden. In der Regel wird L so gewählt, dass 0,7L < log2(n) < L, wobei n die Länge der Bitsequenz ist, und Q ist typischerweise 10*2^L.
    • Parsing the Sequence: Die Sequenz wird in nicht überlappende Blöcke der Länge L aufgeteilt. Für jeden Block wird seine Position (im Q-Nachlauf) in einem Array gespeichert.
    • Computing the Test Statistic: Für jeden Block wird die Differenz zwischen seiner Position und der Position des gleichen Blocks, der zuletzt erschienen ist, berechnet. Diese Differenzen werden als X(i) bezeichnet. Die Teststatistik ist die durchschnittliche Länge dieser Differenzen, subtrahiert mit dem erwarteten Wert und normalisiert durch die Standardabweichung. Der erwartete Wert und die Standardabweichung hängen von L ab und sind in den NIST-Richtlinien tabellarisch aufgeführt.
    • Computing the P-Value: Die Teststatistik folgt einer Normalverteilung, und der P-Wert wird berechnet als die Wahrscheinlichkeit, dass eine standardnormalverteilte Zufallsvariable einen größeren absoluten Wert hat als die beobachtete Teststatistik.
  10. Linear Complexity Test: Die Länge der kürzesten linearen Feedback-Schaltung, die die Sequenz „11001011“ generiert, wird berechnet. Der P-Wert wird durch die Berechnung der Chi-Quadrat-Statistik ermittelt.
  11. Serial Test: In „1100“ treten alle 2-Bit-Muster (00, 01, 10, 11) genau einmal auf. Der P-Wert wird durch die Berechnung der Chi-Quadrat-Statistik ermittelt.
  12. Approximate Entropy Test: In „11001011“ sind die ungefähren Entropien für 2-Bit-Muster und 3-Bit-Muster berechnet und verglichen. Der P-Wert wird durch die CDF der Normalverteilung ermittelt.
  13. Cumulative Sums (Cusums) Test: Die kumulative Summe für „11001011“ (wenn Nullen als -1 behandelt werden) ist berechnet und mit dem erwarteten Wert und der Varianz verglichen. Der P-Wert wird durch die CDF der Normalverteilung ermittelt.
  14. Random Excursions Test: Die Anzahl der Zyklen, in denen die kumulative Summe auf einen bestimmten Wert zurückkehrt, wird gezählt und der P-Wert wird durch die Berechnung der Chi-Quadrat-Statistik ermittelt.
  15. Random Excursions Variant Test: Ähnlich wie der Random Excursions Test, aber prüft mehr Werte. Der P-Wert wird durch die Berechnung der Chi-Quadrat-Statistik ermittelt.

Testen der, mittels GDK-101 erzeugten Zufallszahlen mit der NIST Suite

Nach Erfassung von Gamma-Ereignissen über mehrere Tage wurde ein Bitstream mit 167626 Bits erzeugt. Diese gilt es nun auf Zufälligkeit zu prüfen.

Anleitung zur Installation der NIST Suite s.h. https://github.com/terrillmoore/NIST-Statistical-Test-Suite

Wer sich die Rohdaten anschauen möchte findet sie in der angehängten Datei.

NIST Befehle:

sts % ./assess 16000
           G E N E R A T O R    S E L E C T I O N 
           ______________________________________

    [0] Input File                 [1] Linear Congruential
    [2] Quadratic Congruential I   [3] Quadratic Congruential II
    [4] Cubic Congruential         [5] XOR
    [6] Modular Exponentiation     [7] Blum-Blum-Shub
    [8] Micali-Schnorr             [9] G Using SHA-1

   Enter Choice: 0


                User Prescribed Input File: ../../data/rbitstream.txt

                S T A T I S T I C A L   T E S T S
                _________________________________

    [01] Frequency                       [02] Block Frequency
    [03] Cumulative Sums                 [04] Runs
    [05] Longest Run of Ones             [06] Rank
    [07] Discrete Fourier Transform      [08] Nonperiodic Template Matchings
    [09] Overlapping Template Matchings  [10] Universal Statistical
    [11] Approximate Entropy             [12] Random Excursions
    [13] Random Excursions Variant       [14] Serial
    [15] Linear Complexity

         INSTRUCTIONS
            Enter 0 if you DO NOT want to apply all of the
            statistical tests to each sequence and 1 if you DO.

   Enter Choice: 1

        P a r a m e t e r   A d j u s t m e n t s
        -----------------------------------------
    [1] Block Frequency Test - block length(M):         128
    [2] NonOverlapping Template Test - block length(m): 9
    [3] Overlapping Template Test - block length(m):    9
    [4] Approximate Entropy Test - block length(m):     10
    [5] Serial Test - block length(m):                  16
    [6] Linear Complexity Test - block length(M):       500

   Select Test (0 to continue): 0

   How many bitstreams? 10

   Input File Format:
    [0] ASCII - A sequence of ASCII 0's and 1's
    [1] Binary - Each byte in data file contains 8 bits of data

   Select input mode:  0

     Statistical Testing In Progress.........

     Statistical Testing Complete!!!!!!!!!!!!

Ergebnisse:

------------------------------------------------------------------------------
RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF PASSING SEQUENCES
------------------------------------------------------------------------------
   generator is <../../data/rbitstream.txt>
------------------------------------------------------------------------------
 C1  C2  C3  C4  C5  C6  C7  C8  C9 C10  P-VALUE  PROPORTION  STATISTICAL TEST
------------------------------------------------------------------------------
  2   1   1   1   1   0   1   2   1   0  0.911413      9/10      Frequency
  0   0   3   1   0   1   1   1   0   3  0.213309     10/10      BlockFrequency
  1   2   2   0   0   1   1   1   1   1  0.911413      9/10      CumulativeSums
  2   1   1   0   1   0   1   0   4   0  0.122325      9/10      CumulativeSums
  2   2   2   0   0   1   0   2   0   1  0.534146      9/10      Runs
  0   2   2   0   1   2   0   0   1   2  0.534146     10/10      LongestRun
  0   0   3   1   0   0   3   1   0   2  0.122325     10/10      Rank
  5   2   0   1   0   1   1   0   0   0  0.008879      6/10   *  FFT
  1   1   3   2   1   0   0   0   2   0  0.350485     10/10      NonOverlappingTemplate
  0   0   3   4   0   1   1   1   0   0  0.035174     10/10      NonOverlappingTemplate
  1   2   0   2   0   2   0   0   3   0  0.213309     10/10      NonOverlappingTemplate
  0   2   0   0   0   0   2   2   0   4  0.035174     10/10      NonOverlappingTemplate
  0   2   1   1   2   0   0   1   2   1  0.739918     10/10      NonOverlappingTemplate
  1   1   1   2   1   2   1   0   1   0  0.911413     10/10      NonOverlappingTemplate
  1   1   1   0   1   0   2   2   1   1  0.911413     10/10      NonOverlappingTemplate
  0   2   0   1   1   4   1   0   1   0  0.122325     10/10      NonOverlappingTemplate
  1   2   0   0   0   2   2   2   1   0  0.534146      9/10      NonOverlappingTemplate
  0   1   3   1   3   1   1   0   0   0  0.213309     10/10      NonOverlappingTemplate
  1   1   0   0   1   1   0   3   1   2  0.534146     10/10      NonOverlappingTemplate
  0   0   3   0   2   0   2   1   0   2  0.213309     10/10      NonOverlappingTemplate
  2   1   1   0   1   2   1   2   0   0  0.739918     10/10      NonOverlappingTemplate
  0   2   0   1   0   2   2   1   1   1  0.739918     10/10      NonOverlappingTemplate
  1   1   0   3   0   0   0   2   2   1  0.350485     10/10      NonOverlappingTemplate
  2   1   1   0   0   1   1   0   2   2  0.739918     10/10      NonOverlappingTemplate
  3   0   2   0   0   0   0   2   2   1  0.213309     10/10      NonOverlappingTemplate
  2   2   0   1   0   1   2   1   1   0  0.739918      9/10      NonOverlappingTemplate
  3   0   2   1   1   2   0   0   0   1  0.350485     10/10      NonOverlappingTemplate
  3   3   0   0   1   1   0   1   1   0  0.213309      9/10      NonOverlappingTemplate
  0   0   2   2   1   1   1   1   2   0  0.739918     10/10      NonOverlappingTemplate
  0   1   2   2   1   0   0   3   0   1  0.350485     10/10      NonOverlappingTemplate
  0   0   1   2   3   0   0   1   0   3  0.122325     10/10      NonOverlappingTemplate
  1   0   2   2   0   1   0   2   0   2  0.534146     10/10      NonOverlappingTemplate
  1   2   0   0   1   2   2   0   0   2  0.534146     10/10      NonOverlappingTemplate
  1   0   1   0   3   0   3   0   0   2  0.122325     10/10      NonOverlappingTemplate
  3   1   1   2   0   1   1   0   0   1  0.534146      9/10      NonOverlappingTemplate
  2   1   0   2   0   1   2   2   0   0  0.534146      9/10      NonOverlappingTemplate
  2   0   1   0   0   1   2   1   1   2  0.739918     10/10      NonOverlappingTemplate
  0   0   0   2   1   0   1   2   2   2  0.534146     10/10      NonOverlappingTemplate
  0   4   1   1   1   0   0   2   1   0  0.122325     10/10      NonOverlappingTemplate
  2   0   2   1   0   1   3   0   0   1  0.350485     10/10      NonOverlappingTemplate
  2   4   0   1   0   0   2   0   1   0  0.066882     10/10      NonOverlappingTemplate
  2   0   1   0   1   2   1   2   0   1  0.739918     10/10      NonOverlappingTemplate
  0   0   1   0   2   2   1   2   1   1  0.739918     10/10      NonOverlappingTemplate
  2   0   0   2   0   1   3   0   1   1  0.350485     10/10      NonOverlappingTemplate
  0   1   1   2   1   1   2   1   0   1  0.911413     10/10      NonOverlappingTemplate
  1   1   3   2   1   1   1   0   0   0  0.534146      9/10      NonOverlappingTemplate
  1   0   0   1   2   1   1   1   3   0  0.534146     10/10      NonOverlappingTemplate
  1   0   2   1   0   0   0   1   3   2  0.350485     10/10      NonOverlappingTemplate
  0   1   2   3   1   0   0   1   1   1  0.534146     10/10      NonOverlappingTemplate
  0   1   2   0   1   2   0   2   2   0  0.534146     10/10      NonOverlappingTemplate
  0   1   1   1   2   3   0   0   1   1  0.534146     10/10      NonOverlappingTemplate
  3   0   0   2   1   0   2   0   1   1  0.350485     10/10      NonOverlappingTemplate
  1   2   1   1   1   2   1   0   1   0  0.911413     10/10      NonOverlappingTemplate
  1   1   1   1   2   0   0   2   1   1  0.911413     10/10      NonOverlappingTemplate
  1   0   2   1   1   2   0   1   1   1  0.911413     10/10      NonOverlappingTemplate
  1   1   1   2   1   1   0   1   2   0  0.911413     10/10      NonOverlappingTemplate
  3   1   2   0   0   0   1   0   0   3  0.122325      9/10      NonOverlappingTemplate
  0   2   0   0   1   2   2   1   0   2  0.534146     10/10      NonOverlappingTemplate
  2   2   1   1   1   1   0   2   0   0  0.739918     10/10      NonOverlappingTemplate
  0   1   1   2   0   1   2   0   0   3  0.350485     10/10      NonOverlappingTemplate
  1   0   0   0   3   0   4   0   2   0  0.017912     10/10      NonOverlappingTemplate
  1   2   1   0   0   1   0   0   1   4  0.122325     10/10      NonOverlappingTemplate
  1   2   0   2   0   0   1   1   1   2  0.739918     10/10      NonOverlappingTemplate
  2   0   1   1   3   0   0   1   0   2  0.350485      9/10      NonOverlappingTemplate
  0   0   1   1   1   0   3   2   2   0  0.350485     10/10      NonOverlappingTemplate
  1   0   0   1   2   2   3   0   1   0  0.350485     10/10      NonOverlappingTemplate
  0   1   0   0   1   2   0   1   0   5  0.008879     10/10      NonOverlappingTemplate
  2   1   1   1   1   1   0   0   0   3  0.534146     10/10      NonOverlappingTemplate
  2   0   3   2   1   0   0   0   1   1  0.350485     10/10      NonOverlappingTemplate
  0   1   1   1   1   1   1   1   3   0  0.739918     10/10      NonOverlappingTemplate
  0   1   2   3   0   1   1   1   0   1  0.534146     10/10      NonOverlappingTemplate
  1   1   1   1   1   1   1   0   1   2  0.991468     10/10      NonOverlappingTemplate
  0   1   0   1   4   1   0   1   2   0  0.122325     10/10      NonOverlappingTemplate
  0   2   1   0   1   2   2   0   0   2  0.534146     10/10      NonOverlappingTemplate
  2   2   1   2   1   0   1   0   0   1  0.739918     10/10      NonOverlappingTemplate
  1   1   2   3   0   1   0   2   0   0  0.350485      9/10      NonOverlappingTemplate
  1   2   1   2   0   0   0   1   0   3  0.350485     10/10      NonOverlappingTemplate
  1   1   0   0   1   3   1   1   1   1  0.739918     10/10      NonOverlappingTemplate
  1   1   1   1   0   3   2   0   0   1  0.534146      9/10      NonOverlappingTemplate
  0   2   0   1   1   2   2   0   1   1  0.739918     10/10      NonOverlappingTemplate
  1   0   0   1   2   0   1   2   2   1  0.739918     10/10      NonOverlappingTemplate
  2   0   0   0   1   1   1   2   2   1  0.739918     10/10      NonOverlappingTemplate
  1   1   3   2   1   0   0   0   2   0  0.350485     10/10      NonOverlappingTemplate
  0   3   1   2   0   2   1   0   0   1  0.350485     10/10      NonOverlappingTemplate
  0   1   1   1   0   3   1   1   1   1  0.739918     10/10      NonOverlappingTemplate
  0   0   1   1   3   1   1   1   0   2  0.534146     10/10      NonOverlappingTemplate
  2   1   1   1   1   1   0   0   3   0  0.534146      9/10      NonOverlappingTemplate
  2   2   0   3   0   1   2   0   0   0  0.213309      9/10      NonOverlappingTemplate
  0   2   0   2   0   2   1   3   0   0  0.213309     10/10      NonOverlappingTemplate
  1   1   2   0   0   1   0   1   4   0  0.122325     10/10      NonOverlappingTemplate
  1   1   1   2   1   0   3   0   0   1  0.534146     10/10      NonOverlappingTemplate
  2   1   1   0   0   0   1   4   0   1  0.122325     10/10      NonOverlappingTemplate
  0   2   1   1   2   1   0   1   0   2  0.739918     10/10      NonOverlappingTemplate
  3   1   1   1   0   0   0   3   1   0  0.213309      9/10      NonOverlappingTemplate
  2   0   0   0   0   3   1   0   1   3  0.122325     10/10      NonOverlappingTemplate
  1   1   0   1   1   0   2   2   2   0  0.739918      9/10      NonOverlappingTemplate
  1   0   2   1   0   1   2   2   0   1  0.739918     10/10      NonOverlappingTemplate
  0   1   0   1   1   3   0   0   2   2  0.350485     10/10      NonOverlappingTemplate
  0   2   2   2   1   1   1   0   0   1  0.739918     10/10      NonOverlappingTemplate
  0   1   1   1   1   1   0   2   2   1  0.911413     10/10      NonOverlappingTemplate
  4   0   1   0   3   0   0   2   0   0  0.017912     10/10      NonOverlappingTemplate
  1   0   3   0   0   0   2   1   2   1  0.350485     10/10      NonOverlappingTemplate
  0   0   2   2   0   2   1   2   1   0  0.534146     10/10      NonOverlappingTemplate
  1   1   1   2   1   1   0   1   2   0  0.911413     10/10      NonOverlappingTemplate
  1   1   2   1   1   2   0   0   2   0  0.739918     10/10      NonOverlappingTemplate
  1   1   1   1   4   0   0   1   0   1  0.213309      9/10      NonOverlappingTemplate
  3   0   1   1   1   3   0   0   0   1  0.213309      9/10      NonOverlappingTemplate
  1   0   1   1   1   3   1   0   2   0  0.534146     10/10      NonOverlappingTemplate
  0   1   1   0   0   2   3   2   1   0  0.350485     10/10      NonOverlappingTemplate
  0   0   1   1   1   0   1   1   2   3  0.534146     10/10      NonOverlappingTemplate
  1   0   1   1   0   1   1   1   2   2  0.911413     10/10      NonOverlappingTemplate
  1   1   1   0   3   1   2   0   0   1  0.534146      9/10      NonOverlappingTemplate
  0   4   1   0   1   1   1   0   2   0  0.122325     10/10      NonOverlappingTemplate
  0   0   3   2   3   1   0   0   0   1  0.122325     10/10      NonOverlappingTemplate
  1   0   1   3   1   0   1   0   2   1  0.534146     10/10      NonOverlappingTemplate
  2   1   0   1   1   0   1   1   2   1  0.911413     10/10      NonOverlappingTemplate
  2   2   1   0   0   2   1   1   0   1  0.739918     10/10      NonOverlappingTemplate
  2   1   1   2   0   0   0   1   2   1  0.739918      9/10      NonOverlappingTemplate
  1   0   1   2   1   0   1   2   0   2  0.739918     10/10      NonOverlappingTemplate
  1   0   2   3   2   0   1   0   0   1  0.350485     10/10      NonOverlappingTemplate
  1   0   0   0   2   1   2   2   1   1  0.739918     10/10      NonOverlappingTemplate
  0   0   2   1   0   1   0   1   3   2  0.350485     10/10      NonOverlappingTemplate
  1   1   0   3   1   1   2   0   0   1  0.534146     10/10      NonOverlappingTemplate
  2   1   1   0   0   0   3   1   0   2  0.350485      9/10      NonOverlappingTemplate
  1   1   1   2   0   0   4   1   0   0  0.122325     10/10      NonOverlappingTemplate
  0   1   0   2   4   0   1   1   0   1  0.122325     10/10      NonOverlappingTemplate
  1   1   0   0   1   3   0   2   1   1  0.534146     10/10      NonOverlappingTemplate
  4   0   2   0   1   1   1   1   0   0  0.122325      7/10   *  NonOverlappingTemplate
  2   1   0   0   0   2   0   2   1   2  0.534146      8/10      NonOverlappingTemplate
  1   1   1   2   0   2   0   2   1   0  0.739918     10/10      NonOverlappingTemplate
  0   3   2   0   0   0   4   1   0   0  0.017912     10/10      NonOverlappingTemplate
  2   1   2   0   1   0   1   0   1   2  0.739918     10/10      NonOverlappingTemplate
  2   1   1   0   1   3   2   0   0   0  0.350485     10/10      NonOverlappingTemplate
  0   3   0   1   2   0   3   1   0   0  0.122325     10/10      NonOverlappingTemplate
  0   0   3   0   1   2   3   0   0   1  0.122325     10/10      NonOverlappingTemplate
  2   2   0   0   1   0   0   4   0   1  0.066882      8/10      NonOverlappingTemplate
  1   0   2   1   2   3   0   0   0   1  0.350485     10/10      NonOverlappingTemplate
  2   0   0   0   1   2   0   1   3   1  0.350485     10/10      NonOverlappingTemplate
  1   0   1   2   0   0   2   2   1   1  0.739918     10/10      NonOverlappingTemplate
  2   3   1   1   0   1   0   1   1   0  0.534146     10/10      NonOverlappingTemplate
  1   1   2   1   0   1   1   1   2   0  0.911413     10/10      NonOverlappingTemplate
  0   1   1   2   1   0   3   1   0   1  0.534146     10/10      NonOverlappingTemplate
  0   0   0   1   1   2   0   1   3   2  0.350485     10/10      NonOverlappingTemplate
  0   1   0   2   1   1   1   2   2   0  0.739918     10/10      NonOverlappingTemplate
  1   0   1   1   0   1   2   1   2   1  0.911413     10/10      NonOverlappingTemplate
  1   1   3   1   1   2   0   0   1   0  0.534146      9/10      NonOverlappingTemplate
  1   2   0   2   0   0   2   1   1   1  0.739918     10/10      NonOverlappingTemplate
  1   2   2   2   1   0   1   0   1   0  0.739918     10/10      NonOverlappingTemplate
  1   3   0   3   0   0   0   1   0   2  0.122325     10/10      NonOverlappingTemplate
  1   1   0   1   1   1   0   2   1   2  0.911413     10/10      NonOverlappingTemplate
  0   1   0   0   1   1   2   1   2   2  0.739918     10/10      NonOverlappingTemplate
  0   0   2   0   5   0   1   1   1   0  0.008879     10/10      NonOverlappingTemplate
  0   1   1   1   2   0   2   3   0   0  0.350485     10/10      NonOverlappingTemplate
  0   0   1   0   1   1   3   0   3   1  0.213309     10/10      NonOverlappingTemplate
  1   1   0   0   2   1   1   2   1   1  0.911413     10/10      NonOverlappingTemplate
  2   0   0   0   1   1   1   2   3   0  0.350485     10/10      NonOverlappingTemplate
  1   2   1   1   0   1   4   0   0   0  0.122325     10/10      OverlappingTemplate
 10   0   0   0   0   0   0   0   0   0  0.000000 *    0/10   *  Universal
  8   1   0   0   1   0   0   0   0   0  0.000000 *    6/10   *  ApproximateEntropy
  0   3   1   2   0   1   0   1   2   0  0.350485     10/10      Serial
  0   1   1   1   0   1   1   1   3   1  0.739918     10/10      Serial
  1   0   2   0   1   3   2   0   1   0  0.350485     10/10      LinearComplexity


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The minimum pass rate for each statistical test with the exception of the
random excursion (variant) test is approximately = 8 for a
sample size = 10 binary sequences.

The minimum pass rate for the random excursion (variant) test is undefined.

For further guidelines construct a probability table using the MAPLE program
provided in the addendum section of the documentation.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Die Ergebnisse der Tests werden als p-Werte ausgedrückt, die die Wahrscheinlichkeit darstellen, dass die beobachtete Sequenz durch Zufall entstanden ist. Ein kleiner p-Wert (in der Regel unter 0.01) deutet auf eine nicht-zufällige Sequenz hin, während ein großer p-Wert (nahe 1) auf Zufälligkeit hindeutet.

Es scheint als würde der Random Number Generator mittels GDK-101 fast alle Tests bestehen.

Es ist wichtig zu beachten, dass kein einzelner Test ausreicht, um die Zufälligkeit einer Sequenz zu beweisen. Jeder Test zielt auf eine bestimmte Art von Muster oder Unregelmäßigkeit ab, so dass eine Sequenz, die einen Test besteht, möglicherweise nicht einen anderen besteht. Daher ist es notwendig, eine Reihe von Tests durchzuführen und die Gesamtheit der Ergebnisse zu betrachten.

Abschluss

Es ist wichtig, dass Zufallszahlengeneratoren ordnungsgemäß getestet werden, um ihre Qualität und Sicherheit zu gewährleisten. Die NIST Test Suite ist ein wertvolles Tool in diesem Prozess, da sie eine umfassende Palette von Tests bietet, die auf verschiedene Arten von Mustern und Unregelmäßigkeiten abzielen. Mit diesen Tests können wir Vertrauen in die Zufälligkeit der Zahlen, die von unserem Generator erzeugt werden, aufbauen.

Zu beachten ist auch, dass die Ergebnisse unter dem Vorbehalt der geringen Menge an Daten als vorläufig zu betrachten sind. Normalerweise wird eine NIST Analyse mit weitaus größeren Datensätzen (Millionen) durchgeführt. Vielleicht ergibt sich hier im Verlauf die Chance.

Im nächsten Teil unserer Serie werden wir uns mit der Implementierung und Nutzung unseres Zufallszahlengenerators in realen Anwendungen befassen. Bleiben Sie dran!

Write A Comment

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.