Kompakte Notebooks Kompakte Notebooks - Wuala
Kompakte Notebooks Kompakte Notebooks - Wuala
Kompakte Notebooks Kompakte Notebooks - Wuala
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Know-how | Zufallszahlen<br />
Bias Setting<br />
Bias V<br />
Generator<br />
Ring Oscillators A, B, C<br />
450–810 MHz Sampling<br />
Flip Flop<br />
geht es mit 74,5 MByte/s zur Sache. Die Erzeugungsvorschrift<br />
ist so einfach, dass man<br />
kaum glauben kann, dass sie pseudozufällige<br />
Zahlenfolgen liefert: r nˇ+ˇ1ˇ=ˇ(r nˇ·ˇ16807)ˇ&ˇ2 31ˇ–<br />
1. Als nächster Wert der Zahlenfolge werden 8<br />
Bit aus der Mitte der Zahl herausgegriffen und<br />
ausgegeben. Zur Implementierung des Algorithmus<br />
siehe die Datei gen/mcg.h aus dem<br />
Listing-Archiv.<br />
Zahlen nach dem multiplikativen Kongruenzverfahren<br />
sind perfekt gleichverteilt,<br />
halten aber sonst nicht vielen Tests stand.<br />
Deshalb taugen sie am ehesten für einfache,<br />
aber zahlenhungrige Simulationen.<br />
C<br />
B<br />
A<br />
÷ 8<br />
XOR<br />
÷ 8 D<br />
Ring Oscillator D<br />
20–68 MHz<br />
von Neumann<br />
Corrector<br />
Raw Mode<br />
Select<br />
Shift<br />
Register<br />
Byte to<br />
FIFO<br />
1 bit<br />
discard<br />
Die PadLock-Einheit des Nehemiah-Chips sammelt Entropie aus elektronischem Rauschen.<br />
Chi-Quadrat-Schwellenwerte<br />
p 0,100 0,050 0,025 0,010 0,005 0,001<br />
df<br />
1 2,71 3,84 5,02 6,63 7,88 10,83<br />
2 4,61 5,99 7,38 9,21 10,60 13,82<br />
3 6,25 7,81 9,35 11,34 12,84 16,27<br />
4 7,78 9,49 11,14 13,28 14,86 18,47<br />
5 9,24 11,07 12,83 15,09 16,75 20,52<br />
6 10,64 12,59 14,45 16,81 18,55 22,46<br />
7 12,02 14,07 16,01 18,48 20,28 24,32<br />
8 13,36 15,51 17,53 20,09 21,95 26,12<br />
9 14,68 16,92 19,02 21,67 23,59 27,88<br />
10 15,99 18,31 20,48 23,21 25,19 29,59<br />
11 17,28 19,68 21,92 24,72 26,76 31,26<br />
12 18,55 21,03 23,34 26,22 28,30 32,91<br />
13 19,81 22,36 24,74 27,69 29,82 34,53<br />
14 21,06 23,68 26,12 29,14 31,32 36,12<br />
15 22,31 25,00 27,49 30,58 32,80 37,70<br />
16 23,54 26,30 28,85 32,00 34,27 39,25<br />
17 24,77 27,59 30,19 33,41 35,72 40,79<br />
18 25,99 28,87 31,53 34,81 37,16 42,31<br />
19 27,20 30,14 32,85 36,19 38,58 43,82<br />
20 28,41 31,41 34,17 37,57 40,00 45,31<br />
21 29,62 32,67 35,48 38,93 41,40 46,80<br />
22 30,81 33,92 36,78 40,29 42,80 48,27<br />
23 32,01 35,17 38,08 41,64 44,18 49,73<br />
24 33,20 36,42 39,36 42,98 45,56 51,18<br />
25 34,38 37,65 40,65 44,31 46,93 52,62<br />
26 35,56 38,89 41,92 45,64 48,29 54,05<br />
27 36,74 40,11 43,19 46,96 49,64 55,48<br />
28 37,92 41,34 44,46 48,28 50,99 56,89<br />
29 39,09 42,56 45,72 49,59 52,34 58,30<br />
30 40,26 43,77 46,98 50,89 53,67 59,70<br />
Mersenne-Twister<br />
Eine fast mustergültige Synthese aus Geschwindigkeit<br />
und Zufälligkeit bietet der Mersenne-Twister.<br />
Seinen Namen hat er von der<br />
unvorstellbaren Periodenlänge von 2 19937ˇ–ˇ1<br />
(eine Zahl mit 6002 Stellen). Diese Zahl ist<br />
eine Mersenne-Primzahl; Mersenne-Zahlen<br />
folgen dem allgemeinen Schema 2 nˇ–ˇ1. Zu<br />
den Details des Algorithmus siehe [5].<br />
Statistische Tests meistert er mit Bravour.<br />
Für kryptografische Zwecke eignet sich der<br />
Algorithmus trotz seiner langen Periode<br />
nicht, da die Kenntnis von 624 aufeinanderfolgenden<br />
Zahlen genügt, um alle weiteren<br />
vorhersagen zu können. Außerdem muss<br />
sich der Generator erst einmal mit mindestens<br />
624 Iterationen warmlaufen – empfohlen<br />
sind einige tausend –, bevor er gute Zufallszahlen<br />
ausgibt. Das tut jedenfalls die<br />
Implementierung, die in der Datei gen/mersenne.cpp<br />
des Listing-Archivs wiederzufinden<br />
ist. Alternativ kann man die 624 Startwerte<br />
(32-bittige Ganzzahlen) auch mit Zufallszahlen<br />
aus einem Hardware-Generator<br />
belegen.<br />
Marsaglia<br />
Der Mathematiker und Informatiker George<br />
Marsaglia, bekannt für seine Diehard genannten<br />
Suite mit Zufälligkeitstests, kritisiert<br />
den Mersenne-Twister als zu unelegant und<br />
kompliziert – zum Glück, nicht ohne ein eigenes<br />
Verfahren vorzustellen, das unter Multiply-with-carry<br />
(MWC) oder Recursion-withcarry<br />
firmiert und als „Mutter der Zufälligkeit“<br />
gehandelt wird. Je nach Parametrierung<br />
gestattet MWC Periodenlängen von 2 60 bis<br />
2 2000000 . Der im Listing-Archiv in der Datei<br />
gen/marsaglia.h implementierte Algorithmus<br />
hat eine Periodenlänge von 3ˇ·ˇ10 47 . Er<br />
gibt 32-Bit-Ganzzahlen aus und arbeitet intern<br />
mit 64-Bit-Werten. Die Funktionsweise:<br />
–ˇBildung der Summe Sˇ=ˇ2111111111ˇ·ˇr n–4<br />
+ˇ1492ˇ·ˇr n–3ˇ+ˇ1776ˇ·ˇr n–2ˇ+ˇ5115 ·ˇr n–1ˇ+ˇC.<br />
–ˇExtrahieren der untersten 32 Bits und Ausgabe<br />
als aktuelle Zufallszahl: r nˇ= Sˇmodˇ2 32 .<br />
–ˇNeusetzen der Konstante mit den oberen<br />
32 Bit der Summe: Cˇ=ˇSˇ/ˇ2 32 .<br />
Der Algorithmus benötigt zwei Dutzend Iterationen<br />
zum Aufwärmen, kann aber auch<br />
sofort losstarten, wenn man ihn mit fünf 32-<br />
Bit-Zufallszahlen vorbelegt.<br />
In der aktuellen Implementierung muss<br />
sich der MWC-Algorithmus dem Mersenne-<br />
Twister hinsichtlich der Geschwindigkeit<br />
geschlagen geben. Allerdings schreit die<br />
parallele Multiplikation bei der Summenbildung<br />
geradezu nach schnellen SSE2-Befehlen<br />
zur Vektormultiplikation, woraus sich<br />
eine deutliche Performance-Steigerung ergeben<br />
dürfte.<br />
Blum-Blum-Shub (BBS)<br />
Zu den langsamsten Kandidaten der Zufallszahlenerzeugung<br />
gehört der BBS-Algorithmus,<br />
der nach seinen Schöpfern Lenore<br />
Blum, Manuel Blum und Michael Shub benannt<br />
wurde. Das Verfahren lockt allerdings<br />
mit dem hohen Anspruch, sich für kryptografische<br />
Zwecke zu eignen. Deshalb ist BBS die<br />
eigentliche Mutter der Zufälligkeit, wenn<br />
auch eine sehr langsam gebärende.<br />
Dass der Algorithmus eher gemächlich<br />
zu Werke geht, liegt daran, dass er mit<br />
Ganzzahlen beliebiger Genauigkeit arbeitet.<br />
Das sieht man der Generatorformel allerdings<br />
nicht gleich an: r n+1ˇ=ˇr n2ˇmodˇm. Die<br />
Tücke verbirgt sich hinter dem Modulus m,<br />
der das Produkt zweier großer Primzahlen p<br />
und q ist. Daraus ergibt sich die Sicherheit<br />
für kryptografische Anwendungen: Mit steigenden<br />
Werten für p und q steigt der Aufwand<br />
für die Primfaktorzerlegung rapide<br />
an. Heute als sicher gelten Werte jenseits<br />
von 2 1024 . Das ist eine Dezimalzahl mit über<br />
300 Stellen. Für jede Iteration muss der Algorithmus<br />
demnach mit 300-und-mehrstelligen<br />
Zahlen hantieren. Für Simulationen<br />
ist das in der Regel zu teuer und umständlich.<br />
Fazit<br />
Den perfekten Zufallszahlengenerator, der<br />
gleichzeitig billig, schnell und kryptografisch<br />
sicher ist, gibt es nicht. Die vorgestellten<br />
(Pseudo-)Zufallszahlgeneratoren stellen nur<br />
eine Auswahl dar – wenn auch eine, auf die<br />
es zu setzen lohnt. Für welchen Generator<br />
man sich letztlich entscheidet, hängt vom<br />
Einsatzzweck ab.<br />
Auf eine Idee sollte man allerdings nicht<br />
kommen: sich einen Generator nach Gutdünken<br />
selbst zusammenzubasteln. Damit ist<br />
schon der Zahlengroßmeister Donald Knuth<br />
ganz fürchterlich auf die Nase gefallen, als er<br />
den „Super-random number generator“ ausgetüftelt<br />
zu haben glaubte, sehr amüsant<br />
nachzulesen in [1].<br />
Ein Generator, der ct-rng-assessor aushält,<br />
hat quasi das Casting bestanden und kommt<br />
in den Recall. Dort erwartet ihn die harte Jury<br />
der Kryptografen vom CAcert oder – alternativ<br />
– die Dieharder-Suite. Im Finale muss der<br />
Generator gegen TestU01 antreten. Erst<br />
dann kann man (einigermaßen) sicher sein,<br />
Zufall erschaffen zu haben.<br />
(ola)<br />
Literatur<br />
[1]ˇDonald E. Knuth, The Art of Computer Programming<br />
Vol. 2 – Seminumerical Algorithms, 3rd edition,<br />
Addison-Wesley 1997, ISBN 0-201-89684-2<br />
[2]ˇErich Bonnert, Meilenstein der Fahrzeug-Robotik,<br />
Volkswagen und die Stanford University<br />
178 c’t 2009, Heft 2<br />
©<br />
Copyright by Heise Zeitschriften Verlag GmbH & Co. KG. Veröffentlichung und Vervielfältigung nur mit Genehmigung des Heise Zeitschriften Verlags.