DE10156708A1 - Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve - Google Patents
Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen KurveInfo
- Publication number
- DE10156708A1 DE10156708A1 DE2001156708 DE10156708A DE10156708A1 DE 10156708 A1 DE10156708 A1 DE 10156708A1 DE 2001156708 DE2001156708 DE 2001156708 DE 10156708 A DE10156708 A DE 10156708A DE 10156708 A1 DE10156708 A1 DE 10156708A1
- Authority
- DE
- Germany
- Prior art keywords
- point
- coordinate
- projective
- elliptic curve
- parallel
- 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 OR CALCULATING; 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/724—Finite field arithmetic
- G06F7/725—Finite field arithmetic over elliptic curves
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7261—Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
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)
- Image Processing (AREA)
- Image Generation (AREA)
- Complex Calculations (AREA)
Abstract
Bei einem Verfahren zum Multiplizieren einer Zahl mit einem Punkt auf einer elliptischen Kurve y·2· = x·3· + a È x + b innerhalb eines kryptographischen Algorithmus, wobei x eine erste Koordinate der elliptischen Kurve ist, wobei y eine zweite Koordinate der elliptischen Kurve ist und wobei die dritte elliptische Kurve über einem Körper mit einer Charakteristik größer als 3 definiert ist, wird ein iterativer Algorithmus eingesetzt, bei dem eine Stelle der Zahl nach der anderen sequentiell verarbeitet wird, wobei, wenn die Stelle der Zahl gleich 1 ist, ein erster aktualisierter Hilfspunkt gleich dem Doppelten des ursprünglichen ersten Hilfspunkts gesetzt wird und ein zweiter aktualisierter Hilfspunkt gleich der Summe aus ursprünglichem ersten und ursprünglichem zweiten Hilfspunkt gesetzt wird (22) und wobei, falls die Stelle der Zahl eine 1 aufweist (14), der erste aktualisierte Hilfspunkt gleich der Summe aus dem ursprünglichen ersten und dem ursprünglichen zweiten Hilfspunkt gesetzt wird (16) und der aktualisierte zweite Hilfspunkt gleich dem Doppelten des ursprünglichen zweiten Hilfspunkts gesetzt wird (18). Nach einer iterativen Verarbeitung sämtlicher Stellen der Zahl (24, 26) stellt der aktualisierte erste Hilfspunkt das Ergebnis (28) der Multiplikationsoperation auf der elliptischen Kurve (10) dar. Zum Berechnen des ersten und des zweiten Hilfspunkts werden effiziente explizite Additions- bzw. Multiplikationsformeln angegeben, die parallel implementierbar sind, so ...
Description
- Die vorliegende Erfindung bezieht sich auf kryptographische Algorithmen und insbesondere auf die Elliptische-Kurven- Kryptographie.
- Im Gegensatz zur klassischen Kryptographie, wie z. B. dem RSA-Verfahren, bei dem die modulare Exponentiation eine zentrale Rechenoperation ist, ist bei der Elliptische-Kurven- Kryptographie die Multiplikation eines Punktes P auf der elliptischen Kurve mit einem ganzzahligen Faktor die entsprechende wesentliche Operation.
- Beispielsweise kann der klassische DSA (DSA = Digital Signature Algorithm), wie er im "Handbook of Applied Cryptography", Menezes u. a., CRC Press, beschrieben ist, zum EC- DSA (EC-DSA = Elliptic Curve Digital Signature Algorithm) modifiziert werden, wie er im IEEE P 13.63 beschrieben ist.
- Ein weiterer kryptographischer Algorithmus, der auch auf elliptische Kurven ausgedehnt werden kann, ist das sogenannte Diffie-Hellman-Key-Exchange-Verfahren, wie es im Handbook of Applied Cryptography beschrieben ist.
- Wollen zwei Parteien A, B einen gemeinsamen geheimen Schlüssel über einen unsicheren Kanal austauschen, so können sie dabei wie folgt vorgehen.
- Zunächst wählen beide Parteien eine elliptische Kurve sowie einen generierenden Punkt P dieser Kurve.
- Partei A wählt nun einen konstanten Faktor dA und berechnet das Produkt QA = dA P und sendet diesen Punkt QA über den unsicheren Kanal zu B.
- Analog dazu wählt nun die Partei B einen konstanten Faktor dB und berechnet das Produkt QB = dB P und sendet diesen Punkt QB über den unsicheren Kanal zu A.
- Hiernach besitzen beide Parteien einen geheimen Schlüssel, nämlich das Produkt dA dB P. Diesen geheimen Schlüssel können die beiden Parteien nunmehr grundsätzlich für ein symmetrisches Block-Verschlüsselungs-Verfahren verwenden.
- Es ist nicht möglich, die konstanten Faktoren dA und dB aus der Kenntnis von QA, QB, P und der elliptischen Kurve effizienter als durch bloßes Ausprobieren zu berechnen. Dies bedeutet in anderen Worten, daß die konstanten Faktoren dA, dB vor Angriffen bei der Partei A bzw. der Partei B zu schützen sind.
- Im nachfolgenden wird auf Fig. 6 Bezug genommen, um den bekannten Double-&-Add-Algorithmus darzustellen, der auch für die Berechnung der Multiplikation eines Punkts auf der elliptischen Kurve mit einem konstanten Faktor eingesetzt werden kann. Im Gegensatz zur üblichen Arithmetik, unterscheiden sich bei der Elliptische-Kurven-Arithmetik die Formeln zum Addieren zweier Punkte auf der elliptischen Kurve bzw. die Formeln zum Multiplizieren eines Punkts auf der elliptischen Kurve mit dem Faktor 2. Diese Additionsformeln bzw. Multiplikationsformeln hängen von der jeweils gewählten elliptischen Kurve ab.
- Der Double-&-Add-Algorithmus berechnet allgemein als Ergebnis E die Multiplikation einer Ganzzahl d mit einem Punkt B auf der elliptischen Kurve, wie es in einem Block 100 in Fig. 6 dargestellt ist. Als Eingabe benötigt der Algorithmus die Längen des Multiplikators d, eine Inkrementierungsgröße i sowie ein Register E, das zu Anfang des Algorithmus auf den Wert 0 initialisiert wird, wie es in einem Block 102 dargestellt ist. Zunächst wird untersucht, ob das betrachtete Bit i des Multiplikators 0 oder 1 ist (Block 104). Wird festgestellt, daß das gerade betrachtete Bit eine 1 ist, wird der rechte Zweig von Fig. 6 genommen. Wird dagegen festgestellt, daß das betrachtete Bit eine 0 ist, so wird der linke Zweig genommen. Der Double-&-Add-Algorithmus bedingt für den Fall, daß das gerade betrachtete Bit des Multiplikators 1 ist, daß der aktuelle Inhalt des Registers E verdoppelt wird (Block 106), und daß dann zu dem Wert E der Punkt B der elliptischen Kurve hinzuaddiert wird, um den neuen Wert E des Registers für das Ergebnis E zu erhalten (Block 108). Wird dagegen festgestellt, daß das aktuelle gerade betrachtete Bit di gleich 0 ist, so wird nur ein Verdopplungsschritt (Block 110) durchgeführt, und es findet kein Additionsschritt statt.
- Nach der Beendigung der Schleife bzw. nach dem Berechnen von E wird die Laufvariable i um 1 inkrementiert (Block 112). Dann wird überprüft, ob i kleiner als n ist (Block 114). Ist i kleiner als n, so wird die Schleife (Blöcke 104, 106, 108, 110) erneut durchlaufen. Wird dagegen festgestellt, daß sämtliche Bits des ganzzahligen Multiplikators d abgearbeitet sind, so wird der aktuelle Wert des Registers E als das Ergebnis der Multiplikation des ganzzahligen Faktors d mit dem Punkt B auf der elliptischen Kurve ausgegeben (Block 116). Wie es bekannt ist, wird zunächst das höchstwertige Bit des Multiplikators d betrachtet, woraufhin im nächsten Durchlauf das zweithöchste Bit betrachtet wird etc. Die Bits des ganzzahligen Multiplikators werden daher von höchstwertigen Bits ausgehend zu niederwertigen Bits verarbeitet, bis das niederstwertige Bit erreicht wird, was in dem Block 114 festgestellt wird. Nach der Verarbeitung des niederstwertigen Bits kann das Ergebnis durch den Block 116 ausgegeben werden.
- Nachteilig an dem in Fig. 6 beschriebenen Double-&-Add- Algorithmus ist die Tatsache, daß die Berechnung in den beiden Zweigen hinsichtlich der Anzahl der Schritte unterschiedlich ist, je nach dem, ob das gerade aktuell betrachtete Bit di gleich 1 ist oder gleich 0 ist. Daher ist es für bestimmte Angriffe auf den kryptographischen Algorithmus möglich, anhand des Leistungsverbrauchs bzw. der Zeitdauer, die für die Berechnung einer Iteration benötigt wird, festzustellen, ob das gerade betrachtete Bit eine 1 oder eine 0 war. Wie es ausgeführt worden ist, ist der Skalar, der mit einem Punkt auf der elliptischen Kurve multipliziert wird, typischerweise die geheime Information bzw. der geheime Schlüssel einer Partei, der vor Angriffen zu schützen ist.
- Als Gegenmaßnahme gegen eine solche Attacke auf den kryptographischen Algorithmus könnte in dem Double-&-Add- Algorithmus im linken Zweig von Fig. 6 eine Dummy-Addition 118 eingefügt werden, deren Ergebnis nicht verwendet wird. Diese Dummy-Addition 118 stellt sicher, daß der Zeitaufwand und der Leistungsverbrauch des Kryptochips für beide Fälle, d. h. für di = 1 und di = 0, gleich sind, so daß Timing- Attacken oder einfache Power-Analysis-Attacken fehlschlagen werden.
- Rechenregeln zum Berechnen der Summe zweier Punkte auf einer elliptischen Kurve oder zum Berechnen der Multiplikation eines Punkts auf einer elliptischen Kurve mit dem Faktor 2 bzw. zum Multiplizieren eines Punkts auf der elliptischen Kurve mit einem konstanten Faktor sind für allgemeine elliptische Kurven der Form y2 = x3 + a.x + b in Carl Pomerance, "Prime Numbers", Springer-Verlag, 2001, Kapitel 7.2, beschrieben. Ferner wird in diesem Fachbuch ein Überblick über die verschiedenen Koordinaten gegeben. Hierbei werden affine Koordinaten, projektive Koordinaten, modifizierte projektive Koordinaten sowie X-, Z-Koordinaten, die auch als Montgomery- Koordinaten bezeichnet werden, beschrieben. Projektive Koordinaten [X, Y, Z] können in affine Koordinaten (x, y) folgendermaßen umgerechnet werden:
x = X/Z und y = Y/Z.
- Ferner wird in demselben Fachbuch die sogenannte Lucas-Kette erläutert, die darin besteht, das Produkt k mal P mittels einer Additionskette zu berechnen, wobei immer dann, wenn zwei ungleiche Punkte P1, P2 miteinander addiert werden, die Differenz P1 - P2 bekannt ist. An Zwischenschritten liegt daher ein Paar [m] P, [m + 1] P vor. Aus diesem Paar wird entweder das Paar [2m] P, [2m + 1] P oder das Paar [2m + 1] P, [2m + 2] P gebildet, und zwar abhängig von den Bits des Skalars k. In jedem Fall wird eine Verdopplung und eine Addition durchgeführt. Für die Addition selbst ist bereits die Differenz der zwei addierten Punkte bekannt, nämlich P selbst.
- Die Lucas-Kette ermöglicht es, daß die x-Koordinate eines Ergebnispunkts auf der elliptischen Kurve unabhängig von der y- Koordinate dieses Punkts berechnet werden kann. So existieren beispielsweise Kryptographieverfahren, bei denen die y- Koordinate gar nicht benötigt wird, wie z. B. das EC-DSA- Verfahren, während wieder andere Kryptographieverfahren vorhanden sind, bei denen die y-Koordinate benötigt wird, wie z. B. das Diffie-Hellman-Verfahren.
- Nachteilig an dem klassischen Double-And-Add-Algorithmus ist jedoch, daß keine Parallelisierung möglich ist. So kann der Schritt 108 erst dann ausgeführt werden, wenn der Schritt 106 gerechnet ist. Der Double-&-Add-Algorithmus kann daher in seiner in Fig. 6 gezeigten Form nicht parallelisiert werden. Darüber hinaus werden durch den Dummy-Schritt 118 Rechenressourcen lediglich aus Sicherheitsgründen "verschwendet", ohne daß das Ergebnis, für dessen Erlangen die Rechenressourcen aufgewendet worden sind, verwendet werden würde.
- Insbesondere bei Kryptographiealgorithmen auf Chipkarten, bei denen enge Rechenressourcen- und Speicherkapazitätsbeschränkungen bestehen, ist jedoch neben der Sicherheit des Algorithmus auch die Effizienz des Algorithmus von wesentlicher Bedeutung. So ist die Fläche eines Chips auf einer Chipkarte durch "äußere" Spezifikationen auf eine bestimmte Chipfläche begrenzt. Dem Entwickler steht es dann frei, diese zur Verfügung gestellte Gesamt-Chipfläche für seine Anwendungen als Speicher oder als Rechenwerk zu verwenden. Andererseits wird eine Akzeptanz von Chipkarten nur dann vorhanden sein, wenn digitale Unterschriften natürlich sicher aber auch schnell erzeugt werden, da ein Kunde nicht mehrere Minuten auf eine Authentifikation beispielsweise an einem Bankautomaten warten möchte.
- Die Aufgabe der vorliegenden Erfindung besteht darin, ein effizientes Konzept zum Multiplizieren einer Zahl mit einem Punkt auf einer elliptischen Kurve im Rahmen einer kryptographischen Berechnung zu schaffen, das einerseits effizient und andererseits sicher ist.
- Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1, 5 oder 6 oder durch eine Vorrichtung gemäß Anspruch 9, 10 oder 11 gelöst.
- Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, daß von dem Double-&-Add-Algorithmus weggegangen werden muß, und daß statt dessen die Multiplikation eines Skalars mit einem Punkt auf der elliptischen Kurve unter Verwendung zweier Hilfsgrößen berechnet werden muß, wobei eine Hilfsgröße immer gleich dem Doppelten des vorherigen Werts der Hilfsgröße ist, während die andere Hilfsgröße immer gleich der Summe der beiden vorherigen Hilfsgrößen ist. Je nach dem, ob das gerade betrachtete Bit des Skalars, d. h. des Multiplikators, eine 1 oder eine 0 ist, wird das Doppelte der einen Hilfsgröße berechnet, oder wird das Doppelte der anderen Hilfsgröße berechnet. Dies bedeutet, daß für beide Fälle, also für den Fall daß das Bits des Skalars gleich 0 oder daß das Bit des Skalars gleich 1 ist, immer eine Addition und eine Multiplikation mit 2 durchgeführt wird. Damit sind Timing-Attacken oder Power-Analysis-Attacken von vornherein nicht wirkungsvoll. Darüber hinaus können die beiden Hilfsgrößen unabhängig voneinander, also parallel berechnet werden, was zu einem Performancegewinn führt. Hierzu sind zwar zwei parallele Rechenwerke vonnöten. Wenn diese zwei parallelen Rechenwerke jedoch ohnehin im Kryptoprozessor beispielsweise auf der Smart Card aus anderen Gründen vorhanden sind, spielt dies keine Rolle. Zurück bleibt die Verdopplung des Durchsatzes gegenüber dem einfachen Double-&-Add-Algorithmus bei erhöhter Sicherheit.
- Das erfindungsgemäße Verfahren zum Multiplizieren einer Zahl mit einem Punkt bezieht sich auf eine elliptischen Kurve y2 = x3 + a.x + b, wobei x eine erste Koordinate der elliptischen Kurve ist, wobei y eine zweite Koordinate der elliptischen Kurve ist, und wobei die elliptischen Kurve über einem Körper mit einer Charakteristik p größer als 3 definiert ist. In diesem Zusammenhang bedeutet dies, daß sämtliche Koordinaten auf der elliptischen Kurve einer Modulo-Operation mit der Charakteristik p unterzogen werden. Es sei darauf hingewiesen, daß das erfindungsgemäße Verfahren nicht für elliptischen Kurven mit Charakteristika von 3 oder kleiner als 3 anwendbar ist.
- Ein Vorteil der vorliegenden Erfindung besteht darin, daß keine Timing-Attacken oder Leistungs-Attacken zielführend sind, da der Verarbeitungsaufwand für ein Bit des Multiplikators unabhängig davon ist, ob das Bit eine 0 oder eine 1 hat.
- Ein weiterer Vorteil der vorliegenden Erfindung besteht darin, daß der erste und der zweite Hilfspunkt auf der elliptischen Kurve in jedem Iterationsschritt parallel berechnet werden können, so daß ein Geschwindigkeitsgewinn mit einem Faktor in der Größenordnung von 1,9 (theoretisch 2) gegenüber dem Double-&-Add-Algorithmus mit Dummy-Addition erreichbar ist.
- Darüber hinaus ist die Erfindung dahingehend vorteilhaft, daß explizite Additions-Formeln zum Berechnen des ersten und des zweiten Hilfspunkts angegeben werden können, die in sich selbst wiederum parallelisiert werden können, was insgesamt zu einem Leistungsgewinn mit einem Faktor in der Größenordnung von 2,6 resultiert.
- Darüber hinaus ist die Erfindung dahingehend vorteilhaft, daß ihre Anwendbarkeit für beliebige elliptische Kurven anwendbar ist, solange die Charakteristik des zugrundeliegenden Körpers der elliptischen Kurve größer als 3 ist.
- Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen detailliert erläutert. Es zeigen:
- Fig. 1 ein Blockdiagramm des erfindungsgemäßen Verfahrens zum Multiplizieren einer Zahl mit einem Punkt auf einer elliptischen Kurve;
- Fig. 2 ein schematisches Blockschaltbild eines Addierers zum Addieren zweier Punkte auf der elliptischen Kurve, um den ersten Hilfspunkt zu erhalten;
- Fig. 3 ein Prinzipblockschaltbild eines Multiplizierers zum Multiplizieren eines Punkts auf der elliptischen Kurve mit dem Faktor 2, um den zweiten Hilfspunkt zu erhalten;
- Fig. 4 ein Blockschaltbild eines Rechenwerks zum Addieren und Multiplizieren mit einem Faktor 2 und parallelisierter Funktionalität;
- Fig. 5 ein Übersichtsdiagramm der Funktionalität der Ablaufsteuerung von Fig. 4; und
- Fig. 6 ein Übersichtsdiagramm des Double-&-Add-Algorithmus ohne und mit Dummy-Addition.
- Fig. 1 zeigt ein Übersichtsdiagramm über den erfindungsgemäßen Algorithmus zum Multiplizieren einer Zahl d mit einem Punkt B auf einer elliptischen Kurve der folgenden Form:
y2 = x3 + a.x + b,
wobei a und b für Konstanten stehen. Die elliptische Kurve ist für Charakteristika p größer als 3 definiert (Block 10). Darüber hinaus werden zwei unterschiedliche Punkte P und Q betrachtet, die beide ungleich 0 sind. Die affinen Koordinaten für den Punkt P lauten (xP, yP). Die projektiven Koordinaten des Punkts P lauten (XP : YP : ZP), wobei der Punkt P aus A2 = P2 - P1 ist. Für diese Koordinaten gibt es u. a. die Beziehungen XP = xP.ZP und YP = yP.ZP. - In einem Initialisierungsblock 12 wird zunächst die Länge in Bit n des Multiplikators d (d0, d1, d2, . . ., dn) festgelegt, wobei d0 das höchstwertige Bit des Multiplikators ist. Ferner wird eine Laufvariable i auf 0 initialisiert. Darüber hinaus wird der erste Hilfspunkt P auf den Nullpunkt der elliptischen Kurve initialisiert, und wird der zweite Hilfspunkt Q auf B initialisiert. Hierauf wird in die Iteration von Fig. 1 eingetreten.
- Alternativ kann der erste Iterationsschritt des obigen Verfahrens bereits in die Initialisierung aufgenommen werden, da Bits oberhalb des höchstwertigen Bits im Multiplikatorregister gleich Null sind und das höchstwertige Bit des Multiplikators immer gleich Eins ist. In diesem Fall wird P auf B initialisiert, und wird Q auf 2B initialisiert.
- In einem Block 14 wird zunächst überprüft, ob das aktuell betrachtete Bit des Multiplikators d gleich 0 ist oder nicht. Wird diese Frage mit Ja beantwortet, so wird in die rechte Schleife von Fig. 1 eingetreten. Wird diese Frage dagegen mit Nein beantwortet, so wird in die linke Schleife von Fig. 1 eingetreten.
- Ist das Bit di des Multiplikators gleich 0, so wird der neue Wert Pneu des ersten Hilfspunkts berechnet, indem die beiden aktuellen Hilfspunkte P und Q addiert werden (Block 16). Der zweite Hilfspunkt Qneu wird dadurch berechnet, daß der alte zweite Hilfspunkt Q mit dem Faktor 2 multipliziert wird (Block 18).
- Wird dagegen im Block 14 bestimmt, daß das aktuelle Bit di des Multiplikators d gleich 1 ist, so wird der neue erste Hilfspunkt Pneu dadurch berechnet, daß der alte erste Hilfspunkt P mit dem Faktor 2 multipliziert wird (20). Der neue Wert des zweiten Hilfspunkts Qneu wird dadurch berechnet, daß der alte erste Hilfspunkt P und der alte zweite Hilfspunkt Q summiert werden (Block 22).
- Hierauf wird am Ausgang der Iterationsschleife die Zählvariable i um 1 inkrementiert (Block 24), um dann in einem Block 26 zu überprüfen, ob i kleiner als n ist. Wird diese Frage mit Ja beantwortet, wird, wie es in Fig. 1 gezeigt ist, zurückgesprungen, um das nächste Bit des Multiplikators d zu untersuchen. Wird die Frage von Block 26 dagegen mit Nein beantwortet, so wird als Ergebnis E der erste Hilfspunkt P in einem Block 28 ausgegeben.
- Wie es bereits ausgeführt worden ist, wird für bestimmte kryptographische Algorithmen lediglich die x-Koordinate des Ergebnispunkts E auf der elliptischen Kurve benötigt. Die in den Blöcken 12, 16, 18, 20 und 22 dargestellten Berechnungen müssen in diesem Fall lediglich für die x-Koordinate durchgeführt werden, die aufgrund der Gesetze der Lucas-Kette unabhängig von den y-Koordinaten der Hilfspunkte P, Q berechnet werden können.
- Je nach dem, ob die y-Koordinate des Punkts E benötigt wird, kann diese auf effiziente Weise berechnet werden, wie es später ausgeführt wird.
- Im nachfolgenden wird auf die Berechnung des "Double-&-Add"- Paars eingegangen. Der Vollständigkeit halber wird noch einmal darauf hingewiesen, daß eine elliptische Kurve über einem Körper der Charakteristik größer als 3 mit folgender Bestimmungsgleichung zugrunde gelegt wird.
- Die beiden Hilfspunkte P' bzw. Pneu und Q' bzw. Qneu berechnen sich aus den alten Hilfspunkte P und Q im Falle eines Bits di folgendermaßen (rechter Zweig des Algorithmus von Fig. 1):
- Es sei darauf hingewiesen, daß dieselbe Berechnung analog für den linken Iterationszweig von Fig. 1 durch Koordinatenaustausch durchgeführt werden kann.
- Zusätzlich wird ein Wert D gleich der Differenz zwischen P und Q bzw. Q und P eingeführt, wobei darauf hingewiesen wird, daß das Vorzeichen der Differenz D nicht benötigt und daher im nachfolgenden nicht berücksichtigt wird. Ferner wird darauf hingewiesen, daß die Differenz in jedem Iterationsschritt gleich ist und ferner immer gleich B selbst ist, da im ersten Iterationsschritt die Differenz zwischen P und Q gleich B ist.
- Die affine x-Koordinate xP' des ersten Hilfspunkts auf der elliptischen Kurve berechnet sich folgendermaßen aus den affinen x-Koordinaten der alten Hilfspunkte P und Q:
- Die affine x-Koordinate XD der Differenz aus P und Q berechnet sich folgendermaßen:
- Die affine x-Koordinate xQ' des zweiten Hilfspunkts Q' berechnet sich folgendermaßen:
- Werden nun die Gleichungen 3 und 4 miteinander addiert und wird y 2|P und y 2|Q unter Verwendung der Gleichung (1) substituiert, wird folgender Ausdruck erhalten:
- Schließlich wird y 2|P mittels der Gleichung (1) substituiert, wodurch sich aus Gleichung (5) folgende Gleichung ergibt:
- Nunmehr wird XP/ZP für xP substituiert, und wird XQ/ZQ für xQ substituiert. Damit ergibt sich aus Gleichung (6) folgende Gleichung:
- Mit denselben Substitutionen ergibt sich aus Gleichung (7) folgende Gleichung:
- Damit ergeben sich folgende expliziten Formeln für die Addition, also für XP' und ZP', d. h. für die erste und die dritte projektive Koordinate des ersten Hilfspunktes:
- Für die Double-Formel, also zur Berechnung des zweiten Hilfspunkts Q', ergeben sich folgende Gleichungen:
- Durch die Gleichungen (10a) und (10b) sind explizite Formeln gegeben, um die projektiven X-, Z-Koordinaten des ersten Hilfspunkts P und des zweiten Hilfspunkts Q zu berechnen. Diese Koordinaten hängen lediglich von bekannten Größen ab, nämlich von den entsprechenden Koordinaten der "alten" Hilfspunkte P, Q aus dem vorherigen Iterationsschritt, wenn Fig. 1 betrachtet wird.
- Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird nunmehr Bezug nehmend auf Fig. 2 ein Addierer gezeigt, um zwei Punkte P und Q auf einer elliptischen Kurve zu addieren, um einen aktuellen Hilfspunkt W zu berechnen. Der Addierer benötigt, wie es in Fig. 1 gezeigt ist, eine Einrichtung zum Berechnen von XP' und ZP', wobei als Eingangsgrößen XP, ZP, XQ, ZQ und die Parameter a und b der elliptischen Kurve verwendet werden. Ferner wird darauf hingewiesen, daß auch der Wert xD, der bei der Berechnung von xP' verwendet wird, von den affinen Koordinaten xP, yP sowie xQ und yQ der beiden Punkte P und Q abhängt, wie es aus Gleichung (4) ersichtlich wird.
- Der erfindungsgemäße Addierer umfaßt somit eine Einrichtung 30 zum Berechnen von ZP' und eine Einrichtung 31 zum Berechnen von XP', wobei die in Fig. 2 gezeigten expliziten Formeln entweder hardwaremäßig oder softwaremäßig ausgewertet werden.
- Fig. 3 zeigt einen erfindungsgemäßen Multiplizierer zum Multiplizieren eines Punkts auf einer elliptischen Kurve mit dem Faktor 2. Der erfindungsgemäße Multiplizierer umfaßt eine Einrichtung zum Berechnen der projektiven X-Koordinate des Ergebnispunkts Q', die in Fig. 3 mit dem Bezugszeichen 32 bezeichnet ist sowie eine Einrichtung 34 zum Berechnen von ZQ', wobei die Einrichtungen 32 und 34 eine software- oder hardwaremäßige Ausgestaltung der in Fig. 3 gezeigten Formeln durchführen.
- Wie es bereits ausgeführt worden ist, ist der in Fig. 1 gezeigte erfindungsgemäße Multiplikationsalgorithmus dahingehend vorteilhaft, daß die beiden Hilfspunkte Pneu bzw. P' und Qneu bzw. Q' parallel berechnet werden können, da Q' nicht von P' abhängt und umgekehrt.
- Fig. 4 zeigt ein Rechenwerk hierzu. Das Rechenwerk umfaßt eine Parallel-ALU 40, die aus zwei SUB-ALUs besteht, wobei jede SUB-ALU eine Additionsfähigkeit, eine Subtraktionsfähigkeit und eine Multiplikationsfähigkeit hat.
- Die Parallel-ALU 40 wird über einen Eingangsbus 41 mit Eingangsdaten versorgt und liefert ihre Ergebnisse auf einen Ausgangsbus 42. Der Eingangsbus 41 ist mit einem Register- Ausgangsbus 43 (RAUS) gekoppelt, während der Ausgangsbus 42 der ALU 40 mit einem Register-Eingangsbus 44 (REIN) gekoppelt ist. Der erfindungsgemäße Prozessor umfaßt ferner einen Registerblock 45 mit acht Registern R0, R1, R2, R3, R4, R5, R6 und R7. Der Prozessor umfaßt ferner eine Initialisierungseinrichtung 48 zum Laden der Register R0 bis R7 des Registerblocks 45 vor Beginn einer Addition und/oder einer Multiplikation mit dem Faktor 2 auf der elliptischen Kurve.
- Als zentrales Element umfaßt der Prozessor schließlich eine Ablaufsteuerung 46 zum Steuern der Parallel-ALU 40, des Register-Eingangsbusses 44, des Register-Ausgangsbusses 43 und der Initialisierungseinrichtung 45. Die Parallel-ALU 40 hat ferner Zugriff auf einen Registerspeicher 47 zum Speichern der Parameter a, b der elliptischen Kurve und ferner zum Speichern der affinen x-Koordinate xD der Differenz von P und Q gemäß Gleichung (4). Der Wert für xD kann entweder durch die Parallel-ALU 40 selbst berechnet werden, oder kann in jedem Iterationsschritt beispielsweise durch eine separate CPU berechnet werden, wenn der in Fig. 4 gezeigte Kryptoprozessor ein Coprozessor in einem Gesamtsystem ist.
- Im nachfolgenden wird anhand von Fig. 5 auf eine bevorzugte Ausführungsform der Ablaufsteuerung 46 eingegangen, bei der die Berechnung der Koordinaten XP', ZP', XQ' und ZQ' unter Verwendung der acht Register R0 bis R7 des Registerblocks 45 parallel durchgeführt wird. In Fig. 5 zeigt ein Block 50 zunächst einen Registerinitialisierungsschritt. Das Register R0 wird mit der aktuellen projektiven Koordinate XP des ersten Hilfspunkts P geladen. Das Register R1 wird mit der projektiven z-Koordinate ZP des ersten Hilfspunkts P geladen. Das Register R2 wird mit der projektiven x-Koordinate XQ des zweiten Hilfspunkts Q geladen. Schließlich wird das Register R3 mit der projektiven z-Koordinate ZQ des zweiten Hilfspunkts Q geladen. Die anderen Register R4 bis R7 können auf 0 initialisiert werden.
- In einem Block 51 von Fig. 5 sind die Rechenoperationen für die Parallel-ALU 40, die eine erste SUB-ALU 1 und eine zweite SUB-ALU 2 aufweist, gegeben. In der linken Hälfte des Blocks 51 sind nacheinander die von der SUB-ALU 1 abzuarbeitenden Schritte gegeben, während in der rechten Hälfte von Block 51 die für die SUB-ALU 2 abzuarbeitenden Schritte gegeben sind. Insbesondere werden die in Fig. 5 nebeneinander stehenden Schritte parallel von beiden ALUs abgearbeitet. Am Beispiel der ersten Zeile von Fig. 5 bedeutet dies, daß die SUB-ALU 1 den Inhalt der Register R1 und R2 multipliziert und in das Register R6 lädt. Parallel dazu multipliziert die SUB-ALU 2 den Inhalt des Registers R0 mit dem Inhalt des Registers R3 und lädt das Ergebnis in das Register R7. In einem nächsten Schritt lädt die SUB-ALU 1 dann die Summe des Inhalts des Registers R7 und des Registers R6 in das Register R4. Parallel dazu lädt die SUB-ALU 2 den Inhalt des Registers R7, von dem der Inhalt des Registers R6 subtrahiert ist, in das Register R5. Dieses Prozedere wird in der in Block 51 von Fig. 5 gegebenen Reihenfolge fortgesetzt, bis die SUB-ALU 1 in einem letzten Schritt die Differenz des Registers R6 und des Registers R0 in das Register R6 lädt, und die SUB-ALU 2 die Summe des Registers R7 und des Registers R1 in das Register R7 lädt. Dann, in einem Schritt 52, werden die Ergebnisse ausgegeben. Die projektive x-Koordinate XP' des aktualisierten ersten Hilfspunkts P' ist in dem Register R4 zu finden. Die projektive z-Koordinate ZP' des aktualisierten ersten Hilfspunkts ist im Register R5 zu finden. Die projektive x- Koordinate XQ' des aktualisierten zweiten Hilfspunkts ist in dem Register R6 zu finden, und die projektive z-Koordinate des aktualisierten zweiten Hilfspunkts, d. h. ZQ', ist im Register R7 zu finden.
- Selbstverständlich könnte die Folge von Schritten, die im Block 51 dargestellt ist, auch durch eine Seriell-ALU ausgeführt werden, wobei die Sequenz durch die jeweilige Ziffer in Klammern hinter einer Registeroperation gegeben ist. Eine Seriell-ALU könnte dann, falls keine Parallel-ALU verfügbar ist, die Schritte (1) bis (33) in der gegebenen Reihenfolge durchführen und würde zu denselben Ergebnissen, wie sie im Block 52 dargestellt sind, gelangen.
- Der erfindungsgemäße Algorithmus benötigt zum Berechnen eines Iterationsschritts (entweder der linke Zweig oder der rechte Zweig in Fig. 1) lediglich acht Register R0 bis R7 und ist, wie es ausgeführt worden ist, für eine Parallel-ALU geeignet, die über den Register-Ausgangsbus 43 bzw. den Register- Eingangsbus 44 einen Zugriff auf alle Register hat.
- Der in Fig. 5 im Block 51 gezeigte Algorithmus, der 19 Multiplikationen und 14 Additionen umfaßt, benötigt, wenn er auf einer Parallel-ALU ausgeführt wird, d. h. mittels einer Parallelarchitektur implementiert wird, die Zeit von zehn Multiplikationen und acht Additionen. Wenn der in Block 51 gezeigte Algorithmus auf einer Seriell-ALU mit einem einzigen Rechenwerk ausgeführt wird, werden, wie es ausgeführt worden ist, die 33 Schritte durchgeführt, d. h. es wird eine Zeit von 19 Multiplikationen und 14 Additionen benötigt.
- Nach der skalaren Multiplikation k.P bzw. d.P, liegt die projektive X-Koordinate und die projektive Z-Koordinate des Punkts auf der elliptischen Kurve, der durch k.P gegeben ist, vor. Es gilt:
k.P = (XkP : YkP : ZkP)
- Um die affinen Koordinaten von k.P zu erhalten, wird folgende Transformation verwendet:
- Auf ähnliche Weise kann die affine x-Koordinate von (k + 1).P erhalten werden:
(k + 1)P = (X(k+1)P/Z(k+1)P, Y(k+1)P/Z(k+1)P)
- Um die affine y-Koordinate des Punkts k.P zu erhalten, wird folgende Gleichung verwendet, wenn y 2|kP und y 2|P mittels Gleichung (1) in Gleichung (3) substituiert werden, wobei die folgende Gleichung verwendet wird:
(k + 1)P = kP + P
- Die Bestimmungsgleichung für ykP lautet somit folgendermaßen:
- Wenn nunmehr xkP durch XkP/ZkP substituiert wird, und wenn ferner z(k+1)P durch X(k+1)P/Z(k+1)P substituiert wird, wird folgende Bestimmungsgleichung für ykP erhalten, wobei der Buchstabe P weggelassen worden ist:
- Wie es ausgeführt worden ist, wird die y-Koordinate nur bei manchen Algorithmen benötigt. Wenn die y-Koordinate benötigt wird, ist es wesentlich effizienter, die in Fig. 1 gezeigte Iteration lediglich für die x-Koordinate durchzuführen und dann die y-Koordinate des Ergebnis-Punkts auf der elliptischen Kurve mittels der Gleichungen (11) und (12) zu berechnen, d. h. unter Verwendung des Punkts (k + 1) P auf der elliptischen Kurve.
- Die vorliegende Erfindung ist dahingehend vorteilhaft, daß die Zeit und das Stromprofil durch den in Fig. 1 gezeigten Algorithmus homogenisiert werden und daß ferner eine parallele Implementation möglich ist, ohne daß Dummy-Operationen benötigt werden. Im Vergleich zu der klassischen Standardmethode mit Dummy-Addition wird zudem ein effizienteres Verfahren erreicht, da erfindungsgemäß lediglich 19 Multiplikationen im Vergleich zu 26 Multiplikationen pro Bit des skalaren Multiplikators benötigt werden.
- Ferner ist, wie es ausgeführt worden ist, das erfindungsgemäße Konzept im Gegensatz zur Standardmethode, die in Fig. 6 beschrieben worden ist, parallelisierbar, so daß gegenüber der sicheren Standardmethode mit Dummy-Addition ein Performancegewinn von einem zusätzlichen Faktor von 1,9 erzielt wird, was insgesamt einen Faktor von 2,6 ergibt.
- Schließlich ist das erfindungsgemäße Konzept für beliebige elliptische Kurven anwendbar, so lange die Charakteristik der Kurve p größer als 3 ist.
- Obwohl es im einzelnen nicht an jeder Stelle ausgeführt ist, sei darauf hingewiesen, daß sämtliche beschriebenen Berechnungen auf eine Restklasse bezüglich eines Moduls bezogen sind, wobei der Modul gleich der Charakteristik p der zugrunde gelegten elliptischen Kurve ist. Die modulare Reduktion kann nach jeder Addition, Multiplikation etc. durchgeführt werden, was vorteilhaft ist, da die Zwischenergebnisse keine großen Zahlen sind. Alternativ wäre es jedoch auch möglich, z. B. eine Addition oder auch die gesamte Multiplikation durchzuführen und erst am Ende mit dem gegebenen Modul zu reduzieren. Dies würde jedoch immens große Register für die Zwischenergebnisse erfordern, weshalb es bevorzugt wird, z. B. nach jedem der im Block 51 von Fig. 5 gezeigten Schritte mit dem Modul zu reduzieren. Eine modulare Reduktion am Ende jeder Iteration dient dazu, die Zwischenergebnisse und damit auch die Register zu deren Speicherung klein zu halten. Bezugszeichenliste 10 Multiplikationsoperation auf der elliptischen Kurve
12 Initialisierungsschritt
14 Untersuchungsschritt
16 Berechnen des ersten Hilfspunkts, falls di gleich 0 ist
18 Berechnen des zweiten Hilfspunkts, falls di gleich 0 ist
20 Berechnen des ersten Hilfspunkts, falls di gleich 1 ist
22 Berechnen des zweiten Hilfspunkts, falls di gleich 1 ist
24 Inkrementieren der Zählvariable
26 Abbruchkriterium
28 Ausgabeschritt
30 Berechnen der projektiven z-Koordinate des ersten Hilfspunkts
31 Berechnen der projektiven x-Koordinate des ersten Hilfspunkts
32 Berechnen der projektiven x-Koordinate des zweiten Hilfspunkts
34 Berechnen der projektiven z-Koordinate des zweiten Hilfspunkts
40 Parallel-ALU
41 ALU-Eingangsbus
42 ALU-Ausgangsbus
43 Register-Ausgangsbus
44 Register-Eingangsbus
45 Registerblock
46 Ablaufsteuerung
47 Register für a, b, xD
48 Initialisierungsblock
50 Initialisierungsblock für Ablaufsteuerung
51 Arbeitssequenz der Ablaufsteuerung
52 Ausgabeschritt der Ablaufsteuerung
100 Double-&-add-Algorithmus
102 Initialisierungsschritt
104 Multiplikator-Untersuchung
106 Verdopplungsschritt falls di gleich 1 ist
108 Addierschritt, falls di gleich 1 ist
110 Verdopplungsschritt, falls di gleich 0 ist
112 Inkrementierungsschritt
114 Abbruchkriterium
116 Ausgabeschritt
118 Dummy-Additionsschritt, falls di gleich 0 ist
Claims (14)
1. Verfahren zum Multiplizieren einer Zahl (d) mit einem
Punkt auf einer elliptischen Kurve der Form y2 = x3 + a.x +
b innerhalb eines kryptographischen Algorithmus, wobei x und
y Koordinaten von Punkten auf der elliptischen Kurve sind,
und wobei die elliptische Kurve über einem Körper mit einer
Charakteristik größer als 3 definiert ist, wobei der Punkt
durch eine erste Koordinate xB gegeben ist, und wobei die
Zahl (d) eine Anzahl n von binären Stellen hat, mit folgenden
Schritten:
Initialisieren einer Koordinate eines ersten Hilfspunkts (P) auf der elliptischen Kurve;
Initialisieren einer Koordinate eines zweiten Hilfspunkts (Q) auf der elliptischen Kurve;
sequentielles Verarbeiten der binären Stellen der Zahl (d),
Ausgeben (28) einer Koordinate des ersten Hilfspunkts (P),
der sich durch den Schritt des sequentiellen Verarbeitens
ergibt, wenn alle binären Stellen der Zahl (d) abgearbeitet
sind, als Ergebnis.
Initialisieren einer Koordinate eines ersten Hilfspunkts (P) auf der elliptischen Kurve;
Initialisieren einer Koordinate eines zweiten Hilfspunkts (Q) auf der elliptischen Kurve;
sequentielles Verarbeiten der binären Stellen der Zahl (d),
- wobei, falls eine Stelle der Zahl gleich 0 ist, die
Koordinate des ersten Hilfspunkts (P) gleich einer
Koordinate eines Punkts auf der elliptischen Kurve
gesetzt wird, der sich ergibt, wenn der erste
Hilfspunkt mit einem Faktor 2 multipliziert wird,
und wobei die Koordinate des zweiten Hilfspunkts
(Q) gleich einer Koordinate eines Punkts auf der
elliptischen Kurve gesetzt wird, der sich ergibt,
wenn der erste Hilfspunkt und der zweite Hilfspunkt
addiert werden, und
- wobei, falls eine Stelle der Zahl gleich 1 ist, die
Koordinate des ersten Hilfspunkts (P) gleich einer
Koordinate eines Punkts auf der elliptischen Kurve
gesetzt wird, die sich ergibt, wenn der erste
Hilfspunkt (P) und der zweite Hilfspunkt (Q)
addiert werden, und wobei die Koordinate des zweiten
Hilfspunkts (Q) gleich einer Koordinate eines
Punkts auf der elliptischen Kurve gesetzt wird, der
sich ergibt, wenn der zweite Hilfspunkt (Q) mit
einem Faktor von 2 multipliziert wird; und
2. Verfahren nach Anspruch 1,
bei dem die Stellen der Zahl von einer höchstwertigen Stelle
bis zu einer niederstwertigen Stelle im Schritt des
sequentiellen Verarbeitens abgearbeitet werden.
3. Verfahren nach Anspruch 2,
bei dem bei einer Verarbeitung der niederstwertigen Stelle im
Schritt des sequentiellen Verarbeitens lediglich die
Koordinate der ersten Hilfsgröße (P) berechnet wird, nicht aber die
Koordinate der zweiten Hilfsgröße (Q).
4. Verfahren nach einem der Ansprüche 1 bis 3, das ferner
folgenden Schritt aufweist:
Berechnen einer weiteren Koordinate (yP) des ersten Hilfspunkts (P), der sich durch den Schritt des sequentiellen Verarbeitens ergibt, wenn alle binären Stellen der Zahl abgearbeitet sind, unter Verwendung der folgenden Gleichung:
wobei yk die weitere Koordinate des ersten Hilfspunkts (P) ist,
wobei a und b Parameter der elliptischen Kurve sind,
wobei Zk eine projektive z-Koordinate des ersten Hilfspunkts (P) ist, der sich durch den Schritt des sequentiellen Verarbeitens ergibt,
wobei Zk+1 eine projektive z-Koordinate des zweiten Hilfspunkts (Q) ist, und
wobei xP eine affine x-Koordinate des Ausgangs-Punkts (B) ist, wobei xk eine projektive x-Koordinate des ersten Hilfspunkts ist, der sich durch den Schritt des sequentiellen Verarbeitens ergibt, und wobei y eine affine y-Koordinate des Ursprungs-Punkts (B) ist.
Berechnen einer weiteren Koordinate (yP) des ersten Hilfspunkts (P), der sich durch den Schritt des sequentiellen Verarbeitens ergibt, wenn alle binären Stellen der Zahl abgearbeitet sind, unter Verwendung der folgenden Gleichung:
wobei yk die weitere Koordinate des ersten Hilfspunkts (P) ist,
wobei a und b Parameter der elliptischen Kurve sind,
wobei Zk eine projektive z-Koordinate des ersten Hilfspunkts (P) ist, der sich durch den Schritt des sequentiellen Verarbeitens ergibt,
wobei Zk+1 eine projektive z-Koordinate des zweiten Hilfspunkts (Q) ist, und
wobei xP eine affine x-Koordinate des Ausgangs-Punkts (B) ist, wobei xk eine projektive x-Koordinate des ersten Hilfspunkts ist, der sich durch den Schritt des sequentiellen Verarbeitens ergibt, und wobei y eine affine y-Koordinate des Ursprungs-Punkts (B) ist.
5. Verfahren zum Addieren zweiter Punkte auf einer
elliptischen Kurve y2 = x3 + a.x + b innerhalb eines
kryptographischen Algorithmus, wobei x und y Koordinaten von Punkten auf
der elliptischen Kurve sind, und wobei die elliptischen Kurve
über einem Körper mit einer Charakteristik größer als 3
definiert ist, wobei ein erster Punkt der zwei Punkte eine erste
projektive Koordinate XP und eine dritte projektive
Koordinate ZP aufweist, wobei der zweite Punkt eine erste projektive
Koordinate XQ und eine dritte projektive Koordinate ZQ
aufweist, mit folgenden Schritten:
Berechnen (31) einer ersten projektiven Koordinate XP' eines Ergebnispunkts auf der elliptischen Kurve durch folgende Gleichung
Berechnen (30) einer dritten projektiven Koordinate ZP' eines Ergebnispunkts auf der elliptischen Kurve durch folgende Gleichung:
ZP' = (XPZQ - XQZP)2,
wobei a und b Parameter der elliptischen Kurve sind, und wobei xD eine affine Koordinate eines Punkts auf der elliptischen Kurve ist, der sich ergibt, wenn eine Differenz des ersten Punkts (P) und des zweiten Punkts (Q) berechnet wird.
Berechnen (31) einer ersten projektiven Koordinate XP' eines Ergebnispunkts auf der elliptischen Kurve durch folgende Gleichung
Berechnen (30) einer dritten projektiven Koordinate ZP' eines Ergebnispunkts auf der elliptischen Kurve durch folgende Gleichung:
ZP' = (XPZQ - XQZP)2,
wobei a und b Parameter der elliptischen Kurve sind, und wobei xD eine affine Koordinate eines Punkts auf der elliptischen Kurve ist, der sich ergibt, wenn eine Differenz des ersten Punkts (P) und des zweiten Punkts (Q) berechnet wird.
6. Verfahren zum Multiplizieren eines Punkts auf einer
elliptischen Kurve y2 = x3 + a.x + b mit einem Faktor 2
innerhalb eines kryptographischen Algorithmus, wobei x und y
Koordinaten von Punkten auf der elliptischen Kurve sind, und
wobei die elliptische Kurve über einem Körper mit einer
Charakteristik größer als 3 definiert ist, wobei der Punkt eine
erste projektive Koordinate XP und eine dritte projektive
Koordinate ZP aufweist, mit folgenden Schritten:
Berechnen (32) einer ersten projektiven Koordinate XQ' eines Ergebnispunkts durch folgende Gleichung:
Berechnen (34) einer dritten projektiven Koordinate ZQ' eines Ergebnispunkts (Q') durch folgende Gleichung:
wobei a und b Parameter der elliptischen Kurve sind.
Berechnen (32) einer ersten projektiven Koordinate XQ' eines Ergebnispunkts durch folgende Gleichung:
Berechnen (34) einer dritten projektiven Koordinate ZQ' eines Ergebnispunkts (Q') durch folgende Gleichung:
wobei a und b Parameter der elliptischen Kurve sind.
7. Vorrichtung zum Addieren zweier Punkte auf einer
elliptischen Kurve y2 = x3 + a.x + b innerhalb eines
kryptographischen Algorithmus, wobei x und y Koordinaten von Punkten auf
der elliptischen Kurve sind, und wobei die elliptische Kurve
über einem Körper mit einer Charakteristik größer als 3
definiert ist, wobei ein erster Punkt (P) durch eine projektive
x-Koordinate XP und durch eine projektive z-Koordinate ZP
gegeben ist, wobei der zweite Punkt durch eine projektive x-
Koordinate XQ und eine projektive z-Koordinate ZQ gegeben
ist, und zum Multiplizieren des zweiten Punkts (Q) mit einem
Faktor von 2, um als Ergebnis der Addition einen ersten
Ergebnispunkt (P') zu erhalten, der durch eine erste projektive
x-Koordinate XP' und durch eine projektive z-Koordinate ZP'
gegeben ist, und um als Ergebnis der Multiplikation einen
zweiten Ergebnispunkt (Q) zu erhalten, der durch eine
projektive x-Koordinate XQ' und durch eine projektive z-
Koordinate ZQ' gegeben ist, mit folgenden Merkmalen:
einem Rechenwerk (40) zum Multiplizieren, Addieren und Subtrahieren zweier Eingangswerte;
einer Anzahl von acht Registern R0, R1, R2, R3, R4, R5, R6, R7; und
einer Ablaufsteuerung (46) zum Steuern der Register und des Rechenwerks gemäß den folgenden Schritten:
(0) Initialisieren des Registers R0 mit XP, des Registers R1 mit ZP, des Registers R2 mit XQ und des Registers R3 mit ZQ;
(1) R6 ← R2.R1
(2) R7 ← R3.R0;
(3) R4 ← R7 + R6;
(4) R5 ← R7 - R6;
(5) R5 ← R5.R5;
(6) R7 ← R1.R3;
(7) R1 ← a.R7;
(8) R6 ← R7.R7;
(9) R0 ← R0.R2;
(10) R6 ← b.R6;
(11) R0 ← R0 + R1;
(12) R6 ← R6 + R6;
(13) R0 ← R0.R4;
(14) R1 ← xD.R5;
(15) R4 ← R0 + R6;
(16) R4 ← R4 + R4;
(17) R6 ← R2 + R2;
(18) R4 ← R4 - R1;
(19) R7 ← R3 + R3;
(20) R0 ← R6.R7;
(21) R1 ← R3.R3;
(22) R2 ← R2.R2;
(23) R3 ← a.R1;
(24) R6 ← R2 - R3;
(25) R7 ← R2 + R3;
(26) R1 ← R1 + R1;
(27) R2 ← b.R1;
(28) R7 ← R7.R0;
(29) R1 ← R2.R1;
(30) R0 ← R0.R2;
(31) R6 ← R6.R6;
(32) R6 ← R6 - R0;
(33) R7 ← R7 + R1;
(34) Ausgeben eines Inhalts von R4, um die projektive x- Koordinate XP' des Ergebnispunkts der Addition zu erhalten, Ausgeben des Inhalts von R5 um die projektive z- Koordinate ZP' der Addition zu erhalten, Ausgeben des Registers R6, um die projektive x-Koordinate XQ' des Ergebnispunkts der Multiplikation zu erhalten, und Ausgeben des Inhalts des Registers R7, um die projektive z- Koordinate ZQ' des Ergebnispunkts der Multiplikation zu erhalten,
wobei das Symbol "." eine Multiplikation darstellt, wobei das Symbol "+" eine Addition darstellt, wobei das Symbol "-" eine Subtraktion darstellt, wobei a, b Parameter der elliptischen Kurve sind, wobei xD eine affine x-Koordinate eines Punkts ist, der sich ergibt, wenn der erste Punkt P vom zweiten Punkt Q subtrahiert wird, und wobei das Symbol "←" bedeutet, daß das Register, auf das die Pfeilspitze gerichtet ist, mit einem Wert geladen wird, der sich aus der arithmetischen Operation ergibt, die an einem Fußpunkt des Pfeils steht.
einem Rechenwerk (40) zum Multiplizieren, Addieren und Subtrahieren zweier Eingangswerte;
einer Anzahl von acht Registern R0, R1, R2, R3, R4, R5, R6, R7; und
einer Ablaufsteuerung (46) zum Steuern der Register und des Rechenwerks gemäß den folgenden Schritten:
(0) Initialisieren des Registers R0 mit XP, des Registers R1 mit ZP, des Registers R2 mit XQ und des Registers R3 mit ZQ;
(1) R6 ← R2.R1
(2) R7 ← R3.R0;
(3) R4 ← R7 + R6;
(4) R5 ← R7 - R6;
(5) R5 ← R5.R5;
(6) R7 ← R1.R3;
(7) R1 ← a.R7;
(8) R6 ← R7.R7;
(9) R0 ← R0.R2;
(10) R6 ← b.R6;
(11) R0 ← R0 + R1;
(12) R6 ← R6 + R6;
(13) R0 ← R0.R4;
(14) R1 ← xD.R5;
(15) R4 ← R0 + R6;
(16) R4 ← R4 + R4;
(17) R6 ← R2 + R2;
(18) R4 ← R4 - R1;
(19) R7 ← R3 + R3;
(20) R0 ← R6.R7;
(21) R1 ← R3.R3;
(22) R2 ← R2.R2;
(23) R3 ← a.R1;
(24) R6 ← R2 - R3;
(25) R7 ← R2 + R3;
(26) R1 ← R1 + R1;
(27) R2 ← b.R1;
(28) R7 ← R7.R0;
(29) R1 ← R2.R1;
(30) R0 ← R0.R2;
(31) R6 ← R6.R6;
(32) R6 ← R6 - R0;
(33) R7 ← R7 + R1;
(34) Ausgeben eines Inhalts von R4, um die projektive x- Koordinate XP' des Ergebnispunkts der Addition zu erhalten, Ausgeben des Inhalts von R5 um die projektive z- Koordinate ZP' der Addition zu erhalten, Ausgeben des Registers R6, um die projektive x-Koordinate XQ' des Ergebnispunkts der Multiplikation zu erhalten, und Ausgeben des Inhalts des Registers R7, um die projektive z- Koordinate ZQ' des Ergebnispunkts der Multiplikation zu erhalten,
wobei das Symbol "." eine Multiplikation darstellt, wobei das Symbol "+" eine Addition darstellt, wobei das Symbol "-" eine Subtraktion darstellt, wobei a, b Parameter der elliptischen Kurve sind, wobei xD eine affine x-Koordinate eines Punkts ist, der sich ergibt, wenn der erste Punkt P vom zweiten Punkt Q subtrahiert wird, und wobei das Symbol "←" bedeutet, daß das Register, auf das die Pfeilspitze gerichtet ist, mit einem Wert geladen wird, der sich aus der arithmetischen Operation ergibt, die an einem Fußpunkt des Pfeils steht.
8. Vorrichtung nach Anspruch 7, die ferner ein weiteres
Rechenwerk aufweist, und bei dem die Ablaufsteuerung (46)
angeordnet ist, um das Rechenwerk (SUB-ALU 1) und das weitere
Rechenwerk (SUB-ALU 2) zum parallelen Ausführen der folgenden
Schritte zu veranlassen:
- Schritt (1) parallel zu Schritt (2);
- Schritt (3) parallel zu Schritt (4);
- Schritt (5) parallel zu Schritt (6);
- Schritt (7) parallel zu Schritt (8);
- Schritt (9) parallel zu Schritt (10);
- Schritt (11) parallel zu Schritt (12);
- Schritt (13) parallel zu Schritt (14);
- Schritt (16) parallel zu Schritt (17);
- Schritt (18) parallel zu Schritt (19);
- Schritt (20) parallel zu Schritt (21);
- Schritt (22) parallel zu Schritt (23);
- Schritt (24) parallel zu Schritt (25);
- Schritt (27) parallel zu Schritt (28);
- Schritt (29) parallel zu Schritt (30); und
- Schritt (32) parallel zu Schritt (33).
9. Vorrichtung zum Multiplizieren einer Zahl (d) mit einem
Punkt auf einer elliptischen Kurve der Form y2 = x3 + a.x +
b innerhalb eines kryptographischen Algorithmus, wobei x und
y Koordinaten von Punkten auf der elliptischen Kurve sind,
und wobei die elliptische Kurve über einem Körper mit einer
Charakteristik größer als 3 definiert ist, wobei der Punkt
durch eine erste Koordinate xB gegeben ist, und wobei die
Zahl (d) eine Anzahl n von binären Stellen hat, mit folgenden
Merkmalen:
einer Einrichtung zum Initialisieren einer ersten Koordinate eines ersten Hilfspunkts (P) auf der elliptischen Kurve;
einer Einrichtung zum Initialisieren einer ersten Koordinate eines zweiten Hilfspunkts (Q) auf der elliptischen Kurve;
einer Einrichtung zum sequentiellen Verarbeiten der binären Stellen der Zahl (d),
einer Einrichtung zum Ausgeben (28) einer ersten Koordinate
des ersten Hilfspunkts (P), der sich durch den Schritt des
sequentiellen Verarbeitens ergibt, wenn alle binären Stellen
der Zahl (d) abgearbeitet sind, als Ergebnis.
einer Einrichtung zum Initialisieren einer ersten Koordinate eines ersten Hilfspunkts (P) auf der elliptischen Kurve;
einer Einrichtung zum Initialisieren einer ersten Koordinate eines zweiten Hilfspunkts (Q) auf der elliptischen Kurve;
einer Einrichtung zum sequentiellen Verarbeiten der binären Stellen der Zahl (d),
- wobei, falls eine Stelle der Zahl gleich 0 ist, die
erste Koordinate des ersten Hilfspunkts (P) gleich
einer ersten Koordinate eines Punkts auf der
elliptischen Kurve gesetzt wird, der sich ergibt, wenn
der erste Hilfspunkt mit einem Faktor 2
multipliziert wird, und wobei die erste Koordinate des
zweiten Hilfspunkts (Q) gleich einer ersten
Koordinate eines Punkts auf der elliptischen Kurve
gesetzt wird, der sich ergibt, wenn der erste
Hilfspunkt und der zweite Hilfspunkt addiert werden, und
- wobei, falls eine Stelle der Zahl gleich 1 ist, die
erste Koordinate des ersten Hilfspunkts (P) gleich
einer ersten Koordinate eines Punkts auf der
elliptischen Kurve gesetzt wird, die sich ergibt, wenn
der erste Hilfspunkt (P) und der zweite Hilfspunkt
(Q) addiert werden, und wobei die erste Koordinate
des zweiten Hilfspunkts (Q) gleich einer ersten
Koordinate eines Punkts auf der elliptischen Kurve
gesetzt wird, der sich ergibt, wenn der zweite
Hilfspunkt (Q) mit einem Faktor von 2 multipliziert
wird; und
10. Vorrichtung zum Addieren zweiter Punkte auf einer
elliptischen Kurve y2 = x3 + a.x + b innerhalb eines
kryptographischen Algorithmus, wobei x und y Koordinaten von
Punkten auf der elliptischen Kurve sind, und wobei die
elliptischen Kurve über einem Körper mit einer Charakteristik größer
als 3 definiert ist, wobei ein erster Punkt der zwei Punkte
eine erste projektive Koordinate XP und eine dritte
projektive Koordinate ZP aufweist, wobei der zweite Punkt eine erste
projektive Koordinate XQ und eine dritte projektive
Koordinate ZQ aufweist, mit folgenden Merkmalen:
einer Einrichtung zum Berechnen (31) einer ersten projektiven Koordinate XP' eines Ergebnispunkts auf der elliptischen Kurve durch folgende Gleichung:
einer Einrichtung (30) zum Berechnen einer dritten projektiven Koordinate ZP' eines Ergebnispunkts auf der elliptischen Kurve durch folgende Gleichung:
ZP' = (XPZQ - XQZP)2,
wobei a und b Parameter der elliptischen Kurve sind, und wobei xD eine affine Koordinate eines Punkts auf der elliptischen Kurve ist, der sich ergibt, wenn eine Differenz des ersten Punkts (P) und des zweiten Punkts (Q) berechnet wird.
einer Einrichtung zum Berechnen (31) einer ersten projektiven Koordinate XP' eines Ergebnispunkts auf der elliptischen Kurve durch folgende Gleichung:
einer Einrichtung (30) zum Berechnen einer dritten projektiven Koordinate ZP' eines Ergebnispunkts auf der elliptischen Kurve durch folgende Gleichung:
ZP' = (XPZQ - XQZP)2,
wobei a und b Parameter der elliptischen Kurve sind, und wobei xD eine affine Koordinate eines Punkts auf der elliptischen Kurve ist, der sich ergibt, wenn eine Differenz des ersten Punkts (P) und des zweiten Punkts (Q) berechnet wird.
11. Vorrichtung zum Multiplizieren eines Punkts auf einer
elliptischen Kurve y2 = x3 + a.x + b mit einem Faktor 2
innerhalb eines kryptographischen Algorithmus, wobei x und y
Koordinaten von Punkten auf der elliptischen Kurve sind, und
wobei die elliptische Kurve über einem Körper mit einer
Charakteristik größer als 3 definiert ist, wobei der Punkt eine
erste projektive Koordinate XP und eine dritte projektive
Koordinate ZP aufweist, mit folgenden Merkmalen:
einer Einrichtung zum Berechnen (32) einer ersten projektiven Koordinate XQ' eines Ergebnispunkts durch folgende Gleichung:
einer Einrichtung zum Berechnen (32) einer dritten projektiven Koordinate ZQ' eines Ergebnispunkts (Q') durch folgende Gleichung:
wobei a und b Parameter der elliptischen Kurve sind.
einer Einrichtung zum Berechnen (32) einer ersten projektiven Koordinate XQ' eines Ergebnispunkts durch folgende Gleichung:
einer Einrichtung zum Berechnen (32) einer dritten projektiven Koordinate ZQ' eines Ergebnispunkts (Q') durch folgende Gleichung:
wobei a und b Parameter der elliptischen Kurve sind.
12. Verfahren zum Addieren zweier Punkte auf einer
elliptischen Kurve y2 = x3 + a.x + b innerhalb eines
kryptographischen Algorithmus, wobei x und y Koordinaten von Punkten auf
der elliptischen Kurve sind, und wobei die elliptische Kurve
über einem Körper mit einer Charakteristik größer als 3
definiert ist, wobei ein erster Punkt (P) durch eine projektive
x-Koordinate XP und durch eine projektive z-Koordinate ZP
gegeben ist, wobei der zweite Punkt durch eine projektive x-
Koordinate XQ und eine projektive z-Koordinate ZQ gegeben
ist, und zum Multiplizieren des zweiten Punkts (Q) mit einem
Faktor von 2, um als Ergebnis der Addition einen ersten
Ergebnispunkt (P') zu erhalten, der durch eine erste projektive
x-Koordinate XP' und durch eine projektive z-Koordinate ZP'
gegeben ist, und um als Ergebnis der Multiplikation einen
zweiten Ergebnispunkt (Q') zu erhalten, der durch eine
projektive x-Koordinate XQ' und durch eine projektive z-
Koordinate ZQ' gegeben ist, unter Verwendung von acht
Registern R0, R1, R2, R3, R4, R5, R6 und R7, mit folgenden
Schritten:
(0) Initialisieren des Registers R0 mit XP, des Registers R1 mit ZP, des Registers R2 mit XQ und des Registers R3 mit ZQ;
Durchführen der folgenden Registeroperationen:
(1) R6 ← R2.R1
(2) R7 ← R3.R0;
(3) R4 ← R7 + R6;
(4) R5 ← R7 - R6;
(5) R5 ← R5.R5;
(6) R7 ← R1.R3;
(7) R1 ← a.R7;
(8) R6 ← R7.R7;
(9) R0 ← R0.R2;
(10) R6 ← b.R6;
(11) R0 ← R0 + R1;
(12) R6 ← R6 + R6;
(13) R0 ← R0.R4;
(14) R1 ← xD.R5;
(15) R4 ← R0 + R6;
(16) R4 ← R4 + R4;
(17) R6 ← R2 + R2;
(18) R4 ← R4 - R1;
(19) R7 ← R3 + R3;
(20) R0 ← R6.R7;
(21) R1 ← R3.R3;
(22) R2 ← R2.R2;
(23) R3 ← a.R1;
(24) R6 ← R2 - R3;
(25) R7 ← R2 + R3;
(26) R1 ← R1 + R1;
(27) R2 ← b.R1;
(28) R7 ← R7.R0;
(29) R1 ← R2.R1;
(30) R0 ← R0.R2;
(31) R6 ← R6.R6;
(32) R6 ← R6 - R0;
(33) R7 ← R7 + R1; und
(34) Ausgeben eines Inhalts von R4 um die projektive x- Koordinate des Ergebnispunkts der Addition zu erhalten, Ausgeben des Inhalts von R5 um die projektive z- Koordinate ZP' der Addition zu erhalten, Ausgeben des Registers R6, um die projektive x-Koordinate XQ' des Ergebnispunkts der Multiplikation zu erhalten, und Ausgeben des Inhalts des Registers R7, um die projektive z- Koordinate ZQ' des Ergebnispunkts der Multiplikation zu erhalten,
wobei das Symbol "." eine Multiplikation darstellt, wobei das Symbol "+" eine Addition darstellt, wobei das Symbol "-" eine Subtraktion darstellt, wobei a, b Parameter der elliptischen Kurve sind, wobei xD eine affine x-Koordinate eines Punkts ist, der sich ergibt, wenn der erste Punkt P vom zweiten Punkt Q subtrahiert wird, und wobei das Symbol " ← " bedeutet, daß das Register, auf das die Pfeilspitze gerichtet ist, mit einem Wert geladen wird, der sich aus der arithmetischen Operation ergibt, die an einem Fußpunkt des Pfeils steht.
(0) Initialisieren des Registers R0 mit XP, des Registers R1 mit ZP, des Registers R2 mit XQ und des Registers R3 mit ZQ;
Durchführen der folgenden Registeroperationen:
(1) R6 ← R2.R1
(2) R7 ← R3.R0;
(3) R4 ← R7 + R6;
(4) R5 ← R7 - R6;
(5) R5 ← R5.R5;
(6) R7 ← R1.R3;
(7) R1 ← a.R7;
(8) R6 ← R7.R7;
(9) R0 ← R0.R2;
(10) R6 ← b.R6;
(11) R0 ← R0 + R1;
(12) R6 ← R6 + R6;
(13) R0 ← R0.R4;
(14) R1 ← xD.R5;
(15) R4 ← R0 + R6;
(16) R4 ← R4 + R4;
(17) R6 ← R2 + R2;
(18) R4 ← R4 - R1;
(19) R7 ← R3 + R3;
(20) R0 ← R6.R7;
(21) R1 ← R3.R3;
(22) R2 ← R2.R2;
(23) R3 ← a.R1;
(24) R6 ← R2 - R3;
(25) R7 ← R2 + R3;
(26) R1 ← R1 + R1;
(27) R2 ← b.R1;
(28) R7 ← R7.R0;
(29) R1 ← R2.R1;
(30) R0 ← R0.R2;
(31) R6 ← R6.R6;
(32) R6 ← R6 - R0;
(33) R7 ← R7 + R1; und
(34) Ausgeben eines Inhalts von R4 um die projektive x- Koordinate des Ergebnispunkts der Addition zu erhalten, Ausgeben des Inhalts von R5 um die projektive z- Koordinate ZP' der Addition zu erhalten, Ausgeben des Registers R6, um die projektive x-Koordinate XQ' des Ergebnispunkts der Multiplikation zu erhalten, und Ausgeben des Inhalts des Registers R7, um die projektive z- Koordinate ZQ' des Ergebnispunkts der Multiplikation zu erhalten,
wobei das Symbol "." eine Multiplikation darstellt, wobei das Symbol "+" eine Addition darstellt, wobei das Symbol "-" eine Subtraktion darstellt, wobei a, b Parameter der elliptischen Kurve sind, wobei xD eine affine x-Koordinate eines Punkts ist, der sich ergibt, wenn der erste Punkt P vom zweiten Punkt Q subtrahiert wird, und wobei das Symbol " ← " bedeutet, daß das Register, auf das die Pfeilspitze gerichtet ist, mit einem Wert geladen wird, der sich aus der arithmetischen Operation ergibt, die an einem Fußpunkt des Pfeils steht.
13. Verfahren nach Anspruch 12, bei dem folgende Schritte
parallel ausgeführt werden:
- Schritt (1) parallel zu Schritt (2)
- Schritt (3) parallel zu Schritt (4)
- Schritt (5) parallel zu Schritt (6)
- Schritt (7) parallel zu Schritt (8)
- Schritt (9) parallel zu Schritt (10)
- Schritt (11) parallel zu Schritt (12)
- Schritt (13) parallel zu Schritt (14)
- Schritt (16) parallel zu Schritt (17)
- Schritt (18) parallel zu Schritt (19)
- Schritt (20) parallel zu Schritt (21)
- Schritt (22) parallel zu Schritt (23)
- Schritt (24) parallel zu Schritt (25)
- Schritt (27) parallel zu Schritt (28)
- Schritt (29) parallel zu Schritt (30)
- Schritt (32) parallel zu Schritt (33).
14. Verfahren nach einem der Ansprüche 12 oder 13, bei dem
nach einer Addition, Multiplikation und/oder Subtraktion eine
modulare Reduktion mit der Charakteristik der elliptischen
Kurve als Modul durchgeführt wird.
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE2001156708 DE10156708B4 (de) | 2001-11-19 | 2001-11-19 | Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve |
| PCT/EP2002/011426 WO2003044653A2 (de) | 2001-11-19 | 2002-10-11 | Verfahren und vorrichtung zum multiplizieren und verfahren und vorrichtung zum addieren auf einer elliptischen kurve |
| AU2002342820A AU2002342820A1 (en) | 2001-11-19 | 2002-10-11 | Method and device for multiplication and method and device for addition to an elliptical curve |
| TW91123940A TW580654B (en) | 2001-11-19 | 2002-10-17 | Method and device for multiplying and method and device for adding on an elliptic curve |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE2001156708 DE10156708B4 (de) | 2001-11-19 | 2001-11-19 | Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE10156708A1 true DE10156708A1 (de) | 2003-06-12 |
| DE10156708B4 DE10156708B4 (de) | 2005-09-29 |
Family
ID=7706220
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE2001156708 Expired - Fee Related DE10156708B4 (de) | 2001-11-19 | 2001-11-19 | Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve |
Country Status (4)
| Country | Link |
|---|---|
| AU (1) | AU2002342820A1 (de) |
| DE (1) | DE10156708B4 (de) |
| TW (1) | TW580654B (de) |
| WO (1) | WO2003044653A2 (de) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE102006014353A1 (de) * | 2006-03-28 | 2007-10-04 | Siemens Ag | Verfahren zum sicheren Ermitteln von Daten |
| DE102006002891B4 (de) * | 2006-01-20 | 2009-06-04 | Siemens Ag | Verfahren, Vorrichtung und System zum Verifizieren von auf einer elliptischen Kurve ermittelten Punkten |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI406548B (zh) * | 2010-10-27 | 2013-08-21 | Univ Southern Taiwan | 橢圓曲線加密運算電路 |
| CN113037479B (zh) * | 2021-03-25 | 2022-04-12 | 支付宝(杭州)信息技术有限公司 | 数据验证方法和装置 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1999049386A1 (en) * | 1998-03-25 | 1999-09-30 | Certicom Corp. | Accelerated finite field operations on an elliptic curve |
| WO2000025204A1 (en) * | 1998-10-28 | 2000-05-04 | Certicom Corp. | Power signature attack resistant cryptography |
| US6263081B1 (en) * | 1997-07-17 | 2001-07-17 | Matsushita Electric Industrial Co., Ltd. | Elliptic curve calculation apparatus capable of calculating multiples at high speed |
-
2001
- 2001-11-19 DE DE2001156708 patent/DE10156708B4/de not_active Expired - Fee Related
-
2002
- 2002-10-11 WO PCT/EP2002/011426 patent/WO2003044653A2/de not_active Ceased
- 2002-10-11 AU AU2002342820A patent/AU2002342820A1/en not_active Abandoned
- 2002-10-17 TW TW91123940A patent/TW580654B/zh active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6263081B1 (en) * | 1997-07-17 | 2001-07-17 | Matsushita Electric Industrial Co., Ltd. | Elliptic curve calculation apparatus capable of calculating multiples at high speed |
| WO1999049386A1 (en) * | 1998-03-25 | 1999-09-30 | Certicom Corp. | Accelerated finite field operations on an elliptic curve |
| WO2000025204A1 (en) * | 1998-10-28 | 2000-05-04 | Certicom Corp. | Power signature attack resistant cryptography |
Non-Patent Citations (1)
| Title |
|---|
| HASEGAWA, T.: A Small and Fast Software Implemen- tation of Elliptic Curve Cryptosystems over GF(p) on a 16-Bit Microcomputer. In: IEICE Trans. Funda-mentals, Vol. E82-A, No. 1, Jan. 1999, S. 98-106 * |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE102006002891B4 (de) * | 2006-01-20 | 2009-06-04 | Siemens Ag | Verfahren, Vorrichtung und System zum Verifizieren von auf einer elliptischen Kurve ermittelten Punkten |
| US7774160B2 (en) | 2006-01-20 | 2010-08-10 | Siemens Aktiengesellschaft | Method, device, and system for verifying points determined on an elliptic curve |
| DE102006014353A1 (de) * | 2006-03-28 | 2007-10-04 | Siemens Ag | Verfahren zum sicheren Ermitteln von Daten |
| DE102006014353B4 (de) * | 2006-03-28 | 2007-11-22 | Siemens Ag | Verfahren zum sicheren Ermitteln von Daten |
| US8369514B2 (en) | 2006-03-28 | 2013-02-05 | Seimens Aktiengesellschaft | Method for the secure determination of data |
Also Published As
| Publication number | Publication date |
|---|---|
| AU2002342820A1 (en) | 2003-06-10 |
| TW580654B (en) | 2004-03-21 |
| WO2003044653A2 (de) | 2003-05-30 |
| DE10156708B4 (de) | 2005-09-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE60314584T2 (de) | Maskierung von in einem Restklassensystem zerlegten bzw. faktorisierten Daten | |
| DE2843583C2 (de) | Verfahren für den zugriffsicheren Nachrichtenverkehr über einen ungesicherten Nachrichtenübertragungskanal | |
| EP1360579B1 (de) | Verfahren und vorrichtung zum modularen multiplizieren und rechenwerk zum modularen multiplizieren | |
| DE69818798T2 (de) | Hochgeschwindige Montgomerywert-Berechnung | |
| DE112008000668T5 (de) | Kryptografisches Verfahren und System | |
| DE112007001319T5 (de) | Multiplizieren zweier Zahlen | |
| DE69837036T2 (de) | Verfahren und vorrichtung zur ausführung einer entschlüsselung mittels einer standardisierten modularen potenzierung zum vereiteln eines zeitangriffs | |
| EP1370933B1 (de) | Verfahren und vorrichtung zum modularen multiplizieren | |
| EP2641241B1 (de) | Verfahren zur langzahldivision oder modulare reduktion | |
| EP1664979B1 (de) | Übergang zwischen maskierten repräsentationen eines wertes bei kryptographischen berechnungen | |
| DE10219158B4 (de) | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation | |
| DE102006025673A1 (de) | Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls | |
| DE10151129B4 (de) | Verfahren und Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation in einer Kryptographieschaltung | |
| DE102006025713B9 (de) | Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation | |
| DE10156708B4 (de) | Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve | |
| EP1474741B1 (de) | Vorrichtung und verfahren zum berechnen eines ergebnisses aus einer division | |
| EP1478999B1 (de) | Vorrichtung und verfahren zum umrechnen eines terms | |
| EP1515226B1 (de) | Modulare Multiplikation | |
| EP1504337B1 (de) | Berechnung des modularen inversen eines wertes | |
| DE102006025677A1 (de) | Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge | |
| DE102020134618A1 (de) | Sicherheits-controller und verfahren zur verarbeitung von datenelementen eines datenfeldes | |
| EP3504616B1 (de) | Modul und verfahren zur abgesicherten berechnung von mathematischen operationen | |
| DE10219164A1 (de) | Vorrichtung und Verfahren zum Berechnen eines ganzzahligen Quotienten | |
| DE602004006126T2 (de) | Verbesserte inversionsberechnungen | |
| EP1536320B1 (de) | Montgomery-Multiplikation mit vergrösserter Operandenlänge |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| OP8 | Request for examination as to paragraph 44 patent law | ||
| 8364 | No opposition during term of opposition | ||
| R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |