DE69826963T2 - Gerät für die modulare Inversion zur Sicherung von Information - Google Patents

Gerät für die modulare Inversion zur Sicherung von Information Download PDF

Info

Publication number
DE69826963T2
DE69826963T2 DE69826963T DE69826963T DE69826963T2 DE 69826963 T2 DE69826963 T2 DE 69826963T2 DE 69826963 T DE69826963 T DE 69826963T DE 69826963 T DE69826963 T DE 69826963T DE 69826963 T2 DE69826963 T2 DE 69826963T2
Authority
DE
Germany
Prior art keywords
calculation
mod
value
ggt
calculate
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.)
Expired - Lifetime
Application number
DE69826963T
Other languages
English (en)
Other versions
DE69826963D1 (de
Inventor
Tetsutaro Kobayashi
Hikaru Morita
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of DE69826963D1 publication Critical patent/DE69826963D1/de
Application granted granted Critical
Publication of DE69826963T2 publication Critical patent/DE69826963T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • G06F7/728Methods 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 using Montgomery reduction

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)
  • Alarm Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung betrifft eine Vorrichtung zur Modulo-Kehrwertberechnung, die zur Informationssicherheit beispielsweise in digitalen Verschlüsselungssystemen und digitalen Authentisierungssystemen, die Verschlüsselungsschlüsselerzeugung, digitale Signatur- und Blindsignaturschemata, ein elliptisches Verschlüsselungssystem usw. verwenden, ausgeführt wird.
  • Auf dem Gebiet der Informationssicherheit ist es wohlbekannt, dass die Berechnung von Modulo-Kehrwerten über einem finiten Feld GF(p) (wobei p eine Primzahl ist) von Primzahlen oder einem Restklassenring Z/NZ (Z ist eine Gruppe von ganzen Zahlen und N ist eine positive ganze Zahl) eine große Vielfalt von Formen annimmt, von denen einige untenstehend beschrieben werden.
    • (a) Erzeugung der Summe (x3, y3) von zwei Punkten (x2, y2) und (x2, y2) auf einer elliptischen Kurve E/GF(p): λ = (y2 - y1)/(x2 - x1)mod p (a-1) x3 = λ2 - x1 - x2 mod p (a-2) y3 = λ(x1 - x3) - y1 mod p (a-3)
    • (b) Teil der Unterschrifterzeugung eines digitalen ESIGN-Unterschriftensystems: y = w/(kxk-1)mod p (b-1)wobei x eine ganze Zahl mit 1 ≤ x ≤ pq-1 ist, w eine ganze Zahl in dem Bereich von 0 ≤ w ≤ p-1 ist, k ∈ Z, und p und q Primzahlen sind.
    • (c) Blindunterschrifterzeugung eines digitalen RSA-Unterschriftensystems: s' = (remd)mod N (c-1) s = s'/r mod N (c-2)wobei r und m ganze Zahlen mit 0 ≤ r und m ≤ N-1 sind, und e und d jeweils ganze Zahlen mit 1 ≤ e und d ≤ ϕ(N)-1 sind.
  • Die obigen Beispiele verwenden Modulo-Multiplikationen und Modulo-Kehrwerte. Das Montgomery-Verfahren wurde vorgeschlagen, um Modulo-Reste effizient zu berechnen. Unten sind Definitionen einiger Typen von Modulo-Kehrwerten aufgelistet, die an das Montgomer-Verfahren angepasst sind.
    Normaler Kehrwert i1(X) = X-1 mod N
    Kaliski-Kehrwert i2(X) = X-1 B mod N
    Montgomery-Kehrwert i3(X) = X-1 B2 mod N
    wobei B = 2n, n die Zahl der Bits von N, N < B < 2N und X ∈ Z/NZ ist. Der hierin erwähnte Modulo-Kehrwert umfasst alle Typen von Modulo-Kehrwerten einschließlich der obigen. Ersetzt man das N durch eine Primzahl p, wird der oben genannte Kehrwert zu einem Kehrwert über GF(p). Die folgende Beschreibung wird nur für Z/NZ gegeben.
  • Herkömmlicherweise wird für Eingaben X und N, wobei X gleich oder größer als 0 und kleiner als N ist, ein Modulo-Kehrwert X auf Z/NZ z.B. berechnet durch Verwenden eines erweiterten binären GGT-Verfahrens (erweitertes binäres Größter-Gemeinsamer-Teiler-Verfahren, ein Algorithmus zum Erzeugen von X-12k mod N und k, wobei das erstere durch bggT(X, N) ausgedrückt wird). Das folgende Beispiel wird in Verbindung mit der Berechnung eines Montgomery-Kehrwerts beschrieben.
  • Verfahren 1:
    • Schritt 1: berechne S und k durch S = bggT(X, N) = X-12k mod N (1)wobei n ≤ k ≤ 2n.
    • Schritt 2: berechne einen Modulo-Kehrwert R durch R = S22n-k mod N = N-122n mod N (2)
  • Schritt 1 ist ein Prozess des Ausführens des erweiterten binären GGT-Algorithmus für die Eingaben X und N. Weil 2n-k > 0 ist, dient der Schritt 2 zur Berechnung der Multiplikation mit einer Zweierpotenz.
  • Wenn d > 0,
    • (a) Zweierpotenz-Multiplikation: X2d mod N
    • (b) Zweierpotenz-Division: X2-d mod N
    kann die Berechnung (b) schneller als (a) durchgeführt werden.
  • Die Berechnung (b) kann auch verwendet werden, um einen Montgomery-Kehrwert mit dem unten gezeigten Verfahren 2 zu erhalten.
  • Verfahren 2:
    • Schritt 1: Y = X2-n mod N (3)
    • Schritt 2: S = bggT(Y, N) (= X-12n+k mod N) (4)
    • Schritt 3: R = S2-(k+n) mod N (= X-12n mod N) (5)
  • Weil k-n ≥ 0 ist, führt der Schritt 3 eine Zweierpotenz-Division aus.
  • Wenn die Multiplikation (a) und die Division (b) die gleiche Zeit benötigen, dann ermöglicht das Verfahren 1, welches die kleinere Zahl von Schritten mit sich bringt, dass die Berechnung in einer kürzeren Zeit gemacht wird als in dem Fall, bei dem man das Verfahren 2 verwendet. Weil jedoch in der Praxis die Division (b) in einer kürzeren Zeit durchgeführt werden kann, wird angenommen, dass der Modulo-Kehrwert nach dem Verfahren 2 manchmal in einer kürzeren Zeit verarbeitet werden kann.
  • Wenn man annimmt, dass N ein zu großer Wert ist, um von einem gewöhnlichen Computer oder Prozessor gleichzeitig berechnet oder verarbeitet zu werden, dann wachsen die Zeiten für die Berechnungen (a) und (b) an, wenn d größer wird.
  • Z.B. ist in dem Fall, wenn ein Verfahren verwendet wird, in welchem elementare Operationen
    • (a)' Multiplikation mit 2: X2 mod N
    • (b)' Division durch 2: X2-1 mod N
    vorkommen und die Berechnung (a)' d mal als die Berechnung (a) ausgeführt wird, die Zeit für die Berechnung (a) d mal länger als die Zeit für die Berechnung (a)'. In ähnlicher Weise ist die Zeit für die Berechnung (b) d mal länger als diejenige für die Berechnung (b)'. Die den Berechnungen (a)' und (b)' entsprechenden Operationen werden nachfolgend als elementare Operationen bezeichnet.
  • Das Verfahren 2 führt die Zweierpotenz-Division aus, anstatt die Zweierpotenz-Multiplikation in dem Verfahren 1 auszuführen, sie muss aber die elementare Operation aber eine größere Anzahl von Malen ausführen, als es das Verfahren 1 tut.
  • Wenn z.B. k = 1.41 n ist (es wurde experimentell gezeigt, dass zwischen k und n im Durchschnitt diese Beziehung besteht), führt das Verfahren 1 den bggT-Algorithmus und außerdem 0.59 mal die elementare Operation im Schritt 2 aus. Andererseits führt das Verfahren 2 die elementare Operation n mal im Schritt 1 und 0.41 n mal im Schritt 3 zusätzlich zum bggT Algorithmus aus, und daher führt es die elementare Berechnung insgesamt 1.41 n mal aus. Dementsprechend gibt es keine Möglichkeit, dass das Verfahren 2 schneller wird als das Verfahren 1, solange nicht die Zweierpotenz-Division beträchtlich schneller ist als die Zweierpotenz-Multiplikation (mehr als 2.3 mal schneller in dem obigen Beispiel). Umgekehrt sind keine Geschwindigkeitserhöhungen möglich, wenn nur die Zweierpotenz-Division stattfindet, selbst wenn Mittel zum Erhöhen der Geschwindigkeit der Zweierpotenz-Multiplikation, obwohl zur Zeit nicht machbar, verfügbar sein sollten.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist eine Aufgabe der vorliegenden Erfindung, eine Vorrichtung zu liefern, die eingerichtet ist, einen Modulo-Kehrwert, der zur Informationssicherheit notwendig ist, zu berechnen, welche die Reduktion der für die Berechnung benötigten Zeit erlaubt.
  • Eine weitere Aufgabe der vorliegenden Erfindung ist es, eine solche Vorrichtung zu liefern, welche es ermöglicht, dass die Zweierpotenz-Multiplikation und die Zweierpotenz-Division effektiv und daher in einer kurzen Zeit ausgeführt werden.
  • Eine weitere Aufgabe der vorliegenden Erfindung ist es, eine solche Vorrichtung zu liefern, die es erlaubt, dass ein erweiterter binärer GGT effektiv und daher in einer kurzen Zeit berechnet wird.
  • Diese Aufgaben werden von einer Vorrichtung, wie sie in Anspruch 1 beansprucht ist, und deren bevorzugten Ausgestaltungen, wie sie in den abhängigen Ansprüchen beansprucht sind, gelöst.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Flussdiagramm, das eine Montgomery-Modulo-Kehrwertberechnung auf Z/NZ gemäß der vorliegenden Erfindung zeigt;
  • 2 ist ein Blockschaltbild, das eine Ausgestaltung einer Vorrichtung für die Montgomery-Kehrwertberechnung auf Z/NZ gemäß der vorliegenden Erfindung zeigt;
  • 3 ist ein Blockschaltbild, das eine Ausgestaltung einer Vorrichtung zum Berechnen der Zweierpotenz-Division auf Z/NZ bei der Modulo-Kehrwertberechnung zeigt;
  • 4A ist ein Blockschaltbild, das ein spezifisches betriebsfähiges Beispiel eines Kehrwertberechnungsteils 25 in der 3 zeigt;
  • 4B ist ein Flussdiagramm, das ein Beispiel eines Teils der Steuerverarbeitung durch ein Steuerteil 20 in der 3 zeigt;
  • 5 ist ein Flussdiagramm, das ein Beispiel der Verarbeitung der Zweierpotenz-Division auf Z/NZ zeigt;
  • 6 ist ein Blockdiagramm, das den funktionsfähigen Aufbau einer Vorrichtung zur Zweierpotenz-Multiplikation auf Z/NZ darstellt;
  • 7 ist ein Flussdiagramm, das ein Beispiel der Verarbeitung der Zweierpotenz-Multiplikation auf Z/NZ zeigt;
  • 8 ist ein Blockschaltbild, das ein weiteres Beispiel der Dividiervorrichtung darstellt;
  • 9 ist ein Blockschaltbild, das ein weiteres Beispiel der Multiplikationsvorrichtung darstellt;
  • 10 ist ein Flussdiagramm, das die Berechnungsverarbeitung eines konventionellen binären GGT-Algorithmus zeigt;
  • 11 ist ein Blockschaltbild, das eine GGT-Berechnungsvorrichtung gemäß einer dritten Ausgestaltung der vorliegenden Erfindung zeigt;
  • 12 ist ein Flussdiagramm, das den Fluss des Betriebs der in der 11 dargestellten Vorrichtung zeigt;
  • 13 ist ein Blockschaltbild, das ein GGT-Berechnungsinitialisierungsteil 110 in der 11 darstellt;
  • 14 ist ein Flussdiagramm, das den Fluss des Betriebs des Initialisierungsteils 110 zeigt, das in der 13 dargestellt ist;
  • 15 ist ein Blockschaltbild, das ein GGT-Berechnungssimulationsteil 120 in der 11 darstellt;
  • 16 ist ein Flussdiagramm, das den Fluss des Betriebs des Berechnungssimulationsteils 120 zeigt, das in der 15 dargestellt ist;
  • 17 ist ein Blockschaltbild, das ein Berechnungsteil 130 für mehrfache Genauigkeit in der 11 darstellt;
  • 18 ist ein Blockschaltbild, das ein Endverarbeitungsteil 140 in der 11 darstellt;
  • 19 ist ein Flussdiagramm, das den Fluss des Betriebs des Endverarbeitungsteils 140 zeigt, das in der 18 dargestellt ist;
  • 20 ist ein Blockschaltbild, das eine erweiterte binäre GGT-Berechnungsvorrichtung darstellt, die eine modifizierte Form der dritten Ausgestaltung ist;
  • 21 ist ein Flussdiagramm, das den Fluss des Betriebs der erweiterten binären GGT-Berechnungsvorrichtung zeigt, die in 20 dargestellt ist;
  • 22 ist ein Blockschaltbild, das ein Berechnungsteil 230 für mehrfache Genauigkeit in der 20 darstellt;
  • 23 ist ein Flussdiagramm, das den Fluss des Betriebs des Berechnungsteils 230 für mehrfache Genauigkeit in der 22 zeigt;
  • 24 ist ein Flussdiagramm, das einen Teil des Flusses des Betriebs des Endverarbeitungsteils 240 in der 20 zeigt;
  • 25 ist ein Blockschaltbild, das eine Normal-Kehrwertberechnungsvorrichtung darstellt, welche den erweiterten binären GGT einsetzt;
  • 26 ist ein Blockschaltdiagramm, das eine Kaliski-Kehrwertberechnungsvorrichtung darstellt, welche den erweiterten binären GGT einsetzt;
  • 27 ist ein Blockschaltbild, das eine Montgomery-Kehrwertberechnungsvorrichtung darstellt, welche den erweiterten binären GGT einsetzt;
  • 28 ist ein Blockschaltbild, das eine Kehrwerfberechnungsvorrichtung darstellt, welche den erweiterten binären GGT auf die erste Ausgestaltung der Erfindung anwendet; und
  • 29 ist ein Blockschaltbild, das beispielhaft ein eigentliches Programm zum Ausführen der Modulo-Kehrwertberechnung gemäß der vorliegenden Erfindung darstellt, das auf einem Aufzeichnungsmedium gespeichert ist.
  • GENAUE BESCHREIBUNG DER BEVORZUGTEN AUSGESTALTUNGEN
  • Als erstes wird eine Beschreibung des Prinzips der vorliegenden Erfindung gegeben.
  • Von den herkömmlichen Verfahren zur Montgomery-Kehrwertberechnung bringt das zuvor erwähnte Verfahren 1 eine Zweierpotenz-Multiplikation mit sich, bei der die Zahl der auszuführenden Wiederholungen der elementaren Operation klein ist, das aber zeitaufwendig ist, wohingegen das Verfahren 2 nur eine Zweierpotenz-Division ausführen muss, die elementare Operation aber mit größerer Häufigkeit ausführen muss.
  • Im übrigen ist es in der Fachwelt bekannt, dass die Anzahl der Wiederholungen k der Schleife im bggT-Algorithmus n ≤ k ≤ 2n ist; Experimente, die konkrete numerische Werte verwenden, haben gezeigt, dass wenn die Größe von jeder der Eingaben X, N irgendeine von 256, 512 und 1024 Bits ist, die Anzahl der Wiederholungen k der Schleife in fast allen Fällen. in den folgenden Bereich fällt: 1,41n - (0,05n + 20) ≤ k ≤ 1,41n + (0,05n + 20) (6)
  • Durch Verwendung dieser Erkenntnis kann der Montgomery-Kehrwert durch das folgende Verfahren 3 berechnet werden, in welchem Vorteile von sowohl dem Verfahren 1 als auch dem Verfahren 2 kombiniert sind.
  • Diese Erfindung
    • Schritt 1: Y = X2-1 mod N (7)
    • Schritt 2: S = bggT(Y, N) = Y-12 mod N = X-12t+k mod N (8)
    • Schritt 3: R = S2-(k+t-2n) mod N = X-122n mod N (9)
  • Um die Überlegenheit dieser Erfindung über die herkömmlichen Verfahren 1 und 2 zu demonstrieren, sei angenommen, dass der Wert t ungefähr gleich 64n + 20 ist, in der Praxis jedoch ist der Wert t nicht speziell darauf begrenzt.
  • Der Schritt 3 des Verfahrens 2 führt immer eine Division durch, jedoch kann der Schritt 3 dieser Erfindung Division oder Multiplikation- gemäß dem vorbestimmten Wert t und dem im Schritt 2 berechneten Wert k ausführen.
  • Es wurde experimentell überprüft, dass als Ergebnis der Gleichung (6) der Wert k bei dieser Erfindung mit einer sehr hohen Wahrscheinlichkeit in dem Bereich zwischen 1.36n - 20 ≤ 1.46n + 20 (10)ist, und dass die Gleichung (6) erfüllt ist. Dementsprechend ergeben in den Fällen n = 256, 512 und 1024 der maximale Wert k, 1,46n + 20, und der Wert t, 0,64n + 20: 0 < k' wobei k' = k + t – 2n ≤ 0,1n + 40 (11)
  • Das bedeutet, dass der Schritt 3 dieser Erfindung nur die Zweierpotenz-Division ausführen muss. Bei diesem Beispiel hat die Erfindung eine höhere rechentechnische Effektivität als das Verfahren 2.
  • Das Verfahren 2 führt eine Division durch 2n im Schritt 1 und eine Division durch 2k-n im Schritt 3 aus. Das Verfahren der Erfindung führt eine Division durch 2t im Schritt 1 und eine Division durch 2-k = 2-(k+t-2n) im Schritt S3 aus.
  • Das bedeutet, dass die Schritte 1 und 3 des Verfahrens 2 eine Berechnung ausführen, die einer Verschiebeoperation nach rechts um insgesamt k Bits äquivalent ist (im Durchschnitt 1.41 n Bits wie zuvor erwähnt). Andererseits muss diese Erfindung nur eine Berechnung ausführen, die zu einer Verschiebeoperation nach rechts um k+2t-2n Bits (im Durchschnitt 0.69n+40 Bits mit k = 1.41n und t = 0.64n + 20) äquivalent ist. Setzt man z.B, n = 256, ist diese Erfindung um ungefähr 45% schneller als das Verfahren 2 (außer dem bggT-Algorithmus). Weil im obigen Beispiel t = 0.64n + 20 ist, gilt k' ≳ 0, und im Schritt 3 wird nur eine Division ausgeführt, aber wenn t < 0.64n + 20 ist, kann k' auch einen negativen Wert annehmen, in welchem Fall Zweierpotenz-Multiplikation ausgeführt wird. Auch in diesem Fall kann der Wert t derart gewählt sein, dass die Anzahl der Wiederholungen der elementaren Operation, die ausgeführt werden sollen, (der Betrag von k + 2t - 2n) klein ist; daher kann die Zweierpotenz-Multiplikation auch in einer kürzeren Zeit ausgeführt werden als in den Fällen der Verfahren 1 und 2.
  • D.h., dass die Modulo-Kehrwertberechnung gemäß der vorliegenden Erfindung auf der Erkenntnis basiert, dass die Anzahl der Wiederholungen der elementaren Zweierpotenz-Operation durch zusätzliches Einführen eines neuen Parameters t als der Potenz von 2 und Wählen eines optimalen Wertes für t reduziert werden kann.
  • ERSTE AUSGESTALTUNG
  • Flussdiagramm für Montgomery-Kehrwertberechnung auf Z/NZ
  • 1 ist ein Flussdiagramm zur Montgomery-Kehrwertberechnung auf Z/NZ gemäß der vorliegenden Erfindung.
  • Diese Prozedur dient dem Berechnen eines Ausgabewertes X-122n mod N (wobei n die Größe oder Bitlänge von N ist) aus Eingabewerten X, N (ungerade).
  • Ein passender Wert für t wird gemäß der Größe der Eingabe N und dem Verarbeitungsratenverhältnis zwischen der Zweierpotenz-Multiplikation und dem Zweierpotenz-Kehrwert bestimmt. Es ist bevorzugt, dass t ungefähr in dem Bereich von 0.64n + 20 bis 0.54n - 20 liegt. Vom Standpunkt einer schnelleren Berechnung ist es besonders bevorzugt, dass der Wert t ein ganzzahliges Vielfaches von z.B. 16 ist, was die Anzahl der zur selben Zeit auf der Hardware der Verarbeitungseinheit zu verarbeitenden Bits ist.
  • Schritt S1: Berechne als erstes Y durch die folgende Gleichung. Y = X2-t mod N
  • Schritt S2: Führe als nächstes einen erweiterten binären GGT-Algorithmus für Y und N aus und erhalte S und k'' als Ausgabewerte durch die folgende Gleichung. S = ggT(Y, N) = Y-12k mod N (12)
  • Schritt S3: Führe schließlich die folgende Operation unter Verwendung dieser Werte S und k aus R = S2-(k+t-2n) mod N = S2-k' mod N (13)wobei k' = k + t - 2n ist. Das Berechnungsergebnis R wird als das Ergebnis der Montgomery-Kehrwertberechnung ausgegeben. Falls bei dieser Berechnung k' > 0 ist, wird die Zweierpotenz-Division ausgeführt, um den Wert R zu erhalten, und wenn k' < 0 ist, wird die Zweierpotenz-Multiplikation ausgeführt.
  • Vorrichtung zur Montgomery-Kehrwertberechnung auf Z/NZ
  • 2 stellt eine Ausgestaltung einer Vorrichtung 100 für die Montgomery-Kehrwertberechnung auf Z/NZ dar. Diese Vorrichtung 100 dient zum Ausgeben von X-122n mod N für Eingaben X und N. Die Eingaben X und N werden über ein Eingabeteil 11 bereitgestellt und in Speicherteilen 12 bzw. 13 gespeichert, und zur selben Zeit werden sie in Zweierpotenz-Dividierteile 14 auf Z/NZ eingegeben. Das Dividierteil 14 führt die folgende Berechnung für die Eingaben X und N aus: Y = X2-t mod N (14)
  • Das Berechnungsergebnis Y wird einem erweiterten GGT-Berechnungsteil 15 bereitgestellt und in dessen Speicherteil 15A gespeichert. Der Wert t wird in einem Speicherteil 15 vorab gespeichert.
  • Das erweiterte GGT-Berechnungsteil 15 verwendet die Eingabewerte Y und N, um eine erweiterte binäre GGT-Berechnung durch die folgende Gleichung auszuführen, um S und k zu erhalten. S = Y-12k mod N (15)
  • Die Werte S und k werden einem Vergleichsteil 17 bereitgestellt und in dessen Speicherteilen 17A bzw. 17B gespeichert.
  • Das Vergleichsteil 17 verwendet die Größe (Bitlänge) n des Eingabewertes N und die Werte k und t, um zu bestimmen, ob-k' = 2n-k-t positiv oder negativ ist. Falls es negativ ist, werden |k'| = K = -2n + k + t und S einem Berechnungsteil 18A zur Zweierpotenz-Division auf Z/NZ bereitgestellt, und falls positiv, werden K = 2n - k - t und S einem Berechnungsteil 18B zur Zweierpotenz-Multiplikation auf Z/NZ bereitgestellt.
  • Das Dividierteil 18A verwendet die Eingabewerte S, K und N, um R = S2-K mod N (16)zu berechnen, und stellt das Berechnungsergebnis R einem Ausgabeteil 19 bereit. Das Multiplikationsteil 18B verwendet die Ausgabewerte S, K und N, um R = S2K mod N (17)zu berechnen, und stellt das Berechnungsergebnis R dem Ausgabeteil 19 bereit. Das Ausgabeteil 19 gibt den Wert R als das Ergebnis der Modulo-Kehnnrertberechnung aus.
  • Ein Steuerteil 10 hat die Steuerung der Vorrichtung 100 von dem Eingabeteil 11 bis zum Ausgabeteil 19 inne.
  • Während die vorliegende Erfindung oben so beschrieben wurde, dass sie auf die Montgomery-Kehrwertberechnung angewendet wird, ist die Erfindung auch auf andere Modulo-Kehrwert-Berechnungsvorrichtungen anwendbar. D.h., dass wenn man Schritt 3 dieser Erfindung durch R = S2(k+t-m) mod N (18)repräsentiert sein lässt, ist die Montgomery-Kehrwertberechnung m = 2n, jedoch kann die oben genannte Anwendung durch Setzen normaler Kehrwertberechnung (X1- mod N) als m = 0 und Kaliski-Kehrwertberechnung (X1-2n mod N) als m = n erreicht werden. Der Parameter t wird so gewählt, dass er die Berechnungszeit minimiert, es wird aber für jede Kehrwertberechnung ein passender Wert ausgewählt, und er ändert sich mit dem Wert von n oder dergleichen.
  • Eines oder alle der Speicherteile 12, 13, 15A, 16, 17A und 17B können auch als einzelne Speicherbereiche einer Speichereinrichtung ausgebildet sein. Obwohl die vorliegende Erfindung oben so beschrieben wurde, dass sie auf eine Kehrwertberechnung auf Z/NZ angewendet wird, ist die Erfindung genauso auf die Kehrwertberechnung über GF(p) (wobei p eine Primzahl ist) anwendbar, welche für elliptische Kurven-Verschlüsselungssysteme verwendet wird. Es ist offensichtlich, dass die Vorrichtung zur Modulo-Kehrwertberechnung gemäß der vorliegenden Erfindung auch durch das Ausführen eines Programms auf einem elektronischen Computer implementiert werden kann.
  • Die oben beschriebene Ausgestaltung der Modulo-Kehrwertberechnung gemäß der vorliegenden Erfindung wird für die Modulo-Kehrwertberechnung auf dem Gebiet der Informationssicherheit verwendet, worauf zuvor schon hingewiesen wurde. Dessen Anwendung wird untenstehend konkret beschrieben.
  • Eine Gleichung zur Berechnung eines Punktes (x3, y3) aus zwei Punkten (x1, y1) und (x2, y2) auf der zuvor erwähnten elliptischen Kurve E/GF(p) als der Summe dieser beiden Punkte wird durch die Gleichungen (a-1 ), (a-2) und (a-3) ausgedrückt, wie zuvor erwähnt wurde. D.h., dass die Berechnung des Punktes (x3, y3) die Berechnung von λ durch Gleichung (a-1) mit sich bringt. Setzt man y = y2 - y1 und X = x2 - x1, dann wird die Gleichung (a-1) wie folgt ausgedrückt. λ = (y2-y1)(x2-x1)-1 mod p = yX-1 mod p
  • Zu allererst wird der Modulo-Kehrwert durch X' = X-1 mod p berechnet und dann wird λ = yX' mod p unter Verwendung des Ergebnisses der Modulo-Kehrwertberechnung berechnet. Der Modulo-Kehrwert wird, wie unten beschrieben, durch Anwenden des Verfahrens gemäß der oben beschriebenen ersten Ausgestaltung auf die Berechnung des Modulo-Kehrwerts X' = X-1 mod p berechnet. Zu Anfang wird der vorbestimmte Wert t verwendet, um Y = X2-t mod pzu berechnen. Dann werden die Werte Y und p verwendet, um S und k durch die folgende Gleichung S = bggT(Y, p) = T-12k mod pzu berechnen. Weiter werden die Werte S und t verwendet, um den Modulo-Kehrwert X' durch die folgende Gleichung X' = S2-(k+t-m) mod p wobei m = 0, n oder 2n zu berechnen. Der so berechnete Modulo-Kehrwert X' wird verwendet, um λ durch die folgende Gleichung zu erhalten λ = yX' mod p
  • Bei der Unterschriftenerzeugung durch das digitale ESIGN-Unterschriftenschema wird X = kxk-1 berechnet, indem die Gleichung (b-1) wie folgt ausgedrückt wird: y = w/(kxk-1) mod p = wX-1 mod p
  • Als nächstes wird y wie unten beschrieben durch Anwenden des Verfahrens der ersten Ausgestaltung auf diese Modulo-Kehrwertberechnung mit X' = X-1 mod p berechnet. D.h., der vorbestimmte Wert t wird verwendet, um Y = X2-t mod pzu berechnen.
  • Als nächstes werden die Werte Y und p verwendet, um S und k durch die folgende Gleichung S = bggT(Y, p) = Y-12k mod pzu berechnen. Weiter werden die Werte S und t verwendet, um den Modulo-Kehrwert X' durch die folgende Gleichung X' = S2-(k+t-m) mod p wobei m = 0, n oder 2n zu berechnen.
  • Der Wert y der Gleichung (b-1) kann durch die folgende Gleichung unter Verwendung des so berechneten Modulo-Kehrwerts X' erhalten werden. y = wX-1 mod p = wX' mod p
  • Bei der Blindunterschrift des digitalen RSA-Unterschriftenschemas wird das Verfahren der ersten Ausgestaltung auf die Modulo-Kehrwertberechnung der Gleichung (c-2) angewendet. D.h., dass der Wert R als R = r-1 mod N gesetzt wird, und der vorbestimmte Wert t verwendet wird, um Y = r2-t mod Nzu berechnen.
  • Als nächstes werden die Werte Y und N verwendet, um S und k durch die folgende Gleichung S = bggT(Y, N) = Y-12k mod Nzu berechnen. Weiter werden die Werte S und t verwendet, um den Modulo-Kehrwert R durch die folgende Gleichung R = S2-(k+t-m) mod p wobei m = 0, n oder 2n zu berechnen.
  • Der Wert s in der Gleichung (e-2) kann durch Verwendung des derart berechneten Modulo-Kehrwerts R durch die folgende Gleichung erhalten werden. s = s'/r mod N = s'R mod N
  • ZWEITE AUSGESTALTUNG
  • Die Schritte 1 und 3 der Modulo-Kehrwertberechnung gemäß der ersten Ausgestaltung der vorliegenden Erfindung wurden so beschrieben, dass sie eine Division durch oder Multiplikation mit einer Potenz von 2 berechnen. Eine reine Division durch 2k kann durch eine k-Bit-Verschiebeoperation berechnet werden. Z.B. in dem Fall des Dividierens einer Zahl 40 (in dezimaler Darstellung, was 101000 in binärer Darstellung ist,) durch 23 wird eine Drei-Bit-Verschiebeoperation nach rechts ausgeführt. Dies liefert 101 in binärer Darstellung, was es erlaubt, 5 einfach zu finden. Eine reine k-Bit-Verschiebeoperation ist jedoch nicht genug, um eine Division durch 2k auf Z/NZ, wie bei der Berechnung in dem Dividierteil 14 oder 18 in der 2, zu berechnen. Eine übliche Lösung dieses Problems besteht darin, den folgenden Prozess z.B. für den Fall des Berechnens einer Ausgabe S2-k mod N aus Eingaben S, k und N (ungeradzahlig) auszuführen.
    • (a) Wenn der Eingabewert S durch 2 teilbar ist, dann wird eine Berechnung S/2 ausgeführt, und das Berechnungsergebnis wird als S neu gesetzt.
    • (b) Wenn der Eingabewert S nicht durch 2 teilbar ist, dann wird eine Berechnung (S+N)/2 ausgeführt, und das Berechnungsergebnis wird als S neu gesetzt.
  • Die obigen Schritte (a) oder (b) werden k mal wiederholt.
  • Die Division durch 2 in den Schritten (a) oder (b) kann durch eine Bit-Verschiebeoperation gemacht werden.
  • Andererseits kann die Multiplikation mit 2k durch eine k-Bit-Verschiebeoperation erreicht werden. Z.B. wird in dem Fall des Multiplizierens einer Zahl 40 (in dezimaler Darstellung), was 101000 in binärer Darstellung ist, mit 23 eine Drei-Bit-Verschiebeoperation nach links ausgeführt. Dies liefert 101000000 in binärer Darstellung, was es erlaubt, 320 einfach zu berechnen. Wie in dem Fall der oben erwähnten Division ist jedoch eine reine k-Bit-Verschiebeoperation nicht genug, um die Multiplikation mit 2k auf Z/NZ, wie bei der Berechnung in dem Multiplikationsteil 18B in der 2, zu berechnen. Z.B. wird in dem Fall des Berechnens einer Ausgabe S2k mod N aus Eingaben S, k und N (ungeradzahlig) herkömmlicherweise der folgende Prozess ausgeführt.
    • (a) Der Eingabewert S wird verdoppelt (S × 2), und das Multiplikationsergebnis wird als S neu gesetzt; und
    • (b) wenn das neue S größer ist als N, dann wird S-N berechnet, und das Berechnungsergebnis wird als S neu gesetzt, gefolgt von einer Rückkehr zum Schritt (a). Wenn S nicht größer ist als N, dann kehrt die Prozedur zurück zum Schritt (a).
  • Die Schritte (a) und (b) werden k mal ausgeführt. Die durch S×2 repräsentierte Multiplikation mit 2 wird unter Verwendung einer Bitverschiebeeinrichtung implementiert.
  • Die oben erwähnte Division durch 2k auf Z/NZ wiederholt die Division durch 2 (ein-Bit-Verschiebung nach rechts) genau k mal und eine Addition +N maximal k mal (im Durchschnitt k/2 mal). Die herkömmliche Multiplikation mit 2k auf Z/NZ wiederholt die Multiplikation mit 2 (Ein-Bit-Verschiebung nach links) genau k mal und eine Subtraktion -N maximal k mal (im Durchschnitt k/2 mal). Die Rechenzeit für eine solche Multiplikation und Division mit 2 und Addition und Subtraktion wie oben erwähnt ist proportional zu der Zahl der Bits des bearbeiteten Wertes (des Eingabewerts), und die Verarbeitungszeit wächst proportional zum k-Fachen der Anzahl der Bits an. Es ist daher wünschenswert, die Verarbeitungszeit durch gleichzeitiges Verarbeiten einer Mehrzahl w von Bits (wobei w eine ganze Zahl ist, die gleich oder größer ist als 2) zu reduzieren.
  • Nebenbei sei erwähnt, dass die Hardware eines heutigen Computers aus Speichern gebildet ist, die geeignet sind, um in Einheiten von M Bits (wobei M 8, 16, 32, ... ist) (Bedingung 1) daraus zu lesen und darin zu schreiben. In Anbetracht dessen ist es effektiv, Berechnungen in Einheiten von M Bits auszuführen, indem man die Anzahl w von Bits, die bei der Multiplikation und Division mit 2k gleichzeitig verarbeitet werden, auf einen gewünschten Wert im Bereich zwischen 2 ≤ w ≤ M, bevorzugt w = M, setzt.
  • Z.B. wird in einer herkömmlichen Verarbeitungseinheit zum Berechnen der Division oder Multiplikation mit 2k dann, wenn der Eingabewert groß ist, eine Ein-Bit-Verschiebeoperation einer großen ganzen Zahl wiederholt. Unter der Bedingung 1 jedoch ist die Rechenzeit für die Ein-Bit-Verschiebeoperation genauso lang oder länger als die Rechenzeit, die für die M-Bit-Verschiebeoperation benötigt wird.
  • Als eine Lösung für dieses Problem schafft die zweite Ausgestaltung der vorliegenden Erfindung die Ein-Bit-Verschiebeoperation ab, führt aber statt dessen die Verschiebeoperation in Einheiten einer Mehrzahl w von Bits z.B. M Bits, aus, welche die Verarbeitungseinheit gleichzeitig verarbeiten kann. Dadurch wird die Anzahl der Wiederholungen der Verschiebeoperation auf 1/M der Häufigkeit, in der die Ein-Bit-Verschiebeoperation stattfindet, reduziert. Bei der Zweierpotenz-Division wird z.B. die Verschiebeoperation in Schritten von w = M Bits ausgeführt, und mögliche Additionen, von denen es wahrscheinlich ist, dass sie gemacht werden, während die w-Bit-Verschiebeoperation w mal wiederholt wird, werden zur selben Zeit ausgeführt. Ob die Addition S+N in einer bitweisen Verarbeitung ausgeführt wird, hängt davon ab, ob das am wenigsten signifikante Bit von S 0 oder 1 ist, doch wird der Wert des am wenigsten signifikanten Bits als das Ergebnis der vorhergehenden mehrfachen Additionen bestimmt. Aus diesem Grund wird eine neue Berechnung benötigt, um die am wenigsten signifikanten Bits von S und N zur gleichen Zeit zu verarbeiten, um die gleichzeitige Ausführung von Verarbeitungen von w Iterationen auszuführen.
  • Durch Vorausberechnen von n' = -N-1 mod 2w und Setzen von s' = Sn' mod 2w gilt -s'N = S mod 2w; daher stimmen -s'N und N in dem Bereich von wenigstens w unteren Bits überein. Indem anschließend S + s'N durch 2w geteilt wird, d.h., indem obere Bits von S + s'N ohne die w unteren Bits (00...0) neu als S gesetzt werden, kann S2-w mod N äquivalent erhalten werden.
  • Dieses Prinzip ist so wie unten beschrieben. Basierend auf der als chinesisches Restgliedtheorem bekannten Eigenschaft ist die folgende Gleichung erfüllt: S = {SN-1 mod r)N + (Sr-1 mod N)r} mod Nr (18)wobei r und N teilerfremd sind. Gleichung (18) kann wie folgt modifiziert werden: Sr-1 mod N = {S - SN-1 mod r)N mod Nr}/r (19)
  • Wenn man r = 2w und n' = -N-1 mod 2w setzt, wird daher S2-w mod N = {S + (S mod r)(N-1 mod r)N mod Nr}/r = {(S + s'N mod 2wN)/2w} mod N (20)wobei s' = Sn' mod 2w.
  • Durch wiederholtes Ausführen dieser Operation können die k Iterationen der Schleife, welche das gewöhnliche Dividierverfahren mit sich bringt, auch auf k/w Iterationen reduziert werden.
  • Während im Obigen die Mittel für die Division beschrieben worden sind, kann Multiplikation auch auf eine ähnliche Weise ausgeführt werden. Wenn M die Anzahl der Bits repräsentiert, die zur selben Zeit von dem Computer zum Implementieren dieser Erfindung verarbeitet werden sollen, ist die Anzahl w der Bits, die zur selben Zeit zum Multiplizieren verarbeitet werden, gleich oder kleiner als M (2 ≤ w ≤ M).
  • Bei der Zweierpotenz-Multiplikation ist es notwendig, gleichzeitig mögliche Subtraktionen -N auszuführen, von denen es wahrscheinlich ist, dass sie während w Iterationen der Schleife stattfinden. Es sei angenommen, dass die Anzahl n der Bits von N gleich der von S ist. w ist eine voreingestellte Anzahl von Bits, die zur gleichen Zeit bei der Division verarbeitet werden sollen. Ob die Subtraktion ausgeführt wird oder nicht, wird abhängig davon bestimmt, ob das signifikanteste Bit von S 0 oder 1 ist. Der Wert dieses Bits spiegelt die Ergebnisse der vorhergehenden Subtraktionen wieder. Aus diesem Grund bringt die Vorhersage von möglichen Additionen eine Berechnung mit sich, welche die signifikantesten Bits von sowohl S als auch N verwendet.
  • Zu allererst wird n = [22+M-1/N] vorausberechnet (wobei n die Anzahl der Bits von N ist und von [a] angenommen wird, dass es eine maximale ganze Zahl ist, die eine gegebene reelle Zahl a nicht übertrifft, d.h., ein Wert mit dem weggelassenen Bruchteil der Zahl a).
  • Schritt 1: Berechne S' = S2w.
  • Schritt 2: Berechne s' = [S/(2n+w-M] (D.h., der Wert der oberen w Bits von S' wird zu s' gemacht).
  • Schritt 3: Berechne t = s'n''(Wert von 2M Bits).
  • Schritt 4: Berechne t' = [t/2M-w-1].
  • Weil t' und S'/N in dem Bereich von wenigstens 2M-w-2 oberen Bits übereinstimmen, kann S2w mod N äquivalent (unter der Bedingung M ≥ w + 2) durch Berechnen von S'-t'N erhalten werden.
  • Dieses Prinzip basiert auf der folgenden Tatsache.
  • Weil n'' und s' berechnet werden, die (2n+M-1/N)-1 < n'' < 2n+M-1/N (21) S/2n-M+w-1 < s' < S/2n-M+w (22)erfüllen, ist die folgende Gleichung erfüllt: 22M-w-1S/N > t = s'n'' > (22M-w-1S/N)-s'-n'' + 1 (23)d.h., S/N > t' > S/N - (s' + n'' - 1)/22M-w-1 > S/N - 2M + 1/22M-w-1 > S/N - 2w-M+2 (24)
  • Dadurch können die k Iterationen der Schleife bei dem gewöhnlichen Multiplikationsverfahren auf k/w Iterationen reduziert werden.
  • Vorrichtung für die Zweierpotenz-Division auf Z/NZ
  • 3 zeigt eine Vorrichtung 200 für die Zweierpotenz-Division auf Z/NZ, welche für die Modulo-Kehrwertberechnung in der ersten Ausgestaltung verwendet wird. Die Vorrichtung 200 berechnet S2k mod N für Eingaben S, N und k und gibt es aus. Es wird angenommen, dass die Anzahl w der Bits, die von der Vorrichtung 200 zur gleichen Zeit verarbeitet werden, gleich der Anzahl M der Bits ist, die zur gleichen Zeit von dem Computer, in welchem die Vorrichtung 200 implementiert ist, verarbeitet werden. In diesem Fall jedoch ist k kleiner als 2w werden mehrfache Genauigkeit genannt, und diejenigen kleiner als 2w einfache Genauigkeit. Werte größer als 2.
  • Die Werte S, k und N werden über ein Eingabeteil 21 eingegeben und jeweils in Speicherteilen 22, 23 und 24 gespeichert. Der im Speicherteil 24 gespeicherte Wert N wird ein in Modulo-2w-Kehrwertteil 25 eingegeben, welches n' = -N-1 mod 2w für die Eingabe N berechnet und in seinem Speicher 25A speichert. In dem Fall, bei dem derselbe Wert N zwei oder mehr Male in das Kehrwertteil 25 eingegeben wird, ist es jedoch möglich, eine solche Konfiguration, wie sie in 4A gezeigt ist, einzusetzen, in welcher n' = -N-1 mod 2w in dem Speicher 25A für die Eingabe N gespeichert ist und durch die Eingabe N zum Speichern in einem Speicherteil 26 daraus ausgelesen wird. Wenn ein Entscheidungsteil 25B anhand des aus dem Speicher 25A ausgelesenen Werts entscheidet, dass n' nicht vorhanden ist, wird n' = -N-1 mod 2w in einem Berechnungsteil 25C berechnet und in dem Speicherteil 26 und in dem Speicher 25A gespeichert. Wenn der Wert N groß ist, ist es bevorzugt, dass das Berechnungsteil 25C zuerst y = N mod 2w in einem Berechnungsteil 25Ca berechnet und dann n' = -y-1 mod 2w in einem Berechnungsteil 25Cb.
  • Die Speicherteile 22, 23, 24 und 26 sind mit einem Steuerteil 20 verbunden. Das Steuerteil 20 steuert jeweilige Teile der Vorrichtung 200 und führt deren Prozesse aus. Wie in 4B dargestellt, wird im Schritt S1 überprüft, ob der Wert k, der im Speicherteil 23 gespeichert ist, 0 ist oder nicht, und wenn dem nicht so ist, dann wird im Schritt S2 überprüft, ob der Wert k kleiner ist als w = M (wobei M eine voreingestellte Zahl von Bits ist, die von dem Computer für jede Operation verarbeitet wird, z.B. 8, 16, 32, ...); wenn k nicht kleiner ist als w, dann wird w als w' in einem Speicherteil 20A im Schritt S3 gespeichert, wonach k im Speicherteil 23 durch k-w' aktualisiert wird.
  • Anschließend wird der Wert S im Schritt S4 wie unten beschrieben aktualisiert. D.h., dass das Steuerteil 20 den im Speicherteil 22 gespeicherten Wert S an ein Zweierpotenz-Modulo-Reduktionsteil 31 und ein Addierteil 35 liefert, den Wert n' in dem Speicherteil 26 an ein Multiplikationsteil 32, den Wert N in dem Speicherteil 24 an ein Multiplikationsteil 34 und den Wert W' in dem Speicherteil 20A an die Zweierpotenz-Modulo-Reduktionsteile 31 und 33 und ein Zweierpotenz-Dividierteil 36.
  • Und das Steuerteil 20 steuert die jeweiligen Teile, um deren Prozesse auszuführen. Um damit zu beginnen, berechnet das Modulo-Reduktionsteil 31 s = S mod 2w' aus den Eingaben S und w' in selbiges, und speichert das Berechnungsergebnis in einem Speicherteil 31A. Das Multiplikationsteil 32 berechnet sn' = (S mod 2w')n' aus der Eingabe n' und dem Wert s = S mod 2w', der in dem Speicherteil 31A gespeichert ist, und speichert das Berechnungsergebnis in einem Speicherteil 32A. Das Modulo-Reduktionsteil 33 berechnet s' = (S mod 2w')n' mod 2w' (25)aus der Eingabe w' und dem Wert sn' = (s mod 2w')n', der in dem Speicherteil 32A gespeichert ist, und speichert das Berechnungsergebnis in einem Speicherteil 33A. Das Multiplikationsteil 34 berechnet s'N aus den Eingaben s' von dem Speicherteil 33A und N von dem Speicherteil 24 und speichert das Berechnungsergebnis in einem Speicherteil 34A. Das Additionsteil 35 berechnet eine Addition q = S + s'N aus den Werten S und s'N, die jeweils in den Speicherteilen 2 und 34A gespeichert sind, und speichert das Berechnungsergebnis in einem Speicherteil 35A. Das Dividierteil 36 berechnet (S + s'N)/2w aus dem Wert q = S + s'N von dem Speicherteil 35A und der Eingabe w' und speichert das Berechnungsergebnis als einen neuen Wert von S in einem Speicherteil 36A. D.h., dass das Dividierteil 36 S + s'N durch 2w durch Ausnutzung der Tatsache dividiert, dass das am wenigsten signifikante Bit w' von (S + s'N) 0 wird.
  • Schließlich aktualisiert das Steuerteil 20 nach Vollendung der Operation durch das Dividierteil 36 den Inhalt des Speicherteils 22 mit dem Wert S, der in dem Speicherteil 36A neu gespeichert ist.
  • Die Schritte S1 bis S4 werden wiederholt ausgeführt, solange k ≥ w. Wenn k im Schritt S1 nicht Null ist und wenn k kleiner ist als w, wird k als w' in dem Speicherteil 20A im Schritt S5 gespeichert, und dann wird k im Speicherteil 23 0 gemacht, gefolgt von einer Aktualisierung im Schritt S6, wie im Schritt S4. Weil nach Ausführung der Schritte S5 und S6 k = 0 ist, wird im Schritt S1 entschieden, dass k im Speicherteil 23 Null ist, und im Schritt S7 wird der Inhalt S des Speicherteils 22 als das Berechnungsergebnis S-k mod N ausgegeben, mit welchem die Aktualisierungsverarbeitung endet.
  • Im Übrigen stellen die Modulo-Reduktionsteile 31 und 33 und das Multiplikationsteil 32 ein Zweierpotenz-Modulo-Reduktionsmittel 30A dar, und das Additionsteil 35 und das Multiplikationsteil 34 stellen Multiplikations-/Additionsmittel 30B dar.
  • Zweierpotenz-Division auf Z/NZ
  • 5 zeigt den Ablauf der Zweierpotenz-Division auf Z/NZ. Die Berechnung selber, die für die Modulo-Division benötigt wird, ist die gleiche wie die Berechnung, die von der in der 3 dargestellten Vorrichtung ausgeführt wird. Es sei nun angenommen, dass die Anzahl w der Bits, die bei der Division der vorliegenden Erfindung zur gleichen Zeit verarbeitet werden, gleich der Anzahl M der Bits ist, welche die Berechnungsvorrichtung zur selben Zeit verarbeitet.
    • Schritt S1: berechne K = [k/w];
    • Schritt S2: berechne y = N mod 2w; und
    • Schritt S3: berechne n' = -y mod 2w, um n' = -N - 1 mod 2w zu erhalten.
    • Schritt S4: führe anschließend die folgenden Schritte S4 bis S8 K = [k/w] mal aus. D.h., es wird eine Überprüfung gemacht, um zu sehen, ob K = 0 ist, und wenn dem nicht so ist:
    • Schritt S5: berechne s = S mod 2w;
    • Schritt S6: berechne s' = sn' mod 2w;
    • Schritt S7: aktualisiere S mit (S + s'N); und
    • Schritt S8: dekrementiere K um Eins und kehre zum Schritt S4 zurück.
  • Die Prozesse der Schritte S4 bis S8 entsprechen den Schritten S9 bis S4 in der 4B.
  • Wenn im Schritt S4 K = 0 ist, werden die folgenden Schritte S9 bis S12 ausgeführt.
    • Schritt S9: berechne w' = k mod w;
    • Schritt S10: berechne s = s mod 2w;
    • Schritt S11: berechne s' = sn' mod 2w'; und
    • Schritt S12: aktualisiere S mit (S + s'N)/2w' und gib das aktualisierte S aus.
  • Die Verarbeitungen der Schritte S9 bis S12 entsprechen den Verarbeitungen der Schritte S5, S6, S1 und S7 in der 4B.
  • Obwohl oben mit Bezug auf 5 nicht darauf hingewiesen wurde, wird jedes Berechnungsergebnis verwendet, nachdem es zeitweilig in einem Speichermittel, wie es in 3 dargestellt ist, gespeichert wurde. Wie aus der Beschreibung in Verbindung mit 5 verstanden werden wird, zeigt der in 4B dargestellte Prozess für k an, dass der Prozess mit w = w' K = [k/w] mal (wobei k ≥ w) ausgeführt wird, und dass der Prozess mit k mod w = w' (wobei k < w) einmal ausgeführt wird; dies ist exakt derselbe Prozess, wie er in 5 dargestellt ist. Es ist aber auch möglich, ein Verfahren anzunehmen, welches K = [k/w] wie in der 5 berechnet und K nach jeder Berechnung um eins dekrementiert. Dasselbe gilt im Hinblick auf den Ablauf der Operation durch die Vorrichtung, die später mit Bezug auf die 6 beschrieben wird.
  • Wie man aus dem Obigen sieht, ist die grundlegende Operation der Modulo-Divisionsvorrichtung gemäß der zweiten Ausgestaltung der vorliegenden Erfindung die Berechnung von S2-w mod N. Diese Berechnung kann in 3 durch Berechnen von n' im Modulo-Kehrwertteil 25, s' in dem Modulo-Reduktionsteil 30A, und S = q/2w in dem Modulo-Dividierteil 36 und Ausgeben des Berechnungsergebnisses daraus, gemacht werden. D.h., dass in 5 die Prozesse der Schritte S2, S3, S5, S6 und S7 ausgeführt werden und das Berechnungsergebnis im Schritt S7 ausgegeben wird.
  • Vorrichtung zur Zweierpotenz-Multiplikation auf Z/NZ
  • 6 zeigt ein Beispiel einer Vorrichtung 400 zur Zweierpotenz-Multiplikation auf Z/NZ gemäß der ersten Ausgestaltung der vorliegenden Erfindung. Die Vorrichtung 400 gibt S2k mod N für Eingaben S, N und k aus. Wenn M die Zahl der Bits der Einheitsoperation eines Computers, der diese Vorrichtung implementiert, darstellt, wird die Zahl w der Bits, die zur selben Zeit verarbeitet werden sollen, in diesem Beispiel derart voreingestellt, dass w ≤ M ist. Die Werte S, k und N werden über ein Eingabeteil 41 eingegeben und in Speicherteilen 42, 43 bzw. 44 gespeichert. Für den Wert N im Speicherteil 44 wird n'' = (2n+M-1/N] in einem Dividierteil 45 berechnet, und das Berechnungsergebnis wird in einem Speicherteil 46 gespeichert. Das n in dem Obigen ist die Zahl der Bits von jedem der Werte N und S, und es wird von einem Steuerteil 40 dem Dividierteil 45 bereitgestellt. Wenn dasselbe N in die Vorrichtung 400 zwei- oder mehrmals eingegeben wird, kann das oben erwähnte Berechnungsergebnis n'' = [2n+M-1/N] in einem Speicher des Dividierteils 45 vorab gespeichert sein. Dies kann durch Ausführen desselben Prozesses, wie oben in Verbindung mit der 4A beschrieben, gemacht werden.
  • Das Steuerteil 40 steuert die Ausführung des Steuerprozesses für jedes Teil und führt für das Speicherteil 43 denselben Prozess aus wie in 4B dargestellt. Anschließend gibt das Steuerteil 40 den Wert S aus dem Speicherteil 42 und einen Wert w', der auf dieselbe Weise wie in dem Fall des w' in der 4B bestimmt wird, in ein Zweierpotenz-Multiplikationsteil 55 ein, berechnet dann darin S2w' und speichert es in einem Speicherteil 55A. Darüber hinaus gibt das Steuerteil 40 die Anzahl n der Bits und den Wert S aus dem Speicherteil 42 in ein Zweierpotenz-Dividierteil 51 ein, berechnet dann dann s = [S/2n-M] und speichert es in einem Speicherteil 51A.
  • Das Steuerteil 40 gibt die Werte n'' und s aus den Speicherteilen 46 und 51A in ein Multiplikationsteil 52 ein, berechnet dann t = n''s und speichert den Wert t in einem Speicherteil 52A.
  • Als nächstes verwendet ein Zweierpotenz-Dividierteil 53 den Wert t aus dem Speicherteil 52A und den Wert w', um t' = [t/22m-w'-1] zu berechnen, und speichert es in einem Speicherteil 53A. Ein Multiplikationsteil 54 berechnet t'N für die Werte t' und N, die ihm von den Speicherteilen 53A bzw. 44 bereitgestellt werden, und speichert es in einem Speicherteil 54A. Ein Subtrahierteil 56 berechnet S' = S2w'- t'N für die Werte t'N und S2w', die jeweils. aus den Speicherteilen 54A und 55A in es eingegeben werden, und speichert das Berechnungsergebnis S' in einem Speicherteil 56A. Die Berechnung des Wertes S' macht von der Tatsache Gebrauch, dass obere M-2 Bits des Wertes -t'N zu Null werden. Ein Vergleichsteil 57 vergleicht die Werte S' und N, die in den Speicherteilen 56A bzw. 44 gespeichert sind, und wenn S' < N ist, stellt es den Wert S' für das Steuerteil 40 bereit, welches den Wert s in dem Speicherteil 42 mit der Eingabe S' aktualisiert. Wenn S' ≥ N ist, wird der Wert S' einem Dividierteil 58 bereitgestellt. Das Dividierteil 58 subtrahiert von der Eingabe S' in selbiges den Wert N in dem Speicherteil 44 und gibt das Subtraktionsergebnis S'-N als S' an das Vergleichsteil 57 zurück, welches wieder eine Überprüfung macht, um zu sehen, ob S' < N ist. Wenn dem so ist, stellt das Vergleichsteil 57 den Wert S' dem Steuerteil 40 bereit, welches den Wert S in dem Speicherteil 42 mit der Eingabe S' aktualisiert.
  • Wie in dem Fall der 4B aktualisiert das Steuerteil 40 den Wert S in dem Speicherteil 42 mit der Eingabe S', die vom Vergleichsteil 57 bereitgestellt wird, wenn S' < N ist, und mit der Eingabe S'-N von dem Dividierteil 58, wenn S' ≥ N ist, und kehrt anschließend zum Schritt S1 zurück. Falls k = 0 ist, gibt das Steuerteil 40 anschließend den Wert S in dem Speicherteil 42 als das Endergebnis der Berechnung von S2k mod N aus.
  • Zweierpotenz-Multiplikation auf Z/NZ
  • 7 ist ein Flussdiagramm, das den Ablauf der Zweierpotenz-Multiplikation auf Z/NZ gemäß der zweiten Ausgestaltung der vorliegenden Erfindung zeigt. Dieses Beispiel berechnet auch S2k mod N wie im Fall der in 6 dargestellten Vorrichtung.
    • Schritt S1: berechne K = [k/w]; und
    • Schritt S2: berechne n'' = [2n+M-1/N].
    • Schritt S3: wiederhole die folgenden Schritte S4 bis S8 K = [k/w] mal aus.
  • Als Erstes wird eine Überprüfung gemacht, um zu sehen, ob K = 0 ist, und wenn dem nicht so ist, werden die folgenden Schritte S4 bis S9 ausgeführt.
    • Schritt S4: berechne s = [S/2n-M];
    • Schritt S5: berechne t' = [sn''/22M-w-1];
    • Schritt S6: aktualisiere S mit S2w - t'N;
    • Schritt S7: dekrementiere K um 1;
    • Schritt S8: mache eine Überprüfung, um zu sehen, ob S < N ist;
    • Schritt S9: wenn dem nicht so ist, führe eine Aktualisierung S ← S-N aus und kehre zum Schritt S8 zurück. Wenn S < N im Schritt S8 ist, kehre zum Schritt S3 zurück, und wenn K = 0 im Schritt S3 ist, dann führe die folgenden Schritte S10 bis S15 aus.
    • Schritt S10: berechne w' = k mod w;
    • Schritt S11: aktualisiere n'' mit [n''/2w-w'];
    • Schritt S12: berechne s = [S/2n-M];
    • Schritt S13: berechne f = [sn''/22M-w'-1];
    • Schritt S14: aktualisiere S mit S2w' - t'N;
    • Schritt S15: mache eine Überprüfung, um zu sehen, ob S < N ist;
    • Schritt S16: Wenn nicht, dann aktualisiere S mit S-N und kehre zum Schritt S15 zurück,
    und wenn S < N, dann gib S im Schritt S14 aus.
  • Obwohl auch in 7 nicht gezeigt, wird jedes Berechnungsergebnis verwendet, nachdem es in einem Speichermittel, wie es in 6 dargestellt ist, zeitweilig gespeichert wurde. Bei der Zweierpotenz-Multiplikation ist die grundlegende Operation der vorliegenden Erfindung die Berechnung von s2w mod N, wie zuvor erwähnt wurde. In 6 kann diese Berechnung gemacht werden durch Berechnen von n'' in dem Dividierteil 45, von t' in dem ersten Berechnungsmittel 50A, das aus dem Dividierteil 51, dem Multiplikationsteil 52 und dem Dividierteil 53 besteht, und von S' in dem zweiten Berechnungsmittel 50B, das aus den Multiplikationsteilen 54 und 55 und dem Subtrahierteil 56 zusammengesetzt ist, wobei die Prozesse in dem Vergleichsteil 54 und dem Subtrahierteil 48 solange ausgeführt werden, bis S' < N erhalten wird, und Ausgeben des Wertes S' als das Ergebnis der Berechnung S2w mod N.
  • In der 5 können die Schritte S9 bis S12 vor den Schritten 4 bis 8 ausgeführt werden. Ähnlich können in der 7 die Schritte S3 bis S9 nach den Schritten S10 bis S16 ausgeführt werden. Alle oder einige der Speicherteile 22, 23, 24, 26, 20A und 31A bis 36A in der 3 können durch einzelne Speicherbereiche einer Speichervorrichtung gebildet sein. Desgleichen können alle oder einige der Speicherteile 42, 43, 44, 46, 51A bis 56A und 58A in der 6 durch einzelne Speicherbereiche einer Speichervorrichtung gebildet sein.
  • 8 zeigt eine Ausgestaltung, welche die Zweierpotenz-Division S2-k mod N durch die Verwendung einer Mehrzahl von Berechnungsvorrichtungen berechnet, welche sich in der Anzahl M der Bits, die zur selben Zeit verarbeitet werden, unterscheiden. Diese Ausgestaltung setzt p Berechnungsvorrichtungen ein, welche Operationen in Einheiten von unterschiedlichen Anzahlen w1, w2, ..., wp von Bits ausführen. Die Eingaben S, k und N, die über das Eingabeteil 21 bereitgestellt werden, werden in den Speicherteilen 22, 23 bzw. 24 gespeichert. Die Eingabe k wird von Spaltungsmitteln 37 in p Teile von Werten gespalten, welche k = w1 + w2 + ... + wp (wobei wi > 0, i = 1, 2, ...., p) erfüllen, und sie werden in Speicherteilen 37A1 , 37A2 , ..., 37Ap gespeichert. Bezugszahlen 381 , 382 , ..., 38p bezeichnen Zweierpotenz-Dividiervorrichtungen, von denen jede aus dem Modulo-Kehrwertberechnungsteil 25, dem Modulo-Reduktionsteil 30A, dem Multiplizier/Addiermittel 30B und dem Dividierteil 36, das in 3 dargestellt ist, aufgebaut sind. Diese Dividiervorrichtungen sind jeweils durch w1, w2, ..., wp gegeben. Die Dividiervorrichtung 381 gibt S, w1 und N darin ein, und berechnet durch den oben beschriebenen Prozess, wobei w als w1 gesetzt ist,
    Figure 00190001
    und speichert das Berechnungsergebnis in einem Speicherteil 38A1 . Die Dividiervorrichtung 382 gibt S1, w1 und N darin ein, und berechnet
    Figure 00200001
    und speichert das Berechnungsergebnis in einem Speicherteil 38A2 . Dem folgt eine ähnliche Verarbeitung. Schließlich berechnet die Dividiervorrichtung 38p
    Figure 00200002
    und gibt es als das Divisionsergebnis aus.
  • Im Übrigen müssen nicht alle der p Werte w1, w2, ..., wp notwendigerweise voneinander verschieden sein, sondern einige von ihnen können auch gleich sein. D.h., z.B. für den Fall, bei dem zwei Berechnungsvorrichtungen verwendet werden, welche Operationen jeweils in Einheiten von w1 bzw. w2 Bits ausführen, dass die Eingabe k in k = aw1 + bw2 + c aufgespalten wird; die Dividiervorrichtung 381 , die durch die Berechnungsvorrichtung von dem Typ, welcher Operationen in Einheiten von w1 Bits ausführt, gebildet ist, führt Division a mal aus, wie zuvor mit Bezug auf die 3 beschrieben worden ist, und die Dividiervorrichtung 382 , die durch die Berechnungsvorrichtung des Typs gebildet ist, welcher Operationen in Einheiten von w2 Bits ausführt, führt Division b mal aus. Was einen Bruchteil c angeht, der kleiner ist als w1 oder w2, braucht die Division durch die Dividiervorrichtung 381 oder 382 nur mit w1 oder w2 als w1' oder w2' gemacht zu werden. D.h., dass wenigstens zwei der p Werte w1 bis wp sich von den anderen unterscheiden und Divisionen, von denen die gleiche Anzahl wi von Bits zur selben Zeit verarbeitet werden soll, werden durch eine der Dividiervorrichtungen 381 bis 38p ausgeführt.
  • Dasselbe gilt im Hinblick auf die Zweierpotenz-Multiplikation. Ein Beispiel ist in 9 gezeigt. Die Eingaben S, k und N, die über ein Eingabeteil 41 bereitgestellt werden, werden jeweils in Speicherteilen 42, 43 und 44 gespeichert. Die Eingabe k wird vom Spaltungsteil 47 in p Werte aufgespalten, welche k = w1 + w2 + ,..., + wp (wobei wi > 0, i = 1, 2, ...., p) erfüllen, und sie werden in Speicherteilen 47A1 , 47A2 , ..., 47AP gespeichert. Die Werte w1, ..., wp sind vorbestimmt. Bezugszahlen 481 , 482 , ..., 48p bezeichnen Zweierpotenz-Multiplikationsvorrichtungen, welche Operationen in Einheiten von M1, M2, ... bzw. Mp Bits ausführen, und von denen jede aus dem Dividierteil 45, dem ersten Berechnungsmittel 50A, dem zweiten Berechnungsmittel 50B, dem Vergleichsteil 57 und dem Subtrahierteil 58 in der 6 aufgebaut ist. Diese Multiplikationsvorrichtungen bekommen jeweils w1, w2, ... bzw. wp. Das Multiplikationsgerät 481 gibt S, w, und N darin ein und berechnet S1 = S2w1 mod N durch den oben beschriebenen Prozess, wobei w1 als w' gesetzt ist, und speichert das Berechnungsergebnis in einem Speicherteil 48A1 . Die Multiplikationsvorrichtung 482 gibt S1, w1 und N darin ein und berechnet durch den oben beschriebenen Prozess, wobei S1 als S gesetzt ist und w2 als w' gesetzt ist,
    Figure 00200003
    und speichert das Berechnungsergebnis in einem Speicherteil 48A2 . Dem folgt eine ähnliche Verarbeitung. Schließlich berechnet die Multiplikationsvorrichtung 48p mit der Eingabe Sp-1 als S und wp als w',
    Figure 00200004
    und gibt es als das Multiplikationsergebnis aus.
  • Bei diesem Beispiel ist w1 ≤ M1, w3 ≤ M2, ..., wp ≤ Mp, jedoch kann wie im Falle der Division die Eingabe k in Werte aufgespalten sein, welche z.B. k = aw1 + bw2 + c erfüllen, und die Multiplikation wird dementsprechend ausgeführt. Auch in diesem Fall ist die Zahl der Multiplikationsvorrichtungen 481 , 482 , ..., die verwendet werden, gleich oder kleiner als p.
  • Die Zweierpotenz-Division und Zweierpotenz-Multiplikation, die oben im Hinblick auf die zweite Ausgestaltung der Erfindung beschrieben sind, sind auf den Schritt 1 und den Schritt 3 der Modulo-Kehrwertberechnung der ersten Ausgestaltung anwendbar, d.h. die Division durch 2-t (wenn t positiv ist) oder die Multiplikation (wenn t negativ ist) in der Gleichung (7), und die Division durch 2-(k'-2n)(= 22n-k-t) (wenn k'-2n positiv ist) oder die Multiplikation (wenn k'-2n negativ ist) in Gleichung (9). Genauer kann das Dividierverfahren der zweiten Ausgestaltung auf das Dividierteil 14 in der 2 angewendet werden, indem die Eingaben X, N und t in der ersten Ausgestaltung als die Eingaben S, N und k bei dem Dividierverfahren der zweiten Ausgestaltung verwendet werden. Der bei der Division erhältliche Wert S wird als die Ausgabe Y von dem Dividierteil 14 in der 2 bereitgestellt. Das Dividierverfahren der zweiten Ausgestaltung kann auf das Dividierteil 18A in der 2 angewendet werden, indem die Eingaben S, N und k in der ersten Ausgestaltung als die Eingaben S, N und k bei dem Dividierverfahren der zweiten Ausgestaltung verwendet werden. Der bei der Division erhältliche Wert S wird als die Ausgabe R vom Dividierteil 18A in der 2 bereitgestellt. Das Multiplikationsverfahren der zweiten Ausgestaltung kann auf das Multiplikationsteil 18B in der 2 durch Verwenden der Eingaben S, N und k in der ersten Ausgestaltung als die Eingaben S, N und k bei dem Multiplikationsverfahren der zweiten Ausgestaltung angewendet werden. Der aus dieser Multiplikation resultierende Wert S wird als die Ausgabe R vom Multiplikationsteil 18B in der 2 bereitgestellt.
  • Bei diesen Divisionen ist n' = -N-1 mod 2w ein Wert, der nur durch N und w bestimmt ist. Bei dem verwendeten Informationssicherheitsschema ist N gewöhnlicherweise festgelegt, und die Anzahl w der Bits zur gleichzeitigen Verarbeitung ist ebenfalls festgelegt. Daher kann Vorsorge getroffen werden, um n' vorab zu berechnen und es als eine Konstante z.B. in einem ROM zu speichern, aus dem es bei Bedarf ausgelesen wird. Z.B. wird in dem Fall, bei dem das Dividierverfahren der zweiten Ausgestaltung auf beide Dividierteile 14 und 18A in der 2 angewendet wird, n' durch die Berechnung in dem Modulo-Kehrwertberechnungsteil 25 in der 3 in beiden Fällen berechnet; daher kann n' in den Dividierteilen 15 und 18A in der 2 durch vorab Berechnen und vorab Speichern in dem Speicherteil 25A in der 3 gemeinsam benutzt werden. Wenn darüber hinaus sogar die Eingabe X in eine solche Modulo-Kehrwertberechnung wie X-1Bm mod N (wobei B = 2n und m = 0, 1 oder 2) durch die Modulo-Kehrwertberechnungsvorrichtung der 2 geändert wird, muss der Wert n' nicht geändert werden. Wenn N andererseits verschiedene vorbestimmte Werte annimmt, wird n' für jeden Wert von N berechnet und in dem Speicherteil 25A in Entsprechung zu jedem Wert von N, wie es vorhergehend mit Bezugnahme auf die 4A beschrieben wurde, gespeichert. Dadurch kann der Wert von n' entsprechend einem bestimmten Wert der Eingabe N aus dem Speicherteil 25A für den Gebrauch ausgelesen werden.
  • DRITTE AUSGESTALTUNG
  • Die Verarbeitung des Schrittes 2 bei der Montgomery-Kehrwertberechnung in der ersten Ausgestaltung der Erfindung ist ein erweiterter binärer GGT-Berechnungsprozess, wie zuvor erwähnt. Die dritte Ausgestaltung ist auf eine Vorrichtung zur effektiven erweiterten binären GGT-Berechnung bei der Modulo-Kehrwertberechnung durch die vorliegende Erfindung gerichtet.
  • Gebräuchliche Verfahren zum Erhalten des größten gemeinsamen Teilers (GGT) sind (1) der euklidische Algorithmus, (2) der binäre GGT-Algorithmus und (3) der Algorithmus L. Mit dem Algorithmus L ist beabsichtigt, die Effektivität des euklidischen Algorithmus für große Zahlen zu verbessern.
  • (1) Euklidischer Algorithmus
  • Der euklidische Algorithmus nutzt die Tatsache aus, dass, wenn man Xi = QiYi + Ri (30)setzt, die folgende Gleichung erfüllt ist: ggT(Xi, Yi) = ggT(Yi, Ri) (31) Xi, und Yi werden aus X0 und Y0 durch wiederholtes Anwenden der Gleichung (30) erhalten, mit Xi+1 = Yi, Yi+1 = Ri. (32)
  • Weil ggT(X0, Y0) = ggT(X1,Y1) = ... ggT(Xj, 0) = Xj, (33)kann ggT(X0, Y0) durch Verwenden der Gleichung (31) erhalten werden. (Siehe D.E. Knuth, „The Art of Computer Programming", Band 2, Seite 336, Seminumerical Algorithms.)
  • Ein konkretes Beispiel wird unten beschrieben. Für ganze Zahlen
    X0 = 24, Y0 = 9 führt der euklidische Algorithmus solche Operationen wie die folgenden aus:
    X1 ← Y0 = 9, Y1 ← X0 mod Y0 = 6
    X2 ← Y1 = 6, Y2 ← X1 mod Y1 = 3
    X3 ← Y2 = 3, Y3 ← X2 mod Y2 = 0
  • Als ein Ergebnis wird ggT(X0, Y0) = ggT(X3, Y3) = ggT(3, 0) = 3 erhalten.
  • Eine Vorrichtung zum Implementieren des euklidischen Algorithmus kann durch eine Kombination von Dividier- und Multiplikationsvorrichtungen gebildet werden.
  • (2) Binärer GGT-Algorithmus
  • Der binäre GGT-Algorithmus ist ein Verfahren, welches den GGT durch Verwendung der folgenden Tatsache berechnet:
    Wenn X ungerade und Y gerade ist: ggT(X, Y) = ggT(X, Y/2)
    Wenn X gerade und Y ungerade ist: ggT(X, Y) = ggT(X/2, Y)
    Wenn X ungerade und Y ungerade ist: ggT(X, Y) = ggT(X, Y - X)
    Wenn X gerade und Y gerade ist: ggT(X, Y) = 2ggT(X/2, Y/2)
  • D.h., dass dieses Verfahren auf der Tatsache basiert, dass die folgende Gleichung ggT(Xi+1, Yi+1) = ggT(Xi, Yi) (34)für Xi + 1 und Yi + 1 erfüllt ist, die durch Ausführen der folgenden Verarbeitungen erhältlich sind, wenn entweder Xi oder Yi ungerade ist.
    • (A) Wenn Xi ungerade und Yi gerade ist: Xi+1 ← Xi; Yi+1 ← Yi/2
    • (B) Wenn Xi gerade und Yi ungerade ist: Xi+1 ← Xi/2; Yi+1 ← Yi
    • (C) Wenn Xi ungerade und Yi ungerade ist: Xi+1 ← Xi; Yi+1 ← Xi – Yi/2
  • Xi und Yi werden aus X0 und Y0 durch wiederholtes Anwenden der obigen Prozesse (A), (B) und (C) erhalten.
  • Weil ggT(X0, Y0) = ggT(X1, Y1) = ... = ggT(Xj, 0) = Xj ist, kann ggT(X0, Y0) durch Verwendung der Gleichung (34) erhalten werden. (Siehe D.E. Knuth „The Art of Computer Programming", Band 2, Seite 339, Algorithms.) Ein konkretes Beispiel wird unten beschrieben. Für ganze Zahlen
    X0 = 24, Y0 = 9 führt das binäre GGT-Berechnungsverfahren solche Operationen wie die folgenden aus:
    X1 ← Y0/23 = 3, Y1 ← X0 ← Y0 = 9
    X2 ← Y1 = 3, Y2 ← (X1 - X1)/2 = 3
    X3 ← Y2 = 3, Y3 ← (Y2 - X2)/2 = 0
  • Als ein Ergebnis wird ggT(X0, Y0) = ggT(X3, Y3) = ggT(3, 0) = 3 erhalten.
  • Das binäre GGT-Berechnungsverfahren kann durch eine solche Prozedur, wie sie in 10 dargestellt ist, implementiert sein. Dieses Beispiel verwendet Variablen U und V in Entsprechung mit Eingaben X und Y und führt die folgenden Verarbeitungen aus.
  • Schritt S1: Setze X und Y als Anfangswerte U und V und setze einen Anfangswert 1 in einem Schiebezähler z.
  • Schritt S2: Mache eine Überprüfung um zu sehen, ob U und V beide gerade sind, d.h., ob das letzte signifikante Bit „0" ist.
  • Schritt S3: Wenn U und V beide gerade sind, dann setze jeweils U/2 und V/2 als U und V, um die Schiebezählung (Ein-Bit-Schiebeoperation) zu verdoppeln, und kehre zum Schritt S2 zurück.
  • Schritt S4: Mache eine Überprüfung um zu sehen, ob V gerade ist.
  • Schritt S5: Wenn V gerade ist, dann setze V/2 als V und kehre zum Schritt S4 zurück.
  • Schritt S6: Wenn U ungerade ist, dann mache eine Überprüfung um zu sehen, ob U gerade ist.
  • Schritt S7: Wenn U gerade ist, dann setze U/2 als U und kehre zum Schritt S6 zurück.
  • Schritt S8: Wenn U und V beide ungerade sind, dann mache eine Überprüfung um zu sehen, ob U > V ist.
  • Schritt S9: Wenn U > V, dann setze (U - V)/2 als V und kehre zum Schritt S4 zurück.
  • Schritt S10: Wenn U ≤ V, dann setze (V - U)/2 als V.
  • Schritt S11: Mache eine Überprüfung, um zu sehen, ob V = 0 ist, und wenn dem nicht so ist, kehre zum Schritt S4 zurück.
  • Schritt S12: Wenn V = 0 ist, dann gib U × z als das Ergebnis der Berechnung von ggT(X, Y) aus.
  • Eine Vorrichtung für die binäre GGT-Berechnung kann nur durch Zweierpotenz-Division und Zweierpotenz-Multiplikation aufgebaut sein. Die Zweierpotenz-Multiplikation/Division ist zu einer Ein-Bit-Verschiebeoperation äquivalent, und sie hat daher den Vorteil, durch einen elektronischen Schaltkreis oder elektrischen Computer einfach implementierbar zu sein. Wenn bei dem euklidischen Algorithmus und dem binären GGT-Algorithmus die Eingabewerte X und Y große ganze Zahlen sind, werden eine Bit-Verschiebeoperation Division und Multiplikation für die großen ganzen Zahlen eine Mehrzahl von Malen ausgeführt. Man betrachte nun den Fall, dass die binäre GGT-Berechnung für ganze Zahlen X und Y durchgeführt wird, die z.B. durch 512 Bits ausgedrückt werden können. Die Wiederholungszahl k der Schleife bei der binären GGT-Berechnung liegt in dem Bereich von der Größe des Eingabewertes bis zum Doppelten der Eingabegröße (in dem Bereich von 512 bis 1024 mal in diesem Beispiel), und das binäre GGT-Berechnungsverfahren führt die Bit-Verschiebeoperation k mal und eine Subtraktion maximal k mal aus (k/2 mal im Schnitt) (entsprechend dem Schritt S9 oder S10 in der 10). Die Zeiten für eine Bit-Verschiebeoperation und eine Addition/Subtraktion wachsen auch proportional zu der Bitgröße des Wertes, der berechnet wird, an (U, V in diesem Fall). Dementsprechend führt die Reduktion der Anzahl der Wiederholungen von Operationen für große ganze Zahlen zu einer Erhöhung der Geschwindigkeit der GGT-Berechnung.
  • Ein mögliches Verfahren, das vorgeschlagen wurde, um die Zahl der Wiederholungen der Operation für große ganze Zahlen zu reduzieren, besteht darin, einen unten beschriebenen Simulationsalgorithmus zu verwenden. Dieses herkömmliche Verfahren bringt nicht die Operation an großen ganzen Zahlen mit sich, sondern simuliert statt dessen den GGT-Algorithmus durch eine Berechnung, die kleine ganze Zahlen in der Schleife verwendet und dann Operationen an großen ganzen Zahlen durch die Verwendung des durch die Simulation erhaltenen Wertes ausführt.
  • (3) Algorithmus L
  • Es wurde ein Verfahren vorgeschlagen, welches den Simulationsalgorithmus auf den euklidischen Algorithmus anwendet (siehe z.B. D.E. Knuth (übersetzt von Keisuke Nakagawa), „Quasi-Numerical Algorithm/Arithmetic Operation" (The Art of Computer Programming, Band 4) Seite 166, Algorithm L, Science-sha, 1986.)
  • Ein konkretes Beispiel wird unten beschrieben. Bei dem Algorithmus L werden für große ganze Zahlen
    X0 = 91234567890123456789
    Y0 = 2000000000000000001
  • Werte für deren obere, z.B. vier Ziffern und Werte, bei denen zu den vier Ziffern 1 hinzuaddiert ist, als kleine ganze Zahlen wie folgt bestimmt:
    x00 = 9123
    x10 = 9124
    y00 = 2000
    y10 = 2001
  • Setzt man
    Xi+1 = Yi; Yi+1 = Xi mod Yi
    x0i+1 = y1i; y1i+1 = x0i mod y1i
    x1i+1 = y0i; y0i+1 = x1i mod y0i
    dann ist die folgende Gleichung erfüllt: x0i/y1i < Xi/Yi < x1i/y0i (35)
  • Der Algorithmus L führt den euklidischen Algorithmus unter Verwendung von x0i, y1i, x1i und y0i, und nicht von Xi und Yi aus. D.h., es werden kleine ganze Zahlen x0i, y1i, x1i und y0i so lange berechnet, wie die Bestandteile/ganzzahligen Teile auf der rechten und linken Seite der Gleichung (35) denselben Wert haben. Dies wird eine Simulation genannt. Die durch die Simulation erhaltenen Werte werden verwendet, um die großen ganzen Zahlen Xi und Yi zu berechnen.
  • Dieses Verfahren liefert denselben Effekt, wie er auch durch gleichzeitiges Ausführen von Operationen für große ganze Zahlen erhältlich ist. (Wenn z.B. die kleinen ganzen Zahlen x0i, x1i, y0i und y1i zehn Ziffern haben, können Operationen mit ungefähr 12 Iterationen zur selben Zeit ausgeführt werden.) Dieses Verfahren ist auch auf die binäre GGT-Berechnung anwendbar.
  • Das Problem des Algorithmus L liegt darin, dass die Simulation sowohl den euklidischen Algorithmus, der x0i, y1i verwendet, als auch den euklidischen Algorithmus, der x1i und y0i verwendet, erfordert, und dass die Anzahl der Operationen, die zur selben Zeit ausgeführt werden können, für jeden Eingabewert unterschiedlich ist.
  • Ein gewöhnlicher Computer hat Speicher, die geeignet sind in Einheiten von M Bits (wobei M 8, 16, 32, ..., ist) aus ihnen zu lesen und in sie zu schreiben (Bedingung 1). Deshalb wäre es effektiv, Operationen in Schritten von M Bits auszuführen. Z.B. umfasst der binäre GGT-Algorithmus Ein-Bit-Verschiebeoperationen für große Zahlen. Unter der Bedingung 1 sind die Kosten für die Ein-Bit-Verschiebeoperation jedoch gleich oder größer als diejenigen der M-Bit-Verschiebeoperation. Darüber hinaus sind heutige Computer mit M-Bit-(wobei M 8, 16, 32, ... ist) Schiebern, -Addierern, –Subtrahierern und -Multiplizierern ausgestattet (Bedingung 2). Unter diesen Umständen benötigt eine Unter-M-Bit-Operation dieselbe Zeitdauer wie die M-Bit-Operation. Dementsprechend ist es unter dem Gesichtspunkt der Effektivität bevorzugt, Operationen in Einheiten von M Bits auszuführen.
  • Andererseits variiert in dem Algorithmus L die Anzahl der Bits, die gleichzeitig verarbeitet werden können, jedes Mal, was den Vorzug der kombinierten Operation schmälert. Um dies zu vermeiden, wendet die erweiterte binäre GGT-Berechnung gemäß der dritten Ausgestaltung das Simulationsverfahren auf den binären GGT-Algorithmus an – dies kann ohne Berechnung eines Fehlerbereiches realisiert werden, wie es unten beschrieben ist.
  • Der Algorithmus L führt die Simulation unter Verwendung der kleinen ganzen Zahlen x0i, x1i, y0i und y1i anstelle von Xi und Yi aus. Die ganzen Zahlen x0i und x1i repräsentieren die oberen und unteren Grenzen des Wertes, den Xi annehmen darf, und y0i und y1i die oberen und unteren Grenzen des Wertes, den Yi annehmen darf. Die Simulation fährt fort, bis die Differenz zwischen der oberen und unteren Grenze (der Fehlerbereich) um ein gewisses Maß angewachsen ist.
  • Im Gegensatz dazu ist bei dem erweiterten binären GGT-Berechnungsverfahren dieser dritten Ausgestaltung die kleine ganze Zahl, die den Wert Xi repräsentiert, insbesondere auf den intermediären Wert xa zwischen der oberen und unteren Grenze begrenzt. Darüber hinaus wird die Simulation eine vorbestimmte Anzahl von Malen w' ohne Berechnen des Fehlerbereiches ausgeführt.
  • Dies liefert die beiden unten erwähnten Vorteile.
    • (1) Weil eine größere Zahl von Simulationen zur selben Zeit ausgeführt werden kann als in dem Fall des Verwendens des Fehlerbereiches, nimmt die Zahl der Wiederholungen der Berechnung mehrfacher Genauigkeit dementsprechend ab.
    • (2) Eine Bit-Verschiebeoperation kann in Einheiten einer festgelegten Zahl w' von Bits ausgeführt werden.
  • Mit diesen Vorteilen wird die GGT-Berechnung schneller.
  • Der Algorithmus L führt dieselben Operationen wie der euklidische Algorithmus und das binäre GGT-Berechnungsverfahren aus, doch kann das erweitere binäre GGT-Berechnungsverfahren gemäß der dritten Ausgestaltung manchmal verschiedene Operationen ausführen. Z.B. vergleicht das binäre GGT-Berechnungsverfahren U und V in der Schleife, um zu bestimmen, welcher Wert größer ist. Wenn die Werte U und V weit von einander beabstandet sind, kann der Vergleich durch Überprüfung ihrer jeweiligen oberen Ziffern allein gemacht werden. Wenn die Werte U und V nahe beieinander liegen, kann der Vergleich manchmal jedoch nicht nur auf kleinen ganzen Zahlen ua und va basierend gemacht werden (entsprechend einigen oberen Ziffern von U und V), die verwendet werden, um die Berechnungen von U und V zu simulieren. In einer solchen Situation ist es beim Algorithmus L üblich, die Simulation einmal zu beenden und die Werte U und V für einen zweiten Vergleich neu zu berechnen.
  • Bei dem erweiterten binären GGT-Berechnungsverfahren dieser Ausgestaltung wird die Simulation jedoch selbst in einem solchen Fall fortgesetzt. Dementsprechend kann dieses Verfahren manchmal einen Fehler beim Bestimmen machen, welcher Wert größer ist als der andere. Ein solcher Fehler macht die Werte U und V negativ. (Dies tritt beim Algorithmus L niemals ein.) Indem man jedoch ggT(U, V) = ggT(|U|.|V|) setzt, wird vermieden, dass das erweiterte binäre GGT-Berechnungsverfahren eine falsche Antwort ausgibt. Bei diesem Schema ist bei dem erweiterten binären GGT-Berechnungsverfahren dieser Ausgestaltung die Anzahl der Operationen für gleichzeitige Ausführung im Vergleich mit dem Algorithmus L groß aber die Anzahl der Wiederholungen der Berechnungen mehrfacher Genauigkeit klein: Darüber hinaus erlaubt das Berechungsverfahren dieser Ausgestaltung Berechnungen in Blöcken einer vorbestimmten Anzahl von Bits (w' Bits).
  • Algorithmus zur GGT-Berechnung
  • Um ein besseres Verständnis des erweiterten binären GGT-Berechnungsverfahrens der dritten Ausgestaltung zu unterstützen, wird als erstes eine Beschreibung eines Berechnungsverfahrens gegeben, das verwendet wird, wenn das Prinzip der dritten Ausgestaltung auf eine gewöhnliche binäre GGT-Berechnung angewendet wird.
  • Schritt S1 (Wertinitialisierung für mehrfache Genauigkeit):
    U ← Y; V ← X; S ← 0; T ← 1
  • Schritt S2 (Wertinitialisierung für einfache Genauigkeit):
    i ← max(Größe von V; Größe von U)
    Va ← obere w Bits von V; ua ← obere w Bits von U;
    Vx ← untere w Bits von V; ux ← untere w Bits von U;
    Figure 00270001
  • Wenn i ≤ w, dann geh zum Schritt S5.
  • Schritt S3 (Berechnungsschleife für einfache Genauigkeit): Wiederhole den folgenden Prozess w mal.
    • (1) Wenn ux gerade ist,
      Figure 00270002
    • (2) Wenn vx gerade ist,
      Figure 00270003
    • (3) Wenn vx und ux ungerade sind und wenn ua > va,
      Figure 00270004
    • (4) Wenn vx und ux ungerade sind und wenn ua ≤ va,
      Figure 00280001
  • Schritt S4 (Wertneuberechnung für mehrfache Genauigkeit):
    Figure 00280002
  • Wenn V = 0, dann geh zum Schritt S5, ansonsten geh zum Schritt S2.
  • Schritt S5 (Endverarbeitung):
    Wenn V = 0, dann gebe U aus.
    Wenn V ≠ 0, berechne ggT(U, V) und gib es aus (Berechnung einfache Genauigkeit mit w oder weniger Bits)
  • Gültigkeit des Algorithmus
    • Lemma 1: Wenn der obige Algorithmus anhält, dann gibt er ggT(X, Y) aus.
    • Beweis: Der obige Algorithmus erfüllt immer ggT(U, V) = ggT(X, Y).
  • Dies wird untenstehend mittels Induktion bewiesen.
    • 1. Im Schritt S1 ist ggT(U, V) = ggT(X, Y) erfüllt, weil U = X und V = Y ist.
    • 2. In den Schritten S3 und S4 wird eine Berechnung entsprechend irgendeiner der folgenden Operationen ausgeführt. Wenn U gerade ist: U ← U/2 Wenn V gerade ist: V ← V/2 Wenn U und V beide ungerade sind und U > V: U ← (U-V)/2 Wenn U und V beide ungerade sind und U ≤ V: V ← (V-U)/2 D.h., falls zu Beginn des Schrittes S3 ggT(U, V) = ggT(X, Y) ist, dann ist ggT(U < V) = ggT(X, Y) auch am Ende des Schrittes S4 erfüllt. Hier ist ggT(U, V) = ggT(|U|, |V|).
  • Daher gibt der obige Algorithmus ggT(X, Y) aus, wenn er anhält.
  • Gründe für den Halt des obigen Algorithmus
    • Lemma 2: Wenn w ≥ 4, dann hält der obige Algorithmus in einer endlichen Zeit an.
    • Beweis: Die Werte von U und V werden im Schritt S2 auf U0 bzw. V0 gesetzt, und im Schritt S4 werden U und V als U1 und V1 neu berechnet. Für diese Zeit muss nur die folgende Gleichung bewiesen werden. U0 + V0 > U1 + V1
  • Bei dem obigen Algorithmus nimmt U + V monoton ab, und wenn U + V < 2w erhalten wird, wird der Schritt S5 ausgeführt und der Algorithmus hält an. Die Erfinder können beweisen, dass die obige Gleichung erfüllt ist, es wird aber keine Beschreibung dieses Beweises gegeben.
  • GGT-Berechnungsvorrichtung
  • Als nächstes wird mit Bezug auf die 11 und 12 eine GGT-Berechnungsvorrichtung 1000 beschrieben. In die Vorrichtung 1000 werden über ein Eingabeteil 102 X und Y eingegeben, und über ein Ausgabeteil 102 wird ggT(X, Y) ausgegeben. Die Vorrichtung 1000 umfasst ein GGT-Berechnungsinitialisierungsteil 110, ein GGT-Berechnungssimulationsteil 120, ein GGT-Mehrfachgenauigkeitberechnungsteil 130, ein GGT-Berechnungsendverarbeitungsteil 140, eine Steuereinrichtung 150 und ein Speicherteil 160 und führt Berechnungen aus, wie sie unten beschrieben sind.
  • Schritt S1: Das GGT-Berechnungsinitialisierungsteil 110 führt für die Eingaben X und Y die folgende Operation
    Figure 00290001
    aus, um U und V zu finden, welche z0 maximieren, stellt dann U und V als U0 und V0 der Steuereinrichtung 150 bereit und stellt z0 dem GGT-Berechnungsendverarbeitungsteil 140 über die Steuereinrichtung 150 bereit.
  • Schritt S2: Die Steuereinrichtung 150 überprüft die Eingaben U0 und V0, um zu sehen, ob U0 = 1 oder V0 = 1 ist. Wenn U0 = 1 oder V0 = 1 ist, stellt die Steuereinrichtung 150 U0 und V0 dem GGT-Berechnungsendverarbeitungsteil 140 bereit.
  • Schritt S3: Wenn dem nicht so ist, dann berechnet die Steuereinrichtung 150 den Bitgrößenwert i von derjenigen der Eingaben U0 und V0, welche eine größere Bitgröße hat.
  • Schritt S4: Die Steuereinrichtung 150 macht eine Überprüfung, um zu sehen, ob die Bitgröße i kleiner ist als die w-Bitgröße. Wenn dem so ist, stellt die Steuereinrichtung 150 U0 und V0 dem GGT-Berechnungsendverarbeitungsteil 140 bereit. Wenn die Bitgröße i nicht kleiner ist als die w-Bitgröße, werden die folgenden Werte dem GGT-Berechnungssimulationsteil 120 bereitgestellt:
    va = obere w Bits (i-tes bis (i-w+1)tes Bit) von V0
    ua = obere w Bits (i-tes bis (i-w+1)tes Bit) von U0
    vx = untere w Bits von V0
    ux = untere w Bits von U0,
    und U0 und V0 werden dem GGT-Mehrfachgenauigkeitsberechnungsteil 130 bereitgestellt.
  • Schritt S5: Das GGT-Berechnungssimulationsteil 120 simuliert die GGT-Berechnung, wie sie später mit Bezugnahme auf die 15 und 16 beschrieben wird, unter Verwendung der Werte va, ua, vx und ux, welche den oberen und unteren w Bits von U0 und V0 entsprechen. Die resultierenden Werte uu, uv, vu und vv werden dem GGT-Mehrfachgenauigkeitsberechnungsteil 130 bereitgestellt.
  • Schritt S6: Das GGT-Mehrfachgenauigkeitberechnungsteil 130 berechnet
    U0 ← |uuU0 - uvV0|/2w; V0 ← |vvV0 - vuU0|/2w
    und stellt das Berechnungsergebnis als aktualisierte U0 und V0 der Steuereinrichtung 150 bereit.
  • Schritt S7: Die Steuereinrichtung 150 macht eine Überprüfung, um zu sehen, ob V0 = 0 ist, und kehrt, wenn dem nicht so ist, zum Schritt S3 zurück; wenn V0 = 0 ist, stellt die Steuereinrichtung 150 U0 und V0 dem GGT-Berechnungsendverarbeitungsteil 140 bereit.
  • Schritt S8: Das GGT-Berechnungsendverarbeitungsteil 140 berechnet 2Z0ggT(U0, V0) aus den Eingaben U0, V0 und z0 und gibt es aus. Wenn V0 = 0 ist, wird 2Z0ggT(U0, 0) = U02Z0 ausgegeben.
  • Dementsprechend umfasst die Steuereinrichtung 150: Anfangsentscheidungsmittel 1-20 zum Machen einer Überprüfung, um zu sehen, ob U0 = 1 oder V0 = 1 ist; ein Bitgrößenerfassungsmittel 1-30 zum Erfassen des Bitgrößenwertes i von derjenigen der Eingaben V0 und U0, welche eine größere Bitgröße hat; ein Bitgrößenüberprüfungsmittel 1-40 zum Machen einer Überprüfung, um zu sehen, ob die Bitgröße kleiner als w ist; ein Endentscheidungsmittel 1-70 zum Ausführen einer Überprüfung, um zu sehen, ob V0 = 0 ist und Bitextrahiermittel 1-47 zum Extrahieren der oberen und unteren w Bits aus der Eingabe V0 und U0 im Schritt S4. Darüber hinaus ist die GGT-Berechnungsvorrichtung 1000 mit einem Speicherteil 160 zum Speichern verschiedener Teile von Daten und von für Berechnungen, Steuerung usw. notwendigen Daten ausgestattet.
  • GGT-Berechnungsinitialisierunpsteil 110
  • Bezugnehmend auf die 13 und 14 wird untenstehend der Betrieb des GGT-Berechnungsinitialisierungsteils 110 beschrieben.
  • Schritt S1: Vorwärtszählteile 111 und 112 zählen die Anzahl von Nullen jeweils von den letzten signifikanten Bits der Eingaben X und Y an und geben die Zählwerte x0 und y0 an das Vergleichsteil 113 aus. (Wenn z.B. die binäre Darstellung der Eingabe 101000 ist, ist die Ausgabe 3.)
  • Schritt S2: Das Vergleichsteil 113 vergleicht die Eingabewerte x0 und y0 und gibt den kleineren als z0 aus.
  • Schritt S3: Zweierpotenz-Dividierteile 114 und 115 werden mit den Eingaben X und Y und z0 versorgt und teilen die Eingabewerte X und Y durch 2Z0 und geben die Divisionsergebnisse U0 und V0 aus. Das GGT-Berechnungsinitialisierungsteil 110 gibt U0, V0 und z0 aus.
  • GGT-Berechnungssimulationsteil 120
  • Als nächstes wird mit Bezug auf die 15 und 16 untenstehend der Betrieb des GGT-Berech nungssimulationsteiles 120 beschrieben.
  • Schritt S1: Nach Eingeben der Werte va, ua, vx und ux von der Steuereinrichtung 150 in ein Steuerteil 121 sendet ein Speicher 122 vorbestimmte Anfangswerte von uu, uv, vu und vv und c and das Steuerteil 121.
  • Schritt S2: Wenn es mit den Daten α = {va, ua, vx, ux, uu, uv, vv, vv, c} versorgt ist, macht das Steuerteil 121 eine Überprüfung, um zu sehen, ob ux gerade ist. Wenn dem so ist, sendet das Steuerteil 121 die Daten α = {va, ua, vx, ux, uu, uv, vu, vv, c} an eine Fall-1-Einheit 123.
  • Schritt S3: Wenn ux gerade ist, führt die Fall-1-Einheit 123 die folgenden Berechnungen aus:
    ua ← [ua/2]; ux ← ux/2
    vu ← 2vu; vv ← 2vv
    und sendet die Daten α' = {va, ua, vx, ux, uu, uv, vu, vv, c} an das Steuerteil 121.
  • Schritt S4: Wenn ux nicht gerade ist, macht das Steuerteil 121 eine Überprüfung um zu sehen, ob vx gerade ist. Wenn dem so ist, sendet das Steuerteil 121 die Daten α = {va, ua, vx, ux, uu, uv, vu, vv, c} an eine Fall-2-Einheit 124.
  • Schritt S5: Wenn ux ungerade ist und vx gerade ist, führt die Fall-2-Einheit 124 die folgenden Berechnungen durch:
    Va ← [va/2]; vx ← vx/2
    uu ← 2uu; uv ← 2uv
    und sendet die Daten α' = {va, ua, vx, ux, uu, uv, vu, vv, c} an das Steuerteil 121.
  • Schritt S6: Wenn ux und vx beide ungerade sind, vergleicht das Steuerteil 121 ua und va. Wenn ua > va ist, dann sendet das Steuerteil 121 die Daten α = {va, ua, vx, ux, uu, uv, vu, vv, c} an eine Fall-3 Einheit 125. Wenn ux und vx beide ungerade sind und ua ≤ va ist, dann sendet das Steuerteil 121 die Daten α = {va, ua, vx, ux, uu, uv, vu, vv, c} an eine Fall-4-Einheit 126.
  • Schritt S7: Wenn ux und vx beide ungerade sind und ua > va ist, führt die Fall-3-Einheit 125 die folgenden Berechnungen aus:
    ua ← [ua - va}/2]; ux ← {ux - vX)/2
    uu ← uu + vu; uv ← uv + vv
    vu ← 2vu; vv ← 2vv
    und sendet die Daten α' = {va, ua, vx, ux, uu, uv, vu, vv, c} an das Steuerteil 121.
  • Schritt S8: Wenn ux und vx beide ungerade sind und ua ≤ va ist, führt die Fall-4 Einheit 126 die folgenden Berechnungen aus:
    ua ← [{va - ua}/2]; vx ← {vx - ux)/2
    vu ← vu + uu; vv ← vv + uv
    uu ← 2uu; uv ← 2uv
    und sendet die Daten α = {va, ua, vx, ux, uu, uv, vu, vv, c} an das Steuerteil 121.
  • Schritt S9: Wenn die Daten α in irgendeiner der Fall-1- bis Fall-4-Einheiten 123 bis 126 verarbeitet werden und als α' an das Steuerteil 121 zurückgegeben werden, was den Wert von c um Eins inkrementiert.
  • Schritt S10: Das Steuerteil 121 vergleicht die Werte c und w' und kehrt, wenn c < w' ist, zum Schritt S2 zurück. Wenn c = w' ist, stellt das GGT-Berechnungssimulationsteil 120 {uu, uv, vu, vv} dem GGT-Mehrfachgenauigkeitsberechnungsteil 130 bereit.
  • Das Steuerteil 121 ist ausgestattet mit: Zustandsentscheidungsmitteln 6-21 zum Entscheiden, welche der Falleinheiten 123-136 Verarbeitung gemäß den Zuständen der Eingabewerte ux, vx, ua und va ausführen soll; Verarbeitungsergebnisspeichermittel 6-22 zum Speichern der Verarbeitungsergebnisse von den Fall-1- bis Fall-4-Einheiten 123-126; Zählmittel 6-23 zum Zählen der Zahl c der Wiederholungen der Verarbeitung; und Verarbeitungsendentscheidungsmittel 6-24 zum Entscheiden, ob die Verarbeitung beendet werden soll, d.h., zum Entscheiden, ob c = w' ist oder nicht.
  • Das GGT-Berechnungssimulationsteil 120 bestimmt, ob U0 und V0 gerade sind oder nicht, basierend auf den Werten ux und vx von deren unteren w Bits und vergleicht U0 und V0, um basierend auf den Werten ua und va von deren oberen w Bits zu bestimmen, welches von ihnen größer ist. Basierend auf solchen Bestimmungsergebnissen führt das GGT-Berechnungssimulationsteil 120 denselben Prozess aus, wie es der gewöhnliche binäre GGT-Algorithmus macht. Dies kann aus einem Vergleich zwischen dem Ablauf der 16 und dem Ablauf des gewöhnlichen binären GGT-Algorithmus, der in 10 dargestellt ist, vollständig verstanden werden. Darüber hinaus dient das GGT-Berechnungssimulationsteil 120 zum Berechnen von uu, uv, vv, und vv, welche die folgende Gleichung erfüllen: ggT(U0, V0) = ggT(|uuU0 - uvV0|/2w', |vvV0 - vuU0|/2w') (37)
  • GGT-Mehrfachgenauigkeitsberechnungsteil 130
  • Mit Bezug auf 17 wird als Nächstes die Betriebsweise des GGT-Mehrfachgenauigkeitberechnungsteils 130 untenstehend beschrieben.
  • In 17 wird das GGT-Mehrfachgenauigkeitsberechnungsteil 130 mit U0 und V0 von dem Steuergerät 150 und uu, uv, vu, und vv von dem GGT-Berechnungssimulationsteil 120 versorgt. Multiplizierer 13a bis 13d berechnen Produkte uuU0, uvVv, vuU0 bzw. vvV0 und geben sie aus.
  • Subtrahierer 13e und 13f berechnen Differenzen U1 = uuU0 - uuV0 und V1 = vvV0 - vuU0 und geben sie an Absolutwertberechner 13g und 13h aus.
  • Die Absolutwertberechner 13g und 13h berechnen absolute Werte der Eingaben U1 und V1 und geben sie an Zweierpotenz-Dividierer 13i bzw. 13j aus.
  • Die Dividierer 13i und 13j berechnen Divisionen der Eingaben |U1| und |V1| durch die Potenz 2w' und stellen die Divisionsergebnisse als Ausgaben U0 und v0 von dem Mehrfachgenauigkeitsberechnungsteil 130 bereit.
  • Die Prozesse des GGT-Mehrfachgenauigkeitsberechnungsteils 130, die in 17 dargestellt sind, sind unten aufgelistet.
  • Schritt S1: Berechne V1 = (-vuU0 + vvV0)/2w' U1 = (uuU0 - uvV0)/2w'
  • Schritt S2: V1 ← |V1|; U1 ← |U1|
  • Schritt S3: V0 ← V1; U0 ← U1
  • In 17 geht der Division durch 2w' die Berechnung des absoluten Wertes voraus, die letztere kann aber auch der ersteren nachfolgen, wie oben im Schritt S1 erwähnt. Die Ausgaben U0 und V0 von dem GGT-Mehrfachgenauigkeitsberechnungsteil 130 werden in die Steuereinrichtung 150 eingegeben, in welcher eine Überprüfung gemacht wird, um zu sehen, ob V0 = 0 ist, wie zuvor mit Bezugnahme auf die 12 beschrieben wurde.
  • GGT-Berechnungsendverarbeitungsteil 140
  • Als Nächstes wird mit Bezug auf die 18 der Betrieb des GGT-Berechnungsendverarbeitungsteils 140 untenstehend beschrieben.
  • Das GGT-Berechnungsendverarbeitungsteil 140 wird mit U0 und V0 von dem Steuergerät 150 und z0 von dem Initialisierungsteil 110 versorgt. Ein Kleinzahl-GGT-Berechnungsteil 141 berechnet den GGT der Eingaben U0 und V0 und stellt ihn einem Zweierpotenz-Multiplikationsteil 142 bereit. Das Multiplikationsteil 142 verwendet die Eingaben ggT(U0, V0) und z0 um 2z0ggT(U0, V0) zu berechnen, und stellt es als die Ausgabe von dem Endverarbeitungsteil 140 bereit, d.h., die Ausgabe der GGT-Berechnungsvorrichtung 1000.
  • Die Berechnungsprozedur des GGT-Berechnungsendverarbeitungsteils 140 ist im Grunde identisch mit derjenigen des konventionellen binären GGT-Berechnungsverfahrens der 10, abgesehen von der Korrektur durch Multiplikation mit 2Z0 im letzten Schritt S10, wie in 19 dargestellt. Genauer sind die Schritte S1 bis S9 in der 19 dieselben wie die Prozesse für ux, uu, vx, vu und vv in den Schritten S1 bis S9 in der 16.
  • Auf die oben beschriebene Weise kann der größte gemeinsame Teiler für die Eingaben X und Y erhalten werden. Zusätzlich dazu werden alle Berechnungen außer denen im GGT-Berechnungsendverarbeitungsteil 140 in Einheiten von w und w' Bits ausgeführt; daher kann der größte gemeinsame Teiler mit einer kleinen Zahl von Prozessen als Ganzes berechnet werden. Wie aus der vorhergehend gegebenen Beschreibung mit Bezugnahme auf die 11 und 12 verstanden wird, werden die jeweiligen Teile in der 11 sequentiell verarbeitet und dementsprechend wird das GGT-Berechnungssimulationsteil 120 in der 15 nur zur bequemeren Beschreibung so gezeigt, dass es mit dem Steuerteil 121 versorgt ist. Das Steuerteil 121 muss in der Praxis nicht vorgesehen sein. Die Steuereinrichtung 150 in der 11 kann zum Ausführen der Steuerfunktionen des Steuerteiles 121 als auch zum Steuern von anderen Teilen verwendet werden. Die Speicher in den jeweiligen Teilen müssen ebenfalls nicht notwendigerweise vorgesehen sein; das Speicherteil 160 in der 11 kann als ein Ersatz für sie verwendet werden, um Daten zu speichern, die zum Verarbeiten in den jeweiligen Teilen notwendig sind.
  • Erweitere binäre GGT-Berechnungsvorrichtung 2000
  • Als nächstes wird mit Bezug auf die 20 untenstehend eine erweiterte binäre GGT-Berechnungsvorrichtung 2000 beschrieben. Die Vorrichtung 2000 wird mit Eingaben X und Y versorgt, und gibt ggT(X, Y), S = 2kX-1 mod Y und k aus.
  • Die Vorrichtung 2000 umfasst ein erweitertes binäres GGT-Berechnungsinitialisierungsteil 210, ein erweitertes GGT-Berechnungssimulationsteil 220, ein erweitertes GGT-Mehrfachgenauigkeitsberechnungsteil 230, ein erweitertes GGT-Berechnungsendverarbeitungsteil 240 und eine Steuereinrichtung 250. Die Berechnungsvorrichtung 2000 führt die folgenden Berechnungen wie in 21 dargestellt aus.
  • Schritt S1: Das erweiterte GGT-Berechnungsinitialisierungsteil 210 führt für Eingaben X und Y die folgende Berechnung aus
    Figure 00340001
    um U0 und V0 zu finden, welche z0 maximieren. Das erweiterte GGT-Berechnungsinitialisierungsteil 210 stellt die so erhaltenen U0 und V0 dem Steuergerät 250 zusammen mit Anfangswerten S0 = 0, T0 = 1 und k = 0 von S, T und k bereit und stellt z0 dem erweiterten GGT-Berechnungsendverarbeitungsteil 240 durch die Steuereinrichtung 250 bereit.
  • Schritt S2: Das Steuergerät 250 überprüft die Eingaben U0, V0, S0, T0 und k, um zu sehen, ob U0 = 1 oder V0 = 1 ist. Wenn U0 = 1 oder V0 = 1 ist, dann stellt die Steuereinrichtung 250 U0, V0, S0, T0 und k dem erweiterten GGT-Berechnungsendverarbeitungsteil 240 bereit.
  • Schritt S3: Wenn dem nicht so ist, berechnet die Steuereinrichtung 250 für die Eingaben U0, v0, S0, T0 und k den Bitgrößenwert i von derjenigen der Eingaben U0, V0, welche die größere Bitgröße hat.
  • Schritt S4: Das Steuergerät 250 macht eine Überprüfung, um zu sehen, ob die Bitgröße i kleiner ist als die w-Bitgröße. Wenn dem so ist, stellt das Steuergerät 250 U0, V0, S0, T0 und k dem erweiterten GGT-Berechnungsendverarbeitungsteil 240 bereit. Wenn die Bitgröße i nicht kleiner ist als die w-Bitgröße, werden die folgenden Werte dem erweiterten GGT-Berechnungssimulationsteil 220 bereitgestellt:
    va = obere w Bits (i-tes bis (i-w + 1)tes Bit) von V0
    ua = obere w Bits (i-tes bis (i-w + 1)tes Bit) von U0
    vx = untere w Bits von V0
    ux = untere w Bits von U0,
    und U0, V0, S0, T0 und k werden dem erweiterten GGT-Mehrfachgenauigkeitsberechnungsteil 230 bereitgestellt.
  • Schritt S5: Das erweiterte GGT-Berechnungssimulationsteil 220 simuliert eine erweiterte GGT-Berechnung, indem es die Werte va, ua, vx und ux verwendet, welche den oberen und unteren w Bits der Eingaben U0 und V0 entsprechen. Die resultierenden Werte uu, uv, vu und vv werden dem erweiterten GGT-Mehrfachgenauigkeitsberechnungsteil 230 bereitgestellt.
  • Schritt S6: Das erweiterte GGT-Mehrfachgenauigkeitsberechnungsteil 230 führt die folgenden Operationen, wie sie später mit Bezug auf die 22 beschrieben werden, aus. U' = (uuU0 - uvV0)/2w' V' = (vvV0 - vuU0)/2w' S' = uuS0 + uvT0 T' = vvT0 + vuS0
  • Wenn V' negativ ist, dann werden die Vorzeichen von V' und T' gewechselt, und wenn U' negativ ist, dann werden die Vorzeichen von U' und S' gewechselt. Die Werte U', V', S' und T', die durch die obigen Operationen erhalten werden, werden als U0, V0, S0 und T0 dem Steuergerät 250 bereitgestellt.
  • Schritt S7: Die Steuereinrichtung 250 macht eine Überprüfung um zu sehen, ob V0 = 0 ist, und kehrt, wenn dem nicht so ist, zum Schritt S3 zurück. Wenn V0 = 0 ist, geht die Steuereinrichtung 250 zur Verarbeitung des erweiterten GGT-Berechnungsendverarbeitungsteils 240 über.
  • Schritt S8: Wenn V0 ≠ 0 ist, berechnet das erweiterte GGT-Berechnungsendverarbeitungsteil 240 2Z0ggT(U0, V0) aus den Eingaben U0, V0 und z0 und gibt es aus. Wenn V0 = 0 ist, berechnet das erweiterte GGT-Berechnungsendverarbeitungsteil 240 S und k, welche S = 2kX-1 mod Y erfüllen, und gibt sie aus.
  • Obwohl in 2 nicht im Einzelnen gezeigt, ist diese erweiterte GGT-Berechnungsvorrichtung 2000 auch mit Mitteln entsprechend dem Anfangsentscheidungsmittel 1-20, dem Bitgrößenerfassungsmittel 1-30, dem Bitgrößenüberprüfungsmittel 1-40, dem Bitextrahiermittel 1-41, dem Endentscheidungsmittel 1-70 und dem Speicherteil 160 versehen, die alle in 11 dargestellt sind.
  • Das erweiterte GGT-Berechnungsinitialisierungsteil 210 hat die funktionale Konfiguration der 13 und führt die in 14 dargestellten Prozesse wie im Fall des GGT-Berechnungsinitialisierungsteils 110 in der 11 aus; das Initialisierungsteil 210 unterscheidet sich aber dadurch, dass es dem Steuergerät 250 die Anfangswerte S0 = 0, T0 = 1 und k = 0 von S, T und k bereitstellt, die in dem Speicher gespeichert sind.
  • Das erweiterte GGT-Berechnungssimulationsteil 220 hat im Wesentlichen dieselbe funktionale Konfiguration wie das GGT-Berechnungssimulationsteil 120, das in 15 dargestellt ist, und führt im Wesentlichen dieselben Prozesse wie das in 16 gezeigte aus, unterscheidet sich aber im Prozess des Inkrementierens des Wertes k um 1, wie er in Schritt S9 in der 16 in Klammern gesetzt ist. D.h., dass das Simulationsteil 220 den Wert k+w zusammen mit dessen berechneten Werten uu, uv, vu und vv ausgibt. Dementsprechend ist das Steuerteil des erweiterten GGT-Berechnungssimulationsteils 220 mit Mitteln zum Zählen von k ausgestattet. Es ist auch möglich, k + w = k bereitzustellen, wenn c = w im Schritt S10 ist, anstatt k im Schritt S9 um Eins zu inkrementieren.
  • Erweitertes GGT-Mehrfachgenauigkeitsberechnungsteil 230
  • Mit Bezug nun auf die 22 und 23 wird unten die Betriebsweise des erweiterten GGT-Mehrfachgenauigkeitsberechnungsteils 230 beschrieben.
  • Das Berechnungsteil 230 wird mit U0, V0, S0 und T0 von dem Steuergerät 250 und uu, uv, vu und vv von dem erweiterten GGT-Berechnungssimulationsteil 220 in der 20 versorgt.
  • Multiplizierer 23a bis 23h berechnen die Produkte uuU0, uvU0, vvV0, uvS0, uvT0, vuS0 bzw. vvT0 und geben sie aus.
  • Subtrahierer 23i und 23j berechnen Differenzen U' = uuU0 - uvV0 bzw. V' = vuV0 - uvU0 und geben sie aus.
  • Addierer 23k und 231 berechnen Summen S' = uuS0 + uvT0 bzw. T' = vvT0 + vuS0 und geben sie aus.
  • Ein Steuerteil 23m wird mit der Differenz U' und der Summe S' versorgt, und wenn U' < 0 ist, gibt es U' und S' an einen Vorzeicheninvertierer 23o aus und empfängt von ihm U' und -S' als neue Eingaben U'' und S''. Wenn U' ≥ 0 ist, dann gibt das Steuerteil 23m U' an einen Zweierpotenz-Dividierer 23q aus und gibt S' als S0 von dem Berechnungsteil 230 aus.
  • Ein Steuerteil 23n wird mit der Differenz V' und der Summe T' versorgt, und es gibt, wenn V' < 0 ist, U' und S' an einen Vorzeicheninvertierer 23p aus und empfängt von ihm -V' und -T' als neue Eingaben V'' und T''. Wenn V' ≥ 0 ist, dann gibt das Steuerteil 23n V' an einen Zweierpotenz-Dividierer 23r aus und gibt T' als T0 von dem Berechnungsteil 230 aus.
  • Der Dividierer 23q berechnet einen Quotienten U1 durch 2w' der Eingabe U' und stellt ihn als eine Ausgabe U0 des Berechnungsteils 230 bereit. Der Dividierer 23r berechnet auf ähnliche Weise einen Quotienten V1 durch 2w' der Eingabe V' und stellt ihn als eine Ausgabe V0 des Berechnungsteils 230 bereit.
  • Unten sind die oben beschriebenen Prozesse des erweiterten GGT-Mehrfachgenauigkeitsberechnungsteils 230 aufgelistet.
  • Schritt S1: Berechne V1 = (-vuU0 + uvV0)/2w' U1 = (-uuU0 + uvV0)/2w' S1 = (uuS0 + uvT0) T1 = (vuS0 + vvT0)
  • Schritt S2: Bestimme, ob V1 kleiner ist als 0 ist, und wenn nicht, gehe zu Schritt S4.
  • Schritt S3: Wenn V1 kleiner ist als 0, ändere das Vorzeichen S von V1 und T1 durch V1 ← V1 und T1 ← T1.
  • Schritt S4: Bestimme, ob U1 kleiner ist als 0, und wenn nicht, gehe zu Schritt S6.
  • Schritt S5: Wenn U1 kleiner ist als 0, ändere die Vorzeichen von U1 und S1 durch U1 ← U1 und S1 ← S1.
  • Schritt S6: Gib die so erhaltenen Werte V1, U1, S1 und T1 als aktualisierte V0, U0, S0 und T0 aus.
  • Die Ausgabe vom erweiterten GGT-Mehrfachgenauigkeitsberechnungsteil 230 wird in das Steuergerät 250 eingegeben.
  • Erweitertes GGT-Berechnungsendverarbeitungsteil 240
  • Das erweiterte GGT-Berechnungsendverarbeitungsteil 240 hat im Wesentlichen dieselbe funktionale Konfiguration wie das Endverarbeitungsteil 140, das in 18 dargestellt ist. Wie im Falle des Verarbeitungsteils 140 berechnet das Verarbeitungsteil 240 ggT(U, V) unter Verwendung der Eingaben U0 und V0 als Anfangswerte, berechnet dann ggT(U, V) unter Verwendung des Berechnungsergebnisses ggT(U, V) und von z0 und gibt es aus. Das Verarbeitungsteil 240 unterscheidet sich vom Verarbeitungsteil 140 durch die unten beschriebenen Prozesse. Das Endverarbeitungsteil 240 wird mit S0, T0 und auch k versorgt, und es führt, wie 24 für einen Teil der GGT-Berechnungsprozedur der 19 zeigt, einen Schritt S8-1 des Inkrementierens des Wertes k um Eins nach den Schritten S3, S5, S7 und S8 aus und geht zum Schritt S9. Wenn im Schritt S9 vx = 0 ist, wird im Schritt S9-1 S = (uuS0 + uvT0) berechnet, und die Berechnungsergebnisse S und k werden ausgegeben. Das Berechnungsergebnis S stimmt mit demjenigen von S = 2kX-1 mod Y überein.
  • Wie im Falle der GGT-Berechnungsvorrichtung 1000 erlaubt die erweiterte GGT-Berechnungsvorrichtung 2000 die Ausführung der Berechnungsprozesse ihrer jeweiligen Teile unter der Steuerung einer Steuereinrichtung 250. Diese Berechnungsprozesse können auch unter Programmsteuerung ausgeführt werden. Diese führt für jeden Prozess die Schritte des Auslesens notwendiger Daten aus Speichermitteln, Abrufen zeitweilig gespeicherter Daten aus einem Puffer, Schreiben von Berechnungsergebnissen in Speichermittel, zeitweiliges Speichern derselben in einem Puffer usw. aus. Diese Ausgestaltung ist eingerichtet, um ggT(X, Y)
    Figure 00370001
    ux auszugeben, wenn die Eingaben X und Y beide gerade sind, und S und k, wenn entweder X oder Y ungerade und ggT(X, Y) = 1 ist. Daher kann das erweiterte GGT-Berechnungsinitialisierungsteil 210 derart modifiziert sein, dass es zuerst bestimmt, welche der Eingaben X und Y ungerade ist, und, wenn ungerade, z0 nicht berechnet, sondern stattdessen w, S0 = 0, T0 = 1 und k = 0 unter Verwendung von X als U0 und Y als V0 ausgibt. Ein Modulo-Kehrwert kann jedoch nicht erhalten werden, wenn nicht eine der Eingaben X und Y ungerade ist. D.h., wenn es vorab bekannt ist, dass irgendeiner der Eingabewerte ungerade ist, braucht das erweiterte GGT-Berechnungsinitialisierungsteil 210 nur U0 = X, V0 = Y, S0 = 0, T0 = 1 und k = 0 zu initialisieren; es muss nämlich nur X als U0 und Y als V0 verwenden, und S0 = 0, T0 = 1 und k = 0 aus einem Speicher auslesen und sie ausgeben.
  • Während in dem Obigen die Anzahl der Bits, die zur selben Zeit berechnet werden können, durch w und w' bezeichnet worden ist, können die Mengen w' gleichzeitiger Operationen im Simulationsteil (120, 220) und w im Mehrfachgenauigkeitsberechnungsteil (130, 230) gleich gewählt werden.
  • Wie zuvor angedeutet, kann die erweiterte binäre GGT-Berechnungsvorrichtung mit einer Zweierpotenz-Dividiereinrichtung zu einer Vorrichtung zur Kehrwertberechnung auf Z/NZ kombiniert sein. 25 zeigt in Blockdarstellung eine herkömmliche Kehrwertberechnungsvorrichtung, die in der erweiterten binären GGT-Berechnungsvorrichtung der dritten Ausgestaltung der vorliegenden Erfindung verwendet wird. Wie in 25 dargestellt, werden ganze Zahlen X und N in die Vorrichtung eingegeben, die allgemein mit 3000 bezeichnet ist, in welcher die erweiterte binäre GGT-Berechnungsvorrichtung 315, die zuvor mit Bezugnahme auf die 20 beschrieben worden ist, eine erweiterte binäre GGT-Berechnung ausführt und S = X-12k mod N und k ausgibt. Die Ausgaben S und k werden in eine Zweierpotenz-Dividiereinrichtung 318 auf dem Ring Z/NZ eingegeben, welche S2-k mod N berechnet, und von welcher X-1 mod N, d.h. das Ergebnis der Kehrwertberechnung von X auf dem Ring Z/NZ erhalten wird.
  • In 26 ist eine Kehrwertberechnungsvorrichtung 3100 dargestellt, welche das erweiterte GGT-Berechnungsverfahren der dritten Ausgestaltung der Erfindung auf die Kalishi- Kehrwertberechnung anwendet. Die ganzen Zahlen X und N werden in die Vorrichtung 3100 eingegeben, in welcher die erweiterte GGT-Berechnungsvorrichtung 315, die zuvor mit Bezug auf die 20 beschrieben worden ist, eine Berechnung für die Eingaben X und N ausführt und S = X-12k mod N und k ausgibt. Die Berechnungsergebnisse S und k und die Eingabe N werden einer Zweierpotenz-Dividiereinrichtung 320 auf dem Ring Z/NZ bereitgestellt, welche S2-(k-n) mod N berechnet (wobei n die Anzahl der Bits der Eingabe N ist), und von welcher X-12n mod N als das Berechnungsergebnis bereitgestellt wird.
  • In 27 ist in Blockform eine Kehrwertberechnungsvorrichtung 3200 gezeigt, welche das erweiterte binäre GGT-Berechnungsverfahren der dritten Ausgestaltung auf die Montgomery-Kehrwertberechnung auf Z/NZ anwendet. Wie gezeigt, berechnet die erweiterte GGT-Berechnungsvorrichtung 315 S = X-12k mod N und k für die eingebebenen ganzen Zahlen X und N, und eine Zweierpotenz-Multiplikationseinrichtung 325 auf Z/NZ berechnet S22n-k mod N unter Verwendung der Berechnungsergebnisse S und k und stellt X-12n mod N bereit.
  • In 28 ist im Blockformat eine Modulo-Kehrwertberechnungsvorrichtung 5000 gezeigt, welche das erweiterte GGT-Berechnungsverfahren der dritten Ausgestaltung auf das Montgomery-Kehrwertberechnungsverfahren auf Z/NZ gemäß der ersten Ausgestaltung der Erfindung anwendet. Wie in der 28 dargestellt, berechnet eine Zweierpotenz-Dividiereinrichtung 515 unter der Steuerung eines Steuerteils 510 auf dem Ring Z/NZ X' = X2-1 mod N, und für deren Berechnungsergebnis X' und die Eingabe N berechnet eine erweiterte GGT-Berechnungseinrichtung 515 S = X-12k mod N und k. Das Berechnungsergebnis X' entspricht dem Y in den 1 und 2. Diese Werte S und k werden in eine Vergleichseinrichtung 517 eingegeben, welche die Bitlänge n der Eingabe N, k und t verwendet, um zu bestimmen, ob 2n-k-t positiv oder negativ ist. Wenn es negativ ist, dann werden k' = 2n + k + t und S' = S in eine Zweierpotenz-Dividiereinrichtung 518A auf dem Ring Z/NZ eingegeben, um T = S'2-k' mod N zu berechnen. Wenn 2n-k-t positiv ist, dann werden k' = 2n - k - t und S' = S in eine Zweierpotenz-Multiplikationseinrichtung 518B auf dem Ring Z/NZ eingegeben, um T = S'2k' mod N zu berechnen. Ein Ausgabeteil 519 gibt T von der Dividiereinrichtung 518A oder der Multiplikationseinrichtung 518B als das Berechnungsergebnis von X-122n mod N aus.
  • Als nächstes wird unter Bezugnahme auf die 29 eine Beschreibung der tatsächlichen Verwendung eines Programms für die Modulo-Kehrwertberechnung gemäß der vorliegenden Kehrwertberechnung, die oben beschrieben ist, gegeben. Das Programm wird z.B. in einem Hauptspeicher 13 in einer arithmetischen Einheit 10A gespeichert. Die arithmetische Einheit 10A ist z.B. durch einen Computer implementiert und ist aus einer CPU 11, einem RAM 12 und dem Hauptspeicher 13 aufgebaut. Eine Tastatur 14 und eine Anzeigeeinheit 15 sind an die arithmetische Einheit 10A angebunden. In dem Fall, wenn z.B. ein 16-Bit-Chipsatz, welcher eine Operation in einer Einheit von 16 Bits zur selben Zeit ausführt, als die CPU 11 verwendet wird, ist es bevorzugt, dass Zweierpotenz-Multiplikation und Zweierpotenz-Division in Einheiten von 16 Bits ausgeführt werden, wie oben mit Bezug auf die Ausgestaltungen der vorliegenden Erfindung beschrieben ist.
  • Die CPU 11 führt die Modulo-Kehrwertberechnung dem Betriebsprogramm folgend aus, das in dem Hauptspeicher 13 gespeichert ist. Der RAM 12 speichert verschiedene Parameter und Variablen, die für die Modulo-Kehrwertberechnung notwendig sind, sowie Zwischen- und Endergebnisse des Betriebs. Ein Benutzer A gibt einen Programmausführungsbefehl von der Tastatur 14 aus ein, und der Fortschritt des Betriebs wird auf der Anzeigeeinheit 15 angezeigt.
  • Nun wird das Verfahren der Modulo-Kehrwertberechnung gemäß der vorliegenden Erfindung in Anwendung auf das digitale Unterschriftenschema, welches eine der Informationssicherheitstechniken ist, beschrieben. Die arithmetische Einheit 10A des Benutzers A ist an eine arithmetische Einheit 10B eines Benutzers B, z.B. über ein Netzwerk NW, angebunden. Der Benutzer A sendet eine Nachricht m, die mit einer digitalen Signatur S versehen ist, an die arithmetische Einheit 10B des Benutzers B, die die Gültigkeit der Unterschrift S, die an der empfangenen Nachricht m angehängt ist, überprüft. Dieses Beispiel wird unter der Annahme beschrieben, dass das zuvor erwähnte digitale ESGN-Unterschriftensystem verwendet wird. Bei diesem Beispiel benutzen die Benutzer A und B gemeinsam einen öffentlichen Schlüssel n und einen Systemparameter k, und der Benutzer A auf der Sendeseite hält geheime Schlüssel p und q geheim, die Primzahlen sind, wobei n = pq ist.
  • Ein Programm 13P zum Ausführen des digitalen ESGN-Unterschriftensystems ist im Hauptspeicher 13 gespeichert. Das Programm 13P umfasst ein Unterprogramm 13PP, das verwendet wird, um gemäß der vorliegenden Erfindung Gleichung (b-1) zu berechnen, welche die Berechnung des Modulo-Kehrwerts umfasst, der in einem Prozess der digitalen Unterschriftenerzeugung verwendet wird.
  • Zu Beginn erzeugt die arithmetische Einheit 10A des Benutzers A eine Zufallszahl x, setzt dann die Nachricht m in eine Hash-Funktion ein, um h(m) zu erzeugen, und führt die folgende Berechnung aus: w = [{h(m) - xk mod n}/pq (39)
  • Danach wird die folgende Berechnung ausgeführt: S = x + {w/(kxk-1)mod p}pq (40)w/(kxk-1) mod p in der Gleichung (40) ist dasselbe wie der Modulo-Kehrwert, der zuvor mit Bezug auf Gleichung (b-1) beschrieben wurde. Wenn man daher y = w/(kxk-1)-1 mod p = wX-1 mod p (41)wie zuvor beschrieben ausdrückt, kann der Wert y über den Modulo-Kehrwertberechnungsablauf, der in 1 dargestellt ist, erhalten werden. Der so erhaltene Wert y wird verwendet, um S = x + ypq (42)zu berechnen, und (S, m) wird an die arithmetische Einheit 10B des Benutzers B gesendet.
  • Die arithmetische Einheit 10B des Benutzers B verwendet die empfangene Unterschrift S und die Nachricht m, um zu verifizieren, ob die folgende Gleichung erfüllt ist: Sk - 2a ≤ h(m) ≤ Sk, wobei a = [(2/3)log2n] (43)
  • Wenn die obige Gleichung erfüllt ist, dann wird erkannt, dass die Unterschrift S, die der Nachricht m angehängt ist, wahr oder gültig ist.
  • Während in dem Obigen das Programm zum Ausführen der Modulo-Kehrwertberechnung so beschrieben wurde, dass es im Hauptspeicher 13 der arithmetischen Einheit gespeichert ist, welcher als ein Aufzeichnungsmedium benutzt wird, ist es offensichtlich, dass das Programm in irgendeinem anderen Typ von Aufzeichnungsmedium gespeichert sein kann.
  • WIRKUNGEN DER ERFINDUNG
  • Wie oben beschrieben, sind die herkömmlichen Verfahren zur Berechnung der Montgomery-Kehrwertberechnung durch Verwendung des erweiterten binären GGT-Algorithmus das Verfahren 1, welches zeitaufwendige Zweierpotenz-Multiplikationen erfordert, und das Verfahren 2, welches nur Zweierpotenz-Divisionen mit sich bringt, aber insofern ein Defizit hat, als die Anzahl der Wiederholungen von elementaren Operationen im Schnitt 2, 3 mal größer ist als im Verfahren 1.
  • Die vorliegende Erfindung ermöglicht eine Berechnung, welche die Vorteile von beiden Verfahren 1 und 2 hat, durch Vorhersagen der Wiederholungszahl der Schleife für die erweiterte binäre GGT-Berechnung.
  • Mit der vorliegenden Erfindung ist es möglich, z.B. eine 256-Bit-Montgomery-Kehrwertberechriung ungefähr 40% schneller als durch das gewöhnliche Verfahren 2 (außer der binären GGT-Berech nung) zu machen.
  • Gemäß der zweiten Ausgestaltung erlaubt bei der Multiplikation und Division für die Modulo-Kehrwertberechnung das Kombinieren von w-Bit-Berechnungen (wobei w die Anzahl der Bits ist, die der Computer zur gleichen Zeit bearbeiten kann, z.B. 8, 16, 32, usw.) die Reduktion von großen ganzzahligen Berechnungen mit einer Rate, die proportional zu 1/w ist, was die Erhöhung der Geschwindigkeit der Multiplikation und der Division auf Z/NZ um 2k erlaubt.
  • Dies bringt solche Effekte, wie sie unten erwähnt sind, mit sich. Die gewöhnlichen Verfahren führen im Schnitt für n-Bit-Eingaben S und N eine Mehrfache-Genauigkeit-Bitverschiebeoperation k mal und eine Mehrfache-Genauigkeit-Addition (Subtraktion) k/2 mal aus. Im Gegensatz dazu führt die Vorrichtung der 3, die ein Beispiel für die zweite Ausgestaltung ist, für die n-Bit-Eingaben S und N die Mehrfache-Genauigkeit-Bitverschiebeoperation k/w mal, eine Einfach- und Mehrfach-Genauigkeit-Multiplikation k/w mal, eine Addition k/w mal und eine Einfach-Genauigkeit-Multiplikation k/w mal aus. Die Einfach-Genauigkeit-Berechnung verursacht einen Fehler, wenn w kleiner ist als N. Nimmt man an, dass Einfach-Genauigkeit-Berechnungen (Bit-Verschiebeoperation, Addition und Multiplikation) exakt dieselbe Zeitdauer benötigen, wird die Rechenzeit zu 2/w. D.h., dass in einem 16-Bit Computer die Rechengeschwindigkeit um das ca. 8-fache ansteigt, wenn der Wert N ausreichend groß ist.
  • Beim erweiterten binären GGT-Algorithmus gemäß der dritten Ausgestaltung, der auf die Modulo-Kehrwertberechnung anwendbar ist, reduziert die Simulation des binären GGT durch die Berechnung für kleine ganze Zahlen die Berechnung für große ganze Zahlen mit einer Rate, die proportional zu 1/w ist, was die binäre GGT-Berechnung schneller macht.
  • Darüber hinaus ist die Effektivität der Simulation durch die Einführung des Verfahrens verbessert, welches „Simulation eine vorbestimmte Anzahl von Malen sogar ohne Gewissheit einer korrekten Simulation des aktuellen GGT-Algorithmus ausführt."
  • Der gewöhnliche Algorithmus L führt z.B. Simulation von ungefähr 12 Schleifen durch ein Simulationsverfahren aus, das eine 32-Bit-Ganzzahl mit Einfach-Genauigkeit verwendet. Mit einem solchen Verfahren gemäß der vorliegenden Erfindung, wie es oben erwähnt ist, ist es jedoch möglich, 32-Schleifensimulation durch das Simulationsverfahren unter Verwendung der 32-Bit-Ganzzahl mit Einfach-Genauigkeit auszuführen. In diesem Beispiel kann die Wiederholungszahl der Operation für große ganze Zahlen für die GGT-Berechnung im Vergleich zum L-Algorithmus um mehr als die Hälfte reduziert werden.

Claims (31)

  1. Vorrichtung zum Berechnen des Modulo-Kehrwerts eines Eingabewertes X über einem Restklassenring Z/NZ oder finiten Feld GF(p), um eine Informationssicherheitsfunktion anhand von erweiterter binärer GGT-Berechnung zu implementieren, wobei die Vorrichtung in der Lage ist, M Bits zur selben Zeit zu verarbeiten, dadurch gekennzeichnet, dass sie folgendes umfasst: ein Eingabemittel (11), das eingerichtet ist, Eingabewerte X und N einzugeben, wobei n die Bitgröße von N ist und X gleich oder größer als Null und kleiner als N ist, wobei n eine ganze Zahl ist, die gleich oder größer ist als 1; ein N-Speichermittel (13), das eingerichtet ist, den Wert N zu speichern; ein t-Speichermittel (16), das eingerichtet ist, einen voreingestellten Parameter t zu speichern, wobei t ein ganzzahliges Vielfaches von M ist; ein Dividiermittel (18), das eingerichtet ist, durch eine Potenz von 2 zu dividieren und Y = X2-t mod N für die Eingabewerte X und N zu berechnen; ein erweitertes binäres GGT-Berechnungsmittel (15), das eingerichtet ist, den folgenden erweiterten binären GGT-Algorithmus auszuführen: S = Y-12k mod N;wobei es das Berechnungsergebnis Y und den Eingabewert N verwendet, um S und k zu erhalten, ein Berechnungsmittel (17, 18A, 18B), das eingerichtet ist, die folgende Berechnung unter Verwendung der Berechnungsergebnisse S und k und des Parameters t auszuführen, R = S2-(k+t-m) mod Nwobei: m = 0, n, oder 2n; und ein Ausgabemittel (19), das eingerichtet ist, das Berechnungsergebnis R auszugeben.
  2. Vorrichtung nach Anspruch 1, bei der das Berechnungsmittel (17, 18A, 18B) folgendes umfasst: ein Vergleichsmittel (17), das eingerichtet ist, zu bestimmen, ob m-k-t positiv oder negativ ist; und ein Mittel (18A, 18B) welches dann, wenn das Ergebnis der Bestimmung negativ ist, eine Modulo-Division durch einen Faktor von 2 mittels R = S2-(k+t-m) mod Nberechnet und, wenn das Ergebnis der Bestimmung positiv ist, eine Modulo-Multiplikation mit einem Faktor von 2 mittels R = S2m-k-t mod Nberechnet.
  3. Vorrichtung nach Anspruch 1, bei der: die Informationssicherheitsfunktion eine elliptische Kurve E/GF(p) über GF(p) anwendet, wobei p eine Primzahl ist; die Modulo-Kehrwertberechnung eine Modulo-Kehrwertberechnung ist bei der Berechnung von λ in den folgenden Gleichungen zum Berechnen, aus zwei Punkten (x1, y1) und (x2, y2) der elliptischen Kurve E/GF(p), eines Punktes (x3, y3) der Summe dieser zwei Punkte λ = (y2 - y1)/(x2 - x1) mod p x3 = λ2 - x1 - x2 mod p y3 = λ(x1 - x3) - y, mod p;und, wenn λ durch die folgende Gleichung mit y = y2 - y1 und X = x2 - x1 repräsentiert ist λ = (y2 - y1)(x2 - x1)-1 mod p = yX-1 mod p:das Eingabemittel (11) eingerichtet ist, um p als das N einzugeben; das Dividiermittel (14) eingerichtet ist, um Y für das X und p durch die folgende Berechnung zu berechnen Y = X2-t mod p;das erweiterte GGT-Berechnungsmittel (15) eingerichtet ist, um S und k durch die folgende Gleichung unter Verwendung des Y und p zu berechnen S = bggT(Y, p) = Y-12k mod p;und das Berechnungsmittel eingerichtet ist, um einen Modulo-Kehrwert X' durch die folgende Gleichung unter Verwendung des S und t zu berechnen X' = S2-(k+t-m) mod p, wobei m = 0, n oder 2n ist, und um λ durch die folgende Gleichung unter Verwendung des Modulo-Kehrwerts X' zu berechnen λ = yX' mod p.
  4. Vorrichtung nach Anspruch 1, bei der: die Informationssicherheitsfunktion ein digitales ESIGN-Unterschriftenschema anwendet; und, wenn die folgende Gleichung y = w/(kxk-1) mod p,die ein Teil eines digitalen Signaturerzeugungsprozesses ist, wobei x, k, w ganze Zahlen sind, die 0 < x < pq, 0 ≤ w < p erfüllen, wobei p und q Primzahlen sind, durch die folgende Gleichung repräsentiert wird y = w/(kxk-1) mod p = wX-1 mod p:das Eingabemittel (11) ein Mittel umfasst, das eingerichtet ist, um X = kxk-1 zu berechnen, und eine Primzahl p als den Wert N einzugeben; das Dividiermittel (14) eingerichtet ist, um Y durch die folgende Gleichung mit X' = X-1 mod p zu berechnen, Y = X2-t mod p;das erweiterte binäre GGT-Berechnungsmittel (15) eingerichtet ist, um S und k durch die folgende Gleichung unter Verwendung des Y und p zu berechnen S = bggT(Y,p) = Y-12k mod p;und das Berechnungsmittel (17, 18A, 18B) eingerichtet ist, um einen Modulo-Kehrwert X' durch die folgende Gleichung unter Verwendung des S und t zu berechnen X' = S2-(k+t-m) mod p, wobei m = 0, n oder 2n, und die folgende Gleichung unter Verwendung des Modulo-Kehrwerts X' auszuführen y = wX-1 mod p = wX' mod p.
  5. Vorrichtung nach Anspruch 1, bei der: die Informationssicherheitsfunktion ein digitales RSA-Unterschriftenschema anwendet; und, wenn man R = r-1 mod N in der folgenden Gleichung setzt, was Teil eines Blindunterschrifterzeugungsprozesses ist s' = (rem)d mod N s = s'/r mod Nwobei r, m, e, d ganze Zahlen sind, die 0 < r, m < N und 0 < e, d < ϕ(N) erfüllen; das Eingabemittel (11) eingerichtet ist, um x als den Wert X einzugeben und in dem Speichermittel zu speichern; das Dividiermittel (14) eingerichtet ist, um Y durch die folgende Gleichung zu berechnen Y = r2-(k+t-m) mod N wobei m = 0, n oder 2n; das erweiterte binäre GGT-Berechnungsmittel (15) eingerichtet ist, um S und k durch die folgende Gleichung unter Verwendung des Y und N zu berechnen S = bggT(Y, N) = Y-12k mod N;und das Berechnungsmittel (17, 18A, 18B) eingerichtet ist, um einen Modulo-Kehrwert R durch die folgende Gleichung unter Verwendung des S und t zu berechnen R = S2-(k+t-m) mod N, wobei m = 0, n oder 2n ist, und die folgende Berechnung unter Verwendung des Modulo-Kehrwerts R auszuführen s = s'/r mod N = s'R mod N.
  6. Vorrichtung nach Anspruch 1, bei der die Eingabewerte X und N in Einheiten einer vorbestimmten Anzahl w von Bits ausgedrückt werden, wobei w gleich dem t ist und t gleich dem M ist, und wobei das Mittel (17, 18A, 18B) zur Berechnung mit einer Potenz von 2 ein Mittel (18A) zur Division durch eine Potenz von 2 umfasst, welches folgendes umfasst: X- und N-Speichermittel (22, 24), die eingerichtet sind, die Eingabewerte X bzw. N zu speichern; ein Modulo-Kehrwert-Berechnungsmittel (25), das eingerichtet ist, die folgende Gleichung auszuführen; n' = -N-1 mod 2w;ein Modulo-Multiplikationsmittel (30A), das eingerichtet ist, die folgende Gleichung unter Verwendung des n', des X und des w auszuführen s' = Xn' mod 2w;ein Multiplizier/Addiermittel (30B), das eingerichtet ist, die folgende Gleichung für das N, das X und das s' auszuführen q = X + s' N;und ein Dividiermittel (36), das eingerichtet ist, um q/2-w für das q und das w zu berechnen, und um das Berechnungsergebnis als das Ergebnis Y der Berechnung von X2-w mod N auszugeben.
  7. Vorrichtung nach Anspruch 1, bei der die Eingabewerte X und N in Einheiten einer vor bestimmten Anzahl w von Bits ausgedrückt werden, wobei w gleich dem t ist und t gleich dem M ist, das Berechnungsmittel (17, 18A, 18B) ein Dividiermittel (18A) umfasst, das eingerichtet ist, um durch eine Potenz von 2 zu dividieren, welches folgendes umfasst: X- und N-Speichermittel (22, 24), die eingerichtet sind, die Eingabewerte X bzw. N zu speichern; ein n'-Speichermittel (26), das eingerichtet ist, einen vorberechneten Wert n' = -N mod 2w zu speichern; ein Modulo-Multiplikationsmittel (30A), das eingerichtet ist, die folgende Gleichung unter Verwendung des n', des X und des w auszuführen s' = Xn' mod 2w;ein Multiplizier/Addiermittel (30B), das eingerichtet ist, die folgende Gleichung für das N, das X und das s' auszuführen q = X + s'N;und ein Dividiermittel (36), das eingerichtet ist, um q/2-w für das q und das w zu berechnen und das Berechnungsergebnis als das Ergebnis Y auszugeben.
  8. Vorrichtung nach Anspruch 6, bei der das Modulo-Kehrwert-Berechnungsmittel (25) folgendes umfasst: ein Mittel (25Ca), das eingerichtet ist, um y = N mod 2w für das N und das w zu berechnen; und ein Mittel (25Cb), das eingerichtet ist, um n' = -y' mod 2w für das y und das w zu berechnen.
  9. Vorrichtung nach Anspruch 6, bei der das Modulo-Kehrwert-Berechnungsmittel (25) folgendes umfasst: ein n'-Speichermittel (25A), das eingerichtet ist, das berechnete n' für die Eingabe N zu berechnen; und ein Ausgabemittel (25B), das eingerichtet ist, um das n' für die Eingabe N, falls vorhanden, aus dem n'-Speichermittel auszulesen, und den ausgelesenen Wert n' als die Ausgabe n' aus dem Modulo-Kehrwert-Berechnungsmittel (25) auszugeben.
  10. Vorrichtung nach Anspruch 1, bei der die Eingabewerte X, N und der Eingabewert k' in Einheiten einer vorbestimmten Anzahl w von Bits ausgedrückt werden, wobei w gleich dem t ist und t gleich dem M ist, und wobei k' eine ganze Zahl ist, die gleich oder größer ist als 1, und wobei das Berechnungsmittel (17, 18A, 18B) ein Dividiermittel (18A) umfasst, welches folgendes umfasst: X-, N- und k'-Speichermittel (22, 23, 24), die eingerichtet sind, die Eingabewerte X, N bzw. k' jeweils zu speichern; ein Modulo-Kehrwert-Berechnungsmittel (25), das eingerichtet ist, um n' = -N-1 mod 2w für das N und die Zahl w zu berechnen; ein Modulo-Multiplikationsmittel (30A), das eingerichtet ist, um s' = -Xn' mod 2w unter Verwendung des n', des X und des w zu berechnen; ein Multiplizier/Addiermittel (30B), das eingerichtet ist, um q = X + s'N für das N, das X und das s' zu berechnen, ein Dividiermittel (36), das eingerichtet ist, um q/2-w für das q und das w zu berechnen; und ein Steuermittel (20), das eingerichtet ist, die Berechnungen durch das Modulo-Kehrwert-Berechnungsmittel (25), das Modulo-Multiplikationsmittel (30A), das Multiplizier/Addiermittel (30B) und das Dividiermittel (36) K = [k'/w] mal auszuführen und darüber hinaus die Berechnungen nach dem Setzen von k' mod w als w erneut auszuführen, das X in dem X-Speichermittel (22) durch das Berechnungsergebnis von dem Dividiermittel (36) für jeden Durchlauf der K + 1 Ausführungen zu aktualisieren, und das Berechnungsergebnis von dem Dividiermittel (36) in dem letzten Durchlauf der K + 1 Ausführungen der Berechnungen als das Ergebnis der Berechnung von X2-w mod N auszugeben, wobei die Schreibweise [a] eine maximale ganze Zahl repräsentiert, die eine gegebene reelle Zahl a nicht übertrifft.
  11. Vorrichtung nach Anspruch 1, bei der die Eingabewerte X, N und die Eingabe k' in Einheiten einer vorbestimmten Anzahl w von Bits ausgedrückt werden, wobei w gleich dem t ist, k' eine ganze Zahl ist, die gleich oder größer ist als 1, und das Berechnungsmittel (17, 18A, 18B) ein Dividiermittel (18A) umfasst, das eingerichtet ist, durch eine Potenz von 2 zu dividieren, welches folgendes umfasst: X-, N- und k'-Speichermittel (22, 23, 24), die eingerichtet sind, die Eingabewerte X, N bzw. k' zu speichern; ein n'-Speichermittel (26), das eingerichtet ist, einen vorberechneten Wert n' = -N-1 mod 2w zu speichern; ein modulares Multiplikationsmittel (30A), das eingerichtet ist, um s' = Xn' mod 2w unter Verwendung des n', des X und des w zu berechnen; ein Multiplizier/Addiermittel (30B), das eingerichtet ist, um q = X + s'N für das N, das X und das s' zu berechnen, ein Dividiermittel (36), das eingerichtet ist, um q/2-w für das q und das w zu berechnen; und ein Steuermittel (20), das eingerichtet ist, die Berechnungen von dem modularen Multiplikationsmittel (30A), dem Multiplizier/Addiermittel (30B) und dem Dividiermittel (36) K = [k'/w] mal auszuführen und darüber hinaus die Berechnungen nach Setzen von k' mod w als w noch einmal auszuführen, das X in dem X-Speichermittel (22) mit dem Berechnungsergebnis von dem Dividiermittel für jeden Durchlauf der K + 1 Ausführungen zu aktualisieren und das Berechnungsergebnis von dem Dividiermittel in dem letzten Durchlauf der K+1 Ausführungen der Berechnungen als das Ergebnis Y der Berechnung von X2-1 mod N auszugeben, wobei die Schreibweise [a] eine maximale ganze Zahl repräsentiert, die eine gegebene reelle Zahl a nicht übertrifft.
  12. Vorrichtung nach Anspruch 1, bei der das Berechnungsmittel (17, 18A, 18B) ein Dividiermittel (18A) zum Dividieren durch eine Potenz von 2 umfasst, welches folgendes umfasst: X-, N- und k'-Speichermittel (22, 23, 24), die eingerichtet sind, die Eingabewerte X, N und k' jeweils zu speichern, wobei k' eine ganze Zahl ist, die gleich oder größer ist als 1; ein Spaltungsmittel (37), das eingerichtet ist, den Wert k' in p Werte w1, w2,..., wp zu spalten, die k' = w1 + w2 + ... + wp erfüllen, und diese auszugeben, wobei wi größer als 0 ist, und wobei i = 1, 2, ..., p; und p Dividierteile (381 -38p ), wobei ein i-tes der p Dividierteile mit Werten N, Xi-1 und wi als Eingaben in selbiges versorgt wird, und folgendes umfasst: ein Modulo-Kehrwert-Berechnungsmittel (25), das eingerichtet ist, n' = -N-1 mod
    Figure 00460001
    zu berechnen; ein Modulo-Multiplikationsmittel (30A), das eingerichtet ist, s' = Xi-1n' mod
    Figure 00470001
    unter Verwendung der Werte n', des Xi-1 und des wi zu berechnen; ein Multiplizier/Addiermittel (30B), das eingerichtet ist, q = Xi-1 + s'N für die Werte N, Xi-1 und s' zu berechnen; und ein Zweierpotenz-Dividiermittel (36), das eingerichtet ist, um
    Figure 00470002
    für die Werte q und wi zu berechnen und das Berechnungsergebnis als Xi auszugeben; wobei ein erstes der Dividierteile mit dem Wert X als einem Wert X0 versorgt wird, und ein p-tes der p Dividierteile (381 -38p ) das Berechnungsergebnis Xp als das Ergebnis der Berechnung von X2-t mod N ausgibt.
  13. Vorrichtung nach Anspruch 1, bei der das Berechnungsmittel (17, 18A, 18B) ein Multiplikationsmittel (18B) für eine Multiplikation mit einer Potenz von 2 umfasst, welches folgendes umfasst: ein Eingabemittel (41), das eingerichtet ist, um n-Bit Werte N und X einzugeben; ein N-Speichermittel (44) und ein X-Speichermittel (42), die eingerichtet sind, die Eingabewerte N bzw. X zu speichern; ein w-Speichermittel, das eingerichtet ist, um einen Wert w zu speichern, wobei w kleiner oder gleich dem M ist, welches kleiner oder gleich dem Wert n ist; ein Dividiermittel (45), das eingerichtet ist, um n'' = [2n+M-1/N] für die Werte N, M und n zu berechnen, wobei die Schreibweise [a] eine maximale ganze Zahl repräsentiert, die eine gegebene reelle Zahl a nicht übertrifft; ein n''-Speichermittel (46), das eingerichtet ist, das n'' zu speichern; ein erstes Berechnungsmittel (50A), das eingerichtet ist, um t' = [sn''/22M-w-1] unter Verwendung des n'' und dem Wert s von oberen M Bits des X zu berechnen; ein t'-Speichermittel (53A), das eingerichtet ist, das t' zu speichern; ein zweites Berechnungsmittel (50B), das eingerichtet ist, um S' = X2w-t'N unter Verwendung der X, N, t' und w zu berechnen; ein S'-Speichermittel (56A), das eingerichtet ist, das S' zu speichern; ein Vergleichsmittel (57), das eingerichtet ist, das S' und das N miteinander zu vergleichen; ein Subtrahiermittel (58), das eingerichtet ist, um wiederholt S' ← S'-N zu berechnen, welches 0 ≤ S' < N erfüllt, wenn S' > N; und, ein Steuermittel (40), das eingerichtet ist, als das Berechnungsergebnis von X2w mod N das S' auszugeben, wenn S' < N, oder das von den Subtrahiermitteln berechnete S' auszugeben.
  14. Vorrichtung nach Anspruch 1, bei der das Berechnungsmittel (17, 18A, 18B) ein Multiplikationsmittel (18B) für eine Multiplikation mit einer Potenz von 2 umfasst, welches folgendes umfasst: ein Eingabemittel (41), das eingerichtet ist, um n-Bit Werte N und X einzugeben; ein N-Speichermittel (44) und ein X-Speichermittel (42), die eingerichtet sind, die Eingabewerte N bzw. X zu speichern; ein w-Speichermittel (20A), das eingerichtet ist, einen Wert w zu speichern, wobei w kleiner oder gleich dem M ist, welches kleiner oder gleich dem Wert n ist; ein n''-Speichermittel (46), das eingerichtet ist, einen vorberechneten Wert n'' = [2n+M-1/N] zu speichern, wobei die Schreibweise [a] eine maximale ganze Zahl repräsentiert, die eine gegebene reelle Zahl a nicht übertrifft; ein erstes Berechnungsmittel (50A), das eingerichtet ist, um t' = [sn''/22M-w-1] unter Verwendung des n'' und des Wertes s von oberen M Bits des Wertes S zu berechnen; ein t'-Speichermittel (53A), das eingerichtet ist, den Wert t' zu speichern; ein zweites Berechnungsmittel (50B), das eingerichtet ist, um S' = S2w-t'N unter Verwendung der S, N, t' und w zu berechnen; ein S'-Speichermittel (56A), das eingerichtet ist, das S' zu speichern; ein Vergleichsmittel (57), das eingerichtet ist, das S' und das N miteinander zu vergleichen; ein Subtrahiermittel (58), das eingerichtet ist, um wiederholt S' ← S'-N zu berechnen, welches 0 ≤ S' < N erfüllt, wenn S' > N; und ein Steuermittel (40), das eingerichtet ist, das S' als das Berechnungsergebnis von S2w mod N auszugeben, wenn S' < N, oder das von dem Subtrahiermittel (58) berechnete S' auszugeben.
  15. Vorrichtung nach Anspruch 1, bei der das Berechnungsmittel (17, 18A, 18B) ein Multiplikationsmittel (18B) für eine Multiplikation mit einer Potenz von 2 umfasst, welches folgendes umfasst: ein Eingabemittel (41), das eingerichtet ist, einen Wert k und n-Bit Werte N und S einzugeben; k-, N- und X-Speichermittel (42, 43, 44), die eingerichtet sind, die Eingabewerte k, N bzw. X zu speichern; ein w-Speichermittel (20A), das eingerichtet ist, einen Wert w zu speichern, wobei w kleiner oder gleich dem M ist, welches kleiner oder gleich dem Wert n ist; ein Dividiermittel (45), das eingerichtet ist, um n'' = [2n+M-1/N] für die N, M und n zu berechnen, wobei die Schreibweise [a] eine maximale ganze Zahl repräsentiert, die eine gegebene reelle Zahl a nicht übertrifft; ein n''-Speichermittel (46), das eingerichtet ist, das n'' zu speichern; ein erstes Berechnungsmittel (50A), das eingerichtet ist, um t' = [sn''/22M-w-1] unter Verwendung des n'' und des Wertes s von oberen M Bits des X zu berechnen; ein t'-Speichermittel (53A), das eingerichtet ist, den Wert t' zu speichern; ein zweites Berechnungsmittel (50B), das eingerichtet ist, um S' = X2w-t'N unter Verwendung der Werte X, N, t' und w zu berechnen; ein S'-Speichermittel (56A), das eingerichtet ist, das S' zu speichern; ein Vergleichsmittel (57), das eingerichtet ist, das S' und das N miteinander zu vergleichen; ein Subtrahiermittel (58), das eingerichtet ist, um wiederholt S' ← S'-N zu berechnen, welches 0 ≤ S' < N erfüllt, wenn S' > N; und ein Steuermittel (40), das eingerichtet ist, um die Berechnungen des ersten Berechnungsmittels (50A), des zweiten Berechnungsmittels (50B), des Vergleichsmittels (57) und des Subtrahiermittels (58) K = [k/w] mal auszuführen, darüber hinaus die Berechnungen noch einmal durchzuführen, wobei k mod w als das w gesetzt ist, den Wert X in dem X-Speichermittel (42) mit dem S'-N zu aktualisieren, das für jeden Durchlauf der K + 1 Ausführungen dieser Berechnungen berechnet wird, und als das Berechnungsergebnis von X2w mod N den Wert S' auszugeben, der bei dem letzten Durchlauf der k+1 Ausführungen berechnet wurde.
  16. Vorrichtung nach Anspruch 1, bei der das Berechnungsmittel (17, 18A, 18B) ein Multiplikationsmittel (18B) für eine Multiplikation mit einer Potenz von 2 umfasst, welches folgendes umfasst: ein Eingabemittel (41), das eingerichtet ist, einen Wert k und n-Bit Werte N und X einzugeben; k-, N- und X-Speichermittel (42, 43, 44), die eingerichtet sind, die Eingabewerte k, N bzw. X zu speichern; ein w-Speichermittel (20A), das eingerichtet ist, einen Wert w zu speichern, wobei w kleiner oder gleich dem M ist, welches kleiner oder gleich dem Wert n ist; ein n''-Speichermittel (46), das eingerichtet ist, einen vorberechneten Wert n'' = [2n+M-1/N] zu speichern, wobei die Schreibweise [a] eine maximale ganze Zahl repräsentiert, die eine gegebene reelle Zahl a nicht übertrifft; ein erstes Berechnungsmittel (50A), das eingerichtet ist, um t' = [sn''/22M-w-1] unter Verwendung des n'' und des Wertes s von oberen M Bits des Wertes X zu berechnen; ein t'-Speichermittel (53A), das eingerichtet ist, das t' zu speichern; ein zweites Berechnungsmittel (50B), das eingerichtet ist, um S' = X2w-t'N unter Verwendung der X, N, t' und w zu berechnen; ein S'-Speichermittel (56A), das eingerichtet ist, das S' zu speichern; ein Vergleichsmittel (57), das eingerichtet ist, das S' und das N miteinander zu vergleichen; ein Subtrahiermittel (58), das eingerichtet ist, um wiederholt S' ← S'-N zu berechnen, welches 0 ≤ S' < N erfüllt, wenn S' > N; und ein Steuermittel (40), das eingerichtet ist, die Berechnungen des ersten Berechnungsmittels (50A), des zweiten Berechnungsmittels (50B), des Vergleichsmittels (57) und des Subtrahiermittels (58) K = [k/w] mal durchzuführen, darüber hinaus die Berechnungen noch einmal durchzuführen, wobei k mod w als das w gesetzt ist, um den Wert X in dem X-Speichermittel (42) mit dem S'-N zu aktualisieren, das für jeden Durchlauf der K+1 Ausführungen dieser Berechnungen berechnet wird, und als das Berechnungsergebnis von X2w mod N den Wert S', der bei dem letzten Durchlauf der k + 1 Ausführungen berechnet wurde, auszugeben.
  17. Vorrichtung nach einem der Ansprüche 13, 14, 15 oder 16, bei der das erste Berechnungsmittel (50A) folgendes umfasst: ein erstes Dividiermittel (51) zum Dividieren durch eine Potenz von 2, das eingerichtet ist um s = [X/2n-M] unter Verwendung von X, M und n zu berechnen; ein Speichermittel (51X), das eingerichtet ist, das s zu speichern; ein Multipliziermittel (52), das eingerichtet ist, um t = n''s aus n'' und s zu berechnen, ein t-Speichermittel (52A), das eingerichtet ist, das t zu speichern; und ein zweites Dividiermittel (53) zum Dividieren durch eine Potenz von 2, das eingerichtet ist, um t' = [t/22M-w-1] aus t, w und M zu berechnen.
  18. Vorrichtung nach Anspruch 1, bei der das Berechnungsmittel (17, 18A, 18B) ein Multiplikationsmittel (18B) für eine Multiplikation mit einer Potenz von 2 umfasst, welches folgendes umfasst: X-, N- und k-Speichermittel (42, 43, 44), die eingerichtet sind, um die Eingabewerte X, N bzw. k zu speichern; ein Spaltungsmittel (47), das eingerichtet ist, um den Wert k in p Werte w1, w2, ..., wp zu spalten, die k = w1 + w2 + ... + wp erfüllen, und sie auszugeben, wobei wi größer als 0 ist, und wobei i = 1, 2, ..., p; und p Multiplikationsteile (481 -48p ), wobei ein i-tes der p Multiplikationsteile mit N, Xi-1 und wi als dessen Eingaben versorgt wird, und folgendes umfasst: ein wi-Speichermittel (471 -47p ), das eingerichtet ist, um den Wert wi zu speichern, wobei wi kleiner oder gleich dem M ist, welches kleiner oder gleich dem Wert n ist; ein Dividiermittel (45), das eingerichtet ist, um n'' = [2n+M-1/N] für N, M und n zu berechnen, wobei die Schreibweise [a] eine maximale ganze Zahl repräsentiert, die eine gegebene reelle Zahl a nicht übertrifft; ein n''-Speichermittel (46), das eingerichtet ist, den Wert n'' zu speichern; ein erstes Berechnungsmittel (50A), das eingerichtet ist, um
    Figure 00500001
    unter Verwendung des n'' und des Wertes s von oberen M Bits des Si-1 zu berechnen; ein t'-Speichermittel (53A) zum Speichern des Wertes t'; ein zweites Berechnungsmittel (50B), das eingerichtet ist, um
    Figure 00500002
    unter Verwendung der Xi-1, N, t' und wi zu berechnen; ein S'-Speichermittel (56A), das eingerichtet ist, um das S' zu speichern; ein Vergleichsmittel (57), das eingerichtet ist, das S' und das N miteinander zu vergleichen; ein Subtrahiermittel (58), das eingerichtet ist, um wiederholt S' ← S'-N zu subtrahieren, welches 0 ≤ S' < N erfüllt, wenn S' > N; und ein Steuermittel (40), das eingerichtet ist, um als das Berechnungsergebnis Xi den Wert S' auszugeben, wenn das Vergleichsergebnis von dem Vergleichsmittel (57) S' < N ist, oder das S' auszugeben, das von dem Subtrahiermittel (58) berechnet wird; wobei ein erstes der p Multiplikationsteile (481 -48p ) mit dem Wert X als einem Wert X0 versorgt wird, und ein p-tes der p Multiplikationsteile das Berechnungsergebnis Xp als das Ergebnis der Berechnung von X2k mod N ausgibt.
  19. Vorrichtung nach Anspruch 1, bei der das Berechnungsmittel (17, 18A, 18B) ein Multiplikationsmittel (18B) für eine Multiplikation mit einer Potenz von 2 umfasst, welches folgendes umfasst: X-, N- und k-Speichermittel (22, 23, 24), die eingerichtet sind, um die Eingabewerte X, N bzw. k zu speichern; ein Spaltungsmittel (37), das eingerichtet ist, um das k in p Werte w1, w2,..., wp zu spalten, die k = w1 + w2 + ... + wp erfüllen, und diese auszugeben, wobei wi größer als 0 ist, und wobei i = 1, 2,..., p; und p Multiplikationsteile (381 -38p ), wobei ein i-tes der p Multiplikationsteile mit N, Si-1 und wi als dessen Eingaben versorgt wird und folgendes umfasst: ein wi-Speichermittel (371 -37p ), das eingerichtet ist, um den Wert wi zu speichern, wobei wi kleiner oder gleich dem M ist, welches kleiner oder gleich dem Wert n ist; ein n''-Speichermittel (46), das eingerichtet ist, um ein vorberechnetes n'' = [2n+M-1/N] zu speichern, wobei die Schreibweise [a] eine maximale ganze Zahl repräsentiert, die eine gegebene reelle Zahl a nicht übertrifft; ein erstes Berechnungsmittel (50A), das eingerichtet ist, um t' = [sn''/22M-wi-1] unter Verwendung des n'' und des Wertes s von oberen M Bits des Wertes Si-1 zu berechnen; ein t'-Speichermittel (53A), das eingerichtet ist, um den Wert t' zu speichern; ein zweites Berechnungsmittel (50B), das eingerichtet ist, um S' = Si-12wi-t'N unter Verwendung der Si-1, N, t' und wi zu berechnen; ein S'-Speichermittel (56A), das eingerichtet ist, um den Wert S' zu speichern; ein Vergleichsmittel (57), das eingerichtet ist, um das S' und das N miteinander zu vergleichen; ein Subtrahiermittel (58), das eingerichtet ist, um wiederholt S' ← S'-N zu subtrahieren, welches 0 ≤ S' ≤ N erfüllt, wenn S' > N; und ein Steuermittel (40), das eingerichtet ist, um als das Berechnungsergebnis Si den Wert S' auszugeben, wenn das Vergleichsergebnis von dem Vergleichsmittel S' < N ist, oder das S' auszugeben, das von dem Subtrahiermittel (58) berechnet wird; wobei ein erstes der p Multiplikationsteile (381 -38p ) mit dem X als dem Wert X0 versorgt wird, und ein p-tes der p Multiplikationsteile, das Berechnungsergebnis Xp als das Ergebnis der Berechnung von X2k mod N ausgibt.
  20. Vorrichtung nach einem der Ansprüche 14, 15, 16 oder 17, bei dem das Dividiermittel (45) ein Mittel umfasst, das dann, wenn ein Wert n'', der einer gegebenen Eingabe N entspricht, in dem n''-Speichermittel (46) gespeichert ist, ihn daraus ausliest und ihn als die Ausgabe des Dividiermittels (45) ausgibt, und wenn der entsprechende Wert n'' nicht in dem n''-Speichermittel (46) gespeichert ist, den Wert n'' berechnet, ihn in dem n''-Speichermittel in Entsprechung mit der gegebenen Eingabe N speichert und ihn als die Ausgabe des Dividiermittels (45) ausgibt.
  21. Vorrichtung nach Anspruch 1, bei dem das erweiterte binäre GGT-Berechnungsmittel (15) folgendes umfasst: ein Eingabemittel (101), das eingerichtet ist, um Eingabewerte Y und N einzugeben; ein Speichermittel (160), das eingerichtet ist, die Eingabewerte Y bzw. N zu speichern; ein GGT-Berechnungsinitialisierungsmittel (110), das eingerichtet ist, um ggt(Y,N) = ggt(U0, V0)2z0 für die Werte Y und N zu berechnen, um Werte U0 und V0 zu finden, die einen Wert z0 maximieren, wobei das ggt(Y, N) den größten gemeinsamen Teiler für Y und N repräsentiert; ein GGT-Berechnungssimulationsmittel (120), das eingerichtet ist, um die folgende Berechnung für eine vorgegebene ganze Zahl w' ≥ 4 mit den U0 und V0 auszuführen, ggt(U0, V0) = ggt(|uuU0 - uvV0|/2w', |vvV0 - vuU0|/2w')um Werte uu, uv, vv und vu zu finden, welche sie erfüllen; ein Berechnungsmittel (130) für mehrfache Genauigkeit, das eingerichtet ist, die folgende Berechnung für die Werte U0, V0, uu, uv, vv und vu auszuführen U' = |uuU0 - uvV0|/2w' V' = |vvV0 - vuU0|/2w' und die Werte U0 und V0 auszugeben; ein GGT-Berechnungsendverarbeitungsmittel (140), das eingerichtet ist, um ggt(U0, V0)2z0 für das U0 und das V0 zu berechnen; ein Ausgabemittel (102), das eingerichtet ist, um das Berechnungsergebnis ggt(Y, N) auszugeben; und ein Steuermittel (150), das eingerichtet ist, die Mittel sequentiell jeweils zu steuern, um aus dem Speichermittel (160) auszulesen und darin zu schreiben.
  22. Vorrichtung nach Anspruch 21, bei der die Steuermittel (150) folgendes umfassen: ein Bitgrößenerfassungsmittel (1-30) das eingerichtet ist, um den Bitgrößenwert i von demjenigen der Eingabewerte U0 und V0 zu erfassen, der die größere Bitgröße hat; ein Bitgrößenüberprüfungsmittel (1-40), das eingerichtet ist, um zu bestimmen, ob der Wert i kleiner als ein Wert w ist, und das GGT-Berechnungssimulationsmittel (120) dazu zu veranlassen, seine Berechnung auszuführen, wenn der Wert i nicht kleiner als der Wert w ist, oder das GGT-Berechnungsendverarbeitungsmittel (140) zum Ausführen seiner Berechnung zu veranlassen, wenn der Wert i kleiner als der Wert w ist, wobei w eine vorbestimmte ganze Zahl ist, die gleicher oder größer ist als 4: ein Endentscheidungsmittel (1-70), das eingerichtet ist, um zu bestimmen, ob das V0 in der Ausgabe aus dem GGT-Berechnungsmittel (130) für mehrfache Genauigkeit null ist oder nicht; und ein Mittel, welches dann, wenn die Entscheidung von dem Endentscheidungsmittel nicht V0 = 0 ist, die Ausgaben U0 und V0 aus dem GGT-Berechnungsmittel (130) für mehrfache Genauigkeit in das Bitgrößenerfassungsmittel (1-30) eingibt, um dessen Betrieb auszuführen, und, wenn V0 = 0 ist, das GGT-Berechnungsendverarbeitungsmittel (140) veranlasst, seine Berechnung auszuführen.
  23. Vorrichtung nach Anspruch 22, bei der das Steuermittel (150) ein Anfangsentscheidungsmittel (1-20) hat, welches bestimmt, ob die Eingabe von dem GGT-Berechnungsinitialisierungsmittel (110) V0 = 1 oder U0 = 1 ist, und wenn dem so ist, den Eingabewert U0 oder V0 direkt in das GGT-Berechnungsendverarbeitungsmittel (140) eingibt, ohne es in das GGT-Berechnungssimulationsmittel (120) einzugeben.
  24. Vorrichtung nach einem der Ansprüche 21, 22 oder 23, bei der das Steuermittel (150) ferner ein Bitextrahiermittel (1-41) umfasst, das eingerichtet ist, um von den Werten U0 und V0 deren obere und untere Bits ua, va und ux, vx zu extrahieren, und das GGT-Berechnungssimulationsmittel (120) folgendes umfasst: ein Zustandsentscheidungsmittel (6-21), das mit den Werten ua, va und ux, vx und Anfangswerten uu = 1, uv = 0, vu = 1, vv = 0 versorgt wird, und eingerichtet ist, um zu entscheiden, ob ux gerade ist oder nicht, ob vx gerade ist oder nicht, oder ob ua > va ist oder nicht; ein Aktualisierungsmittel (123-126), das eingerichtet ist, um uu, vv, uv und vu durch Ausführen der folgenden Berechnungen zu aktualisieren: wenn ux gerade ist: ua = [ua/2], ux = ux/2, vu = 2vu und vv = 2vv; wenn vx gerade ist: va = [va/2], vx = vx/2, uu = 2uu und uv - 2uv wenn ua > va: ua = [(ua - va)/2], ux = (ux - vX)/2 Und uu = uu + vu, uv = uv + vv, vv = 2vv; in anderen Fällen: va = [(va - ua)/2], vx = (vx - ux)/2 and vu = vu + uv, vv = vv + uv, uu = 2uu, uv = 2uv; ein Zählmittel (6-23), das eingerichtet ist, um die Anzahl der Male c zu zählen, die das Aktualisierungsmittel die Berechnungen ausgeführt hat; und ein Mittel (121), das eingerichtet ist, um das Zustandsentscheidungsmittel (6-21), das Aktualisierungsmittel (6-23) und das Zählmittel zu veranlassen, wiederholt deren Operationen auszuführen, bis die Anzahl der Male c den Wert w' erreicht.
  25. Vorrichtung nach Anspruch 1, bei der das erweiterte binäre GGT-Berechnungsmittel (15) folgendes umfasst: ein Eingabemittel (101), das eingerichtet ist, Eingabewerte Y und N einzugeben, von denen jedes ungeradzahlig ist; ein Speichermittel (160), das eingerichtet ist, die Eingabewerte Y bzw. N zu speichern; ein erweitertes GGT-Berechnungsinitialisierungsmittel (110), das eingerichtet ist, um U0 = Y, V0 = N, X0 = 0, T0 = 1 und k = 0 zu initialisieren; ein erweitertes GGT-Berechnungssimulationsmittel (120), das eingerichtet ist, die folgende Berechnung für eine vorbestimmte ganze Zahl w' mit U und V auszuführen ggt(U, V) = ggt(|uuU0 - uvV0|/2w', |vvV0 - vuU0|/2w')um Werte uu, uv, vv und vu zu finden, welche sie erfüllen, und um das w' zu dem k zu addieren; ein erweitertes binäres GGT-Berechnungsmittel (130) für mehrfache Genauigkeit, das eingerichtet ist, die folgende Berechnung für die Werte U, V, uu, uv, vv und vu auszuführen U' = (uuU0 - uvV0)/2w', S' = uuX0 + uvTo oder U' = -(uuU0 - uvV0)/2w', S' = -(uuX0 + uvTo)und V' = (vvV0 - vuU0)/2w', T' = vvT0 + vuXo oder V' = -(vvV0 - vuU0)/2w', T' = -(vvT0 + vuXo)und jeweils die Werte U', V', S' und T' als die U0, V0, X0 und T0 auszugeben; ein erweitertes GGT-Berechnungsendverarbeitungsmittel (140), das eingerichtet ist, um für das U0, V0, X0 und T0, die in dasselbe eingegeben werden, folgendes zu berechnen |uuU0 - uvV0|2c = ggt(U, V) |vvV0 - vuU0|/2c = 0um Werte uu, uv, vv, vu und c zu finden, welche dies erfüllen, um S' = uuS0 + uvT0 zu berechnen, und um das c zu dem k zu addieren; ein Ausgabemittel (102), das eingerichtet ist, um das Berechnungsergebnis des erweiterten GGT-Berechnungsendverarbeitungsmittel als das Ergebnis der Berechnung X = Y-12k (mod N) und das k auszugeben; und ein Steuermittel (150), das eingerichtet ist, um sequentiell die jeweiligen Mittel zu steuern, um aus dem Speichermittel auszulesen und zu schreiben.
  26. Vorrichtung nach Anspruch 25, bei der das Steuermittel (150) folgendes umfasst: ein Bitgrößenerfassungsmittel (1-30), das eingerichtet ist, um den Bitgrößenwert i von demjenigen der Eingabewerte U0 und V0 zu erfassen, der die größere Bitgröße hat; ein Bitgrößenüberprüfungsmittel (1-40), das eingerichtet ist, um zu bestimmen, ob dieses kleiner ist als ein Wert w, und das erweiterte GGT-Berechnungssimulationsmittel (120) dazu zu veranlassen, seine Berechnung auszuführen, wenn dieses i nicht kleiner als der Wert w ist, oder das erweiterte GGT-Berechnungsendverarbeitungsmittel (140) dazu zu veranlassen, seine Berechnung auszuführen, wenn dieses i kleiner als der Wert w ist; ein Endentscheidungsmittel (1-70), das eingerichtet ist, zu bestimmen, ob das V0 in der Ausgabe des erweiterten GGT-Berechnungsmittels (130) für mehrfache Genauigkeit null ist oder nicht; und ein Mittel (150), das, wenn die Entscheidung von dem Endentscheidungsmittel nicht V0 = 0 ist, die Ausgaben U0 und V0 von dem erweiterten GGT-Berechnungsmittel (130) für mehrfache Genauigkeit in das Bitgrößenerfassungsmittel eingibt, um dessen Operation auszuführen, und, wenn V0 = 0 ist, das erweiterte GGT-Berechnungsendverarbeitungsmittel (140) veranlasst, seine Berechnung auszuführen.
  27. Vorrichtung nach Anspruch 25 oder 26, bei dem das Steuermittel (150) weiter Bitextrahiermittel (1-41) umfasst, die eingerichtet sind, von den Werten U0 und V0 deren obere und untere Bits ua, va und ux, vx zu extrahieren und das erweiterte GGT-Berechnungssimulationsmittel (120) folgendes umfasst: ein Zustandsentscheidungsmittel (6-21), das mit den Werten ua, va und ux, vx und Anfangswerten uu = 1, uv = 0, vu = 1, vv = 0 versorgt wird und eingerichtet ist, zu entscheiden, ob das ux gerade ist oder nicht, ob das vx gerade ist oder nicht, oder ob ua > va ist oder nicht; ein Aktualisierungsmittel (123-126), das eingerichtet ist, um uu, vv, uv und vu durch Ausführen der folgenden Berechnungen zu aktualisieren: wenn ux gerade ist: ua = [ua/2], ux = ux/2, vu = 2vu und vv = 2vv; wenn vx gerade ist: va = [va/2], vx = vx/2, uu = 2uu und uv = 2uv wenn ua > va: ua = [(ua - va)/2], ux = (ux - vx)/2 und uu = uu + vu, uv = uv + vv, vu = 2vu, vv = 2vv; in anderen Fällen: va = [(va - ua)/2], vx = (vx - ux)/2 und vu = vu + uu, vv = vv + uv, uu = 2uu, uv = 2uv; ein Zählmittel (6-23), das eingerichtet ist, um die Anzahl der Male c zu zählen, welche das Aktualisierungsmittel die Berechnungen ausgeführt hat; und ein Mittel (121), das eingerichtet ist, um das Zustandsentscheidungsmittel (6-21), das Aktualisierungsmittel (123-126) und das Zählmittel (6-23) dazu zu veranlassen, wiederholt deren Operationen auszuführen, bis die Anzahl der Male c dieses w' erreicht.
  28. Vorrichtung nach einem der Ansprüche 25, 26 oder 27, bei der das Mittel (17, 18A, 188) zur Berechnung mit der Potenz von 2 ein Dividiermittel (17, 18A) ist, welches Modulo-Division durch die Potenz von 2 auf dem Z/NZ ausführt, um das R als das Ergebnis der Modulo-Kehrwertberechnung X-1 mod N zu erzeugen.
  29. Vorrichtung nach einem der Ansprüche 25, 26 oder 27, bei der das Mittel (17, 18A, 18B) zur Berechnung mit der Potenz von 2 umfasst ein Dividiermittel (17, 18A), welches Modulo-Division durch die Potenz von 2 auf dem Z/NZ ausführt, und ein Multiplikationsmittel (17, 18B), weiches Modulo-Multiplikation mit der Potenz von 2 auf dem Z/NZ ausführt, um das R als das Ergebnis der Modulo-Kehrwertberechnung X-12n mod N für n-Bit Werte von X und N zu erzeugen.
  30. Vorrichtung nach einem der Ansprüche 25, 26 oder 27, bei der das Mittel (17, 18A, 18B) zur Berechnung mit der Potenz von 2 ein Dividiermittel (17, 18A) ist, welches Modulo-Division durch die Potenz von 2 auf dem Z/NZ ausführt, um das R als das Ergebnis einer Kaliski-Kehrwertberechnung X-12n mod N für n-Bit Eingaben X und N zu erzeugen.
  31. Vorrichtung nach einem der Ansprüche 25, 26 oder 27, bei der das Mittel (17, 18A, 18B) zur Berechnung mit der Potenz von 2 ein Multiplikationsmittel (17, 18B) ist, welches Modulo-Multiplikation mit der Potenz von 2 auf dem Z/NZ ausführt, um das R als das Ergebnis einer Montgomery-Kehrwertberechnung X-122n mod N für n-Bit Eingaben X und N zu erzeugen.
DE69826963T 1997-11-04 1998-11-04 Gerät für die modulare Inversion zur Sicherung von Information Expired - Lifetime DE69826963T2 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP30159397 1997-11-04
JP30159397 1997-11-04
JP31046697 1997-11-12
JP31046697 1997-11-12
JP1357498 1998-01-27
JP1357498 1998-01-27

Publications (2)

Publication Number Publication Date
DE69826963D1 DE69826963D1 (de) 2004-11-18
DE69826963T2 true DE69826963T2 (de) 2005-11-17

Family

ID=27280325

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69826963T Expired - Lifetime DE69826963T2 (de) 1997-11-04 1998-11-04 Gerät für die modulare Inversion zur Sicherung von Information

Country Status (4)

Country Link
US (2) US6795553B1 (de)
EP (1) EP0917047B1 (de)
CA (1) CA2253009C (de)
DE (1) DE69826963T2 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU769464B2 (en) * 1999-01-27 2004-01-29 France Telecom Method, system, device for proving the authenticity of an entity and/or the integrity and/or the authenticity of message
US7240204B1 (en) * 2000-03-31 2007-07-03 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Scalable and unified multiplication methods and apparatus
US7050579B1 (en) * 2000-03-31 2006-05-23 State Of Oregon Acting By And Through The State Board Of Education On Behalf Of Oregon State University Cryptographic methods and apparatus using word-wise montgomery multiplication
JP2002229445A (ja) * 2001-01-30 2002-08-14 Mitsubishi Electric Corp べき乗剰余演算器
DE10129643A1 (de) * 2001-06-20 2003-01-02 Philips Corp Intellectual Pty Verfahren zur Verschlüsselung der Datenübertragung in einer Datenverarbeitungseinheit, insbesondere in einer Smartcard
US7068785B2 (en) * 2002-02-05 2006-06-27 Matsushita Electric Industrial Co., Ltd. Table driven method for calculating arithmetic inverse for use in cryptography
US7558817B2 (en) * 2002-04-29 2009-07-07 Infineon Technologies Ag Apparatus and method for calculating a result of a modular multiplication
KR100535370B1 (ko) * 2003-02-05 2005-12-08 학교법인 영광학원 유한 필드상의 산술연산기
FR2859030B1 (fr) * 2003-08-21 2005-11-04 Gemplus Card Int Procede de realisation d'une multiplication modulaire et procede de realisation d'une multiplication euclidienne sur des nombres de 2n bits
WO2005048008A2 (en) * 2003-11-16 2005-05-26 M-Systems Flash Disk Pioneers Ltd. Enhanced natural montgomery exponent masking
CN1985458B (zh) * 2003-11-16 2013-05-08 桑迪斯克以色列有限公司 增强的自然蒙哥马利指数掩蔽和恢复的方法和装置
KR100564599B1 (ko) * 2003-12-24 2006-03-29 삼성전자주식회사 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
GB0412084D0 (en) * 2004-05-29 2004-06-30 Univ Belfast "Method of calculating a modular inverse"
FR2880149B1 (fr) * 2004-12-23 2007-03-30 Oberthur Card Syst Sa Procede de traitement de donnees et dispositif associe
JP4774509B2 (ja) * 2005-05-13 2011-09-14 国立大学法人お茶の水女子大学 擬似乱数発生システム
FR2895105A1 (fr) * 2005-12-20 2007-06-22 St Microelectronics Sa Procede pour diviser un nombre par une fraction ayant au numerateur un nombre en forme de puissance de 2
EP2082523B1 (de) * 2006-11-13 2014-03-19 Certicom Corp. Komprimierte ecdsa-signaturen
US8243919B2 (en) * 2007-03-07 2012-08-14 Research In Motion Limited Method and apparatus for performing elliptic curve scalar multiplication in a manner that counters power analysis attacks
CN101925942B (zh) * 2008-02-20 2013-11-27 三菱电机株式会社 验证装置
IT1401937B1 (it) * 2010-09-16 2013-08-28 St Microelectronics Srl Metodo di generazione di una firma digitale
KR101794807B1 (ko) * 2011-01-31 2017-11-08 삼성전자주식회사 몽고메리 역원 계산 장치 및 이를 이용한 몽고메리 역원 계산 방법
EP2500872A1 (de) 2011-03-08 2012-09-19 Openways Sas Gesichertes Steuerungsverfahren zur Öffnung von Schließvorrichtungen mit Hilfe eines kommunizierenden Objekts vom Typ Handy
DE102012005427A1 (de) * 2012-03-16 2013-09-19 Giesecke & Devrient Gmbh Verfahren und System zur gesicherten Kommunikation zwischen einen RFID-Tag und einem Lesegerät
CN104123431B (zh) * 2013-04-24 2018-09-14 国民技术股份有限公司 一种元素的模逆计算方法及装置
CN103336680B (zh) * 2013-06-27 2016-01-13 清华大学 实现二进制左移模逆算法的电路
WO2021150637A1 (en) * 2020-01-22 2021-07-29 Cryptography Research, Inc. Correcting the almost binary extended greatest common denominator (gcd)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4625076A (en) * 1984-03-19 1986-11-25 Nippon Telegraph & Telephone Public Corporation Signed document transmission system
US6307935B1 (en) * 1991-09-17 2001-10-23 Apple Computer, Inc. Method and apparatus for fast elliptic encryption with direct embedding
DE69434422T2 (de) * 1993-11-30 2006-04-20 Canon K.K. Verfahren und Anordnung zur Verschlüsselung/Entschlüsselung auf der Basis des Montgomery-Verfahrens unter Verwendung von effizienter modularer Multiplikation
AU3073595A (en) 1994-07-29 1996-03-04 Certicom Corp. Elliptic curve encryption systems
FR2726668B1 (fr) * 1994-11-08 1997-01-10 Sgs Thomson Microelectronics Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery
JPH1165439A (ja) * 1996-08-09 1999-03-05 Nippon Telegr & Teleph Corp <Ntt> N進表現暗号による通信および認証方法、ならびにそれらの装置、およびn進表現暗号による通信および認証プログラムを格納した記憶媒体
US6917957B2 (en) * 2000-08-28 2005-07-12 Sun Microsystems, Inc. Method and apparatus for performing modular division using counters
US6763366B2 (en) * 2001-05-17 2004-07-13 Matsushita Electric Industrial Co., Ltd. Method for calculating arithmetic inverse over finite fields for use in cryptography

Also Published As

Publication number Publication date
US6795553B1 (en) 2004-09-21
DE69826963D1 (de) 2004-11-18
US20050041811A1 (en) 2005-02-24
EP0917047B1 (de) 2004-10-13
US7831651B2 (en) 2010-11-09
CA2253009A1 (en) 1999-05-04
EP0917047A3 (de) 2000-07-26
CA2253009C (en) 2002-06-25
EP0917047A2 (de) 1999-05-19

Similar Documents

Publication Publication Date Title
DE69826963T2 (de) Gerät für die modulare Inversion zur Sicherung von Information
EP1360579B1 (de) Verfahren und vorrichtung zum modularen multiplizieren und rechenwerk zum modularen multiplizieren
DE69930334T2 (de) IC-Karte ausgerüstet mit einer Verarbeitungsanlage für Elliptische-Kurven-Verschlüsselung
DE69534603T2 (de) Verschlüsselungssystem für elliptische kurve
DE60119620T2 (de) Verfahren zur Skalarmultiplikation auf einer elliptischen Kurve und entsprechende Vorrichtung
DE60223775T2 (de) Vorrichtung zum Konvertieren einer elliptischen Kurve
DE102006025673B9 (de) Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls
DE19758079A1 (de) Verfahren und Vorrichtung zur Galoisfeld-Multiplikation
EP1922837B1 (de) Verfahren zum sicheren ver- oder entschlüsseln einer nachricht
DE112007001319T5 (de) Multiplizieren zweier Zahlen
DE10024325B4 (de) Kryptographisches Verfahren und kryptographische Vorrichtung
DE102007054316A1 (de) Modulares Multiplikationsverfahren, modularer Multiplizierer und Kryptosystem
DE10260655B3 (de) Vorrichtung und Verfahren zum Berechnen einer Multiplikation mit einer Verschiebung des Multiplikanden, insbesondere bei der kryptographischen Berechnung
DE10141460A1 (de) Potenzrestberechnungseinheit unter Verwendung eines Montgomery-Algorithmus
DE10219158B4 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
EP1370933B1 (de) Verfahren und vorrichtung zum modularen multiplizieren
EP2641241B1 (de) Verfahren zur langzahldivision oder modulare reduktion
DE10357661A1 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
DE10260660B3 (de) Modulare Multiplikation mit paralleler Berechnung der Look-Ahead-Parameter u.a. bei der kryptographischen Berechnung
DE102006025713B9 (de) Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE69633253T2 (de) Kryptographisches verfahren mit öffentlichem schlüssel
EP1324188A2 (de) Verfahren zum Multiplizieren zweier Faktoren aus dem Galois-Feld sowie Multiplizierer zum Durchführen des Verfahrens
DE10151129B4 (de) Verfahren und Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation in einer Kryptographieschaltung
EP1478999B1 (de) Vorrichtung und verfahren zum umrechnen eines terms
DE10200133B4 (de) Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition