-
Ausführungsbeispiele der Erfindung beziehen sich auf eine Vorrichtung oder ein Verfahren zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve.
-
Die Verwendung elliptischer Kurven ersetzt immer mehr das RSA-Verfahren (Rivest-Shamir-Adleman-Verfahren) bei Kryptographiesystemen mit öffentlichem Schlüssel (Public-Key-Kryptographiesysteme). Die Kryptographie für elliptische Kurven wurde von V. Miller in „Victor S. Miller. Use of Elliptic Curves in Cryptography. In Hugh C. Williams, Herausgeber, CRYPTO, Band 218 der Lecture Notes in Computer Science, Seiten 417 - 426. Springer, 1985“ und N. Koblitz in „Neil Koblitz. Elliptic Curve Cryptosystems. Mathematics of Computation, 48: 203 - 209, 1987“ vorgeschlagen.
-
Einführende Literatur über elliptische Kurven und deren Kryptographie sind beispielsweise die Lehrbücher „Henri Cohen und Gerhard Frey, Herausgeber. Handbook of Elliptic and Hyperelliptic curve Cryptography. Chapman & Hall/CRC, 2006.“ und „Ian Blake, Gadiel Seroussi und Nigel Smart. Advances in Elliptic Curve Cryptography (London Mathematical Society Lecture Note Series). Cambridge University Press, New York, NY, USA, 2005.“. Ein guter kurzer Übersichtsartikel ist beispielsweise „Alfred Menezes und Scott A. Vanstone. Elliptic Curve Cryptosystems and Their Implementations. J. Cryptology, 6(4): 229 - 224, 1993“. Da elliptische Kurven bereits im 19. Jahrhundert und früher von Mathematikern studiert wurden, ist die allgemeine Literatur zu diesem Thema unüberschaubar, aber meistens nur von Mathematikern lesbar.
-
Die Druckschrift mit dem Titel „Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems“ erläutert, dass eine elliptische Kurve zur Kryptographie genutzt werden kann. Hierzu kann eine Skalarmultiplikation in einer Gruppe von Punkten der elliptischen Kurve durchgeführt werden. Die Druckschrift
US 2008/0144812 A beschreibt ein System sowie ein Verfahren zum Durchführen einer iterativen Skalarmultiplikation, die gegen einen Adress-Bit-Angriff geschützt ist.
-
Während bei RSA der entscheidende Schritt zum Verschlüsseln und Entschlüsseln oder zum Erzeugen einer Signatur und Verifizieren einer Signatur die Exponentiation md mod N einer Nachricht („message“) m modulo einer großen Anzahl N ist, die das Produkt zweier großer und geheimer Primzahlen ist, ist der entscheidende Prozess der Elliptische-Kurven-Kryptographie die Skalarmultiplikation einer Zahl mit einem Punkt auf der Kurve.
-
Eine elliptische Kurve E: = E(F) über einem endlichen Feld F ist eine endliche kommutative (Abelsche) Gruppe. Die Elemente dieser Gruppe sind eine Lösung einer Gleichung dritten Grades in diesem Feld, beispielsweise:
oder, allgemeiner,
wobei a, b, c, d, e Elemente von F sind, die gewisse Eigenschaften erfüllen müssen. Ferner wird ein künstlicher Punkt O hinzugefügt. Auf dieser Menge ist eine Addition definiert, was bedeutet, dass zwei Punkte P, Q aus E(F) addiert (und auch subtrahiert) werden können, so dass ein neuer Punkt R = P + Q auf dieser Kurve entsteht.
-
Es gelten die folgenden Gesetze:
- 1. Assoziativität: (P + Q) + R = P + (Q + R).
- 2. Existenz eines Identitätselements: O + P = P.
- 3. Existenz der inversen Elemente (-P) zu P, so dass (-P) + P = O.
- 4. Kommutativität: P + Q = Q + P.
-
Diese Gesetzmäßigkeiten machen die elliptische Kurve zu einer Abelschen Gruppe. Auf solch einer Gruppe ist automatisch eine Skalarmultiplikation kP definiert durch:
wobei keine Ganzzahl aus Z ist und P ein Punkt auf der Kurve ist. Diese Skalarmultiplikation ist die zentrale Operation bei der Elliptische-Kurven-Kryptographie. Meist ist der Skalar k eines der Geheimnisse.
-
Deshalb muss die Skalarmultiplikation auf sichere Weise implementiert werden, so dass die Möglichkeit, den Skalar k beispielsweise anhand von Seitenkanalangriffen wie SPA oder DPA, anhand von Fehlerangriffen (fault attacks) oder Sicher-Fehler-Angriffen (safe-error attacks) herauszufinden, so gering wie möglich ist.
-
Seitenkanalangriffe sind beispielsweise Angriffe auf Implementierungen von Kryptosystemen, die Beobachtungen von Zeitgebungen, Leistungsverbrauch oder elektromagnetischer Strahlung verwenden, um geheime Information zu erhalten, die ursprünglich sicher gespeichert sein soll. Bei der einfachen Leistungsanalyse (SPA - simple power analysis) beobachtet ein Angreifer direkt den Leistungsverbrauch einer Vorrichtung. Beispielsweise variiert die durch die Vorrichtung verbrauchte Menge an Leistung in Abhängigkeit von den bearbeiteten Daten und den Anweisungen, die während verschiedener Teile einer Ausführung eines Algorithmus durchgeführt werden.
-
Differentielle Leistungsanalyse (DPA - differential power analysis) nutzt charakteristisches Verhalten aus (z. B. Leistungsverbrauchsverhalten von Transistoren und Logikgattern). DPA verwendet ein Angriffsmodell und eine statistische Analyse, um versteckte Informationen aus einer großen Anzahl von Leistungshinweisen, die während einer gesteuerten kryptographischen Berechnung erhalten werden, zu extrahieren. Die Verwendung statistischer Methoden in einer gesteuerten DPA-Umgebung ermöglicht ein Identifizieren geringer Unterschiede im Leistungsverbrauch, die beispielsweise dazu verwendet werden können, spezifische Informationen, z. B. die einzelnen Bits in einem geheimen Schlüssel, wiederzugewinnen.
-
Fehlerangriffe sind beispielsweise rechentechnische Sicher-Fehler-Angriffe (C-Sicher-Fehler-Angriffe) oder Speicher-Sicher-Fehler-Angriffe (M-Sicher-Fehler-Angriffe). Der rechentechnische Sicher-Fehler-Angriff kann entwickelt werden, indem ein beliebiger vorübergehender zufälliger Rechenfehler in der Arithmetik-Logik-Einheit (ALE) bewirkt wird. Ein Speicher-Sicher-Fehler-Angriff muss einen vorübergehenden Speicherfehler in einem Register oder in einem Speicherplatz bewirken.
-
Eine sichere Implementierung dieser Skalarmultiplikation bei Kryptosystemen wie z. B. Smartcards, PCs oder anderen Sicherheitsprodukten ist von hoher Bedeutung. Dies umfasst einen Schutz vor beispielsweise Seitenkanalangriffen wie SPA (einfache Leistungsanalyse) und DPA (differentielle Leistungsanalyse), Fehlerangriffen und Sicher-Fehler-Angriffen.
-
Beispielsweise ist ein einfaches Verfahren zum Implementieren einer Skalarmultiplikation dP das sogenannte Double-and-Add-Verfahren:
-
Dies ist die bekannteste Methode. Ungünstigerweise ist sie nicht sicher vor SPA und DPA, denn die Verdopplung wird normalerweise mit anderen Formeln berechnet als die Addition zweier Punkte auf der Kurve. Diese beiden Prozesse können üblicherweise durch den Stromverlauf beobachtet werden, und somit kann der geheime Schlüssel ohne weiteres ermittelt werden.
-
Deshalb wird oft ein Double-and-always-add-Verfahren vorgeschlagen:
-
Hiermit ist der Stromverlauf ausgeglichen, und solch ein Angriff ist nicht mehr möglich. Andererseits öffnet diese Implementierung Tür und Tor für Sicher-Fehler-Angriffe (siehe beispielsweise „Sung-Ming Yen und Marc Joye. Checking Before Output May Not Be Enough Against Fault-Based Cryptoanalysis. IEEE Trans. Computers, 49(9): 967 - 90, 2000“). Da der zweite Zweig der falls/anderenfalls-Anweisung unterbrochen werden kann, ohne dass sich der Output ändert, kann ein Angreifer daraus Informationen über den geheimen Skalar extrahieren.
-
Beide Methoden weisen außerdem den Nachteil auf, dass sie, wenn sie naiv implementiert werden, nicht sicher gegen DPA und andere Fehlerangriffe sind.
-
Eine andere Methode, das SPA-Problem in den Griff zu bekommen, ist die Montgomery-Leiter:
-
Hier besteht auch jede Runde aus einer Addition und einer Verdopplung und ist somit SPA-sicher. Das DPA-Problem besteht weiterhin. Diese Methode kann die Addition schneller berechnen als andere Algorithmen, die gezeigt sind bei „Wieland Fischer, Christophe Giraud, Erik Woodward Knudsen und Jean-Pierre Seifert. Parallel scalar multiplication on general elliptic curves over Fp hedged against Non-Differential Side-Channel Attacks. IACR, Cryptology ePrint Archive, (007), Januar 2007. Verfügbar bei http://eprint.iacr.org/2002/007“ „Tetsuya Izu und Tsuyoshi Takagi. A Fast Parallel Elliptic Curve Multiplication Resistant against Side Channel Attacks. In David Naccache und Pascal Paillier, Herausgeber Public Key Cryptography, Band 2.274 der Lecture Notes in Computer Science, Seiten 280 - 296. Springer, 2002.“ und „Marc Joye und Sung.Ming Yen. The Montgomery Powering Ladder. In Burton S. Kaliski Jr., C etin Kaya Ko c und Christof Paar, Herausgeber. Cryptographic Hardware and Embedded Systems - CHES 2002, 4th International Workshop, Redwood Shores, CA, USA, 13. - 15. August 2002, Revised Paper, Band 2.523 der Lecture Notes in Computer Science. Springer, 2003., Seiten 291 - 302.“.
-
Die Aufgabe der vorliegenden Erfindung besteht darin, Vorrichtungen, ein Kryptosystem sowie ein Verfahren mit verbesserten Charakteristika zu liefern.
-
Die Aufgabe wird durch die Merkmale der unabhängigen Ansprüche gelöst. Weiterbildungen finden sich in den abhängigen Ansprüchen.
-
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nun unter Bezugnahme auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
- 1 ein Blockdiagramm einer Vorrichtung zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve;
- 2 ein Blockdiagramm eines Kryptosystems;
- 3 ein Flussdiagramm eines Verfahrens zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve; und
- 4 ein Flussdiagramm eines Verfahrens zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve.
-
1 zeigt ein Blockdiagramm einer Vorrichtung 100 zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve gemäß einem Ausführungsbeispiel der Erfindung. Die Vorrichtung 100 umfasst einen Punktselektor 110, der mit einem Prozessor 120 verbunden ist.
-
Der Punktselektor 110 ist dahin gehend konfiguriert, einen Hilfspunkt 112 auf der elliptischen Kurve zufällig oder pseudozufällig zu wählen.
-
Der Prozessor 120 ist dahin gehend konfiguriert, das Ergebnis der Skalarmultiplikation mit einem Double-and-always-add-Verfahrens unter Verwendung des Hilfspunkts 112 zu berechnen.
-
Der Hilfspunkt 112 kann unabhängig von dem Referenzpunkt gewählt werden oder kann auf der Basis einer auf den Referenzpunkt angewandten Mischfunktion gewählt werden. Eine Mischfunktion des Referenzpunkts kann beispielsweise eine stochastische Funktion sein, die eine Zufallszahl auf der Basis des Referenzpunkts erzeugt. Der Hilfspunkt 112 kann auf der Zufallszahl beruhen. Alternativ dazu kann die Mischfunktion eine deterministische Funktion des Referenzpunkts unter Verwendung einer Zufalls- oder Pseudozufallszahl sein.
-
Durch Berechnen des Ergebnisses der Skalarmultiplikation mit einem Double-and-always-add-Prozess unter Verwendung des Hilfspunkts 112 kann die Berechnung durch den Hilfspunkt maskiert sein. Ein Maskieren der Berechnung des Ergebnisses der Skalarmultiplikation und ein Verwenden eines Double-and-always-add-Verfahrens kann zu einer SPA-, DPA- und Sicher-Fehler-Angriff-resistenten Implementierung der Berechnung des Ergebnisses der Skalarmultiplikation führen.
-
Der Prozessor 120 kann dahin gehend konfiguriert sein, ein Ergebnis einer Addition des Hilfspunkts 112 mit sich selbst und der Subtraktion des Hilfspunkts 112 von einem Zwischenpunkt oder einer Addition des negativen Hilfspunkts und des Zwischenpunkts zu berechnen. Ein Subtrahieren des Hilfspunkts oder ein Addieren des negativen Hilfspunkts liefert dasselbe Ergebnis, jedoch kann die Implementierung unterschiedlich sein.
-
Falls der Prozessor 120 ferner dahin gehend konfiguriert ist, das Ergebnis der Skalarmultiplikation ohne Verwendung von Dummy-Anweisungen (dummy instructions) zu berechnen, kann die Berechnung des Ergebnisses vor Sicher-Fehler-Angriffen geschützt sein. Dummy-Anweisungen beziehen sich beispielsweise auf Anweisungen, die auf einem geheimen Parameter der Skalarmultiplikation (z. B. der Referenzzahl) beruhen und das Ergebnis der Skalarmultiplikation nicht beeinflussen.
-
Das Berechnen des Ergebnisses der Skalarmultiplikation kann gegen Sicher-Fehler-Angriffe immun sein. In diesem Fall bedeutet immun, dass die Multiplikation so gut wie möglich geschützt ist. Eine 100%ige Immunität kann wahrscheinlich niemals erreicht werden.
-
Ferner kann der Prozessor 120 dahin gehend konfiguriert sein, eine Schleife bzw. Loop auszuführen. Die Schleife kann N mal ausgeführt werden, wobei N eine Anzahl von Bits ist, aus denen die Referenzzahl bei einer binären Darstellung besteht. Falls beispielsweise die Referenzzahl gleich 9 ist, wäre die binäre Darstellung der Referenzzahl 1001, und die Anzahl von Bits, aus denen die Referenzzahl besteht, wäre gleich 4. Alternativ dazu kann die Anzahl von Bits, aus denen die Referenzzahl besteht, durch die relevanten Bits der Referenzzahl definiert sein. Wenn die Referenzzahl beispielsweise gleich 9 ist, wäre die binäre Darstellung der Referenzzahl 1001, die Referenzzahl kann jedoch durch 8 Bits (z. B. aufgrund einer Registergröße) und somit 00001001 dargestellt werden. Dann sind die führenden Nullen eventuell nicht Bestandteil der relevanten Bits. Außerdem können manche Bits während eines Vorprozesses verarbeitet werden, und deshalb kann die Anzahl von Bits, aus denen die Referenzzahl besteht, gleich der Anzahl von nicht vorverarbeiteten Bits sein. Wenn die Referenzzahl bei einer binären Darstellung beispielsweise 1001 wäre und das erste Bit während eines Vorprozesses verarbeitet wird, wäre die Anzahl von Bits, aus denen die Referenzzahl besteht, gleich 3. Ein Beispiel kann darin bestehen, den Zwischenpunkt mit einem Punkt zu initialisieren, der andernfalls durch ein erstmaliges Ausführen der Schleife erhalten wird.
-
Außerdem kann der Prozessor 120 dahin gehend konfiguriert sein, einen aktuellen Zwischenpunkt in Abhängigkeit von einem Wert eines Bits der Referenzzahl zu berechnen. Falls beispielsweise der Wert eines Bits der Referenzzahl gleich 1 ist, wird der Referenzpunkt addiert, und der Hilfspunkt wird von dem Zwischenpunkt subtrahiert, um den aktuellen Zwischenpunkt zu erhalten. Andernfalls, falls der Wert des Bits der Referenzzahl gleich 0 ist, wird lediglich der Hilfspunkt 112 von dem Zwischenpunkt subtrahiert, um den aktuellen Zwischenpunkt zu erhalten.
-
Ferner kann der Prozessor 120 dahin gehend konfiguriert sein, den aktuellen Zwischenpunkt während einer Ausführung der Schleife zu berechnen. Der berechnete Zwischenpunkt kann auf dem Hilfspunkt 112 beruhen. Mit anderen Worten kann der Zwischenpunkt durch den Hilfspunkt 112 maskiert sein.
-
Bei manchen Ausführungsbeispielen gemäß der Erfindung können alle während der Ausführung der Schleife berechneten Zwischenpunkte auf dem Hilfspunkt 112 beruhen. Mit anderen Worten kann die gesamte Ausführung der Schleife durch den Hilfspunkt 112 maskiert sein.
-
Außerdem kann der Prozessor 120 dahin gehend konfiguriert sein, einen Zwischenpunkt gleich dem Hilfspunkt zu setzen oder zu initialisieren.
-
Der Prozessor 120 kann das Ergebnis der Skalarmultiplikation auf der Basis des Zwischenpunkts berechnen. Mit anderen Worten kann während der Berechnung ein Zwischenpunkt berechnet werden, der gleich dem maskierten Ergebnis der Skalarmultiplikation ist. Auf der Basis dieses maskierten Ergebnisses kann das Ergebnis der Skalarmultiplikation ermittelt werden. Auf diese Weise kann die gesamte Berechnung durch den Hilfspunkt 112 maskiert sein, bis das Ergebnis anhand des maskierten Ergebnisses indirekt zur Verfügung steht.
-
Manche Ausführungsbeispiele gemäß der Erfindung beziehen sich auf eine Vorrichtung zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve, die eine Einrichtung zum zufälligen oder pseudozufälligen Wählen eines Hilfspunkts und eine Einrichtung zum Berechnen des Ergebnisses der Skalarmultiplikation mit einem Double-and-always-add-Prozess unter Verwendung des Hilfspunkts umfasst.
-
Die Einrichtung zum Wählen des Hilfspunkts kann dem oben erwähnten Punktselektor entsprechen und kann beispielsweise ein Prozessor, eine CPU (central processing unit, Zentralverarbeitungseinheit) eines Computers, eine ALE (Arithmetik-Logik-Einheit), ein Kryptoprozessor, eine fest verdrahtete Schaltung oder ein Softwareprogramm, das durch eine CPU (Zentralverarbeitungseinheit) eines Computers, eine ALE (Arithmetik-Logik-Einheit) oder einen Kryptoprozessor eines Kryptosystems ausgeführt werden soll, sein.
-
Die Einrichtung zum Berechnen des Ergebnisses der Skalarmultiplikation kann dem oben erwähnten Prozessor entsprechen und kann die CPU (central processing unit, Zentralverarbeitungseinheit) eines Computers, eine ALE (Arithmetik-Logik-Einheit), ein Kryptoprozessor, eine fest verdrahtete Schaltung oder ein Softwareprogramm, das durch eine CPU (Zentralverarbeitungseinheit) eines Computers, eine ALE (Arithmetik-Logik-Einheit) oder einen Kryptoprozessor eines Kryptosystems ausgeführt werden soll, sein.
-
Die Einrichtung zum Wählen des Hilfspunkts und die Einrichtung zum Berechnen des Ergebnisses der Skalarmultiplikation können beide ein Softwareprogramm sein, das durch dieselbe CPU (Zentralverarbeitungseinheit) eines Computers, ALE (Arithmetik-Logik-Einheit) oder denselben Kryptoprozessor eines Kryptosystems ausgeführt werden soll.
-
2 zeigt ein Blockdiagramm eines Kryptosystems 200 mit einer Vorrichtung zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve gemäß einem Ausführungsbeispiel der Erfindung. Das Kryptosystem 200 umfasst den Punktselektor 110, den Prozessor 120, einen Speicher 220, eine Eingabe/Ausgabe-Schnittstelle 230 und einen Zufallszahlengenerator 240.
-
Das Kryptosystem 200 kann beispielsweise in einer Smartcard 210, einer Chipkarte oder einem Computer implementiert sein.
-
Der Speicher 220 ist mit dem Prozessor 120 verbunden und dahin gehend konfiguriert, beispielsweise die Referenzzahl, den Referenzpunkt auf der elliptischen Kurve, die elliptische Kurve selbst oder Parameter der elliptischen Kurve, den Hilfspunkt und/oder den Zwischenpunkt zu speichern.
-
Die Eingabe/Ausgabe-Schnittstelle 230 ist mit dem Prozessor 120 verbunden und dahin gehend konfiguriert, Ausgabedaten 232 nach außen zu liefern und Eingabedaten 232 von außen an den Prozessor 120 zu liefern.
-
Außerdem kann ein Zufallszahlengenerator 240 mit dem Punktselektor 110 verbunden sein. Der Zufallszahlengenerator 240 kann eine Zufallszahl beispielsweise unabhängig von dem Referenzpunkt liefern. Der Zufallszahlengenerator 240 kann ein echter Zufallszahlengenerator sein, der die Zufallszahl beispielsweise auf der Basis einer Eigenschaft einer Phasenregelschleife (PLL - phase locked loop) oder eines Busverkehrs in dem Kryptosystem bestimmt, oder er kann ein Pseudozufallszahlengenerator wie beispielsweise ein lineares oder nicht-lineares Rückkopplungsschieberegister sein. Der Punktselektor 110 kann den Hilfspunkt auf der Basis der Zufallszahl wählen.
-
3 zeigt ein Flussdiagramm eines Verfahrens 300 zum Berechnen des Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve gemäß einem Ausführungsbeispiel der Erfindung. Das Verfahren 300 umfasst ein zufälliges oder pseudozufälliges Wählen 310 eines Hilfspunkts auf der elliptischen Kurve und ein Berechnen 320 des Ergebnisses der Skalarmultiplikation mit einem Double-and-always-add-Prozess unter Verwendung des Hilfspunkts.
-
4 zeigt ein Flussdiagramm eines Verfahrens 400 zum Berechnen des Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve gemäß einem Ausführungsbeispiel der Erfindung.
-
Als erstes wird der Hilfspunkt B wie oben beschrieben gewählt (bei Bezugszeichen 310 gezeigt), und ein Zwischenpunkt Q wird gleich dem Hilfspunkt gesetzt (bei Bezugszeichen 410 gezeigt).
-
Dann wird ein Zähler i gleich der Anzahl von Bits gesetzt, aus denen die Bezugszahl bei einer binären Darstellung besteht (bei Bezugszeichen 420 gezeigt).
-
In der Schleife wird zunächst der Zähler i um 1 verringert (bei Bezugszeichen 430 gezeigt), worauf ein Verdoppeln 440 des Zwischenpunkts folgt.
-
Der nächste Schritt hängt von dem Wert eines aktuellen Bits di der Referenzzahl ab (bei Bezugszeichen 450 gezeigt). Ein aktuelles Bit ist dasjenige Bit der Referenzzahl, das dem aktuellen Wert des Zählers i zugeordnet ist. Falls beispielsweise die binäre Darstellung der Referenzzahl 1000 ist und die Schleife ausgeführt wird, bis der Zähler i gleich 0 ist, dann entspricht das Bit mit dem Wert 1 einem aktuellen Zähler, der gleich 3 ist.
-
Falls der Wert des aktuellen Bits d, der Referenzzahl gleich 1 ist, so ist der Zwischenpunkt gleich dem Zwischenpunkt plus dem Referenzpunkt minus den Hilfspunkt (Q = Q + (P - B), bei Bezugszeichen 460 gezeigt). Andernfalls, falls der Wert des aktuellen Bits di der Referenzzahl gleich 0 ist, so ist der Zwischenpunkt auf den Zwischenpunkt minus den Hilfspunkt gesetzt (Q = Q + (- B), bei Bezugszeichen 470 gezeigt).
-
Hiernach wird die Schleife erneut ausgeführt, falls der Zähler i größer ist als 0 (bei Bezugszeichen 480 gezeigt). Andernfalls, falls der Zähler i gleich 0 ist, wird das Ergebnis der Skalarmultiplikation berechnet, indem der Hilfspunkt von dem Zwischenpunkt subtrahiert wird (Q = Q + (-B), bei Bezugszeichen 490 gezeigt).
-
Der Algorithmus des gezeigten Verfahrens 400 kann auch auf folgende Weise dargestellt werden:
-
Bei diesem Beispiel ist d die binäre Darstellung der Referenzzahl, wobei Bitzahlen für das niedrigstwertige Bit mit 0 und für das höchstwertige Bit mit der höchsten Zahl beginnen. Ferner stellt P den Referenzpunkt dar, B den Hilfspunkt, Q den Zwischenpunkt und i den Zähler. D, gibt eine Zahl an, die gleich einem Wert ist, der durch Bits der Referenzzahl dargestellt wird, wobei Di mit den (n - i) höchstwertigen Bits beginnt. Falls beispielsweise die Referenzzahl bei der binären Darstellung 1010 ist, wäre D3 gleich 1, D2 wäre bei der binären Darstellung gleich 10 und bei der dezimalen Darstellung 2, D1 wäre bei der binären Darstellung gleich 101 und bei der dezimalen Darstellung 5, und D0 wäre bei der binären Darstellung gleich 1010 und bei der dezimalen Darstellung 10.
-
Wie bei diesem Beispiel gezeigt ist, ist die gesamte Berechnung mit dem Hilfspunkt maskiert. Erst wenn das Endergebnis der Skalarmultiplikation mit dem letzten Schritt 490 berechnet wird, wird die Maskierung beseitigt.
-
Während der Berechnung kann ein Zwischenpunkt mit einem neuen Zwischenpunkt überschrieben werden, alternativ dazu können mehrere verschiedene Zwischenpunkte verwendet werden.
-
Das beschriebene Verfahren kann auch als „Blended-double-and-always-add“-Verfahren bezeichnet werden.
-
Manche Ausführungsbeispiele gemäß der Erfindung beziehen sich auf ein Verfahren, das die Tatsache nutzt, dass das additive Inverse eines Punktes auf einer elliptischen Kurve trivial berechnet werden kann bzw. eine Subtraktion zweier Punkte des gleichen Aufwands bedarf wie eine Addition.
-
Das beschriebene Verfahren kann es ermöglichen, eine Skalarmultiplikation auszuführen, wobei alle Zwischenwerte/Zwischenpunkte randomisiert werden (aufgrund der auf dem Hilfspunkt beruhenden Berechnung). Deshalb ist das Verfahren prinzipiell DPA-resistent. Weiterhin hat es einen gleichmäßigen Ablauf „double and always add“, der eine SPA-Sicherheit liefert. Außerdem ist ein „Sicher-Fehler-Angriff“ nicht mehr möglich, da es keine Dummy-Anweisung gibt.
-
Bei manchen Ausführungsbeispielen gemäß der Erfindung kann eine DPA-Sicherheit hergestellt werden, indem mit einem randomisierten Skalar berechnet wird oder indem in sogenannten projektiven Koordinaten berechnet wird. Diese können problemlos randomisiert werden.
-
Manche Ausführungsbeispiele gemäß der Erfindung beziehen sich auf eine Implementierung einer Skalarmultiplikation an einem einer Vorrichtung wie beispielsweise einer Chipkarte, einer Smartcard, einem Computer oder einem anderen Kryptosystem mit einem Verfahren, das so effektiv ist wie möglich. Da diese Chips ferner als sichere Einheiten entworfen sind, sollte die Skalarmultiplikation vor vielen verschiedenen Seitenkanalangriffen wie z. B. SPA und DPA, Fehlerangriffen und Sicher-Fehler-Angriffen geschützt sein.
-
Manche weiteren Ausführungsbeispiele gemäß der Erfindung beziehen sich auf ein Double-and-add-Verfahren, bei dem ein Zwischenwert immer durch einen zufällig gewählten Punkt maskiert wird, der sich auf derselben Kurve befindet:
-
Ein Aspekt besteht darin, dass während jeder Ausführung der Schleife auf jedes Verdoppeln ein Additionsschritt folgt. Aufgrund des Verdoppelns wird der folgende Wert erhalten:
-
Schließlich sollte jedoch der folgende Wert erhalten werden:
wobei B der Wert des zugeordneten Bits der Referenzzahl ist. Deshalb muss entweder -B (minus den Hilfspunkt) oder P - B (der Referenzpunkt minus den Hilfspunkt) addiert werden. Somit besteht keine Notwendigkeit einer Dummy-Addition, und die Methode ist sicher vor Sicher-Fehler-Angriffen.
-
Manche Ausführungsbeispiele gemäß der Erfindung beziehen sich auf eine Skalarmultiplikation auf elliptischen Kurven mit additiver Blendung, wobei die Skalarmultiplikation vor SPA-, DPA- und Sicher-Fehler-Angriffen geschützt ist.
-
Im Allgemeinen können Punkte auf der elliptischen Kurve, beispielsweise der Referenzpunkt, der Hilfspunkt und der Zwischenpunkt, während der Berechnung durch ihre Koordinaten (z. B. kartesische Koordinaten oder projektive Koordinaten) dargestellt werden. Auch kann es möglich sein, einen Punkt auf der elliptischen Kurve während der Berechnung durch lediglich eine der Koordinaten (z. B. lediglich die x-Koordinate des Punktes) darzustellen.
-
Bei der vorliegenden Anmeldung werden dieselben Bezugszeichen teilweise für Objekte und Funktionseinheiten, die dieselben oder ähnliche Funktionseigenschaften aufweisen, verwendet.
-
Obwohl sich manche Ansprüche lediglich auf einen anderen Anspruch beziehen, kann auch eine Kombination mit weiteren Ansprüchen möglich sein.
-
Insbesondere wird darauf hingewiesen, dass das erfindungsgemäße Schema je nach den Bedingungen auch in Software implementiert sein kann. Die Implementierung kann auf einem digitalen Speichermedium erfolgen, insbesondere einer Floppy-Disk oder einer CD mit elektronisch lesbaren Steuersignalen, das bzw. die in der Lage ist, mit einem programmierbaren Computersystem zusammenzuarbeiten, so dass die entsprechende Methode ausgeführt wird. Allgemein besteht die Erfindung somit auch in einem Computerprogrammprodukt mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode zum Ausführen des erfindungsgemäßen Verfahrens, wenn das Computerprogrammprodukt auf einem Computer ausgeführt wird. Anders ausgedrückt kann die Erfindung somit auch als Computerprogramm mit einem Programmcode zum Ausführen des Verfahrens verwirklicht sein, wenn das Computerprogrammprodukt auf einem Computer ausgeführt wird.
-
Manche Ausführungsbeispiele gemäß der Erfindung beziehen sich auf ein Verfahren zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve. Das Verfahren umfasst ein zufälliges oder pseudozufälliges Wählen eines Hilfspunkts auf der elliptischen Kurve, wobei der Hilfspunkt unabhängig von dem Referenzpunkt gewählt ist; ein Setzen eines Zwischenpunkts gleich dem Hilfspunkt; ein Ausführen einer Schleife, wobei die Schleife N mal ausgeführt wird, wobei N eine Anzahl von Bits ist, aus denen die Referenzzahl bei einer binären Darstellung besteht; und ein Berechnen des Ergebnisses der Skalarmultiplikation auf der Basis einer Substraktion des Hilfspunkts von dem Zwischenpunkt oder einer Addition des negativen Hilfspunkts und des Zwischenpunkts. Ein Ausführen der Schleife umfasst ein Berechnen eines Ergebnisses einer Addition des Zwischenpunktes mit sich selbst; und ein Berechnen eines aktuellen Zwischenpunkts in Abhängigkeit von einem Wert eines aktuellen Bits der Referenzzahl, wobei die Referenzzahl binär dargestellt wird, wobei der aktuelle Zwischenpunkt gleich dem Zwischenpunkt plus dem Referenzpunkt minus den Hilfspunkt ist, falls der Wert des aktuellen Bits gleich 1 ist, oder wobei der aktuelle Zwischenpunkt gleich dem Zwischenpunkt minus den Hilfspunkt ist, falls der Wert des aktuellen Bits gleich 0 ist.