DE10357749A1 - Vorrichtung und Verfahren zum Bestimmen einer Teilerfreiheit einer Testzahl in Bezug auf eine Mehrzahl von Primzahlen - Google Patents

Vorrichtung und Verfahren zum Bestimmen einer Teilerfreiheit einer Testzahl in Bezug auf eine Mehrzahl von Primzahlen Download PDF

Info

Publication number
DE10357749A1
DE10357749A1 DE2003157749 DE10357749A DE10357749A1 DE 10357749 A1 DE10357749 A1 DE 10357749A1 DE 2003157749 DE2003157749 DE 2003157749 DE 10357749 A DE10357749 A DE 10357749A DE 10357749 A1 DE10357749 A1 DE 10357749A1
Authority
DE
Germany
Prior art keywords
test
primes
product
test number
prime
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE2003157749
Other languages
English (en)
Other versions
DE10357749B4 (de
Inventor
Holger Sedlak
Rainer Dr. Göttfert
Wieland Dr. Fischer
Jean-Pierre Dr. Seifert
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE2003157749 priority Critical patent/DE10357749B4/de
Publication of DE10357749A1 publication Critical patent/DE10357749A1/de
Application granted granted Critical
Publication of DE10357749B4 publication Critical patent/DE10357749B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7204Prime number generation or prime number testing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

Eine Vorrichtung zum Bestimmen einer Teilerfreiheit einer Testzahl (TZ) in Bezug auf eine Mehrzahl von Primzahlen umfasst eine Einrichtung (502, 504) zum Bereitstellen eines Produkts (q) aus der Mehrzahl von Primzahlen, eine Einrichtung (506) zum modularen Reduzieren der Testzahl (TZ) mit dem Produkt (q) als Modul, um eine Hilfszahl (beta) zu erhalten, die eine Restklasse einer Division mit einem Modul als Divisor darstellt, und eine Einrichtung (508, 510) zum Überprüfen der Hilfszahl (beta) auf Teilerfreiheit in Bezug auf die Mehrzahl von Primzahlen. Eine derartige Vorrichtung ermöglicht ein schnelles und numerisch effizientes Bestimmen einer Teilerfreiheit einer Testzahl (TZ) in Bezug auf eine Mehrzahl von Primzahlen.

Description

  • Die vorliegende Erfindung bezieht sich auf eine Vorrichtung und ein Verfahren zum Bestimmen einer Teilerfreiheit einer Testzahl in bezug auf eine Mehrzahl von Primzahlen. Insbesondere bezieht sich die vorliegende Erfindung auf eine Vorrichtung und ein Verfahren, die den Prozess der Primzahlenermittlung für ein elektronisches Verschlüsselungsverfahren deutlich beschleunigen.
  • Für die elektronische Signaturerstellung wird weltweit fast ausschließlich der RSA-Algorithmus verwendet (Rivest, Shamir, Adleman, 1978). Dieser (asymmetrische) RSA-Verschlüsselungsalgorithmus verwendet einen öffentlichen und einen geheimen Schlüssel, wobei der geheime Schlüssel beim RSA-Algorithmus aus zwei großen Primzahlen besteht. Die Primzahlen sind zur Zeit 512 bis 1024 Bit groß. Der öffentliche RSA-Schlüssel besteht aus dem Produkt der beiden Primzahlen und ist daher doppelt so lang, d. h. hat zur Zeit zwischen 1024 und 2048 Bit. Aus Sicherheitsgründen müssen die dem RSA-Schlüssel zugrundeliegenden Primzahlen im Chip selbst generiert werden.
  • Das Grundprinzip aller bislang bekannten Verfahren zur Generierung großer Primzahlen besteht darin, dass man gewisse Kandidatenzahlen einem sogenannten probabilistischen Primzahltest unterzieht. Hierfür kann der Miller-Rabin-Test aus dem Jahr 1976 verwendet werden, der auch „starker" Pseudo-Primzahltest genannt wird. Der Rechenaufwand beim Miller-Rabin-Test ist in etwa gleich hoch wie beim Fermat-Test, jedoch hat der Miller-Rabin-Test eine höhere Aussagekraft.
  • Wenn die zu testende Zahl den Miller-Rabin-Test besteht, wird der Test noch einige wenige Male (etwa 2 bis 5 mal, das hängt ab von der Größe der zu testenden Zahl) mit einem geänderten Parameter wiederholt, der sogenannten Basis b. Wenn die Zahl auch diese Kontrolltests besteht, darf man annehmen, dass es sich bei der Zahl um eine echte Primzahl handelt. Primzahlen der geforderten Größe von 512 bis 1024 Bits sind aber relativ dünn gesät. Aus dem Primzahlsatz weiß man, dass der Anteil der Primzahlen dieser Bitlänge unter den gesamten ganzen Zahlen dieser Bitlänge im unteren Promille-Bereich liegt (1,4–3 Promille). Würde man Zahlen der gewünschten Bitlänge frei wählen und sofort dem Miller-Rabin-Test unterziehen, dann würde man im Durchschnitt mehrere 100 Miller-Rabin-Tests durchführen müssen bis man endlich eine erste Primzahl gefunden hätte.
  • Um die Trefferwahrscheinlichkeit zu erhöhen, werden die Kandidatenzahlen deshalb in allen gängigen Verfahren vorbehandelt. Dabei werden jene Kandidatenzahlen, die kleine Primfaktoren enthalten, ausgesiebt. Wenn man alle Zahlen ausscheidet, die durch die ersten n Primzahlen teilbar sind, dann erhöht sich dadurch die Trefferwahrscheinlichkeit um einen Faktor F(n), der um so größer wird, je größer n ist, der mit wachsendem n aber immer langsamer ansteigt. Für n = 100 beträgt dieser Faktor etwa 11,3. Für n = 1000 beträgt der Faktor etwa 16,0. Für n = 5000 beträgt der Faktor etwa 19,2. Für n = 10.000 beträgt der Faktor ca. 20,6. Für n = 20.000 beträgt der Faktor ca. 22.
  • Bei den bisher bekannten Verfahren zum Überprüfen, ob eine Testzahl eine Primzahl ist, wird die Testzahl durch alle Primzahlen, die kleiner als die Testzahl (oder kleiner als eine vordefinierte Grenze) sind, geteilt, um zu und überprüfen, ob eine Division der Testzahl durch jede der Primzahlen ein ganzzahliges Ergebnis ergibt. Ist das Ergebnis dieser Division ganzzahlig, kann geschlossen werden, dass die Primzahl ein Teiler der Testzahl ist. Alternativ können auch größte gemeinsame Teiler der Testzahl und einem (vorangehend berechneten) Produkt aus mehreren der Primzahlen, die beispielsweise kleiner als die vordefinierte Grenze sind, berechnet wer den. Ergibt die Berechnung, dass der größte gemeinsame Teiler gleich 1 ist, ist die Testzahl als Primzahl zu klassifizieren.
  • Üblicherweise wird das Dividieren derart realisiert, dass von der auf Primalität zu überprüfenden Testzahl eine Primzahl solange subtrahiert wird, bis der verbleibende Rest der Subtraktion entweder gleich 0 oder kleiner als die der Primzahl ist. Eine derartige Vorgehensweise wird jedoch insbesondere dann problematisch, wenn die auf Primalität zu testende Testzahl sehr groß ist. Gerade im Bereich der Erzeugung eine Schlüssels für einen Verschlüsselungsalgorithmus, wie beispielsweise dem genannten RSA-Verschlüsselungsalgorithmus, ist jedoch zum Erreichen einer hohen Sicherheit die Verwendung (d.h. Generierung) von sehr großen Primzahlen notwendig. Wie bereits oben ausgeführt, werden hierfür zur Zeit 512 bis 1.024 Bit lange Primzahlen benötigt. In Zukunft ist jedoch mit einer weiteren Erhöhung der Primzahllänge, beispielsweise auf 2.048 Bit oder 4.096 Bit zu rechnen.
  • Als Nachteil des bekannten Verfahrens zum Bestimmen einer Teilerfreiheit einer Testzahl in bezug auf eine Primzahl ist somit festzustellen, dass zum Ermitteln von großen Primzahlen auch große Testzahlen verwendet werden müssen, wobei jedoch ein hoher numerischer Aufwand durch die Vielzahl von Subtraktionsoperationen notwendig ist. Gerade bei einem Bestimmen einer Teilerfreiheit einer sehr großen Testzahl in bezug auf eine Primzahl resultiert hieraus ein hoher Zeitaufwand. Durch die Verwendung von elektronischen Bauelementen mit einer höheren Arbeitsgeschwindigkeit zum Ausführen solcher Rechenoperationen kann dieser hohe Zeitaufwand jedoch lediglich eingeschränkt kompensiert werden.
  • Hiervon ausgehend liegt der vorliegenden Erfindung die Aufgabe zugrunde, eine Möglichkeit zu schaffen, um schneller und numerisch effektiver eine Teilerfreiheit einer Testzahl in bezug auf eine Primzahl zu bestimmen.
  • Diese Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1 sowie ein Verfahren gemäß Anspruch 19 gelöst.
  • Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, dass zunächst ein Produkt aus einer Mehrzahl von Primzahlen bereitgestellt werden kann. Hieran anschließend erfolgt ein modulares Reduzieren der Testzahl mit dem Produkt als Modul, um eine Hilfszahl zu erhalten, die eine Restklasse einer Division mit einem Modul als Divisor darstellt. Hieran anschließend erfolgt ein Überprüfen der Hilfszahl auf Teilerfreiheit in bezug auf die Mehrzahl von Primzahlen.
  • Gegenüber den Ansätzen gemäß dem Stand der Technik ist es im erfindungsgemäßen Ansatz daher nicht notwendig, die Testzahl unter Verwendung einer einzigen Primzahl zu reduzieren, um eine Teilerfreiheit der Testzahl in bezug auf die einzelne Primzahl zu bestimmen. Vielmehr bietet der erfindungsgemäße Ansatz den Vorteil, durch das Zusammenfassen von mehreren Primzahlen in einem Produkt und der Verwendung des Produktes zum modularen Reduzieren der Testzahl schneller als in herkömmlichen Ansätzen die Teilerfreiheit einer Testzahl in bezug auf eine Mehrzahl von Primzahlen bestimmen zu können. Dies resultiert insbesondere daraus, dass durch das modulare Reduzieren der Testzahl mit dem Produkt als Modul die erhaltene Hilfszahl nur noch maximal so groß wie das Produkt ist. Ein Überprüfen der Hilfszahl auf Teilerfreiheit in bezug auf die Mehrzahl von Primzahlen erfordert somit nicht mehr eine hohe Anzahl von Reduktionsschritten (bzw. Subtraktionsschritten) wie sie gemäß dem herkömmlichen Ansatz notwendig ist. Hierdurch ist die Teilerfreiheit der Testzahl in bezug auf eine der Mehrzahl von Primzahlen wesentlich schneller bestimmbar.
  • Typischerweise kann eine Vorrichtung zum Bestimmen einer Teilerfreiheit einer Testzahl in bezug auf eine Mehrzahl von Primzahlen einen für kryptographische Rechenoperationen be sonders ausgebildeten Coprozessor sowie einen Hauptprozessor umfassen. Vorzugsweise ist der kryptographische Coprozessor derart ausgebildet, um Rechenschritte mit Zahlen, die größer sind als eine Rechenwerkslänge des Hauptprozessors, numerisch effizienter als der Hauptprozessor auszuführen. In einer vorteilhaften Ausführungsform der vorliegenden Erfindung kann somit das modulare Reduzieren der Testzahl mit dem Produkt als Modul in dem kryptographischen Coprozessor erfolgen. Hierdurch wird eine numerisch effiziente und schnelle Ermittlung der Hilfszahl möglich, wodurch sich wiederum das Bestimmen der Teilerfreiheit der Testzahl in bezug auf eine der Mehrzahl von Primzahlen gegenüber dem herkömmlichen Ansatz beschleunigen lässt.
  • Vorzugsweise weist das Produkt eine Produktlänge auf, die kleiner oder gleich einer Rechenwerkslänge des Hauptprozessors ist. Dies bietet den Vorteil, dass bei der Verwendung eines kryptographischen Coprozessors und dem modularen Reduzieren in dem Coprozessor eine Hilfszahl erhalten wird, die eine Länge aufweist, die kleiner oder gleich der Rechenwerkslänge des Hauptprozessors ist. Hierdurch ergibt sich der weitere Vorteil, dass das Überprüfen der Hilfszahl auf Teilerfreiheit in bezug auf einzelne Primzahlen der Mehrzahl von Primzahlen numerisch effizient in dem Hauptprozessor erfolgen kann. Dies resultiert daraus, dass weder die Hilfszahl noch jede der Primzahlen eine Länge aufweisen, die größer ist als die Rechenwerkslänge des Hauptprozessors.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend anhand der beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockschaltbild einer Vorrichtung zur Generierung von Primzahlen;
  • 2 ein Blockschaltbild einer Einrichtung zum Ermitteln, ob eine Testzahl eine Primzahl ist oder ob mit einer vorbestimmten Wahrscheinlichkeit gesagt werden kann, dass die Testzahl eine Primzahl ist gemäß 1;
  • 3 ein Blockschaltbild einer Einrichtung zum Überprüfen einer Aktuell-Testzahl oder zum Bereitstellen einer Zukunftstestzahl gemäß 2;
  • 4 ein Blockschaltbild einer Einrichtung zum Überprüfen einer Aktuell-Testzahl gemäß 3;
  • 5 ein Blockschaltbild einer Einrichtung zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf Primzahlen bj gemäß 4;
  • 6 ein Blockschaltbild einer Einrichtung zum Bereitstellen einer Zukunftstestzahl gemäß 3;
  • 7 ein Blockschaltbild einer Einrichtung zum Auswählen einer Zukunftstestzahl aus einer Ausgangszahlenfolge gemäß 6;
  • 8 eine tabellarische Darstellung von Zwischenergebnissen eines Verfahrens zum Bereitstellen einer Zukunftstestzahl;
  • 9 eine tabellarische Darstellung der Anzahl von Miller-Rabin-Tests in Abhängigkeit einer Vorverarbeitung der durch den Miller-Rabin-Test zu testenden Testzahl;
  • 10 eine tabellarische Darstellung der ersten 56 aufeinanderfolgenden Primzahlen; und
  • 11A11D ein Flussdiagramm eines bevorzugten Ausführungsbeispiels des erfindungsgemäßen Verfahrens, das in mehreren Teildiagrammen dargestellt ist.
  • 1 zeigt ein bevorzugtes Ausführungsbeispiel einer Vorrichtung 100 zum Ermitteln von Primzahlen. Die Vorrichtung 100 umfasst hierbei eine Einrichtung 102 zum Bestimmen einer Ausgangszahl AZ, die einen Ausgang aufweist, über den die Ausgangszahl AZ ausgebbar ist. Ferner umfasst die Vorrichtung 100 eine Einrichtung 104 zum Ermitteln, ob eine Testzahl TZ eine Primzahl PZ ist oder mit einer vorbestimmten Wahrscheinlichkeit gesagt werden kann, dass die Testzahl eine Primzahl ist. Die Einrichtung 104 zum Ermitteln weist einen Eingang und einen Ausgang auf, wobei der Einrichtung 104 zum Ermitteln über den Eingang die Ausgangszahl AZ der Einrichtung 102 zum Bestimmen einer Ausgangszahl AZ zuführbar ist. Vorzugsweise ist die Einrichtung 104 zum Ermitteln ausgebildet, um über den Ausgang PZout eine ermittelte Primzahl auszugeben.
  • Um eine Ausgangszahl AZ zu bestimmen, umfasst die Einrichtung 102 zum Bestimmen einer Ausgangszahl beispielsweise einen Zufallszahlengenerator, durch den eine Zufallszahl erzeugbar ist, die als Ausgangszahl AZ über den Ausgang der Einrichtung 102 ausgebbar ist. Die Einrichtung 104 zum Ermitteln empfängt die von der Einrichtung 102 zum Bestimmen ausgegebene Ausgangszahl AZ und verarbeitet diese Ausgangszahl AZ mit einem nachfolgend beschriebenen Algorithmus, so dass eine Primzahl oder eine Zahl, die mit einer vorbestimmten Wahrscheinlichkeit eine Primzahl ist, ermittelt wird, die über den Ausgang PZout der Einrichtung 104 zum Ermitteln ausgegeben wird. Um die an dem Ausgang PZout der Einrichtung 104 zum Ermitteln ausgegebene Zahl zu ermitteln, wird durch die Einrichtung 104 zum Ermitteln die empfangene Ausgangszahl AZ in eine Testzahl TZ umgewandelt, wie nachfolgend detaillierter beschrieben wird.
  • 2 zeigt ein detaillierteres Blockschaltbild der in 1 dargestellten Einrichtung 104 zum Ermitteln, ob eine Testzahl eine Primzahl ist oder mit einer vorbestimmten Wahrscheinlichkeit gesagt werden kann, dass die Testzahl eine Primzahl ist. Die Einrichtung 104 zum Ermitteln umfasst eine Einrichtung 202 zum Überprüfen einer Aktuell-Testzahl oder zum Bereitstellen einer Zukunftstestzahl, eine Einrichtung 204 zum Testen sowie eine Einrichtung 206 zum Erkennen. Die Einrichtung 202 zum Überprüfen einer Aktuell-Testzahl oder zum Bereitstellen einer Zukunftstestzahl umfasst einen ersten Eingang zum Empfangen der extern zuführbaren Ausgangszahl AZ, einen zweiten Eingang zum Empfangen eines ersten Haltesignals STOP1, das von der Einrichtung 206 zum Erkennen ausgebbar ist, einen ersten Ausgang zum Ausgeben einer zu testenden Zahl (Testzahl TZ) sowie einen zweiten Ausgang zum Ausgeben eines ersten Statussignals PZ1. Die Einrichtung 204 zum Testen umfasst einen ersten Eingang zum Empfangen der von der Einrichtung 202 zum Überprüfen oder Bereitstellen ausgegebenen Testzahl TZ, einen zweiten Eingang zum Empfangen des von der Einrichtung 202 zum Überprüfen oder zum Bereitstellen ausgegebenen ersten Statussignals PZ1, einen dritten Eingang zum Empfangen eines zweiten Haltesignals STOP2 von der Einrichtung 206 zum Erkennen sowie einen Ausgang zum Ausgeben eines zweiten Statussignals PZ2. Die Einrichtung 206 zum Erkennen umfasst einen ersten Eingang zum Empfangen des von der Einrichtung 202 zum Überprüfen oder zum Bereitstellen ausgegebenen ersten Statussignals PZ1, einen zweiten Eingang zum Empfangen der von der Einrichtung 202 zum Überprüfen oder Bereitstellen ausgegebenen Testzahl TZ, einen dritten Eingang zum Empfangen des von der Einrichtung 204 zum Testen ausgegebenen zweiten Statussignals PZ2, einen ersten Ausgang zum Ausgeben des ersten Haltesignals STOP1 an die Einrichtung 202 zum Überprüfen oder zum Bereitstellen, einen zweiten Ausgang zum Ausgeben der ermittelten Primzahl sowie einen dritten Ausgang zum Ausgeben des zweiten Haltesignals STOP2 an die Einrichtung 204 zum Testen. Der zweite Ausgang der Einrichtung 206 zum Erkennen ist ferner mit dem externen Ausgang PZout der Einrichtung 104 zum Ermitteln verbunden.
  • Um eine Primzahl zu ermitteln, wird zunächst in der Einrichtung 202 zum Überprüfen oder zum Bereitstellen aus der emp fangenen Ausgangszahl AZ durch den nachfolgend detaillierter beschriebenen Algorithmus eine Aktuell-Testzahl in eine Zukunftstestzahl umgewandelt und vorzugsweise durch einen deterministischen ersten Primzahlüberprüfungsalgorithmus überprüft. Bei Vorliegen einer nachfolgend näher spezifizierten Bedingung kann die Aktuell-Testzahl über den ersten Ausgang als Testzahl TZ an die Einrichtung 204 zum Testen übermittelt werden. Ferner wird in der Einrichtung 204 zum Testen vorzugsweise ein Miller-Rabin-Test mit der Testzahl TZ durch das von der Einrichtung 202 zum Überprüfen oder zum Bereitstellen ausgegebene erste Statussignal PZ1 gestartet. Das Ergebnis des Miller-Rabin-Tests kann von der Einrichtung 204 zum Testen über dessen Ausgang, d. h. als zweites Statussignal PZ2, an die Einrichtung 206 zum Erkennen übertragen werden.
  • Ansprechend auf das erste Statussignal PZ1 oder das zweite Statussignal PZ2 unterbricht die Einrichtung 206 zum Erkennen entweder über das zweite Haltesignal STOP2 eine Signalverarbeitung in der Einrichtung 204 zum Testen, über das erste Haltesignal STOP1 eine Signalverarbeitung in der Einrichtung 202 zum Überprüfen oder zum Bereitstellen oder gibt ansprechend auf das zweite Statussignal PZ2 die Testzahl TZ als ermittelte Primzahl über den externen Ausgang PZout aus, für die durch die Einrichtung 204 zum Testen der Einrichtung 206 zum Erkennen übermittelt wurde, dass die Testzahl TZ als Primzahl anzusehen ist.
  • 3 zeigt ein detaillierteres Blockschaltbild der in 2 dargestellten Einrichtung 202 zum überprüfen oder zum Bereitstellen. Die Einrichtung 202 zum Überprüfen oder zum Bereitstellen umfasst demgemäß eine Einrichtung 302 zum Überprüfen einer Aktuell-Testzahl sowie eine Einrichtung 304 zum Bereitstellen einer Zukunftstestzahl. Die Einrichtung 302 zum Überprüfen einer Aktuell-Testzahl umfasst einen ersten Eingang zum Empfangen der Ausgangszahl AZ, einen zweiten Eingang zum Empfangen einer durch die Einrichtung 304 zum Bereitstellen einer Zukunftstestzahl ausgegebenen Zukunftstestzahl ZTZ und einen dritten Eingang zum Empfangen des ersten Haltesignals STOP1. Ferner umfasst die Einrichtung 302 zum Überprüfen einer Aktuell-Testzahl einen ersten Ausgang zum Ausgeben der Aktuell-Testzahl als Testzahl TZ, einen zweiten Ausgang zum Ausgeben des ersten Statussignals PZ1, einen dritten Ausgang zum Ausgeben einer Primzahl pi sowie einen vierten Ausgang zum Ausgeben einer Variable αi. Die Einrichtung 304 zum Bereitstellen der Zukunftstestzahl umfasst einen ersten Eingang zum Empfangen der Ausgangszahl AZ, einen zweiten Eingang zum Empfangen des ersten Haltesignals STOP1, einen dritten Eingang zum Empfangen der von der Einrichtung 302 zum Überprüfen einer Aktuell-Testzahl ausgegebenen Primzahl pi sowie einen vierten Eingang zum Empfangen der von der Einrichtung 302 zum Überprüfen einer Aktuell-Testzahl ausgegebenen Variable αi. Ferner umfasst die Einrichtung 304 zum Bereitstellen der Zukunftstestzahl einen Ausgang zum Ausgeben der bereitgestellten Zukunftstestzahl ZTZ.
  • Die Einrichtung 302 zum Überprüfen einer Aktuell-Testzahl wandelt die Ausgangszahl AZ oder die Zukunftstestzahl ZTZ gemäß dem nachfolgend näher beschriebenen Algorithmus in die Aktuell-Testzahl um und überprüft die Aktuell-Testzahl ebenfalls gemäß dem nachfolgend näher beschriebenen Algorithmus, wobei die bei dem Überprüfen ermittelte Primzahl pi und die Variable αi über den dritten bzw. vierten Ausgang der Einrichtung 302 zum Überprüfen einer Aktuell-Testzahl ausgegeben werden. In den 1 bis 7 wird das Wort „Primzahl" auch abgekürzt mit „PZ" sowie das Wort „Testzahl" mit „TZ" gekennzeichnet. Über den ersten Ausgang wird, wie beschrieben, die Aktuell-Testzahl als Testzahl TZ ausgegeben. Über den zweiten Ausgang wird, wie ebenfalls beschrieben, das erste Statussignal PZ1 ausgegeben, das beispielsweise ein dreistufiges Signal ist, über das mitteilbar ist, ob die Testzahl keine Primzahl ist (PZ1 = –1), ob ungewiss ist, ob die Testzahl TZ eine Primzahl ist (PZ1 = 0) oder ob die Testzahl teilerfremd zu einer vorgegebenen Menge von Primzahlen ist (PZ1 = 1). Ferner wird durch die Einrichtung 304 zum Bereitstellen einer Zu kunftstestzahl aus der empfangenen Ausgangszahl AZ unter Verwendung der Primzahl pi und der Variable αi mit dem nachfolgend näher beschriebenen Algorithmus eine neue Zahl ermittelt und diese neue Zahl über den Ausgang der Einrichtung 304 zum Bereitstellen einer Zukunftstestzahl als Zukunftstestzahl ZTZ ausgegeben. Das erste Haltesignal STOP1 ermöglicht ein Abbrechen einer Signalverarbeitung in der Einrichtung 302 zum Überprüfen einer Aktuell-Testzahl sowie der Einrichtung 304 zum Bereitstellen einer Zukunftstestzahl.
  • 4 zeigt eine detailliertere Darstellung der in 3 dargestellten Einrichtung 302 zum Überprüfen einer Aktuell-Testzahl. Die Einrichtung 302 zum Überprüfen einer Aktuell-Testzahl umfasst eine Einrichtung 402 zum Bestimmen einer Aktuell-Testzahl, eine Einrichtung 404 zum Bereitstellen von (vorzugsweise mehreren) Primzahlen pj sowie eine Einrichtung 406 zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf die Primzahlen pj. Die Einrichtung 402 zum Bestimmen einer Aktuell-Testzahl umfasst einen ersten Eingang zum Empfangen der Ausgangszahl AZ, einen zweiten Eingang zum Empfangen der Zukunftstestzahl ZTZ, einen dritten Eingang zum Empfangen des ersten Statussignals PZ1 sowie einen Ausgang zum Ausgeben der Aktuell-Testzahl als Testzahl TZ. Die Einrichtung 404 zum Bereitstellen der Primzahlen pj umfasst einen ersten Eingang zum Empfangen des ersten Statussignals PZ1, einen zweiten Eingang zum Empfangen des ersten Haltesignals STOP1 sowie einen Ausgang zum Ausgeben von Primzahlen pj. Die Einrichtung 406 zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf die Primzahlen pj umfasst einen ersten Eingang zum Empfangen der Testzahl TZ von der Einrichtung 402 zum Bestimmen einer Aktuell-Testzahl, einen zweiten Eingang zum Empfangen von Primzahlen pj von der Einrichtung 404 zum Bereitstellen von Primzahlen pj, einen dritten Eingang zum Empfangen des ersten Haltesignals STOP1, einen ersten Ausgang zum Ausgeben des ersten Statussignals PZ1, einen zweiten Ausgang zum Ausgeben von einzelnen Primzahlen pi sowie einen dritten Ausgang zum Ausgeben der Variablen αi.
  • Durch die Einrichtung 402 zum Bestimmen einer Aktuell-Testzahl wird zunächst die Ausgangszahl AZ als Aktuell-Testzahl bestimmt, wobei nach einem erstmaligen Auftreten eines Wertes des ersten Statussignals PZ1, der angibt, dass die Testzahl keine Primzahl ist (d.h. PZ1 = –1) im folgenden allein die Zukunftstestzahl ZTZ als Aktuell-Testzahl bestimmt wird. Durch die Einrichtung 404 zum Bereitstellen von Primzahlen pj wird eine in dem nachfolgend näher beschriebenen Algorithmus vordefinierte Anzahl von Primzahlen pj bereitgestellt. Dies kann beispielsweise durch einen Algorithmus erfolgen, der als „Sieb des Eratosthenes" bezeichnet wird. Hierbei wird ansprechend auf einen positiven Wert des ersten Statussignals PZ1 (PZ1 = 1), d.h. einer Mitteilung, dass die Testzahl teilerfremd zu den Primzahlen pj ist, ein neuer Satz von Primzahlen pj gemäß dem nachfolgend beschriebenen Algorithmus bereitgestellt. Die Einrichtung 406 zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf die Primzahlen pj prüft, ob die Aktuell-Testzahl TZ ganzzahlig durch jede einzelne Primzahl pi der Primzahlen pj teilbar ist. Die während dem Prüfen mit dem nachfolgend beschriebenen Algorithmus erhaltene Primzahl pi und die Variable αi werden über den zweiten und dritten Ausgang der Einrichtung 406 zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf die Primzahlen pj ausgegeben. Ausgehend von einem Initialzustand des ersten Statussignals PZ1 der einen „unbestimmten" Zustand kennzeichnet (d. h. PZ1 = 0) wird das erste Statussignal PZ1 auf einen negativen Wert gesetzt (d.h. PZ1 = –1), wenn die Aktuell-Testzahl ganzzahlig durch eine der Primzahlen pj teilbar. Ist die Aktuell-Testzahl durch keine der Primzahlen pj ganzzahlig teilbar, wird das erste Statussignal PZ1 auf den positiven Zustand (d. h. PZ1 = 1) gesetzt, wodurch in der Einrichtung 404 zum Bereitstellen von Primzahlen pj ein neuer Satz von Primzahlen gemäß dem nachfolgend beschriebenen Algorithmus bereitgestellt wird. Empfängt die Einrichtung 406 zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf die Primzahlen pj einen neuen Satz von Primzahlen pj oder ei ne neue Testzahl TZ wird der Zustand des ersten Statussignals PZ1 auf den „unbestimmten" Zustand (d. h. PZ1 = 0) zurückgesetzt. Durch das Haltesignal STOP1 lässt sich eine Signalverarbeitung der Einrichtung 404 zum Bereitstellen von Primzahlen pj sowie der Einrichtung 406 zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf die Primzahlen pj anhalten.
  • Die 5 zeigt ein detaillierteres Blockschaltbild der in 4 dargestellten Einrichtung 406 zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf die Primzahlen pj. Die Einrichtung 406 zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf die Primzahlen pj umfasst eine Einrichtung 502 zum Auswählen einer Anzahl von Primzahlen pi aus den Primzahlen pj, eine Einrichtung 504 zum Bestimmen eines Produktes q aus den ausgewählten Primzahlen pi, eine Einrichtung 506 zum Reduzieren einer Testzahl unter Verwendung des Produktes q, um eine Variable β zu erhalten, eine Einrichtung 508 zum Reduzieren von β unter Verwendung eine der Primzahlen pi, um eine Variable αi zu erhalten, eine Einrichtung 510 zum Prüfen, ob pi ein Teiler der Testzahl TZ ist unter Verwendung von αi und eine Einrichtung 512 zum Zählen. Die Einrichtung 502 zum Auswählen einer Anzahl von Primzahlen pi aus den Primzahlen pj umfasst einen ersten Eingang zum Empfangen der Primzahlen pj, einen zweiten Eingang zum Empfangen des ersten Haltesignals STOP1 sowie einen dritten Eingang zum Empfangen eines Zählsignals 514 von der Einrichtung 512 zum Zählen sowie einen Ausgang zum Ausgeben der ausgewählten Anzahl von Primzahlen pi der mit dem zweiten Ausgang der Einrichtung 406 zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf die Primzahlen pj verbunden ist. Die Einrichtung 504 zum Bestimmen eines Produktes q aus den ausgewählten Primzahlen pi umfasst einen ersten Eingang zum Empfangen der ausgewählten Primzahlen pi, einen zweiten Eingang zum Empfangen des ersten Haltesignals STOP1 sowie einen Ausgang zum Ausgeben des bestimmten Produktes q. Die Einrichtung 506 zum Reduzieren der Testzahl TZ unter Verwendung des Produktes q, um eine Variable β zu erhalten, umfasst einen ersten Eingang zum Empfangen der extern zuführbaren Testzahl TZ, einen zweiten Eingang zum Empfangen des Produktes q, einen dritten Eingang zum Empfangen des ersten Haltesignals STOP1 und einen Ausgang zum Ausgeben der durch den nachfolgend beschriebenen Algorithmus erhaltenen Variablen β. Die Einrichtung 508 zum Reduzieren von β unter Verwendung der Primzahlen pi, um eine Variable αi zu erhalten, umfasst einen ersten Eingang zum Empfangen der ausgewählten Primzahlen pi, einen zweiten Eingang zum Empfangen der Variable β, βeinen dritten Eingang zum Empfangen des ersten Haltesignals STOP1 sowie einen Ausgang zum Ausgeben der durch den nachfolgend beschriebenen Algorithmus erhaltenen Variable αi. Der Ausgang der Einrichtung 508 zum Reduzieren von β unter Verwendung der Primzahlen pi ist ferner mit dem dritten Ausgang der Einrichtung 406 zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf die Primzahlen pj verbunden. Die Einrichtung 510 zum Prüfen, ob pi ein Teiler der Testzahl TZ ist unter Verwendung von αi umfasst einen ersten Eingang zum Empfangen der Variable αi, einen zweiten Eingang zum Empfangen des ersten Haltesignals STOP1 sowie einen Ausgang zum Ausgeben des ersten Statussignals PZ1, wobei der Ausgang der Einrichtung 510 zum Prüfen, ob pi ein Teiler der Testzahl TZ ist mit dem ersten Ausgang der Einrichtung 406 zum Prüfen der Aktuell-Testzahl auf Teilerfreiheit in Bezug auf die Primzahlen pj verbunden ist. Die Einrichtung 512 zum Zählen umfasst einen ersten Eingang zum Empfangen der Variablen αi, einen zweiten Eingang zum Empfangen des ersten Haltesignals STOP1, einen dritten Eingang zum Empfangen des ersten Statussignals PZ1 sowie einen Ausgang zum Ausgeben des Zählsignals 514.
  • Gemäß dem nachfolgend beschriebenen Algorithmus wird in der Einrichtung 502 zum Auswählen einer Anzahl von Primzahlen pi aus den Primzahlen pj eine Anzahl von Primzahlen ausgewählt, wobei diese Anzahl von Primzahlen pi in die Einrichtung 504 zum Bestimmen eines Produktes q aus den ausgewählten Primzahlen pi übertragen wird, die hieraus das Produkt q bildet. Al ternativ kann auch eine Gruppierung aller extern zugeführten Primzahlen pj und einer Produktbildung aus den einzelnen Gruppen der Primzahlen erfolgen, wobei die gebildeten Produkte entsprechend zwischenzuspeichern sind. Gemäß einer Berechnungsvorschrift des nachfolgend beschriebenen Algorithmus wird in der Einrichtung 506 zum Reduzieren der Testzahl TZ unter Verwendung des Produktes q, um eine Variable β zu erhalten, die Variable β berechnet. Hieran anschließend wird die Variable β unter Verwendung der ausgewählten Primzahlen pi gemäß dem nachfolgend beschriebenen Algorithmus reduziert, um zumindest eine Variable αi zu erhalten. Gemäß dem nachfolgend beschriebenen Algorithmus erfolgt hieran anschließend ein Prüfen, ob eine der Primzahlen pi ein Teiler der Testzahlen TZ ist unter Verwendung der Variablen αi. Hierbei wird das erste Statussignal PZ1 gemäß den Ausführungen zu 4 gesetzt. Durch die Einrichtung 512 zum Zählen wird bestimmt, welche Anzahl von Primzahlen pi bereits verarbeitet wurde, wobei über das Zählsignal 514 die Einrichtung 502 zum Auswählen einer Anzahl von Primzahlen pi aus den Primzahlen pj derart gesteuert werden kann, dass durch die Einrichtung 502 zum Auswählen eine neue Anzahl bzw. Gruppe von Primzahlen pi aus den Primzahlen pj ausgewählt wird. Ferner ist die Einrichtung 512 zum Zählen beispielsweise durch das erste Statussignal PZ1 bei einem positiven Wert (d. h. PZ1 = 1) rücksetzbar, wodurch gemäß den Ausführungen zu 4 ein neuer Satz von Primzahlen pj bereitgestellt wird. Ferner ist eine Signalverarbeitung der in 5 dargestellten Einrichtungen durch das erste Haltesignal STOP1 unterbrechbar.
  • Um möglichst große Primzahlen zu bestimmen, sollte die Testzahl TZ möglichst groß sein. Um eine möglichst schnelle Bestimmung einer Teilerfreiheit der Testzahl TZ in bezug auf die Mehrzahl von Primzahlen pi zu ermöglichen, kann zur Bestimmung der Teilerfreiheit vorzugsweise ein Rechnersystem eingesetzt werden, das einen Hauptprozessor (Prozessor) und einen Coprozessor umfasst. Der Hauptprozessor kann optimal dazu ausgebildet sein, die Abarbeitung von Schritten des nachfolgend beschriebenen Algorithmus in den in 5 dargestellten Einrichtungen zu steuern sowie Rechenoperationen mit kleinen Zahlen durchzuführen. Zu diesem Zweck kann der Hauptprozessor vorzugsweise ein Rechenwerk mit einer kleinen Prozessorrechenwerkslänge aufweisen. Demgegenüber kann der Coprozessor optimal dazu ausgelegt sein, die Verarbeitung von Rechenoperationen mit großen Zahlen effizient und schnell durchzuführen. Hierzu kann der Coprozessor ein Coprozessorrechenwerk mit einer Coprozessorrechenwerkslänge aufweisen, wobei die Coprozessorrechenwerkslänge größer als die Prozessorrechenwerkslänge ist. Ferner kann die Einrichtung 504 zum Bestimmen eines Produkts q aus den ausgewählten Primzahlen pi dazu ausgebildet sein, ein Produkt mit einer Produktlänge zu bestimmen, wobei die Produktlänge kleiner oder gleich der vorbestimmten Prozessorrechenwerkslänge des Prozessors ist. Alternativ kann auch das Produkt q aus den ausgewählten Primzahlen bereits in Produktform vorliegen und der Einrichtung 406 zum Prüfen beispielsweise extern zugeführt werden. Hierdurch würde sich ein Rechenaufwand zum Bestimmen des Produkts q durch die Einrichtung 504 zum Bilden des Produktes q vermeiden lassen. Es ist hierbei jedoch sicherzustellen, dass neben dem vorbestimmten Produkt q die Primzahlen pi bekannt sind, aus denen das Produkt q gebildet wurde.
  • Dadurch, dass die Einrichtung 504 zum Bestimmen eines Produkts q lediglich ein Produkt q mit einer Produktlänge bestimmt, die kleiner oder gleich der vorbestimmten Prozessorrechenwerkslänge des Prozessors ist, kann die Einrichtung 504 zum Bestimmen eines Produkts vorzugsweise in dem Hauptprozessor ausgebildet sein.
  • Die Einrichtung 504 zum Bestimmen eines Produkts kann ferner dazu ausgebildet sein, um ein erstes Produkt q1 aus einer ersten Anzahl l1 von Primzahlen und ein zweites Produkt q2 aus einer zweiten Anzahl l1 von Primzahlen bereitzustellen, wobei sich die erste Anzahl l1 von der zweiten Anzahl l2 unterscheidet und eine Produktlänge des ersten Produkts q1 so wie eine Produktlänge des zweiten Produkts q2 kleiner oder gleich der vorbestimmten Prozessorrechenwerkslänge sind. Hierdurch kann erreicht werden, dass die Produktlänge der in der Einrichtung 504 bestimmten Produkte q1 und q2 nicht länger als beispielsweise die Prozessorrechenwerkslänge ist, wobei jedoch eine unterschiedliche Anzahl l1 und l2 von Primzahlen zum Bestimmen der Produkte q1 und q2 verwendet werden können.
  • Ferner kann die Vorrichtung zum Bestimmen einer Teilerfreiheit der Testzahl in bezug auf eine Mehrzahl von Primzahlen einen Coprozessor mit einer vorbestimmten Coprozessorrechenwerkslänge umfassen, wobei die Coprozessorrechenwerkslänge größer ist als die Prozessorrechenwerkslänge. Dies bietet die Möglichkeit, Zahlen mit einer Zahlenlänge (beispielsweise in einer binären Darstellungsform) die größer ist, als die Prozessorrechenwerkslänge, numerisch effizient zu bearbeiten. Vorzugsweise lässt sich somit die Einrichtung 506 zum Reduzieren der (im Vergleich zum Produkt q sehr großen) Testzahl TZ in dem Coprozessor ausbilden. Dadurch, dass die Testzahl TZ eine Testzahllänge aufweist, die beispielsweise mindesten der doppelten Produktlänge entspricht, lässt sich somit numerisch effizient und schnell ein modulares Reduzieren der Testzahl mit dem Produkt q als Modul realisieren, um eine Hilfszahl β zu erhalten.
  • Wie bereits dargestellt, kann jedoch neben dem modularen Reduzieren der Testzahl TZ mit dem Produkt q auch der (numerisch aufwendige) Miller-Rabin-Test in dem Coprozessor durchgeführt werden. Um eine möglichst schnelle Bearbeitung von Rechenschritten der Einrichtung 506 zum Reduzieren der Testzahl zu ermöglichen, kann der Coprozessor oder der Prozessor ferner eine Steuereinrichtung umfassen, wobei die Steuereinrichtung ausgebildet ist, um einen Betrieb des Miller-Rabin-Tests zu unterbrechen, um einen modularen Reduktionsschritt der Einrichtung 506 zum Reduzieren der Testzahl TZ zu beginnen. Mit anderen Worten ausgedrückt ordnet die Steuereinrichtung somit einem Betrieb der tung somit einem Betrieb der Einrichtung 506 zum Reduzieren der Testzahl eine höhere Priorität zu als einem Ausführen des Miller-Rabin-Tests.
  • Weiterhin kann die Einrichtung 508 zum Reduzieren der Hilfszahl ausgebildet sein, die Testzahl als nicht-teilerfrei in bezug auf eine der Primzahlen pi zu erkennen, wenn die Hilfszahl β einen vorbestimmten Wert aufweist. Nimmt beispielsweise die Hilfszahl den Wert 0 an, ist ersichtlich, dass die Testzahl ganzzahlig durch das Produkt q teilbar ist. Die Testzahl TZ ist in diesem Fall somit keine Primzahl mehr.
  • Ferner kann die Einrichtung 508 zum Reduzieren ausgebildet sein, um die Hilfszahl β durch eine der Mehrzahl von Primzahlen pi zu dividieren, um als Ergebnis des Dividierens eine Prüfzahl αi bereitzustellen. Hierbei ist anzumerken, dass die Einrichtung 508 zum Reduzieren in dem Prozessor ausgebildet sein kann, da nunmehr die Hilfszahl β sowie jede der Mehrzahl von Primzahlen pi eine Zahlenlänge aufweist, die kleiner oder gleich der Prozessorrechenwerkslänge ist. Durch ein Ausbilden der Einrichtung 508 zum Reduzieren in dem Prozessor kann somit eine numerische Entlastung des Coprozessors erfolgen. Zugleich ist jedoch ein numerisch effizientes Arbeiten der Einrichtung 508 zum Reduzieren sichergestellt, da lediglich Zahlen mit einer Zahlenlänge prozessiert werden, die kleiner oder gleich der Prozessorrechenwerkslänge ist.
  • Ferner kann die Einrichtung zum Prüfen 510 ausgebildet sein, um die Testzahl als nicht-teilerfremd in bezug auf eine der Mehrzahl von Primzahlen pi zu erkennen, wenn die Prüfzahl αi einen vorbestimmten Wert aufweist. Nimmt beispielsweise die Prüfzahl αi den Wert 0 an, ist zu folgern, dass die der Prüfzahl αi entsprechende Primzahl der Mehrzahl von Primzahlen pi ein Teiler der Testzahl TZ ist. Die Testzahl TZ kann somit keine Primzahl sein.
  • Ferner können die Einrichtung 508 zum Reduzieren sowie die Einrichtung 510 zum Prüfen ausgebildet sein, um jeder der Mehrzahl der Primzahlen pi eine entsprechende Prüfzahl αi bereitzustellen, wobei die Einrichtung zum Prüfen 510 ausgebildet ist, die Testzahl TZ als teilerfrei in bezug auf die Mehrzahl der Primzahlen pi zu erkennen, wenn jede der Prüfzahlen ein vorbestimmtes Primzahlkriterium erfüllt. Als Primzahlkriterium kann beispielsweise angenommen werden, dass jede der Prüfzahlen größer 0 ist.
  • Weiterhin kann die Einrichtung 504 zum Bestimmen eines Produkts ausgebildet sein, um zumindest ein erstes Produkt q1 und ein zweites Produkt q2 aus der von der Einrichtung 502 ausgewählten Primzahlen bereitzustellen, wobei das erste Produkt q1 und das zweite Produkt q2 aus jeweils verschiedenen Primzahlen pi gebildet ist. Die Einrichtung 506 zum Reduzieren der Testzahl TZ kann in diesem Fall ausgebildet sein, eine erste Hilfszahl β1 und eine zweite Hilfszahl β2 zu ermitteln, wobei die erste Hilfszahl β1 eine Restklasse einer modularen Reduktion der Testzahl TZ mit dem ersten Produkt q1 ist und die zweite Hilfszahl β2 eine Restklasse einer modularen Reduktion der Testzahl TZ mit dem zweiten Produkt q2 ist. Ferner können die Einrichtung 508 zum Reduzieren sowie die Einrichtung 510 zum Prüfen ausgebildet sein, um die erste Hilfszahl β1 und die zweite Hilfszahl β2 auf Teilerfreiheit in bezug auf die durch die Einrichtung 502 zum Bestimmen bereitgestellten Primzahlen zu überprüfen. Das Überprüfen erfolgt hierbei analog zu der vorstehenden Beschreibung, wobei jedoch die Testzahl TZ dann als teilerfrei in bezug auf die ausgewählten Primzahlen pi bestimmt ist, wenn für jede der beiden Hilfszahlen β1 und β2 die Teilerfreiheit der Testzahl TZ in bezug auf die Mehrzahl von Primzahlen pi erkannt wird.
  • In einem derartigen Fall kann die Einrichtung 506 zum Reduzieren wiederum in dem Coprozessor ausgebildet sein. Der Coprozessor oder der Hauptprozessor können wiederum eine Steuereinrichtung aufweisen. In dem Coprozessor kann ferner wie derum eine Einrichtung 204 zum Testen der Testzahl (beispielsweise mit dem probabilistischen Miller-Rabin-Testalgorithmus) angeordnet sein, wobei die Einrichtung 204 zum Testen einen ersten Betriebszustand mit einer hohen Nutzung einer durch den Coprozessor bereitgestellten Rechenkapazität und einen zweiten Betriebszustand mit einer niedrigen Nutzung der durch den Coprozessor bereitgestellten Rechenkapazität umfasst. Der erste Betriebszustand der Einrichtung 204 zum Testen kann beispielsweise dadurch bedingt sein, dass der in der Einrichtung 204 zum Testen ausgeführte Testalgorithmus einzelne numerisch aufwendige Rechen-Schritte umfasst, deren Abarbeitung eine hohe numerische Rechenleistung erfordert (erster Betriebszustand). Dagegen kann der in der Einrichtung 204 zum Testen ausgeführte Testalgorithmus weitere numerisch weniger aufwendige Schritte als die Rechen-Schritte des Testalgorithmus umfassen (zweiter Betriebszustand). Im ersten Betriebszustand benötigt die Einrichtung 204 zum Testen somit einen größeren Anteil der durch den Coprozessor bereitgestellten Rechenkapazität als im zweiten Betriebszustand. Die Steuereinrichtung kann nunmehr ausgebildet sein, um das modulare Reduzieren der Testzahl im Coprozessor dann auszuführen, wenn die Einrichtung 204 zum Testen im zweiten Betriebszustand ist (d. h. bei einer geringen Auslastung des Coprozessors). Ferner kann die Steuereinrichtung dazu ausgebildet sein, um das modulare Reduzieren der Testzahl (d. h. einen Betrieb der Einrichtung 506 zum Reduzieren der Testzahl) zu unterbrechen, wenn die Einrichtung 204 zum Testen im ersten Betriebszustand ist. Hierdurch lässt sich eine gleichmäßige Auslastung des Coprozessors realisieren.
  • Um die vorstehend beschriebene Möglichkeit zur gleichmäßigen Auslastung des Coprozessors optimal zu nutzen, kann ferner die Einrichtung 506 zum Reduzieren der Testzahl TZ oder die Einrichtung 508 zum Reduzieren der Hilfszahl β ausgebildet sein, um zumindest eine Hilfszahl β zwischenzuspeichern. Ferner kann auch die Einrichtung 504 zum Bestimmen (oder Bereitstellen) des Produkts q oder die Einrichtung 506 zum Reduzie ren ausgebildet sein, um zumindest ein Produkt q zwischenzuspeichern.
  • Um möglichst große Primzahlen zur Schlüsselgenerierung zu erhalten, kann ferner vorzugsweise eine Testzahl TZ gewählt werden, die durch mindestens 256 Bit binär darstellbar ist.
  • 6 zeigt ein detaillierteres Blockschaltbild der in 3 dargestellten Einrichtung 304 zum Bereitstellen einer Zukunftstestzahl. Die Einrichtung 304 zum Bereitstellen einer Zukunftstestzahl umfasst eine Einrichtung 602 zum Bereitstellen einer Ausgangszahlenfolge (AZ-Folge) sowie eine Einrichtung 604 zum Auswählen einer Zukunftstestzahl ZTZ aus der Ausgangszahlenfolge. Die Einrichtung 602 zum Bereitstellen einer Ausgangszahlenfolge umfasst einen ersten Eingang zum Empfangen der Ausgangszahl AZ, einen zweiten Eingang zum Empfangen des ersten Haltesignals STOP1 und einen Ausgang zum Ausgeben der bereitgestellten Ausgangszahlenfolge. Die Einrichtung 604 zum Auswählen einer Zukunftstestzahl ZTZ aus der Ausgangszahlenfolge umfasst einen ersten Eingang zum Empfangen der Ausgangszahlenfolge von der Einrichtung 602 zum Bereitstellen einer Ausgangszahlenfolge, einen zweiten Eingang zum Empfangen des ersten Haltesignals STOP1, einen dritten Eingang zum Empfangen von Primzahlen pi, einen vierten Eingang zum Empfangen der Variablen αi sowie einen Ausgang zum Ausgeben der ausgewählten Zukunftstestzahl ZTZ.
  • Die Einrichtung 602 zum Bereitstellen einer Ausgangszahlenfolge stellt gemäß dem nachfolgend beschriebenen Algorithmus aus der Ausgangszahl AZ die Ausgangszahlenfolge AZ-Folge bereit, aus der die Einrichtung 604 zum Auswählen einer Zukunftstestzahl ZTZ ebenfalls gemäß dem nachfolgend beschriebenen Algorithmus unter Verwendung der Primzahlen pi und der Variablen αi die Zukunftstestzahl ZTZ ermittelt, die über den Ausgang der Einrichtung 604 zum Auswählen einer Zukunftstestzahl ausgegeben wird. Mittels des ersten Haltesignals STOP1 kann ein Betrieb der in 6 dargestellten Einrichtungen angehalten werden.
  • 7 zeigt ein detaillierteres Blockschaltbild der in 6 dargestellten Einrichtung 604 zum Auswählen einer Zukunftstestzahl ZTZ aus der Ausgangszahlenfolge. Die Einrichtung 604 zum Auswählen einer Zukunftstestzahl ZTZ umfasst eine Einrichtung 702 zum Bestimmen einer charakteristischen Bitfolge σ, eine Einrichtung 704 zum Berechnen einer Variablen ki, eine Einrichtung 706 zum Überprüfen und Modifizieren der charakteristischen Bitfolge σ sowie eine Einrichtung 708 zum Bestimmen einer Zukunftstestzahl aus der überprüften und modifizierten Bitfolge σ'. Die Einrichtung 702 zum Bestimmen einer charakteristischen Bitfolge σ umfasst einen ersten Eingang zum Empfangen der Ausgangszahlenfolge, einen zweiten Eingang zum Empfangen der überprüften und modifizierten Bitfolge σ', einen dritten Eingang zum Empfangen des ersten Haltesignals STOP1 sowie einen Ausgang zum Ausgeben der bestimmten charakteristischen Bitfolge σ. Die Einrichtung 704 zum Berechnen einer Variablen ki umfasst einen ersten Eingang zum Empfangen von Primzahlen pi, einen zweiten Eingang zum Empfangen der Variablen αi, einen dritten Eingang zum Empfangen des ersten Haltesignals STOP1 sowie einen Ausgang zum Ausgeben der berechneten Variablen ki. Die Einrichtung 706 zum Überprüfen und Modifizieren der charakteristischen Bitfolge σ umfasst einen ersten Eingang zum Empfangen der charakteristischen Bitfolge σ von der Einrichtung 702 zum Bestimmen einer charakteristischen Bitfolge σ, einen zweiten Eingang zum Empfangen von Primzahlen pi, einen dritten Eingang zum Empfangen der Variablen ki von der Einrichtung 704 zum Berechnen einer Variablen ki, einen vierten Eingang zum Empfangen des ersten Haltesignals STOP1 sowie einen Ausgang zum Ausgeben der überprüften und modifizierten charakteristischen Bitfolge σ'. Die Einrichtung 708 zum Bestimmen einer Zukunftstestzahl ZTZ aus der überprüften und modifizierten Bitfolge σ' umfasst einen ersten Eingang zum Empfangen der überprüften und modifizierten charakteristischen Bitfolge σ', einen zweiten Eingang zum Empfangen des ersten Haltesignals STOP1 sowie einen Ausgang zum Ausgeben der bestimmten Zukunftstestzahl ZTZ.
  • Die Einrichtung 702 zum Bestimmen einer charakteristischen Bitfolge σ bestimmt gemäß dem nachfolgend beschriebenen Algorithmus aus der Ausgangszahlenfolge eine charakteristische Bitfolge σ oder setzt die charakteristische Bitfolge σ gleich der empfangenen überprüften und modifizierten charakteristischen Bitfolge σ'. Die Einrichtung 704 zum Berechnen einer Variable ki berechnet gemäß dem nachfolgend beschriebenen Algorithmus aus den Werten einer Primzahl pi und der Variablen αi die Variable ki und stellt diese der Einrichtung 706 zum Überprüfen und Modifizieren der charakteristischen Bitfolge σ bereit. Die Einrichtung 706 zum Überprüfen und Modifizieren der charakteristischen Bitfolge σ überprüft und modifiziert die charakteristische Bitfolge σ gemäß dem nachfolgend beschriebenen Algorithmus unter Verwendung der Variablen ki sowie der Primzahl pi und gibt die überprüfte und modifizierte charakteristische Bitfolge σ' über den Ausgang der Einrichtung 706 zum Überprüfen und Modifizieren der charakteristischen Bitfolge σ aus. Gemäß dem nachfolgend beschriebenen Algorithmus bestimmt die Einrichtung 708 aus der überprüften und modifizierten charakteristischen Bitfolge σ' eine Zukunftstestzahl und gibt diese aus. Alternativ kann auch als weitere Bedingung gesetzt werden, dass die Zukunftstestzahl mindestens um 20 Stellen größer sein soll, als die Aktuell-Testzahl. Mittels des ersten Haltesignals STOP1 kann ein Betrieb der in 7 dargestellten Einrichtungen angehalten werden.
  • Als besonders vorteilhaft erweist sich ein derartiges Vorgehen dadurch, dass es durch den nachfolgend beschriebenen Algorithmus möglich ist, sehr schnell eine Zukunftstestzahl ZTZ zu finden, die teilerfremd zu den vorausgehend getesteten Primzahlen ist. Gegenüber den Verfahren gemäß dem Stand der Technik ermöglicht ein derartiges Vorgehen somit ein deutlich schnelleres Auffinden von Testkandidaten, die eine hohe Wahr scheinlichkeit zum Bestehen des vorzugsweise einzusetzenden Miller-Rabin-Tests in der Einrichtung 204 zum Testen aufweisen. Hieraus resultiert ein beschleunigtes Auffinden einer großen Primzahl.
  • Nachfolgend wird ein Ausführungsbeispiel der vorliegenden Erfindung beschrieben, das einen Hardware-optimierten Algorithmus zur schnellen Primzahlgenerierung aufweist.
  • Einleitend zur Beschreibung des erfindungsgemäßen Algorithmus ist zu sagen, dass die meisten Verfahren zur Berechnung großer Primzahlen aus zwei Teilaufgaben bestehen:
    • 1. Der Erzeugung geeigneter Testkandidaten; und
    • 2. der Anwendung eines schnellen Primzahltests auf die Testkandidaten.
  • Um den Prozess der Primzahlerzeugung zu beschleunigen, bieten sich daher drei Strategien an:
    • Strategie A: einen schnelleren Primzahltest zu finden;
    • Strategie B: eine Qualität der Testkandidaten zu verbessern; und
    • Strategie C: die oben genannten beiden Teilaufgaben (1) und (2) parallel auszuführen.
  • Der erfindungsgemäße Ansatz der Primzahlermittlung verfolgt die Strategien B und C.
  • Zu Strategie A: Primzahltests können in zwei Gruppen eingeteilt werden, in deterministische und probabilistische. Die probabilistischen Tests sind effizienter und daher für praktische Zwecke geeigneter. Sie haben aber gegenüber deterministischen Tests den Nachteil, dass sie nicht nur von Prim zahlen, sondern auch von einigen wenigen zusammengesetzten Zahlen bestanden werden. Eine zusammengesetzte Zahl, die einen probabilistischen Primzahltest besteht, heißt Pseudoprimzahl (in Bezug auf den jeweiligen Test). Der schnellste zur Zeit bekannte probabilistische Primzahltest ist der Miller-Rabin-Test. Er wurde in den 70er Jahren des 20. Jahrhunderts von Selfridge, Miller und Rabin entwickelt. Seither ist das Interesse der Mathematiker an der Entwicklung neuer Primzahltests stark angestiegen. Das steht im Zusammenhang mit der Entdeckung asymmetrischer Chiffriersysteme in den letzten 25 Jahren, ihrem weltweiten Einsatz und einem damit einhergehenden zunehmenden Bedarf an großen Primzahlen. Trotzdem wurde bisher kein schnellerer Primzahltest als der Miller-Rabin-Test gefunden.
  • Der wesentliche Rechenaufwand beim Miller-Rabin-Test (wie auch beim Fermat-Test) besteht darin eine sehr hohe Potenz einer relativ kleinen Basis b modulo z zu berechnen, wobei z die zu testenden Kandidatenzahl ist, also eine sehr große Zahl. Der vorzugsweise einzusetzende Coprozessor ist eigens so konstruiert, dass er modulare Multiplikationen mit langen Zahlen schnell durchführen kann – zum Unterschied von einem vorzugsweise einzusetzenden Hauptprozessor. Aus diesem Grund werden die Miller-Rabin-Tests im Coprozessor durchgeführt.
  • Einer groben Einschätzung nach wäre es nicht zielführend, den Prozeß der Primzahlgenerierung durch Verfolgen von Strategie A vorantreiben zu wollen.
  • Zu Strategie B: Die meisten Verfahren zur Primzahlgenerierung sind ihrem Wesen nach Suchverfahren. Es werden so lange gewisse Zahlen mit Hilfe eines Primzahltests überprüft bis man eine Primzahl gefunden hat. Die Kunst besteht darin, den Suchprozeß möglichst kurz zu gestalten.
  • Der Anteil der Primzahlen unter großen natürlichen Zahlen mit einer Länge von 1024 Bit beträgt ungefähr 0,14%. Statistisch betrachtet ist also etwa jede 710te ganze Zahl zwischen 21023 und 21024 eine Primzahl. Daraus folgt, dass die Wahrscheinlichkeit, dass eine zufällig gewählte 1024 Bit große ungerade natürliche Zahl eine Primzahl ist, etwa 1/355 beträgt.
  • Sei p1 = 2, p2 = 3, p3 = 5, ... die Folge der Primzahlen. Dann gilt allgemeiner: Die Wahrscheinlichkeit, dass eine zufällig gewählte 1024 Bit große natürliche Zahl, die durch keine der ersten r Primzahlen p1, ..., pr teilbar ist, eine Primzahl ist, ungefähr
    Figure 00260001
    beträgt,
    wobei ln N der natürliche Logarithmus von N = 21024 ist. Es ist ersichtlich, dass die Wahrscheinlichkeit mit wachsendem r zunimmt. Für r = 1000 ergibt die Auswertung des Ausdrucks (1) ca. 2,26%, also in etwa 1/44. Die Strategie B besteht darin, den Parameter r so groß wie möglich werden zu lassen.
  • Zu Strategie C: Bei vielen Verfahren der Primzahlgenerierung stellt sich die folgende Problematik: zu um so mehr kleinen Primzahlen die Testzahl teilerfremd ist, um so weniger Primzahltests sind zwar im Durchschnitt erforderlich aber um so aufwendiger ist dafür die Kandidatenberechnung. Das erfindungsgemäße Verfahren ist so konzipiert, dass es eine vorhandene Hardware eines für kryptographische Operationen ausgelegten Halbleiterchips optimal ausnutzt. Der Halbleiterchip umfasst hierbei vorzugsweise einen Hauptprozessor und einen kryptographischen Coprozessor. Sowohl der Hauptprozessor als auch der kryptographische Coprozessor sind hierbei an dem Prozess der Primzahlengenerierung beteiligt, und zwar in einer Weise in der beide Prozessoren ständig voll ausgelastet sind, was sich somit deutlich vorteilhaft gegenüber den herkömmlichen Ansätzen ausweist. Die Berechnung der Testkandida ten (Testzahlen TZ) übernimmt im wesentlichen der Hauptprozessor (HP), während die vorzugsweise einzusetzenden Miller-Rabin-Tests (d. h. dem zweiten Primzahlüberprüfungsalgorithmus in der Einrichtung 204 zum Testen) von dem Coprozessor abgearbeitet werden können.
  • Für ein besseres Verständnis des eigentlichen erfindungsgemäßen Algorithmus soll zunächst eine Vorversion (im folgenden als Voralgorithmus bezeichnet) beschrieben werden. Ein Ausführungsbeispiel des eigentlich zu realisierenden erfindungsgemäßen Algorithmus wird nachfolgend Bezug nehmend auf die Schritte des Voralgorithmus in späteren Ausführungen beschrieben. Das Ausführungsbeispiel des eigentlich zu realisierenden erfindungsgemäßen Algorithmus kann dabei als eine ausgebaute und verfeinerte Version des Voralgorithmus aufgefaßt werden.
  • Um eine 1 Bit große Zahl zu berechnen, wird zu Beginn mit Hilfe eines Zufallszahlengenerators eine 1 Bit große ungerade Zufallszahl z (= Ausgangszahl AZ) erzeugt. von Interesse ist insbesondere der Fall 1 = 1024, da eine Primzahl der Länge 1024 Bit gemäß dem Stand der Technik für einen RSA-Schlüssel benötigt wird. Für zukünftige Anwendungen sind jedoch auch größere Werte von 1 interessant. Die von dem Voralgorithmus (bzw. dem eigentlichen Algorithmus) schließlich ausgegebene Primzahl ist die kleinste Primzahl in der Folge
    z, z + 2, z + 4, ...
  • Wie bereits ausgeführt, werden bei der Abarbeitung des Voralgorithmus oder des zu realisierenden Algorithmus die Testkandidaten (Testzahlen TZ) im Hauptprozessor berechnet. Die auszuführenden Miller-Rabin-Tests werden von dem kryptographischen Coprozessor ausgeführt.
  • Zunächst erfolgt die Bestimmung des ersten Testkandidaten. Es werden zunächst die r – 1 Primzahlen p2, ..., pr betrachtet.
  • Die Zufallszahl z wird modulo jeder einzelnen dieser Primzahlen reduziert. Sei αi = z mod pi für i = 2, ..., r. (2)
  • Für x, y ∊ Z und n ∊ N bedeutet x = y mod n, dass x = y mod n und 0 ≤ x ≤ n – 1 gilt. Es wird ferner der Ringhomomorphismus ψ: Z → R = Z/p2Zx ... xZ/prZ n ↦ (n mod p2, ..., n mod pr)betrachtet.
  • Mit Hilfe der Abbildung ψ kann (2) auch durch die kompaktere Form ψ(z) = (α2, ..., αr) (3)ausgedrückt werden. Wenn alle αi ≠ 0 sind, dann ist z teilerfremd zu jeder der r – 1 Primzahlen p2, ..., pr. Da z ungerade ist, ist z dann teilerfremd zu den ersten r Primzahlen p1, ..., pr. In diesem Fall ist das Element ψ(z) eine Einheit im Ring R.
  • Wenn dagegen ein j ∊ {2, ..., r} existiert mit αj = 0, dann ist pj ein Teiler von z. In diesem Fall ist ψ(z) ein Nullteiler im Ring R. wenn ψ(z) = (α2, ..., αr) ∊ R eine Einheit ist, dann ist z der erste Testkandidat. Andernfalls berechnet man ψ(z + 2) = (β2, ..., βr) durch
    Figure 00280001
  • Wenn alle Elemente β2, ..., βr von Null verschieden sind, mit anderen Worten wenn ψ(z + 2) ∊ R eine Einheit ist, dann ist z + 2 der erste Testkandidat. Andernfalls berechnet man aus den Elementen βi, 2 ≤ βi ≤ r, gemäß der Vorschriften in (4) ψ(z + 4) = (γ2, ..., γr).
  • Das Verfahren wird so lange fortgesetzt bis man ein j ∊ N gefunden hat, für das ψ(z + 2j) ∊ R eine Einheit ist. Die Zahl z + 2j ist dann der erste Testkandidat. Die Zahl z + 2j, die vorzugsweise im Hauptprozessor berechnet wurde, wird nun in den kryptographischer Coprozessor übertragen. Dort wird z + 2j mit Hilfe des einzusetzenden Miller-Rabin-Tests auf Primalität hin geprüft.
  • Während der Coprozessor für den Testkandidaten z + 2j den Miller-Rabin-Test durchführt, wird im Hauptprozessor schon der nächste Testkandidat berechnet. Dazu wird z + 2j umbenannt zu z (beispielsweise durch die Einrichtung 402 zum Bestimmen einer Aktuell-Testzahl, wobei z + 2j die Zukunftstestzahl ZTZ ist und z die Aktuell-Testzahl TZ ist). Dann wird das oben beschrieben Verfahren zur Berechnung des ersten Testkandidaten wiederholt.
  • Grob gesagt, sollte r so gewählt werden, dass die Zeit, die der Hauptprozessor für die Berechnung eines Testkandidaten benötigt, in etwa die gleiche ist, die der Coprozessor für die Ausführung eines Miller-Rabin-Tests braucht.
  • Die Größe von r wird bei dem Voralgorithmus durch zwei Umstände begrenzt:
    • (i) Durch die Rechenzeit, die der Hauptprozessor zur Bestimmung des nächsten Testkandidaten (d.h. der Zufallszahl ZTZ) benötigt. Diese Zeit darf nicht länger sein als die Zeit, die der Coprozessor für die Ausführung eines Miller-Rabin-Tests benötigt.
    • (ii) Durch den Speicherbedarf der Primzahlen p2, ..., pr und den zugehörigen Resten von z modulo pi, 2 ≤ i ≤ r. Die Beschränkung (ii) wird durch den im folgenden beschriebenen eigentlich zu realisierenden Algorithmus beseitigt.
  • Ein weiterer Nachteil des Voralgorithmus besteht darin, dass die Reduktionen von z modulo der Primzahlen pi im Hauptprozessor ausgeführt werden. Die Zahl z (d. h. die Testzahl TZ) hat aber beispielsweise 1024 Binärstellen und der Hauptprozessor ist im allgemeinen nicht ausgelegt für das Rechnen mit derart großen Zahlen. Operationen mit großen Zahlen kann jedoch der Coprozessor viel schneller durchführen. Dieser Umstand wird bei dem zu realisierenden Algorithmus ebenfalls berücksichtigt.
  • Nach diesen Vorüberlegungen unter Zuhilfenahme des Voralgorithmus soll nun der zu realisierende Algorithmus als ein Ausführungsbeispiel der vorliegenden Erfindung näher erläutert werden.
  • Sei z eine ungerade natürliche Zahl (etwa die 1024 Bit große Zufallszahl aus dem Voralgorithmus), und sei p ≥ 3 eine Primzahl. Man betrachte die arithmetische Folge
    z, z + 2, z + 4, ....
  • Es ist durch den Algorithmus zu bestimmen, welche Glieder dieser Folge durch p teilbar sind.
  • Die lineare Kongruenz z + 2n = 0 mod p (5)
  • ist äquivalent zu a + 2n = 0 mod p (6) mit a = z mod p ∊ {0, ..., p – 1}. Die Kongruenzen (5) und (6) haben genau eine Lösung n = k in der Menge {0, ..., p – 1}. Dabei kann k folgendermaßen berechnet werden:
    Figure 00310001
  • Die sämtlichen Lösungen von (5) sind dann gegeben durch n = k + jp, j = 0, 1, .... Diese elementaren aber wichtigen Fakten lassen sich in dem folgenden mathematischen Lemma zusammenfassen:
    Lemma 1: Sie z eine ungerade natürliche Zahl und sei p ≥ 3 eine Primzahl. Sei α = z mod p. Die durch p teilbaren Folgeglieder von (z + 2n)∞ n=0 sind gegeben durch
    z + 2 (k + jp), j = 0, 1, ..., wobei k ∊ {0, ..., p – 1} gegeben ist durch (7).
  • Zum Erzeugen ist nun zu der vorgegebenen ungeraden Zufallszahl z eine Folge von endlichen Bitfolgen σ1, σ2, ... der Länge L. Ein möglicher Wert für L wäre 2048. Die Folge σr heißt rte charakteristische Bitfolge zur Zahl z. Die erste charakteristische Bitfolge σ1 ist die konstante Folge, deren sämtliche Glieder gleich 1 sind. Die weiteren charakteristischen Bitfolgen werden rekursiv definiert.
  • Sei r ≥ 2 und sei σr-1 = (an)L-1 n=0 die (r – 1)te charakteristische Bitfolge. Zur Bestimmung von σr wird die rte Primzahl pr benötigt. Sei αr = z mod pr und sei kr die eindeutige Lösung der linearen Kongruenz αr + 2kr = 0 mod pr mit 0 ≤ kr ≤ pr – 1. (Die Zahl kr kann durch (7) effizient berechnet werden.) Die Glieder der Folge σr = (bn)L-1 n=0 sind dann
    Figure 00320001
  • Für x ∊ R ist [x] die größte ganze Zahl ≤ x. Der folgende Satz 1 ist eine direkte Konsequenz aus dem genannten Lemma 1.
  • Satz 1. Sei σr = (bn)L-1 n=0 die r-te charakteristische Bitfolge zur ungeraden Zahl z ∊ N. Dann gilt für n ∊ {0, ..., L – 1}: Die Zahl z + 2n ist genau dann teilerfremd zu dem Produkt der ersten r Primzahlen, wenn bn = 1 ist.
  • Die folgende Definition 1 vereinfacht die weiteren Erörterungen.
  • Definition 1. Eine natürliche Zahl n ≥ 2 heißt Kandidat der Qualität r ≥ 1, wenn n teilerfremd ist zu dem Produkt der ersten r Primzahlen.
  • Somit sind ungerade Zahlen Testkandidaten der Qualität 1. Die nte Primzahl pn ist ein Kandidat der Qualität r für 1 ≤ r ≤ n – 1. Die Zahl 55 ist ein Kandidat der Qualität 1 und 2, aber kein Kandidat der Qualität r ≥ 3. Dies resultiert daher, dass die Zahl 55 nicht teilerfremd zur Primzahl p3 = 5 ist.
  • Das Konzept der charakteristischen Bitfolge ermöglicht es, Testkandidaten der Qualität r zu erzeugen, ohne dass deswegen alle Primzahlen p2, ..., pr in einem Halbleiterchip gespeichert werden müssen. Es muss nur jede einzelne dieser Primzahlen kurzzeitig zur Verfügung stehen. Ein derartiges Vorgehen bedeutet insbesondere, dass zur Primzahlenberechnung gemäß dem erfindungsgemäßen Ansatz ein deutlich geringerer Speicher zur Verfügung stehen kann. Das Verändern der Glieder der Bitfolge erfolgt hierbei vorzugsweise in der Einrichtung 706 zum Überprüfen und Modifizieren der charakteristischen Bitfolge σ.
  • Zur Berechnung der charakteristischen Bitfolge σ ist zu sagen, dass die Berechnung der r-ten charakteristischen Bitfolge vereinfacht werden kann, wenn pr größer wird als L. Tatsächlich tritt die Situation bei dem hier vorgestellten Algorithmus schon sehr bald ein. Sei σr- 1 = (an)L-1 n=0 die (r – 1)-te und σr = (bn)L-1 n=0 die r-te charakteristische Bitfolge. Insbesondere sind die beiden folgenden Fälle hier von Interesse.
    • Fall 1: pr ≥ L und αr = 0. Dann ist b0 = 0 und bn = an für n = 1, 2, ..., L – 1.
    • Fall 2: pr ≥ 2L – 1 und αr ≥ 1 gerade. Dann ist bn = an für n = 0, 1, ..., L – 1.
  • Beweis:
    • Ad Fall 1: Nach (7) impliziert αr = 0, dass kr = 0 ist. Somit folgt die Behauptung aus (8).
    • Ad Fall 2: Aus (7) und αr ≤ pr – 1 folgt
      Figure 00330001
      so dass die Behauptung aus (8) folgt.
  • Ende des Beweises
  • Für L = 2048 ist p310 = 2053 die erste Primzahl, die größer oder gleich L ist. Die erste Primzahl pr mit pr ≥ 2L – 1 ist pr = p565 = 4099.
  • Das in den vorausgehenden Ausführungen beschriebenen Siebverfahren (d. h. das Verfahren zum Überprüfen einer Aktuell-Testzahl und zum Bereitstellen einer Zukunftstestzahl) wird vorzugsweise in der Einrichtung 302 zum Überprüfen einer Ak tuell-Testzahl und der Einrichtung 304 zum Bereitstellen einer Zukunftstestzahl ausgeführt. Nachfolgend wird das Siebverfahren anhand eines Beispiels näher erläutert.
  • Gegeben sei die (Zufalls-) Zahl z = 81783 (die als Ausgangszahl AZ verwendet wird). Gesucht sind die Testkandidaten der Qualität 8 unter den Elementen z + 2j, 0 ≤ j ≤ 9.
  • Unter Rückgriff auf die in 8 dargestellte tabellarische Darstellung von Zwischenergebnissen des Verfahrens zum Überprüfen einer Aktuell-Testzahl und zum Bereitstellen einer Zukunftstestzahl ZTZ soll in den nachfolgenden Ausführungen das genannte Verfahren näher beschrieben werden. Zur Initialisierung werden in jeder der Zellen bj, 0 ≤ j ≤ 9, der Zeile n = 1 in der 8 der Wert „1" eingetragen.
  • Berechnung von Zeile 2: p2 = 3, α2 = z mod p2 = 0 und (7) liefert k2 = 0.
  • Aus (8) folgt b0 = b3 = b6 = b9 = 0.
  • Berechnung von Zeile n = 3:
    Figure 00340001
  • Aus (8) folgt b1 = b6 = 0.
  • Berechnung von Zeile n = 4:
    Figure 00340002
    Aus (8) folgt b6 = 0.
  • Das Verfahren kann beliebig fortgesetzt werden. Zur Beantwortung der eingangs gestellten Frage (d. h. zur Suche der Testkandidaten der Qualität 8 unter dem Element z + 2j) braucht es an dieser Stelle aber nur bis zur Zeile n = 8 fortgeführt werden. Ein Blick auf die achte Zeile aus 8 zeigt, dass die Zellen b4, b5, b7 und b8 den Wert 1 enthalten. Daraus folgt, dass z + 8, z + 10, z + 14 und z + 16 Testkandidaten der Qualität 8 sind. Tatsächlich ist z + 16 = 81799 eine Primzahl.
  • Man betrachte, dass zur Berechnung der nten Zeile aus 8 nur die Zahl z, die nte Primzahl pn und die Einträge pj, 0 ≤ j ≤ 9, der (n – 1)ten Zeile erforderlich sind. Weitere Daten (insbesondere die Daten, die zur Berechnung von vorangehenden Zeilen benötigt wurden) können gelöscht werden. Man beachte auch, dass eine Primzahl pn, die einmal bearbeitet wurde, in der Folge nicht mehr benötigt wird. Hierdurch ergibt sich wiederum eine Einsparmöglichkeit des zur Primzahlenberechnung notwendigen Speichers, was sich in einem geringeren notwendigen Hardwareaufwand zur Primzahlgenerierung gemäß dem erfindungsgemäßen Ansatz vorteilhaft auswirkt.
  • Im folgenden soll näher auf die Häufigkeit der Primzahlen unter Testkandidaten der Qualität r eingegangen werden. Sei dr = Πr i=1 pi das Produkt der ersten r Primzahlen und sei φ(dr) = Πr i=1 (pi – 1). Angenommen es wird zufällig eine ganze Zahl aus dem Intervall [0, N] oder [N/2, N] gewählt. Dann beträgt die Wahrscheinlichkeit, eine Primzahl zu erhalten etwa 1/ln N, wenn N groß ist. Wenn man sich bei der Wahl auf Testkandidaten der Qualität r beschränkt, steigt die Wahrscheinlichkeit aus den Kandidaten eine Primzahl zu finden in etwa um den Faktor dr/φ(dr) an. Die Wahrscheinlichkeit, dass eine zufällig gewählte 1024 Bit große natürliche Zahl der Qualität r eine Primzahl ist, beträgt somit ungefähr
    Figure 00350001
  • Der reziproke Wert W(r, 1024)–1 entspricht der durchschnittlichen Anzahl von Miller-Rabin-Tests, die ausgeführt werden müssen bis man eine Primzahl gefunden hat, vorausgesetzt man testet Testkandidaten der Qualität r, die zufällig gewählt wurden. Letzteres trifft streng genommen auf den hier dargestellten Algorithmus nicht zu. Nur z ist eine echte Zufallszahl. Andere potentielle Testkandidaten wie z + 2, z + 4 usw. sind es nicht. Dennoch stellen die in 9 tabellarisch dargestellten Werte einen guten Anhaltspunkt für dr/φ(dr), W(r, 1024) und der Anzahl von notwendigen Miller-Rabin-Tests dar.
  • Die Einträge in der letzten Spalte der in 9 dargestellten Tabelle beschreiben die Anzahl der im Durchschnitt erforderlichen Miller-Rabin-Tests mit einer kleinen Basis b, die durchgeführt werden müssen, bis eine Zahl gefunden würde, die den Test besteht. Für diese Zahl müssen dann noch zwei Miller-Rabin-Kontrolltests mit einer jeweils unterschiedlichen zufälligen Basis b' durchgeführt werden. Diese beiden zusätzlichen Miller-Rabin-Tests sind in der Tabelle aus 9 nicht berücksichtigt.
  • Im folgenden Abschnitt soll näher auf die Erzeugung der Primzahlen p2, ..., pr eingegangen werden. Um die Testkandidaten der Qualität r mit dem vorstehend skizzierten Siebverfahren unter Verwendung der charakteristischen Bitfolge σ zu ermitteln, müssen die r – 1 Primzahlen p2, ..., pr zur Verfügung stehen. Je größer r ist, um so weniger Miller-Rabin-Tests sind im Durchschnitt erforderlich, wie aus der Tabelle in 9 ersichtlich ist. Wie groß r bei dem erfindungsgemäßen Ansatz tatsächlich werden kann, lässt sich durch Simulationen herausfinden. Ein in diesem Zusammenhang sinnvoller Wert, dessen Erreichen auch für realistisch gehalten werden kann, wäre r = 6543.
  • Das Besondere an dem Wert r = 6543 ist die Tatsache, dass die Zahl r = 6543 die größte natürliche Zahl ist, für die ein Produkt von Primzahlen p6542 = 65521 und p6543 = 65543 noch kleiner als 232 ist. Das heißt, das Produkt p6542p6543 hat vier Byte, während das Produkt p6543p6544 bereits eine Länge von mehr als vier Byte hat.
  • Die ersten 6543 (oder noch mehr) Primzahlen können aufgrund des hierzu notwendigen Speicherbedarfs auf dem Halbleiterchip nicht permanent gespeichert werden. Das müssen sie aber gemäß dem erfindungsgemäßen Ansatz auch nicht. Es genügt die ersten 55 Primzahlen permanent vorrätig zu haben. Streng genommen genügt es, die ersten 54 Primzahlen p2, ..., p55, zu speichern. Die erste Primzahl p1 = 2 wird nicht benötigt. Es ist jedoch vorteilhaft auch die 56-te Primzahl p56 abzuspeichern, was in den nachfolgenden Ausführungen noch deutlich wird. Aus der in 10 abgebildeten tabellarischen Darstellung sind die ersten 56 Primzahlen zu entnehmen.
  • Mit dem sogenannten „Sieb des Eratosthenes" können aus den ersten 55 Primzahlen die ersten 653 Primzahlen berechnet werden. Dies geschieht vorzugsweise im Hauptprozessor, wobei beispielsweise immer nur 100 bis 500 Primzahlen auf einmal berechnet werden. Diese Primzahlen werden dann dazu benutzt, um die Qualität der Testkandidaten zu erhöhen. Danach werden sie nicht mehr benötigt und gelöscht, wodurch sich die bereits genannte Einsparmöglichkeit an Speicherbedarf ergibt.
  • Um z. B. alle Primzahlen zwischen p56 = 263 und 2000 zu berechnen, wird folgenderweise vorgegangen. Man betrachte die ungeraden Zahlen 265, 267, 269, ..., 1997, 1999. (9)
  • Man entferne aus der Liste (9) alle Vielfachen von p2 = 3, p3 = 5, ..., p14 = 43. Die zurückbleibenden Zahlen sind alle Primzahlen zwischen 264 und 2000. Das sind die 247 Primzahlen p57, ..., p303. Eine derartige Vorgehensweise wird als „Sieb des Eratosthenes" bezeichnet.
  • Abschließend sei noch bemerkt, dass die
    Figure 00380001
    die dritte Fermatzahl und
    Figure 00380002
    die vierte Fermatzahl ist.
  • Im folgenden soll näher auf eine Hardware-optimierte und somit schnelle Reduktion von z modulo pi eingegangen werden. Da die vorgegebene Zufallszahl z mit 1024 Binärstellen sehr groß ist, ist der Hauptprozessor oftmals für die Berechnung der Elemente αi = z mod pi nicht prädestiniert. Hierfür ist meist der eigens für kryptographische Rechenschritte ausgelegte Coprozessor besser geeignet.
  • Die Elemente αi = z mod pi werden jedoch nicht ausschließlich im Coprozessor berechnet. Der Reduktionsprozeß z mod pi geschieht vorzugsweise in zwei Arbeitsgängen. Der erste Arbeitsgang findet vorzugsweise im Coprozessor statt, der zweite Arbeitsgang findet vorzugsweise im Hauptprozessor statt. Die Vorgehensweise stützt sich hierbei auf ein folgendes Lemma 2, auf dessen elementaren Beweis an dieser Stelle verzichtet wird.
  • Lemma 2. Sei z ∊ Z und seien a, b ∊ N mit a | b (d. h. a teilt b). Dann gilt z mod a = (z mod b) mod a.
  • Das Lemma 2 besagt, dass z mod a in zwei Schritten berechnet werden kann. Zuerst wird p = z mod b berechnet. Das Ergebnis p ist eine ganze Zahl zwischen 0 und b – 1. Dann wird σ = p mod a berechnet. Man stelle sich vor, dass z eine 1024-Bit-Zahl (128 Byte) ist, dass b höchstens 4 Byte und a höchstens 2 Byte hat. Eine erste Reduktion p = z mod b würde man dann beispielsweise im Coprozessor ausführen, während eine zweite Reduktion σ = p mod a im Hauptprozessor ausgeführt werden kann.
  • Um dieses Prinzip für die Berechnung der αi = z mod pi anwenden zu können, werden die Primzahlen p2, p3, ..., p6543 in Produkte qj zu je vier Byte zusammengefaßt. Es gilt also qj < 232 für alle j.
  • Dabei ist q1 = p2p3 ... p10 das Produkt aus den ersten neun ungeraden Primzahlen,
    Figure 00390001
  • Für n = 5, 6, ..., 11 besteht qn aus vier Primfaktoren: qn = p4n+6p4n+7p4n+8p4n+9.
  • Für n = 12, 13, ..., 79 besteht qn aus drei Primfaktoren: qn = p3n+18p3n+19p3n+20.
  • Für n = 80, 81, ..., 3222 besteht qn aus zwei Primfaktorenqn = p2n+98p22n+99.
  • Eine Berechnung von αi = z mod pi geschieht dann beispielsweise wie folgt:
    • 1. Bestimme dasjenige j mit pi | qj;
    • 2. Berechne im Coprozessor βj = z mod qj;
    • 3. Berechne im Hauptprozessor αi = βj mod pi.
  • Nachfolgend wird das erfindungsgemäße Verfahren an Hand eines bevorzugten Ausführungsbeispiels des zu realisierenden Algo rithmus näher beschrieben. Hierzu wird auf die Schritte des in den 11A bis 11D dargestellten Ablaufdiagramms Bezug genommen. Der Algorithmus kann in drei Phasen eingeteilt werden. In der ersten Phase wird ein Testkandidat der Qualität 56 erzeugt und dieser dann einem Miller-Rabin-Test (abgekürzt als M-R-Test bezeichnet) unterworfen. In der zweiten Phase werden Testkandidaten der Qualität 57 bis 257 erzeugt. In der dritten Phase werden Testkandidaten der Qualität 258 bis 6543 erzeugt. Ferner werden in der Beschreibung des Algorithmus sowie in den 11A bis 11D die Abkürzungen HP für den Hauptprozessor und die Abkürzung CP für den Coprozessor im folgenden verwendet.
  • Zunächst wird die erste Phase des Algorithmus näher beschrieben. In einem ersten Schritt 1102, der in 11A dargestellt ist, erzeugt ein Zufallszahlengenerator eine große ungerade Zufallszahl z, die eine Länge von größer als 200 Bit, beispielsweise 1024 Bit umfasst. Hierbei kann beispielsweise die Einrichtung 102 zum Bestimmen einer Ausgangszahl AZ aus 1 den Zufallszahlengenerator umfassen, wobei die 1024 Bit große ungerade Zufallszahl z der Ausgangszahl AZ entspricht.
  • In einem hieran anschließenden zweiten Schritt 1104 werden beispielsweise im Hauptprozessor (HP) aus den permanent gespeicherten 55 Primzahlen p2 = 3, p3 = 5, ..., p56 = 263 wie vorstehend beschrieben 12 Produkte q1, q2, ..., q12 berechnet. Die Berechnung der Primzahlen kann beispielsweise in der Einrichtung 504 zum Bestimmen eines Produktes erfolgen.
  • Hieran anschließend werden in einem dritten Schritt 1106 des in 11A dargestellten Diagramms vorzugsweise im Coprozessor (CP) die Elemente βj = z mod qj, 1 ≤ j ≤ 12, berechnet, was beispielsweise in der Einrichtung 506 zum Reduzieren der TZ erfolgen kann. Hierbei ist anzumerken, dass wie zuvor beschrieben wurde, alle βj und qj vorzugsweise höchstens vier Byte haben und somit eine Länge haben, durch die eine Verar beitung von βj und qi im Hauptprozessor numerisch effizient möglich ist.
  • In einem hieran anschließenden vierten Schritt 1108 des in 11A dargestellten Diagramms werden vorzugsweise im Hauptprozessor Elemente αi = z mod pi, 2 ≤ i ≤ 56, folgendermaßen berechnet:
    αi = β1 mod pi für i = 2, 3, ..., 10;
    αi = β2 mod pi für i = 11, 12, ..., 15;
    αi = β3 mod pi für i = 16, 17, ..., 20;
    αi = β4 mod pi für i = 21, 22, ..., 25;
    αi = β5 mod pi für i = 26, 27, 28, 29;
    αi = β6 mod pi für i = 30, 31, 32, 33;
    αi = β7 mod pi für i = 34, 35, 36, 37;
    αi = β8 mod pi für i = 38, 39, 40, 41;
    αi = β9 mod pi für i = 42, 43, 44, 45;
    αi = β10 mod pi für i = 46, 47, 48, 49;
    αi = β11 mod pi für i = 50, 51, 52, 53;
    αi = β12 mod pi für i = 54, 55, 56, 57.
  • Dieses Berechnen kann vorzugsweise in der Einrichtung 508 zum Reduzieren der Variablen β erfolgen.
  • In einem hieran anschließenden fünften Schritt 1110 des in 11A dargestellten Diagramms werden vorzugsweise im Hauptprozessor aus den Elementen αi und pi gemäß der Vorschrift (7) die zugehörigen Elemente ki berechnet für i = 2, 3, ..., 56. Eine derartige Berechnung der Elemente ki erfolgt vorzugsweise in der in 7 dargestellten Einrichtung 704 zum Berechnen einer Variablen ki.
  • In einem hieran anschließenden sechsten Schritt 1112 wird mit Hilfe von ki und pi gemäß (8) die charakteristische Bitfolge σ56 = (bn)L-1 n=0 bestimmt. Dieses Bestimmen der charakteristischen Bitfolge wird vorzugsweise in der in 7 dargestellten Einrichtung 706 zum Überprüfen und Modifizieren der charakteristischen Bitfolge σ durchgeführt.
  • Aus den bisher ausgeführten Schritten ergeben sich Berechnungsergebnisse, die, wie in 11A dargestellt, als Datensatz 1 bezeichnet werden können.
  • In einem hieran anschließenden siebten Schritt 1114 des in 11B dargestellten Diagramms werden die Berechnungsergebnisse des Datensatzes 1 weiter verarbeitet, wobei ein Bestimmen des kleinsten Indexes j erfolgt, für den bj = 1 ist mit j ∊ {0, 1, ..., L – 1}. Mit anderen Worten ausgedrückt ist das Element bj das erste von 0 verschiedene Element in der Folge σ56 = b0, b1, ..., bL-1.
  • Der siebte Schritt 1114 des Bestimmen des kleinsten Indexes für den bj = 1 gilt, erfolgt vorzugsweise in der in 7 dargestellten Einrichtung 708 zum Bestimmen einer Zukunftstestzahl aus der überprüften und modifizierten Bitfolge σ'.
  • In einem nachfolgenden achten Schritt 1116 des in 11B dargestellten Diagramms erfolgt ein Berechnen der Zahl z + 2j für das aus dem siebten Schritt 1114 bestimmte j. Diese Zahl ist teilerfremd zu den ersten 56 Primzahlen. Der achte Schritt 1116 kann wiederum in der Einrichtung zum Bestimmen einer Zukunftstestzahl 708 aus der überprüften und modifizierten Bitfolge σ' erfolgen wobei die Zahl z + 2j nunmehr der Zukunftstestzahl ZTZ entspricht.
  • In einem hieran anschließenden neunten Schritt 1118 des in 11B dargestellten Diagramms erfolgt ein Starten eines Miller-Rabin-Tests mit kleiner Basis b in dem Coprozessor für die Zahl z + 2j. Hierbei wird die Zahl z + 2j als Testzahl gemäß der Darstellung in 2 von der Einrichtung 202 zum Überprüfen einer Aktuell-Testzahl oder zum Bereitstellen einer Zukunftstestzahl zu der Einrichtung 204 zum Testen übertragen, in welcher der Miller-Rabin-Test durchgeführt tragen, in welcher der Miller-Rabin-Test durchgeführt wird. Ferner kann durch das geeignete Setzen des ersten Statussignals PZ1 der Miller-Rabin-Test in der Einrichtung 204 zum Testen gestartet werden.
  • Mit einer Abarbeitung des neunten Schrittes 1118 ist die erste Phase des zu realisierenden Algorithmus beendet und die zweite Phase des Algorithmus wird gestartet.
  • In einem 10. Schritt 1120 des in 11B dargestellten Diagramms werden vorzugsweise im Hauptprozessor mit dem Sieb des Eratosthenes die nächsten 201 Primzahlen p57, p58, ..., p257, berechnet und in 67 Tripel {p57, p58, p59}, ..., {p60, p61, p62}, ..., {p255, p256, p257} unterteilt. Diesen Tripeln sind die Produkte q13, q14, ..., q79 zugeordnet. Hierbei erfolgt das Berechnen der nächsten Primzahlen vorzugsweise in der in 4 dargestellten Einrichtung 404 zum Bereitstellen von Primzahlen pj sowie das Unterteilen der Primzahl in die 64 Tripel vorzugsweise in der in 5 dargestellten Einrichtung 502 zum Auswählen einer Anzahl von Primzahlen pi aus den Primzahlen pj.
  • In einem 11. Schritt 1122 des in 11B dargestellten Diagramms werden im Hauptprozessor die Primzahlen des ersten Tripels miteinander multipliziert so dass eine Variable q13 = p57,p58p59 erhalten wird. Dieses Multiplizieren erfolgt vorzugsweise in der in 5 dargestellten Einrichtung 504 zum Bestimmen eines Produktes q aus den ausgewählten Primzahlen pi.
  • In einem an den 11. Schritt 1122 anschließenden 12. Schritt 1124 des in 11B dargestellten Diagramms erfolgt ein Berechnen von β13 = z mod q13 im Coprozessor. Dieses Berechnen erfolgt vorzugsweise in der in 5 dargestellten Einrichtung 506 zum Reduzieren der Testzahl TZ unter Verwendung des Produktes q. Hierbei wird zugleich ausgenutzt, dass die große Testzahl TZ (die der Zahl z entspricht) numerisch effizient reduziert werden kann, da der Coprozessor für die Berechnung mit großen Zahlen (insbesondere ein modulares Reduzieren von großen Zahlen) besonders ausgebildet ist.
  • In einem an den 12. Schritt 1124 anschließenden 13. Schritt 1126 des in 11B dargestellten Diagramms werden im Hauptprozessor die Elemente αi = z mod pi, i = 57, 58, 59, durch folgende Berechnungsvorschrift berechnet: α57 = β13 mod p57; α58 = β13 mod p58; α59 = β13 mod p59;
  • Das Berechnen der Elemente αi erfolgt hierbei vorzugsweise in der in 5 dargestellten Einrichtung 508 zum Reduzieren von β unter Verwendung der Primzahlen pi, um eine Variable αi zu erhalten.
  • In einem an den 13. Schritt 1126 anschließenden 14. Schritt 1128 des in 11B dargestellten Diagramms werden im Hauptprozessor aus den Elementen αi und pi, i = 57, 58, 59 gemäß den Vorschriften (7) die Variablen k57, k58 und k59 berechnet. Dieses Berechnen erfolgt vorzugsweise in der in 7 dargestellten Einrichtung 704 zum Berechnen einer Variablen ki.
  • In einem an den 14. Schritt 1128 anschließenden 15. Schritt 1130 des in 11B dargestellten Diagramms wird im Hauptprozessor mit Hilfe der ki und pi, i = 57, 58, 59, gemäß (8) die charakteristische Bitfolge σ59 = (cn)L-1 n=0 bestimmt. Dieses Bestimmen erfolgt vorzugsweise in der in 7 dargestellten Einrichtung 706 zum Überprüfen und Modifizieren der charakteristischen Bitfolge σ.
  • Aus den bereits ausgeführten Schritten ergeben sich Berechnungsergebnisse, die als Datensatz 2 bezeichnet werden können, so wie es in 11B dargestellt ist.
  • In einem an den 15. Schritt 1130 anschließenden 16. Schritt 1132, der in dem Diagramm aus 11C dargestellt ist, werden die Berechnungsergebnisse aus dem Datensatz 2 weiter ver2 arbeitet, wobei j der im siebten Schritt 1114 bestimmte Index sei. Betrachtet werde ein Folgeglied cj von σ59 = (cn)L-1 n=0. In einem ersten Fall sei cj gleich 0. In diesem ersten Fall sei das kleinste j' ∊ {0, 1, ..., L – 1} mit cj = 1 zu bestimmen, wobei klarerweise gilt, dass j' > j ist. Weiterhin ist eine neue Testzahl z + 2j' zu berechnen. Außerdem ist der im Coprozessor laufende Miller-Rabin-Test abzubrechen und für die neue Testzahl z + 2j' ein neuer Miller-Rabin-Test zu starten. Diese neue Testzahl ist in diesem ersten Fall ein Testkandidat der Qualität 59. In einem zweiten Fall ist cj gleich 1. In diesem zweiten Fall soll mit einem nachfolgend dargestellten 17. Schritt 1134 fortgefahren werden.
  • Der 16. Schritt 1132 wird vorzugsweise in der in 7 dargestellten Einrichtung 708 zum Bestimmen einer Zukunftstestzahl ZTZ aus der überprüften und modifizierten Bitfolge σ' durchgeführt, wobei die Zukunftstestzahl gleich der neuen Testzahl z + 2j' ist. Die neue Testzahl liegt damit größenordnungsmäßig im Bereich der ursprünglichen Testzahl, da lediglich eine zur Aktuell-Testzahl im wesentlichen benachbarte Zukunftstestzahl gewählt wird, für die eine Teilerfreiheit zu bereits vorausgehend ermittelten Primzahlen sichergestellt ist. Ferner wird über das erste Statussignal PZ1 ausgegeben, das die ursprüngliche Testzahl, für die in der in 2 dargestellten Einrichtung 204 zum Testen ein Miller-Rabin-Test läuft keine Primzahl ist (PZ1 = –1) (Fall 1) wobei die Einrichtung 206 zum Erkennen ausgebildet ist, ansprechend auf das erste Statussignal PZ1 ein zweites Haltesignal STOP2 auszugeben, um den in der Einrichtung 204 zum Testen laufenden Miller-Rabin-Test zu stoppen. Durch die Einrichtung 202 zum Überprüfen einer Aktuell-Testzahl oder zum Bereitstellen einer Zukunftstestzahl wird bereits die Zukunftstestzahl ZTZ (d. h. die neue Testzahl z + 2j') über den ersten Ausgang des Signals TZ der Einrichtung 204 zum Testen übermittelt, wobei über das erste Statussignal PZ1 (beispielsweise bei dem Übergang von einem negativen Status PZ1 = –1 in einen „undefinierten" Status PZ1 = 0) ein neuer Miller-Rabin-Test gestartet werden kann.
  • In einem an den 16. Schritt 1132 anschließenden 17. Schritt 1134 erfolgt ein Wiederholen der Schritte 11 bis 16 für jedes der restlichen 66 Tripel aus dem 10. Schritt 1120, wobei die Einrichtung 512 zum Zählen die Abarbeitung der Schritte 11 bis 16 überwacht.
  • Sobald ein Miller-Rabin-Test im Coprozessor beendet ist, wird verfahren, wie im an den 17. Schritt anschließenden 18. Schritt 1136 des in 11C dargestellten Diagramms beschrieben ist:
    Fall 1: Die getestete Zahl (Testzahl) hat den Miller-Rabin-Test bestanden.
  • Es werden zwei weitere Miller-Rabin-Tests für diese Testzahl durchgeführt. Während der Miller-Rabin-Test, den die Testzahl bereits bestanden hat, mit einer kleinen Basis b durchgeführt wurde, werden diese beide Miller-Rabin-Tests mit unterschiedlichen Zufallsbasen b' durchgeführt. Wenn die Testzahl die zwei zusätzlichen Miller-Rabin-Tests besteht, wird sie als Primzahl erkannt und ausgegeben und der Algorithmus an dieser Stelle gestoppt. Andernfalls so vor gegangen wie in einem zweiten Fall des 18. Schrittes 1136 beschrieben wird.
    Fall 2: Die getestete Zahl (Testzahl) hat den Miller-Rabin-Test nicht bestanden.
  • Man betrachte im Hauptprozessor die aktuelle charakteristische Bitfolge σ = (dn)L-1 n=0. Sei j der Index des ersten von 0 verschiedenen Folgengliedes dj. Berechne z + 2j und starte im Coprozessor einen neuen Miller-Rabin-Test für die Testzahl z + 2j.
  • Der erste Fall des 18. Schrittes 1136 kann beispielsweise in der Einrichtung 204 zum Testen durchgeführt werden. Hierzu kann die Einrichtung 204 zum Testen durch das zweite Statussignal PZ2 der Einrichtung 206 zum Erkennen signalisieren, dass die Testzahl TZ den Miller-Rabin-Test sowie die zwei weiteren Miller-Rabin-Tests bestanden hat und somit als Primzahl (oder als Zahl, die mit einer hohen Wahrscheinlichkeit eine Primzahl ist) anzusehen ist. Die Einrichtung 206 zum Erkennen kann weiterhin über das erste Haltesignal STOP1 und das zweite Haltesignal STOP2 einen Betrieb der Einrichtung 202 zum Überprüfen einer Aktuell-Testzahl oder zum Bereitstellen einer Zukunftstestzahl sowie der Einrichtung 204 zum Testen beenden und die Testzahl als Primzahl über den zweiten Ausgang PZout ausgeben.
  • Der zweite Fall kann in der Einrichtung 204 zum Testen, der Einrichtung 206 zum Erkennen sowie der Einrichtung 202 zum Überprüfen einer Aktuell-Testzahl oder zum Bereitstellen einer Zukunftstestzahl abgearbeitet werden. Hierzu wird über das zweite Statussignal PZ2 von der Einrichtung zum Testen 204 der Einrichtung 206 zum Erkennen signalisiert, dass die Testzahl TZ den Miller-Rabin-Test nicht bestanden hat und über das erste Haltesignal STOP1 somit der Einrichtung zum Überprüfen 202 einer Aktuell-Testzahl oder zum Bereitstellen einer Zukunftstestzahl signalisiert, dass eine Zukunftstestzahl z + 2j zu berechnen ist und im Coprozessor ein neuer Miller-Rabin-Test für diese neue Zukunftstestzahl z + 2j zu starten ist.
  • Mit einer Abarbeitung des 18. Schrittes 1136 ist die zweite Phase des Algorithmus beendet und die dritte Phase wird gestartet.
  • Die dritte Phase des als bevorzugtes Ausführungsbeispiel gewählten Algorithmus, die nach dem 18. Schritt 1136 beginnt, besteht aus sieben identischen Teilphasen. Zu Beginn jeder Teilphase werden zunächst mit dem „Sieb des Eratosthenes" die nächsten 898 Primzahlen erzeugt. Dabei werden in der jeweiligen Teilphase die folgenden Primzahlen erzeugt:
    Teilphase 1: p258, p259, ..., p1155;
    Teilphase 2: p1156, p1157, ..., p1158;
    Teilphase 3: p2054, p2055, ..., p2951;
    Teilphase 4: p2952, p2953, ..., p3849;
    Teilphase 5: p3850, p3851, ..., p4747;
    Teilphase 6: p4748, p4749, ..., p5645;
    Teilphase 7: p5646, p5647, ..., p6543.
  • Im folgenden werden die Schritte der ersten Teilphase näher beschrieben. Die weiteren Teilphasen verlaufen zur ersten Teilphase analog.
  • Im 19. Schritt 1138 (d. h. im ersten Schritt der Teilphase 1) des in 11C dargestellten Diagramms werden mit dem Sieb des Eratosthenes die 898 Primzahlen p258, p259, ..., p1155 erzeugt und in 449 Paare {p258, p259}, {p260, p261}, ..., {p1154, p1155}zusammengefasst. Diesen Paaren sind die 449 Produkte q80, q81, ..., g528 zugeordnet. Der 19. Schritt 1138 erfolgt hierbei analog zu den obigen Ausführungen in der in 4 dargestellten Einrichtung 404 zum Bereitstellen der Primzahlen pj sowie der in 5 dargestellten Einrichtung 502 zum Auswählen einer Primzahl von Primzahlen pi aus den Primzahlen pj.
  • In einem an den 19. Schritt 1138 folgenden 20. Schritt 1140 werden dem Hauptprozessor die Primzahlen des ersten Paares miteinander multipliziert: q80 = p258p259. Analog zu den obigen Ausführungen erfolgt dieses Multiplizieren in der in 5 dargestellten Einrichtung 504 zum Bestimmen eines Produktes q aus den ausgewählten Primzahlen pi.
  • Aus den bisher ausgeführten Schritten ergeben sich Berechnungsergebnisse, die als Datensatz 3 bezeichnet werden können, wie in 11C dargestellt ist.
  • In einem an den 20. Schritt 1140 anschließenden 21. Schritt 1142, des in 11D dargestellten Diagramms, werden die Berechnungsergebnisse des Datensatzes 3 weiter verarbeitet, wobei im Coprozessor die Variable β80 = z mod q80 berechnet wird. Analog zu den obigen Ausführungen erfolgt dieses Berechnen in der in 5 dargestellten Einrichtung 506 zum Reduzieren der Testzahl unter Verwendung des Produktes q, um eine Variable β zu erhalten, wobei die Testzahl TZ nunmehr der Zahl z entspricht.
  • In einem an den 21. Schritt 1142 anschließenden 22. Schritt 1144 des in 11D dargestellten Diagramms werden im Hauptprozessor wiederum die Elemente ar = αi mod pi, i = 258, 259 berechnet durch die folgende Berechnungsvorschrift: α258 = β80 mod p258; α259 = β80 mod p259.
  • Analog zu den obigen Ausführungen erfolgt das Berechnen der Elemente αi in der in 5 dargestellten Einrichtung 508 zum Reduzieren von β unter Verwendung der Primzahlen pi, um eine Variable αi zu erhalten.
  • In einem an den 22. Schritt 1144 anschließenden 23. Schritt 1146 des in 11D dargestellten Diagramms werden aus den Elementen αi und pi im Hauptprozessor i = 258, 259, gemäß der Vorschrift (7) die Variablen (Zahlen) k258 und k259 berechnet. Analog zu den obigen Ausführungen erfolgt dieses Berechnen in der in 7 dargestellten Einrichtung 704 zum Berechnen einer Variablen ki.
  • In einem an den 23. Schritt 1146 anschließenden 24. Schritt 1148 des in 11D dargestellten Teildiagramms wird im Hauptprozessor mit Hilfe der ki und pi, i = 258, 259, gemäß der Vorschrift (8) die charakteristische Bitfolge σ259 = (en)L-1 n=0 bestimmt. Dieses Bestimmen erfolgt analog zu den vorherigen Ausführungen in der in 7 dargestellten Einrichtung 706 zum Überprüfen und Modifizieren der charakteristischen Bitfolge σ.
  • In einem an den 24. Schritt 1148 anschließenden 25. Schritt 1150 des in 11D dargestellten Teildiagramms sei j ∊ {0, 1, ..., L – 1} der kleinste Index für den ej = 1 ist. Betrachte den Testkandidaten z + 2j. Sei z + 2j0 der Testkandidat für den im Coprozessor gerade ein Miller-Rabin-Test durchgeführt wird.
    Fall 1: j ≠ j0
  • Stoppe den im Coprozessor laufenden Miller-Rabin-Test und starte einen neuen Miller-Rabin-Test für z + 2j.
    Fall 2: j = j0
  • Gehe zu einem im folgenden beschrieben 26. Schritt 1152.
  • Ein Teil des 25. Schritt 1150 wird vorzugsweise in der in 7 dargestellten Einrichtung 708 zum Bestimmen einer Zukunftstestzahl ZTZ aus der überprüften und modifizierten Bitfolge σ' ausgeführt. Weiterhin wird gemäß den obigen Ausführungen der in der Einrichtung 204 zum Testen laufenden Miller-Rabin-Test beispielsweise ansprechend auf das zweite Haltesignal STOP2 oder einen Zustandswechsel des ersten Statussignals PZ1 abgebrochen und gemäß den obigen Ausführungen durch eine neue Testzahl TZ (in diesem Fall durch die Testzahl z + 2j), die die Zukunftstestzahl darstellt) gestartet.
  • In einem an den 25. Schritt 1150 anschließenden 26. Schritt 1152 erfolgt ein Wiederholen der Schritte 20 bis 25 für jedes der übrigen 448 Paare aus dem 19. Schritt 1138. Das Zählen der jeweils abgearbeiteten Paare kann hierbei durch die in 5 dargestellte Einrichtung 512 zum Zählen erfolgen, die über das Zählsignal 514 die Einrichtung 502 zum Auswählen einer Anzahl von Primzahlen pi aus den Primzahlen pj steuert.
  • Immer dann, wenn ein Miller-Rabin-Test im Coprozessor beendet ist, ist gemäß einem 27. Schritt 1154 so zu verfahren, wie im 18. Schritt 1136 beschrieben ist.
  • Nachdem die erste Teilphase nach dem 27. Schritt 1154 beendet ist, ist gemäß einem 28. Schritt 1156 das in den Schritten 19 bis 27 beschriebene Verfahren analog für die Teilphasen 2 bis 7 durchzuführen. In jeder einzelnen dieser Teilphasen wiederholen sich somit die Schritte 19 bis 27, wobei die im Schritt 19 jeweils zu erzeugenden Primzahlen der oben angeführten Liste zu entnehmen sind.
  • Abhängig von den Gegebenheiten kann das erfindungsgemäße Verfahren in Hardware oder in Software implementiert werden. Die Implementation kann auf einem digitalen Speichermedium, insbesondere einer Diskette oder CD mit elektronisch auslesbaren Steuersignalen erfolgen, die so mit einem programmierbaren Computersystem zusammenwirken können, dass das entsprechende Verfahren ausgeführt wird. Allgemein besteht die Erfindung somit auch in einem Computer-Programm-Produkt mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode zur Durchführung des erfindungsgemäßen Verfahrens, wenn das Computer-Programm-Produkt auf einem Rechner abläuft. In anderen Worten ausgedrückt kann die Erfindung somit als ein Computer-Programm mit einem Programmcode zur Durchführung des Verfahrens realisiert werden, wenn das Computer-Programm auf einem Computer abläuft.
  • Abschließend ist anzumerken, dass das beschriebene Verfahren der Primzahlgenerierung ein statistisches Verfahren ist. Der Algorithmus liefert mit hoher Wahrscheinlichkeit einen Output, der mit hoher Wahrscheinlichkeit eine Primzahl ist. Das liegt einerseits daran, dass in der vorliegenden Erfindung vorzugsweise der (probabilistische) Miller-Rabin-Test benutzt wird und es Miller-Rabin-Pseudozufallszahlen gibt. Wenn eine 1024 Bit große natürliche Zahl allerdings den Miller-Rabin-Test für drei verschiedene Zufallsbasen bestanden hat (was bei dem erfindungsgemäßen Verfahren auch gefordert wird), dann ist die Wahrscheinlichkeit dass es sich bei dieser Zahl um keine echte Primzahl handelt kleiner als 2–80. Ein so kleiner Wert ist für die Praxis ohne Bedeutung.
  • Der andere Fall, dass der Algorithmus in der ihm zugestandenen Zeit gar keinen Output produziert ist, ist ebenfalls von untergeordneter Bedeutung. Theoretisch kann dieser Fall jedoch eintreten. Das liegt an der Tatsache, dass es auf der Zahlengeraden beliebig große primzahlfreie Abschnitte gibt.
  • Es stellt sich daher die Frage, wie groß der Abstand zwischen zwei benachbarten Primzahlen höchstens sein kann. Im Jahre 1985 bewiesen Lou und Yao, dass für alle hinreichen großen n ∊ N
    Figure 00520001
    gilt, wobei C eine positive Konstante ist. Zahlentheoretiker vermuten, dass die obere Schranke in (10) durch
    Figure 00520002
    ersetzt werden kann. Dies ist definitiv der Fall, wenn die sogenannte „Riemannsche Vermutung" wahr ist.
  • Eine Auswertung umfangreicher empirischer Daten betreffend den Abstand zwischen benachbarten Primzahlen legt jedoch nahe, dass selbst die Schranke
    Figure 00520003
    viel zu groß ist. Es scheint, dass pn – pn-1 niemals viel größer ist als (log n)2. Der zur Zeit größte bekannte Wert von pn – pn-1 beträgt 778. Er tritt auf bei pn = 42 842 283 926 129. Für diesen Wert pn gilt [(log n)2] = 783.
  • Es gibt eine Vermutung von H. Cramer, die lautet, pn – pn-1 = O((log pn)2 )
  • Nach dieser Vermutung kann der Abstand zweier benachbarter 1024 Bit großer Primzahlen den Wert 500.000 nicht wesentlich überschreiten.
  • Zusammenfassend lässt sich somit feststellen, dass in der vorliegenden Erfindung gleichzeitig eine Testzahl (Aktuell-Testzahl) mit einem ersten Primzahlüberprüfungsalgorithmus überprüft wird und die Testzahl mit einem zweiten Primzahlüberprüfungsalgorithmus auf Primalität getestet wird. Ein Vorteil bei dieser Vorgehensweise besteht einerseits darin, dass schon zu Beginn der Ermittlung, ob eine Testzahl eine Primzahl ist, mit dem Testen unter Verwendung des zweiten Primzahlüberprüfungsalgorithmus begonnen werden kann. Ein weiterer Vorteil besteht weiterhin darin, dass der Siebprozess (d. h. das Überprüfen der Testzahl mit dem ersten Primzahlüberprüfungsalgorithmus) über das im Stand der Technik bekannte Überprüfen bis zu dem vorbestimmten Abbruchkriterium hinaus fortgesetzt werden kann. Auf diese Weise kann sichergestellt werden, dass die Testzahlen (Testkandidaten), die den ersten Primzahlüberprüfungsalgorithmus bestehen, eine höhere Wahrscheinlichkeit auf Primalität haben, und somit auch größere Chancen haben, das Testen auf Primalität durch den zweiten Primzahlüberprüfungsalgorithmus (vorzugsweise einen Miller-Rabin-Test) zu bestehen. Während bei den bisherigen Verfahren der Siebprozess typischerweise bis zu dem vorbestimmten Abbruchkriterium getrieben wird, so dass sichergestellt ist, dass die Kandidatenzahl (Testzahl) teilerfremd zu den ersten (beispielsweise) 100 bis 200 Primzahlen ist, wird im erfindungsgemäßen Ansatz der Siebprozess (d.h. das Überprüfen der Testzahl) so lange fortgesetzt, bis die Testzahl entweder durch den ersten Primzahlüberprüfungsalgorithmus oder den zweiten Primzahlüberprüfungsalgorithmus als NICHT-Primzahl erkannt wird oder die Testzahl durch den zweiten Primzahlüberprüfungsalgorithmus als Primzahl oder als Zahl, die mit hoher Wahrscheinlichkeit eine Primzahl ist, erkannt wird. Durch das Ausführen des Testens der Testzahl auf Primalität mit dem zweiten Primzahlüberprüfungsalgorithmus während dem Überprüfen der Testzahl auf Primalität mit dem ersten Primzahlüberprüfungsalgorithmus ist es daher möglich, sicherzustellen, dass die Kandidatenzahlen (Testzahlen) beispielsweise teilerfremd zu den ersten 1000 bis 10.000 (oder mehr) Primzahlen sind. Hierdurch wird im erfindungsgemäßen Ansatz wesentlich früher eine Primzahl (vorzugsweise mit der gewünschten großen Bitlänge) gefunden.
  • Ferner kann bei dem erfindungsgemäßen Prozess der Primzahlenermittlung die vorhandene Hardware optimal ausgenutzt werden, d. h. sowohl die Kapazitäten eines vorzugsweise einzusetzenden Coprozessors als auch die Kapazitäten eines Hauptprozessors voll genutzt werden können. Der Siebprozess findet hierbei in der CPU (d. h. im Hauptprozessor) statt, während gleichzeitig die vorzugsweise einzusetzenden Miller-Rabin-Tests im kryptographischen (mathematischen) Coprozessor ablaufen. Während der gesamten Dauer der Primzahlsuche, wird somit im Hauptprozessor das Siebverfahren vorangetrieben und im Coprozessor werden die einzusetzenden Miller-Rabin-Tests durchgeführt.
  • Bei dem Siebverfahren werden dabei vorwiegend Operationen mit kleinen Zahlen benutzt. Diese Zahlen sind so klein, dass sie im allgemeinen nur 1 bis 4 Byte für ihre Darstellung beanspruchen. Deshalb ist der Hauptprozessor geeignet, das Siebverfahren durchzuführen. Es gibt nur eine Operation im Siebverfahren, die modulare Reduktionen einer großen Zahl N modu-lo einer kleinen Primzahl p, die die CPU nicht schnell ausführen kann. Diese Operation wird daher vorzugsweise in den Coprozessor verlegt. Alle anderen Operationen des Siebverfahrens werden gemäß dem oben beschriebenen Ausführungsbeispiel in der CPU ausgeführt. Die Zeit zum Ermitteln einer großen Primzahl, wie sie beispielsweise für eine RSA-Schlüssel- Generierung benötigt wird, kann daher durch den erfindungsgemäßen Ansatz schätzungsweise um ca. 50% verkürzt werden.
  • Obwohl oben ein bevorzugtes Ausführungsbeispiel der vorliegenden Erfindung näher erläutert wurde, ist offensichtlich, dass die vorliegende Erfindung nicht auf dieses Ausführungsbeispiel beschränkt ist. Insbesondere findet die vorliegende Erfindung auch Anwendung auf eine weitere mögliche Aufteilung der Schritte zwischen dem Coprozessor und dem Hauptprozessor.
  • 100
    Vorrichtung zur Erzeugung einer Primzahl
    102
    Einrichtung zum Bestimmen einer Ausgangszahl AZ
    104
    Einrichtung zum Ermitteln, ob eine Testzahl TZ eine
    Primzahl ist oder mit einer vorbestimmten
    Wahrscheinlichkeit gesagt werden kann, dass die Testzahl
    TZ eine Primzahl ist
    202
    Einrichtung zum Überprüfen einer Aktuell-Testzahl oder
    zum Bereitstellen einer Zukunftstestzahl
    204
    Einrichtung zum Testen
    206
    Einrichtung zum Erkennen
    302
    Einrichtung zum Überprüfen einer Aktuell-Testzahl
    304
    Einrichtung zum Bereitstellen einer Zukunftstestzahl
    402
    Einrichtung zum Bestimmen einer Aktuell-Testzahl
    404
    Einrichtung zum Bereitstellen der Primzahlen pj
    406
    Einrichtung zum Prüfen der Aktuell-Testzahl auf
    Teilerfreiheit in Bezug auf die Primzahlen pj
    502
    Einrichtung zum Auswählen einer Anzahl von Primzahlen pi
    aus den Primzahlen pj
    504
    Einrichtung zum Bestimmen eines Produktes q aus den
    ausgewählten Primzahlen pi
    506
    Einrichtung zum Reduzieren der Testzahl unter Verwendung
    des Produktes q, um eine Variable β zu erhalten
    508
    Einrichtung zum Reduzieren von β unter Verwendung der
    Primzahlen pi, um eine Variable αi zum erhalten
    510
    Einrichtung zum Prüfen, ob pi ein Teiler der Testzahl
    ist unter Verwendung von αi
    512
    Einrichtung zum Zählen
    514
    Zählsignal
    602
    Einrichtung zum Bereitstellen einer Ausgangszahlenfolge
    604
    Einrichtung zum Auswählen einer Zukunftstestzahl aus der
    Ausgangszahlenfolge
    702
    Einrichtung zum Bestimmen einer charakteristischen
    Bitfolge σ
    704
    Einrichtung zum Berechnen einer Variablen ki
    706
    Einrichtung zum Überprüfen und Modifizieren der
    charakteristischen Bitfolge σ
    708
    Einrichtung zum Bestimmen einer Zukunftstestzahl aus der
    überprüften und modifizierten Bitfolge σ'
    1102
    erster Schritt des erfindungsgemäßen Algorithmus
    1104
    zweiter Schritt des erfindungsgemäßen Algorithmus
    1106
    dritten Schritt des erfindungsgemäßen Algorithmus
    1108
    vierter Schritt des erfindungsgemäßen Algorithmus
    1110
    fünfter Schritt des erfindungsgemäßen Algorithmus
    1112
    sechster Schritt des erfindungsgemäßen Algorithmus
    1114
    siebter Schritt des erfindungsgemäßen Algorithmus
    1116
    achter Schritt des erfindungsgemäßen Algorithmus
    1118
    neunter Schritt des erfindungsgemäßen Algorithmus
    1120
    zehnter Schritt des erfindungsgemäßen Algorithmus
    1122
    11. Schritt des erfindungsgemäßen Algorithmus
    1124
    12. Schritt des erfindungsgemäßen Algorithmus
    1126
    13. Schritt des erfindungsgemäßen Algorithmus
    1128
    14. Schritt des erfindungsgemäßen Algorithmus
    1130
    15. Schritt des erfindungsgemäßen Algorithmus
    1132
    16. Schritt des erfindungsgemäßen Algorithmus
    1134
    17. Schritt des erfindungsgemäßen Algorithmus
    1136
    18. Schritt des erfindungsgemäßen Algorithmus
    1138
    19. Schritt des erfindungsgemäßen Algorithmus
    1140
    20. Schritt des erfindungsgemäßen Algorithmus
    1142
    21. Schritt des erfindungsgemäßen Algorithmus
    1144
    22. Schritt des erfindungsgemäßen Algorithmus
    1146
    23. Schritt des erfindungsgemäßen Algorithmus
    1148
    24. Schritt des erfindungsgemäßen Algorithmus
    1150
    25. Schritt des erfindungsgemäßen Algorithmus
    1152
    26. Schritt des erfindungsgemäßen Algorithmus
    1154
    27. Schritt des erfindungsgemäßen Algorithmus
    1156
    28. Schritt des erfindungsgemäßen Algorithmus

Claims (21)

  1. Vorrichtung (406) zum Bestimmen einer Teilerfreiheit einer Testzahl (TZ) in bezug auf eine Mehrzahl von Primzahlen mit folgenden Merkmalen: einer Einrichtung (502, 504) zum Bereitstellen eines Produkts (q) der Mehrzahl von Primzahlen; einer Einrichtung (506) zum modularen Reduzieren der Testzahl (TZ) mit dem Produkt (q) als Modul, um eine Hilfszahl (β) zu erhalten, die eine Restklasse einer Division mit einem Modul als Divisor darstellt; und einer Einrichtung (508, 510) zum Überprüfen der Hilfszahl (β) auf Teilerfreiheit in bezug auf die Mehrzahl von Primzahlen.
  2. Vorrichtung gemäß Anspruch 1, bei der die Vorrichtung einen Prozessor mit einer vorbestimmten Prozessorrechenwerkslänge umfasst und bei der das Produkt eine Produktlänge aufweist, die kleiner oder gleich der vorbestimmten Prozessorrechenwerkslänge des Prozessors ist.
  3. Vorrichtung gemäß Anspruch 2, bei der die Einrichtung (204, 206) zum Bereitstellen eines Produkts (q) in dem Prozessor ausgebildet ist.
  4. Vorrichtung gemäß Anspruch 2 oder 3, bei der die Einrichtung (502, 504) zum Bereitstellen eines Produkts (q) ausgebildet ist, um ein erstes Produkt aus einer ersten Anzahl von Primzahlen und ein zweites Produkt aus einer zweiten Anzahl von Primzahlen bereitzustellen, wobei sich die erste Anzahl von der zweiten Anzahl unterscheidet und die Produktlänge des ersten Produkts sowie die Produktlänge des zweiten Produkts kleiner oder gleich der vorbestimmten Prozessorrechenwerkslänge ist.
  5. Vorrichtung gemäß einem der Ansprüche 2 bis 4, bei der die Vorrichtung ferner einen Coprozessor mit einer vorbestimmten Coprozessorrechenwerkslänge umfasst, die größer ist als die Prozessorrechenwerkslänge, und bei der die Einrichtung (506) zum modularen Reduzieren in dem Coprozessor ausgebildet ist.
  6. Vorrichtung gemäß Anspruch 5, bei der die Testzahl eine Testzahllänge aufweist, wobei die Testzahllänge mindestens der doppelten Produktlänge entspricht.
  7. Vorrichtung gemäß Anspruch 5 oder 6, bei der der Coprozessor ferner eine Einrichtung (204) zum Testen der Testzahl auf Primalität und eine Steuereinrichtung umfasst, wobei die Steuereinrichtung ausgebildet ist, um einen Betrieb der Einrichtung (204) zum Testen der Testzahl auf Primalität zu unterbrechen und einen Betrieb der Einrichtung (506) zum modularen Reduzieren zu beginnen.
  8. Vorrichtung gemäß einem der Ansprüche 2 bis 7, bei der die Einrichtung (508, 510) zum Überprüfen der Hilfszahl auf Teilerfreiheit in bezug auf die Mehrzahl von Primzahlen ausgebildet ist, die Testzahl als nicht-teilerfrei in bezug auf die Mehrzahl der Primzahlen zu erkennen, wenn die Hilfszahl (β) einen vorbestimmten wert aufweist.
  9. Vorrichtung gemäß einem der Ansprüche 2 bis 8, bei der die Einrichtung (508, 510) zum Überprüfen eine Einrichtung (508) zum Dividieren der Hilfszahl (β) durch eine der Mehrzahl der Primzahlen umfasst, um als Ergebnis des Dividierens eine Prüfzahl (α) bereitzustellen, wobei die Einrichtung (508) zum Dividieren der Hilfszahl (β) in dem Prozessor ausgebildet ist.
  10. Vorrichtung gemäß Anspruch 9, bei der die Einrichtung (508, 510) zum Überprüfen ausgebildet ist, um die Testzahl (TZ) als nicht-teilerfremd in bezug auf die Mehrzahl der Primzahlen zu erkennen, wenn die Prüfzahl (α) einen vorbestimmten Wert aufweist.
  11. Vorrichtung gemäß einem der Ansprüche 9 oder 10, bei der die Einrichtung (508) zum Dividieren der Hilfszahl (β) ferner ausgebildet ist, um zu jeder der Mehrzahl der Primzahlen eine entsprechende Prüfzahl (α) bereitzustellen, wobei die Einrichtung (508, 510) zum Überprüfen ausgebildet ist, die Testzahl (TZ) als teilerfrei in bezug auf die Mehrzahl der Primzahlen zu bestimmen, wenn jede der Prüfzahlen (α) ein vorbestimmtes Primzahlkriterium erfüllt.
  12. Vorrichtung gemäß einem der Ansprüche 1 bis 11, bei der die Einrichtung (502, 504) zum Bereitstellen eines Produkts (q) ausgebildet ist, um zumindest ein erstes und ein zweites Produkt aus der Mehrzahl von Primzahlen bereitzustellen, wobei das erste und das zweite Produkt aus jeweils verschiedenen Primzahlen gebildet ist, bei der die Einrichtung (506) zum modularen Reduzieren der Testzahl (TZ) ausgebildet ist, um eine erste Hilfszahl und eine zweite Hilfszahl zu ermitteln, wobei die erste Hilfszahl eine Restklasse einer modularen Reduktion der Testzahl (TZ) mit dem ersten Produkt ist und die zweite Hilfszahl eine Restklasse einer modularen Reduktion der Testzahl (TZ) mit dem zweiten Produkt ist, und bei der die Einrichtung (508, 510) zum Überprüfen ausgebildet ist, um die erste Hilfszahl und die zweite Hilfszahl auf Teilerfreiheit in bezug auf die Mehrzahl von Primzahlen zu überprüfen.
  13. Vorrichtung gemäß einem der Ansprüche 5 bis 12, bei der der Coprozessor ferner eine Einrichtung (204) zum Testen der Testzahl auf Primalität und eine Steuereinrichtung umfasst, wobei die Einrichtung (204) zum Testen der Testzahl (TZ) einen ersten Betriebszustand mit einer hohen Nutzung einer durch den Coprozessor bereitgestellten Rechenkapazität und einen zweiten Betriebszustand mit einer niedrigen Nutzung der durch den Coprozessor bereitgestellten Rechenkapazität um fasst, wobei die Steuereinrichtung ausgebildet ist, einen Betrieb der Einrichtung (506) zum modularen Reduzieren zu ermöglichen, wenn die Einrichtung (204) zum Testen im zweiten Betriebszustand ist.
  14. Vorrichtung gemäß Anspruch 13, bei der die Steuereinrichtung ausgebildet ist, um den Betrieb der Einrichtung (506) zum modularen Reduzieren zu unterbrechen, wenn die Einrichtung (204) zum Testen im ersten Betriebszustand ist.
  15. Vorrichtung gemäß einem der Ansprüche 12 bis 14, bei der die Einrichtung (506) zum modularen Reduzieren der Testzahl (TZ) oder die Einrichtung (508, 510) zum Überprüfen ausgebildet ist, um zumindest eine Hilfszahl (β) zu speichern.
  16. Vorrichtung gemäß einem der Ansprüche 12 bis 15, bei der die Einrichtung (502, 504) zum Bereitstellen oder die Einrichtung (506) zum modularen Reduzieren ausgebildet ist, um zumindest ein Produkt (q) zu speichern.
  17. Vorrichtung gemäß einem der Ansprüche 1 bis 16, bei der die Testzahl durch mindestens 256 Bit binär darstellbar ist.
  18. Vorrichtung gemäß einem der Ansprüche 1 bis 17, bei der die Testzahl ein Parameter einer kryptografischen Berechnung ist.
  19. Vorrichtung zum Bereitstellen eines Schlüssels eines Verschlüsselungsalgorithmus, die folgendes Merkmal aufweist: eine Vorrichtung gemäß einem der Ansprüche 1 bis 18.
  20. Verfahren zum Bestimmen einer Teilerfreiheit einer Testzahl in bezug auf eine Mehrzahl von Primzahlen mit folgenden Schritten: Bereitstellen eines Produkts (q) aus der Mehrzahl von Primzahlen; modulares Reduzieren der Testzahl (TZ) mit dem Produkt als Modul, um eine Hilfszahl (β) zu erhalten, die eine Restklasse einer Division mit einem Modul als Divisor darstellt; und Überprüfen der Hilfszahl (β) auf Teilerfreiheit in bezug auf die Mehrzahl von Primzahlen.
  21. Computerprogramm mit Programmcode zur Durchführung des Verfahrens nach Anspruch 20, wenn das Programm auf einem Computer abläuft.
DE2003157749 2003-12-10 2003-12-10 Vorrichtung und Verfahren zum Bestimmen einer Teilerfreiheit einer Testzahl in Bezug auf eine Mehrzahl von Primzahlen Expired - Fee Related DE10357749B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE2003157749 DE10357749B4 (de) 2003-12-10 2003-12-10 Vorrichtung und Verfahren zum Bestimmen einer Teilerfreiheit einer Testzahl in Bezug auf eine Mehrzahl von Primzahlen

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE2003157749 DE10357749B4 (de) 2003-12-10 2003-12-10 Vorrichtung und Verfahren zum Bestimmen einer Teilerfreiheit einer Testzahl in Bezug auf eine Mehrzahl von Primzahlen

Publications (2)

Publication Number Publication Date
DE10357749A1 true DE10357749A1 (de) 2005-07-14
DE10357749B4 DE10357749B4 (de) 2007-12-20

Family

ID=34672553

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2003157749 Expired - Fee Related DE10357749B4 (de) 2003-12-10 2003-12-10 Vorrichtung und Verfahren zum Bestimmen einer Teilerfreiheit einer Testzahl in Bezug auf eine Mehrzahl von Primzahlen

Country Status (1)

Country Link
DE (1) DE10357749B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2104031A3 (de) * 2008-03-21 2012-02-08 Renesas Electronics Corporation Vorrichtung und Verfahren zur Primzahlerzeugung

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020095452A1 (en) * 2001-01-17 2002-07-18 Perkins Gregory Michael Efficient greatest common divisor algorithm using multiprecision arithmetic
US20020186837A1 (en) * 2001-03-26 2002-12-12 Hopkins W. Dale Multiple prime number generation using a parallel prime number search algorithm

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020095452A1 (en) * 2001-01-17 2002-07-18 Perkins Gregory Michael Efficient greatest common divisor algorithm using multiprecision arithmetic
US20020186837A1 (en) * 2001-03-26 2002-12-12 Hopkins W. Dale Multiple prime number generation using a parallel prime number search algorithm

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2104031A3 (de) * 2008-03-21 2012-02-08 Renesas Electronics Corporation Vorrichtung und Verfahren zur Primzahlerzeugung
US8374345B2 (en) 2008-03-21 2013-02-12 Renesas Electronics Corporation Data processing system and data processing method
CN101540672B (zh) * 2008-03-21 2013-06-26 瑞萨电子株式会社 数据处理系统以及数据处理方法

Also Published As

Publication number Publication date
DE10357749B4 (de) 2007-12-20

Similar Documents

Publication Publication Date Title
EP1262037B1 (de) Tragbarer datenträger mit zugriffsschutz durch schlüsselteilung
EP2771782B1 (de) Effiziente primzahlprüfung
EP1290545B1 (de) Kryptographisches verfahren und kryptographische vorrichtung
EP2641241B1 (de) Verfahren zur langzahldivision oder modulare reduktion
DE10219158A1 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE10357749B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Teilerfreiheit einer Testzahl in Bezug auf eine Mehrzahl von Primzahlen
EP1428112A2 (de) Verfahren und vorrichtung zum berechnen eines ergebnisses einer exponentiation
DE10357751B4 (de) Vorrichtung und Verfahren zum Bereitstellen einer Testzahl
DE10357748B3 (de) Vorrichtung und Verfahren zum Ermitteln, ob eine Testzahl eine Primzahl ist
EP1564649A2 (de) Erzeugung von Primzahlen mittels probabilistischer Tests
WO2013060466A2 (de) Bestimmen eines divisionsrests und ermitteln von primzahlkandidaten für eine kryptographische anwendung
EP1504337B1 (de) Berechnung des modularen inversen eines wertes
WO2002019065A2 (de) Verfahren und vorrichtung zum durchführen einer modularen exponentiation in einem kryptographischen prozessor
DE10156708B4 (de) Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve
DE10222212A1 (de) Ausspähungsgeschützte modulare Inversion
DE102005030286A1 (de) Verwendung eines Koprozessors zur modularen Inversion
DE102004044453A1 (de) Probabilistischer Primzahltest und probabilistische Primzahlermittlung
DE60119254T2 (de) Recheneinheit zum Bestimmen der Inverse einer Ganzzahl Modulo einer grossen Zahl
DE102004022647B4 (de) Verfahren und Vorrichtung zur Ermittlung der Anzahl von abgelaufenen Taktzyklen eines binären Zufallsgenerators
EP1536320B1 (de) Montgomery-Multiplikation mit vergrösserter Operandenlänge
DE3924344C2 (de)
EP3504616B1 (de) Modul und verfahren zur abgesicherten berechnung von mathematischen operationen
DE102008050800A1 (de) Vorrichtung und Verfahren zum Bestimmen einer Inversen eines Werts, der sich auf einen Modul bezieht
DE102004052196B4 (de) Ausspähungsgeschütztes Ausführen von Operationen unter Verwendung einer maskenunterstützenden Recheneinheit
DE10161203A1 (de) Auffinden großer Primzahlen, insbesondere für kryptographische Verfahren

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee