Blum Blum Bour – Wikipedia wiki
Aus Wikipedia, der freien Enzyklopädie
Blum Blum Bour ( B.B.S. ) ist ein Pseudorandom-Zahlengenerator, das 1986 von Lenore Blum, Manuel Blum und Michael Shub vorgeschlagen wurde, der von Michael O. Rabins Einweg-Funktion stammt.
Blum Blum Shub nimmt die Form an
- Anwesend
Wo M = pq ist das Produkt von zwei großen Primzahlen P Und Q . Bei jedem Schritt des Algorithmus wird ein gewisser Ausgang abgeleitet X N +1 ; Der Ausgang ist normalerweise entweder die Bitparität von X N +1 oder eine oder mehrere der am wenigsten bedeutenden Teile von X N +1 .
Der Samen X 0 sollte eine Ganzzahl sein, die Co-Primes ist M (D.h. P Und Q sind keine Faktoren von X 0 ) und nicht 1 oder 0.
Die beiden Primzahlen, P Und Q sollte beide mit 3 (MOD 4) übereinstimmen (dies garantiert, dass jeder quadratische Rückstand eine quadratische Wurzel hat, die ebenfalls ein quadratischer Rückstand ist) und sichere Primzahlen mit einem kleinen GCD sein sollte ((((((( P-3 ) /2 , ( Q-3 ) /2 ) (Dies macht die Zykluslänge groß).
Ein interessantes Merkmal des Blum Blum Shub -Generators ist die Möglichkeit, alle zu berechnen X ich Wert direkt (über Euler’s Theorem):
- Anwesend
Wo
ist die Carmichael -Funktion. (Hier haben wir
).
Sicherheit [ bearbeiten ]
Es gibt einen Beweis, der seine Sicherheit auf die rechnerische Schwierigkeit der Faktorierung verringert. Wenn die Primzahlen angemessen ausgewählt werden, und Ö (Protokollprotokoll M ) Bit von jeweils niedrigerer Ordnung X N sind ausgegeben, dann in der Grenze als M Wachstum wächst, die Unterscheidung der Ausgangsbits von zufällig sollte mindestens so schwierig sein wie das Lösen des quadratischen Resistuositätsproblemmodulo M .
Beispiel [ bearbeiten ]
Lassen
Anwesend
Und
(Wo
ist der Samen). Wir können erwarten, eine große Zykluslänge für diese kleinen Zahlen zu erhalten, weil
.
Der Generator beginnt zu bewerten
durch die Nutzung
und erstellt die Sequenz
Anwesend
Anwesend
Anwesend
= 9, 81, 236, 36, 31, 202. Die folgende Tabelle zeigt den Ausgang (in Bits) für die verschiedenen Bitauswahlmethoden zur Bestimmung des Ausgangs.
Die folgende gemeinsame LISP -Implementierung liefert eine einfache Demonstration des Generators, insbesondere in Bezug auf die drei Bitauswahlmethoden. Es ist wichtig zu beachten, dass die Anforderungen der Parameter vorliegt P Anwesend Q Und S (Samen) werden nicht überprüft.
( Defun Get-number-of-1-Bits ( Bits ) "Gibt die Anzahl der 1-Wert-Bits in den ganzzahligen Bits zurück." ( erklären ( Typ ( ganze Zahl 0 * ) Bits )) ( Die ( ganze Zahl 0 * ) ( Logcount Bits ))) ( Defun Get-Even-Parity-Bit ( Bits ) "Gibt das gleichmäßige Paritätsbit der integer kodierten Bits zurück." ( erklären ( Typ ( ganze Zahl 0 * ) Bits )) ( Die Bit ( gegen ( Get-number-of-1-Bits Bits ) 2 ))) ( Defun Get-Last-Signifikant-Bit ( Bits ) "Gibt das am wenigsten signifikante Stück der integer kodierten Bits zurück." ( erklären ( Typ ( ganze Zahl 0 * ) Bits )) ( Die Bit ( LDB ( Byte Erste 0 ) Bits ))) ( Defun Make-Blum-Blum-Shub ( &Taste ( P 11 ) ( Q 23 ) ( S 3 )) "Gibt eine Funktion von keine Argumente zurück, die ein einfaches darstellen Blum-Blum-Shub-Pseudorandom-Zahlengenerator, die für die Verwendung der Verwendung konfiguriert sind Generatorparameter P, Q und S (Saatgut) sowie die Rückgabe von drei Werten: (1) die Zahl x [n+1], (2) das gleichmäßige Paritätsbit der Zahl, (3) das am wenigsten signifikante Bit der Zahl. --- Bitte beachten Sie, dass die Parameter P, Q und S nicht eingecheckt werden Übereinstimmung mit den im Artikel beschriebenen Bedingungen. " ( erklären ( Typ ( ganze Zahl 0 * ) P Q S )) ( lassen (( M ( * P Q )) ;; M = p * q ( x [n] S )) ;; x0 = Samen ( erklären ( Typ ( ganze Zahl 0 * ) M x [n] )) #' ( Lambda () ;; x [n+1] = x [n]^2 mod m ( lassen (( x [n+1] ( gegen ( * x [n] x [n] ) M ))) ( erklären ( Typ ( ganze Zahl 0 * ) x [n+1] )) ;; Berechnen Sie die zufälligen Bits basierend auf x [n+1]. ( lassen (( Even-Parity-Bit ( Get-Even-Parity-Bit x [n+1] )) ( niedrigstwertige Bit ( Get-Last-Signifikant-Bit x [n+1] ))) ( erklären ( Typ Bit Even-Parity-Bit )) ( erklären ( Typ Bit niedrigstwertige Bit )) ;; Aktualisieren Sie den Zustand so, dass x [n+1] zum neuen x [n] wird. ( setf x [n] x [n+1] ) ( Werte x [n+1] Even-Parity-Bit niedrigstwertige Bit )))))) ;; Drucken Sie die beispielhaften Ausgänge. ( lassen (( BBS ( Make-Blum-Blum-Shub :P 11 :Q 23 :S 3 ))) ( erklären ( Typ ( Funktion () ( Werte ( ganze Zahl 0 * ) Bit Bit )) BBS )) ( Format T "~ & Keys: E = sogar Parität, l = am wenigsten signifikant" ) ( Format T "~ 2%" ) ( Format T "~ & x [n+1] | e | l" ) ( Format T "~ & --------------" ) ( Schleife wiederholen 6 Tun ( Mehrwertbindung ( x [n+1] Even-Parity-Bit niedrigstwertige Bit ) ( Funcall BBS ) ( erklären ( Typ ( ganze Zahl 0 * ) x [n+1] )) ( erklären ( Typ Bit Even-Parity-Bit )) ( erklären ( Typ Bit niedrigstwertige Bit )) ( Format T "~ & ~ 6d | ~ d | ~ D" x [n+1] Even-Parity-Bit niedrigstwertige Bit ))))
Verweise [ bearbeiten ]
Zitate [ bearbeiten ]
Quellen [ bearbeiten ]
- Blum, Lenore; Blum, Manuel; Shub, Michael (1983). “Vergleich von zwei Pseudo-Random-Zahlengeneratoren” . Fortschritte in der Kryptologie . Boston, MA: Springer uns. S. 61–78. doi: 10.1007/978-1-14757-0602-4_6 . ISBN 978-1-1-4757-0604-8 .
- Blum, l .; Blum, M.; Shub, M. (1986). “Ein einfacher unvorhersehbarer Pseudo-Random-Zahlengenerator” (PDF) . Siam Journal über Computing . Gesellschaft für industrielle und angewandte Mathematik (Siam). 15 (2): 364–383. doi: 10.1137/0215025 . ISSN 0097-5397 . Archiviert (PDF) vom Original am 2021-08-14.
- Geisler, Martin; Krøigård, Mikkel; Danielsen, Andreas (Dezember 2004), Über zufällige Bits (PDF) , Citeseerx 10.1.1.90.3779 Anwesend archiviert (PDF) vom Original am 2016-03-31
Externe Links [ bearbeiten ]
Recent Comments