DE10219158A1 - Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation - Google Patents
Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen MultiplikationInfo
- Publication number
- DE10219158A1 DE10219158A1 DE2002119158 DE10219158A DE10219158A1 DE 10219158 A1 DE10219158 A1 DE 10219158A1 DE 2002119158 DE2002119158 DE 2002119158 DE 10219158 A DE10219158 A DE 10219158A DE 10219158 A1 DE10219158 A1 DE 10219158A1
- Authority
- DE
- Germany
- Prior art keywords
- mmd
- operand
- module
- sub
- bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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/722—Modular multiplication
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)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
Zum Berechnen eines Ergebnisses einer modularen Multiplikation eines ersten Operanden (A) und eines zweiten Operanden (B) bezüglich eines Moduls (N), welche eine Länge von 2 n Bits haben, werden die Operanden und der Modul in Unteroperanden der halben Länge zerlegt und einer Steuerungseinrichtung (14) zugeführt, die eine MMD-Einrichtung zum Ausführen einer Mult-ModDiv-Operation gemäß einer vorbestimmten Schrittsequenz mit entsprechenden Eingangsoperanden (12a, 12b) und MMD-Modulen (12c) ansteuert, um ganzzahlige Quotientenwerte (Q·(i)·) und Restwerte (R·(i)·) bezüglich des MMD-Moduls an einem Ausgang (12d) zu erhalten. Eine Zusammenfassungseinrichtung (16) ist wirksam, um ganzzahlige Quotientenwerte und Restwerte aus vorbestimmten Schritten der Schrittsequenz zusammenzufassen, um das Ergebnis zu erhalten. Durch Zerlegen einer modularen Multiplikation von Operanden z. B. der Länge von 2 n Bits in mehrere MMD-Operationen mit Operanden der Länge von n Bits, also der halben Länge, wird es ermöglicht, daß auf effiziente Art und Weise kryptographische Algorithmen mit langen Operanden auf einem für kürzere Operanden entwickelten Rechenwerk ausgeführt werden können, so daß zunehmende Sicherheitsanforderungen nach längeren Schlüsseln mit bestehenden Schaltungen effizient erfüllt werden.
Description
- Die vorliegende Erfindung bezieht sich auf Rechenalgorithmen und insbesondere auf Rechenalgorithmen, die für kryptographische Anwendungen benötigt werden.
- Insbesondere in der Public-Key-Kryptographie, jedoch auch in anderen Kryptographiegebieten, wachsen die Schlüssellängen stetig. Dies ist darin begründet, daß auch die Sicherheitsanforderungen an solche kryptographische Algorithmen immer mehr zunehmen. Anhand des RSA-Verfahrens als Vertreter eines asymmetrischen Kryptographiekonzepts, also eines Public-Key- Verfahrens, nimmt die Sicherheit gegenüber sogenannten Brute- Force-Angriffen mit der verwendeten Schlüssellänge zu. Brute- Force-Angriffe sind Angriffe auf einen kryptographischen Algorithmus, bei dem durch Durchprobieren sämtlicher Möglichkeiten auf einen Schlüssel geschlossen werden soll. Es ist unmittelbar einsichtig, daß mit zunehmender Schlüssellänge die Zeit, die theoretisch für einen Brute-Force-Angriff benötigt wird, um alle Möglichkeiten durchzuprobieren, stark ansteigt.
- In diesem Zusammenhang sei angemerkt, daß zu früheren Zeiten RSA-Anwendungen mit Schlüssellängen von 512 Bits als ausreichend angesehen wurden. Aufgrund technischer und mathematischer Fortschritte der "Gegenseite" wurden dann die Schlüssellängen für typische RSA-Anwendungen auf 1024 Bits erhöht. Inzwischen wird von manchen Seiten die Ansicht vertreten, daß auch diese Schlüssellänge nicht ausreichend ist, so daß RSA- Schlüssellängen von 2048 Bits angestrebt werden.
- Wenn andererseits existierende kryptographische Coprozessoren, wie z. B. auf SmartCards, betrachtet werden, so ist zu sehen, daß selbstverständlich der Wunsch besteht, auch RSA- Anwendungen mit beispielsweise 2048 Bits Schlüssellängen auf kryptographischen Schaltungen laufen zu lassen, die eigentlich nur für Schlüssellängen von z. B. 1024 Bits entwickelt worden sind. So ist es gerade ein Kennzeichen von arithmetischen Coprozessoren für existierende SmartCard-Anwendungen, daß sie für eine feste Bitlänge entwickelt worden sind, die nicht für die neuesten Sicherheitsanforderungen geeignet sind, d. h. zu klein sind. Dies führt dazu, daß beispielsweise ein 2048-Bit-RSA-Algorithmus auf 1024 Bit-Coprozessoren nicht effizient gehandhabt werden können. Für RSA-Anwendungen ist beispielsweise der Chinesische Restsatz (CRT; CRT = Chinese Remainder Theorem) bekannt, bei dem eine modulare Exponentiation mit großer Schlüssellänge in zwei modulare Exponentiationen mit halb so großer Schlüssellänge zerlegt wird, wonach die Ergebnisse der beiden modularen Exponentiationen halber Länge entsprechend zusammengefaßt werden.
- In jüngster Zeit hat sich herausgestellt, daß der chinesische Restsatz besonders anfällig gegenüber DFA-Angriffen (DFA = Differential Fault Analysis) ist.
- Ein Problem bei vielen Verfahren ist daher das "Aufdoppeln" der sogenannten modularen Multiplikation, die eine zentrale Operation in kryptographischen Berechnungen ist. So kann eine modulare Exponentiation in viele modulare Multiplikationen zerlegt werden, d. h. in eine Operation, bei dem ein Produkt eines ersten Operanden A und eines zweiten Operanden B in einer Restklasse bezüglich eines Moduls N berechnet wird. Wenn die Operanden A und B jeweils 2n Bits haben, so werden typischerweise Rechenwerke verwendet, die eine Länge von 2n Bits haben. Diese Rechenwerke werden aufgrund ihrer hohen Länge als Langzahlrechenwerke bezeichnet, im Gegensatz zu beispielsweise klassischen 8-, 16-, 32- oder 64-Bit- Architekturen, die z. B. für PC- oder Workstation-Prozessoren eingesetzt werden.
- Wünsche bestehen daher dahingehend, eine modulare Multiplikation A.B mod N mit Zahlen A, B und N der Bit-Länge 2n auf einem n-Bit-Rechenwerk auszuführen. Dies ist sehr zeitaufwendig, da die Zahlen A, B, N, . . . immer nur bruchstückweise geladen werden können, weshalb konventionelle Methoden, sofern sie nicht gänzlich versagen, organisatorisch aufwendig und fehleranfällig sind. In der Technik gibt es mehrere Verfahren, mit denen dieses Problem bisher gelöst worden ist. Diese Verfahren sind unter dem Stichwort Montgomery-Multiplikation, normale Multiplikation, z. B. mit Karatsuba-Ofman und späterer Reduktion, wie z. B. Barret-Reduktion, bekannt.
- Ein weiteres Konzept, bei dem eine Montgomery-Rechnung in einem "CRT-Fenster" verwendet wird, ist in P. Pailler, "Low- cost double size modular exponentiation or how to stretch your cryptocoprocessor" dargelegt.
- Sämtliche derartigen Konzepte sind aufwendig hinsichtlich der Rechenzeit und der Datenorganisation und daher nicht immer effizient.
- Die Aufgabe der vorliegenden Erfindung besteht darin, ein Konzept zum Berechnen eines Ergebnisses einer modulare Multiplikation zu schaffen, das hinsichtlich Implementation und Rechenzeit effizient einsetzbar ist.
- Diese Aufgabe wird durch eine Vorrichtung nach Patentanspruch 1 oder durch ein Verfahren nach Patentanspruch 10 gelöst.
- Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, daß eine modulare Multiplikation zweier Operanden bezüglich eines Moduls, wobei die Operanden und der Modul eine Länge von beispielsweise 2n Bits haben, durch Unteroperanden At, Ab, Bt, Bb bzw. Untermodule Nt, Nb kleinerer Länge, wie z. B. n Bits, in eine vorbestimmte Schrittsequenz von MultModDiv- Operationen überführt werden kann. Die MultModDiv-Operationen (MMD-Operationen) arbeiten mit den Unteroperanden bzw. Untermodulen kleinerer, wie z. B. halber Länge. Bei der MultMod- Div-Operation wird zusätzlich zu der MultMod-Operation, die den Rest einer modularen Multiplikation liefert, auch das Ergebnis der bekannten Div-Operation eingesetzt. Das Ergebnis der Div-Operation, d. h. der ganzzahlige Quotient des Moduls wird neben dem Rest bei einer MMD-Operation berechnet. Indem eine solche MMD-Operation mehrmals mit von der vorbestimmten Schrittsequenz abhängigen Eingangsparametern und Modulen ausgeführt wird, entstehen ganzzahlige Quotientenwerte und Restwerte aus vorbestimmten Schritten der Schrittsequenz, die alle die kleinere Bitlänge, wie z. B. n Bits haben, und die - ebenfalls durch einen beispielsweise n-Bit-Addierer - zusammenaddiert und an entsprechenden Stellen in einen Ergebnisspeicherplatz geschrieben werden können.
- Ausgegangen wird von einem Ansatz (At.2n + Ab) (Bt.2n + Bb) als Bestimmungsgleichung zur Ableitung einer bevorzugten vorbestimmten Schrittsequenz. Nach Ausmultiplizieren des Ausdrucks entstehen verschiedene Produkte, die schrittweise durch MMD-Operationen ersetzt werden. Die modulare Reduktion, d. h. es soll ja A.B mod N berechnet werden, wird durch die Äquivalenz Nt.2n = -Nb berücksichtigt.
- Der Index "t" bezeichnet die oberen (top) Bits eines Operanden A, B bzw. Moduls N, während der Index "b" (b = bottom) für die unteren Bits der entsprechenden Zahl steht. So ergibt sich beispielsweise der Operand A als At.2n + Ab. Ähnliches gilt für den Modul N und den zweiten Operanden B. Indem, wie es ausgeführt worden ist, die Partialprodukte nach und nach durch MMD-Operationen ersetzt werden, so daß nach einer Mehrzahl von Ersetzungsschritten lediglich Produkte von Zahlen einer Länge kleiner als n Bits mit einem Faktor 2n oder Zahlen einer Länge von n Bits verbleiben, kann die Zusammenfassungsausrichtung ebenfalls als n-Bit-Addierer ausgebildet sein, um einerseits die Zwischenergebnisse, die mit dem Faktor 2 n multipliziert sind, zusammenzufassen, und um andererseits die Zwischenergebnisse zusammenzufassen, die nicht mit einem Faktor 2n beaufschlagt sind.
- Selbstverständlich ergibt sich als Ergebnis der modularen Multiplikation mit Operanden bzw. einem Modul einer Länge von 2n Bits wieder eine 2n Bitzahl, die in einem Ergebnisspeicher dadurch zusammengefügt wird, daß die Summe der Zwischenergebnisse ohne Faktor 2n in die niedrigen Bits des Ergebnisspeichers geschrieben werden, während die Summe der Zwischenergebnisse, die mit 2n beaufschlagt sind, an die oberen Bits des Ergebnisspeichers geschrieben werden, wobei ein gegebenenfalls vorhandener Übertrag von den unteren Bits im Ergebnisspeicher zu den oberen Bits im Ergebnisspeicher ohne weiteres berücksichtigbar ist.
- Ein Vorteil der vorliegenden Erfindung besteht darin, daß das erfindungsgemäße Konzept die Verwendung von Rechenwerken kleinerer Länge für Zahlen größerer Länge erlaubt.
- Ein weiterer Vorteil der vorliegenden Erfindung besteht darin, daß das erfindungsgemäße Konzept effizient ist. So zeigt sich bei einem Vergleich einer Implementierung des erfindungsgemäßen Konzepts auf dem Advanced Crypto Engine von Infineon Technologies, München, im Vergleich zu einer Implementierung des Konzepts von Pailler, das in der Beschreibungseinleitung zitiert ist, eine Reduktion der Ausführungszeit von z. B. RSA um 40%.
- Ein weiterer Vorteil der vorliegenden Erfindung besteht darin, daß die Div-Information, also der ganzzahlige Quotient, durch einfach zu implementierende Maßnahmen entweder softwaremäßig oder hardwaremäßig aus der MultMod-Operation gewinnbar ist, die typischerweise auf jedem Mehrzweck- Kryptographieprozessor implementiert ist. Bei der Modulo- Arithmetik, wie sie typischerweise in modernen Kryptosystemen eingesetzt wird, wurde bisher das Ergebnis der Div-Operation, also der ganzzahlige Quotient bezüglich des Moduls, vernachlässigt, weil er nicht benötigt wurde. Erfindungsgemäß wird diese Information nicht mehr einfach ignoriert sondern berechnet und dazu verwendet, Berechnungen mit längeren Operanden auf kürzeren Rechenwerken auszuführen.
- Ein weiterer Vorteil der vorliegenden Erfindung besteht darin, daß die Div-Operation oftmals lediglich durch Änderungen im Controller eines Kryptographie-Prozessors berechnet werden kann, ohne jedoch Änderungen im eigentlichen fest verdrahteten Rechenwerk vornehmen zu müssen. Insofern benötigt die MMD-Operation dieselbe Zeit wie die MultMod-Operation, liefert jedoch neben dem Mod-Ergebnis jedoch noch eine Zusatzinformation, nämlich das Div-Ergebnis, welches erfindungsgemäß eingesetzt wird.
- Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen detailliert erläutert. Es zeigen:
- Fig. 1 ein Blockschaltbild einer Vorrichtung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
- Fig. 2 eine Darstellung der Operanden A, At, Ab für Unteroperanden halber Länge;
- Fig. 3 eine schematische Darstellung der MMD-Operation;
- Fig. 4 eine schematische Darstellung der Initialisierungs- MMD-Operation;
- Fig. 5 ein bevorzugtes Ausführungsbeispiel für eine vorbestimmte Schrittsequenz, bei der nur MMD-Operationen eingesetzt werden;
- Fig. 6 ein bevorzugtes Ausführungsbeispiel für eine vorbestimmte Schrittsequenz, bei der eine Initialisierungs-MMD-Operation eingesetzt wird;
- Fig. 7 ein bevorzugtes Ausführungsbeispiel für eine vorbestimmten Schrittsequenz, bei der nur MMD- Operationen eingesetzt werden;
- Fig. 8 ein bevorzugtes Ausführungsbeispiel für eine vorbestimmte Schrittsequenz zur Quadrierung, bei der eine Initialisierungs-MMD-Operation eingesetzt wird;
- Fig. 9 eine Darstellung zur Herleitung der vorbestimmten Schrittsequenz von Fig. 5 aus einer Produktzerlegung der Operanden A, B und des Moduls N;
- Fig. 10 eine Darstellung der Herleitung der vorbestimmten Schrittsequenz von Fig. 7 aus der Zerlegung der Operanden A, B und des Moduls N;
- Fig. 11 ein Blockschaltbild einer erfindungsgemäßen Zusammenfassungseinrichtung.
- Fig. 1 zeigt ein Blockschaltbild einer erfindungsgemäßen Vorrichtung zum Berechnen eines Ergebnisses einer modularen Multiplikation eines ersten Operanden A und eines zweiten Operanden B bezüglich eines Moduls N, wobei der erste Operand und der zweite Operand sowie der Modul eine erste Länge von Bits haben, wie z. B. die Länge 2n Bits. Die Operanden werden in eine Einrichtung 10 zum Bereitstellen von Unteroperanden eingespeist. Die von der Einrichtung 10 bereitgestellten Unteroperanden sind die Unteroperanden At, Ab, welche aus dem ersten Operanden A erzeugt werden. Die Einrichtung 10 zum Bereitstellen liefert ferner die Unteroperanden Bt, Bb, die aus dem zweiten Operanden B erzeugt werden. Schließlich liefert die Einrichtung 10 zum Bereitstellen die Untermodule Nt, Nb, die aus dem Modul N erzeugt werden. Die Größen At, Ab, Bt, Bb, Nt und Nb haben eine kleinere Länge als die Ursprungs-Zahlen A, B, N. Bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung, bei der der maximale Erfolg erzielt wird, d. h. bei der die modulare Multiplikation mit dem kürzesten Rechenwerk ausgeführt werden kann, haben die Unteroperanden bzw. Untermodule eine Länge von n, sind also halb so lang wie die entsprechenden "Ursprungs-Operanden".
- Die erfindungsgemäße Vorrichtung umfaßt ferner eine MMD- Einrichtung 12, deren Bitlänge gleich der Bitlänge des größten Unteroperanden bzw. Untermoduls ist. Haben die Unteroperanden und Untermodule alle die gleiche Länge von n Bit, so hat die MMD-Einrichtung ebenfalls eine Länge von n Bit. Die MMD-Operation ist dahingehend definiert, daß aus zwei Eingangsoperanden, die über Eingänge 12a, 12b in die MMD- Einrichtung eingespeist werden, und einem MMD-Modul, das über einen dritten Eingang 12c bereitgestellt wird, ein ganzzahliger Quotientenwert Q(i) und ein Restwert R(i) berechnet werden und an einem Ausgang 12d ausgegeben werden, welcher sowohl mit einer Steuerungseinrichtung 14 als auch mit einer Zusammenfassungseinrichtung 16 verbindbar ist. Die Steuerungseinrichtung 14 zum Speisen der MMD-Einrichtung mit vorbestimmten Kombinationen von Eingangsoperationen und zugehörigen MMD- Modulen führt diese Speisung schrittweise gemäß einer vorbestimmten Schritt-Sequenz durch, wobei die Eingangsoperanden und MMD-Module auf dem ersten Unteroperanden At und dem zweiten Unteroperanden Ab des ersten Operanden A, dem ersten Unteroperanden Bt und dem zweiten Unteroperanden Bb des zweiten Operanden B, dem ersten Untermodul Nt und dem zweiten Untermodul Nb des Moduls N, der Größe 2 x und ganzzahligen Quotientenwerten und Restwerten aus vorigen Schritten in der vorbestimmten Schrittsequenz basieren, wobei x insbesondere kleiner als 2n ist und bei einem bevorzugten Ausführungsbeispiel gleich n beträgt, also der maximalen Länge der der Steuerungseinrichtung 14 zur Verfügung gestellten Zahlen.
- Die Zusammenfassungseinrichtung 16 ist ausgebildet, um ganzzahlige Quotientenwerte und Restwerte aus vorbestimmten Schritten der vorbestimmten Schrittsequenz zusammenzufassen, um das Ergebnis E = A.B mod N, das wieder eine Länge von 2 n Bits hat, zu erhalten.
- Im nachfolgenden wird anhand von Fig. 2 die Funktionsweise der Einrichtung 10 zum Bereitstellen näher erläutert. Fig. 2 zeigt ein erstes Register 20 mit einer Länge von 2n Bits zum Speichern beispielsweise des ersten Operanden A. Die Einrichtung 10 zum Bereitstellen erzeugt den ersten Unteroperanden Ab des Operanden A, indem die ersten x Bits, wobei x beim bevorzugten Ausführungsbeispiel gleich n ist, in ein Unteroperandenregister 22 kopiert werden, während die restlichen Bits des Registers 20, At in ein zweites Unteroperandenregister 24 kopiert werden. Der erste und der zweite Unteroperand wird somit einfach durch Aufteilen der Bits des zugrunde liegenden Langzahl-Operanden erhalten. Die Zahlen aus den beiden Unteroperandenregistern 22 und 24 ergeben somit wieder den ursprünglichen Operanden gemäß der in Fig. 2 gezeigten Gleichung, d. h. indem der erste Operand Ab in ein Ergebnisregister A geschrieben wird und der zweite Operand At ebenfalls in das Ergebnisregister geschrieben wird, jedoch um n Bits nach links verschoben, wie es durch den Faktor 2n dargestellt ist.
- Fig. 3 zeigt eine detailliertere Darstellung der Funktionsweise der MMD-Einrichtung 12. Dieselbe umfaßt insbesondere einen MMD-Operator 30 zum Ausführen einer MMD-Operation, wobei "MMD" für "MultModDiv" steht. Die MMD-Operation erzeugt aus drei Eingangswerten A(i), B(i) und N(i) als Modul den ganzzahligen Quotientenwert Q(i) sowie einen Restwert R(i), wobei der Restwert R wie üblich durch die Mod-Operation definiert ist, während der Quotientenwert Q dem ganzzahligen Ergebnis der Division von A.B durch N entspricht. Die MMD-Operation führt somit das Produkt A.B in die Summe aus dem Produkt des ganzzahligen Quotienten und dem Modul und dem Restwert um. Der hochgestellte Index (i) symbolisiert einen bestimmten Schritt i in der vorbestimmten Schrittsequenz, die die Steuerungseinrichtung 14 ausführt, um die MMD-Einrichtung 12 geeignet anzusteuern.
- Bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird es bevorzugt, daß die vorbestimmte Schritt- Sequenz nicht nur MMD-Operationen umfaßt, sondern neben den MMD-Operationen auch zumindest eine Initialisierungs-MMD- Operation durchführt. Die Initialisierungs-MMD-Operation ist durch eine in Fig. 4 mit 40 bezeichnete Gleichung definiert. Sie führt einen Term A.B + C.2n in eine Darstellung aus ganzzahligem Quotienten mal Modul und Rest um. C ist eine beliebige Zahl. Der Index n korrespondiert hinsichtlich seines Werts n mit dem vorstehend beschriebenen Beispiel, bei dem die ursprünglichen Operanden A, B, N eine Länge von 2n Bits haben, und bei dem die Unteroperanden bzw. Untermodule eine Länge von n Bits haben. Wird eine andere Aufteilung als die Halbierung der Operanden verwendet, so müßte n in Fig. 4 durch den Wert x ersetzt werden, wobei x gleich der Anzahl von Bits des ersten Unteroperanden Ab, Bb bzw. Untermoduls Nb ist. Der ganzzahlige Rest R ist definiert, wie es in Gleichung 42 von Fig. 4 dargestellt ist. Ferner ist der ganzzahlige Quotient Q definiert, wie es in Gleichung 44 in Fig. 4 dargestellt ist. Ein Initialisierungs-MMD-Operator 30b führt somit eine sogenannte Initialisierungs-MMD-Operation mit einem Term, der die Eingangsoperanden A(i), B(i), N(i), C(i) und n aufweist, durch, um als Ausgangswerte den ganzzahligen Quotienten Q(i) und den Restwert R(i) zu erzeugen.
- Es sei darauf hingewiesen, daß die Initialisierungs-MMD- Operation eine speziell definierte Operation ist, die ebenfalls in der MMD-Einrichtung 12 von Fig. 1 implementierbar ist, wenn die vorbestimmte Schrittsequenz neben einer MMD- Operation auch eine Initialisierungs-MMD-Operation umfassen soll. In diesem Fall würde die MMD-Einrichtung 12 von Fig. 1 auch der Parameter C sowie der Parameter n als Eingangsgröße bereitgestellt werden.
- Im nachfolgenden wird anhand von Fig. 5 eine Schrittsequenz mit sieben MultModDiv-Operationen beschrieben, um das Ergebnis der modularen Multiplikation von A.B mod N unter Verwendung lediglich einer MMD-Einheit 12 von Fig. 1 und einer Zusammenfassungseinrichtung 16 von Fig. 1 mit kleinerer (vorzugsweise halber) Bitlänge zu berechnen. In einem ersten Schritt 51 wird unter Verwendung der Eingangsoperanden Bt und 2n sowie des MMD-Moduls Nt ein erster ganzzahliger Quotient Q(1) sowie ein erster Restwert R(1) berechnet. In einem zweiten Schritt 52 wird ein zweiter Quotientenwert sowie ein zweiter Restwert unter Verwendung des ersten Restwerts und des ersten Untermoduls Nb als Eingangsoperanden und der Zahl 2 n als MMD- Modul berechnet. Wie es in Fig. 5 dargestellt ist, wird dieses Prozedere mit den Schritten 53, 54, 55, 56 und 57 fortgesetzt, um schließlich einen siebten ganzzahligen Quotientenwert Q(7) sowie einen siebten Restwert R(7) zu erhalten, welcher aus einer MMD-Operation unter Verwendung des ersten Unteroperanden Ab und des ersten Operanden A und des zweiten Unteroperanden Bb des zweiten Operanden B sowie der Zahl 2 n als MMD-Modul erhalten wird.
- In einer Gleichung 58 von Fig. 5, die mit "Ausgabe" tituliert ist, ist die Zusammenfassungsoperation der Zusammenfassungseinrichtung 16 von Fig. 1 dargestellt. Insbesondere bildet die Zusammenfassungseinrichtung eine erste Summe von Restwerten R(7) - R(6) - R(5) als erste Summe. Die Zusammenfassungseinrichtung 16 von Fig. 1 berechnet ferner eine Summe aus R(3) + R(4) - Q(5) - Q(6) + Q(7) als zweite Summe. Wie es in Fig. 5 dargestellt ist, wird die zweite Summe mit dem Faktor 2n multipliziert und dann mit der ersten Summe addiert. Diese Operation kann, wie es anhand von Fig. 11 dargestellt ist, ebenfalls durch ein n-Bit-Rechenwerk, also durch ein Rechenwerk kurzer Länge, implementiert werden.
- Aus Fig. 5 zeigt sich, daß lediglich sieben MMD-Operationen in der in Fig. 5 gezeigten vorbestimmten Schrittsequenz mit den entsprechenden Kombinationen von Eingangsoperanden und MMD-Modulen benötigt werden. Ist B, wie es üblicherweise der Fall ist, vorab bekannt, so können die ersten beiden MMD- Operationen vorab berechnet werden, so daß sich eine On-Line- Performance von 5 MMD-Operationen ergibt. Insbesondere wird auf den dritten Schritt 53 der vorbestimmten Schrittsequenz hingewiesen. Hier wird als zweiter Eingangsoperand für die MMD-Operation der Ausdruck R(1) - Q(2) + Bb eingesetzt. Dieser Ausdruck kann negativ werden, so daß auf Q(3) und Q(5) (fünfter Schritt 55 von Fig. 5) negativ werden können. In diesem Fall wird bevorzugt, entsprechende Vorkehrungen zu treffen, die auf dem Gebiet der Modulo-Arithmetik üblich und bekannt sind, wenn negative Werte auftreten, wie z. B. das Hinzuaddieren eines Moduls, um ein negatives Ergebnis in die korrekte Restklasse zu bringen, also in die Restklasse zwischen 0 und dem der Berechnung zugrunde liegenden Modul.
- Fig. 6 zeigt eine alternative vorbestimmte Sequenz, bei der neben dem MMD-Operator 30a von Fig. 3 der Initialisierungs- MMD-Operator 30b von Fig. 4 eingesetzt wird. Während in einem ersten Schritt 61 der in Fig. 6 gezeigten vorbestimmten Schrittsequenz ein erster Quotientenwert Q(1) und einer erster Restwert R(1) aus einer MMD-Operation mit At, Bt und einem MMD-Modul Nt berechnet werden, findet in dem Schritt 62 eine Initialisierungs-MMD-Operation (MultModDivInt) statt, und zwar mit dem Eingangsoperanden Nb als erstem Eingangsoperand (entsprechend A von Fig. 4), mit -Q(1) als zweitem Eingangsoperand entsprechend B von Fig. 4, mit R(1) als drittem Eingangsoperanden (entsprechend C von Fig. 4) und dem zweiten Untermodul Nt als MMD-Modul (entsprechend N von Fig. 4).
- Aus Fig. 6 ergibt sich, daß im Gegensatz zu Fig. 5 lediglich sechs MMD-Operationen benötigt werden, wobei eine Operation, nämlich die zweite Operation im zweiten Schritt 62 eine Initialisierungs-MMD-Operation ist. Ferner wird darauf hingewiesen, daß Q(2) negativ werden kann, wobei hier wieder die oben beschriebenen Maßnahmen bei negativen Größen angezeigt sein können.
- In einer Zeile 67 von Fig. 6 ist wieder die von der Zusammenfassungseinrichtung 16 von Fig. 1 durchzuführende Aufgabe dargestellt, nämlich die erste Summe aus R(5) und -R(6) zu bilden, die zweite Summe aus R(2) + R(3) + R(4) + Q(5) - Q(6) zu bilden, um die zweite Summe zu erhalten, und um dann die erste und die zweite Summe gegebenenfalls unter Berücksichtigung eines Übertrags, wie es anhand von Fig. 11 noch deutlich gemacht wird, zusammenzufassen.
- In Fig. 7 wird eine vorbestimmte Schrittsequenz aus den Schritten 71, 72, 73, 74, 75, 76 dargestellt, um das Ergebnis einer Quadrierung des Operanden A zu berechnen. In diesem Fall entspricht der erste Operand dem zweiten Operand, d. h. der erste und der zweite Operand sind identisch. Aus Fig. 7 ist ersichtlich, daß bei dem in Fig. 7 gezeigten Quadrierungs-Algorithmus keine MMD-Operation mit Initialisierung verwendet wird, und insgesamt sechs MMD-Operationen ausreichend sind, im Gegensatz zu sieben MMD-Operationen, wenn der erste und der zweite Operand nicht identisch sind. Ferner sei darauf hingewiesen, daß aufgrund der Differenz im dritten Schritt 73 sowohl der dritte Quotientenwert Q(3) als auch der vierte Quotientenwert Q(4) negativ werden können.
- Fig. 8 zeigt eine vorbestimmte Schrittsequenz gemäß einem alternativen Ausführungsbeispiel, bei dem wieder in dem zweiten Schritt 82 der vorbestimmten Schrittsequenz eine Initialisierungs-MMD-Operation verwendet wird, wobei der erste und der zweite Eingangsoperand Nb und -Q(1) sind, wobei der dritte Eingangsoperand (entsprechend C in Fig. 4) der erste Restwert R(1) ist, und wobei als MMD-Modul der erste Untermodul Nt verwendet wird. Wenn eine Initialisierungs-MMD-Operation verwendet wird, so ergeben sich fünf MMD-Operationen, im Gegensatz zu sechs MMD-Operationen von Fig. 7 ohne Initialisierung. Wieder sei darauf hingewiesen, daß der zweite ganzzahlige Quotientenwert Q(2) negativ werden kann.
- Im nachfolgenden wird anhand von den Fig. 9a, 9b auf eine beispielhafte Herleitung für verschiedene vorbestimmte Schrittsequenzen Bezug genommen.
- Insbesondere zeigt Fig. 9a eine Herleitung der in Fig. 5 dargestellten vorbestimmten Schrittsequenz für eine Multiplikation ohne Initialisierung. Fig. 9b zeigt dagegen eine Herleitung der in Fig. 6 dargestellten vorbestimmten Schrittsequenz für eine Multiplikation mit Initialisierung, also eine Multiplikation, bei der in einem Schritt der vorbestimmten Schrittsequenz eine Intialisierungs-MMD-Operation auftritt.
- Fig. 10 zeigt eine Herleitung der vorbestimmten Schrittsequenz von Fig. 7 für eine Quadrierung ohne Initialisierung, also lediglich mit reinen MMD-Operationen, ohne daß in einem Schritt der vorbestimmten Schrittsequenz eine Initialisierungs-MMD-Operation durchgeführt wird.
- Jede der Herleitungen der Fig. 9a, 9b und 10 startet mit dem Aufstellen des entsprechenden Produkts, das zu berechnen ist, jedoch nun unter Berücksichtigung der in Fig. 2 dargestellten Zusammenhänge, nämlich daß der erste und der zweite Operand A, B bereits durch die entsprechenden ersten und zweiten Unteroperanden ersetzt sind, wie es aus 90a von Fig. 9a, aus 90b von Fig. 9b und 100 von Fig. 10 ersichtlich ist. Insbesondere wird ein Produkt aus einem ersten Term At.Z + Ab und einem zweiten Term Bt.Z + Bb aufgestellt und ausmultipliziert.
- Im nachfolgenden wird auf Fig. 9a beispielhaft Bezug genommen. Die Ausmultiplikation ergibt eine Zeile 91 in Fig. 9a. Beispielhaft wird nunmehr das Produkt Bt.Z im ersten Term der Zeile 91 von Fig. 9a einer MMD-Operation unterzogen, wobei, wie es rechts in den Fig. 9a, 9b und 10 dargestellt ist, Z der Zahl 2 n entspricht. Als MMD-Modul für diese erste MMD- Operation wird der erste Untermodul Nt des Moduls verwendet. Somit wird eine zweite Zeile 92 erhalten, in der der erste ganzzahlige Quotient Q(1) und der erste ganzzahlige Rest R(1) auftreten. In einer Zeile 93 wird dann von einer rechts der Zeile 93 stehenden Relation Gebrauch gemacht, nämlich daß der erste Untermodul Nt multipliziert mit Z gleich dem Negativen des zweiten Untermoduls Nb mod N ist. Dieser Zusammenhang ergibt sich aus folgender Bestimmungsgleichung:
N = Nt.Z + Nb.
- Wird von der ganzen Gleichung Nb subtrahiert so ergibt sich folgende Gleichung:
N - Nb = Nt.Z.
- Wird nun diese Gleichung reduziert, so entfällt das N auf der linken Seite der vorstehenden Gleichung so daß sich folgende Gleichung ergibt:
Nt.Z = -Nb mod N.
- Indem für die Ausmultiplikation der ersten Klammer in Fig. 92, bei der sich der Faktor Q(1).Nt.At.Z ergibt, die gerade beschriebene Bestimmungsgleichung eingesetzt wird, wird dieser Faktor zu -At.Q(1).Nb, wie es aus einer Zeile 93 von Fig. 9a ersichtlich ist, wenn der zweite Term der Zeile 93 von Fig. 9a berücksichtigt wird. In einer Zeile 94 von Fig. 9a wird nunmehr dieser zweite Term einer MMD-Operation (Schritt 52 von Fig. 5) unterzogen, um zu einer Zeile 94 zu gelangen. Hierauf wird wieder der vorstehend beschriebene Zusammenhang zwischen Nt.Z und -Nb berücksichtigt. Dieses Prozedere wird mehrere Male wiederholt. Die Teilprodukte, die in Zeile 91 entstanden sind, werden somit schrittweise unter Verwendung von MMD-Operationen verarbeitet, so daß lediglich Produkte von Zahlen einer Länge mit n Bits und einem Faktor 2n oder Zahlen einer Länge von n Bits verbleiben, wie es aus der letzten Zeile von Fig. 9a ersichtlich ist, die der Zeile 58 von Fig. 5 entspricht.
- Das in Fig. 9a gezeigte Herleitungsbeispiel korrespondiert mit der vorbestimmten Schrittsequenz von Fig. 6, also der allgemeinen Multiplikation mit Initialisierung. Eine MultMod- DivInt, also eine Initialisierungs-MMD-Operation wird in einer Zeile 95, und zwar mit dem ersten Term von Fig. 9b durchgeführt. Der erste Operand (entsprechend A von Fig. 4) ist Nb, der zweite Operand (entsprechend B in Fig. 4) ist der Wert -Q(1), der dritte Operand (entsprechend C von Fig. 4) ist R(1), während die Zahl Z, wie es ausgeführt worden ist, 2n entspricht. Das Ergebnis der Initialisierungs-MMD-Operation ist im ersten Term von Zeile 96 von Fig. 9b gezeigt.
- In Fig. 10 ist eine entsprechende Herleitung ohne Initialisierung für eine Quadrierung, also für die in Fig. 7 dargestellte vorbestimmte Schrittsequenz gegeben, die prinzipiell wieder ähnlich den in den Fig. 9a und 9b gezeigten Herleitungen geführt wird.
- Aus der obigen Darstellung ist ersichtlich, daß unter Verwendung des Summen-Multiplikationsansatzes (90a, 90b, 100) aufgrund der vielfältigen Möglichkeiten der mathematischen Umformung beliebige vorbestimmte Schrittsequenzen gebildet werden können, um die im "Summen-Produkt-Ansatz" gezeigte Operation aufzulösen, so daß lediglich Quotienten-Werte und Restwerte mit einer Länge von n Bits verbleiben bzw. entsprechende Quotientenwerte und Restwerte, die mit 2n multipliziert sind. Als einzige Operation neben einer normalen Addition sind lediglich MMD-Operationen oder optional zusätzlich eine Initialisierungs-MMD-Operation nötig, die jedoch ebenfalls lediglich eine Länge von x (vorzugsweise n) Bits benötigen.
- Aus praktischen Gegebenheiten, beispielsweise um einen Carry oder eine negative Zahl handhaben zu können, wird es bevorzugt, das Rechenwerk zum Ausführen der MMD-Operation, der Initialisierungs-MMD-Operation oder der von der Zusammenfassungseinrichtung 16 durchgeführten Operation um einige wenige Bits, wie z. B. 1 oder 2 Bits größer als n Bits zu machen. Dies ist jedoch kein Problem, wenn die Dimensionen berücksichtigt werden, nämlich daß nunmehr effizient und übersichtlich 2n Bit-Operanden auf einem n-Bit-Rechenwerk berechnet werden können, das für praktische Ausführungen einige wenige Bits mehr benötigt, die jedoch im Vergleich zur Ersparnis von 1024 Bits bzw. überhaupt der Möglichkeit, einen sichereren Algorithmus auf einer bestehenden Vorrichtung laufen lassen zu können, nicht ins Gewicht fallen.
- Im nachfolgenden wird anhand von Fig. 11 auf eine bevorzugte Ausführungsform der in Fig. 1 gezeigten Zusammenfassungseinrichtung 16 eingegangen. Die Zusammenfassungseinrichtung dient dazu, die Zeile 58 der vorbestimmten Schrittsequenz von Fig. 5, die Zeile 67 der vorbestimmten Schrittsequenz von Fig. 6, die Zeile 77 der vorbestimmten Schrittsequenz von Fig. 7 oder die Zeile 86 der vorbestimmten Schrittsequenz von Fig. 8 schaltungstechnisch umzusetzen. Dies wird nachfolgend anhand der Zeile 58 von Fig. 5 dargelegt.
- Eine Zusammenfassungseinrichtung 16 umfaßt eine Mehrzahl von n-Bit-Registern 110 für die Restwerte R(3) und R(4), R(5), R(6) und R(7) sowie für die Quotientenwerte Q(5), Q(6) und Q(7), welche für die Zusammenfassungsoperation benutzt werden. Die anderen Restwerte bzw. Quotientenwerte werden lediglich als Zwischenergebnisse benötigt, nämlich von einem Schritt der vorbestimmten Schrittsequenz zum nächsten oder einem späteren Schritt der vorbestimmten Schrittsequenz. Die in Fig. 11 dargestellten Register werden jedoch für die letztendliche Zusammenfassungsoperation 58 benötigt.
- Die Zusammenfassungseinrichtung umfaßt ferner einen n-Bit- Addierer (oder, wie es ausgeführt worden ist, etwa 1 bis 2 mehr als n Bit), der mit 112 bezeichnet ist, eine Ablaufsteuerung 114, eine Carry-Überprüfungseinrichtung 116 sowie einen n-Bit-Multiplexer 118, um ein erhaltenes Ergebnis in einen 2n Bit-Speicherplatz 120 zu schreiben.
- Die Ablaufsteuerung 114 steuert zunächst das Register-File 110 sowie den n-Bit-Addierer an, um die erste Summe zu berechnen, also aus R(7) - R(6) - R(5). Für diese Berechnung wird ein Carry-Eingang 122 des niederstwertigen Bits (lsb) des Einzeladdierers auf einen Wert "0" initialisiert. Hierauf wird der Übertrag des höchstwertigen Bits der ersten Summe untersucht.
- Wird festgestellt, daß das msb (msb = höchstwertiges Bit) des n-Bit-Addierers 112 ein Übertragbit von "0" hat, so wird am Carry-Eingang des lsb-Einzeladdierers nichts geändert, dieser Eingang wird weiterhin auf "0" initialisiert.
- Wird dagegen festgestellt, daß die erste Summe einen Übertrag liefert, so wird die zweite Summe (R(3) + R(4) - Q(6) + Q(7) berechnet, und zwar mit einem auf "1" initialisierten Übertrag. Die erste Summe wird durch den n-Bit-Multiplexer, gesteuert von der Ablaufsteuerung 114 in niederwertige Bits 120a des 2n Bit-Speicherplatzes geschrieben, während dann, nach Berechnung der zweiten Summe mit entsprechend initialisiertem Carry-Eingang für den niederstwertigen Einzeladdierer in die noch verbleibenden freien hochwertigen Bits 120b des 2 n Bit-Speicherplatzes 120 geschrieben werden. Die Multiplikation mit dem Faktor 2n wird daher bei dem in Fig. 11 gezeigten Ausführungsbeispiel durch den n-Bit-Multiplexer 118 implementiert. Diese Operation kann selbstverständlich ebenfalls durch einen Registerschieber oder etwas ähnliches implementiert werden, wie es in der Technik bekannt ist.
- Aus der vorstehenden Erläuterung des erfindungsgemäßen Konzepts wird ersichtlich, daß aus den Herleitungen, die in den Fig. 9a, 9b und 10 dargelegt sind, auf eine Vielzahl beliebiger weiterer Herleitungen bzw. eine Vielzahl weiterer vorbestimmter Schrittsequenzen geschlossen werden kann, um allein unter Verwendung von MMD-Operationen oder unter Verwendung von MMD-Operationen und einer oder mehrerer Initialisierungs- MMD-Operationen eine modulare Multiplikation mit einem Rechenwerk durchzuführen, dessen Länge kleiner als die Länge der Eingangsgrößen A, B, N ist.
- Bei den in den Fig. 9a, 9b und 10 gezeigten Beispielen bzw. in den verschiedenen Ausführungsbeispielen für vorbestimmte Schrittsequenzen wurde es bevorzugt, als MMD-Modul nur den ersten Untermodul Nt sowie die Zahl 2 n zu verwenden, nicht jedoch den zweiten Untermodul Nb. Es ist für Fachleute offensichtlich, daß die obige Herleitung auch für andere Zahlen Z als 2n gilt, sofern die Aufteilung des Moduls in die Untermodule entsprechend der Zahl Z gewählt ist. Bezugszeichenliste 10 Einrichtung zum Bereitstellen
12 MMD-Einrichtung
12a erster Eingang für ersten Eingangsoperanden
12b zweiter Eingang für zweiten Eingangsoperanden
12c Eingang für MMD-Modul
12d Ausgang der MMD-Einrichtung
14 Steuerungseinrichtung zum Speisen
16 Zusammenfassungseinrichtung
20 2n-Bit-Zahl
22 Unteroperand Ab mit n Bits
24 Unteroperand At mit n Bits
30a MMD-Operator
30b Initialisierungs-MMD-Operator
40 Bestimmungsgleichung für die Initialisierungs-MMD- Operation
44a Definitionsgleichung für den Rest
44b Definitionsgleichung für den ganzzahligen Quotienten
51 bis 57 Schritte 1 bis 7 einer vorbestimmten Schrittsequenz für eine Multiplikation und Initialisierung
58 Rechenvorschrift für die Zusammenfassungseinrichtung
61 bis 66 vorgestimmte Schrittsequenz für eine allgemeine Multiplikation mit Initialisierung
67 Rechenvorschrift für die Zusammenfassungsvorrichtung
71 bis 76 vorbestimmte Schrittsequenz für eine Quadrierung ohne Initialisierung
77 Zusammenfassungsvorschrift
81 bis 85 vorbestimmte Schrittsequenz für eine Quadrierung mit Initialisierung
86 Zusammenfassungsvorschrift
90a, 90b, 90c Summen/Produkt-Ansatz
91 ausmultiplizierte Produkte
92 Term nach einer MMD-Operation
93 Herleitungsterm
94 weiterer Herleitungsterm
95 weiterer Herleitungsterm
96 weiterer Herleitungsterm
100 Summen/Produkt-Ansatz für die Quadrierung
110 n-Bit-Register
112 n-Bit-Addierer
114 Ablaufsteuerung
116 Übertragüberprüfungseinrichtung
118 n-Bit-Multiplexer
120 2n-Bit-Speicherplatz
120a niederwertige Bits
120b hochwertige Bits
Claims (15)
1. Vorrichtung zum Berechnen eines Ergebnisses einer
modularen Multiplikation eines ersten Operanden (A) und eines
zweiten Operanden (B) bezüglich eines Moduls (N), wobei der erste
Operand, der zweite Operand und der Modul eine erste Länge
(2n) von Bits haben, mit folgenden Merkmalen:
einer Einrichtung (10) zum Bereitstellen eines ersten Unteroperanden (At) und eines zweiten Unteroperanden (Ab) aus dem ersten Operanden (A), eines ersten Unteroperanden (Bt), eines zweiten Unteroperanden (Bb) aus dem zweiten Operanden (B), eines ersten Untermoduls (Nt) und eines zweiten Untermoduls (Nb) aus dem Modul (N), welche eine zweite Länge (n) von Bits haben, die kleiner als die erste Länge von Bits ist;
einer MMD-Einrichtung (12) zum Durchführen einer MMD- Operation, wobei eine MMD-Operation definiert ist, um aus einem Term einen ganzzahligen Quotientenwert (Q) und einen Restwert (R) hinsichtlich eines MMD-Moduls zu liefern;
einer Steuerungseinrichtung (14) zum Speisen der MMD- Einrichtung mit vorbestimmten Kombinationen von Eingangsoperanden und zugehörigen MMD-Modulen gemäß einer vorbestimmten Schrittsequenz, wobei die Eingangsoperanden und MMD-Module auf dem ersten und dem zweiten Unteroperanden (At, Ab) des ersten Operanden (A), dem ersten und dem zweiten Unteroperanden (Bt, Bb) des zweiten Operanden (B), dem ersten und dem zweiten Untermodul (Nt, Nb) des Moduls (N), ganzzahligen Quotientenwerten (Q(i)) und Restwerten (R(i)) aus Schritten in der vorbestimmten Schrittsequenz und auf einem Faktor 2x basieren, wobei x gleich der zweiten Länge von Bits ist; und
einer Zusammenfassungseinrichtung (16) zum Zusammenfassen von ganzzahligen Quotientenwerten und Restwerten aus vorbestimmten Schritten der Schrittsequenz, um das Ergebnis zu erhalten.
einer Einrichtung (10) zum Bereitstellen eines ersten Unteroperanden (At) und eines zweiten Unteroperanden (Ab) aus dem ersten Operanden (A), eines ersten Unteroperanden (Bt), eines zweiten Unteroperanden (Bb) aus dem zweiten Operanden (B), eines ersten Untermoduls (Nt) und eines zweiten Untermoduls (Nb) aus dem Modul (N), welche eine zweite Länge (n) von Bits haben, die kleiner als die erste Länge von Bits ist;
einer MMD-Einrichtung (12) zum Durchführen einer MMD- Operation, wobei eine MMD-Operation definiert ist, um aus einem Term einen ganzzahligen Quotientenwert (Q) und einen Restwert (R) hinsichtlich eines MMD-Moduls zu liefern;
einer Steuerungseinrichtung (14) zum Speisen der MMD- Einrichtung mit vorbestimmten Kombinationen von Eingangsoperanden und zugehörigen MMD-Modulen gemäß einer vorbestimmten Schrittsequenz, wobei die Eingangsoperanden und MMD-Module auf dem ersten und dem zweiten Unteroperanden (At, Ab) des ersten Operanden (A), dem ersten und dem zweiten Unteroperanden (Bt, Bb) des zweiten Operanden (B), dem ersten und dem zweiten Untermodul (Nt, Nb) des Moduls (N), ganzzahligen Quotientenwerten (Q(i)) und Restwerten (R(i)) aus Schritten in der vorbestimmten Schrittsequenz und auf einem Faktor 2x basieren, wobei x gleich der zweiten Länge von Bits ist; und
einer Zusammenfassungseinrichtung (16) zum Zusammenfassen von ganzzahligen Quotientenwerten und Restwerten aus vorbestimmten Schritten der Schrittsequenz, um das Ergebnis zu erhalten.
2. Vorrichtung nach Anspruch 1,
bei der der erste Operand (A), der zweite Operand (B) und der Modul (N) eine Länge von n Bits haben,
bei der die MMD-Einrichtung eine arithmetische Einheit mit einer Länge kleiner als 2n Bits ist, und
bei der die Zusammenfassungseinrichtung (16) eine arithmetische Einheit mit einer Länge kleiner als 2n Bits ist.
bei der der erste Operand (A), der zweite Operand (B) und der Modul (N) eine Länge von n Bits haben,
bei der die MMD-Einrichtung eine arithmetische Einheit mit einer Länge kleiner als 2n Bits ist, und
bei der die Zusammenfassungseinrichtung (16) eine arithmetische Einheit mit einer Länge kleiner als 2n Bits ist.
3. Vorrichtung nach Anspruch 2,
bei der die Unteroperanden und Untermodule eine Länge von n Bits haben,
bei der die MMD-Einrichtung eine Länge von n + ε Bits hat, wobei ε kleiner als 10 und vorzugsweise kleiner oder gleich 2 ist, und
bei der die Zusammenfassungseinrichtung (16) eine arithmetische Einheit mit einer Längen Bits ist.
bei der die Unteroperanden und Untermodule eine Länge von n Bits haben,
bei der die MMD-Einrichtung eine Länge von n + ε Bits hat, wobei ε kleiner als 10 und vorzugsweise kleiner oder gleich 2 ist, und
bei der die Zusammenfassungseinrichtung (16) eine arithmetische Einheit mit einer Längen Bits ist.
4. Vorrichtung nach einem der vorhergehenden Ansprüche,
bei der die Steuerungseinrichtung ausgebildet ist, um die MMD-Einrichtung (12) gemäß der folgenden vorbestimmten Schrittsequenz zu speisen:
Einspeisen (51) von Bt und 2n als Eingangsoperanden und Nt als MMD-Modul, um einen ersten ganzzahligen Quotientenwert (Q(1)) und einen ersten Restwert (R(1)) zu erhalten;
Einspeisen (52) von Q(1) und Nb als Eingangsoperanden und 2n als MMD-Modul, um einen zweiten ganzzahligen Quotientenwert (Q(2)) sowie einen zweiten Restwert (R(2)) zu erhalten,
Einspeisen (53) von At und der Summe aus R(1) - Q(2) + Bb als Eingangsoperanden und Nt als MMD-Modul, um einen dritten Quotientenwert (Q(3)) und einen dritten Restwert (R(3)) zu erhalten;
Einspeisen (54) von Ab und Bt als Eingangsoperanden und Nt als MMD-Modul, um einen vierten ganzzahligen Quotientenwert (Q(4)) und einen vierten Restwert (R(4)) zu erhalten;
Einspeisen (55) von einer Summe aus Q(3) + Q(4) und Nb als Eingangsoperanden und 2n als MMD-Modul, um einen fünften ganzzahligen Quotientenwert (Q(5)) und einen fünften Restwert (R(5)) zu erhalten;
Einspeisen (56) von At und R(2) als Eingangsoperanden und 2n als MMD-Modul, um einen sechsten ganzzahligen Quotientenwert (Q(6)) und einen sechsten Restwert (R(6)) zu erhalten; und
Einspeisen (57) von Ab, Bb als Eingangsoperanden und 2n als MMD-Modul, um einen siebten ganzzahligen Quotientenwert (Q(7)) und einen siebten Restwert (R(7)) zu erhalten; und
bei der die Zusammenfassungseinrichtung ausgebildet ist, um eine erste Summe aus R(3) + R(4) - Q(5) - Q(6) + Q(7) zu bilden, um eine zweite Summe aus R(7) - R(6) - R(5) zu bilden, und um beide Summen zu kombinieren.
bei der die Steuerungseinrichtung ausgebildet ist, um die MMD-Einrichtung (12) gemäß der folgenden vorbestimmten Schrittsequenz zu speisen:
Einspeisen (51) von Bt und 2n als Eingangsoperanden und Nt als MMD-Modul, um einen ersten ganzzahligen Quotientenwert (Q(1)) und einen ersten Restwert (R(1)) zu erhalten;
Einspeisen (52) von Q(1) und Nb als Eingangsoperanden und 2n als MMD-Modul, um einen zweiten ganzzahligen Quotientenwert (Q(2)) sowie einen zweiten Restwert (R(2)) zu erhalten,
Einspeisen (53) von At und der Summe aus R(1) - Q(2) + Bb als Eingangsoperanden und Nt als MMD-Modul, um einen dritten Quotientenwert (Q(3)) und einen dritten Restwert (R(3)) zu erhalten;
Einspeisen (54) von Ab und Bt als Eingangsoperanden und Nt als MMD-Modul, um einen vierten ganzzahligen Quotientenwert (Q(4)) und einen vierten Restwert (R(4)) zu erhalten;
Einspeisen (55) von einer Summe aus Q(3) + Q(4) und Nb als Eingangsoperanden und 2n als MMD-Modul, um einen fünften ganzzahligen Quotientenwert (Q(5)) und einen fünften Restwert (R(5)) zu erhalten;
Einspeisen (56) von At und R(2) als Eingangsoperanden und 2n als MMD-Modul, um einen sechsten ganzzahligen Quotientenwert (Q(6)) und einen sechsten Restwert (R(6)) zu erhalten; und
Einspeisen (57) von Ab, Bb als Eingangsoperanden und 2n als MMD-Modul, um einen siebten ganzzahligen Quotientenwert (Q(7)) und einen siebten Restwert (R(7)) zu erhalten; und
bei der die Zusammenfassungseinrichtung ausgebildet ist, um eine erste Summe aus R(3) + R(4) - Q(5) - Q(6) + Q(7) zu bilden, um eine zweite Summe aus R(7) - R(6) - R(5) zu bilden, und um beide Summen zu kombinieren.
5. Vorrichtung nach Anspruch 4,
bei der die MMD-Einrichtung (12) ausgebildet ist, um einen
ersten, einen vierten und einen siebten Schritt des
Einspeisens parallel durchzuführen.
6. Vorrichtung nach einem der Ansprüche 1 bis 3,
bei der die Steuerungseinrichtung ausgebildet ist, um für eine Berechnung der modularen Multiplikation bei identischem ersten und zweiten Operanden die MMD-Einrichtung (12) gemäß folgender vorbestimmter Schrittsequenz zu speisen:
Einspeisen (71) von At und 2n als Eingangsoperanden und Nt als MMD-Modul, um einen ersten ganzzahligen Quotientenwert (Q(1)) und einen ersten Restwert (R(1)) zu erhalten;
Einspeisen (72) von Q(1) und Nb als Eingangsoperanden und 2n als MMD-Modul, um einen zweiten ganzzahligen Quotientenwert (Q(2)) und einen zweiten Restwert (R(2)) zu erhalten;
Einspeisen (73) von At und einer Summe aus R(1) - Q(2) + 2.Ab als Eingangsoperanden und Nt als MMD-Modul, um einen dritten ganzzahligen Quotientenwert (Q(3)) und einen dritten Restwert (R(3)) zu erhalten;
Einspeisen (74) von Q(3) und Nb als Eingangsoperanden und 2n als MMD-Modul, um einen vierten ganzzahligen Quotientenwert (Q(4)) und einen vierten Restwert (R(4)) zu erhalten;
Einspeisen (75) von At und R(2) als Eingangsoperanden und 2n als MMD-Modul, um einen fünften ganzzahligen Quotientenwert (Q(5)) und einen fünften Restwert (R(5)) zu erhalten;
Einspeisen (76) von Ab als Eingangsoperanden und 2n als MMD- Modul, um einen sechsten ganzzahligen Quotientenwert (Q(6)) und einen sechsten Restwert (R(6)) zu erhalten; und
bei der die Zusammenfassungseinrichtung (16) ausgebildet ist, um eine erste Summe aus R(3) - Q(4) - Q(5) + Q(6) sowie eine zweite Summe aus R(6) - R(5) - R(4) zu berechnen, um aus der ersten Summe und der zweiten Summe ein Ergebnis zu erhalten.
bei der die Steuerungseinrichtung ausgebildet ist, um für eine Berechnung der modularen Multiplikation bei identischem ersten und zweiten Operanden die MMD-Einrichtung (12) gemäß folgender vorbestimmter Schrittsequenz zu speisen:
Einspeisen (71) von At und 2n als Eingangsoperanden und Nt als MMD-Modul, um einen ersten ganzzahligen Quotientenwert (Q(1)) und einen ersten Restwert (R(1)) zu erhalten;
Einspeisen (72) von Q(1) und Nb als Eingangsoperanden und 2n als MMD-Modul, um einen zweiten ganzzahligen Quotientenwert (Q(2)) und einen zweiten Restwert (R(2)) zu erhalten;
Einspeisen (73) von At und einer Summe aus R(1) - Q(2) + 2.Ab als Eingangsoperanden und Nt als MMD-Modul, um einen dritten ganzzahligen Quotientenwert (Q(3)) und einen dritten Restwert (R(3)) zu erhalten;
Einspeisen (74) von Q(3) und Nb als Eingangsoperanden und 2n als MMD-Modul, um einen vierten ganzzahligen Quotientenwert (Q(4)) und einen vierten Restwert (R(4)) zu erhalten;
Einspeisen (75) von At und R(2) als Eingangsoperanden und 2n als MMD-Modul, um einen fünften ganzzahligen Quotientenwert (Q(5)) und einen fünften Restwert (R(5)) zu erhalten;
Einspeisen (76) von Ab als Eingangsoperanden und 2n als MMD- Modul, um einen sechsten ganzzahligen Quotientenwert (Q(6)) und einen sechsten Restwert (R(6)) zu erhalten; und
bei der die Zusammenfassungseinrichtung (16) ausgebildet ist, um eine erste Summe aus R(3) - Q(4) - Q(5) + Q(6) sowie eine zweite Summe aus R(6) - R(5) - R(4) zu berechnen, um aus der ersten Summe und der zweiten Summe ein Ergebnis zu erhalten.
7. Vorrichtung nach einem der Ansprüche 1 bis 3,
bei der die MMD-Einrichtung (12) ferner eine Initialisierungs-MMD-Operation (30b) aufweist, die ausgebildet ist, um aus einer Summe zweier Summanden einen ganzzahligen Quotientenwert bezüglich eines Moduls sowie einen Restwert zu berechnen, wobei ein erster Summand der Summe gleich einem Produkt eines ersten Eingangsoperanden und eines zweiten Eingangsoperanden ist, und wobei der zweite Summand gleich einem Produkt eines dritten Eingangsoperanden und einer Zahl 2 n ist, und
bei der die Steuerungseinrichtung ausgebildet ist, um bei einem Schritt in der vorbestimmten Schrittsequenz die Initialisierungs-MMD-Operation (30b) anzusteuern.
bei der die MMD-Einrichtung (12) ferner eine Initialisierungs-MMD-Operation (30b) aufweist, die ausgebildet ist, um aus einer Summe zweier Summanden einen ganzzahligen Quotientenwert bezüglich eines Moduls sowie einen Restwert zu berechnen, wobei ein erster Summand der Summe gleich einem Produkt eines ersten Eingangsoperanden und eines zweiten Eingangsoperanden ist, und wobei der zweite Summand gleich einem Produkt eines dritten Eingangsoperanden und einer Zahl 2 n ist, und
bei der die Steuerungseinrichtung ausgebildet ist, um bei einem Schritt in der vorbestimmten Schrittsequenz die Initialisierungs-MMD-Operation (30b) anzusteuern.
8. Vorrichtung nach Anspruch 7,
bei der die Steuerungseinrichtung (14) ausgebildet ist, um die MMD-Einrichtung (12) gemäß folgender vorbestimmter Schrittsequenz zu speisen:
Speisen von At, Bt als Eingangsoperanden und Nt als MMD-Modul, um einen ersten ganzzahligen Quotientenwert (Q(1)) und einen ersten Restwert (R(1)) zu erhalten;
Speisen (62) von Nb, -Q(1), R(1) als Eingangsoperanden und Nt als MMD-Modul in die Initialisierungs-MMD-Einrichtung (30b), um einen zweiten ganzzahligen Quotientenwert (Q(2)) und einen zweiten Restwert (R(2)) zu erhalten;
Speisen (63) von At, Bt als Eingangsoperanden und Nt als MMD- Modul, um einen dritten ganzzahligen Quotientenwert (Q(3)) und einen dritten Restwert (R(3)) zu erhalten;
Speisen (64) von Ab, Bt als Eingangsoperanden und Nt als MMD- Modul, um einen vierten ganzzahligen Quotientenwert (Q(4)) und einen vierten Restwert (R(4)) zu erhalten;
Speisen (65) von Ab, Bb als Eingangsoperanden und 2n als MMD- Modul, um einen fünften ganzzahligen Quotientenwert (Q(5)) und einen fünften Restwert (R(5)) zu erhalten;
Speisen (66) einer Summe von Q(2) + Q(3) + Q(4) sowie von Nb als Eingangsoperanden und 2n als MMD-Modul, um einen sechsten ganzzahligen Quotientenwert (Q(64)) und einen sechsten Restwert (R(6)) zu erhalten; und
bei der die Zusammenfassungseinrichtung ausgebildet ist, um eine erste Summe aus R(2) + R(4) + Q(5) - Q(6) sowie eine zweite Summe aus R(5) - R(6) zu berechnen, um das Ergebnis zu erhalten.
bei der die Steuerungseinrichtung (14) ausgebildet ist, um die MMD-Einrichtung (12) gemäß folgender vorbestimmter Schrittsequenz zu speisen:
Speisen von At, Bt als Eingangsoperanden und Nt als MMD-Modul, um einen ersten ganzzahligen Quotientenwert (Q(1)) und einen ersten Restwert (R(1)) zu erhalten;
Speisen (62) von Nb, -Q(1), R(1) als Eingangsoperanden und Nt als MMD-Modul in die Initialisierungs-MMD-Einrichtung (30b), um einen zweiten ganzzahligen Quotientenwert (Q(2)) und einen zweiten Restwert (R(2)) zu erhalten;
Speisen (63) von At, Bt als Eingangsoperanden und Nt als MMD- Modul, um einen dritten ganzzahligen Quotientenwert (Q(3)) und einen dritten Restwert (R(3)) zu erhalten;
Speisen (64) von Ab, Bt als Eingangsoperanden und Nt als MMD- Modul, um einen vierten ganzzahligen Quotientenwert (Q(4)) und einen vierten Restwert (R(4)) zu erhalten;
Speisen (65) von Ab, Bb als Eingangsoperanden und 2n als MMD- Modul, um einen fünften ganzzahligen Quotientenwert (Q(5)) und einen fünften Restwert (R(5)) zu erhalten;
Speisen (66) einer Summe von Q(2) + Q(3) + Q(4) sowie von Nb als Eingangsoperanden und 2n als MMD-Modul, um einen sechsten ganzzahligen Quotientenwert (Q(64)) und einen sechsten Restwert (R(6)) zu erhalten; und
bei der die Zusammenfassungseinrichtung ausgebildet ist, um eine erste Summe aus R(2) + R(4) + Q(5) - Q(6) sowie eine zweite Summe aus R(5) - R(6) zu berechnen, um das Ergebnis zu erhalten.
9. Vorrichtung nach Anspruch 7,
bei der der erste Operand gleich dem zweiten Operand ist, um eine modulare Quadratur A2 mod n zu berechnen,
bei der die Steuerungseinrichtung (14) ausgebildet ist, um gemäß folgender vorbestimmter Schrittsequenz die MMD- Einrichtung (12) zu speisen:
Speisen von At, Bt als Eingangsoperanden und Nt als MMD-Modul, um einen ersten ganzzahligen Quotientenwert (Q(1)) und einen ersten Restwert (R(1)) zu erhalten;
Speisen (62) von Nb, -Q(1), R(1) als Eingangsoperanden und Nt als MMD-Modul in die Initialisierungs-MMD-Einrichtung (30b), um einen zweiten ganzzahligen Quotientenwert (Q(2)) und einen zweiten Restwert (R(2)) zu erhalten;
Speisen (63) von At, Bb als Eingangsoperanden und Nt als MMD- Modul, um einen dritten ganzzahligen Quotientenwert (Q(3)) und einen dritten Restwert (R(3)) zu erhalten;
Speisen (64) von Ab, Bt als Eingangsoperanden und Nt als MMD- Modul, um einen vierten ganzzahligen Quotientenwert (Q(4)) und einen vierten Restwert (R(4)) zu erhalten;
Speisen (65) von Ab, Bb als Eingangsoperanden und 2n als MMD- Modul, um einen fünften ganzzahligen Quotientenwert (Q(5)) und einen fünften Restwert (R(5)) zu erhalten; und
Speisen (66) einer Summe aus Q(2) + Q(3) sowie Nb als Eingangsoperanden und 2n als MMD-Modul, um einen sechsten ganzzahligen Quotientenwert (Q(6)) und einen sechsten Restwert (R(6)) zu erhalten; und
bei der die Zusammenfassungseinrichtung (16) ausgebildet ist, um eine erste Summe aus R(2) + R(3) + R(4) + Q(5) - Q(6) sowie eine zweite Summe aus R(5) - R(6) zu berechnen, um das Ergebnis der modularen Quadratur zu erhalten.
bei der der erste Operand gleich dem zweiten Operand ist, um eine modulare Quadratur A2 mod n zu berechnen,
bei der die Steuerungseinrichtung (14) ausgebildet ist, um gemäß folgender vorbestimmter Schrittsequenz die MMD- Einrichtung (12) zu speisen:
Speisen von At, Bt als Eingangsoperanden und Nt als MMD-Modul, um einen ersten ganzzahligen Quotientenwert (Q(1)) und einen ersten Restwert (R(1)) zu erhalten;
Speisen (62) von Nb, -Q(1), R(1) als Eingangsoperanden und Nt als MMD-Modul in die Initialisierungs-MMD-Einrichtung (30b), um einen zweiten ganzzahligen Quotientenwert (Q(2)) und einen zweiten Restwert (R(2)) zu erhalten;
Speisen (63) von At, Bb als Eingangsoperanden und Nt als MMD- Modul, um einen dritten ganzzahligen Quotientenwert (Q(3)) und einen dritten Restwert (R(3)) zu erhalten;
Speisen (64) von Ab, Bt als Eingangsoperanden und Nt als MMD- Modul, um einen vierten ganzzahligen Quotientenwert (Q(4)) und einen vierten Restwert (R(4)) zu erhalten;
Speisen (65) von Ab, Bb als Eingangsoperanden und 2n als MMD- Modul, um einen fünften ganzzahligen Quotientenwert (Q(5)) und einen fünften Restwert (R(5)) zu erhalten; und
Speisen (66) einer Summe aus Q(2) + Q(3) sowie Nb als Eingangsoperanden und 2n als MMD-Modul, um einen sechsten ganzzahligen Quotientenwert (Q(6)) und einen sechsten Restwert (R(6)) zu erhalten; und
bei der die Zusammenfassungseinrichtung (16) ausgebildet ist, um eine erste Summe aus R(2) + R(3) + R(4) + Q(5) - Q(6) sowie eine zweite Summe aus R(5) - R(6) zu berechnen, um das Ergebnis der modularen Quadratur zu erhalten.
10. Vorrichtung nach einem der vorhergehenden Ansprüche,
bei der die Steuerungseinrichtung ausgebildet ist, um die
vorbestimmte Schrittsequenz so zu wählen, daß nach einer
Mehrzahl von Schritten lediglich Zahlen einer Länge kleiner 2
n Bits verbleiben.
11. Vorrichtung nach einem der vorhergehenden Ansprüche 1 bis
10,
bei der die Steuerungseinrichtung (14) ausgebildet ist, um eine vorbestimmte Schrittsequenz zu verwenden, die durch folgende Schritte hergeleitet ist:
Ausmultiplizieren eines Produkts (90a) aus einem ersten Term und einem zweiten Term, wobei der erste Term einen ersten Unteroperanden (At) und einen zweiten Unteroperanden (Ab) des ersten Operanden aufweist, und wobei der zweite Term einen ersten Unteroperanden (Bt) und einen zweiten Unteroperanden (Bb) des zweiten Operanden aufweist, um Teilprodukte zu erhalten; und
schrittweises Verarbeiten der Teilprodukte unter Verwendung von MMD-Operationen, um lediglich Produkte von Zahlen einer Länge kleiner als n Bits mit einem Faktor 2n oder Zahlen einer Länge kleiner 2n Bits zu erhalten.
bei der die Steuerungseinrichtung (14) ausgebildet ist, um eine vorbestimmte Schrittsequenz zu verwenden, die durch folgende Schritte hergeleitet ist:
Ausmultiplizieren eines Produkts (90a) aus einem ersten Term und einem zweiten Term, wobei der erste Term einen ersten Unteroperanden (At) und einen zweiten Unteroperanden (Ab) des ersten Operanden aufweist, und wobei der zweite Term einen ersten Unteroperanden (Bt) und einen zweiten Unteroperanden (Bb) des zweiten Operanden aufweist, um Teilprodukte zu erhalten; und
schrittweises Verarbeiten der Teilprodukte unter Verwendung von MMD-Operationen, um lediglich Produkte von Zahlen einer Länge kleiner als n Bits mit einem Faktor 2n oder Zahlen einer Länge kleiner 2n Bits zu erhalten.
12. Vorrichtung nach einem der vorhergehenden Ansprüche,
bei der die Steuerungseinrichtung ausgebildet ist, um der
MMD-Einrichtung (12) lediglich als MMD-Module den ersten
Untermodul (Nt) oder eine Zahl 2 x zu speisen, wobei x gleich
der zweiten Länge von Bits ist.
13. Vorrichtung nach einem der vorhergehenden Ansprüche,
bei der die Zusammenfassungseinrichtung ausgebildet ist, um eine erste Summe aus Restwerten von vorbestimmten Schritten der vorbestimmten Schrittsequenz zu berechnen,
um eine zweite Summe aus Restwerten und ganzzahligen Quotientenwerten aus vorbestimmten Schritten der vorbestimmten Schrittsequenz zu berechnen,
um eine erste Summe in niederwertige Bits (120a) eines Ergebnisspeichers (120) zu schreiben, und
um die zweite Summe in hochwertige Bits (120b) des Ergebnisspeichers (120) zu schreiben.
bei der die Zusammenfassungseinrichtung ausgebildet ist, um eine erste Summe aus Restwerten von vorbestimmten Schritten der vorbestimmten Schrittsequenz zu berechnen,
um eine zweite Summe aus Restwerten und ganzzahligen Quotientenwerten aus vorbestimmten Schritten der vorbestimmten Schrittsequenz zu berechnen,
um eine erste Summe in niederwertige Bits (120a) eines Ergebnisspeichers (120) zu schreiben, und
um die zweite Summe in hochwertige Bits (120b) des Ergebnisspeichers (120) zu schreiben.
14. Vorrichtung nach Anspruch 13,
bei der die Zusammenfassungseinrichtung ausgebildet ist, um festzustellen (116), ob die erste Summe einen Übertrag liefert, und
um in dem Fall, in dem die erste Summe einen Übertrag liefert, die zweite Summe mit einem Übertrag gleich "1" an einem Übertrageingang (122) eines Addierers (112) zu berechnen.
bei der die Zusammenfassungseinrichtung ausgebildet ist, um festzustellen (116), ob die erste Summe einen Übertrag liefert, und
um in dem Fall, in dem die erste Summe einen Übertrag liefert, die zweite Summe mit einem Übertrag gleich "1" an einem Übertrageingang (122) eines Addierers (112) zu berechnen.
15. Verfahren zum Berechnen eines Ergebnisses einer modularen
Multiplikation eines ersten Operanden (A) und eines zweiten
Operanden (B) bezüglich eines Moduls (N), wobei der erste
Operand, der zweite Operand und der Modul eine erste Länge
(2n) von Bits haben, mit folgenden Schritten:
Bereitstellen (10) eines ersten Unteroperanden (At) und eines zweiten Unteroperanden (Ab) aus dem ersten Operanden (A), eines ersten Unteroperanden (Bt), eines zweiten Unteroperanden (Bb) aus dem zweiten Operanden (B), eines ersten Untermoduls (Nt) und eines zweiten Untermoduls (Nb) aus dem Modul (N), welche eine zweite Länge (n) von Bits haben, die kleiner als die erste Länge von Bits ist;
Durchführen (12) einer MMD-Operation, wobei eine MMD- Operation definiert ist, um aus einem Term einen ganzzahligen Quotientenwert (Q) und einen Restwert (R) hinsichtlich eines MMD-Moduls zu liefern;
Speisen (14) der MMD-Einrichtung mit vorbestimmten Kombinationen von Eingangsoperanden und zugehörigen MMD-Modulen gemäß einer vorbestimmten Schrittsequenz, wobei die Eingangsoperanden und MMD-Module auf dem ersten und dem zweiten Unteroperanden (At, Ab) des ersten Operanden (A), dem ersten und dem zweiten Unteroperanden (Bt, Bb) des zweiten Operanden (B), dem ersten und dem zweiten Untermodul (Nt, Nb) des Moduls (N), ganzzahligen Quotientenwerten (Q(i)) und Restwerten (R(i)) aus Schritten in der vorbestimmten Schrittsequenz und auf einem Faktor 2x basieren, wobei x gleich der zweiten Länge von Bits ist; und
Zusammenfassen (16) von ganzzahligen Quotientenwerten und Restwerten aus vorbestimmten Schritten der Schrittsequenz, um das Ergebnis zu erhalten.
Bereitstellen (10) eines ersten Unteroperanden (At) und eines zweiten Unteroperanden (Ab) aus dem ersten Operanden (A), eines ersten Unteroperanden (Bt), eines zweiten Unteroperanden (Bb) aus dem zweiten Operanden (B), eines ersten Untermoduls (Nt) und eines zweiten Untermoduls (Nb) aus dem Modul (N), welche eine zweite Länge (n) von Bits haben, die kleiner als die erste Länge von Bits ist;
Durchführen (12) einer MMD-Operation, wobei eine MMD- Operation definiert ist, um aus einem Term einen ganzzahligen Quotientenwert (Q) und einen Restwert (R) hinsichtlich eines MMD-Moduls zu liefern;
Speisen (14) der MMD-Einrichtung mit vorbestimmten Kombinationen von Eingangsoperanden und zugehörigen MMD-Modulen gemäß einer vorbestimmten Schrittsequenz, wobei die Eingangsoperanden und MMD-Module auf dem ersten und dem zweiten Unteroperanden (At, Ab) des ersten Operanden (A), dem ersten und dem zweiten Unteroperanden (Bt, Bb) des zweiten Operanden (B), dem ersten und dem zweiten Untermodul (Nt, Nb) des Moduls (N), ganzzahligen Quotientenwerten (Q(i)) und Restwerten (R(i)) aus Schritten in der vorbestimmten Schrittsequenz und auf einem Faktor 2x basieren, wobei x gleich der zweiten Länge von Bits ist; und
Zusammenfassen (16) von ganzzahligen Quotientenwerten und Restwerten aus vorbestimmten Schritten der Schrittsequenz, um das Ergebnis zu erhalten.
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE2002119158 DE10219158B4 (de) | 2002-04-29 | 2002-04-29 | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation |
PCT/EP2003/004426 WO2003093969A2 (de) | 2002-04-29 | 2003-04-28 | Berechnen eines ergebnisses einer modularen multiplikation |
EP03727389A EP1499954B1 (de) | 2002-04-29 | 2003-04-28 | Berechnung eines ergebnisses einer modularen multiplikation |
DE50306309T DE50306309D1 (de) | 2002-04-29 | 2003-04-28 | Berechnung eines ergebnisses einer modularen multiplikation |
AU2003233192A AU2003233192A1 (en) | 2002-04-29 | 2003-04-28 | Device and method for calculating a result of a modular multiplication |
CN03809672.2A CN1650254B (zh) | 2002-04-29 | 2003-04-28 | 计算模数乘法之结果的装置及方法 |
TW92109931A TW200403584A (en) | 2002-04-29 | 2003-04-28 | Apparatus and method for calculating a result of a modular multiplication |
US10/977,561 US7558817B2 (en) | 2002-04-29 | 2004-10-28 | Apparatus and method for calculating a result of a modular multiplication |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE2002119158 DE10219158B4 (de) | 2002-04-29 | 2002-04-29 | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10219158A1 true DE10219158A1 (de) | 2003-11-20 |
DE10219158B4 DE10219158B4 (de) | 2004-12-09 |
Family
ID=29264903
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE2002119158 Expired - Fee Related DE10219158B4 (de) | 2002-04-29 | 2002-04-29 | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation |
DE50306309T Expired - Lifetime DE50306309D1 (de) | 2002-04-29 | 2003-04-28 | Berechnung eines ergebnisses einer modularen multiplikation |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE50306309T Expired - Lifetime DE50306309D1 (de) | 2002-04-29 | 2003-04-28 | Berechnung eines ergebnisses einer modularen multiplikation |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP1499954B1 (de) |
CN (1) | CN1650254B (de) |
AU (1) | AU2003233192A1 (de) |
DE (2) | DE10219158B4 (de) |
TW (1) | TW200403584A (de) |
WO (1) | WO2003093969A2 (de) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102004016412A1 (de) * | 2004-03-30 | 2005-10-27 | Cv Cryptovision Gmbh | Vorrichtung und Verfahren zur effizienten und sicheren modularen Multiplikation zweier Langzahlen |
US7493356B2 (en) | 2002-04-29 | 2009-02-17 | Infineon Technologies Ag | Device and method for cryptoprocessor |
DE102005038518B4 (de) * | 2004-07-29 | 2009-04-16 | Samsung Electronics Co., Ltd., Suwon | Modularer Multiplizierschaltkreis und Kryptographiesystem |
US8176109B2 (en) | 2005-10-28 | 2012-05-08 | Infineon Technologies Ag | Calculating unit for reducing an input number with respect to a modulus |
US8364740B2 (en) | 2005-10-28 | 2013-01-29 | Infineon Technologies Ag | Device and method for calculating a result of a modular multiplication with a calculating unit smaller than the operands |
US8364737B2 (en) | 2005-10-28 | 2013-01-29 | Infineon Technologies Ag | Device and method for calculating a result of a sum with a calculating unit with limited word length |
US8417760B2 (en) | 2005-10-28 | 2013-04-09 | Infineon Technologies Ag | Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2859030B1 (fr) * | 2003-08-21 | 2005-11-04 | Gemplus Card Int | Procede de realisation d'une multiplication modulaire et procede de realisation d'une multiplication euclidienne sur des nombres de 2n bits |
CN104104504B (zh) * | 2014-07-22 | 2017-05-10 | 大唐微电子技术有限公司 | 一种rsa解密的方法及装置 |
IL239880B (en) * | 2015-07-09 | 2018-08-30 | Kaluzhny Uri | Simplified montgomery multiplication |
IL244842A0 (en) * | 2016-03-30 | 2016-07-31 | Winbond Electronics Corp | Efficient non-modular multiplexing is protected against side-channel attacks |
JP2020515928A (ja) * | 2016-12-12 | 2020-05-28 | コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. | 整数の積を計算するように設けられた電子計算装置 |
TWI784406B (zh) * | 2020-06-04 | 2022-11-21 | 熵碼科技股份有限公司 | 採用迭代計算的模數運算電路 |
US20220121424A1 (en) * | 2020-10-21 | 2022-04-21 | PUFsecurity Corporation | Device and Method of Handling a Modular Multiplication |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3631992A1 (de) * | 1986-03-05 | 1987-11-05 | Holger Sedlak | Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens |
DE69032811T2 (de) * | 1989-01-30 | 1999-04-29 | Nippon Telegraph And Telephone Corp., Tokio/Tokyo | Verfahren und System zur modularen Multiplikation |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6366940B1 (en) * | 1998-03-02 | 2002-04-02 | Matsushita Electric Industrial Co., Ltd. | High-speed modular multiplication apparatus achieved in small circuit |
SE517045C2 (sv) * | 2000-10-17 | 2002-04-09 | Novacatus Invest Ab | Metod och anordning vid modulomultiplikation samt användning av metoden vid asymmetrisk kryptering/dekryptering |
-
2002
- 2002-04-29 DE DE2002119158 patent/DE10219158B4/de not_active Expired - Fee Related
-
2003
- 2003-04-28 CN CN03809672.2A patent/CN1650254B/zh not_active Expired - Fee Related
- 2003-04-28 TW TW92109931A patent/TW200403584A/zh unknown
- 2003-04-28 AU AU2003233192A patent/AU2003233192A1/en not_active Abandoned
- 2003-04-28 EP EP03727389A patent/EP1499954B1/de not_active Expired - Lifetime
- 2003-04-28 DE DE50306309T patent/DE50306309D1/de not_active Expired - Lifetime
- 2003-04-28 WO PCT/EP2003/004426 patent/WO2003093969A2/de active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3631992A1 (de) * | 1986-03-05 | 1987-11-05 | Holger Sedlak | Kryptographie-verfahren und kryptographie-prozessor zur durchfuehrung des verfahrens |
DE69032811T2 (de) * | 1989-01-30 | 1999-04-29 | Nippon Telegraph And Telephone Corp., Tokio/Tokyo | Verfahren und System zur modularen Multiplikation |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493356B2 (en) | 2002-04-29 | 2009-02-17 | Infineon Technologies Ag | Device and method for cryptoprocessor |
DE102004016412A1 (de) * | 2004-03-30 | 2005-10-27 | Cv Cryptovision Gmbh | Vorrichtung und Verfahren zur effizienten und sicheren modularen Multiplikation zweier Langzahlen |
DE102005038518B4 (de) * | 2004-07-29 | 2009-04-16 | Samsung Electronics Co., Ltd., Suwon | Modularer Multiplizierschaltkreis und Kryptographiesystem |
US8176109B2 (en) | 2005-10-28 | 2012-05-08 | Infineon Technologies Ag | Calculating unit for reducing an input number with respect to a modulus |
US8364740B2 (en) | 2005-10-28 | 2013-01-29 | Infineon Technologies Ag | Device and method for calculating a result of a modular multiplication with a calculating unit smaller than the operands |
US8364737B2 (en) | 2005-10-28 | 2013-01-29 | Infineon Technologies Ag | Device and method for calculating a result of a sum with a calculating unit with limited word length |
US8417760B2 (en) | 2005-10-28 | 2013-04-09 | Infineon Technologies Ag | Device and method for calculating a multiplication addition operation and for calculating a result of a modular multiplication |
US8977668B2 (en) | 2005-10-28 | 2015-03-10 | Infineon Technologies Ag | Calculating unit for reducing an input number with respect to a modulus |
Also Published As
Publication number | Publication date |
---|---|
EP1499954A2 (de) | 2005-01-26 |
DE10219158B4 (de) | 2004-12-09 |
CN1650254B (zh) | 2011-01-26 |
TW200403584A (en) | 2004-03-01 |
EP1499954B1 (de) | 2007-01-17 |
WO2003093969A2 (de) | 2003-11-13 |
DE50306309D1 (de) | 2007-03-08 |
AU2003233192A1 (en) | 2003-11-17 |
CN1650254A (zh) | 2005-08-03 |
WO2003093969A3 (de) | 2004-10-14 |
AU2003233192A8 (en) | 2003-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69330848T2 (de) | Einrichtung und Verfahren zur digitalen Unterschrift | |
EP1360579B1 (de) | Verfahren und vorrichtung zum modularen multiplizieren und rechenwerk zum modularen multiplizieren | |
DE69130581T2 (de) | Verfahren zur Berechnung einer Operation des Typus A.X modulo N, in einem Kodierverfahren gemäss der RSA-Methode | |
DE69826963T2 (de) | Gerät für die modulare Inversion zur Sicherung von Information | |
DE19758079A1 (de) | Verfahren und Vorrichtung zur Galoisfeld-Multiplikation | |
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 | |
DE10219158B4 (de) | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation | |
DE102006025569A1 (de) | Vorrichtung und Verfahren zum Berechnen einer Multiplikations-Additions-Operation und zum Berechnen eines Ergebnisses einer modularen Multiplikation | |
EP1370933B1 (de) | Verfahren und vorrichtung zum modularen multiplizieren | |
DE102006025713B9 (de) | Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation | |
EP1428112B1 (de) | Verfahren und vorrichtung zum berechnen eines ergebnisses einer exponentiation | |
EP2641241B1 (de) | Verfahren zur langzahldivision oder modulare reduktion | |
DE102006025677B4 (de) | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge | |
EP1474741B1 (de) | Vorrichtung und verfahren zum berechnen eines ergebnisses aus einer division | |
EP1478999B1 (de) | Vorrichtung und verfahren zum umrechnen eines terms | |
EP1421474B1 (de) | Verfahren und vorrichtung zum modularen multiplizieren | |
DE10219164B4 (de) | Vorrichtung und Verfahren zum Berechnen eines ganzzahligen Quotienten | |
DE102008050800B4 (de) | Vorrichtung und Verfahren zum Bestimmen einer modularen multiplikativen Inversen | |
EP1508087B1 (de) | Verfahren und integrierte schaltung zur durchführung einer multiplikation modulo m | |
DE3924344C2 (de) | ||
EP2521024A1 (de) | Beschleunigte kryptographische Berechnung, insbesondere ECC-Berechnung, in Prozessor mit Montgomery-Koprozessor | |
DE10156708A1 (de) | Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve | |
EP2455852B1 (de) | Verfahren zur Langzahldivision | |
EP1022653A1 (de) | Verfahren zur Berechnung von modulo (2n+1)-Produkten und anschliessender modulo (2n)-Addition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |