DE102012202015A1 - Vorrichtung und verfahren zum berechnen eines ergebnisses einer skalarmultiplikation - Google Patents

Vorrichtung und verfahren zum berechnen eines ergebnisses einer skalarmultiplikation Download PDF

Info

Publication number
DE102012202015A1
DE102012202015A1 DE102012202015A DE102012202015A DE102012202015A1 DE 102012202015 A1 DE102012202015 A1 DE 102012202015A1 DE 102012202015 A DE102012202015 A DE 102012202015A DE 102012202015 A DE102012202015 A DE 102012202015A DE 102012202015 A1 DE102012202015 A1 DE 102012202015A1
Authority
DE
Germany
Prior art keywords
auxiliary variable
bit
intermediate result
stored
result
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
Application number
DE102012202015A
Other languages
English (en)
Other versions
DE102012202015B4 (de
Inventor
Bernd Meyer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102012202015A1 publication Critical patent/DE102012202015A1/de
Application granted granted Critical
Publication of DE102012202015B4 publication Critical patent/DE102012202015B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Abstract

Eine Vorrichtung zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve weist einen Zufallszahlengenerator und einen Prozessor auf. Der Zufallszahlengenerator erzeugt ein Zufallsbit, und der Prozessor berechnet das Ergebnis der Skalarmultiplikation auf Basis eines Berechnungsalgorithmus unter Verwendung einer ersten Hilfsvariable, die ein erstes Zwischenergebnis speichert, das ein ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines ganzzahligen Vielfachen des Referenzpunktes repräsentiert, und einer zweiten Hilfsvariable, die ein zweites Zwischenergebnis speichert, das ein weiteres ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines weiteren ganzzahligen Vielfachen des Referenzpunktes repräsentiert. Ferner vertauscht der Prozessor einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert während der Berechnung des Ergebnisses der Skalarmultiplikation, wenn eine von dem erzeugten Zufallsbit abhängige Vertauschungsbedingung erfüllt ist.

Description

  • Ausführungsbeispiele der Erfindung beziehen sich auf das Gebiet der Kryptografie und insbesondere auf eine Vorrichtung und ein Verfahren zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve.
  • Seitenkanalangriffe sind eine Klasse von Verfahren für die Kryptoanalyse. Im Gegensatz zu klassischen Angriffen auf kryptografische Anwendungen versucht ein Angreifer hier nicht, den zugrundeliegenden abstrakten mathematischen Algorithmus zu brechen, sondern greift eine spezielle Implementierung eines kryptografischen Algorithmus an. Dabei verwendet der Angreifer leicht zugängliche physikalische Messvariablen der konkreten Implementierung wie beispielsweise die Laufzeit der Berechnung, die Leistungsaufnahme und elektromagnetische Strahlung des Prozessors während der Berechnung oder das Verhalten der Implementierung bei induzierten Fehlern. Die physikalischen Messwerte einer individuellen Berechnung können direkt (z. B. in einer einfachen Leistungsanalyse, SPA = simple power analysis) analysiert werden, oder ein Angreifer zeichnet Messwerte mehrerer Berechnungen auf (beispielsweise unter Verwendung eines Speicheroszilloskops) und wertet die Messwerte nachfolgend statistisch aus (beispielsweise in einer differentiellen Leistungsanalyse, DPA = differential power analysis). Seitenkanalangriffe sind oft wesentlich effizienter als klassische kryptoanalytische Techniken und können sogar in Verfahren eingreifen, die hinsichtlich der Algorithmen als sicher angesehen werden, wenn die Implementierung dieses Algorithmus nicht gegen Seitenkanalangriffe perfektioniert ist. Insbesondere bei Smartcards und eingebetteten Anwendungen sind Maßnahmen gegen Seitenkanalangriffe notwendig.
  • Moderne kryptografische Systeme auf Basis von Öffentlicher-Schlüssel-Kryptografie verwenden physikalische Einrichtungen, z. B. Smartcards oder Dongles, zum sicheren Speichern von geheimem Schlüsselmaterial und zum Ausführen asymmetrischer Krypto-Operationen wie digitaler Signaturen oder des Austauschs von Schlüsseln. Als Basis für eine asymmetrische Kryptografie können multiplikative Gruppen oder elliptische Kurven dienen. Letztere haben den Vorteil, dass bei gleicher Schlüssellänge das Sicherheitsniveau höher ist, da die bekanntesten Algorithmen zum Angreifen von multiplikativen Gruppen eine subexponentielle Laufzeit haben, während bei der Elliptische-Kurven-Kryptografie nur Angriffe mit exponentieller Laufzeit bekannt sind.
  • Eine elliptische Kurve E ist die Menge der Lösungen einer kubischen Gleichung y2 + a1xy + a3y = x3 + a2x2 + a4x + a6 mit Koeffizienten in einem endlichen Feld K, das keine singulären Funkte hat, d. h. es existieren keine Lösungen (r, s) der Gleichung in der Weise, dass die partiellen Ableitungen der Kurvengleichung für x und für y in (r, s) einen gemeinsamen Nullpunkt haben. Die Lösungen für die elliptische Kurve E zusammen mit einem Punkt O im Unendlichen als Nullelement bilden eine additive abelsche Gruppe, deren Gruppengesetz geometrisch interpretiert werden kann. Von Wichtigkeit sind hier zwei Ergebnisse aus der algebraischen Geometrie. Jede Gerade schneidet eine elliptische Kurve in drei (nicht unbedingt verschiedenen) Punkten, und für zwei (nicht unbedingt verschiedene) Punkte kann ein dritter Punkt berechnet werden, so dass die Summe der drei Punkte das neutrale Element O ist. P und Q seien zwei Punkte auf E, wobei P ≠ –Q und g die Gerade durch P und Q ist. (Im Fall P = Q ist die Gerade eine Tangente.) Diese Gerade schneidet die elliptische Kurve in einem dritten Punkt R. Durch Spiegeln von R an der x-Achse gewinnt man S = P + Q. Der Fall P = –Q kann kurz diskutiert werden. Die Neigung einer Geraden g ist dann unendlich, und der dritte Schnittpunkt ist der Punkt O im Unendlichen.
  • Analog zur Definition der Skalarmultiplikation in Vektorräumen ist die Skalarmultiplikation auf elliptischen Kurven definiert. P sei ein Punkt der elliptischen Kurve E, und k sei eine ganze Zahl. Die Skalarmultiplikation k·P entspricht einer k-fachen Addition von P zu sich selbst. Diese Skalarmultiplikation bildet in Kryptosystemen auf Basis elliptischer Kurven das wesentliche Element. Bei kryptografisch starken elliptischen Kurven repräsentiert die Skalarmultiplikation eine Einwegfunktion, d. h. sie kann in polynomischer Zeit ausgeführt werden, jedoch nur in exponentieller Zeit umgekehrt werden. Eine effiziente algorithmische Rekonstruktion des Skalars ist somit schon bei mäßiger Parameterlänge undenkbar. Bei sorgfältig ausgewählten kryptografischen Parametern bieten in der Praxis nur ungeschützte Implementierungen Möglichkeiten für einen Angriff durch Analyse von Seitenkanälen.
  • (bn-1, ..., b0) sei die binäre Repräsentation eines Skalars k, und P sei ein Punkt auf einer elliptischen Kurve. Die Skalarmultiplikation Q = k·p kann unter Verwendung des folgenden einfachen (Verdopple-und-Addiere-(Double-and-add))-Algorithmus berechnet werden:
    Figure 00020001
    Figure 00030001
  • Bei einem einfachen Leistungsanalyseangriff (SPA) wird das Profil der Leistungsaufnahme der Hardware während einer einzelnen Skalarmultiplikation k·P ausgewertet. Der Algorithmus der Skalarmultiplikation besteht im Wesentlichen aus Additionen und Verdopplungen von Punkten auf der elliptischen Kurve. Diese Operationen werden durch mehrere mathematische Operationen in dem endlichen Feld K realisiert und unterscheiden sich bei naiver Implementierung hinsichtlich der Anzahl und des Typs der ausgeführten Operationen. Somit unterscheidet sich das Profil der Leistungsaufnahme einer Addition von demjenigen einer Verdopplung. Diese Unterschiede können bereits mit Bezug auf kostengünstige Messvorrichtungen sichtbar gemacht werden, und somit kann aus der Sequenz von Additionen und Verdopplungen die binäre Repräsentation eines Skalars rekonstruiert werden. Der Skalar ist hier normalerweise der geheime Schlüssel eines zu schützenden kryptografischen Protokolls.
  • Bei einer differentiellen Leistungsanalyse (DPA) werden die Profile der Leistungsaufnahme der Hardware während mehrerer Skalarmultiplikationen k·P bei verschiedenen, möglicherweise abhängig ausgewählten Eingaben unter Verwendung eines Speicheroszilloskops aufgezeichnet. Danach werden die Messwerte statistisch ausgewertet. Bei einem solchen Angriff wird typischerweise eine Datenlokalität von Schlüsselinformationen in einem kryptografischen Algorithmus verwendet. Der Angreifer stellt Hypothesen über einige Schlüsselbits auf und prüft die Korrektheit der Hypothese durch eine Klassifizierung der Messkurven und die Anwendung statistischer Testverfahren. Die hohe Relevanz der Gefahr von DPA besteht einerseits darin, dass die Verwendung vieler Messkurven elektrische Wirkungen, die in individuellen Messkurven unterhalb der Rauschschwelle der Messausrüstung verborgen sind, auf ein solches Niveau verstärken kann, dass sogar einzelne Bits und einzelne Schaltoperationen und Zustandsveränderungen in der angegriffenen Hardware sichtbar werden können. Andererseits sind die technischen und finanziellen Hürden für das Ausführen eines solchen nichtinvasiven Angriffs so niedrig, dass bereits Amateurelektroniker als Angreifer in Frage kommen. Oft genügen schon einige hundert gemessene Leistungsprofile, die in einigen Minuten gesammelt werden können, und einige Minuten Rechenzeit eines Skripts zur statistischen Auswertung, um Implementierungen ohne geeignete Maßnahmen gegen Seitenkanalangriffe anzugreifen und das in der Hardware gespeicherte geheime Schlüsselmaterial vollständig zu extrahieren.
  • Eine weitere für die Ausübung von DPA relevante Variante sind Template-Angriffe (template = Schablone). Bei dieser Klasse von Angriffen werden zunächst in einer Lernphase mittels DPA-Techniken die relevanten zeitlichen Teile des Leistungsprofils für die Extraktion von Schlüsseldaten bestimmt. Hier wird üblicherweise angenommen, dass der Angreifer während der Lernphase die vollständige Kontrolle über das anzugreifende System hat und insbesondere in der Lage ist, Schlüsseldaten zu wählen. In der zweiten Angriffsphase werden unter Verwendung dieser relevanten Stellen Schlüsseldaten mit Hilfe geeigneter Software für eine Nachbearbeitung aus einer Vorrichtung mit unbekanntem Schlüssel extrahiert. Da im besten Fall für einen tatsächlichen Angriff möglicherweise nur ein einziges Profil der Leistungsaufnahme notwendig ist, sind Template-Angriffe auch als Spezialfall von SPA ansehbar.
  • Eine SPA-Abwehr kann mit Gewalt ausgeführt werden, indem der Aufwand für jedes Bit angepasst wird. Dies kann einerseits durch eine Aufwandsanpassung für die Addition und Verdopplung erfolgen, oder durch eine Anpassung der Sequenz von Additionen und Verdopplungen zu E. In der Praxis wird häufig die zweite Alternative gewählt, und der Algorithmus für die Skalarmultiplikation wird entsprechend umformuliert.
  • Figure 00040001
  • Das Ergebnis der Skalarmultiplikation findet sich in der Variable Q0. Dieser Algorithmus führt dazu, dass die Laufzeit sich drastisch erhöht und nun mit jedem Schlüsselbit eine Addition ausgeführt wird, unabhängig davon, ob das Ergebnis der Addition zum Ausführen der Skalarmultiplikation erforderlich ist oder nicht.
  • Ein weiteres Verfahren für eine Abwehr eines SPA-Angriffs mit Bezug auf eine Skalarmultiplikation ist durch die sogenannte Montgomery-Leiter repräsentiert.
  • (bn-1, ..., b0) sei die binäre Repräsentation eines Skalars k, und P sei ein Punkt auf einer elliptischen Kurve. Die Montgomery-Leiter berechnet gleichzeitig die x-Koordinaten der Punkte k·P und (k + 1)·P. Da die x- und y-Koordinate des Differenzpunktes der beiden Ergebnisse bekannt sind, kann der gesamte Punkt k·P des Ergebnisses rekonstruiert werden. Der Montgomery-Algorithmus ist folgender:
    Figure 00050001
  • Die Sequenz von Additionen oder Verdopplungen in Schritt (3) oder (4) ist nun unabhängig von den Schlüsselbits und vollkommen gleichförmig. Nur unterschiedliche Sprünge in der Wenn-dann-sonst-Instruktion und unterschiedliche Adressen für die Register S und R, die von dem tatsächlichen Schlüsselbit bi abhängen, erzeugen eine Variation in dem Leistungsprofil, so dass der Wert der Schlüsselbits unter Verwendung dieser Seitenkanalinformationen berechnet werden kann.
  • Eine Aufgabe der vorliegenden Erfindung besteht darin, Vorrichtungen, ein kryptographisches System, ein Verfahren und ein Computerprogramm mit verbesserten Charakteristika zu schaffen.
  • Die Aufgabe wird durch die Merkmale der unabhängigen Ansprüche gelöst. Weiterbildungen finden sich in den abhängigen Ansprüchen.
  • Ein Ausführungsbeispiel gemäß einem Aspekt schafft eine Vorrichtung zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve, wobei die Vorrichtung einen Zufallszahlengenerator und einen Prozessor aufweist. Der Zufallszahlengenerator ist dazu konfiguriert, ein Zufallsbit zu erzeugen. Der Prozessor ist dazu konfiguriert, das Ergebnis der Skalarmultiplikation auf Basis eines Berechnungsalgorithmus unter Verwendung einer ersten Hilfsvariable, die ein erstes Zwischenergebnis speichert, das ein ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines ganzzahligen Vielfachen des Referenzpunktes repräsentiert, und einer zweiten Hilfsvariable, die ein zweites Zwischenergebnis speichert, das ein weiteres ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines weiteren ganzzahligen Vielfachen des Referenzpunktes repräsentiert, zu berechnen. Ferner ist der Prozessor dazu konfiguriert, einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert während der Berechnung des Ergebnisses der Skalarmultiplikation zu vertauschen, wenn eine von dem Zufallsbit und möglicherweise weiteren Informationen abhängige Vertauschungsbedingung erfüllt ist.
  • Durch zufälliges Vertauschen der Zwischenergebnisse der Berechnung der Skalarmultiplikation der Referenzzahl mit dem Referenzpunkt ist es einem Angreifer unmöglich oder nahezu unmöglich, eine Referenzzahl (die einen geheimen Schlüssel des kryptografischen Algorithmus repräsentieren kann) durch eine einfache Stromanalyse, eine differentielle Stromanalyse erster Ordnung oder einen Template-Angriff zu extrahieren.
  • 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 kryptografischen Systems und
  • 3 ein Flussdiagramm eines Verfahrens zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve.
  • Im Folgenden werden für Objekte und funktionale Einheiten mit gleichen oder ähnlichen funktionalen Eigenschaften teilweise dieselben Bezugszeichen verwendet, und eine Beschreibung derselben mit Bezug auf eine Figur gilt auch für andere Figuren, um Redundanz bei der Beschreibung der Ausführungsbeispiele zu verringern.
  • 1 zeigt ein Blockdiagramm einer Vorrichtung 100 zum Berechnen eines Ergebnisses 122 einer Skalarmultiplikation einer Referenzzahl 102 mit einem Referenzpunkt 104 einer elliptischen Kurve gemäß einem Ausführungsbeispiel. Die Vorrichtung 100 weist einen Zufallszahlengenerator 110 auf, der mit einem Prozessor 120 verbunden ist. Der Zufallszahlengenerator 110 erzeugt ein Zufallsbit 112. Der Prozessor 120 berechnet das Ergebnis 122 der Skalarmultiplikation auf Basis eines Berechnungsalgorithmus unter Verwendung einer ersten Hilfsvariable, die ein erstes Zwischenergebnis speichert, das ein ganzzahliges Vielfaches des Referenzpunktes 104 oder eine Koordinate eines ganzzahligen Vielfachen des Referenzpunktes 104 repräsentiert, und einer zweiten Hilfsvariable, die ein zweites Zwischenergebnis speichert, das ein weiteres ganzzahliges Vielfaches des Referenzpunktes 104 oder eine Koordinate eines weiteren ganzzahligen Vielfachen des Referenzpunktes 104 repräsentiert. Ferner vertauscht der Prozessor 120 einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert während der Berechnung des Ergebnisses 122 der Skalarmultiplikation, wenn eine von dem erzeugten Zufallsbit 112 und möglicherweise weiteren Informationen abhängige Vertauschungsbedingung erfüllt ist.
  • Durch zufälliges Vertauschen der Zwischenergebnisse der Skalarmultiplikation kann ein asymmetrisches Verhalten des Berechnungsalgorithmus für die Berechnung der Zwischenergebnisse maskiert werden, so dass ein Angreifer möglicherweise nicht in der Lage ist, die Referenzzahl 102 (die der geheime Schlüssel des kryptografischen Algorithmus sein kann) durch einfache Leistungsanalyse, eine differentielle Leistungsanalyse erster Ordnung oder einen Template-Angriff zu extrahieren. Daher kann die Berechnung des Ergebnisses 122 der Skalarmultiplikation der Referenzzahl mit dem Referenzpunkt auf der elliptischen Kurve (die die Schlüsseloperation eines Elliptische-Kurve-Kryptografiesystems sein kann) besser gegen einfache Leistungsanalysenangriffe, differentielle Leistungsanalysenangriffe und/oder Template-Angriffe geschützt werden.
  • Der Zufallszahlengenerator 110 kann ein echter Zufallszahlengenerator sein, der die Zufallszahl beispielsweise auf Basis von frei laufenden Oszillatoren, einer Eigenschaft einer Phasenregelschleife (PLL = phase locked loop) oder eines Bus-Datenverkehrs innerhalb der Vorrichtung 100 bestimmt, oder kann ein Pseudozufallszahlengenerator sein, beispielsweise auf Basis eines Linear- oder Nichtlinearrückkopplungs-Schieberegisters.
  • Das Zufallsbit 112 kann gleich 0 oder 1 sein (was elektrisch einem Signal mit einem niedrigen Niveau oder einem Signal mit einem hohen Niveau entsprechen kann).
  • Die Referenzzahl 102 kann eine ganze Zahl in binärer Repräsentation sein. Beispielsweise kann die Referenzzahl 102 der geheime Schlüssel eines kryptografischen Algorithmus sein, der elliptische Kurven verwendet. Bei diesem Beispiel kann die Anzahl von Bits der Referenzzahl 102 (auch Schlüssellänge genannt) ein Sicherheitsniveau des Elliptische-Kurve-Kryptografiealgorithmus sein (mehr Bits schaffen höhere Sicherheit).
  • Der Referenzpunkt 104 auf der elliptischen Kurve und die elliptische Kurve können vordefiniert sein.
  • Beispielsweise kann zum Maskieren der Asymmetrie eines Verdopple-und-Addiere-Algorithmus, der für die Skalarmultiplikation verwendet werden kann, der Berechnungsalgorithmus zwei Zwischenergebnisse berechnen, wodurch die Berechnung der Skalarmultiplikation symmetrischer wird. Die verbleibende Asymmetrie kann durch zufälliges Vertauschen der Zwischenergebnisse gemäß dem beschriebenen Konzept maskiert werden.
  • Hierzu wird die erste Hilfsvariable zum Speichern eines ersten Zwischenergebnisses verwendet, und die zweite Hilfsvariable wird zum Speichern eines zweiten Zwischenergebnisse verwendet. In diesem Zusammenhang können die erste Hilfsvariable und die zweite Hilfsvariable eine Speicheradresse, einen Adresszeiger oder ein Register repräsentieren, wo Zwischenergebnisse (und auch das Endergebnis) gespeichert werden können. Allgemeiner sind die erste Hilfsvariable und die zweite Hilfsvariable Variablen zum Speichern von Zwischenergebnissen (z. B. an vordefinierten Speicheradressen). Andererseits sind das erste Zwischenergebnis und das zweite Zwischenergebnis Werte, die während der Berechnung des Ergebnisses 122 der Skalarmultiplikation gewonnen und durch die erste Hilfsvariable oder die zweite Hilfsvariable gespeichert sind. Diese Werte können vertauscht werden, so dass die erste Hilfsvariable auch das zweite Zwischenergebnis und die zweite Hilfsvariable auch das erste Zwischenergebnis während der Berechnung des Ergebnisses 122 der Skalarmultiplikation speichern kann.
  • Es kann ausreichen, nur eine Koordinate des Punktes auf der elliptischen Kurve zu berechnen, der das Ergebnis der Skalarmultiplikation repräsentiert. Falls erforderlich, kann die zweite Koordinate auf Basis der beiden Zwischenergebnisse und des Referenzpunktes 104 rekonstruiert werden. Mit anderen Worten, das erste Zwischenergebnis kann nach Betrachtung aller Bits der Referenzzahl 102 (nach einer Berechnung eines skalaren Vielfachen der Referenzzahl mit einer Koordinate des Referenzpunktes) eine erste Koordinate des Punktes der elliptischen Kurve repräsentieren, der das Ergebnis der Skalarmultiplikation repräsentiert, und der Prozessor 120 kann eine zweite Koordinate des Punktes auf der elliptischen Kurve, der das Ergebnis der Skalarmultiplikation repräsentiert, auf Basis des ersten Zwischenergebnisses und des zweiten Zwischenergebnisses nach Betrachtung aller Bits der Referenzzahl 102 und auf Basis des Referenzpunktes 104 berechnen.
  • Das Ergebnis 122 der Skalarmultiplikation kann durch nacheinander erfolgendes Betrachten eines Bits der Referenzzahl 120 nach dem anderen berechnet werden (z. B. durch eine Schleife). Mit anderen Worten, der Prozessor 120 kann zum Berechnen des Ergebnisses 122 der Skalarmultiplikation nacheinander in einer Schleife jedes Bit der Referenzzahl 102 betrachten.
  • Hierzu kann der Zufallszahlengenerator 110 für jedes Bit der Referenzzahl 102 ein Zufallsbit 112 erzeugen, und der Prozessor 120 kann für jedes Bit der Referenzzahl 102 (abhängig von den für die vorangehenden Bits der Referenzzahl berechneten Zwischenergebnissen) ein erstes Zwischenergebnis und ein zweites Zwischenergebnis berechnen. Da für jedes Bit der Referenzzahl ein einzelnes Zufallsbit erzeugt wird, kann die Vertauschungsbedingung in einigen Fällen (für einige Bits der Referenzzahl) erfüllt sein und in anderen Fällen (für andere Bits der Referenzzahl) nicht erfüllt sein. Daher kann der Prozessor 120 die durch die Hilfsvariablen gespeicherten Werte während der Berechnung des Ergebnisses 122 der Skalarmultiplikation zufällig vertauschen. Allgemeiner kann der Prozessor 120 einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert vertauschen, bevor ein (neues) erstes Zwischenergebnis und ein (neues) zweites Zwischenergebnis für ein als Nächstes zu betrachtendes Bit der Referenzzahl berechnet wird, wenn die Vertauschungsbedingung für das Zufallsbit 112 erfüllt ist, das für das als Nächstes zu betrachtende Bit der Referenzzahl 102 erzeugt ist.
  • Die Vertauschungsbedingung kann auf unterschiedliche Weise vordefiniert sein, abhängig vor allem von dem verwendeten Berechnungsalgorithmus. Beispielsweise kann die Vertauschungsbedingung direkt von dem Zufallsbit 112 abhängen. Mit anderen Worten, die Vertauschungsbedingung kann erfüllt sein, wenn das Zufallsbit 112 gleich einem vordefinierten Bitwert ist. Dieser vordefinierte Bitwert kann 0 oder 1 sein, abhängig von der tatsächlichen Implementierung (z. B. positive oder negative Logik). Bei diesem Beispiel kann als detailliertere mögliche Implementierung der Prozessor 120 einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert vertauschen, bevor ein (neues) erstes Zwischenergebnis und ein (neues) zweites Zwischenergebnis für ein als Nächstes zu betrachtendes Bit berechnet wird, und kann den durch die erste Hilfsvariable gespeicherten Wert und den durch die zweite Hilfsvariable gespeicherten Wert wieder vertauschen, nachdem das neue erste Zwischenergebnis berechnet wurde (das nach der Berechnung durch die zweite Hilfsvariable gespeichert ist und nach der wiederholten Vertauschung durch die erste Hilfsvariable gespeichert ist) und das neue zweite Zwischenergebnis berechnet wurde (das nach der Berechnung durch die erste Hilfsvariable gespeichert ist und nach Wiederholung der Vertauschung durch die zweite Hilfsvariable gespeichert ist), wenn das Zufallsbit 112 gleich dem vordefinierten Bitwert ist. Mit anderen Worten, die aktuell gespeicherten Zwischenergebnisse können vor der Berechnung neuer Zwischenergebnisse zufällig vertauscht werden und können nach der Berechnung der neuen Zwischenergebnisse zurückvertauscht werden.
  • Alternativ kann die Vertauschungsbedingung beispielsweise für ein Zufallsbit 112 erfüllt sein, das für ein als Nächstes zu betrachtendes Bit der Referenzzahl 102 erzeugt ist, wenn das Zufallsbit 112 ungleich einem Zufallsbit 112 ist, das für ein letztes bereits betrachtetes Bit der Referenzzahl 102 erzeugt ist. Mit anderen Worten, das Vertauschen der durch die erste Hilfsvariable und die zweite Hilfsvariable gespeicherten Werte kann von einem Vergleich zweier Zufallsbits 112 abhängen, die für zwei (direkt nacheinander erfolgende) Bits der Referenzzahl 102 erzeugt werden. Auf diese Weise ist eine Zurückvertauschung, wie im vorigen Beispiel beschrieben, möglicherweise nicht notwendig, da der Vergleich der Zufallsbits 112 berücksichtigen kann, ob der durch die Hilfsvariablen gespeicherte Wert bereits vertauscht ist oder nicht, so dass die Zwischenergebnisse für die weitere Berechnung nicht verwechselt werden, obwohl die Zwischenergebnisse nicht zurückvertauscht werden, nachdem ein Bit der Referenzzahl 102 betrachtet wurde (z. B. durch Ausführen einer Iteration einer Schleife).
  • Das Vertauschen der Werte der Hilfsvariablen kann auf verschiedene Weise implementiert sein. Beispielsweise kann der Prozessor 120 einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert vertauschen, indem der durch die erste Hilfsvariable gespeicherte Wert mit dem durch die zweite Hilfsvariable gespeicherten Wert überschrieben wird und indem der durch die zweite Hilfsvariable gespeicherte Wert mit dem durch die erste Hilfsvariable gespeicherten Wert überschrieben wird. Dies kann beispielsweise durch einen Dreieckstausch über ein Hilfsregister erfolgen, das den durch die erste Hilfsvariable oder die zweite Hilfsvariable gespeicherten Wert vorübergehend speichert.
  • Alternativ kann es ausreichen, die Speicheradressen der Hilfsvariablen auszutauschen. Mit anderen Worten, der Prozessor 120 kann einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert vertauschen, indem eine Speicheradresse oder ein Speicheradresszeiger der ersten Hilfsvariable und eine Speicheradresse oder ein Speicheradresszeiger der zweiten Hilfsvariable vertauscht werden.
  • Wie bereits erwähnt, kann das Ergebnis 122 der Skalarmultiplikation berechnet werden, indem ein Bit der Referenzzahl 102 nach dem anderen betrachtet wird. Abhängig von dem Wert (0 oder 1) jedes Bits der Referenzzahl können zum Berechnen von Zwischenergebnissen verschiedene Berechnungsregeln verwendet werden. Mit anderen Worten, der Prozessor 120 kann ein durch die erste Hilfsvariable zu speicherndes Zwischenergebnis und ein durch die zweite Hilfsvariable zu speicherndes Zwischenergebnis auf Basis einer ersten Berechnungsregel des Berechnungsalgorithmus berechnen, wenn ein (aktuell zu betrachtendes) Bit der Referenzzahl 102 ungleich dem Zufallsbit 112 ist (das für das aktuell betrachtete Bit der Referenzzahl erzeugt ist), oder auf Basis einer zweiten Berechnungsregel des Berechnungsalgorithmus berechnen, wenn das (aktuell zu betrachtende) Bit der Referenzzahl 102 gleich dem Zufallsbit 112 ist (das für das aktuell betrachtete Bit der Referenzzahl erzeugt ist).
  • Bei einer weiteren Implementierung kann der Prozessor 120 die erste oder zweite Berechnungsregel für die Berechnung eines durch die erste Hilfsvariable zu speichernden Zwischenergebnisses und eines durch die zweite Hilfsvariable zu speichernden Zwischenergebnisses auf Basis des Wertes des Zufallsbits 112 auswählen (das für das aktuell betrachtete Bit der Referenzzahl 102 erzeugt ist), oder auf Basis einer Funktion des Zufallsbits 112, des aktuell betrachteten Bits der Referenzzahl 102 und möglicherweise von Zufallsbits und/oder von Bits der Referenzzahl aus früheren Iterationen der Schleife auswählen.
  • Beispielsweise kann der Berechnungsalgorithmus ein Montgomery-Leiter-Algorithmus sein. Bei diesem Beispiel kann der Prozessor 120 das durch die erste Hilfsvariable zu speichernde Zwischenergebnis gemäß der ersten Berechnungsregel durch Addieren eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses und eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses berechnen und berechnet das durch die zweite Hilfsvariable zu speichernde Zwischenergebnis gemäß der ersten Berechnungsregel durch Verdoppeln eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses. Sonst kann der Prozessor 120 das durch die erste Hilfsvariable zu speichernde Zwischenergebnis gemäß der zweiten Berechnungsregel durch Verdoppeln eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses berechnen und berechnet das durch die zweite Hilfsvariable zu speichernde Zwischenergebnis gemäß der zweiten Berechnungsregel durch Addieren eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses und eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses.
  • Bei einigen Ausführungsbeispielen können das erste Zwischenergebnis und das zweite Zwischenergebnis eine konstante Differenz mit Bezug auf die Addition von Punkten auf der elliptischen Kurve aufweisen. Das erste Zwischenergebnis kann ein ganzzahliges Vielfaches n·P des Referenzpunktes 104 oder eine Koordinate eines ganzzahligen Vielfachen n·P des Referenzpunktes 104 repräsentieren. Das zweite Zwischenergebnis kann ein ganzzahliges Vielfaches (n + 1)·P des Referenzpunktes 104 oder eine Koordinate eines ganzzahligen Vielfachen (n + 1)·P des Referenzpunktes 104 repräsentieren.
  • Im Folgenden werden Ausführungsbeispiele detaillierter beschrieben. Diese Beispiele zeigen verschiedene Aspekte zwar gemeinsam implementiert, jedoch können diese Aspekte auch unabhängig voneinander implementiert sein.
  • Das vorgeschlagene Konzept beschreibt eine Technik zum Erlangen guter Maßnahmen zum Schutz gegen SPA und zum Ermöglichen eines sehr effizienten Verfahrens beispielsweise zum Schützen des Skalars (der Referenzzahl) gegen darauf basierende DPA und Template-Angriffe.
  • Ein Beispiel für eine tatsächliche Implementierung zeigt der folgende Algorithmus (Montgomery mit SPA- und DPA-Gegenmaßnahmen zum Schutz des Skalars) zur gleichzeitigen Gewinnung eines Schutzes vor SPA einer Montgomery-Leiter und gegen DPA auf die (durch die Hilfsvariablen gespeicherten) Zwischenergebnisse R und S sowie gegen DPA und Template-Angriffe auf die Schlüsselbits (Bits der Referenzzahl):
    Figure 00120001
    Figure 00130001
  • Bei diesem Beispiel ist R eine erste Hilfsvariable, S ist eine zweite Hilfsvariable, O ist das neutrale Element der elliptischen Kurve, P ist der Referenzpunkt auf der elliptischen Kurve, k ist die Referenzzahl, i ist die Zählvariable, n ist eine Anzahl von Bits der Referenzzahl, z ist das Zufallsbit, und bi ist ein Bit der Referenzzahl.
  • In dem gezeigten Algorithmus wird die erste Hilfsvariable R mit dem neutralen Element O der elliptischen Kurve oder mit einer Koordinate des neutralen Elements O der elliptischen Kurve initialisiert, und die zweite Hilfsvariable S wird mit dem Referenzpunkt auf der elliptischen Kurve P oder mit einer Koordinate des Referenzpunktes auf der elliptischen Kurve P initialisiert. Sodann können die erste Hilfsvariable R und die zweite Hilfsvariable S optional in eine randomisierte projektive Koordinatenrepräsentation umgewandelt werden. Danach werden für jedes Bit bi der Referenzzahl die Programmanweisungen einer Schleife ausgeführt. In dieser Schleife wird ein Zufallsbit z erzeugt, und abhängig von dem Wert des Zufallsbits (Vertauschungsbedingung) werden die durch die erste Hilfsvariable R und die zweite Hilfsvariable S gespeicherten Werte vertauscht (z. B. wenn das Zufallsbit gleich 1 ist). Sodann wird abhängig von einem Vergleich des aktuell betrachteten Bits bi der Referenzzahl und des Wertes des Zufallsbits eine erste Berechnungsregel oder eine zweite Berechnungsregel zum Berechnen neuer Zwischenergebnisse verwendet. Danach werden die durch die erste Hilfsvariable R und die zweite Hilfsvariable S gespeicherten Werte zurückvertauscht, wenn sie zuvor vertauscht wurden. Nach einmaligen Durchlaufen der Programmanweisungen der Schleife für jedes Bit bi der Referenzzahl kann der Punkt auf der elliptischen Kurve k·P, der das Ergebnis der Skalarmultiplikation repräsentiert, auf Basis der durch die erste Hilfsvariable R und die zweite Hilfsvariable S gespeicherten Zwischenergebnisse und auf Basis des Referenzpunktes auf der elliptischen Kurve P rekonstruiert werden.
  • Dieses Beispiel verwendet die Montgomery-Leiter und datenabhängige Austauschoperationen, die aufgrund der inhärenten Symmetrie einer Montgomery-Leiter möglich werden. Die Korrektheit des gezeigten Algorithmus lässt sich leicht verifizieren, wenn die beiden möglichen Fälle z = 0 oder z = 1 für das Zufallsbit z separat betrachtet werden. Im Fall z = 1 wird der tatsächlich verwendete Wert des Schlüsselbits bi (Bit der Referenzzahl) durch die XOR-Operation mit z negiert. Da in diesem Fall jedoch gleichzeitig auch die Zwischenergebnisse, (gespeichert durch die erste Hilfsvariable) R und (gespeichert durch die zweite Hilfsvariable) S, vor und nach den Programmanweisungen der Schleife des Algorithmus ausgetauscht werden, berechnet der Algorithmus die korrekten Ergebnisse der Skalarmultiplikation.
  • Da in jedem Pfad der Schleife ein mit gleicher Verteilung gewähltes, unabhängiges Bit z verwendet wird, ist die Implementierung der Dann-(then) und Sonst-(else)-Zweige der Austauschoperationen in den Schritten 5, 6, 9, 10 sowie der Zweige der Montgomery-Leiter in den Schritten 7, 8 nicht mehr mit dem tatsächlichen Wert des Bits bi des geheimen Skalars k korreliert. Die Werte, die entscheiden, welche Zweige der Wenn-dannsonst-Instruktion durchlaufen werden, sind bei jeder Ausführung des Algorithmus zufällig. Die analoge Folgerung gilt für die so entstehenden Leistungsprofile. Somit sind diese Berechnungsschritte der Algorithmen gegen einen DPA erster Ordnung geschützt.
  • Ein entscheidender Schritt der Technologien des beschriebenen Konzepts ist möglicherweise die Verwendung der inhärenten Symmetrie des Montgomery-Leiter-Algorithmus für eine Skalarmultiplikation von Punkten auf elliptischen Kurven zum Eliminieren der Korrelation zwischen Bits des Skalars (der normalerweise den geheimen Schlüssel eines kryptografischen Protokolls repräsentiert) und den Ausführungszweigen des Algorithmus (Programms). Auf diese Weise kann ein effizientes und sicheres Verfahren zur Skalarverdeckung (scalar blinding) implementiert werden, das die Bits des Skalars gegen DPA schützen kann und somit die Lernphase während eines Template-Angriffs wesentlich erschwert oder sogar verhindert.
  • Die beschriebenen Vorgehensweisen bieten beispielsweise mehrere Vorteile. Gegenüber klassischen Ansätzen erfordert das beschriebene Konzept zum Implementieren einer Skalarverdeckung möglicherweise keine Arithmetik, um in der Lage zu sein, Berechnungen über die ganzen Zahlen modulo der Ordnung o einer Untergruppe, die durch den Referenzpunkt erzeugt ist, auszuführen. Beispielsweise braucht insbesondere bei kostengünstigen Anwendungen auf Basis von Verfahren mit elliptischen Kurven über endlichen Feldern der Charakteristik 2 keine Arithmetik über die ganzen Zahlen implementiert zu sein. Somit kann die Arithmetik in solchen Anwendungsfällen sehr platzeffizient in Hardware realisiert sein. Ferner braucht kein Speicherplatz bereitgestellt zu werden, um die Ordnung o einer Untergruppe der Punktgruppe zu speichern. Es braucht kein Mechanismus bereitgestellt zu werden, um den Wert o gegen Manipulationen durch einen Angreifer zu schützen oder um zumindest in der Lage zu sein, solche Veränderungen zu erfassen. Zusätzlich erfolgt möglicherweise keine Erhöhung der Größe des Skalars k wie bei der Umwandlung zu k' = k + r·o durch die Multiplikation r·o während der Verdeckungsoperation mit einer zufälligen ganzen Zahl r. Insbesondere brauchen die Register zum Ausführen der Skalarmultiplikation möglicherweise nicht verlängert zu werden. Somit ist die Leistungsfähigkeit des erfindungsgemäßen Verfahrens möglicherweise besser. Ferner kann der Schritt für eine Umwandlung des Skalars selbst wiederum Ziel eines Seitenkanalangriffs anderer Art sein. Bei der klassischen Technologie zur Skalarverdeckung unter Verwendung der Ordnung o einer Untergruppe ist dieser Schritt eine relativ zeitaufwändige Berechnung, bei der viele Zwischenergebnisse auftreten. Jedes erzeugte Bit kann im Prinzip wieder als Ziel eines anderen Seitenkanalangriffs auf den Skalar dienen, Somit ist bei der Implementierung dieser Umwandlung sorgfältig zu beachten, dass beim Schutz der Implementierung keine neue Sicherheitslücke geöffnet wird. Bei dem beschriebenen Konzept besteht der Umwandlungsschritt möglicherweise nur aus der Berechnung einer XOR-Operation in Schritt 7 des obigen Algorithmus. Diese Berechnung ist sehr einfach und verwendet möglicherweise nur die geringstmögliche Datenmenge. Ferner treten möglicherweise keine weiteren Zwischenergebnisse auf. Somit dürfte ein Schutz dieses Umwandlungsschritts bei der praktischen Implementierung des beschriebenen Konzepts einfacher sein als bei klassischen Ansätzen.
  • Im Folgenden wird eine Variante des obigen Algorithmus zum Implementieren des vorgeschlagenen Konzepts beschrieben, die einen Schritt des Austauschens (Vertauschens) pro Iteration der Hauptschleife einsparen kann und somit etwas effizienter ist als der bereits beschriebene Algorithmus:
    Figure 00150001
    Figure 00160001
  • Bei diesem Beispiel ist R eine erste Hilfsvariable, S ist eine zweite Hilfsvariable, O ist das neutrale Element der elliptischen Kurve, P ist der Referenzpunkt auf der elliptischen Kurve, k ist die Referenzzahl, i ist die Zählvariable, n ist eine Anzahl von Bits der Referenzzahl, bi ist ein Bit der Referenzzahl, z1 ist ein Zufallsbit, das für die (oder während der) Betrachtung des (als Nächstes zu betrachtenden) Bits bi der Referenzzahl erzeugt ist, und z0 ist ein Zufallsbit, das für die (oder während der) Betrachtung eines letzten bereits betrachteten Bits bi-1 der Referenzzahl erzeugt ist.
  • In dem gezeigten Algorithmus wird die erste Hilfsvariable R mit dem neutralen Element O der elliptischen Kurve oder mit einer Koordinate des neutralen Elements O der elliptischen Kurve initialisiert, und die zweite Hilfsvariable S wird mit dem Referenzpunkt auf der elliptischen Kurve P oder mit einer Koordinate des Referenzpunktes auf der elliptischen Kurve P initialisiert. Sodann können die erste Hilfsvariable R und die zweite Hilfsvariable S optional in eine randomisierte projektive Koordinatenrepräsentation umgewandelt werden. Danach werden für jedes Bit bi der Referenzzahl die Programmanweisungen einer Schleife ausgeführt. In dieser Schleife wird ein Zufallsbit z1 erzeugt, und abhängig von einem Vergleich des Wertes des für das Bit bi der Referenzzahl erzeugten Zufallsbits z1 und des Wertes des für ein letztes bereits betrachtetes Bit bi-1 der Referenzzahl erzeugten Zufallsbits z0 werden die durch die erste Hilfsvariable R und die zweite Hilfsvariable S gespeicherten Werte vertauscht (z. B. wenn die Werte der Zufallsbits nicht gleich sind). Sodann wird abhängig von einem Vergleich des aktuell betrachteten Bits bi der Referenzzahl und des Wertes des Zufallsbits z1 eine erste Berechnungsregel oder eine zweite Berechnungsregel zum Berechnen neuer Zwischenergebnisse verwendet. Danach wird der Wert des Zufallsbits z0 auf den Wert des Zufallsbits z1 gesetzt. Nach einmaligen Durchlaufen der Programmanweisungen der Schleife für jedes Bit bi der Referenzzahl und einer letzten Vertauschung in Abhängigkeit von dem Wert von z0 kann der Punkt auf der elliptischen Kurve k·P, der das Ergebnis der Skalarmultiplikation repräsentiert, auf Basis der durch die erste Hilfsvariable R und die zweite Hilfsvariable S gespeicherten Zwischenergebnisse und auf Basis des Referenzpunktes auf der elliptischen Kurve P rekonstruiert werden.
  • Dies kann beispielsweise einen Montgomery-Leiter-Algorithmus mit SPA- und DPA-Gegenmaßnahmen zum Schutz des Skalars repräsentieren.
  • Der Unterschied zwischen den beiden in den Ausführungsbeispielen beschriebenen Algorithmen ist, dass der jeweils direkt nachfolgende Austauschschritt (Vertauschen der durch die Hilfsvariablen gespeicherten Werte) zwischen zwei Iterationen einer Hauptschleife nun zu einem einzigen Operationsschritt zusammengefasst sind. Somit lässt sich analog zu der zuvor beschriebenen Vorgehensweise die Korrektheit des Algorithmus folgern. Abgesehen davon, dass bei jeder Iteration der Hauptschleife ein neues, unabhängig erzeugtes und gleichmäßig verteiltes Zufallsbit z1 verwendet wird, behalten auch die Überlegungen mit Bezug auf die Wenn- und Sonst-Zweige der jeweiligen Bits des Skalars ihre Gültigkeit. Somit bietet die Variante des beschriebenen Konzepts in diesem Algorithmus auch Schutz gegen DPA-Angriffe erster Ordnung auf die Bits des Skalars.
  • Im Folgenden wird eine weitere Variante des obigen Algorithmus zum Implementieren des vorgeschlagenen Konzepts beschrieben:
    Figure 00170001
  • Bei diesem Beispiel ist R eine erste Hilfsvariable, S ist eine zweite Hilfsvariable, O ist das neutrale Element der elliptischen Kurve, P ist der Referenzpunkt auf der elliptischen Kurve, k ist die Referenzzahl, i ist die Zählvariable, n ist eine Anzahl von Bits der Referenzzahl, z ist das Zufallsbit, und bi ist ein Bit der Referenzzahl.
  • In dem gezeigten Algorithmus wird die erste Hilfsvariable R mit dem neutralen Element O der elliptischen Kurve oder mit einer Koordinate des neutralen Elements O der elliptischen Kurve initialisiert, und die zweite Hilfsvariable S wird mit dem Referenzpunkt auf der elliptischen Kurve P oder mit einer Koordinate des Referenzpunktes auf der elliptischen Kurve P initialisiert. Sodann können die erste Hilfsvariable R und die zweite Hilfsvariable S optional in eine randomisierte projektive Koordinatenrepräsentation umgewandelt werden. Danach werden für jedes Bit bi der Referenzzahl die Programmanweisungen einer Schleife ausgeführt. In dieser Schleife wird ein Zufallsbit z erzeugt, und abhängig von einem Vergleich des aktuell betrachteten Bits bi der Referenzzahl und des Wertes des Zufallsbits (Vertauschungsbedingung) werden die durch die erste Hilfsvariable R und die zweite Hilfsvariable S gespeicherten Werte vertauscht (z. B. wenn das Zufallsbit z nicht gleich dem aktuell betrachteten Bit bi der Referenzzahl ist). Sodann wird abhängig von dem Wert des Zufallsbits eine erste Berechnungsregel oder eine zweite Berechnungsregel zum Berechnen neuer Zwischenergebnisse verwendet. Danach werden die durch die erste Hilfsvariable R und die zweite Hilfsvariable S gespeicherten Werte zurückvertauscht, wenn sie zuvor vertauscht wurden. Nach einmaligen Durchlaufen der Programmanweisungen der Schleife für jedes Bit bi der Referenzzahl kann der Punkt auf der elliptischen Kurve k·P, der das Ergebnis der Skalarmultiplikation repräsentiert, auf Basis der durch die erste Hilfsvariable R und die zweite Hilfsvariable S gespeicherten Zwischenergebnisse und auf Basis des Referenzpunktes auf der elliptischen Kurve P rekonstruiert werden.
  • Im Folgenden wird eine weitere Variante des obigen Algorithmus zum Implementieren des vorgeschlagenen Konzepts beschrieben, die einen Schritt des Austauschens (Vertauschens) pro Iteration der Hauptschleife einsparen kann und somit etwas effizienter ist als der bereits beschriebene Algorithmus:
    Figure 00180001
    Figure 00190001
  • Bei diesem Beispiel ist R eine erste Hilfsvariable, S ist eine zweite Hilfsvariable, O ist das neutrale Element der elliptischen Kurve, P ist der Referenzpunkt auf der elliptischen Kurve, k ist die Referenzzahl, i ist die Zählvariable, n ist eine Anzahl von Bits der Referenzzahl, bi ist ein Bit der Referenzzahl, w ist ein Zufallsbit, und z0 und z1 sind Hilfsvariablen.
  • In dem gezeigten Algorithmus wird die erste Hilfsvariable R mit dem neutralen Element O der elliptischen Kurve oder mit einer Koordinate des neutralen Elements O der elliptischen Kurve initialisiert, und die zweite Hilfsvariable S wird mit dem Referenzpunkt auf der elliptischen Kurve P oder mit einer Koordinate des Referenzpunktes auf der elliptischen Kurve P initialisiert. Sodann können die erste Hilfsvariable R und die zweite Hilfsvariable S optional in eine randomisierte projektive Koordinatenrepräsentation umgewandelt werden. Danach werden für jedes Bit bi der Referenzzahl die Programmanweisungen einer Schleife ausgeführt. In dieser Schleife wird ein Zufallsbit w erzeugt, und der Wert z1 wird als das XOR des Zufallsbits w und des aktuell betrachteten Bits bi der Referenzzahl errechnet. Abhängig von einem Vergleich des Wertes z1 und des Wertes z0, der für ein letztes bereits betrachtetes Bit bi-1 der Referenzzahl erzeugt ist, werden die durch die erste Hilfsvariable R und die zweite Hilfsvariable S gespeicherten Werte vertauscht (z. B. wenn der Wert der Hilfsvariable z1 nicht gleich dem Wert der Hilfsvariable z0 ist). Sodann wird abhängig von dem Wert des für das aktuell betrachtete Bit bi der Referenzzahl erzeugten Zufallsbits w eine erste Berechnungsregel oder eine zweite Berechnungsregel zum Berechnen neuer Zwischenergebnisse verwendet. Danach wird der Wert des Bits z0 auf den Wert des Bits z1 gesetzt. Nach einmaligen Durchlaufen der Programmanweisungen der Schleife für jedes Bit bi der Referenzzahl und einer letzten Vertauschung in Abhängigkeit von dem Wert von z0 kann der Punkt auf der elliptischen Kurve k·P, der das Ergebnis der Skalarmultiplikation repräsentiert, auf Basis der durch die erste Hilfsvariable R und die zweite Hilfsvariable S gespeicherten Zwischenergebnisse und auf Basis des Referenzpunktes auf der elliptischen Kurve P rekonstruiert werden.
  • Dies kann beispielsweise einen Montgomery-Leiter-Algorithmus mit SPA- und DPA-Gegenmaßnahmen zum Schutz des Skalars repräsentieren.
  • Das vorgeschlagene Konzept beschreibt ein einfaches und wirksames Verfahren für eine Abwehr beispielsweise bestimmter DPA und Template-Angriffe während einer Skalarmultiplikation.
  • Bei einigen Ausführungsbeispielen wird die y-Koordinate (des Referenzpunktes und der Zwischenergebnisse) bei der Berechnung (des Ergebnisses der Skalarmultiplikation) weggelassen, so dass eine Anzahl notwendiger Register und Speichermengen verringert werden können. Somit ist die Montgomery-Leiter beispielsweise besonders relevant für die Verwendung in eingebetteten Systemen (z. B. Smartcards), da die Ressourcen hier gewöhnlich sehr begrenzt sind.
  • Durch Verwendung des beschriebenen Konzepts kann eine SPA-Gegenmaßnahme realisiert werden, die eine Implementierung der Wenn-dann-sonst-Instruktion bereitstellt, die durch Seitenkanalmessungen nicht erkennbar ist. Eine einfache Technologie kann die Verwendung einer Symmetrie bei der Ausführung der Montgomery-Leiter sein. Es kann möglich sein, die beiden Ausführungszweige der Montgomery-Leiter in den Dann- und Sonst-Zweigen zu vereinheitlichen, während die beiden Zwischenergebnisse, (gespeichert durch) R und S, abhängig von Zufallsbits und/oder von Schlüsselbits (Bits der Referenzzahl) am Anfang und/oder Ende der Für-(for)-Schleife ausgetauscht oder nicht ausgetauscht werden. Außerdem kann es möglich sein, die beiden Ausführungszweige der Montgomery-Leiter in den Dann- und Sonst-Zweigen zu vereinheitlichen, während neue Zwischenergebnisse, (gespeichert durch) R und S, abhängig von Zufallsbits und/oder von Schlüsselbits (Bits der Referenzzahl) berechnet werden.
  • Durch Verwendung des beschriebenen Konzepts kann ein Verfahren realisiert werden, das eine Skalarverdeckung und Gegenmaßnahme gegen DPA von Bits des Skalars bietet.
  • Zur Abwehr der DPA kann eine randomisierte projektive Repräsentation der Punkte der elliptischen Kurve verwendet werden. Durch eine solche Maßnahme ist es möglich, eine DPA erster Ordnung auf Bits der Zwischenergebnisse in (der ersten Hilfsvariable und der zweiten Hilfsvariable) R und S zu verhindern, die während der Skalarmultiplikation berechnet werden.
  • Ferner kann das beschriebene Konzept eine Möglichkeit zur Abwehr von Template-Angriffen bereitstellen. In der Lernphase eines Template-Angriffs identifiziert der Angreifer die Stellen in dem Leistungsprofil, wo die Schlüsselbits verarbeitet werden. In der Angriffsphase ist es dann möglich, mit Hilfe der identifizierten Stellen aus einer oder mehreren Messungen die tatsächlichen Schlüsselbits zu extrahieren. Bei einer Variante dieser Template-Angriffe können die verschiedenen Durchgänge der Skalarmultiplikation miteinander verglichen werden. Durch diesen sogenannten Big-Mac-Angriff werden die Ergebnisse der Lernphase zusätzlich unabhängig von einer individuellen Implementierung, die angegriffen wird. Unter Annahme nur weniger verbleibender Möglichkeiten für den unbekannten Teil des Schlüsselraums, die in einer erschöpfenden Suche schnell geprüft werden können, ist der Angriff wesentlich robuster gegen eine Anpassung des Templates von einer Implementierung zur anderen. Durch Verwendung des beschriebenen Konzepts können diese Template-Angriffe verhindert werden.
  • Dies hat gegenüber üblichen Skalarverdeckungstechniken auch den Vorteil, dass die Verarbeitungszeit und der erforderliche Speicher verringert werden (da der Skalar während der Randomisierung möglicherweise nicht vergrößert wird). Ferner sind gemäß dem beschriebenen Konzept bei einigen Ausführungsbeispielen nur Berechnungsschritte in endlichen Feldern GF(2n) notwendig, so dass der Aufwand hinsichtlich Schaltungstechnologie bei Hardware-Implementierungen niedrig gehalten werden kann.
  • Einige Ausführungsbeispiele beziehen sich auf ein Verfahren und eine Vorrichtung für eine DPA-sichere Berechnung der Montgomery-Leiter.
  • Einige Ausführungsbeispiele gemäß der Erfindung beziehen sich auf eine Vorrichtung zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt, die eine Einrichtung zum Erzeugen einer Zufallszahl (z. B. einen Zufallszahlengenerator) und eine Einrichtung zum Berechnen des Ergebnisses der Skalarmultiplikation (z. B. einen Prozessor) aufweist. Die Einrichtung zum Erzeugen einer Zufallszahl erzeugt ein Zufallsbit. Die Einrichtung zum Berechnen des Ergebnisses der Skalarmultiplikation berechnet das Ergebnis der Skalarmultiplikation auf Basis eines Berechnungsalgorithmus unter Verwendung einer ersten Hilfsvariable, die das erste Zwischenergebnis speichert, das ein ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines ganzzahligen Vielfachen eines Referenzpunktes repräsentiert, und einer zweiten Hilfsvariable, die ein zweites Zwischenergebnis speichert, das ein weiteres ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines weiteren ganzzahligen Vielfachen des Referenzpunktes repräsentiert. Ferner vertauscht die Einrichtung zum Berechnen des Ergebnisses der Skalarmultiplikation einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert während der Berechnung des Ergebnisses der Skalarmultiplikation, wenn die von dem erzeugten Zufallsbit und möglicherweise weiteren Informationen abhängige Vertauschungsbedingung erfüllt ist.
  • Ferner kann die Vorrichtung zusätzliche, optionale, oben genannte Merkmale realisieren.
  • 2 zeigt ein Blockdiagramm eines kryptografischen Systems 200 mit einer Vorrichtung zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve gemäß dem beschriebenen Konzept als ein Ausführungsbeispiel. Das kryptografische System 200 weist einen Zufallszahlengenerator 110 auf, der mit einem Prozessor 120, wie oben beschrieben, verbunden ist. Ferner weist das kryptografische System 200 einen mit dem Prozessor 120 verbundenen Speicher 220 und eine ebenfalls mit dem Prozessor 120 verbundene Eingabe-Ausgabe-Schnittstelle 230 auf. Der Speicher 220 kann beispielsweise die Referenzzahl, den Referenzpunkt auf der elliptischen Kurve und/oder Parameter der elliptischen Kurve speichern. Ferner kann der Speicher 220 Speicherplatz aufweisen, der der ersten Hilfsvariable und der zweiten Hilfsvariable zum Speichern von Zwischenergebnissen zugewiesen ist. Die Eingabe-Ausgabe-Schnittstelle 230 kann Ausgabedaten 232 nach außen bereitstellen und/oder Eingangsdaten 232 von außen für den Prozessor 120 bereitstellen und kann eine drahtlose oder eine drahtgestützte/drahtgebundene Schnittstelle sein.
  • Der Zufallszahlengenerator 110 kann ein echter Zufallszahlengenerator sein, der die Zufallszahl beispielsweise auf Basis von frei laufenden Oszillatoren, einer Eigenschaft einer Phasenregelschleife (PLL) oder einem Bus-Datenverkehr innerhalb des kryptografischen Systems 200 bestimmt, oder kann ein Pseudozufallszahlengenerator sein, beispielsweise auf Basis eines Linear- oder Nichtlinearrückkopplungs-Schieberegisters.
  • Das kryptografische System 200 kann beispielsweise in einer Smartcard 210, einer Chipkarte oder einem Computer implementiert sein.
  • 3 zeigt ein Flussdiagramm eines Verfahrens 300 zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve gemäß einem Ausführungsbeispiel. Das Verfahren 300 weist die Schritte auf, ein Zufallsbit zu erzeugen 310 und das Ergebnis der Skalarmultiplikation auf Basis eines Berechnungsalgorithmus unter Verwendung einer ersten Hilfsvariable, die ein erstes Zwischenergebnis speichert, das ein ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines ganzzahligen Vielfachen des Referenzpunktes repräsentiert, und einer zweiten Hilfsvariable, die ein zweites Zwischenergebnis speichert, das ein weiteres ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines weiteren ganzzahligen Vielfachen des Referenzpunktes repräsentiert, zu berechnen 320. Ferner weist das Verfahren 300 den Schritt auf, einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert während der Berechnung des Ergebnisses der Skalarmultiplikation zu vertauschen 330, wenn eine von dem erzeugten Zufallsbit und möglicherweise weiteren Informationen abhängige Vertauschungsbedingung erfüllt ist.
  • Zusätzlich kann das Verfahren 300 weitere optionale Schritte aufweisen, die einen oder mehrere oben genannte Aspekte des vorgeschlagenen Konzepts repräsentieren.
  • Allgemein können ein bereits beschriebener Zufallszahlengenerator, ein Prozessor, ein Speicher, eine Eingabe-Ausgabe-Schnittstelle, eine Einrichtung zum Erzeugen einer Zufallszahl und/oder eine Einrichtung zum Berechnen des Ergebnisses einer Skalarmultiplikation eine unabhängige Hardware-Einheit oder ein Teil eines Computers oder eines Mikrocontrollers sowie ein Computerprogramm oder ein Software-Produkt zur Ausführung auf einem Computer oder einem Mikrocontroller sein.
  • Einige Unteransprüche beziehen sich zwar auf nur einen anderen Anspruch, jedoch kann auch eine Kombination mit einem oder mehreren Unteransprüchen oder anderen unabhängigen Ansprüchen möglich sein. Ferner sind auch verschiedene unabhängige Ansprüche kombinierbar.
  • Einige Aspekte des beschriebenen Konzepts wurden zwar im Zusammenhang mit einer Vorrichtung beschrieben, jedoch ist deutlich, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens repräsentieren, wo ein Block oder eine Vorrichtung einem Verfahrensschritt oder einem Merkmal eines Verfahrensschritts entspricht. Analog dazu repräsentieren Aspekte, die im Zusammenhang mit einem Verfahrensschritt beschrieben sind, auch eine Beschreibung eines entsprechenden Blocks oder Elements oder Merkmals einer entsprechenden Vorrichtung.
  • Abhängig von bestimmten Implementierungsanforderungen können Ausführungsbeispiele der Erfindung in Hardware oder in Software implementiert sein. Die Implementierung kann unter Verwendung eines digitalen Speichermediums, beispielsweise einer Diskette, einer DVD, einer Blue-Ray, einer CD, eines ROM (read-only memory = Nur-Lese-Speicher), eines PROM (programmable read-only memory = programmierbarer Nur-Lese-Speicher), eines EPROM (erasable programmable read-only memory = löschbarer programmierbarer Nur-Lese-Speicher), eines EEPROM (electronically erasable programmable read-only memory = elektronisch löschbarer programmierbarer Nur-Lese-Speicher) oder eines Flash-Speichers erfolgen, auf dem elektronisch lesbare Steuersignale gespeichert sind, die mit einem programmierbaren Computersystem so zusammenwirken (oder so zusammenzuwirken in der Lage sind), dass das jeweilige Verfahren durchgeführt wird. Daher kann das digitale Speichermedium computerlesbar sein.
  • Einige Ausführungsbeispiele gemäß der Erfindung weisen einen Datenträger mit elektronisch lesbaren Steuersignalen auf, die in der Lage sind, mit einem programmierbaren Computersystem so zusammenzuwirken, dass eines der hier beschriebenen Verfahren durchgeführt wird.
  • Allgemein können Ausführungsbeispiele der vorliegenden Erfindung als ein Computerprogrammprodukt mit einem Programmcode implementiert sein, wobei der Programmcode zum Ausführen eines der Verfahren funktionsfähig ist, wenn das Computerprogrammprodukt auf einem Computer läuft. Der Programmcode kann beispielsweise auf einem maschinenlesbaren Träger gespeichert sein.
  • Andere Ausführungsbeispiele weisen das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren auf einem maschinenlesbaren Träger gespeichert auf.
  • Mit anderen Worten ist daher ein Ausführungsbeispiel des erfindungsgemäßen Verfahrens ein Computerprogramm mit einem Programmcode zum Ausführen eines der hier beschriebenen Verfahren, wenn das Computerprogramm auf einem Computer läuft.
  • Ein weiteres Ausführungsbeispiel des erfindungsgemäßen Verfahrens ist daher ein Datenträger (oder ein digitales Speichermedium oder ein computerlesbares Medium), das darauf aufgezeichnet das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren aufweist.
  • Ein weiteres Ausführungsbeispiel des erfindungsgemäßen Verfahrens ist daher ein Datenstrom oder eine Sequenz von Signalen, der bzw. die das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren repräsentiert. Der Datenstrom oder die Sequenz von Signalen kann beispielsweise dazu konfiguriert sein, über eine Datenkommunikationsverbindung, beispielsweise über das Internet, übertragen zu werden.
  • Ein weiteres Ausführungsbeispiel weist eine Verarbeitungseinrichtung, beispielsweise einen Computer oder eine programmierbare Logikvorrichtung auf, der bzw. die dazu konfiguriert ist, eines der hier beschriebenen Verfahren durchzuführen.
  • Ein weiteres Ausführungsbeispiel weist einen Computer auf, auf dem das Computerprogramm zum Durchführen eines der hier beschriebenen Verfahren installiert ist.
  • Bei einigen Ausführungsbeispielen kann eine programmierbare Logikvorrichtung (beispielsweise ein feldprogrammierbares Gatterarray) dazu verwendet werden, einige oder alle Funktionalitäten der hier beschriebenen Verfahren auszuführen. Bei einigen Ausführungsbeispielen kann ein feldprogrammierbares Gatterarray mit einem Mikroprozessor zusammenwirken, um eines der hier beschriebenen Verfahren auszuführen. Allgemein werden die Verfahren bevorzugt durch jedwede Hardware-Vorrichtung durchgeführt.
  • Die oben beschriebenen Ausführungsbeispiele sind lediglich illustrativ für die Prinzipien der vorliegenden Erfindung. Es wird darauf hingewiesen, dass Modifikationen und Variationen der hier beschriebenen Anordnungen und Details für andere Fachleute erkennbar sind. Es ist daher eine Begrenzung lediglich durch den Umfang der nachstehenden Patentansprüche und nicht durch die spezifischen Details beabsichtigt, die hier als Beschreibung und Erläuterung der Ausführungsbeispiele vorgelegt wurden.

Claims (30)

  1. Vorrichtung (100) zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve, wobei die Vorrichtung folgende Merkmale aufweist: einen Zufallszahlengenerator (110), der dazu konfiguriert ist, ein Zufallsbit zu erzeugen; und einen Prozessor (120), der dazu konfiguriert ist, das Ergebnis der Skalarmultiplikation auf Basis eines Berechnungsalgorithmus unter Verwendung einer ersten Hilfsvariable, die ein erstes Zwischenergebnis speichert, das ein ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines ganzzahligen Vielfachen des Referenzpunktes repräsentiert, und einer zweiten Hilfsvariable, die ein zweites Zwischenergebnis speichert, das ein weiteres ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines weiteren ganzzahligen Vielfachen des Referenzpunktes repräsentiert, zu berechnen, wobei der Prozessor (120) dazu konfiguriert ist, einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert während der Berechnung des Ergebnisses der Skalarmultiplikation zu vertauschen, wenn eine von dem erzeugten Zufallsbit abhängige Vertauschungsbedingung erfüllt ist.
  2. Vorrichtung (100) gemäß Anspruch 1, bei der der Prozessor (120) dazu konfiguriert ist, jedes Bit der Referenzzahl zum Berechnen des Ergebnisses der Skalarmultiplikation nacheinander in einer Schleife zu betrachten.
  3. Vorrichtung (100) gemäß Anspruch 2, bei der die Vertauschungsbedingung von dem erzeugten Zufallsbit für das als Nächstes zu betrachtende Bit der Referenzzahl abhängt.
  4. Vorrichtung (100) gemäß Anspruch 2 oder 3, bei der der Zufallszahlengenerator (110) dazu konfiguriert ist, für jedes Bit der Referenzzahl ein Zufallsbit zu erzeugen, wobei die Vertauschungsbedingung von dem erzeugten Zufallsbit für das als Nächstes zu betrachtende Bit der Referenzzahl und von dem als Nächstes zu betrachtenden Bit der Referenzzahl abhängt.
  5. Vorrichtung (100) gemäß einem der Ansprüche 2 bis 4, bei der der Zufallszahlengenerator (110) dazu konfiguriert ist, für jedes Bit der Referenzzahl ein Zufallsbit zu erzeugen, wobei die Vertauschungsbedingung von dem erzeugten Zufallsbit für das als Nächstes zu betrachtende Bit der Referenzzahl und von dem als Nächstes zu betrachtenden Bit der Referenzzahl und von zumindest einem der Zufallsbits und/oder Bits der Referenzzahl, die in vorangegangenen Durchläufen der Schleife betrachtet wurden, abhängt.
  6. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 5, bei der der Zufallszahlengenerator (110) dazu konfiguriert ist, für jedes Bit der Referenzzahl ein Zufallsbit zu erzeugen, wobei der Prozessor (120) dazu konfiguriert ist, für jedes Bit der Referenzzahl ein erstes Zwischenergebnis und ein zweites Zwischenergebnis zu berechnen, wobei der Prozessor (120) dazu konfiguriert ist, einen durch eine erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert zu vertauschen, bevor ein erstes Zwischenergebnis und ein zweites Zwischenergebnis für ein als Nächstes zu betrachtendes Bit der Referenzzahl berechnet wird, wenn die Vertauschungsbedingung für das Zufallsbit erfüllt ist, das für das als Nächstes zu betrachtende Bit der Referenzzahl erzeugt ist.
  7. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 6, bei der der Zufallszahlengenerator (110) dazu konfiguriert ist, für jedes Bit der Referenzzahl ein Zufallsbit zu erzeugen, wobei der Prozessor (120) dazu konfiguriert ist, für jedes Bit der Referenzzahl ein erstes Zwischenergebnis und ein zweites Zwischenergebnis zu berechnen, wobei der Prozessor (120) dazu konfiguriert ist, einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert zu vertauschen, bevor ein erstes Zwischenergebnis und ein zweites Zwischenergebnis für ein als Nächstes zu betrachtendes Bit der Referenzzahl berechnet werden, und dazu konfiguriert ist, einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert wieder zu vertauschen, nachdem das erste Zwischenergebnis und das zweite Zwischenergebnis für das als Nächstes zu betrachtende Bit der Referenzzahl berechnet werden, wenn die Vertauschungsbedingung für das Zufallsbit erfüllt ist, das für das als Nächstes zu betrachtende Bit der Referenzzahl erzeugt ist.
  8. Vorrichtung (100) gemäß einem der Ansprüche 2 bis 7, bei der der Zufallszahlengenerator (110) dazu konfiguriert ist, für jedes Bit der Referenzzahl ein Zufallsbit zu erzeugen, wobei die Vertauschungsbedingung für das Zufallsbit, das für das als Nächstes zu betrachtende Bit der Referenzzahl erzeugt ist, erfüllt ist, wenn das Zufallsbit ungleich dem Zufallsbit ist, das für ein letztes bereits betrachtetes Bit der Referenzzahl erzeugt ist.
  9. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 8, bei der die Vertauschungsbedingung erfüllt ist, wenn das Zufallsbit gleich einem vordefinierten Bitwert ist.
  10. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 9, bei der der Prozessor (120) dazu konfiguriert ist, ein durch die erste Hilfsvariable zu speicherndes Zwischenergebnis und ein durch die zweite Hilfsvariable zu speicherndes Zwischenergebnis auf Basis einer ersten Berechnungsregel des Berechnungsalgorithmus zu berechnen, wenn ein aktuell zu betrachtendes Bit der Referenzzahl ungleich dem Zufallsbit ist, oder auf Basis einer zweiten Berechnungsregel des Berechnungsalgorithmus zu berechnen, wenn das aktuell zu betrachtende Bit der Referenzzahl gleich dem Zufallsbit ist.
  11. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 10, bei der der Prozessor (120) dazu konfiguriert ist, ein durch die erste Hilfsvariable zu speicherndes Zwischenergebnis und ein durch die zweite Hilfsvariable zu speicherndes Zwischenergebnis auf Basis einer ersten Berechnungsregel des Berechnungsalgorithmus zu berechnen, wenn das Zufallsbit gleich einem vordefinierten Bitwert ist, oder auf Basis einer zweiten Berechnungsregel des Berechnungsalgorithmus zu berechnen, wenn das Zufallsbit ungleich einem vordefinierten Bitwert ist.
  12. Vorrichtung (100) gemäß einem der Ansprüche 2 bis 11, bei der der Prozessor (120) dazu konfiguriert ist, ein durch die erste Hilfsvariable zu speicherndes Zwischenergebnis und ein durch die zweite Hilfsvariable zu speicherndes Zwischenergebnis abhängig von dem Zufallsbit, das für das als Nächstes zu betrachtende Bit der Referenzzahl erzeugt ist, und von dem als Nächstes zu betrachtenden Bit der Referenzzahl auf Basis einer ersten Berechnungsregel des Berechnungsalgorithmus oder auf Basis einer zweiten Berechnungsregel des Berechnungsalgorithmus zu berechnen.
  13. Vorrichtung (100) gemäß einem der Ansprüche 10 bis 12, bei der der Prozessor (120) dazu konfiguriert ist, das durch die erste Hilfsvariable zu speichernde Zwischenergebnis gemäß der ersten Berechnungsregel durch Addieren eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses und eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen, und dazu konfiguriert ist, das durch die zweite Hilfsvariable zu speichernde Zwischenergebnis gemäß der ersten Berechnungsregel durch Verdoppeln eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen, wobei der Prozessor (120) dazu konfiguriert ist, das durch die erste Hilfsvariable zu speichernde Zwischenergebnis gemäß der zweiten Berechnungsregel durch Verdoppeln eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen, und dazu konfiguriert ist, das durch die zweite Hilfsvariable zu speichernde Zwischenergebnis gemäß der zweiten Berechnungsregel durch Addieren eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses und eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen.
  14. Vorrichtung (100) gemäß einem der Ansprüche 11 bis 13, bei der der Prozessor (120) dazu konfiguriert ist, das durch die erste Hilfsvariable zu speichernde Zwischenergebnis gemäß der ersten Berechnungsregel durch Addieren eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses und eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen, und dazu konfiguriert ist, das durch die zweite Hilfsvariable zu speichernde Zwischenergebnis gemäß der ersten Berechnungsregel durch Verdoppeln eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen, wobei der Prozessor (120) dazu konfiguriert ist, das durch die erste Hilfsvariable zu speichernde Zwischenergebnis gemäß der zweiten Berechnungsregel durch Verdoppeln eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen, und dazu konfiguriert ist, das durch die zweite Hilfsvariable zu speichernde Zwischenergebnis gemäß der zweiten Berechnungsregel durch Addieren eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses und eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen.
  15. Vorrichtung (100) gemäß einem der Ansprüche 12 bis 14, bei der der Prozessor (120) dazu konfiguriert ist, das durch die erste Hilfsvariable zu speichernde Zwischenergebnis gemäß der ersten Berechnungsregel durch Addieren eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses und eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen, und dazu konfiguriert ist, das durch die zweite Hilfsvariable zu speichernde Zwischenergebnis gemäß der ersten Berechnungsregel durch Verdoppeln eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen, wobei der Prozessor (120) dazu konfiguriert ist, das durch die erste Hilfsvariable zu speichernde Zwischenergebnis gemäß der zweiten Berechnungsregel durch Verdoppeln eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen, und dazu konfiguriert ist, das durch die zweite Hilfsvariable zu speichernde Zwischenergebnis gemäß der zweiten Berechnungsregel durch Addieren eines aktuell durch die erste Hilfsvariable gespeicherten Zwischenergebnisses und eines aktuell durch die zweite Hilfsvariable gespeicherten Zwischenergebnisses zu berechnen.
  16. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 15, bei der der Berechnungsalgorithmus ein Montgomery-Leiter-Algorithmus ist.
  17. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 16, bei der das erste Zwischenergebnis nach Betrachtung aller Bits der Referenzzahl eine erste Koordinate eines Punktes auf der elliptischen Kurve repräsentiert, der das Ergebnis der Skalarmultiplikation repräsentiert, wobei der Prozessor (120) dazu konfiguriert ist, auf Basis des ersten Zwischenergebnisses und des zweiten Zwischenergebnisses nach Betrachtung aller Bits der Referenzzahl eine zweite Koordinate des Punktes auf der elliptischen Kurve zu berechnen, der das Ergebnis der Skalarmultiplikation repräsentiert.
  18. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 17, bei der der Prozessor (120) dazu konfiguriert ist, einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert zu vertauschen, indem die durch die erste Hilfsvariable gespeicherten Werte mit den durch die zweite Hilfsvariable gespeicherten Werten überschrieben werden und indem die durch die zweite Hilfsvariable gespeicherten Werte mit den durch die erste Hilfsvariable gespeicherten Werten überschrieben werden.
  19. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 18, bei der der Prozessor (120) dazu konfiguriert ist, einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert zu vertauschen, indem eine Speicheradresse oder ein Speicheradresszeiger der ersten Hilfsvariable und eine Speicheradresse oder ein Speicheradresszeiger der zweiten Hilfsvariable vertauscht werden.
  20. Vorrichtung (100) gemäß einem der Ansprüche 1 bis 19, bei der die Differenz zwischen dem ganzzahligen Vielfachen des Referenzpunktes oder der Koordinate eines ganzzahligen Vielfachen des Referenzpunktes, das beziehungsweise die durch das erste Zwischenergebnis repräsentiert ist, und dem weiteren ganzzahligen Vielfachen des Referenzpunktes oder der Koordinate des weiteren ganzzahligen Vielfachen des Referenzpunktes, das beziehungsweise die durch das zweite Zwischenergebnis repräsentiert ist, eine Konstante ist.
  21. Vorrichtung (100) gemäß Anspruch 20, bei der die konstante Differenz zwischen den ganzzahligen Vielfachen des Referenzpunktes oder Koordinaten der ganzzahligen Vielfachen des Referenzpunktes, die durch das erste Zwischenergebnis und das zweite Zwischenergebnis repräsentiert sind, der Referenzpunkt ist.
  22. Vorrichtung (100) zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve, wobei die Vorrichtung folgende Merkmale aufweist: einen Zufallszahlengenerator (110), der dazu konfiguriert ist, ein Zufallsbit zu erzeugen; und einen Prozessor (120), der dazu konfiguriert ist, das Ergebnis der Skalarmultiplikation zu berechnen auf Basis von
    Figure 00310001
    Figure 00320001
    wobei R eine erste Hilfsvariable ist, S eine zweite Hilfsvariable ist, O das neutrale Element der elliptischen Kurve ist, P der Referenzpunkt auf der elliptischen Kurve ist, i eine Zählvariable ist, k die Referenzzahl ist, n eine Anzahl von Bits der Referenzzahl ist, z das Zufallsbit ist und bi ein Bit der Referenzzahl ist.
  23. Vorrichtung (100) zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve, wobei die Vorrichtung folgende Merkmale aufweist: einen Zufallszahlengenerator (110), der dazu konfiguriert ist, ein Zufallsbit zu erzeugen; und einen Prozessor (120), der dazu konfiguriert ist, das Ergebnis der Skalarmultiplikation zu berechnen auf Basis von
    Figure 00320002
    wobei R eine erste Hilfsvariable ist, S eine zweite Hilfsvariable ist, O das neutrale Element der elliptischen Kurve ist, P der Referenzpunkt auf der elliptischen Kurve ist, k die Referenzzahl ist, i die Zählvariable ist, n eine Anzahl von Bits der Referenzzahl ist, bi ein Bit der Referenzzahl ist, z1 ein für die Betrachtung des als Nächstes zu betrachtenden Bits bi der Referenzzahl erzeugtes Zufallsbit ist und z0 ein für die Betrachtung eines letzten bereits betrachteten Bits bi-1 der Referenzzahl erzeugtes Zufallsbit ist.
  24. Vorrichtung (100) zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve, wobei die Vorrichtung folgende Merkmale aufweist: einen Zufallszahlengenerator (110), der dazu konfiguriert ist, ein Zufallsbit zu erzeugen; und einen Prozessor (120), der dazu konfiguriert ist, das Ergebnis der Skalarmultiplikation zu berechnen auf Basis von
    Figure 00330001
    wobei R eine erste Hilfsvariable ist, S eine zweite Hilfsvariable ist, O das neutrale Element der elliptischen Kurve ist, P der Referenzpunkt auf der elliptischen Kurve ist, i eine Zählvariable ist, k die Referenzzahl ist, n eine Anzahl von Bits der Referenzzahl ist, z das Zufallsbit ist und bi ein Bit der Referenzzahl ist.
  25. Vorrichtung (100) zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve, wobei die Vorrichtung folgende Merkmale aufweist: einen Zufallszahlengenerator (110), der dazu konfiguriert ist, ein Zufallsbit zu erzeugen; und einen Prozessor (120), der dazu konfiguriert ist, das Ergebnis der Skalarmultiplikation zu berechnen auf Basis von
    Figure 00340001
    wobei R eine erste Hilfsvariable ist, S eine zweite Hilfsvariable ist, O das neutrale Element der elliptischen Kurve ist, P der Referenzpunkt auf der elliptischen Kurve ist, k die Referenzzahl ist, i die Zählvariable ist, n eine Anzahl von Bits der Referenzzahl ist, bi ein Bit der Referenzzahl ist, w das Zufallsbit ist und z0 und z1 Hilfsvariablen sind.
  26. Vorrichtung (100) zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve, wobei die Vorrichtung folgende Merkmale aufweist: eine Einrichtung zum Erzeugen einer Zufallszahl, wobei die Einrichtung dazu konfiguriert ist, ein Zufallsbit zu erzeugen; und eine Einrichtung zum Berechnen des Ergebnisses einer Skalarmultiplikation, wobei die Einrichtung dazu konfiguriert ist, das Ergebnis der Skalarmultiplikation auf Basis eines Berechnungsalgorithmus unter Verwendung einer ersten Hilfsvariable, die ein erstes Zwischenergebnis speichert, das ein ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines ganzzahligen Vielfachen des Referenzpunktes repräsentiert, und einer zweiten Hilfsvariable, die ein zweites Zwischenergebnis speichert, das ein weiteres ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines weiteren ganzzahligen Vielfachen des Referenzpunktes repräsentiert, zu berechnen, wobei die Einrichtung zum Berechnen des Ergebnisses der Skalarmultiplikation dazu konfiguriert ist, einen durch die erste Hilfsvariable gespeicherten Wert und einen durch die zweite Hilfsvariable gespeicherten Wert während der Berechnung des Ergebnisses der Skalarmultiplikation zu vertauschen, wenn eine von dem erzeugten Zufallsbit abhängige Vertauschungsbedingung erfüllt ist.
  27. Kryptografisches System mit einer Vorrichtung gemäß einem der Ansprüche 1 bis 26.
  28. Kryptografisches System gemäß Anspruch 27, bei dem ein kryptografisches System eine Smartcard ist.
  29. Verfahren zum Berechnen eines Ergebnisses einer Skalarmultiplikation einer Referenzzahl mit einem Referenzpunkt auf einer elliptischen Kurve, wobei das Verfahren folgende Schritte aufweist: Erzeugen eines Zufallsbits; Berechnen des Ergebnisses der Skalarmultiplikation auf Basis eines Berechnungsalgorithmus unter Verwendung einer ersten Hilfsvariable, die ein erstes Zwischenergebnis speichert, das ein ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines ganzzahligen Vielfachen des Referenzpunktes repräsentiert, und der zweiten Hilfsvariable, die ein zweites Zwischenergebnis speichert, das ein weiteres ganzzahliges Vielfaches des Referenzpunktes oder eine Koordinate eines weiteren ganzzahligen Vielfachen des Referenzpunktes repräsentiert; und Vertauschen eines durch die erste Hilfsvariable gespeicherten Wertes und eines durch die zweite Hilfsvariable gespeicherten Wertes während der Berechnung des Ergebnisses der Skalarmultiplikation, wenn eine von dem erzeugten Zufallsbit abhängige Vertauschungsbedingung erfüllt ist.
  30. Computerprogramm mit dem Programmcode zum Ausführen des Verfahrens gemäß Anspruch 29, wenn das Computerprogramm auf einem Computer oder einem Mikrocontroller läuft.
DE102012202015.2A 2011-02-11 2012-02-10 Vorrichtung und Verfahren zum Schützen einer Referenzzahl gegen darauf gerichtete Differential Power Analyse-Angriffe und Template-Angriffe Active DE102012202015B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/025,221 US9400636B2 (en) 2011-02-11 2011-02-11 Apparatus and method for calculating a result in a scalar multiplication
US13/025,221 2011-02-11

Publications (2)

Publication Number Publication Date
DE102012202015A1 true DE102012202015A1 (de) 2012-08-16
DE102012202015B4 DE102012202015B4 (de) 2016-11-17

Family

ID=46579826

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012202015.2A Active DE102012202015B4 (de) 2011-02-11 2012-02-10 Vorrichtung und Verfahren zum Schützen einer Referenzzahl gegen darauf gerichtete Differential Power Analyse-Angriffe und Template-Angriffe

Country Status (4)

Country Link
US (1) US9400636B2 (de)
CN (1) CN102638341B (de)
DE (1) DE102012202015B4 (de)
FR (1) FR2971600B1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8542820B2 (en) * 2009-02-05 2013-09-24 Infineon Technologies Ag Apparatus for calculating a result of a scalar multiplication
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication
FR3001315B1 (fr) * 2013-01-18 2016-05-06 Inside Secure Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation
FR3010210B1 (fr) * 2013-08-29 2017-01-13 Stmicroelectronics Rousset Protection d'un calcul contre des attaques par canaux caches
CN104601322A (zh) * 2013-10-31 2015-05-06 上海华虹集成电路有限责任公司 用于密码芯片中三元扩域的蒙哥马利阶梯算法
FR3016987B1 (fr) * 2014-01-29 2017-07-21 Morpho Echelle de montgomery desequilibree
US10268605B1 (en) * 2014-04-30 2019-04-23 Altera Corporation Hybrid architecture for signal processing and signal processing accelerator
WO2016053792A1 (en) 2014-10-03 2016-04-07 Cryptography Research, Inc. Exponent splitting for cryptographic operations
US9590805B1 (en) * 2014-12-23 2017-03-07 EMC IP Holding Company LLC Ladder-based cryptographic techniques using pre-computed points
US9584320B1 (en) * 2014-12-23 2017-02-28 EMC IP Holding Company LLC Blinding function in elliptic curve cryptography
CN105281889B (zh) * 2015-11-16 2019-02-01 中国电子科技集团公司第三十研究所 一种基于侧信道泄漏的算法还原方法和系统
US10275391B2 (en) * 2017-01-23 2019-04-30 International Business Machines Corporation Combining of several execution units to compute a single wide scalar result
EP3503459B1 (de) * 2017-12-22 2021-04-21 Secure-IC SAS Vorrichtung und verfahren zum schutz der ausführung einer kryptographischen operation
KR20200046481A (ko) 2018-10-24 2020-05-07 삼성전자주식회사 난수 생성기, 이를 포함하는 암호화 장치 및 이의 동작 방법
IT201900025567A1 (it) * 2019-12-24 2021-06-24 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
IT202000000886A1 (it) 2020-01-17 2021-07-17 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia su dati in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
IT202000006475A1 (it) * 2020-03-27 2021-09-27 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia su dati in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
JP2022045614A (ja) * 2020-09-09 2022-03-22 キオクシア株式会社 演算装置
US20220368514A1 (en) * 2021-04-22 2022-11-17 Northeastern University Methods and Systems For Protecting Against Memory-Based Side-Channel Attacks
US20240004998A1 (en) * 2022-07-01 2024-01-04 Nxp B.V. Method for protecting a machine learning model from a side channel attack
KR20240040437A (ko) * 2022-09-21 2024-03-28 주식회사 아이씨티케이 암호 연산 방법, 및 상기 방법을 수행하는 전자 장치

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL128007A (en) 1999-01-11 2003-02-12 Milsys Ltd Enhancements on compact logic devices and also for accelerating and securing computations in modular arithmetic especially for use in public key cryptographic co-processors designed for elliptic curve and rsa type computations
US7308096B2 (en) 2000-05-30 2007-12-11 Hitachi, Ltd. Elliptic scalar multiplication system
JP4067818B2 (ja) * 2001-12-10 2008-03-26 富士通株式会社 楕円曲線暗号装置、楕円曲線暗号プログラム及び楕円曲線暗号の演算方法
DE102005042339B4 (de) * 2005-09-06 2007-08-16 Siemens Ag Verfahren zum sicheren Ver- oder Entschlüsseln einer Nachricht
KR100874909B1 (ko) * 2006-01-14 2008-12-19 삼성전자주식회사 Dfa에 대항하는 몽고메리 전력 래더 알고리즘을 사용하는 암호화 방법
JP4682852B2 (ja) 2006-01-16 2011-05-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
KR100850202B1 (ko) * 2006-03-04 2008-08-04 삼성전자주식회사 Ecc 패스트 몽고매리 전력 래더 알고리즘을 이용하여dfa 에 대응하는 암호화 방법
DE102006014353B4 (de) 2006-03-28 2007-11-22 Siemens Ag Verfahren zum sicheren Ermitteln von Daten
US8243919B2 (en) 2007-03-07 2012-08-14 Research In Motion Limited Method and apparatus for performing elliptic curve scalar multiplication in a manner that counters power analysis attacks
WO2009055904A1 (en) * 2007-10-30 2009-05-07 Certicom Corp. Fault detection in exponentiation and point multiplication operations using a montgomery ladder
US8498411B1 (en) * 2008-12-12 2013-07-30 Emc Corporation Using multiples above two with running totals and reference values other than 0 and 2 (window size) in elliptic curve cryptography scalar multiplication acceleration tables
FR2942560B1 (fr) 2009-02-24 2015-06-26 Oberthur Technologies Procede de traitement de donnees impliquant une exponentiation et un dispositif associe.
US8775813B2 (en) * 2010-02-26 2014-07-08 Certicom Corp. ElGamal signature schemes
KR101610917B1 (ko) * 2010-03-08 2016-04-11 삼성전자주식회사 암호 알고리즘의 복호 방법 및 그것을 포함하는 암호 시스템
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication

Also Published As

Publication number Publication date
FR2971600B1 (fr) 2018-03-16
FR2971600A1 (fr) 2012-08-17
US9400636B2 (en) 2016-07-26
CN102638341B (zh) 2016-08-03
CN102638341A (zh) 2012-08-15
US20120207298A1 (en) 2012-08-16
DE102012202015B4 (de) 2016-11-17

Similar Documents

Publication Publication Date Title
DE102012202015B4 (de) Vorrichtung und Verfahren zum Schützen einer Referenzzahl gegen darauf gerichtete Differential Power Analyse-Angriffe und Template-Angriffe
DE102006022960B4 (de) Verfahren zum Verschlüsseln von Eingabedaten, kryptographisches System und Computerprogrammprodukt
EP2901611B1 (de) Seitenkanalgeschützte maskierung
EP3593483B1 (de) Übergang von einer booleschen maskierung zu einer arithmetischen maskierung
DE60223337T3 (de) Verfahren zur gesicherten verschlüsselung und baustein zur ausführung eines solchen verschlüsselungsverfahrens
EP3218894A1 (de) Verfahren zum testen und zum härten von softwareapplikationen
EP1920323A1 (de) Verfahren zur skalarmultiplikation von punkten auf einer elliptischen kurve
DE102014203497A1 (de) Maskiertes nichtlinear rückgekoppeltes Schieberegister
DE10304451B3 (de) Modulare Exponentiation mit randomisiertem Exponenten
DE602004003226T2 (de) Tabellenmaskierung zur Beständigkeit gegen Angriffe durch Analyse der Leistungsaufnahme.
DE102006002891B4 (de) Verfahren, Vorrichtung und System zum Verifizieren von auf einer elliptischen Kurve ermittelten Punkten
DE60022840T2 (de) Verfahren zum sichern einer oder mehrerer elektronischer baugruppen, unter zuhilfenahme eines privatschlüssel-krypto-algorithmus, sowie elektronische baugruppe
DE102015015953B3 (de) Kryptoalgorithmus mit schlüsselabhängigem maskiertem Rechenschritt (SBOX-Aufruf)
EP1596527B1 (de) Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung
EP3804209B1 (de) Verfahren mit safe-error-abwehrmassnahme
DE10042234C2 (de) Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor
DE102020134618A1 (de) Sicherheits-controller und verfahren zur verarbeitung von datenelementen eines datenfeldes
EP1506473B1 (de) Ausspähungsgeschützte modulare inversion
DE102012210354B3 (de) Verfahren und Recheneinheit zur Erzeugung kryptographischer Daten
DE102014004378A1 (de) Speichereffiziente seitenkanalgeschützte Maskierung
WO2007006649A1 (de) Verfahren zur seitenkanalangriffsresistenten vervielfachung
DE102014001647A1 (de) Operation basierend auf zwei Operanden
DE102010039273B4 (de) Kryptographie-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation
DE102022125835A1 (de) Datenverarbeitungsvorrichtung und verfahren zum erzeugen einer zufallszahl
DE102010064578B3 (de) Kryptographie-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative