DE69329929T2 - Mikroelektronische Kompaktanlage zum Ausführen modulärer Multiplizierung und Potenzierung mit grossen Operanden - Google Patents
Mikroelektronische Kompaktanlage zum Ausführen modulärer Multiplizierung und Potenzierung mit grossen OperandenInfo
- Publication number
- DE69329929T2 DE69329929T2 DE69329929T DE69329929T DE69329929T2 DE 69329929 T2 DE69329929 T2 DE 69329929T2 DE 69329929 T DE69329929 T DE 69329929T DE 69329929 T DE69329929 T DE 69329929T DE 69329929 T2 DE69329929 T2 DE 69329929T2
- Authority
- DE
- Germany
- Prior art keywords
- counter
- output
- serial
- multiplication
- phase
- 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
Links
- 238000004377 microelectronic Methods 0.000 title claims abstract description 7
- 238000000034 method Methods 0.000 claims abstract description 98
- 238000005070 sampling Methods 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 claims description 6
- 230000003213 activating effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 30
- 230000001360 synchronised effect Effects 0.000 abstract description 9
- 238000013459 approach Methods 0.000 abstract description 5
- 230000002093 peripheral effect Effects 0.000 abstract description 2
- 238000004364 calculation method Methods 0.000 description 22
- 230000015654 memory Effects 0.000 description 13
- 230000009467 reduction Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000011084 recovery Methods 0.000 description 7
- 238000007792 addition Methods 0.000 description 6
- 238000009795 derivation Methods 0.000 description 6
- 230000036316 preload Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 229910052710 silicon Inorganic materials 0.000 description 4
- 239000010703 silicon Substances 0.000 description 4
- 230000003466 anti-cipated effect Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 101150075118 sub1 gene Proteins 0.000 description 3
- 101710176296 Switch 2 Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000001143 conditioned effect Effects 0.000 description 2
- 239000004020 conductor Substances 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 244000045947 parasite Species 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- DTBDAFLSBDGPEA-UHFFFAOYSA-N 3-Methylquinoline Natural products C1=CC=CC2=CC(C)=CN=C21 DTBDAFLSBDGPEA-UHFFFAOYSA-N 0.000 description 1
- 101100311330 Schizosaccharomyces pombe (strain 972 / ATCC 24843) uap56 gene Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 229910052799 carbon Inorganic materials 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- BTCSSZJGUNDROE-UHFFFAOYSA-N gamma-aminobutyric acid Chemical compound NCCCC(O)=O BTCSSZJGUNDROE-UHFFFAOYSA-N 0.000 description 1
- RVRCFVVLDHTFFA-UHFFFAOYSA-N heptasodium;tungsten;nonatriacontahydrate Chemical compound O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.[Na+].[Na+].[Na+].[Na+].[Na+].[Na+].[Na+].[W].[W].[W].[W].[W].[W].[W].[W].[W].[W].[W] RVRCFVVLDHTFFA-UHFFFAOYSA-N 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000003595 mist Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 101150018444 sub2 gene Proteins 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/728—Methods 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)
- Aiming, Guidance, Guns With A Light Source, Armor, Camouflage, And Targets (AREA)
- Electrophonic Musical Instruments (AREA)
- Electronic Switches (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf die modulare Verarbeitung einer großen Zahl Primzahlen im Galois-Feld und auch von zusammengesetzten konstanten Primärkoeffizienten. Die Erfindung beziehe sich insbesondere auf eine Vorrichtung zur Implementierung modularer Multiplikationen / Potenzierungen von großen Zahlen, was zur Durchführung der Operationen geeignet ist, die für die Zugriffsberechtigungsprüfung von Geheimverschlüsselungen mir öffentlichem Schlüssel und Verschlüsselungsprocokollen wesentlich ist, die in zumutbarer Verarbeitungszeit nicht mit kleinen Mikroprozessoren durchgeführt werden können.
- Die vorliegende Erfindung bezieht sich auf die Hardware- Implementierung eines Verfahrens, bekannt als "das überlappte Montgomery modulare Multipräzisions- Multiplikationsverfahren", das häufig in auf Verschlüsselungssoftware ausgerichteten Systemen eingesetzt wird. Es wird ein einzigartiges neuartiges Verfahren zur Beschleunigung der modularen Potenzierung dargeboten; und es werden vitale Nachweise zur Vereinfachung der Architektur und der Ausweitung des Einsatzes der Vorrichtung auf eine große Anzahl von Berechnungen im normalen Zahlenbereich eingesetzt.
- Das grundlegende verfahren ist eines der drei veröffentlichten, damit zusammenhängenden Verfahren zur Durchführung der modularen Multiplikation mit Montgomerys Methodologie. [P. L. Montgomery, "Modulare Multiplikation ohne Versuchsdivision". Berechnungsmathematik. Band 44, pp- 519-521, 1985], nachstehend als "Montgomery" bezeichnet [S. R. Dusse und B. S. Kaliski Jr., "Eine kryptographische Bücherei für Motorola DSP 56000" Pro Eurocrypt 90, Springer Verlas, Berlin, 1990], nachstehend als "Dusse" bezeichnet.
- In dieser Hardware-In-Iplementierung wurden Sicherheitsmechanismen und "fliegende" Additionen. Subtraktionen und Bewegungen hinzugefügt; Prozesse, deren Gesamtausgabe irrelevant: sein könnte, wurden entferne; ein relativ einfach zu implementierendes siliconartiges Design wurde erfunden und integriere, um dem internen Daten-/Adress-Bus als abhängiger Rechner an praktisch jede beliebige 8, 16 oder 32-bit Zentralprozessoreinheit (CPU) angehängt zu werden.
- Aufgrund des einfach synchronisierten Umschaltdesigns kann die Multiplikations- / Quadrierungsmaschine bei Taktgeschwindigkeiten laufen, die um mehrere Male schneller sind als die mit einem CPU derzeitig erreichbaren Geschwindigkeiten, der On-Board nicht flüchtige Speichervorrichtungen unterstützt. Dieses Verfahren erfordert keine Veränderungen des Designs der Speicherarchitektur des CPU, wie dies bei Implementierungen mit parallelen Multiplizierwerken und Speichern mit Dualport zur schnellen modularen Multiplikation von großen Zahlen im Schaltkreis von Philips der Fall ist. [Philips Componencs, "83C852, gesicherter 8-bit Mikrokontroller für Anwendungen mit bedingtem Zugang", Eindhoven, August 1990], nachstehend als "Philips" bezeichnet.
- Die wesentliche Architektur besteht aus einer Maschine, die in irgendein beliebiges Mikrocontroller-Design integriere und in den Speicher konvertiere werden kann; während parallel mit dem Kontroller gearbeitet wird, der ständig Befehle und Operanden laden und die endgültige Antwort dann entladen und übertragen muß.
- Die einzigartige Lösung verwendet nur zwei serielle / parallele Multiplikationswerke und einen kompletten seriellen verknüpften Ansatz, der Siliconbereich spart. Durch den Einsatz aktueller bekannter Technologien ermöglicht sie die Integration der kompletten Lösung, unter Einschluß eines Mikrocontrollers mit Speichern bis zu einem 4 Mal 4 Mal 5 Mal 0,3 mm mikroelektronischem Schaltkreis, der den ISO-Normen genügen kann [International Organisation for Standardization, "Identifikationskarten - Karten mit integriertem Schaltkreis, ISO 7816:
- Teil 1 - ISO 7816-1 "Physikalische Merkmale", 1937
- Teil 2 - ISO 7816-2, "Abmessungen von Kontaktstellen", 1988
- Teil 3 - ISO/IEC 7816-3 "Protokolle für elektronische Signale &. Übertragungen", 1989]
- nachstehend bezeichnet als "ISO 7816".
- Die Erfindung ist auf die Architektur dieser Lesung ausgerichtet, basierend auf mathematischen, von Montgomery veröffentlichten Innovationen, mit mehreren Modifikationen und Verbesserungen, und es werden nicht naheliegende Verfahren zur Reduzierung der für die modulare Potenzierung notwendigen Zeit um etwas mehr als die Hälfte der erforderlichen Zeit bei Einsatz von bekannten Verarbeitungsverfahren und des Montgomery-Verfahrens dargelegt.
- Die Erfindung wird in der folgenden Beschreibung unter Einsatz der allgemeinen, nachstehend beschriebenen Prinzipien und verfahren erläutere.
- Zur modularen Multiplikation im Bereich der Primärzahlen und der zusammengesetzten Primärzahlen definieren wir A und B als Multiplikanden und den Multiplikator, und N als den konstanten Koeffizienten, der üblicherweise Größer ist als A oder B . N kann in einigen Fällen kleiner sein als A. Wir definieren A, B und N als m . k = n Bit lange Operanden. Jede k Bit Gruppe wird Zeichen genannt. Dann sind A, B und N jeder m Zeichen lang. Zur Erleichterung der Verfolgung der ersten Implementierung und bei der schrittweisen Erläuterung des Verfahrens nehmen wir an, daß A, B und N 512 Bus lang sind (n = 512); nehmen wir an, daß k aufgrund der kosteneffektiven Länge der Multiplikatoren 32 Bits lang ist und m = 16 die Zahl der Zeichen in einem Operanden und ebenfalls die Zahl der Iterationen in einer Quadrierungs- oder Multiplikationsschleife mit einem 512 Bit Operanden ist. Es ist klar, daß alle Operanden ganze Zahlen sind.
- Wir verwenden das Symbol = , um die Kongruenz von modularen Zahlen anzugeben, zum Beispiel 16 = 2 mod. 7, und wir sagen, 16 ist kongruent zu 2 Modulo 7, da 2 der Rest ist, wenn 16 durch 1 dividiert wird. Wenn wir schreiben Y mod., N = X; können sowohl Y als auch X größer sein als N; allerdings werden bei positivem X und Y die Reste identisch sein. Anzumerken ist ebenfalls, daß die Kongruenz einer negativen ganzen Zahl Y Y + uN ist, wobei N der Modulus ist, und falls die Kongruenz von Y geringer als N ist, wird u die Kleinste ganze Zahl sein, was ein positives Ergebnis ergibt.
- Wir verwenden das Symbol t zur Bezeichnung der Kongruenz in einem engeren Sinne. Wahrend der hierin beschriebenen Prozesse ist ein Wert häufig entweder der gewünschte Wen oder gleich dem gewünschten Wen plus dem konstanten Koeffizienten. Zum Beispiel kann X Y 2 mod. 7 X gleich 2 oder 9 sein. Wir sagen. X hat eine begrenzte Kongruenz mit 2 mod. 7.
- Wenn wir schreiben X = A mod. .N, definieren wir X als den Rest von A, dividiere durch N, zum Beispiel 3 = 45 mod. 7.
- In der Zahlentheorie ist das modulare multiplikative Gegenteil ein grundlegendes Konzept. Zum Beispiel wird das modulare multiplikative Gegenteil von x als X&supmin;¹ geschrieben, das durch XX&supmin;¹ mod. N = 1 definiere wird. Wenn X = 3 und N = 13, dann ist X&supmin;¹ = 9, das heiße, der Rest von 3 . 9 dividiert durch 13 ist 1.
- Die Akronyme MS und LS werden zur Bezeichnung der größten und der kleinsten Signifikanten bei der Referenzierung von Bits, Zeichen und fallen Operandenwerten eingesetzt.
- In dieser gesamten Spezifikation bezeichnet N sowohl den Wert N als auch den Namen des Umschaltzahlwerkes, das N enthält, A und N sind während einer ganzen Potenzierung konstante Werte. A ist der Wert der Zahl, die zu potenzieren ist. Während der ersten Iteration einer Potenzierung ist B gleich A . B ist ebenfalls der Name des Zählwerks, in der", sich der kumulierte Wert, der letztendlich dem gewünschten Ergebnis der Potenzierung entspricht, befindet. S bezeichnet einen temporären Wert und ebenfalls das Zählwerks, in dem Y von S gespeichert ist. S(i-1) bezeichnet den Wert von S zu Beginn der i. Iteration: S&sub0; bezeichnet das LS Zeichen eines S (i)ten Wertes.
- Wir beziehen uns auf das (später definierte) Verfahren (A . B) N als Multiplikation im -Bereich oder manchmal einfach eines Multiplikationsvorgangs.
- Andere Symbole sind diejenigen, die auch üblicherweise in der Arithmetik verwendet werden:
- In einem klassischen Ansatz zur Berechnung einer modularen Multiplikation A . B mod. N wird der Rest des Produkts A . B durch einen Divisionsprozeß errechnet. Die Implementierung eines Divisionsprozesses ist schwieriger durchzuführen als ein Multiplikationsprozeß.
- Durch Einsatz des modularen Reduktionsverfahrens nach Montgomery wird die Division im wesentlichen durch Multiplikationen ersetzt, die vorausberechnete Konstanten verwenden.
- Die Punktion (A . B) N nach Montgomery führt eine Multiplikations-Modulo N des Produkts A . B im -Bereich durch. Die Wiedergewinnung aus dem p-Bereich zurück in den normalen modularen Bereich wird durch Darstellung von im Ergebnis von (A . B)N und einer vorausberechneten Konstante H dargestellt. Falls nun P = p (A . B) N ist, dann ist (P . H)N = A . B mod. N; dadurch wird eine normale modulare Multiplikation in zwei -Bereichs-Multiplikationen durchgeführt.
- Das Ziel effizienter modularer Reduktionsverfahren ist die Verhinderung einer Serie von Multiplikations- und Divisionsvorgängen mit Operanden, die n und 2n Bit lang sind, durch die Durchführung einer Serie von.
- Multiplikationen. Additionen und Subtraktionen mit Operanden, die n Bits lang sind und die ein Endergebnis erzielen, das ein Maximum an n Bit lang ist. Zur Darstellung der Lehre nach Montgomery beobachten wir, daß bei vorgegebenem A, B und ungeradem N (diese ungerader konstanten Faktoren sind immer entweder einfach oder eine Komponente großer Primzahlen) gibt es immer ein Q, so daß A . B + Q . N in einer Zahl resultiere, dessen n LS Bits Null sind oder
- P . 2n = A . B + Q . N.
- Dies bedeutet, daß wir einen 2n Bits langen Ausdruck haben, dessen N LS Bits Null sind.
- Lassen wir nun I . 2n = 1 mod. N sein (I existiere für alle ungeraden Ns). Die Multiplikation beider Seiten der vorstehenden Gleichung durch I ergibt die folgende Kongruenz:
- von der linken Seite der Gleichung;
- P . I . 2n = N (Es sei daran erinnert, daß I . 2n = 1 mod. N ist)
- und von der rechten Seite:
- A . B . I + Q . N . I = AB . I mod. N (Es sei daran erinnert, daß Q . N . I = 0 mod. N ist),
- daher
- P = A . B . I mod. N
- Leider bedeutet dies auch, daß ein parasitärer Faktor I jedes Mal dann eingeführt wird, wenn die Multiplikation im -Bereich durchgeführt wird.
- Wir definieren den Operator derart, daß:
- P = A . B . I mod. N = (A . B) N
- und wir nennen dies "Multiplikation von A Mal B im - Bereich".
- Die Wiedergewinnung vom -Bereich wird durch Anwendung von auf P . H berechnet, was ergibt:
- (P . H) N = A . B mod. N;
- Wir können den Wert von H durch Ersatz von P in der vorstehenden Kongruenz ableiten. Wir finden:
- (P . H) N = (A . B) (H) (I) mod. N;
- (siehe, daß A . B . I ← P; H ← H; [← und jeder Multiplikationsvorgang führt einen Parasiten, I ein]
- Falls H mit dem vielfachen Gegenteil von I² Kongruent ist, dann ist die Kongruenz gültig, daher
- H = I·² mod. N = 22n mod. N
- (H ist eine Funktion von N, und wir nennen es den Parameter H)
- Zur Darstellung des -Operators auf A . B, führen wir das folgende Verfahren unter Einsatz der vorausberechneten Konstante J fort:
- 1) X = A . B
- 2) Y = (X . J) mod. 2n (es sind nur die n LS Bits notwendig)
- 3) 2 = X + Y . N
- 4) S = 2 / 2n (Die Anforderung an J i an, daß es Z zwingt durch 2n teilbar zu sein)
- 5) P S inod. N (N ist von S zu subtrahieren, falls S ≥ N ist.)
- Schließlich, bei Schritt 5):
- [nach Subtraktion von N, falls nötig:
- P = (A . B)N]
- Unter Fortführung des obigen:
- Y = A . B . J mod. 2n (unter Einsatz nur der n LS Bits) und
- Z = A . B + (A . B . J mod. 2n). N
- Damit Z durch 2 (die n LS Bus von Z müssen Null sein) teilbar ist, muß folgende Kongruenz existieren:
- [A . B + (A . B . J mod. 2n). N] mod. 2n = 0
- Damit diese Kongruenz existiere, muß N . J mod. 2n kongruent zu -1 sein oder:
- J = -N&supmin;¹ mod. 2n
- und wir haben die Konstante J gefunden.
- Daher ist J eine vorausberechnete Konstante, die nur eine Funktion von N ist und naheliegenderweise müssen wir immer das positive J auswählen, das kleiner als M ist.
- Daher verwendet: das aufgezeigte Verfahren, wie dem Fachmann einleuchten wird, drei Multiplikationen, eine Summenbildung und ein Maximum an Subtraktionen für das vorgegebene A, B, IM und eine vorausberechnete Konstante: wir erhalten (A . B)N. Unter Verwendung dieses Ergebnisses, desselben Verfahrens und einer vorausberechneten Konstante H (einer Funktion des Moduls N), sind wir in der Lage. A . B mod. N zu finden. Da A gleich B sein kann, kann dieser Operator als eine Einheit zur Quadrierung oder Multiplikation in der modularen Arithmetik verwendet werden.
- Im vorstehenden Abschnitt wurde ein Verfahren zur modularen Multiplikation aufgezeigt, das Multiplikationen von Operanden verlange, die alle n Bits lang waren, und Ergebnisse, die 2n + 1 Bits Speicherplatz erforderten.
- Durch den Einsatz von Montgomerys überlappter Reduktion (gemäß des vorgenannten Dokuments von Dussel) ist es möglich, die Multiplikationsvorgänge mit kürzeren Operanden, Zählwerken und Hardware-Multiplikacoren durchzuführen, was die Implementierung einer elektronischen Vorrichtung mit relativ wenigen logischen Gattern ermögliche.
- Bei Einsatz eines k Bit Multiplikators IST; es angebracht, Zeichen von K Bit Länge zu definieren; es gibt m Zeichen in n; das heiße m . k = n.
- Je wird das LS Zeichen von J sein.
- Daher
- J&sub0; = -N&sub0;&supmin;¹ mod. 2 (J&sub0; existiert als N ist ungerade)
- Dann wird unter Einsatz von Montgomerys überlappter Reduktion p (A . b)N in m Iterationen uncer folgender Anfangsbedingung und unter Fortführung der Schritte (1) bis (5) dargestellt. Der Verlauf der Erfindung folge diesen Schritten auf zusammenfallende Weise.
- Zu Beginn S(0) = 0 (der Y Wert, von S zu Beginn der ersten Iteration).
- Für i = 1, 2... m
- (1) X = S (i-1) + Ai-j. B (Ai-1 ist das i-1. Zeichen von A; S (i-1) ist der Wert von S zu Beginn der i. Iteration)
- (2)Y&sub0; = X&sub0; . J&sub0; mod. 2k (Dia LK k Bits des Produkts X&sub0; . J&sub0;)
- (Das Verfahren verwendet und berechnet nur die k LS Bits, zum Beispiel den geringsten Signifikanten 32 Bits).
- (3) 2 = X + Y&sub0; . N
- (4) S (i) = 2/2k (Die k LS Bus von 2 sind immer 0, daher ist Z immer durch 2k teilbar. Diese Division ist gleichbedeutend mit einer k Bit rechten Versetzung, da die LK k Bits von Z alle Null sind; oder, wie im Verlauf gesehen werden wird, die LK k Bits von 2 werden einfach unbeachtet gelassen.
- (5) S(i) = S(i) mod. N (N ist von solchen S(i)s zu subtrahieren, die größer sind als N).
- Schließlich, bei der letzten Iteration (nach der Subtraktion von N. falls notwendig). C = S(m) = (A . B) N . Um F = A . B mod. N abzuleiten, müssen wir die Berechnung (C . H)N im -Bereich durchführen.
- Nun beweisen wir, daß S(i) für alle S(i)s kleiner ist als 2N (nicht der in Montgomery Beweisführung inbegriffen).
- Wir beobachten, daß bei Operanden, die im Verfahren verwendet werden:
- S(i-1) < N; B < N und Ai-1 < 2k
- (Die ersten beiden Ungleichheiten bleiben, da zu Beginn einer Iteration N von S (i-1) und B subtrahiere wird, wenn sie entweder größer als oder gleich N waren. Die dritte Ungleichheit bleibe, da 2k eine k + 1 Bit lange Zahl ist, deren MS Bit "1" ist, während Ai-1 ein k Bit: langer Operand ist).
- Per Definition:
- S(i-1) = 2/2k (Der Wert von S am Ende des Verfahrens vor einer möglichen Subtraktion)
- Ersatz im obigen Gleichungssatz:
- Z = S(i-1) · A-i-1 . B + (X&sub0; . J&sub0; mod. 2k) N
- Anzumerken ist, daß bei Berücksichtigung des maximale Wertes jedes Elements in der vorstehenden Gleichung wir die Ungleichheit von Z erhalten:
- 2 < (N - 1) + (2k - 1) (N - 1) + (2k - 1) . N = 2kN + 2kN - N - 2k
- und sicherlich
- 2 < 2kN + 2kN
- Nun werden beide Seiten der Ungleichheit durch 2k dividiert:
- 2/2k < N + N
- und wir haben bewiesen, daß eine Subtraktion von N alles ist, was jemals zur Korrektur eines S(i) oder feines B notwendig ist.
- Die folgenden Berechnungen können leicht mit einen Handrechner überprüft werden, der über einen hexadezimalen Modus verfüge. Unter Verwendung des hexadezimalen Format nehmen wir an:
- N = a59 (der konstante Koeffizient), A = 99b (der Multiplikator), B = 5c3 (der Multiplikand), n = 12, (die Sie Länge von N), k = 4, (die Größe in Bits des Multiplikators and ebenfalls die Größe eines Zeichens) und m = 3, da n = k . m.
- J&sub0; = 7 da 7 . 9 = -1 mod. 16 and H = 2²&supmin;¹² mod. a59 = 44b.
- Das erwartete Ergebnis ist P = A . B mod. N = 99b . 5c3 mod. a59 = 375811 mod. a59 = 220&sub1;&sub6;
- Zu Beginn: S(0) = 0
- Stufe 1 X = S(0) + Ao . B = 0 + b . 5c3 = 3f61
- Y&sub0; = X&sub0; . J&sub0; mod. 2k = 7
- Z = X + Y&sub0; . N = 3f61 + 7 . a59 = 87d0
- S(1l) = Z / k = 87d (welches kleiner als N ist)
- Stufe 2 · = S(1) + A&sub1; . B = 87d + 9 . 5c3 = 3c58
- Y&sub0; = X&sub0; . J&sub0; mod. 2k = 8 . 7 mod. 2 = 8
- Z = X + Y&sub0; . N = 3c58 + 52c8 = 8f20
- S(2) = 2/2k = 8f2 (welches kleiner als N ist)
- Stufe 3 X = S(2) + A2 . B = 8f2 + 9 . 5c3 = 3ccd
- Y&sub0; = d . 7 mod. 2&sup4; = b
- 2 = X + Y&sub0; . N = 3ccd + b . a59 = aea0
- S(3) = Z / 2" = aea. da 3(3) = . N.
- S(3) = aea - a59 = 91
- Daher C = (A . B)N = 91&sub1;&sub6;
- Die Wiedergewinnung aus dem -Bereich wird durch Berechnung von (C . H)N erreiche:
- Auch hier, zu Beginn: S(0) = 0
- Stufe 1 X = S(0) + . H = 0 + 1 . 44b = 44b
- Y&sub0; = d
- Z = X + Y&sub0; . N = 44b + 8685 = 8ad0
- S(1) = Z / 2k = Bad
- Stufe 2 X = S(1) + C&sub1; . H = 8ad + 9 . 44b = 2f50
- Y&sub0; = 0
- Z = X + Y&sub0; . N = 2f50 + 0 = = 2f50
- S(2) = 2/2k = 2L5
- Stufe 3 X = S(2) + C&sub2; . H = 2f5 + 0 . 44b = 2f5
- Y&sub0; = 3
- Z = X + Y0 . N = 2f5 + 3 . a59 = 2200
- S(3) = 2 / 2k = 220&sub1;&sub6;,
- was der erwartete Werc von 99b 5c3 mod. a59 ist.
- Die Gültigkeit der Operation kann intuitiv verstanden werden, wenn wir realisieren, daß, wenn wir in jeder Stufe LS lullen außer Betracht lassen, wir im wesentlichen die n MS Bits mit 2k multiplizieren. Dementsprechend ist in Jeder Stufe das 1. Segment des Multiplikators ebenfalls eine mit 2ik multiplizierte Zahl, was ihr die gleiche Wertung wie S(i) verleiht.
- Viele Verschlüsselungsverfahren, wie zum Beispiel der MIST Digital Signatures Standard oder die das Chinese Remainder Theorem (der chinesische Lehrsatz zur Restlehre) verwendende modulare Potenzierung erfordern die Reduzierung einer Zahl, die größer ist (häufig über zweimal so groß) als ein zweiter konstanter Koeffizient. Diese modularen Reaktionen Können effizient in einer überlappten Multiplikation nach Montgomery unter Einsatz einer erfindungsgemäßen Maschine und einer nicht naheliegenden Erweiterung des Algorithmus nach Montgomery ausgeführt werden.
- Anzumerken ist, daß in den voranstehenden Beispielen impliziere wurde, daß n, die. Länge des konstanten Koeffizienten des Operanden, ebenfalls die genaue Lange von N war. Für gewöhnliche Potenzierungen und Multiplikationen wäre dies am effizientesten. In den Fällen jedoch, in denen eine Reduzierung der Größe notwendig ist, kann eine zweite Konstante, I&supmin;¹ = 2n mod. N eingesetzt werden, die, wenn Montgomery mit der derart reduzierten Zahl multipliziert wird, eine Operation mit einer minimalen Reduktion ergibt. Diese Konstante I ¹ kann mit demselben Mechanismus berechnet werden, der die Konstante H berechnet (siehe Abschnitt über die Berechnung des Parameters H), nämlich durch Plazierung des Moduls N in den wichtigsten Teil des Divisoroperanden, so daß sein bedeutendstes "I" im bedeutendsten Bit des Divisorregisters verbleibe. Die Zahl der Verschlebungs- / Versuchs-Subtraktionen, muß naheliegenderweise nun n + I - L sein, wobei L die Zahl der relevanten Bits von N ist. Anzumerken ist, daß dieses I&supmin;¹ ein L Bits langer Operand sein wird.
- Zum Beweis dieser Prämisse wiederholen wir zunächst noch einmal, daß die Multiplikation nach Montgomery von A B mod. N, (YA . B)N) die Kongruenz A . B . I mod. N erziele. Wenn wir B = I&supmin;¹ zuordnen, dann
- (A . I¹)N = A . I&supmin;¹ . I mod. N = A mod. N.
- Um eine Reduktion vor. T, auf mod. q (c mod. q) zu demonstrieren, in der die Länge des Multiplikationsregisters, in dem c ursprünglich gespeichert ist, 24 Bits lang ist, größer ist als die Länge von q.
- Nehmen wir eine Wortlänge (Große des Maschinenmultiplikators) von 8 Bit und die folgenden Testvariablen an:
- n = 24: k = 8; t = 0a f5 9b; q = 2b 13; und
- R = I&supmin;¹ = 2 mod. q = 141 d
- Bei einer einfachen Divisionsberechnung wissen wir durch Vergleich, daß c mod. q = 5c8 ist.
- Anzumerken ist, daß, die Reduzierung und die Wiedergewinnung in einer Multiplikation nach Montgomery durchgeführt werden:
- Zu Beginn: S(0) = 0, A = c: = 0a f5 9b, B = R = 141d, N = q = 2b 13
- Stufe 1 X = S(0) + A&sub0; . B = 0 + 9 - 141d = c2d 8f
- Y&sub0; = X&sub0; . J&sub0; mod. 2k = 8f . e5 mod. 2&sup8; = eb
- Z = X + Y&sub0; . N = c2d 8f + eb . 2b 13 = 33 b8 00
- S(1) Z / 2k mod. N = 33 b8, welches großer ist als N
- S(1) = 33 b8 - 2b 13 = 8 a5
- Sture 2 · = S(1) + A . B = 8 a5 -r L5. 141d - 13 48 66
- Y&sub0; = X&sub0; . J&sub0; mod. 2k = 66 . L5 mod. 2&sup8; = 3e
- Z = X + Y&sub0; . N = 13 48 66 + 3e . 2b 13 = 1d b7 00
- S(2) = Z / 2k mod. N = 1d b7
- Stufe 3 X = S(2) + A&sub2; . B = 1d b7 + 0A . 14 1d = e6 d9
- Y&sub0; = d9 . e5 mod. 2&sup8; = 1d
- Z = X + Y&sub0; . N = e6 d9 + 1d . 2b 13 = 5 c8 00
- S(3) = 2 / 2k mod. N = 5 c8,
- Und t mod. q = 5c8, wie zuvor berechnet.
- Die folgende Ableitung einer Sequenz [D. Knuch, Die Kunst des Programmierens von Computern. Band 2: seminumerische Algorithmen, Addison-Wesley, Reading Maß., 1981], nachstehend als "Knuch" bezeichnet, erläutert eine Sequenz von Quadraturen und Multiplikationen, die eine modulare Potenzierung implizieren.
- Unter der Annahme, daß wir die Konstanten im obigen Abschnitt Vorausberechnet haben und daß unsere Vorrichtung im -Bereich sowohl Quadrieren als auch Multiplizieren kann, möchten wir folgendes berechnen:
- C = AE mod. N
- Lassen wir L(j) den J. Bit in der binären Darstellung des Exponenten L angeben, beginnend mit dem MS Bit, dessen Index I ist und abschließend mit dem LS Bit, dessen Index q ist, können wir wie folgt potenzieren:
- a) B = A
- BEI j = 2 BIS q
- a) B (B . B)N
- b) B (B . H)N (die Schritte a und b entsprechen B B² mod. N)
- WENN E(j) = 1 DANN
- a) B (B . A)N
- b) B (B . H)N (die Schritte a und b entsprechen den S Y
- B . A mod. N)
- Im Übergang von jedem Schritt zum nächsten wird M von B subtrahiere wann immer B größer als oder gleich N ist.
- Nach der letzten Iteration ist: der Wen: B # bis A&sup8; mod. M.
- Es gibt effizientere systemgebundene Protokolle, die mit der beschriebenen Schaltung zur Durchführung der modularen Potenzierung verwendet werden können; wir nennen zwei Verschlüsselungsprotokolle, bei der das hierin beschriebene Verfahren die Geschwindigkeit der Potenzierung häufig verdoppeln wird. Im RSA Verfahren [R. L. Rivest und andere, "Ein verfahren zum Erhalt, digitaler Unterschriften und Geheimverschlüsselungen mit öffentlichem Schlüssel", Kommentar zum ACM, Band 21, 120-126, 1978], nachstehend bezeichnet als "RSA" und dem Diffle-Hellman. Protokoll [W. Diffle und M. E. Hellman, "Neue Richtungen bei der Verschlüsselung", IEEE Trans, on Inform. Theorie. Band IT- 22, 644 - 654, 1976], nachstehend als "Diffle-Hellman" bezeichnet, werden die meisten der schwierigen Potenzierungen durch Einsatz eines konstanten Exponenten durchgeführt. Das Verfahren des folgenden Abschnitts (ein effizientes Verfahren für eine Wiedergewinnung von einer Potenzierung eines -Bereichs) verringere die Berechnungszeit für jene Berechnungen, bei denen ein konstanter Exponent verwendet wird. Wenn dieses Verfahren eingesetzt wird, entfallen die Schritte b) im beschriebenen Potenzierungsverfahren (alle (B . H)N Multiplikationen), und der endgültige Wert von B wird nach der q. Iteration, der Potenzierung im -Bereich nach Montgomery mit einer vorausberechneten Konstanten T multipliziert.
- Denjenigen, die in die Implementierung eingebunden sind, leuchtet es ein, daß es für vollständige RSA-Unterschriften mit dieser Schaltung unter Verwendung des Chinese Remainder Theorem [beschrieben im vorgenannten Artikel von Knutch] möglich ist, eine weitere Reduzierung um mehr als 70% der Berechnungszeit vorzunehmen.
- Das Quadrierungs- und Multiplikationsprotokoll des vorstehenden Absatzes kann verbessere werden, und es ist möglich, die Zahl der -Bereichs-Multiplikationen während der iterativen Sequenz durch Einführung einer neuen vorausberechneten Konstanten T zu reduzieren, die eine Funktion des konstanten Koeffizienten N und des Exponenten E ist.
- Wo
- und
- q ist die Zahl der relevanten Bits In E (unter Wegfall aller voranstehenden Nullen)
- Die modulare Potenzierung kann nun berechnet werden mit der Sequenz:
- Zu Beginn: B = A
- BEI j = 2 BIS q
- B (B . B)N
- WENN E(j) = 1 DANN
- B (B . A) N
- ENDE FÜR
- B (B . T) M
- Nehmen wir wieder an, daß für jeden Übergang von einem Schritt zum nächsten N von B subtrahiert wird, wann immer E größer als oder gleich N ist.
- Anzumerken ist wiederum, daß jede Multiplikation im - Bereich einer modularen Multiplikation desselben Faktors mit L entspricht, zum Beispiel (X . Y) = X . Y . I mod. N.
- Dieses Beispiel demonstriere den Einsatz von T bei der Berechnung von A² mod, M und macht: Ts Definition deutlich.
- Nehmen wir an n = 4 und E = 5 = 0101 . q (nach Wegfall von Es voranstehender Null) ist 3, daher:
- E (1) = I; E (2) = 0; und E (3) = 1
- und T ist vorausberechnet:
- T = (2n) mod. N = (I&supmin;¹) mod. N
- Σ = 2q·1 + E mod. 2q-1 = 23-1 - 5 mod. 23-1 = 4 + 1 = 5
- und daher:
- T = I mod. N.
- wie zu sehen ist, wenn
- zu Beginn:
- B = A
- j = 2, E(2) = 0
- B = (B . B)N = A².I mod. N
- j = 3 . E(3) = 1
- E = (B . B)N = B² = A . I² . I mod. N
- B = (B . A)N = A . I³ . A . I mod. N
- und schließlich:
- B P(B . T)N = A&sup5; . I&sup4; . I&sup5; . I mod. A5 mod. N
- Die Einführung des Parameters T kann vermieden werden, wenn die nachstehenden Schritte zur Berechnung von A befolge werden:
- Annehmend, daß wir die Konstante H nach Montgomery vorausberechnet haben und daß unsere Vorrichtung Im - Bereich sowohl Quadraturen als auch Multiplikationen berechnen kann, mochten wir folgende Berechnung anstellen:
- C = A mod. N
- Lassen wir L(j) den j. Bit in der binären Darstellung des Exponenten E angeben, beginnend mit dem MS Bit, dessen Index I ist und abschließend mit dem LS Bit, dessen Index q ist, können wir wie folgt für ungerade Exponenten potenzieren;
- A* (A . H) N
- B = A*
- BEI: j = 2 BIS q-1
- B (B . B)N
- WENN E(j) = 1 DANN
- B (B . A*)N
- ENDE FÜR
- B (B . A)N
- C = B
- Beim Übergang von federn Schritt zum nächsten wird M von 5 subtrahiere, wann immer B größer als oder gleich N ist.
- Nach der letzten Iteration ist der Wen B Y bis AE mod. N, und C ist der endgültige Wen.
- Bei geraden Exponenten könnte der letzte Schritt sein:
- B Y (B . 1)N anstaue von B Y (B . A)N
- Zur Klarstellung werden wir folgendes Beispiel verwenden:
- E = 1011 → L(-1) = I. E(2) = 0: E(3) = 1; E(4) = 1;
- Um auf A10¹¹ mod. N; q = 4 zu kommen
- A = (A . H) N = AI&supmin;² I = AI&supmin;¹ mod. N
- B = A*
- bei j = 2 bis q
- B = (B .B)N, was A² (I&supmin;¹)² . I = A² - I&supmin;² ergibt
- E(2) = 0; B = A² . I&supmin;¹
- j = 3 B = (B . B)N = A² (I&supmin;¹)² . I = A' -
- I&supmin;¹
- E(3) = I B = (B . A*)N = (A&sup4; . I&supmin;¹) (AI&supmin;¹) . I = A&sup5; - I&supmin;¹
- j = 4 B = (B . B)N = A¹&sup0; . I² - I = A . I&supmin;¹
- Da 2(4) eine ungerade Zahl war erfolgt die letzte Multiplikation mit: A, um den Parasiten I ¹ zu entfernen.
- B = (B . A) = A¹&sup0; . I&supmin;¹ . A . I = A¹¹
- C = B
- Der Parameter H ist eine Konstante, die für Berechnungen im Bereich Montgomery von grundlegender Bedeutung ist. Bei Verwendung bestimmter Protokolle wird H eine Konstante sein, die auf einem größeren Computer vorausberechnet werden könnte, oder in anderen Fallen eine sinnvolle Konstante sein könnte, die in einer ersten Stufe ein Parameter für Berechnungen einer nützlicheren Konstante sein wird. Siehe vorstehender Abschnitt.
- Bei allgemein üblichen Kommunikationen kann angenommen werden, daß H vorausberechnet wird, allerdings könnte es bei mehreren Protokollen, Zum Beispiel bei der Zugriffsberechtigungsprüfung einer Unterschrift bei einer Direktkommunikation in RSA notwendig sein. H mit dieser Vorrichtung zu berechnen, zum Beispiel der SmartCard. Der Parameter H wird definiert als:
- H = 22 mod. N
- Das bedeutet, daß H der Rest eines normalen Divisionsvorgangs ist, in dem eine Zeichenfolge, bei der auf ein MS Bit 2n LS Nullen folgen (a 2n + 1 Bis langer Operand), durch die modulare Basis N dividiert wird.
- Die binäre Division durch einen Divisor N eines Dividenden, bestehend aus einer "1" und einer Zeichenfolge von Nullen, ist gleichbedeutend mit der sequentiellen Versuchssubtraktion N, das heißt der Subtraktion von N vom restlichen Versuchsdividenden, wenn die signifikantesten n+1 Bits größer sind als N (siehe Beispiel).
- Obwohl der Dividend 2n+1 Bits lang ist, ist es naheliegend, daß der restliche Versuchsdividend, der durch eine Subtraktion beeinflußt wird, niemals länger als n + 1 Bits lang ist und die LS Ziffern Nullen sind.
- Zum Beispiel:
- H berechnen, wenn = 11&sub1;&sub0; = 1011&sub1;&sub1; (daher ist die Bit-Länge von N 4, das heißt n = 4)
- Division, wie wir es manuell bei langen Divisionen der Basis 2 tun würden:
- Ergebnis der 5. Runde (n+1) 0011 = H 3 Basis 10 = der Rest)
- wo wir überprüfe haben, daß H = 3&sub1;&sub0;.
- Es gibt n + 1 Versuchssubtraktionen in einem H Divisionsverfahren. Anzumerken ist ebenfalls, daß der Versuchsdividend ebenfalls n + 1 Bits lang ist. Diese Sequenz der Subtraktionen wird in der Hardware gemäß der nachstehenden Beschreibung verfolge.
- Diese Erfindung betrifft ein mikroelektronisches Gerät und ein Verfahren zu seinem Einsatz zur Durchführung der modularen Quadrierung und der modularen Multiplikation eines Multiplikators durch einen Multiplikanden, jeweils gemäß Anspruch 1 und 18.
- Die Ansprüche 2 bis 17 betreffen weitere Ausbildungsarten des Geräts gemäß Anspruch 1.
- Diese Erfindung beziehe sich auf eine kompakte synchrone mikroelektronische Peripheriemaschine für Standardmikroprozessoren mit Mitteln für eigene Taktung und Kontrolle, deren wesentliche Elemente sind: drei unterteilte, geschaltete und getaktete Umschaltzählwerke B, S und N; zwei einzige serielle / parallele Multiplex- Multiplikationswerke; Entnahme-Sensoren, Hilfssubtraktionswerke und Addierwerke; Verzögerungszählwerke und Schaltelemente; die alle einen vollständig integrierte zusammenfallenden und synchronen Verfahrensansatz zu einer modularen Multiplikation, Quadrierung und Potenzierung darstellen. Eine weitere Ausbildungsart implementiert eine einzigartige, nicht direkt ableitbare synchronisierte Hardware-Ableitung des Montgomery-Verfahrens, die zur modularen Hardwaremultiplikation, -quadrierung und potenzierung ausgelegt ist. Alternativ ist es ebenfalls möglich, eine Ableitung des Verfahrens nach Montgomery als eine Vielzahl von simultanen seriellen Prozessen durchzuführen, das heiße. Multiplikationen, Subtraktionen, Additionen, gespeicherte Verzögerungen und eine Division durch 2. Die Prozesse werden parallel in dem Maße durchgeführt, wie serielle Prozesse darin aufgehen.
- In einer weiteren Ausbildungsart it es möglich, eine Ableitung des Verfahrens nach Montgomery als eine Vielzahl von seriellen Prozessen zur modularen Multiplikation, Quadrierung und Potenzierung durchzuführen, unter Ausschluß des Einsatzes von weiten internen Bussen. Es ist weiterhin möglich, diese Ableitung ausreichend Kompakt zu machen, damit Sie auf einem Mikrochip hergestellt wird, gemäß den Normen ISO 7816 für tragbare Smart Cards, die die bekannte 1 Mikron Technologie verwenden.
- Weiterhin wird davon ausgegangen, daß es möglich ist, eine Ableitung des Verfahrens nach Montgomery gemäß obiger Beschreibung als eine Vielzahl serieller Prozesse zur modularen Multiplikation, Quadrierung und Potenzierung durchzuführen, die durch irgendeinen beliebigen Mikroprozessor mit einem internen Bus kontrolliert werden kann, ohne seine grundlegende Architektur zu ändern und insbesondere ohne eine Veränderung des Designs der Speicher für den dualen Portzugang und mit relativ geringen Anforderungen an die Firmware.
- Eine derartige Maschine kann den Mikrokontroller ebenfalls zur Regulierung der Kaskade von -Bereichs-Sequenzen von Quadrierungen und Multiplikationen einsetzen, in denen der Exponent E nicht Im MULT Block gespeichert zu werden brauche, so daß ein n-Bit langes Umschaltzählwerk gespart wird; die MULT-Kontrolle wird vereinfache, während ein geringer zusätzlicher Mikrokontroller ROM-Coder erforderlich ist.
- Gemäß einer weiteren Ausbildungsart: der Maschine als Ergebnis des Ladens des A1 Zählwerks mit den "fliegenden" Quadrierungsmultiplikanden, während das Register B rotiert, wird das Abladen durch den Mikrokontroller der vorherigen endgültigen Werte von B und / oder B-N ausgeschlossen, um das Zählwerk A&sub1; mit Zeichen Bi wiederaufzuladen. Dies schone RAM des Mikrocontrollers und eliminiere wenigstens n effektive Taktgeberzyklen bei jeder Quadrierungsiteration.
- In einer weiteren Variante entfallen zwei Speicherzählwerke und getrennte serielle Subtraktionsvorgänge von einer direkten Implementierung des Verfahrens nach Montgomery. Dies erfolgt durch Darstellung einer einzigen seriellen Erkennung auf Z/k minus N zur Bestimmung, ob Z/2k großer als oder gleich N ist und anschließend bei nur einer seriellen Subtraktion kleiner werden kann als N Operanden.
- In einer weiteren Ausbildungsart ist der Schaltkreis derart quasi-parallel synchronisiere, daß nur zwei Multiplikatoren zur Durchführung von drei simultanen Multipllkationsvorgängen eingesetzt werden. In einer Silikonimplementierung können serielle / parallele Multiplikatoren 40% des Silikonbereichs einnehmen. Bei Einsatz von zwei anstatt drei seriellen / parallelen. Multiplikatoren verbleibe ausreichend Silikon zur Verdoppelung der Zahl der Zellen in den verbleibenden zwei Multiplikatoren. Siese Verdoppelung der Größe der Multiplikatoren reduziere die Dauer des Prozesses bei einer 512 Bit Multiplikation um über 45%.
- Es leuchtet ebenfalls ein, daß eine Maschine gemäß obiger Beschreibung mit einem digitalen Verzögerungsschaltkreis Delay-3 (einem k Bit Umschaltzählwerk) zur Synchronisierung des seriellen Addierwerks von X mit dem seriellen Ergebnis des Multiplikators ML1, Y&sub0; . N eingesetzt werden kann, unter Ausschluß der doppelten Speicherung von Produkten oder einer Wiederholung einer seriellen / parallelen Multiplikation.
- In einer weiteren Ausbildungsart gibt es zwei digitale Verzogerungsschaltkreise, Delay1 und Delay2 (zwei k Bit Umachaltzählwerke), die zur Synchronisierung von drei seriellen Multiplikationen verwendet werden, in denen N ein Faktor ist, daß heiße B . A&sub1;, X . J&sub0; und Y&sub0; . N.
- Alternativ könnte eine Maschine gemäß obiger Beschreibung konstruiere werden, in der ein digitaler Verzögerungsschaltkreis Delay3 den Vorgang des seriellen / parallelen Multiplikators ML2 synchronisiere, so daß er zwei getrennte Multiplikationsvorgänge im Prozeßstrom durchführen kann, das heiße X . J&sub0; und Y&sub0; . N.
- Es ist ebenfalls möglich, daß in einer solchen Maschine die Zählwerke S, B und N konfiguriert sind, um entweder n Bits oder n/2 Bits lang zu sein; wobei die Potenzierung über n/2 Längenmodule in etwas mehr als einem Achtel das effektiven Taktgerberzyklus abgeschlossen werden kann, der für n Bit lange Potenzierungen notwendig wäre.
- In einer weiteren Ausbildungsart wird eine Maschine gemäß obiger Beschreibung dargeboten, die, wenn sie mit einem Original-Wiedergewinnungsfaktor T betrieben wird, die Zahlen der Multiplikationsvorgängen im P-Bereich bei einer vollständigen Potenzierung der RSA-Unterschrift auf beinahe die Hälfte reduzieren.
- Unter der Vorwegnähme notwendiger Vorausberechnungen konnte diese Maschine aufgrund des "fliegenden" Ladens des A Zählwerks, der "fliegenden vorhersage" der Große der Inhalte des Zählwerks S und der "fliegenden" Synchronisierung des partiellen Operanden ebenfalls den vollständigen Multiplikationsvorgang (A . B) N einer n Bit Zahl in nur m(n+2k) effektiven Taktgeberzyklen ausführen.
- Diese Erfindung umfaßt weiterhin eine Maschine gemäß obiger Beschreibung, die dieselben Zählwerke in derselben Maschine wie bei den Multiplikationen nach Montgomery verwendet, zu der ein kleiner Entnahme-Sensor-Schaltkreis und dem Kontrollmechanismus ein einfaches Addierwerk hinzugefügt wurden, das in einem zweiten Modus arbeitet und den Parameter H berechnet.
- Es wird weiterhin vorweggenommen, daß jedes untergeordnete Verfahren und jedes Verfahren mit vorbestimmten Zahlen von Taktgeberzyklen ausgeführt werden, so daß eine Multiplikation im -Bereich und / oder eine Quadrierung in bekannten Sequenzen von Taktgeberzyklen durchgeführt werden, was die Ausbildung einer vereinfachten Kontrolle ermöglicht, die in einer Kaskade von selbsterregenden Zählmechanismen ohne interne Bedingungszweige besteht.
- Für jede der beschriebenen Maschinen (infra oder supra) konnte ein sogar noch weiter verbessertes Verfahren zur Durchführung modularer Potenzierungen von D = Ak mocd. N geliefert werden, bestehend aus den Schritten:
- 1. Speicherung des Exponenten E in einem Zählwerk des Computers
- 2. Laden des konstanten Koeffizienten in vorgenanntes Zählwerk N;
- 3. Setzen des vorgenannten Zählwerks S auf Null;
- 4. Durchführung eines Multiplikationsvorgangs
- von A* = (A . H)N, wahrend A der zu potenzierenden Operand IST. und H ein vorausberechneter Parameter wie zuvor definiere.
- 5. Laden von A* in das Basiszahlwerk B.
- 6. Durchführen eine Quadrierungsvorgangs der Inhaltes des Zählwerks B.
- 7. Umschalten besagten übrigen Exponenten E;
- 8. Ignorieren aller seiner Null Bits, die dem ersten 1 Bit vorausgehen und Ignorieren des ersten 1 Bits besagten Exponenten E und für alle folgenden Bits, die die Vorgänge 9 bis 10 durchführen;
- 9. Für jedes einzelne der besagten E Bits, unabhängig davon, ob sie 0 sind oder 1. Ausführen der Vorgänge 4 und 5 der zuvor dargestellten Quadrierungsmethoden, bei denen sowohl der Multiplikand als auch der Multiplikator aus dem Zählwerk B stammen und in dem die aufeinander folgenden Zeichen des Multiplikators nach Montgomery vom Zählwerk B ins Zählwerk A&sub1; geladen werden.
- 10. Falls das aktuelle Bit des Exponenten E 1 ist, und nur dann, nach Durchführung des Vorgangs S. Durchführung der Vorgänge 4 und 5 des zuvor hierin beschriebenen Multiplikationsvorgangs, in dem der Multiplikand der Inhalt des Zählwerks B und der Multiplikator die Basis A* ist; und
- 11. nach Durchführung der Schritts 8 - 10 für alle Eies von E, Durchführung einer zusätzlichen Multiplikation des Zählwerks B durch die ursprüngliche Basis A und dann Speichern des Ergebnisses des letzten Vorgangs als D AE mod. N im Zählwerk B.
- Ein weiterer Gegenstand der Erfindung (wiederum unter Einsatz jeglicher hierin (infra oder supra) beschriebenen Maschinen oder Verfahren) umfaßt: ein Verfahren zur Durchführung herkömmlicher Multiplikationen von zwei Zahlen, deren durchschnittliche signifikante Längen/2 Bits ist, umfassend die Durchführung der modularen Multiplikation besagter Zahlen durch das Multiplikationsverfahren gemäß Beschreibung wenigstens eines der hierin beschriebenen Verfahren (infra oder supra). in dem der konstante Koeffizient N eine n Bit Zahl ist, bestehend aus allen "1en" (ffrffff ... fff), unter Gleichsetzung von J&sub0; mit 1 und Laden des Multiplikanden in B und Bearbeitung von A wie in besagtem Multiplikationsverfahren von Anspruch 1; N kann alle Einsen sein, entweder durch ein Vorlade-Zählwerk N mit allen Einsen oder durch Einstellen des Multiplexers, der N ausgibt, um eine Serie von "harten" Einsen auszugeben.
- Es werden ein zusammenfallendes verfahren und eine einzigartige Hardwarearchitektur dargeboten, um eine modulare Potenzierung ohne Division mit derselben Zahl an Vorgangen durchzuführen, die mit einer herkömmlichen Multiplikations- / Divisionsvorrichtung durchgeführt worden wäre, in dem eine herkömmliche Vorrichtung bei jedem Vorgang sowohl eine Multiplikation als auch eine Division durchführen würde. Eine Division ist üblicherweise ein nicht deterministisches Verfahren und gilt als schwieriger und zeitraubender als eine Multiplikation.
- Die in dieser Erfindung realisierten Vorteile resultieren aus einer synchronisierten Sequenz serieller Prozesse, die Zusammengeführt werden, um simultan (parallel) drei Multiplikationsvorgänge auf n Bit Operanden zu erreichen, unter Einsatz von zwei einfachen k Bit seriellen / parallelen Multiplikatoren in (n + 2k) effektiven Taktgeberzyklen.
- Durch geeignete Synchronisierung und "fliegende" Erfassung und vorladende Operanden arbeitet die Maschine in einer deterministischen Weise, bei der alle Multiplikationen und Potenzierungen in einer vorbestimmten Zahl von Taktgeberzyklen ausgeführt, werden, Bedingte Zweige werden durch lokale Erfassung und Ausgleichsvorrichtungen ersetzt, was eine Grundlage für den Kontrollmechanismus der einfachen Art bietet, die, wenn sie verfeinere wird, aus einer Serie selbsterregender Zähler in Kaskadenform bestehen kann.
- Die Maschine stellt besonders geringe Anforderungen an den flüchtigen Speicher, da die Operanden für die gesamte Dauer des Vorgangs in die Maschine geladen und dort gespeichert werden, allerdings nutzt die Maschine die CPU, an die sie angeschlossen ist, zur Ausführung einfacher Ladungen und Abladungen und Befehlssequenzen der Maschine, während die Maschine ihre große Zahl an Berechnungen durchrühre. Die Verarbeitungszeit der Potenzierung ist tatsächlich unabhängig von der CPU, die sie kontrolliert. In der Praxis sind keine Veränderungen der Architektur notwendig, wenn die Maschine an irgendeine beliebige CPU angeschlossen wird. Die Hardware-Vorrichtung ist selbstbeinhaltend und kann an jede CPU Bus angeschlossen werden.
- Bei Einsatz dieser und zuvor patentierter sowie Verfahrenskontrollprotokolle des Standes der Technik wird das Mittel zur Beschleunigung des modularen Multiplikations- und Potenzierungsverfahrens geliefert, zusammen mit Mitteln zur Vorausberechnung der notwendigen Konstanten.
- Das Design der bevorzugten Ausbildungsarten der hierin beschriebenen Erfindung wurde kompaktiert und für den besonderen Zweck ausgelegt, einen modularen mathematischen Operator für Anwendungen mir Geheimverschlüsselungen mit öffentlichem Schlüssel auf portablen SmartCards darzubieten (die in Form und Größe mit den beliebten Magnetstreifenkredit- und -bankkarten identisch sind). Diese Karten werden in einer neuen Generation von Vorrichtungen mit Geheimverschlüsselungen mit öffentlichem Schlüssel zur Zugangskontrolle von Computern, Datenbanken und kritischen Installationen verwendet werden: zur Regulierung und Sicherung von Datenflüssen bei kaufmännischen, militärischen und häuslichen Transaktionen; zur Entschlüsselung codierter privater Fernsehsender, usw.
- Es dürfte geschätzt werden, daß die Vorrichtung ebenfalls in Computer- und Faxterminals, Türschlösser, Verkaufsautomaten, usw. eingebaut werden kann.
- Die beschriebene Hardware führe eine modulare Multiplikation und Potenzierung durch Anwendung des -Operators in einem neuen einzigartigen Verfahren durch. Weiterhin kann die Quadrierung auf dieselbe Weise durch Anwendung auf einen Multiplikanden and einen Multiplikator durchgeführt werden, die gleich sind. Modulares Potenzieren impliziere eine Folge modularer Multiplikationen und Quadrierungen, und daher wird es durch ein Verfahren durchgeführt, das die wiederholte, geeignet kombinierte und ausgerichtete Anwendung der vorgenannten Multiplikations-, Quadrierungs- und Potenzierungsverfahren umfaßt. Jedoch wird hierin eine neue und verbesserte Weise der Durchführung der modularen Potenzierung weiter spezifiziert.
- Das Verfahren zur Durchführung modularer Multiplikationen, bei denen der Multiplikand A, der Multiplikator B und der konstante Faktor jeder N m Zeichen von K Bits umfassen, wobei der Multiplikand und der Multiplikator nicht großer sind als der konstante Faktor, umfaßt die Schritte:
- 1 - Vorausberechnen eines Parameters H und wenigstens des am wenigsten signifikanten Zeichens J&sub0; eines anderen Parameters J gemäß nachstehender Definition und Laden von J&sub0; in ein K. Bit Zählwerk.
- 2 - Laden des Multiplikanden B und des konstanten Faktors n in jeweilige Zählwerke von n Bit Länge, in denen n = m . k;
- 3 - Setzen eines n Bit langen Zählwerks S auf Null und
- 4 - Durchführung einer i Iteration m Male, in der i von Null bis m-1 ist, wobei jede i. Iteration die folgenden Vorgänge umfaßt:
- a) Übertragung des i. Zeichens A1-.i auf den Multiplikanden A vom Zählwerkmittel A&sub1; in das Speichermittel, das aus Zählwerkmitteln und Schaltermitteln ausgewählt ist;
- b) Erzeugen des Wertes X = S (i-1) + A1-i . B, in dein S(1-i) der "aktualisierte" Wert von S gemäß hierin gegebener Definition ist, durch:
- I. Rechtes Zyklusumschalten des Zählwerks B in die Multiplikationsmittel.
- II. Serielles Multiplizieren von B mit A1-i
- II. Rechtes Zyklusumschalten des Koeffizienten-Zählwerks N
- IV. Bestimmung des "aktualisierten" Wertes von S(i-1) als den im Zählwerk S gespeicherten Wert
- nach der (i-1). Iteration, falls derselbe nicht, größer ist als N, oder, falls er größer ist als N, durch
- sein serielles Subtrahieren von N und Vorwegnahme der Ergebnisse als den "aktuellen" Wen
- von 3(i-1); und
- V. Rechtes Zyklusumschalten des Zählwerks S und serielles Addieren des Wertes der Multiplikation A1-i. B Bit Mal Bit zum "aktualisierten" Wert von S.
- c) Multiplizieren des LS Zeichens von X, Xo mit J&sub0; und Eingabe des Wertes X&sub0; . J&sub0; mod. 2k in das Zählwerkmittel als Y&sub0; bei Verzögerung von N und X durch k Takrgeberzyklen:
- d) Berechnung des Wert: es 2 = X + Y&sub0; . N durch:
- I Multiplizieren von Y&sub0; mit N durch eine verzögerte rechne Umschaltung des Zählwerks N
- zusammenfallend mit der vorgenannten rechten Zyklusumschaltung davon, und
- II Addieren von X zum Wert von Y&sub0; . N;
- e) Ignorieren des geringsten signifikanten Zeichens von Z und Eingabe der restlichen Zeichen in das Zählwerk S unter Eingabe von Z/2k mit Ausnahme der letzten Iteration;
- f) Vergleich von Z/2k mit N Bit per Bit zum Zwecke der Bestimmung des aktualisierten Wertes von S, S(i) in der hierin zuvor definierten Weise;
- g) in der das i Zeichen des Multiplikanden A zu jeder beliebigen Zeit während des vorgenannten Vorgangs in das Zählwerkmittel A geladen wird;
- 5) bei der letzten Iteration (m th) Ignorieren des geringsten signifikanten Zeichens von 2/2k und Eingabe der verbleibenden Zeichen in das Zählwerk B als den Wen von C (A . B) N;
- 6) Wiederholen der Schritte 3) bis 4), in denen C oder C-N, falls C größer ist als N, durch B ersetze wird und H durch A ersetze wird, um P (C . H) mod. N zu berechnen; und
- 7) Vorwegnahme des Wertes , der aus der letzten Iteration als das Ergebnis der Vorgänge A . B mod. N erhalten wird.
- Es wird ebenfalls ein Verfahren zur Durchführung der modularen Potenzierung von D = AE mod. N beschrieben, das die folgenden Schritte umfaßt:
- 1) Laden der Zahl des Koeffizienten in das vorgenannte Zählwerk N;
- 2) Setzen des vorgenannten Zählwerks S auf Null;
- 3) Laden der zu potenzierenden Basis A in vorgenanntes Zählwerk B;
- 4) Speichern des Exponenten B in ein Computer Zählwerk;
- 5) Umschalten besagten übrigen Exponenten E;
- 6) Ignorieren aller seiner Null Bits, die dem ersten 1 Bit vorstehen und Ignorieren des ersten 1 Bits besagten Exponenten E und Durchführung der Vorgänge 7 bis 9 für alle folgenden Bits;
- 7) Für jedes einzelne besagte Bit, unabhängig davon, ob es C ist oder 1, Quadrieren des Inhalts des Zählwerks B mit dem hierin dargelegten Multiplikationsverfahren, in dem die aufeinander folgenden Zeichen der Basis aus dem Zählwerk B in das Zählwerk A&sub1; geladen werden.
- 8) wenn das aktuelle Bit des Exponenten E 1 ist, und nur dann. Multiplizieren des Inhalts des Zählwerks S mit der Basis A nach Durchführung des Vorgangs 7), und
- 9) Mach jedem Quadrierungsvorgang nach Montgomery oder jedem Multiplikationsvorgang nach Montgomery Durchführung einer C . H Multiplikation ( (C . H) IN nach Montgomery und
- 10) Nach Durchführung der Schriebe 6-9 für alle Bits von E. Speichern des Ergebnisses des letzten Vorgangs als D AE mod. N im Zählwerk B.
- Weiterhin wird ein Verfahren zur Durchführung einer modularen Potenzierung von D = AE mod. N beschrieben, die die Schritte umfaßt:
- 1) Laden der Zahl des Koeffizienten in das vorgenannte Zählwerk N;
- 2) Setzen des vorgenannten Zählwerks S auf Null;
- 3) Laden der zu potenzierenden Basis A in vorgenanntes Zählwerk S.
- 4) Speichern des Exponenten E in ein Computerzahlwerk und eines vorausberechneten Parameters T in einen CPU-Speicher;
- 5) Umschalten besagten übrigen Exponenten E
- 6) Ignorieren aller Null Bits davon, die dem ersten 1 Bit verstehen und Ignorieren das 1 Bit besagten Exponenten E und Durchführung der Vorgänge 7 bis 8 für alle folgenden Bits:
- 7) für jedes einzelne der besagten Bits, unabhängig davon, ob es 0 ist oder 1, Durchführung der Vorgänge 4 und 5 des hierin dargelegten Multiplikationsverfahrens, in dem sowohl der Multiplikand als auch der Multiplikator die Basis A sind und in dem die aufeinander folgenden Zeichen der Basis aus dem Zählwerk B in das Zählwerk Ai geladen werden;
- 8) Wenn das aktuelle Bit des Exponenten E 1 ist, und nur dann, nach Durchführung des Verfahrens 7, Durchführung der Vorgänge 4 und 5 des hierin dargelegten Multiplikationsverfahrens, in denen der Multiplikand der Inhalt des Zählwerks B ist und der Multiplikator die Basis A ist, und
- 9) Nach Durchführen der Schritte 7 und 8 für alle Bits von E, Durchfuhr und einer zusätzlichen Multiplikation nach Montgomery des Zählwerks B mit dem Paramecer T ( (B . T)N und dann Speichern des Ergebnisses des letzten Vorgangs als D Ak mod. N im Zählwerk B.
- Parameter T wird definiere als T = (2 )s mod. N, in dem
- S = 2 + E mod. 2q-1 wie in der übergeordneten Anwendung im einzelnen erläutere.
- Ein sogar noch weiter verbessertes Verfahren zur Durchführung der modularen Pocenzierung von D = AE mod. K, das die Schritte umfaßt:
- 1) Speichern des Exponenten E in einem Computerzählwerk.
- 2) Laden der Zahl des Koeffizienten in vorgenanntes Zählwerk N;
- 3) Setzen des vorgenannten Zählwerks S auf Null;
- 4) Durchführen eines Multiplikationsvorgangs von A* = (A . H)N, während A der zu potenzierende Operand und H ein gemäß vorstehender Definition vorausberechneter Parameter ist.
- 5) Laden von A* in das Basiszählwerk B.
- 6) Durchführung eines Quadrierungsvorgangs der Inhalte des Zählwerks B.
- 7) Umschalten des besagten übrigen Exponenten E.
- 8) Ignorieren aller Null Bits davon, die dem ersten 1 Bit vorstehen und Ignorieren des ersten 1 Bits des besagten Exponenten E und Durchführen des Vorgangs 9 bis 10 für alle folgenden Bits.
- 9) Für jedes einzelne der besagten E Bits, unabhängig davon, ob sie 0 sind oder 1. Durchführen der Vorgänge 4 bis 5 des hierin zuvor dargelegten Quadrierungsverfahrens, in dem sowohl der Multiplikand als auch der Multiplikator aus dem Zählwerk B stammen, und in dem die aufeinander folgenden Zeichen des Montgomery-Multiplikators aus dem Zählwerk B in das Zählwerk A geladen werden.
- 10) Wenn das aktuelle Bit des Exponenten E 1 ist, und nur dann, nach Durchführen des Vorgangs 9, Durchführen der Vorgänge 4 und 5 des hierin zuvor dargelegten Multiplikationsverfahrens, in dem, der Multiplikand der Inhalt des Zählwerks B und der Multiplikator die Basis A* ist; und
- 11) Nach Durchführen der Schritte 8-19 aller Bits von E Durchführen einer zusätzlichen Addition nach Montgomery des Zählwerks B mit der ursprünglichen Basis A und dann Speichern des Ergebnisses des letzten Vorgangs D A2 mod. N im Zählwerk B, wenn der Exponent ungerade ist; sollte der Exponent gerade sein. Durchführen einer zusätzlichen Multiplikation nach Montgomery von D Mal I: B (D . 1) D . I.
- Es wird deutlich, daß bei dem Potenzierungsverfahren dieser Erfindung die Notwendigkeit der Berechnung des hierin zuvor erwähnten Parameters T entfällt.
- Es wurde weiter festgestellt, und das ist ein weiterer Gegenstand der vorliegenden Erfindung, daß die beschriebene Maschine (in Form eines 512 Bit großen Zählwerks) den Erhalt des Ergebnisses der herkömmlichen Multiplikation von zwei n/2 Bit Zahlen (effektiv jede beliebigen zwei Operanden, die, wenn sie multipliziere werden, kein Ergebnis hervorrufen, das länger als n Bits ist, das heiße, einen Überlauf) ohne den Einsatz zusätzlicher Hardware oder der beschwerlichen Vorgänge erlaube, die zu seiner Erzielung gemäß den Vorveröffentlichungen erforderlich wären. Dies wird durch Durchführung der modularen. Multiplikation Gesagter Zahlen durch Multiplikationsprozesse erreicht, irdenen der Wert des konstanten Koeffizienten N eine n Bit Zahl ist, die aus allen "1s" (ffffff .. fff) besteht, die J&sub0; bis I entsprechen, und Laden des Multiplikanden in B und Behandeln von A wie in besagtem Multiplikationsvorgang.
- Die Vorrichtung zur Durchführung einer derartigen Multiplikation im normalen Zahlenbereich durch das vorgenannte Verfahren kann dieselbe Vorrichtung sein, die Kontrollmittel umfaßt, umfassend eine CPU und einen Multiplikationsschaltkreis, der beinhaltet:
- ein n Bit Umschaltzählwerk B für den Multiplikator;
- ein n Bit Umschaltzählwerk N for den konstanten Koeffizienten;
- ein n Bit Umschaltzählwerk für den hierin definierten Wen S;
- ein k Bit Zählwerk A für den Multiplikanden;
- k Bit Zählwerk Mittel für die hierin definierten Werte J&sub0; und Y&sub0;
- Multiplikationsmittel zur Multiplikation des Inhalts des Zählwerks B mit dem des Zählwerks Ai;
- zusätzliche n-Bit Multiplikationsmittel; und Addier-, Subtraktions-, Multiplex- und Verzögerungsmittel.
- Alle Verbindungen zwischen den n Bit Zählwerken und den restlichen Komponenten sind bevorzugt 1 Bit serielle Verbindungen.
- In den Zeichnungen:
- ist Fig. 1 ein Blockdiagramm eine Geräts gemäß einer erfindungsgemäßen Ausbildungsart;
- ist Fig. 2 ein Blockdiagramm eines modularen Multiplikations-Schaltkreises gemäß einer erfindungsgemäßen Ausbildungsart;
- zeigt Fig. 3 den besonderen modularen Multiplikationaschaltkreis gemäß einer erfindungsgemäßen Ausbildungsart;
- ist Fig. 4 eine schematisches Diagramm, das das zeitliche Verhältnis zwischen den verschiedenen Vorgängen einer Iteration des Multiplikationsvorganges gemäß einer erfindungsgemäßen Ausbildungsart darstellt;
- stellt Fig. 5 eine serielle / parallele Multiplikationszelle dar;
- stellt Fig. 6 einen 8 Bit seriellen / parallelen Multiplikator dar,
- stellt Fig. 1 ein serielles Addierwerk dar;
- stellt Fig. 8 ein serielles Subtraktionswerk dar,
- stelle Fig. 9 eine Architektur zur Berechnung des Parameters H dar.
- Insbesondere
- beschreiben die Figuren verschiedene Ebenen logischer Konzepte, die zum Verständnis der Vorrichtung in ihrer Gesamtheit notwendig sind. In allen Fällen motiviere das Taktsignal den Schaltkreis, und falls es ein 3 Rücksetz- Signal gibt, ist sein Zweck die Initialisierung eines Schaltkreises in den Nullzustand.
- Fig. 1 ist ein Blockdiagramm des monolithischen Schaltkreises, in den die Erfindung integriere ist. Der MULT Block enthält die Hardware-Vorrichtung, die die Basis für die Erfindung ist; die Statusmaschine enthält den Controller, der den MULT Schaltkreis antreibe, der ROM Block enthält den gesamten nicht flüchtigen Speicher (ROM und EEPROM), in dem das Programm zur Kontrolle der Smart Cards, die bewährten öffentlichen Schlüssel für Dritte und das Programm zum Betrieb des MULT Blocks sowie die StatusmascHine untergebracht sind; der RAM Block enthält den flücHtigen Speicher, der temporäre Operanden wie zum Beispiel zu potenzierende Nachrichten, auf Zugangsberechtigung zu prüfende öffentliche Schlüssel, Daten im Übergang zum MULT Block, usw. speichert; die CPU (Zentrale Prozessoreinheit) kann praktisch Jeder bekannte Mikrokontroller sein, der ein 8 Bit oder einen größeren internen Bus hat.
- Fig. 2 zeigt einen erfindungsgemäßen modularen Multiplikationsschaltkreis in Form eines Blockdiagramms, der zur Durchführung von modularen Quadrierungen und modularen Poienzierungen eingesetzt werden kann. Die Numerale 10, 11 und 12 zeigen drei Zählwerke an, die n Bit lang sind, n = k . m, was jeweils Zählwerke B, S und N bildet, bzw. in die der Multiplikationswert: S und der konstante Koeffizient geladen werden. Die vorgenannten Zählwerke werden bevorzuge in zwei Zählwerke n/2 geteilt, bevorzugt unter Einschluß einer k kleinsten Bit Untereeilung für die Zählwerke: N und B. Multiplexer 13, 11 und 15 werden jeweils vor die besagten Zählwerke plaziert und wenn sie in Komponententeile unterteilt werden, wird ein Multiplexer vor jede Unterteilung plaziere. Diese ebenfalls in einem Blockdiagramm gezeigten Zählwerke sind zum seriellen Laden bestimme, doch wäre es ebenfalls möglich, sie parallel zu laden. 16, 17 und 18 sind drei Zählwerke, wobei jedes von ihnen k Bits lang ist und jeweils die Werte Ai, J&sub0; und Y&sub0; erhält. Die Zählwerke 16 und 17 sind Umschaltzählwerke mit serieller Ladung / paralleler Ausgabe oder mit serieller und paralleler Ladung / paralleler Ausgabe-Zählwerken. Zählwerk 18 ist bevorzuge ein serielles Umschaltzählwerk in paralleler Ausgabe. Der Inhalt dieser Zählwerke ist zur Verarbeitung durch Multiplikationsmittel 19 und 20 durch Komponenten 21 und 22 bestimme, welche bevorzuge k Bit Schalter sind. Wenn sie Schalter sind, werden sie von Zählwerken 16, 17 und 18 durch k Bit Busse geladen. Wenn sie Zählwerke sind, können sie seriell durch I Sie Verbindungen geladen werden. Die Numerale 24, 15, 25', 26, 36, 37 und 38 bezeichnen ebenfalls Multiplexer. Die Multiplikatoren 19 und 20 können A serielle, B parallele Eingaben, serielle Ausgabemultiplikatorenmittel oder jegliche andere serielle / parallele Eingabe- / serielle Ausgabemultiplikationsmittel sein. Der Multiplexer 38 kann den konstanten Koeffizienten N zwingen, alles "1en" zur Multiplikation in den normalen Bereichszanlen zu sein.
- Die Numerale 27, 28, 29, 30 und 31 bezeichnen 1 Bit volles / halbes Addier- / Subtraktionswerk. 31 bezeichnet ein volles Addier- / Subtraktionswerk. 32, 33 und 34 bezeichnen k Bit k Taktgeberzyklus-Verzögerungsmittel, die geeignet sind, digital Signale zu verzögern, die aus analogen oder digitalen Komponenten bestehen können, obwohl digitale Komponenten bevorzuge werden. 55 ist ein Entnahmesensor, der ein zwei Bit Schalter-/ Speichermittel ist, wie dargestellt. umfaßt die erfindungsgemäße Vorrichtung, obwohl sie zur Behandlung großer Zahlen bestimmt ist, wie zum Beispiel 512 Bit Zahlen, keine Busse, mit Ausnahme einiger weniger optionaler k Bit Busse, und dies bedeutet eine bedeutende Einsparung an Hardware. Wenn die Zählwerke B, S und n/2 Bit Teile umfassen, kann die erfindungsgemäße Vorrichtung zur Durchführung von Multiplikations- und Pocenzierungsvorgängen auf 256 Bit Zahlen eingesetzt werden, was ein bedeutender Vorteil hinsichtlich der Flexibilität des Einsatzes der Vorrichtung ist.
- Fig. 3 zeigt die logischen Zellen gemäß einer bevorzugten Ausbildungsart der Erfindung, Operanden werden in den Ai Schalter, das Zählwerk J&sub0;, das Zählwerk B und das Zählwerk H über die serielle Verbindung DI gespeist, und Ergebnisse werden über eine serielle Verbindung DO vom Zählwerk B oder S äuge laden.
- Das Signal X ist die Bit Strom-Summenbildung des Produkts von B und Ai und S. (Werte nach S und B haben angenommene Werte, die kleiner sind als N). Das Signal Y&sub0; ist der k LS Bit Strom des Produkts von J&sub0; und X. Das Signal 2 ist die Summenbildung von X und dem Produkt von Y&sub0; und N. Die k LS Bus von Z, unter Nichtbeachtung aller Nullen, und nur die n MS Bits werden seriell in S oder B eingespeist.
- Der Entnahme-Sensor ist ein logischer Schaltkreis, der feststelle, ob der Wert von Z/2k is größer ist als M oder nicht.
- Die Subtrahierwerke Sub1 und Sub2 subtrahieren den Bit Strom N von den Bit Strömen von B und S, wann immer B oder S großer ist als N.
- Ad1 und Ad2 summieren Bit Ströme, um Ströme X und 2 zu produzieren.
- Die Umschaltzählwerke Delay1 und Delay2 sind notwendig zur Lieferung von Speicher zur Synchronisierung der mathematischen Prozesse.
- Es sind keine Taktgeberkonrrollen in der Zeichnung enthalten. Es wird vorweggenommen, daß Taktgeber von der Statusmaschine geliefert werden, wann immer Daten entweder von Irgendeinem der oben genannten seriell geladenen / abgeladenen logischen Schaltkreisen ausgeht oder in sie eingespeist werden müssen.
- Auch andere Kontrollen werden nicht spezifiziert, das heiße. Multiplexeradressen, Schaltertransfersignale, usw., die für Fachleute aus dem in dieser Spezifikation enthaltenem erläuterndem Material naheliegend sein dürften.
- Für den Fachmann wird es offensichtlich sein, wie die Vorrichtung der Fig. 2 oder der Fig. 3 die Vorgänge durchführt, die das erfindungsgemäße Multiplikationsverfahren darstellen. Das seitliche Verhältnis besagten Vorgangs wird jedoch weiter in Fig. 4 dargestellt. Besagte Figur stellt diagrammartig alle verschiedenen Vorgänge dar, die in effektiven aufeinander folgenden Taktgeberzyklen in einer Ausbildungsart der Erfindung durchgeführt werden, in der n = 512, k = 32 und m = 16 ist. Dies ist eine ziemlich gewöhnliche Situation in der Verschlüsselungskunst. Wenn die Erfindung gemäß der in Fig. 3 dargestellten Ausbildungsart durchgeführt wird, kann dieselbe Vorrichtung ebenfalls zur Durchführung mit n = 256 verwendet werden.
- In Fig. 4 wird eine Folge verschiedener Vorgänge als eine Funktion der effektiven Taktgeberzyklen dargestellt, die auf der Abszissenachse eingetragen sind. Zu Beginn des Vorgangs und vor irgendeiner der Iterationen, die Teil des erfindungsgemäßen modularen Multiplikationsverfahrens sind, werden die Werte B, N und in die jeweiligen Zählwerke geladen. Das erste Zeichen von A wird ebenfalls in das jeweilige Zählwerk geladen. Sobald eine Iteration beginne und während k Taktgeberzyklen wird das Umschalten des Inhalts der Register B und S durchgeführt. Die Generation des X-Wertes findet wahrend n+k effektiven Taktgeberzyklen statt, wobei die ersten k Taktgeberzyklen durch Eingabe des Wertes von X&sub0; besetzt werden. Während der ersten effektiven k Taktgeberzyklen wurde der Wert von Y&sub0; eingegeben. Während der nächsten effektiven n+k Taktgeberzyklen, wird nun der Wert X, der in den Multiplikator 20 eingeführt worden war, umgeschaltet oder in ein Addierwerk 31 eingeführt, nachdem er durch Verzögerung 34 verzögen worden ist. Der Wen N wird zu drei verschiedenen Zeitphasen verwendet. Erstens, um S und B zu "aktualisieren", zweitens verzögen k effektive Taktgeberzyklen zur Multiplikation mit Y&sub0; und dann verzögere einen zweiten k effektiven Taktgeberzyklus, um zu erfassen, wie der nächste Wen von S oder B "aktualisiert" werden wird. Während derselben nT.k effektiven Taktgeberzyklen wird Z ebenso berechnet wie 2/2k. Der Wert von Ai wird geladen, beginnend mit den ersten k effektiven Taktgeberzyklen und fortführend während des darauffolgenden Teils der Iteration. Der endgültige Wert 2/2k wird in das Zählwerk S (oder B) wahrend n Taktgeberzyklen nach den ersten 2k effektiven Taktgeberzyklen eingegeben.
- Fig. 5 zeige eine Implementierung einer seriellen / parallelen Multiplikationszelle (als Hilfe für diejenigen Fachleute, die (nie diesem Fachbereich vertraut sind, denen die Arbeitsweise einer derartigen Konfiguration jedoch vielleicht nicht bekannt ist). Jede dieser Zellen umfaßt einen MPL Block wie in Fig. 6 gezeigt. Sr implementiert boothsche Multiplikationsalgorithmen für nicht unterzeichnete serielle / parallele Multiplikationen.
- Fig. 6 zeigt eine Implementierung eines 8 Bit seriellen / parallelen Multiplikators. In den ML1 und ML2 Blöcken der Fig. 3 sind die seriellen / parallelen Multiplikatoren k Bits lang. Anzumerken ist, daß die MS Zelle entartet ist. Der parallele 8 Bit Multiplikand wird auf den XI Verbindungen eingegeben und der n Bit lange serielle Multiplikator wird auf dem Y-Verbinder eingegeben (LS Bit zuerst, und eine Folge von k Nullen nach dem MS Bit des Multiplikators). Das Produkt wird auf MO ausgegeben. LS Bit zuerst, MS Bit zuletzt, in dem ein vollständiges Produkt n + k Bits lang ist.
- Fig. 7 zeigt die seriellen Addierwerke zur Summenbildung von zwei Bit Strömen, die auf A- und B-Eingabeverbindungen erscheinen, und gibt den Summenstrom auf Verbindung S aus. Die LS Bus sind zuerst einzugeben, und der Ausgabestrom für Operanden von m Bits Länge ist m+1 Bits lang. Am Ende des m. effektiven Takts ist die CI-Ausgabe das (m+1). Bit der Zahlenfolge.
- Fig. 5 zeige das serielle Subtrahierwerk zur Ausgabe der Differenz zwischen zwei Bit Stromen, die auf den A- und B- Eingabeverbindungen erscheinen und geüen den Differentialstrom auf dem D-Verbinder an. Die LS Bits sind zuerst einzugeben, und der Ausgabestrom für Operanden von m Bits Lange ist m Bus lang. Am Ende des m. Bits ist die BI- Ausgabe das (m+1). Bit der Zahlenfolge und dient als eine Entnahmeanzeige.
- Fig. 9 zeige das Hardware-Layout zur Berechnung des Parameters H für einen konstanten Koeffizienten S. das n Bits lang ist. Während dieses Betriebsmodus wird das Zählwerk N für einen n Bit langen konstanten Koeffizienten n + 1 Mal rotiert, auf die Rotierung des Zählwerks S synchronisiere, das durch Sub1 mir. einer Verzögerung des LS Bit (beim ersten Taktzeitgeber in M2_I : 1 wird eine LS Null eingefügt) rotiert. Der Entnahmesensor "weiß" am finde der vollständigen Rotation, ob in der nächsten Runde vom Strom S subtrahiert wird oder nicht und schaltet den vorhergehenden Subtraktionsmultiplexer dementsprechend für die nächste Runde.
- Wie oben angegeben zeigt Fig. 1 in Form eines Blockdiagramms eine Vorrichtung zur Durchführung der erfindungsgemäßen Vorgänge. Die Block-KONTROLLE der Vorrichtung umfaßt:
- 1) Eine vollständige Zentrale Prozessoreinheit (CPU)
- 2) Rechner
- 3) Eine Statusmaschine
- Die CPU beinhaltet flüchtigen und nicht flüchtigen Speicher, von dem ein Teil von diesem Multiplikationsvorgang verwendet werden kann. Die CPU kontrolliert, den modularen arithmetischen Block im Schaltkreis.
- Die CPU:
- 1) Kommuniziert mit dem Wirtsrechner
- 2) Lade Daten auf den Chip und vom Chip herab.
- 3) Steuere den Schaltkreis zur Durchführung einer Sequenz mathematischer Vorgänge.
- 4) Ist für andere Verschlüsselungs- und Nichtverschlüsselungs- sowie Datenverarbeitungsprozesse verantwortlich.
- Die Rechner generieren die Adresse für die eingebettete Statusmaschine.
- Die Statusmaschine decodiert die Adressen und generiert Kontrollsignale an den MULT Block. Diese Kontrollsignale steuern den MULT Block zur Durchführung der entsprechenden Sequenz von Vorgängen, die zur Berechnung der Transformation (A . B)N notwendig sind (wobei A gleich B sein kann).
- Fig. 3 ist ein Hardware-Blockdiagramm der Hardwarevorrichtung, die die physikalischen Aspekte der Erfindung (MULT) einheftet, und dazu bestimme ist, bei der Schwerpunktlegung auf mehrere der Architekturkonzepte zu helfen, die durch dieses Patent geschützt werden sollen. Der Block implementiert zusammenfallend die in den Gleichungen (1) bis (5) spezifizierten Sequenzen und ebenso, ohne das synchrone Taktgeben zu verändern, die Umwandlungen von S und B von der begrenzten Kongruenz zur Gleichheit. In diesem Abschnitt nehmen wir vorweg, daß die Konstanten (die Funktionen von N) J&sub0; und H vorausberechnet worden sind.
- Der Schaltkreis führe (A . B)N durch. Unter Verwendung dieser Funktion kann der Schaltkreis genutzt werden, um zu berechnen
- 1) B . A mod. M
- und
- 2) B² mod. N,
- wobei B immer kleiner sein muß als N.
- Implementierung von C = B . A mod. N (A kann gleich B sein)
- 1) Der Prozessor lade den Operanden B in das Zählwerk B vor und den Operand N in das Zählwerk N vor.
- 2) Jedes Mal, wenn der Schaltkreis in MULT mit der Berechnung des nächsten Wertes von S beginne, signalisiere der Schaltkreis (Zeichen) der CPU, das nächste Ai vorzuladen. Nach der S (in). Iteration befindet SICH eine Zahl, die Kongruenz mit B hat, im Zählwerk B.
- 3) Block MULT berechnet F = (B . H) N, wobei H eine vorausberechnete Konstante in einer den Schritten 1) und 2} identischen Sequenz mit: der Ausnahme ist, daß der Prozessor nun die Sequenz von H&sub1; Zeichen vorladen wird (unter Einsatz derselben Sequenz wie der, die beim vorherigen Laden von A&sub1; Zeichen verwendet wurde).
- Implementierung von C = B² mod. N
- 1) Unter der Annahme, daß B einen Wert enthält, von dem bekannt ist, daß er kongruent: zu B&sub1; ist, und daß das Zählwerk N den konstanten Koeffizienten N enthäln (wie dies beim Quadrieren allgemein der Fall ist), kann der MULT Block nun die Quadrierung zunächst durch Vorladen des Zählwerks A&sub1; mit Ba, dem LS Zeichen von B&sub0; vornehmen.
- 2) Die Berechnung B = (B .B)N erfolge wie der zweite Schritt beim Multiplikationsvorgang, mit der Ausnahme, daß das nachfolgende Laden der B&sub1; Zeichen seriell "fliegend" von den Zählwerken B erfolge, da die Zählwerke B rotieren.
- 3) Die Berechnung (B - H), falls notwendig, ist identisch mit dem vorgehenden Schritt 3.
- Wie dem Fachmann einleuchtet, beanspruchen die Erfinder nicht, daß die seriellen / parallelen (s/p) Multiplikatoren oder irgendeiner der verwendeten herkömmlichen Komponenten per se Teil der Erfindung sind. Der folgende Abschnitt wird eingefügt, um die Verwendung von logischen Standardzellen im öffentlichen Bereich zu erläutern, da einige von ihnen nicht im allgemeinen Gebrauch sind. Die hier gezeigte Gatterimplementierung dient nur der Darstellung. Erfahrene Techniker optimieren diese logischen Zellen.
- Die Operanden A, B und N sind jeder n Bit lang, die aus m Gruppen von k Bit langen Zeichen bestehen, daher n = k . m. In einer Hardware-Implementierung, in der k = 32, kann m entweder 8 oder 16 binäre Bits lang sein.
- Diese Multiplikatoren führen den Algorithmus nach Booth für nicht signierte Multiplikationen durch, in denen der parallele Operand k Zellen (Bits) lang ist und der seriell geladene Operand von irgendeiner beliebigen geforderten Länge sein.
- Jeder serielle / parallel Multiplikator bestehe aus k-1 MPL Zellen (Fig. 5). Die signifikantesten Zellen, sein MS Bit, besteht nur aus einem UND-Gatter.
- Jede MPL Zelle multipliziert die serielle Eingabe Y mit seiner parallelen XI-Bits-Eingabe und summiere dieses Ergebnis mit der seriellen Ausgabe oder vorherigen MPL Einheit und ihren eigenen vorherigen Ausführungsbitzyklen.
- Die MPL Zelle ist ein 2 Bit Multiplikations-Addierwerk. Der Block multipliziert das Eingabebit XI und das serielle Eingabebit Y und summiert das Ergebnis mit DI (Daten Ein) und dem Übertrag CI (Übertrag Ein) vom vorherigen Zyklus. Das endgültige Ergebnis ist DO (Daten Aus) und ein CO (Übertrag Aus) für den nächsten Zyklus. Dieser Übertrag Aus wird in einem Daten Flip-Flop (D F-F) gespeichert.
- DO = (DI + CI + XI . Y) mod. 2,
- und der gespeicherte Übertrag CO wird der CI im nächsten Zyklus sein. Dieser Übertrag ist die boolesche Summe:
- CO = CI . XI . Y + CI . DI + DI . Y . XI
- Dies ist ein einfaches 1 Bit volles Addierwerk mit einem D P-F zum Speichern des Übertrags, der im nächsten Taktgeberzyklus (Fig. 7) hineingetragen wird.
- Die zwei Eingaben A und B werden mit dem Übertrag CI aus dem Vorherigen Zyklus summiert, um die Modulo 2 Summe zu generieren, die im D F-F für das Ausgabesignal S gespeichert wird. Beim Zurücksetzen wird das Übertragsbit auf "0" gesetzt.
- Jeder der in Fig. 8 beschriebenen Blöcke ist ein volles Subtrahierwerk mit einem Speicher D F-F für die vorherige Entnahme. Dieser Block ist ähnlich dem Ad. 1 Block, mit den Ausnahmen, daß er den B Strom seriell vom A Strom subtrahiere.
- Dies sind k Bit Umschaltzählwerke, bestehend aus 1 Bit verketteten Speichervorrichtungen. Sie werden zur Synchronisierung der verschiedenen Operanden in der mathematischen Sequenz eingesetzt. Dies wird deutlich, wenn der Schaltkreis erläutert wird.
- Diese Blöcke sind k Bit lange serielle Ein- / parallele Aus- Umschaltzahlwerke, in die k Eingabebits seriell eintragen. Nach k effektiven Taktgeberzyklen erscheinen diese k Bits in der Ausgabe parallel.
- In Fig. 2 sind die dünnen Linien serielle Ein-Bit-Leiter und die dicken Linien stellen k Bit parallele Leiter dar,
- Dies sind Ein-Bit-Ausgabe-Multiplexer - M4_I : x, die 1 von 4 Eingaben ausgeben - M3_I : x, die l von 2 Eingaben ausgeben und M3_I : S, die 1 von 2 Eingaben ausgeben, x stellt den expliziten Index einer spezifischen Komponente dar.
- Dies sind Umschaltzählwerke. Die Größe und der Platz in der Sequenz eines längeren Zählwerks werden durch die Zahlen in Klammern bezeichnet, zum Beispiel 191: X(s:t) ist ein c - s + 1 Bit langes Umschaltzählwerk, s ist der Index für das erste Bit von X(s:c) und c ist der Index des letzten Bit des Zählwerks X(s:c). Zum Beispiel besteht B(0:511) aus den drei kürzeren kaskadierten Zählwerken: B(0:31), B(32:255) und L(256:511).
- n1 ist im allgemeinen gleich n/2, zum Beispiel muß 256 . n1 ein Vielfaches von k sein.
- n2 ist gleich n-1.
- k ist die Länge des Maschinenzeichen, das heiße, die Größe der seriellen / parallelen Multiplikatoren. Daher werden die folgenden Werte in der ersten Implementierung vorweggenommen: n1 = 256, n2 511, n = 512 und k = 32.
- Diese zwei Schalter sind K Bit Zählwerke. Sie werden zur Sperrung der parallelen Daten in dem Multiplikator zur Ermöglichung von parallelen Einzeltakttransaktionen in Multiplikationssequenzen eingesetzt.
- Zur Erleichterung der Erläuterung haben wir uns entschlossen, nur solche Taktgeberzyklen zu bezeichnen, die tatsächlich Daten in Zählwerken bewegen; diese "bewegenden" Zyklen definieren wir als "effektive Taktgeberzyklen".
- Stufe 1: Erstes Laden
- Folgende Zählwerke werden durch DI geladen:
- 1) J" in das Zählwerk J&sub0; (von CPU vorausberechnet)
- 2) B in das Zählwerk B
- 3) N in das Zählwerk
- 4) Das erste Zeichen von A, A&sub0; in das Zählwerk A&sub2;
- Gleichzeitig zu Schritt 2 wird Zählwerk S mit Nullen geladen.
- Nach dem Laden dieser fünf Zählwerke werden die zwei parallelen seriellen nicht signierten Multiplikatoren ML1, ML2, die seriellen Addierwerke AD1 und AD2 und die seriellen Subtrahierwerke Suh1, Sub2 und Sub3 zurückgesetzt.
- Stufe 2: Ausführen der Iteration B . Ao ]
- Die in das Zählwerk A geladenen Daten A&sub0; werden in Schalten geladen. Zählwerk B wird zyklisch nach rechts umgeschaltet.
- Bei Initialisierung des Prozesses sieht das Entnahme2 Kontrollsignal auf "0", daher gehe der Inhalt von B einfach unverändert durch das Subtrahierwerk Sub1 und wird in ML1 mit A&sub0; multipliziert. Die Ausgabe des Zählwerks B wird unverändert in die Eingabe des Zählwerks zurückgespeist.
- Das Ergebnis dieser Multiplikation wird seriell in Ad1 zum Inhalt des Zählwerks S addiert, das bei dieser ersten Iteration überall Null ist. Dieser Vorgang generiere X wie hierin zuvor beschrieben.
- Während diese Vorgänge voranschreiten, lädt die CPU das nächste Zeichen von A, A&sub1; in Schalter1.
- J&sub0; aus dem Zählwerk J&sub0; wird in Schalter2 geladen. X wird seriell in ML2 zur Multiplikation mit J&sub0; eingegeben. Somit ist der Inhalt des Zählwerks Y&sub0; nach k effektiven Taktgebern die k kleinsten Bits des Produkts X&sub0; . J&sub0;.
- Dann, nach diesen ersten k effektiven Taktgebern, wird ML3 zurückgesetzt: der serielle Eingabemultiplexer M3_1:4 wird vom Strom X auf den Strom N umgeschaltet:; die Daten im Zählwerk Y&sub0; werden anstelle von J&sub0; parallel in Schaltei-2 geladen; und die Ausgabe wird auf den Strom Y&sub0; . N umgeschaltet. Für die nächsten n+k effektiven Taktgeberzyklen wird das serielle Ausgabeergebnis der ML2- Multiplikation Y&sub0; . N sein. X, das durch k effektive Taktgeberzyklen verzogen wurde, wird nun in Ad2 zum Produktstrom von ML2 summiert; dies generiere Z = X + Y&sub0; . N; eine Zahl, in der die k kleinsten Bits gleich Null sind.
- Da die ersten k Bits von Ad2 alle Mull sind, bleiben sie unbeachtet und die nächsten n Bits werden seriell an das Zählwerk S zurückgesendet. Diese endgültige Menge kann größer als oder gleich N sein (in diesem Fall muß sie um N reduziert werden), das heiße, S(1) S(1) mod. N.
- Um Herauszufinden, of S ≥ N, wird N seriell von diesem n Bit langen (2/2k) Strom in Sub3 subtrahiert. Jedoch wird nur das n. Entnahmebit in diesem Entnahme-Speicher Flip-Flop gespeichert.
- Wenn dieses Entnahmebit "0" ist oder das endgültige Übertragsbit CO des Addierwerks Ad2 "1" ist, dann ist der neue Wert in S größer als N.
- Am Ende dieser ersten Iteration gibt es einen Wert im Zählwerk S. der die begrenzte Kongruent von S(1) mod. N ist; die Zählwerke J&sub0;, B und N halten die ursprünglichen Werte zurück, mit denen sie geladen wurden; und das Vorladezahlwerk Ai beinhaltet A&sub1;.
- Stufe 3: Nachfolgende Iterationen B . Ai
- Das nächste Zeichen von A, A1 wird in den Schalter1, die parallele Eingabe von ML1, geladen.
- Während der nächsten und nachfolgenden Iterationen L A ist der Inhalt von S am Ende jeder Iteration Y zu S(i) mod. N. Wenn S(i) : N, dann ist N von S(i) in Sub.2 in subtrahieren.
- Bei Beginn jeder Iteration wird das nächste Zeichen von A . A&sub1; durch die CPU in das Vorladezählwerk Ai geladen.
- Der erste Vorgang bei einer normalen Potenzierung ist ein Potenzierungsvorgang, der wie eine normale Multiplikation mit dem in das Zählwerk B geladenen Multiplikator A und dem in das in k Bit Zunahme in das Zählwerk A&sub1; geladene Multiplikand wie im vorherigen Abschnitt beschrieben durchgeführt wird. Nachfolgende Quadrierungen werden auf Operanden (Multiplikatoren und Multiplikanden) durchgeführt, deren begrenzte Kongruenz im Zählwerk B liegt.
- Während solcher (B . B)N Quadrierungen werden. J&sub0;, S, B und N von Beginn an bereits von einer vorherigen Multiplikation oder Quadrierung geladen und bleiben unverändert; bei jeder Iteration jedoch muß das Zählwerk Ai mit einem neuen Zeichen geladen werden, das von einem k Bit Zeichen abgeleitet wird, das sich im Zählwerk B befindet.
- Für diese nachfolgenden Quadrierungen wird das Zählwerk A "fliegend" vom Strom B vorgeladen. Sobald die CPU die Steuerquadrierung gegeben hat, hat sie während der nachfolgenden Quadrierungsvorgänge B . Bi keine Aufgabe auszuführen. Die B1s. die geladen werden, sind Segmente von B, die durch Suhl geflossen sind (B&sub1;-Segmente von B, die bereits kleiner sind als N).
- Ursprünglich befindet sich das letzte von S aus der vorherigen Berechnung im Zählwerk B.
- Die k LS Bits der Zählwerke 3 und N werden zyklisch nach rechts umgeschaltet, damit werden die Zählwerke B und N nach K effektiven Taktgebern in ihre ursprünglichen Zustände zurückgespeichert. Der Wert im Zählwerk B ist entweder der eigentliche Wert B oder der Wert B-N, der für die nächste -Multiplikation zu verwenden ist. So ist das Zählwerk A&sub1; für die erste Runde entweder mit Bö vorzuladen, das sich im Zählwerk B befindet, oder den k LS Bits von B-N.
- Der Zweck dieser ersten k Bit Rotation ist es, die ersten k Bits der Vorladung für das Zählwerk A&sub1; durch Suhl strömen zu können, unverzüglich nachdem es seriell geladen wurde, wird A in Schalter1 abgeladen, und das Vorladezahlwerk A&sub1; ist frei, um mit B&sub1;, dem zweiten Zeichen von B, geladen zu werden.
- Während dieses und nachfolgender Vorgänge ist die Ausgabefolge von Suhl positiv und immer kleiner als N, da das Signal Entnahme2 gesetzt oder zurückgesetzt wird.
- Nun, da alle Werte in die Zählwerke geladen wurden, führe diese erste Multiplikation ähnlich wie die Iteration B . A&sub0; vor, gemäß Beschreibung im vorherigen Abschnitt, mit der Ausnahme, daß B rotiert, wie noch erläutert wird. B1 wird in das Zählwerk A geladen (es sei daran erinnere, daß die CPU in einer Multiplikation das Zählwerk Ai lädt).
- Als das zweite k Bit Zeichen taucht B&sub1; während dieses ersten Verfahrens B . B&sub0; B&sub1; aus dem Strom B auf, das Segment B&sub1; seriell "fliegend" in das Vorlade-Zählwerk A&sub1; umgeschaltet, das für den nächsten Quadrierung s Vorgang in Vorbereitung ist, das heiße die Iteration B . B&sub1;.
- Stufe 2: Iteration B . B&sub1;
- Der in das Zählwerk A&sub1; geladene Wert B&sub1; wird an seine Ausgabe Schalter1 transferiert. Wahrend der nächsten n + 2k (zum Beispiel n + 64) effektiven Taktgeberzyklen wird das Multiplikationsverfahren auf B . B&sub1; wie oben beschrieben durchgeführt.
- Wie zuvor bestimmen die Signale Entnahme1 und Entnahme2, ob N von den Strömen zu subtrahieren ist, die von den Zählwerken B und S ausgehen. Wenn die Zahl im Zählwerk S größer als oder gleich N ist, dann wird Entnahme1 gesetzt und N wird mit dem Subutrahierwerk Sub.2 von S subtrahiere. N wird, falls notwendig, für die Dauer einer vollständigen m- Iterations-Multiplikationsschleife von B subtrahiert. Eine derartige Bedingung würde mit Entnahme2 am Ende der vorherigen Multiplikation oder Quadrierung erfaßt werden.
- Die zwei Flip-Flops, Entnahme1 und Entnahme2 enthalten die endgültigen Werte der konditionierten Entnahme Aus von Sub3.
- Entnahme1 wird nach jeder Iteration von S gesetzt oder zurückgesetzt. Entnahme2 wird nach der letzten Iteration S(m) gesetzt oder zurückgesetzt, während B mit S(m) geladen wird. Die konditionierte Entnahme Aus ist das Signal, das anzeige, ob an S(i) größer ist als N.
- Während der Sequenz B . B&sub1; wird das Zeichen B&sub2; "fliegend" in das Vorladezählwerk A, geladen, da das Zeichen B&sub0; im Subtrahierwerk Sub. 1 existiere.
- Stufe 3: Nachfolgende Multiplikationsiterationen B . B&sub1;
- Die verbleibenden Iterationen m-2 werden durchgeführt: während jeder einzelnen wird das Zählwerk A&sub1; mit dem Wenn des Zeichens B&sub1; geladen, da es in Sub. 1 in Vorbereitung für die nächste Schleife existiere.
- Das endgültige Ergebnis, eine begrenzte Kongruenz, befindet sich sowohl im Zählwerk S als auch B. Diese Daten werden, falls nötig, bei Sub.1 berichtigt, wenn sie seriell durch DO ausgegeben werden.
- Zur Berechnung von H wird die Maschine neu konfiguriert, um die Zählwerke S und N wie in Fig. 9 einzusetzen, wir demonstrieren den Vorgang des Operators unter Einsatz des bereits oben verwendeten numerischen Beispiels. Diese Konfiguration führt in n+1 Runden eine Berechnung H durch. Bei jeder Runde werden sowohl S als auch N rotiere, wobei jede Rotation n effektive Taktgeber sind. Bei jeder Runde zirkuliert N und kehre unverändert zurück. Am Ende der i. Runde enthalten S und das Signal "nächste Subtraktion" das Äquivalent einer begrenzten Kongruenz, von S(i).
- Zu Beginn der ersten Runde wird der konstante Koeffizient K in das Zählwerk N geladen, und das Entnahmesensorzeichnen wird zurückgesetzt, was bedeutet, daß die erste Versuchssubtraktion erfolgreich sein wird; der Ausgabe-Flip- Flop von Sub.1 wird auf Null zurückgesetzt. Für Runde 1 wissen wir, daß das MS (n.) Bit des Versuchsdividenden Eins ist. Dieses Bit wird durch Deduktion im Flip-Flop "nächste Subtraktion" (kein Platz in S) gespeichert. Die "nächste Subtraktion" steuere die Subtraktion S-N in Runde 1.
- Unter Verwendung des oben beschriebenen numerischen Beispiels n = 4 Bit demonstrieren wir den Berechnungsmodus H - Ausgangsbedingung. Gespeichert im Zeichen nächste Subtraktion des Entnahmesensors
- In der ersten Runde wird N von 2" subtrahiert und n Bits des mit 2 multiplizierten Ergebnisses (eine LS Null-Einfügung) in das Zählwerk S zurückgeführt, MIT AUSNAHME des MS Bit. das "durch Deduktion" im Zählwerk Entnahme-Sensor _nächste Subtraktion gespeichert wird.
- Am Ende der ersten Runde rotieren:
- S(1) = 1010, nächste Subtraktion = 1 (80 = 1), und wir wissen, daß es in der nächsten Runde keine Subtraktion von S-N in Sub.1 geben wird. Berechnung des Parameters H. 2. Runde Gespeichert im Zeichen nächste Subtraktion des Entnahmesensors
- Diff. = 1 0100 und S(2) = 0100, nächste Subtraktion = 0, and wir wissen, daß es in der nächsten Runde eine Subtraktion von S - N in Sub.1 geben wird. Berechnung des Parameters H. 3. Runde Gespeichert im Zeichen nächste Subtraktion des Entnahmesensors
- Diff. = 1 0010 und S(3) = 0010, nächste Subtraktion = 0, und wir wissen, daß es in der nächsten Runde eine Subtraktion von S-N in Sub.1 geben wird. Berechnung des Parameters H. 4. Runde Gespeichert im Zeichen nächste Subtraktion des Entnahmesensors
- Diff. = 0 1110 und S(4) = 1110, nächste Subtraktion = 0, und wir wissen, daß es in der nächsten Runde eine Subtraktion von S-N in Sub. 1 geben wird. Berechnung des Parameters H. n+1. (5.) Runde Gespeichert im Zeichen nächste Subtraktion des Entnahmesensors
- Diff. = 00011 und S(5) = 0011, ist der Rest - der der Wert von H ist.
Claims (18)
1. Mikroelektronisches Gerät zur Durchführung der modularen Multiplikation eines
Multiplikators durch einen Multiplikanden, wobei das Gerät Addierwerke (30) und
Zählwerke (10, 11, 12) umfaßt, dadurch gekennzeichnet, daß das Gerät umfaßt:
erste (10), zweite (11) und dritte (12) Hauptumschalt- und getaktete serielle-Ein-,
serielle Aus-Zählwerke, die Jeweils geeignet sind, den Multiplikator, ein
Teilergebnis und einen konstanten Koeffizienten zu speichern;
ein erstes serielles / paralleles Multiplex-Multiplikationswerk (19), in dem der
Multiplikand untergebracht ist und das geeignet ist, für jede einer Vielzahl von
Teilen des Multiplikanden seinerseits den Multiplikator aus dem ersten Zählwerk
(10) zu empfangen, den Multiplikator durch einen laufenden Teil des
Multiplikanden (21) zu multiplizieren und eine Ausgabe zu generieren, umfassend
ein Produkt besagter Multiplikation;
ein Subtrahierwerk (28) zum Subtrahieren des konstanten Koeffizienten von den
Inhalten des zweiten Zählwerks (11), zur Produktion einer begrenzten Kongruenz
davon, in der, nachdem die Vielzahl der Teile des Multiplikanden durch das erste
Multiplikationswerk (19) verarbeitet worden ist, besagtes Teilergebnis eine
begrenzte Kongruenz eines Durchführungsergebnisses besagter modularer
Multiplikation besagten Multiplikationswerkes durch besagten Multiplikanden
bildet;
ein serielles Addierwerk (30), das auf die Ausgabe des ersten
Multiplikationswerkes (19) einwirkt und eine begrenzte Kongruenz des
Teilergebnisses, das sich in dem zweiten Zählwerk (11) befindet und geeignet ist,
eine Ausgabe zu liefern;
ein zweites serielles / paralleles Multiplex-Multiplikationswerk (20), das in einer
ersten Phase die Ausgabe des seriellen Addierwerkes (30) und eine
Montgomery-Konstante empfängt und in einer zweiten Phase den konstanten
Koeffizienten aus dem dritten Zählwerk (12) empfängt und in der ersten Phase
geeignet ist, ein Produkt der ersten Phase der Montgomery-Konstante durch
einen Teil der Ausgabe des seriellen Addierwerks (30) zu berechnen und in der
zweiten Phase den konstanten Koeffizienten mit dem Produkt der ersten Phase
zu multiplizieren und dadurch eine Ausgabe der zweiten Phase zu generieren,
die, wenn sie mit der Ausgabe des seriellen Zählwerks (31) kombiniert wird,
besagtes Teilergebnis generiert;
Schaltelemente (23) zur Lieferung von Differentialeingaben an wenigstens
besagtes zweites Multiplikationswerk (20), Jeweils in der ersten und zweiten
Phase,
ein zweites Subtrahierwerk (27) zum Subtrahieren des konstanten Koeffizienten
von den Inhalten des Zählwerks (10), zum Produzieren der Inhalte des vom
konstanten Koeffizienten reduzierten Zählwerks (10), in dem besagtes erstes
Multiplikationswerk (19) ein erstes serielles / paralleles Multiplikationswerk (19)
umfaßt, das besagte Inhalte des vom konstanten Koeffizienten reduzierten
Zählwerks (10) seriell empfängt und den Multiplikanden parallel empfängt;
eine Entnahme-Sensor-Vorrichtung (35), geeignet zum Empfang der Ausgabe
des zweiten Addierwerks (31) und zur Bestimmung, ob die Ausgabe des zweiten
Addierwerks (31) größer als oder gleich ist wie der konstante Koeffizient;
in dem die Längen der ersten (19) und zweiten (20) Multiplikationswerke beide k
sind, wobei das Gerät ebenfalls ein zweites Addierwerk (31) umfaßt, das geeignet
ist, die Ausgabe des seriellen Addierwerks (30) mit einer Verzögerung von k
effektiven Taktgeberzyklen zu empfangen und die Ausgabe der zweiten Phase
des zweiten Multiplikationswerkes zu empfangen und diese Ausgaben zu
addieren und dadurch eine Ausgabe des zweiten Addierwerks zu generieren, in
der die k kleinsten Bits Null sind, und besagte Ausgabe des zweiten Addierwerks
in eine erste (30) ausgewählte des Zählwerks (10) oder des Zählwerks (11)
einzuspeisen; und eine k-Bit Verzögerungseinheit (34) zwischen dem ersten (30)
und dem zweiten (31) Zählwerk, die geeignet ist, die Verzögerung von k
effektiven Taktgeberzyklen zu liefern.
2. Gerät gemäß Anspruch 1, dadurch gekennzeichnet, daß besagtes erstes
Multiplikationswerk (19) einen ersten Eingabeschalter beinhaltet, in dem der
Multiplikand untergebracht ist.
3. Gerät gemäß Anspruch 1 und 2, dadurch gekennzeichnet, daß das zweite
Multiplikationswerk (20) einen zweiten Eingabeschalter (22) beinhaltet, der den
Multiplikanden empfängt.
4. Gerät gemäß Anspruch 1 bis 3, dadurch gekennzeichnet, daß er kein anderes
Multiplikationswerk einsetzt als besagte erstes und zweites Multiplikationswerk
(19, 20).
5. Gerät gemäß Anspruch 1 bis 4, dadurch gekennzeichnet, daß eine
Montgomery-Konstante JO im zweiten Multiplikationswerk (20) in der ersten
Phase untergebracht ist und die Ausgabe der ersten Phase des zweiten
Multiplikationswerkes im zweiten Multiplikationswerk (20) in der zweiten Phase
untergebracht ist.
6. Gerät gemäß Anspruch 5, dadurch gekennzeichnet, daß es einen Bereich (23)
von 2-bis-1 Multiplexem umfaßt, die geeignet sind, die Montgomery-Konstante in
das zweite besagte Multiplikationswerk (20) in der ersten Phase einzuspeisen
und die Ausgabe der ersten Phase des zweiten Multiplikationswerkes (20) in das
zweite Multiplikationswerk (20) in der zweiten Phase einzuspeisen.
7. Gerät gemäß Anspruch 6, dadurch gekennzeichnet, daß es ein serielles /
paralleles Zählwerk umfaßt, das die Ausgabe des zweiten Multiplikationswerkes
(20) in der ersten Phase empfängt und die Ausgabe parallel in besagtes zweites
Multiplikationswerk (20) über besagten Multiplexerbereich (23) in der zweiten
Phase einspeist.
8. Gerät gemäß Anspruch 7, dadurch gekennzeichnet, daß besagter Multiplex-
Bereich (23) k 2-bis-i Multiplexer umfaßt und in dem besagtes serielles /
paralleles Zählwerk die Länge k hat.
9. Gerät gemäß Anspruch 1, dadurch gekennzeichnet, daß das erste serielle
Subtrahierwerk (27), das die Inhalte des Zählwerks (10) empfängt und daraus
den konstanten Koeffizienten subtrahiert, einen modular reduzierten Multiplikator
berechnet, wenn die Ausgabe des zweiten Addierwerks (31) größer als oder
gleich wie der konstante Koeffizient ist, und den modular reduzierten Multiplikator
in besagtes erstes Multiplikationswerk (19) einspeist.
10. Gerät gemäß Anspruch 9, dadurch gekennzeichnet, daß es eine
Vergleichseinrichtung umfaßt, die bestimmt, ob die Ausgabe des zweiten
Addierwerks (31) größer als oder gleich dem konstanten Koeffizienten ist, in dem
die Vergleichseinrichtung operativ mit dem Subtrahierwerk (28) verbunden ist, so
daß das Subtrahieren des konstanten Koeffizienten von den Inhalten des
Zählwerks (11) kontrolliert wird.
11. Gerät gemäß Anspruch 10, dadurch gekennzeichnet, daß es eine
Vergleichseinrichtung umfaßt, die bestimmt, ob die Ausgabe des zweiten
Addierwerks (31) größer als oder gleich dem konstanten Koeffizienten ist, in dem
die Vergleichseinrichtung mit dem Subtrahierwerk (27) operativ verbunden ist, so
daß das Subtrahieren des konstanten Koeffizienten von den Inhalten des
Zählwerks (10) kontrolliert wird.
12. Gerät gemäß Anspruch 1, dadurch gekennzeichnet, daß das Subtrahierwerk
(28), das die Inhalte des Zählwerks (11) empfängt und davon den konstanten
Koeffizienten subtrahiert, einen modular reduzierten Multiplikator berechnet, wenn
die Ausgabe des Addierwerks (30) größer als oder gleich dem konstanten
Koeffizienten ist, und die modular reduzierte Ausgabe des Zählwerks (11) in
besagtes Multiplikalionswerk (20) einspeist.
13. Gerät gemäß Anspruch 1, dadurch gekennzeichnet, daß besagtes zweites
Addierwerk (31) ein serielles Addierwerk umfaßt.
14. Gerät gemäß Anspruch 1, dadurch gekennzeichnet, daß besagtes erstes und
zweites Multiplikationswerk (19, 20) jedes eine Länge k hat und in denen die
Dauer der ersten Phase k effektive Taktgeberzyklen sind.
15. Gerät gemäß Anspruch 1, dadurch gekennzeichnet, daß das serielle
Addierwerk (30) auf die Ausgabe des ersten Multiplikationswerkes (19) und auf
die modular reduzierten Inhalte des Zählwerks (11) einwirkt.
16. Gerät gemäß Anspruch 1, dadurch gekennzeichnet, daß besagter
Hauptschalter und besagte getaktete Zählwerke (10,11. 12) unterteilt sind.
17. Gerät gemäß Anspruch 1, dadurch gekennzeichnet, daß die Ausgabe der
zweiten Phase eine serielle Ausgabe umfaßt.
18. Ein Verfahren zum Einsatz mikroelektronischer Potenzierungsgerate zur
Durchführung modularer Quadrierung und modularer Multiplikation eines
Multiplikators durch einen Multiplikanden, dadurch gekennzeichnet, daß das
Verfahren nachfolgende Schritte umfaßt:
- Speichern des Multiplikators, eines Teilergebnisses und eines konstanten
Koeffizienten in ersten (B), zweiten (S) und dritten (N) unterteilten Hauptschalt-
und getakteten jeweils seriellen-Ein seriellen-Aus Zählwerken (10, 11 und 12);
für jedes einer Vielzahl Teile des Multiplikanden (21), der in einem ersten
seriellen-parallelen Multiplikationswerk (19) untergebracht ist, der den
Multiplikator aus dem Zählwerk (10) in besagtem seriellen-parallelen
Multiplikationswerk (19) empfängt und seinerseits den Multiplikator mit einem
laufenden Teil des Multiplikanden multipliziert und eine Ausgabe generiert,
umfassend ein Produkt besagter Multiplikation;
in dem, nachdem die Vielzahl Teile des Multiplikanden von dem ersten Zählwerk
(19) verarbeitet worden ist, besagtes Teilergebnis eine begrenzte Kongruenz
eines Ergebnisses der Durchführung besagter modularer Multiplikation besagten
Multiplikators durch besagten Multiplikanden bildet;
- Addieren der Ausgabe des ersten seriellen Addierwerks (30) des ersten
Multiplikationswerkes (19) mit einer begrenzten Kongruenz des sich in dem
Zählwerk (1) befindenden und eine Ausgabe liefernden Teilergebnisses;
- erst in einem zweiten seriellen-parallelen Multiplex-Multiplikationswerk (20), das
in einer ersten Phase die Ausgabe des ersten seriellen Zählwerks und eine
Montgomery-Konstante empfängt und in einer zweiten Phase den konstanten
Koeffizienten aus dem Zählwerk (12) empfängt und in der ersten Phase ein
Produkt der ersten Phase der Montgomery-Konstante durch einen Teil der
Ausgabe des ersten seriellen Zählwerks (30) berechnet und in der zweiten Phase
den konstanten Koeffizienten mit dem Produkt der ersten Phase multipliziert, um
dadurch eine Ausgabe der zweiten Phase zu generieren;
- in einem zweiten seriellen Addierwerk (31) die Ausgabe der zweiten Phase mit
der Ausgabe des ersten seriellen Zählwerks (30) kombinieren, um dadurch
besagtes Teilergebnis zu generieren;
- in den Subtrahierwerken (27, 28) den konstanten Koeffizienten von den Inhalten
der Zählwerke (10, 11) subtrahieren, um eine begrenzte Kongruenz davon zu
produzieren;
- aktivieren durch einen Entnahme-Sensor (35), der geeignet ist, die
Subtrahierwerke (27, 28) zu aktivieren;
- Differentialeingaben an wenigstens besagte zweite Multiplikationswerke (20)
jeweils in der ersten und zweiten Phase liefern;
- Durch Verzögerungszahlwerke (32, 33, 34) wenigstens besagte erste und
zweite Phase synchronisieren; und
- besagtes Gerät durch Durchführung von wenigstens einer modularen
Multiplikationsoperation oder einer modularen Quadrierungsoperation einsetzen.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IL10392192 | 1992-11-30 | ||
IL10475393 | 1993-02-16 | ||
IL10692393A IL106923A (en) | 1993-09-06 | 1993-09-06 | Device for performing modular multiplication |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69329929D1 DE69329929D1 (de) | 2001-03-22 |
DE69329929T2 true DE69329929T2 (de) | 2001-09-27 |
Family
ID=27271582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69329929T Expired - Lifetime DE69329929T2 (de) | 1992-11-30 | 1993-11-26 | Mikroelektronische Kompaktanlage zum Ausführen modulärer Multiplizierung und Potenzierung mit grossen Operanden |
Country Status (5)
Country | Link |
---|---|
US (2) | US5513133A (de) |
EP (1) | EP0601907B1 (de) |
JP (1) | JP3636740B2 (de) |
AT (1) | ATE199189T1 (de) |
DE (1) | DE69329929T2 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10151129A1 (de) * | 2001-10-17 | 2003-05-08 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation |
Families Citing this family (88)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19990024971A (ko) * | 1997-09-09 | 1999-04-06 | 정선종 | 모듈러 승산장치 |
EP0656709B1 (de) * | 1993-11-30 | 2005-07-13 | Canon Kabushiki Kaisha | Verfahren und Anordnung zur Verschlüsselung/Entschlüsselung auf der Basis des Montgomery-Verfahrens unter Verwendung von effizienter modularer Multiplikation |
FR2724741B1 (fr) * | 1994-09-21 | 1996-12-20 | Sgs Thomson Microelectronics | Circuit electronique de calcul modulaire dans un corps fini |
FR2726667B1 (fr) | 1994-11-08 | 1997-01-17 | Sgs Thomson Microelectronics | Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery |
FR2726666B1 (fr) * | 1994-11-08 | 1997-01-17 | Sgs Thomson Microelectronics | Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operations modulaires selon la methode de montgomery |
FR2726668B1 (fr) * | 1994-11-08 | 1997-01-10 | Sgs Thomson Microelectronics | Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery |
FR2741973B1 (fr) | 1995-12-04 | 1998-01-02 | Sgs Thomson Microelectronics | Procede de production d'un parametre jo associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery |
FR2743646B1 (fr) * | 1996-01-12 | 1998-03-06 | Sgs Thomson Microelectronics | Coprocesseur d'arithmetique modulaire comportant un circuit de division entiere |
FR2743645B1 (fr) | 1996-01-15 | 1998-02-27 | Sgs Thomson Microelectronics | Dispositif ameliorant la vitesse de traitement d'un coprocesseur d'arithmetique modulaire |
FR2743908B1 (fr) * | 1996-01-18 | 1998-02-27 | Sgs Thomson Microelectronics | Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery |
FR2743907B1 (fr) * | 1996-01-18 | 1998-02-27 | Sgs Thomson Microelectronics | Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery |
IL117085A (en) | 1996-02-08 | 2005-07-25 | Milsys Ltd | Secure computer system |
FR2745646B1 (fr) * | 1996-03-01 | 1998-05-07 | Sgs Thomson Microelectronics | Coprocesseur d'arithmetique modulaire permettant de realiser des operations non modulaires rapidement |
FR2745647B3 (fr) * | 1996-03-01 | 1998-05-29 | Sgs Thomson Microelectronics | Coprocesseur d'arithmetique modulaire permettant de realiser des operations non modulaires rapidement |
US5928315A (en) * | 1996-09-18 | 1999-07-27 | International Business Machines Corporation | Apparatus and method for calculating Bc (mod n) |
US6317769B1 (en) * | 1996-09-18 | 2001-11-13 | International Business Machines Corporation | Apparatus for calculating of Bc (mod n) with repeatedly shifting a holding value |
EP0890147B1 (de) * | 1996-10-31 | 2004-02-25 | Atmel Research | Koprozessor zum ausfuehren von modularen multiplikation |
GB2318892B (en) * | 1996-10-31 | 2001-07-11 | Motorola Ltd | Co-processor for performing modular multiplication |
FR2758195B1 (fr) * | 1997-01-09 | 1999-02-26 | Sgs Thomson Microelectronics | Coprocesseur d'arithmetique modulaire comprenant deux circuits de multiplication operant en parallele |
US6748410B1 (en) | 1997-05-04 | 2004-06-08 | M-Systems Flash Disk Pioneers, Ltd. | Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication |
DE69838390T2 (de) | 1997-05-04 | 2008-05-29 | Sandisk Il Ltd | Verbessertes gerät und verfahren für modulare multiplikation und exponentation basierend auf montgomerymultiplikation |
US6064740A (en) * | 1997-11-12 | 2000-05-16 | Curiger; Andreas | Method and apparatus for masking modulo exponentiation calculations in an integrated circuit |
KR100267009B1 (ko) * | 1997-11-18 | 2000-09-15 | 윤종용 | 고속 암호화 처리를 위한 어레이 구조를 가지는 모듈러 곱셈장치 |
FR2773231B1 (fr) * | 1997-12-31 | 2000-02-25 | Sgs Thomson Microelectronics | Procede de production ameliore d'un parametre jo associe a la mise en oeuvre d'operations modulaires selon la methode de montgomery |
US6085210A (en) * | 1998-01-22 | 2000-07-04 | Philips Semiconductor, Inc. | High-speed modular exponentiator and multiplier |
US5939693A (en) * | 1998-02-02 | 1999-08-17 | Motorola Inc. | Polynomial calculator device, and method therefor |
US6240436B1 (en) * | 1998-03-30 | 2001-05-29 | Rainbow Technologies, Inc. | High speed montgomery value calculation |
DE69828150T2 (de) * | 1998-03-30 | 2005-12-15 | Rainbow Technologies Inc., Irvine | Vom Rechenaufwand her effizientes modulares Multiplikationsverfahren und Gerät |
US6044390A (en) * | 1998-04-16 | 2000-03-28 | V L S I Technology, Inc. | Recursive lookahead-based 2n -bit serial multipliers over Galois Field GF (2m) |
DE19820605A1 (de) * | 1998-05-08 | 1999-11-11 | Giesecke & Devrient Gmbh | Verfahren zur sicheren Verteilung von Software |
US6182104B1 (en) * | 1998-07-22 | 2001-01-30 | Motorola, Inc. | Circuit and method of modulo multiplication |
KR100304693B1 (ko) | 1998-07-22 | 2001-09-29 | 윤종용 | 모듈러연산장치및모듈러연산기능을갖는ic카드 |
US7277540B1 (en) * | 1999-01-20 | 2007-10-02 | Kabushiki Kaisha Toshiba | Arithmetic method and apparatus and crypto processing apparatus for performing multiple types of cryptography |
FR2791155B1 (fr) * | 1999-03-17 | 2001-05-11 | St Microelectronics Sa | Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery |
FR2791156B1 (fr) * | 1999-03-17 | 2001-05-11 | St Microelectronics Sa | Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery |
US6298135B1 (en) | 1999-04-29 | 2001-10-02 | Motorola, Inc. | Method of preventing power analysis attacks on microelectronic assemblies |
FR2794258B1 (fr) * | 1999-05-26 | 2001-09-14 | St Microelectronics Sa | Circuit de multiplication |
US7509486B1 (en) * | 1999-07-08 | 2009-03-24 | Broadcom Corporation | Encryption processor for performing accelerated computations to establish secure network sessions connections |
GB2352309B (en) * | 1999-07-21 | 2004-02-11 | Advanced Risc Mach Ltd | A system and method for performing modular multiplication |
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 |
US6820105B2 (en) | 2000-05-11 | 2004-11-16 | Cyberguard Corporation | Accelerated montgomery exponentiation using plural multipliers |
WO2001089129A2 (en) | 2000-05-15 | 2001-11-22 | M-Systems Flash Disk Pioneers Ltd. | Extending the range of computational fields of integers |
IL140267A0 (en) | 2000-12-13 | 2003-09-17 | Milsys Ltd | Dual processor trusted computing environment |
US6963645B2 (en) | 2000-12-19 | 2005-11-08 | International Business Machines Corporation | Method for implementing the chinese remainder theorem |
US6763365B2 (en) | 2000-12-19 | 2004-07-13 | International Business Machines Corporation | Hardware implementation for modular multiplication using a plurality of almost entirely identical processor elements |
US6804696B2 (en) | 2000-12-19 | 2004-10-12 | International Business Machines Corporation | Pipelining operations in a system for performing modular multiplication |
US20020116429A1 (en) * | 2000-12-19 | 2002-08-22 | International Business Machines Corporation | System and method for modular multiplication |
US6978016B2 (en) * | 2000-12-19 | 2005-12-20 | International Business Machines Corporation | Circuits for calculating modular multiplicative inverse |
US6963977B2 (en) * | 2000-12-19 | 2005-11-08 | International Business Machines Corporation | Circuits and methods for modular exponentiation |
US6914983B2 (en) | 2000-12-19 | 2005-07-05 | International Business Machines Corporation | Method for checking modular multiplication |
FR2819070B1 (fr) * | 2000-12-28 | 2003-03-21 | St Microelectronics Sa | Procede et dispositif de protection conte le piratage de circuits integres |
KR20020071327A (ko) * | 2001-03-06 | 2002-09-12 | 미션텔레콤 주식회사 | 씨알티를 이용한 하이래딕스 알에스에이 모듈로 멱승 처리기 |
US20020172355A1 (en) * | 2001-04-04 | 2002-11-21 | Chih-Chung Lu | High-performance booth-encoded montgomery module |
KR100417136B1 (ko) * | 2001-04-13 | 2004-02-05 | 한국전자통신연구원 | 다항식 기저에서 유한체 승산 장치 및 그 방법 |
US7017064B2 (en) * | 2001-05-09 | 2006-03-21 | Mosaid Technologies, Inc. | Calculating apparatus having a plurality of stages |
JP2002358010A (ja) * | 2001-05-31 | 2002-12-13 | Mitsubishi Electric Corp | べき乗剰余演算器 |
US20030072442A1 (en) * | 2001-10-01 | 2003-04-17 | Blakley George Robert | Cisponentiation method, software, and device for exponentiation |
KR100449491B1 (ko) * | 2001-12-11 | 2004-09-21 | 한국전자통신연구원 | 모듈러 곱셈 장치 |
US7395295B2 (en) * | 2001-12-14 | 2008-07-01 | Nxp B.V. | Pipeline core in Montgomery multiplier |
JP3999554B2 (ja) * | 2002-04-19 | 2007-10-31 | 沖電気工業株式会社 | 乗算剰余演算方法及び演算装置 |
US7512230B2 (en) * | 2002-04-30 | 2009-03-31 | She Alfred C | Method and apparatus of fast modular reduction |
US7451326B2 (en) * | 2002-08-26 | 2008-11-11 | Mosaid Technologies, Inc. | Method and apparatus for processing arbitrary key bit length encryption operations with similar efficiencies |
US7386705B2 (en) | 2002-08-27 | 2008-06-10 | Mosaid Technologies Inc. | Method for allocating processor resources and system for encrypting data |
US7627114B2 (en) * | 2002-10-02 | 2009-12-01 | International Business Machines Corporation | Efficient modular reduction and modular multiplication |
KR100481586B1 (ko) * | 2002-11-22 | 2005-04-08 | 한국전자통신연구원 | 모듈러 곱셈 장치 |
JP2004258141A (ja) * | 2003-02-24 | 2004-09-16 | Fujitsu Ltd | モンゴメリ乗算剰余の多倍長演算のための演算装置 |
KR100458031B1 (ko) * | 2003-03-14 | 2004-11-26 | 삼성전자주식회사 | 몽고메리 유형의 모듈라 곱셈 장치 및 방법 |
US7185039B2 (en) * | 2003-05-19 | 2007-02-27 | Lsi Logic Corporation | Multiplier for modular exponentiation |
FR2862454A1 (fr) * | 2003-11-18 | 2005-05-20 | Atmel Corp | Methode de reduction modulaire aleatoire et equipement associe |
KR100550015B1 (ko) * | 2003-12-18 | 2006-02-08 | 한국전자통신연구원 | GF(3^m)의 유한체 곱셈 연산에 적합한 유한체 곱셈연산 장치, 이에 적합한 mod 3 비트 곱셈기, 그리고이에 적합한 mod 3 비트열 덧셈기 |
US7664810B2 (en) | 2004-05-14 | 2010-02-16 | Via Technologies, Inc. | Microprocessor apparatus and method for modular exponentiation |
JP4170267B2 (ja) * | 2004-07-09 | 2008-10-22 | Necエレクトロニクス株式会社 | 乗算剰余演算器及び情報処理装置 |
JP4180024B2 (ja) * | 2004-07-09 | 2008-11-12 | Necエレクトロニクス株式会社 | 乗算剰余演算器及び情報処理装置 |
US7801937B1 (en) * | 2004-09-01 | 2010-09-21 | Altera Corporation | Method and apparatus for implementing a look-ahead for low radix Montgomery multiplication |
FR2885711B1 (fr) * | 2005-05-12 | 2007-07-06 | Atmel Corp | Procede et materiel modulaire et aleatoire pour la reduction polynomiale |
CN100435090C (zh) * | 2005-08-18 | 2008-11-19 | 上海微科集成电路有限公司 | 可扩展高基蒙哥马利模乘算法及其电路结构 |
WO2007046402A1 (ja) * | 2005-10-19 | 2007-04-26 | Matsushita Electric Industrial Co., Ltd. | 情報セキュリティ装置、情報セキュリティ方法、コンピュータプログラム、コンピュータ読み取り可能な記録媒体及び集積回路 |
US7873830B2 (en) * | 2006-01-13 | 2011-01-18 | International Business Machines Corporation | Methods for coordinating access to memory from at least two cryptography secure processing units |
US7870395B2 (en) * | 2006-10-20 | 2011-01-11 | International Business Machines Corporation | Load balancing for a system of cryptographic processors |
US8532288B2 (en) | 2006-12-01 | 2013-09-10 | International Business Machines Corporation | Selectively isolating processor elements into subsets of processor elements |
US7890559B2 (en) * | 2006-12-22 | 2011-02-15 | International Business Machines Corporation | Forward shifting of processor element processing for load balancing |
US10003341B1 (en) | 2009-06-30 | 2018-06-19 | Altera Corporation | Flexible input structure for arithmetic processing block |
DE102010051853A1 (de) * | 2010-11-18 | 2012-05-24 | Giesecke & Devrient Gmbh | Verfahren zur Langzahldivision |
FR2971872B1 (fr) * | 2011-02-18 | 2014-06-20 | Bull Sas | Circuit integre programmable de cryptographie |
US9813232B2 (en) * | 2015-03-17 | 2017-11-07 | Cypress Semiconductor Corporation | Device and method for resisting non-invasive attacks |
CN109710308B (zh) * | 2017-10-25 | 2023-03-31 | 阿里巴巴集团控股有限公司 | 任务的处理方法、装置和系统 |
US11508263B2 (en) | 2020-06-24 | 2022-11-22 | Western Digital Technologies, Inc. | Low complexity conversion to Montgomery domain |
US11468797B2 (en) | 2020-06-24 | 2022-10-11 | Western Digital Technologies, Inc. | Low complexity conversion to Montgomery domain |
Family Cites Families (11)
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 |
EP0281303A3 (de) * | 1987-03-04 | 1990-08-29 | Cylink Corporation | Modulo-arithmetischer Rechnerchip |
US4891781A (en) * | 1987-03-04 | 1990-01-02 | Cylink Corporation | Modulo arithmetic processor chip |
GB8815868D0 (en) * | 1988-07-04 | 1988-08-10 | British Aerospace | Digital signal processing |
US5073870A (en) * | 1989-01-30 | 1991-12-17 | Nippon Telegraph And Telephone Corporation | Modular multiplication method and the system for processing data |
US5121431A (en) * | 1990-07-02 | 1992-06-09 | Northern Telecom Limited | Processor method of multiplying large numbers |
US5210710A (en) * | 1990-10-17 | 1993-05-11 | Cylink Corporation | Modulo arithmetic processor chip |
US5101431A (en) * | 1990-12-14 | 1992-03-31 | Bell Communications Research, Inc. | Systolic array for modular multiplication |
IL97413A (en) * | 1991-03-04 | 1995-06-29 | Fortress U & T 2000 Ltd | Microcircuit for the implementation of rsa algorithm and ordinary and modular arithmetic in particular exponentiation with large operands |
US5321752A (en) * | 1991-09-05 | 1994-06-14 | Canon Kabushiki Kaisha | Method of and apparatus for encryption and decryption of communication data |
US5159632A (en) * | 1991-09-17 | 1992-10-27 | Next Computer, Inc. | Method and apparatus for public key exchange in a cryptographic system |
-
1993
- 1993-11-18 US US08/154,220 patent/US5513133A/en not_active Expired - Lifetime
- 1993-11-26 DE DE69329929T patent/DE69329929T2/de not_active Expired - Lifetime
- 1993-11-26 AT AT93402865T patent/ATE199189T1/de active
- 1993-11-26 EP EP93402865A patent/EP0601907B1/de not_active Expired - Lifetime
- 1993-11-30 JP JP32600893A patent/JP3636740B2/ja not_active Expired - Lifetime
-
1995
- 1995-12-28 US US08/579,951 patent/US5742530A/en not_active Expired - Lifetime
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10151129A1 (de) * | 2001-10-17 | 2003-05-08 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation |
DE10151129B4 (de) * | 2001-10-17 | 2004-07-29 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation in einer Kryptographieschaltung |
US7016929B2 (en) | 2001-10-17 | 2006-03-21 | Infineon Technologies Ag | Method and device for calculating a result of an exponentiation |
Also Published As
Publication number | Publication date |
---|---|
EP0601907B1 (de) | 2001-02-14 |
ATE199189T1 (de) | 2001-02-15 |
JPH07253949A (ja) | 1995-10-03 |
US5513133A (en) | 1996-04-30 |
EP0601907A3 (de) | 1994-11-23 |
DE69329929D1 (de) | 2001-03-22 |
EP0601907A2 (de) | 1994-06-15 |
JP3636740B2 (ja) | 2005-04-06 |
US5742530A (en) | 1998-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69329929T2 (de) | Mikroelektronische Kompaktanlage zum Ausführen modulärer Multiplizierung und Potenzierung mit grossen Operanden | |
DE69838390T2 (de) | Verbessertes gerät und verfahren für modulare multiplikation und exponentation basierend auf montgomerymultiplikation | |
DE69716331T2 (de) | Schaltung für Modulo-Multiplikations- und Exponentiationsarithmetik | |
DE69828150T2 (de) | Vom Rechenaufwand her effizientes modulares Multiplikationsverfahren und Gerät | |
DE69818798T2 (de) | Hochgeschwindige Montgomerywert-Berechnung | |
DE69930334T2 (de) | IC-Karte ausgerüstet mit einer Verarbeitungsanlage für Elliptische-Kurven-Verschlüsselung | |
DE69229766T2 (de) | Verfahren und Gerät zum Verschlüsseln und Entschlüsseln von Kommunikationsdaten | |
DE69130581T2 (de) | Verfahren zur Berechnung einer Operation des Typus A.X modulo N, in einem Kodierverfahren gemäss der RSA-Methode | |
DE102020102453A1 (de) | Integrierte Schaltung zum modularen Multiplizieren von zwei ganzen Zahlen für ein kryptographisches Verfahren und Verfahren zur kryptographischen Verarbeitung von Daten basierend auf modularer Multiplikation | |
DE69727796T2 (de) | Koprozessor zum Ausführen von modularer Multiplikation | |
EP1543408B1 (de) | Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden | |
DE102006025673B4 (de) | Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls | |
EP1032873B1 (de) | Gerät für multipräzision ganzzahliger arithmetik | |
DE69837036T2 (de) | Verfahren und vorrichtung zur ausführung einer entschlüsselung mittels einer standardisierten modularen potenzierung zum vereiteln eines zeitangriffs | |
EP1576463B1 (de) | Modulare multiplikation mit paralleler berechnung der vorausschau-parameter | |
DE10141460A1 (de) | Potenzrestberechnungseinheit unter Verwendung eines Montgomery-Algorithmus | |
DE10219158B4 (de) | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation | |
EP2641241B1 (de) | Verfahren zur langzahldivision oder modulare reduktion | |
DE69700018T2 (de) | Koprozessor für moduläre Arithmetik mit einer schnellen Ausführung von nicht-modulären Operationen | |
DE60313637T2 (de) | Verfahren und vorrichtung zum verarbeiten von verschlüsselungsoperationen mit beliebiger schlüsselbitlänge mit ähnlichen effizienzen | |
DE102006025677B4 (de) | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge | |
DE60316342T2 (de) | Multiplizierer mit nachschlagetabellen | |
DE10205713C1 (de) | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses aus einer Division | |
DE19635118A1 (de) | Multiplizierer | |
DE69707717T2 (de) | Modulo-arithmetischer koprozessor mit einer schaltung für die division ganzer zahlen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8327 | Change in the person/name/address of the patent owner |
Owner name: M-SYSTEMS FLASH PIONEERS LTD., KFAR SABA, IL |
|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: SANDISK IL LTD, KFAR SABA, IL |