DE102010039273A1 - Kryptographi-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation - Google Patents

Kryptographi-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation Download PDF

Info

Publication number
DE102010039273A1
DE102010039273A1 DE201010039273 DE102010039273A DE102010039273A1 DE 102010039273 A1 DE102010039273 A1 DE 102010039273A1 DE 201010039273 DE201010039273 DE 201010039273 DE 102010039273 A DE102010039273 A DE 102010039273A DE 102010039273 A1 DE102010039273 A1 DE 102010039273A1
Authority
DE
Germany
Prior art keywords
base value
value
result
random number
random
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
DE201010039273
Other languages
English (en)
Other versions
DE102010039273B4 (de
Inventor
Stefan Heiss
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
Priority to DE201010039273 priority Critical patent/DE102010039273B4/de
Publication of DE102010039273A1 publication Critical patent/DE102010039273A1/de
Application granted granted Critical
Publication of DE102010039273B4 publication Critical patent/DE102010039273B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • 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/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • 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/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
    • 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/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

Ein Kryptographie-Prozessor zur Berechnung eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten modulo eines Modulwerts zum Verschlüsseln oder Entschlüsseln von Daten umfasst einen Zufallszahlengenerator und einen Prozessor. Der Zufallszahlengenerator erzeugt eine Zufallszahl und der Prozessor berechnet eine Summe des Basiswerts mit einem Vielfachen des Modulwerts, um einen zufälligen Basiswert zu erhalten. Dabei hängt das Vielfache des Modulwerts von der Zufallszahl ab. Des Weiteren berechnet der Prozessor das Ergebnis der Exponentiation basierend auf dem zufälligen Basiswert.

Description

  • Ausführungsbeispiele gemäß der Erfindung beziehen sich auf Kryptographiesysteme und insbesondere einen Kryptographie-Prozessor, eine Chipkarte und ein Verfahren zur Berechnung eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten modulo eines Modulwerts zum Verschlüsseln von Daten.
  • Alltäglich werden heutzutage elektronisch Daten übertragen. Dies betrifft oft auch sensitive Informationen, die beispielsweise Geschäftliches oder Personendaten umfassen. Für solche Daten ist eine sichere Übertragung außerordentlich wichtig. Dementsprechend werden Verschlüsselungs- und Entschlüsselungstechniken verwendet, um diese Daten vor unerwünschtem Zugriff zu schützen.
  • Jedoch könnten unerwünschte Personen versuchen, die gesicherten Daten oder beispielsweise einen privaten Schlüssel, der zum Verschlüsseln der Daten verwendet wird, zu entschlüsseln. Zum Beispiel können Angreifer versuchen, Seitenkanalinformationen (z. B. Leistungsverbrauchsinformationen, elektromagnetische Informationen oder Fehlerinformationen) von einem Gerät zu sammeln, das die Daten gerade verschlüsselt. Daher ist es von großem Interesse, Kryptographiesysteme zu entwickeln, die möglicht sicher gegenüber Angriffen sind.
  • Es ist die Aufgabe der vorliegenden Erfindung, ein Kryptographiekonzept zu schaffen, das es ermöglicht, die Sicherheit beim Verschlüsseln oder Entschlüsseln von Daten zu erhöhen.
  • Zum Beispiel kann eine Verschlüsselung durch den Rivest-Shamir-Adleman-Algorithmus (RSA) erfolgen. Das RSA-Verfahren ist ein asymmetrisches Kryptokonzept, das sowohl zur Verschlüsselung als auch zur digitalen Signatur verwendet werden kann. Es verwendet ein Schlüsselpaar, bestehend aus einem privaten Schlüssel, der zum Entschlüsseln oder Signieren von Daten verwendet wird, und einem öffentlichen Schlüssel, mit dem Daten verschlüsselt oder Signaturen geprüft werden. Der private Schlüssel wird geheim gehalten und kann nicht oder nur mit extrem hohen Aufwand aus dem öffentlichen Schlüssel gewonnen werden. Entscheidend bei diesem Verfahren ist die Berechnung einer Exponentiation eines Basiswerts mit einem Exponenten modulo eines Modulwerts, um Daten zu verschlüsseln oder entschlüsseln.
  • Diese Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1 oder ein Verfahren gemäß Anspruch 17 gelöst.
  • Ein Ausführungsbeispiel gemäß der Erfindung schafft einen Kryptographie-Prozessor zur Berechnung eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten modulo eines Modulwerts zum Verschlüsseln oder Entschlüsseln von Daten, der einen Zufallszahlengenerator und einen Prozessor aufweist. Der Zufallszahlengenerator ist ausgelegt, um eine Zufallszahl zu erzeugen. Des Weiteren ist der Prozessor ausgelegt, um eine Summe des Basiswerts mit einem Vielfachen des Modulwerts zu berechnen, um einen zufälligen Basiswert zu erhalten. Das Vielfache des Modulwerts hängt dabei von der Zufallszahl ab. Zusätzlich ist der Prozessor ausgelegt, um das Ergebnis der Exponentiation, basierend auf den zufälligen Basiswert zu berechnen.
  • Ausführungsbeispiele gemäß der Erfindung basieren auf dem Kerngedanken dem Basiswert der Exponentiation eine zufällige Komponente hinzuzuführen. Dies kann jedoch nicht auf beliebige Art und Weise geschehen, da der Basiswert die zu verschlüsselnde oder entschlüsselnden Daten repräsentiert und diese Information nicht verloren gehen soll. Jedoch kann ein beliebiges Vielfaches des Modulwerts dem Basiswert hinzugefügt werden, da dieses Vielfache durch eine spätere Anwendung der Modulo-Funktion mit dem Modulwert wieder leicht entfernt werden kann. Durch die Verwendung des zufälligen Basiswerts kann sowohl der Basiswert selbst auch als der Exponent für Angriffe, wie z. B. Leistungsanalysen, verschleiert werden. Dadurch kann die Sicherheit der Verschlüsselung und Entschlüsselung von Daten auf einfache Art und Weise deutlich erhöht werden.
  • Bei einigen Ausführungsbeispielen gemäß der Erfindung wird der zufällige Basiswert durch eine Multiplikation des Modulwerts mit der Zufallszahl und einer anschließenden Addition des Basiswerts erhalten. Dadurch kann auf sehr einfache Weise das erfindungsgemäße Konzept realisiert werden.
  • Bei einigen weiteren Ausführungsbeispielen gemäß der Erfindung erzeugt der Zufallszahlengenerator eine Zufallszahl mit einer vordefinierten Bitlänge. Durch die Bitlänge der Zufallszahl kann beispielsweise die Stärke der Zufälligkeit des zufälligen Basiswerts festgelegt werden.
  • Einige Ausführungsbeispiele gemäß der Erfindung beziehen sich auf eine Chipkarte mit einem Kryptographie-Prozessor gemäß dem beschriebenen Konzept.
  • Ausführungsbeispiele gemäß der Erfindung werden nachfolgend bezugnehmend auf die beiliegenden Figuren näher erläutert.
  • Es zeigen:
  • 1 ein Blockdiagramm eines Kryptographie-Prozessors;
  • 2 ein Blockdiagramm einer Chipkarte; und
  • 3 ein Flussdiagramm eines Verfahrens zur Berechnung eines Ergebnisses einer Exponentiation.
  • Im Folgenden werden teilweise für Objekte und Funktionseinheiten, die gleiche oder ähnliche funktionelle Eigenschaften aufweisen, gleiche Bezugszeichen verwendet. Des Weiteren können optionale Merkmale der verschiedenen Ausführungsbeispiele miteinander kombinierbar oder zueinander austauschbar sein.
  • 1 zeigt ein Blockdiagramm eines Kryptographie-Prozessors 100 zur Berechnung eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten modulo zum Verschlüsseln oder Entschlüsseln von Daten entsprechend eines Ausführungsbeispiels gemäß der Erfindung. Der Kryptographie-Prozessor 100 umfasst einen Zufallszahlengenerator 110 und einen Prozessor 120. Der Zufallszahlengenerator 110 ist mit dem Prozessor 120 verbunden und erzeugt eine Zufallszahl R. Der Prozessor 120 berechnet eine Summe des Basiswerts B mit einem Vielfachen des Modulwerts N, um einen zufälligen Basiswert BR zu erhalten. Dabei hängt das Vielfache des Modulwerts N von der Zufallszahl R ab. Des Weiteren berechnet der Prozessor 120 das Ergebnis der Exponentiation, basierend auf dem zufälligen Basiswert BR.
  • Durch die Addition eines Vielfachen des Modulwerts N in Abhängigkeit der Zufallszahl R zum Basiswert B kann ein zufälliger Basiswert BR erzeugt werden, wodurch die Exponentiation des Basiswerts B gegen Angriffe, wie z. B. Leistungsanalyseangriffe, verschleiert werden kann. Trotzdem kann das richtige Ergebnis (und z. B. der ursprüngliche Basiswert B) jederzeit einfach wiedergewonnen werden, indem die Modulo-Funktion (mod) mit dem Modulwert N auf den zufälligen Basiswert BR angewendet wird. Dadurch kann auf einfache Art und Weise die Sicherheit der Verschlüsselung oder Entschlüsselung von Daten erhöht werden.
  • Der Basiswert B, der Exponent E, der Modulwert N und die Zufallszahl R sind ganze Zahlen, die beispielsweise für die Verarbeitung durch den Kryptographie-Prozessor 100 in binärer Darstellung vorliegen.
  • In diesem Zusammenhang kann der Basiswert zu verschlüsselnde Daten oder verschlüsselte Daten repräsentieren und das Ergebnis der Exponentiation modulo des Modulwerts verschlüsselte Daten oder entschlüsselte Daten repräsentieren je nachdem, ob der Kryptographie-Prozessors 100 zum Verschlüsseln oder Entschlüsseln von Daten verwendet wird, wie in 1 angedeutet.
  • Durch das beschriebene Konzept kann beispielsweise die zentrale Rechenoperation des RSA-Verfahrens (B^E) mod N zum Verschlüsseln und Entschlüsseln von Daten sicherer gegenüber Angriffe gemacht werden.
  • Der Zufallszahlengenerator 110 kann ein echter Zufallszahlengenerator sein, der Zufallszahlen, beispielsweise basierend auf thermischem Rauschen, oder ein Pseudozufallszahlengenerator, der Zufallszahlen z. B. basierend auf einer deterministischen generierenden Funktionen erzeugt.
  • Der Zufallszahlengenerator 110 und der Prozessor 120 können beispielsweise unabhängige Hardwareeinheiten, Teil eines Computers, Mikrocontrollers oder Chipkartenprozessors sowie Computerprogramme oder Softwareprodukte zur Verwendung auf Computern, Mikrocontrollern oder Chipkartenprozessoren sein.
  • Sowohl die Berechnung des zufälligen Basiswerts BR als auch die Berechnung der Exponentiation des Basiswerts B mit dem Exponenten E kann auf unterschiedliche Weisen erfolgen.
  • Beispielsweise kann der zufällige Basiswert BR vom Prozessor 120 durch eine Multiplikation des Modulswerts N mit der Zufallszahl R und einer anschließenden Addition des Basiswerts B erhalten werden. Alternativ kann ein zufälliger Basiswert BR aber auch auf andere Art berechnet werden, um beispielsweise den Speicherbedarf des Kryptographie-Prozessors 100 zu reduzieren, wie später noch gezeigt wird.
  • Die Berechnung des Ergebnisses der Exponentiation des Basiswerts B mit dem Exponenten E kann z. B. durch eine sequentielle Berechnung eines Zwischenergebnisses ZE für jedes Bit des Exponenten E berechnet werden. Das heißt, die Exponentiation kann beispielsweise durch Berechnung von Zwischenergebnissen für jedes Bit des Exponenten E ausgeführt werden, wobei ein Zwischenergebnis ZE eines vorhergehend berücksichtigten Bits des Exponenten E für die Berechnung des Zwischenergebnisses ZE eines nachfolgenden Bits des Exponenten E verwendet wird. Ein Beispiel für ein solches Vorgehen ist eine Quadriere-und-Multipliziere-Exponentiation, wie allgemein folgendermaßen ausgedrückt werden kann. ZE = ZE·ZE mod N ZE = ZE·BR mod N, wenn Ei = 1
  • In anderen Worten, der Prozessor 120 kann zur Berechnung des Zwischenergebnisses ZE eines Bits Ei des Exponenten E ein Zwischenergebnis ZE eines vorhergehenden Bits Ei – 1 mit sich selbst multiplizieren und das Ergebnis modulo den Modulwert N berechnen, um das Zwischenergebnis für das aktuelle Bit Ei des Exponenten E zu erhalten, wenn das Bit Ei des Exponenten einen ersten Wert (0 oder 1, je nach verwendeter Logik) aufweist. Andernfalls kann der Prozessor 120 zusätzlich das Ergebnis der Multiplikation des Zwischenergebnisses ZE des vorhergehenden Bits Ei + 1 mit sich selbst modulo den Modulwert N mit dem zufälligen Basiswert BR multiplizieren und das Ergebnis modulo den Modulwert N berechnen, um das Zwischenergebnis ZE für das Bit Ei des Exponenten E zu erhalten, wenn das Bit Ei des Exponenten E einen zweiten Wert (1 oder 0) aufweist. Abhängig von der Implementierung des Prozessors 120 wird meist eine positive Logik (z. B. ein binärer Exponent vom Wert 1010, stellt die Dezimalzahl 10 dar) verwendet, so dass die Multiplikation mit dem zufälligen Basiswert BR ausgeführt wird, wenn das Bit Ei des Exponenten E gleich 1 ist. Eine Implementierung mit negativer Logik (z. B. ein Exponent mit der Bitfolge 0101 stellt die Dezimalzahl 10 dar) ist jedoch ebenso denkbar, so dass der zufällige Basiswert BR berücksichtigt wird, wenn das Bit Ei des Exponenten E gleich 0 ist.
  • In dem beschriebenen Beispiel wird das Ergebnis der Exponentiation, basierend auf einer Links-nach-Rechts Exponentiation berechnet. Es können jedoch ebenso Algorithmen mit einer Rechts-nach-Links-Exponentiation verwendet werden. Eine RSA Eponentiation mit Scanrichtung (Abtastrichtung) des Exponenten von Rechts-nach-Links, besitzt nicht den Nachteil das die Multipliziere Operation immer mit der gleichen Basis stattfindet. Man kann jedoch das beschriebene Konzept ebenfalls auf eine Rechts-nach-Links Exponentiation anwenden, um eine zusätzliche Verschleierung zu erzielen, der große Vorteil wie bei der Links-nach-Rechts Exponentiation ist allerdings hier nicht gegeben. Als Vorteil der Erfindungsmeldung kann in Bezug auf die Rechts-nach-Links Exponentiation jedoch eine zusätzliche Verschleierung der Basis B ermöglicht werden und es kann weniger Speicherbedarf notwendig sein, da im Falle der Rechts-nach-Links Exponentiation das orginale B nicht mehr vorhanden ist, im Fall der Links-nach-Rechts Exponetiation unter Verwendung des erfindungsgemäßen Konzepts jedoch schon.
  • Die vom Zufallszahlengenerator 110 generierte Zufallszahl R kann eine beliebige Anzahl von Bits aufweisen. Diese Bitlänge der Zufallszahl R kann vordefiniert sein, und ein Maß für die Zufälligkeit des zufälligen Basiswerts BR sein. In anderen Worten, durch die Vorgabe der Länge der Zufallszahl R kann eine Abwägung zwischen dem Zugewinn an Sicherheit und dem zusätzlichen Rechenaufwand erfolgen. Der Zufallszahlengenerator 110 erzeugt dann eine Zufallszahl R mit der vordefinierten Bitlänge.
  • Die vordefinierte Bitlänge kann dabei beispielsweise zumindest gleich groß gewählt werden, wie eine Anzahl von Bits des Exponenten E für dessen Berechnung der zugehörigen Zwischenergebnisse derselbe zufällige Basiswert BR verwendet wird.
  • Andersrum ausgedrückt, derselbe zufällige Basiswert BR kann bei der Berücksichtigung aller Bits des Exponenten E, einer vordefinierten Anzahl von Bits des Exponenten E, einer zufälligen Anzahl von Bits des Exponenten E oder nur für jeweils 1 Bit des Exponenten E verwendet werden. Beispielsweise wäre es ausreichend, eine Zufallszahl mit einer Bitlänge von nur einem Bit zu erzeugen, wenn für jedes Bit des Exponenten E ein neuer zufälliger Basiswert Br berechnet wird.
  • In anderen Worten, der Prozessor kann z. B. die Zwischenergebnisse für alle Bits des Exponenten E basierend auf unterschiedlichen zufälligen Basiswerten BR berechnen, die Zwischenergebnisse einer vordefinierten Anzahl von Bits (z. B. für jeweils 8 Bit, 16 Bit, 32 Bit oder mehr) des Exponenten E basierend auf demselben zufälligen Basiswert BR berechnen, die Zwischenwerte einer zufälligen Anzahl von Bits (z. B. basierend auf einer weiteren Zufallszahl) des Exponenten E basierend auf demselben zufälligen Basiswert BR berechnen oder die Zwischenergebnisse für alle Bits des Exponenten E basierend auf demselben zufälligen Basiswert BR berechnen. Auch an dieser Stelle kann durch eine Wahl der vordefinierten Anzahl von Bits des Exponenten für die derselbe zufällige Basiswert BR verwendet wird, ein Kompromiss zwischen dem Zugewinn an Sicherheit und zusätzlichem Rechenaufwand erfolgen.
  • Einige Ausführungsbeispiele gemäß der Erfindung beziehen sich auf eine Reduktion des Speicherbedarfs des Kryptographie-Prozessors. Eine Speicherbedarfreduzierung kann beispielsweise dadurch erfolgen, dass der Basiswert B während der Berechnung der Exponentiation des Basiswerts B mit dem Exponenten E nicht gespeichert wird, sondern später aus dem zufälligen Basiswert BR zurückgewonnen wird. Dies ist eine triviale Aufgabe, wenn nur ein zufälliger Basiswert BR für alle Bits des Exponenten E verwendet wird. Werden zumindest zwei unterschiedliche zufällige Basiswerte BR, die auf zwei unterschiedlichen Zufallszahlen R basieren, für jeweils unterschiedliche Bits des Exponenten E verwendet, dann kann der ursprüngliche Basiswert B trotzdem aus dem zuletzt verwendeten zufälligen Basiswert BR wiedergewonnen werden, wenn beispielsweise eine vorhergehend verwendeter Zufallszahl gespeichert wird. Wenn die Zufallszahl R kleiner ist als der Basiswert B (z. B. Zufallszahl 16 Bit und Basiswert 1024 Bit), kann deutlich an Speicherplatz gespart werden, was u. a. für Kryptographie-Prozessoren für Kartenanwendungen interessant ist.
  • Dazu kann der Prozessor beispielsweise eine aktuelle Zufallszahl R mit einer vorhergehend verwendeten Zufallszahl R vergleichen, um in Abhängigkeit des Vergleichs der Zufallszahlen für jedes Bit der aktuellen Zufallszahl R entweder ein dem Stellenwert des jeweiligen Bits der Zufallszahl R entsprechendes Vielfaches des Modulswerts N dem Basiswert B hinzufügen, vom Basiswert B abziehen oder den Basiswert für das jeweilige Bit der Zufallszahl unverändert lassen. Der Prozessor kann dazu mit dem höchstwertigen Bit oder dem niederwertigsten Bit der Zufallszahlen beginnen. Ergibt beispielsweise der Vergleich zweier Bits der Zufallszahlen, dass die beiden Bits gleich sind, dann wird der Basiswert oder in weiterer Folge ein bereits durch Addition eines Vielfachen des Modulwerts N veränderter Basiswert unverändert gelassen. Alternativ wird beispielsweise, wenn das zu vergleichende Bit der vorhergehenden Zufallszahl 0 ist und das zu vergleichende Bit der aktuellen Zufallszahl 1 ist, ein dem Stellenwert des jeweiligen Bits der Zufallszahl R entsprechendes Vielfaches des Modulwerts N dem Basiswert B oder einem bereits um ein Vielfache des Modulwerts veränderter Basiswert hinzugefügt. Im anderen Fall, wenn das zu vergleichende Bit der vorhergehenden Zufallszahl 1 ist und das zu vergleichende Bit der aktuellen Zufallszahl 0 ist, wird ein dem Stellenwert des jeweiligen Bits der Zufallszahl entsprechendes Vielfaches des Modulwerts N vom Basiswert B oder einem bereits um ein Vielfaches des Modulwerts N geänderten Basiswert abgezogen. In Abhängigkeit der konkreten Implementierung kann dies auch umgekehrt realisiert werden.
  • Dadurch kann mit Hilfe der zuletzt verwendeten Zufallszahl R nach der Berechnung der Exponentiation des Basiswerts B mit dem Exponenten E der ursprüngliche Basiswert B wiedergewonnen werden.
  • Nachdem jedes Bit der aktuellen Zufallszahl R berücksichtigt wurde, ist ein neuer zufälliger Basiswert BR vor. Für die Implementierung der Berechnung des zufälligen Basiswerts BR kann es notwendig sein, den Modulwert N um die Bitlänge der Zufallszahl R nach links zu schieben.
  • Bei einigen Ausführungsbeispielen gemäß der Erfindung wird nach der Berechnung der Exponentiation des Basiswerts B mit dem Exponenten E eine Endreduktion durchgeführt. Die Endreduktion erfolgt beispielsweise durch die Anwendung der Modulo-Funktion mit dem Modulwert N auf das Ergebnis der Exponentiation. Mit anderen Worten, der Prozessor kann nach Berechnung des Ergebnisses der Exponentiation eine Endreduktion durch Berechnung des modulo des Ergebnisses der Exponentiation mit dem Modulwert N durchführen, um das Ergebnis der Exponentiation des Basiswerts B mit dem Exponenten E modulo des Modulwerts N zu erhalten.
  • Im Folgenden wird ein konkretes Beispiel im Detail beschrieben. Das Beispiel zeigt eine Anwendung des erfinderischen Konzepts für die zentrale Rechenoperation in einem RSA-Algorithmus unter Verwendung eines Quadriere-und-Multipliziere-Verfahrens.
  • Es zeigt eine Verschleierung oder Randomisierung (zufällig machen) des Basiswertes B in einer RSA ,Square-and-Multiply' Exponentiations (Quadriere-und-Multipliziere-Exponentiation) Berechnung, so dass während der eigentlichen RSA Berechnung der Basiswert B immer einen anderen Wert annimmt.
  • Ein RSA Square-and-Multiply Algorithmus (Quadriere-und-Multipliziere-Algorithmus) berechnet eine modulare exponentiation eines Exponenten E zu einer Basis B modulo N. (B^E) mod N
  • Die Berechnung geschieht so das der Exponent bitweise abgescannt (abgetastet) wird und für jedes Bit immer eine Square Operation (Quadriere-Operation) durchgeführt wird, und falls das Bit 1 ist zusätzlich eine Multiply operation (Multipliziere-Operation).
  • Die Quadriere-Operation ist eine modulare Multiplikation eines fortlaufenden Zwischenergebnisses mit sich selbst.
  • Die Multipliziere-Operation ist eine modulare Multiplikation eines fortlaufenden Zwischenergebnisses mit der Basis B.
  • Im folgenden ist ein Beispiel für einen bekannten Quadriere-und-Multipliziere-Algorithmus (mit Zahlen in Hexadezimaldarstellung) gezeigt:

    Basis B = 0x03
    Exponent E = 0x31 = 110001 (binär), gescannt (abgetastet) wird von MSB (most significant bit, höchstwertiges Bit) nach LSB (least significant bit, niederwertigstes Bit)
    Modul N = 0x17

    Laufendes Zwischenergebnis Z = 0x01

    1.bit = 1
    Quadriere: Z = Z·Z mod N = 0x01·0x01 mod 0x17 = 0x01
    Multipliziere: Z = Z·B mod N = 0x01·0x03 mod 0x17 = 0x03
    2.bit = 1
    Quadriere: Z = Z·Z mod N = 0x03·0x03 mod 0x17 = 0x09
    Multipliziere: Z = Z·B mod N = 0x09·0x03 mod 0x17 = 0x04
    3.bit = 0
    Quadriere: Z = Z·Z mod N = 0x04·0x04 mod 0x17 = 0x10
    4.bit = 0
    Quadriere: Z = Z·Z mod N = 0x10·0x10 mod 0x17 = 0x03
    5.bit = 0
    Quadriere: Z = Z·Z mod N = 0x03·0x03 mod 0x17 = 0x09
    6.bit = 1
    Quadriere: Z = Z·Z mod N = 0x09·0x09 mod 0x17 = 0x0C
    Multipliziere: Z = Z·B mod N = 0x0C·0x03 mod 0x17 = 0x0D

    Ergebnis: Z = (0x03^0x31) mod 0x17 = 0x0D
  • Während bei der Quadriere-Operation der Multiplikand und der Multiplikator immer einen anderen Inhalt haben wenn es zu der modularen Multiplikation kommt, ist bei der Multipliziere-Operation nur der Multiplikator anders, der Multiplikand ist jedoch immer der gleiche Basiswert B. Dieses Verhalten kann abhängig von dem darunterliegenden Hardware Rechenwerk zu einem Leckstrom (Leckage) führen, dass man anhand des Stromverbrauchs die Quadriere von der Multipliziere-Operation unterscheiden kann.
  • Eine RSA Exponentiationsberechnung kann mit unterschiedlichen Algorithmen realisiert werden. Ein sehr bekannter Algorithmus ist hier unter dem Namen Montgomery-Ladder (Montgomery-Leiter) bekannt. Bei diesem Algorithmus gibt es das Problem nicht, da hier sowohl bei der Square als auch bei der Multipliziere-Operation sowohl Multiplikand als auch Multiplikator von Bit zu Bit immer unterschiedlich sind.
  • Eine RSA Montgomery-Ladder Exponentiation ist jedoch deutlich langsamer (ca 33%) als eine Quadriere-und-Multipliziere-Lösung, wie sie entsprechend des erfindungsgemäßen Konzepts realisiert werden kann.
  • Idee der Erfindung ist es, den Basiswert B während der Quadriere-und-Multipliziere RSA Exponentiation zu randomisieren (zufällig zu machen), um damit einer möglichen Schwäche des Hardware Rechenwerkes entgegenzuwirken. Im folgenden Beispiel wird der Basiswerte B alle 16-bit des Exponenten weiter randomisiert, sprich geändert. Bei einer 1024-bit RSA Exponentiation bedeutet dies dass der Exponent (1024/16 = 64) mal geändert wird, und damit ein mögliches Angriffsszenario erschwert. Die Randomisierungsstärke der fliegenden (on-the-fly) Basiswert Randomisierung (Basiswert-zufällig-Machung) beträgt in diesem Beispiel 16-bit.
  • Generell kann das beschriebene Konzept aber auch so angepasst werden dass die Randomisierung alle n-bits des Exponenten gemacht wird mit einer Randomisierungsstärke von m-bits.
  • Durch das beschriebene Konzept kann ein Hardware Rechenwerk, das Angriffsmöglichkeit bietet, deutlich sicherer gemacht werden.
  • Gegenüber einer Montgomery-Ladder Exponentiation ist die hier vorgeschlagene Lösungsmöglichkeit bis zu (33 – n) Prozent schneller.
  • Dies kann durch die beschriebene Randomisierung des Basiswertes während der Exponentiation ermöglicht werden. Die neue RSA Exponentiation kann z. B. Quadriere-und-Multipliziere-mit-variierendem-Basiswert (Square-and-Multiply-with-Changing-Base) genannt werden.
  • Im folgenden wird zum besseren Verständnis eine Standard Implementierung eines Quadriere-und-Multipliziere Algorithmus ohne Gegenmaßnahmen mit einer möglichen erfindungsgemäßen Implementierung verglichen. Eine sichere Exponentiationsroutine benötigt Gegenmaßnahmen. Zur Demonstration der Erfindung wird jedoch hier eine einfache Quadriere-und-Multipliziere Funktion verwendet.
  • Im Folgenden ist ein Beispiel für einen Programmcode für die Berechnung der Exponentiation ohne Verschleierung durch eine Zufallszahl gezeigt. Dabei repräsentiert cl_e den Exponenten und der Basiswert ist in Register CR0 sowie der Modulwert in Register N gespeichert. Der Algorithmus realisiert eine Links-zu-Rechts-Exponentiation, bei der mit dem höchstwertigen Bit begonnen wird.
  • Figure 00140001
  • Figure 00150001
  • Im Vergleich dazu ist im Folgenden eine Implementierung nach dem erfinderischen Konzept gezeigt. Dabei werden der Basiswert, der Exponent, der Modulwert und die vordefinierte Bitlänge der Zufallszahl an die Funktion übergeben. Der Exponent wird durch cl_e übergeben, der Basiswert wird anfangs im Register CR0, der Modulwert im Register N und die vordefinierte Bitlänge der Zufallszahl als Variable _Datenlänge_ gespeichert.
  • Die aktuelle Zufallszahl wird durch die Variable RND und die vorhergehende Zufallszahl durch die Variable OLDRND gespeichert.
  • Figure 00150002
  • Figure 00160001
  • Als nächstes werden Vorbereitungen für die Berücksichtigung der Zufallszahl getroffen, indem der Basiswert um 16 Bit erweitert wird, wodurch er jedoch seinen Wert behält, und der Modulwert um 16 Bit nach links geschoben wird, was einer Multiplikation mit 216 entspricht. Dabei tauscht die Funktion Exch die Inhalte der beiden nachfolgend bezeichneten Register aus und die Funktion Srh schiebt den Inhalt des erstgenannten Registers um die Anzahl von Bits im zweitgenannten Register oder in der zweitgenannten Variable.
  • Figure 00160002
  • Figure 00170001
  • Als nächstes wird für jeweils 16 Bit (16 Bit ist durch die Variable _Datenlänge_ festgelegt, kann jedoch auch beliebig anders gewählt werden) ein neuer zufälliger Basiswert berechnet. Dies entspricht dem zuvor erwähnten Beispiel, bei dem eine vordefinierte Anzahl von Bits des Exponenten festgelegt ist, für welche jeweils derselbe zufällige Basiswert verwendet wird. Alternativ kann an dieser Stelle auch beispielsweise eine Zufallszahl an Bits des Exponenten gewählt werden, für die derselbe zufällige Basiswert verwendet wird, für alle Bits des Exponenten derselbe zufällige Basiswert verwendet werden oder für jedes Bit des Exponenten ein neuer zufälliger Basiswert berechnet werden. Im vorliegenden Beispiel wird der zufällige Basiswert nach jeweils 16 Bit des Exponenten gewechselt. Sollte die Anzahl von Bits des Exponenten nicht durch 16 teilbar sein, wird zuletzt ein zufälliger Basiswert für die restlichen, weniger als 16 Bits des Exponenten berechnet. Die Berechnung des zufälligen Basiswerts kann, wie bereits erwähnt, beispielsweise durch eine Multiplikation der Zufallszahl mit dem Modulwert und eine anschließende Addition mit dem Basiswert berechnet werden. Im vorliegenden Beispiel ist eine speichersparende Alternative gezeigt, bei dem ein neuer zufälliger Basiswert jeweils aus dem vorherigen zufälligen Basiswert und dessen erzeugende vorherige Zufallszahl berechnet wird. Dabei wird in Abhängigkeit eines Vergleichs der vorhergehenden Zufallszahl und der aktuellen Zufallszahl der vorhergehende zufällige Basiswert verändert (Addition oder Subtraktion eines Vielfachen des Modulswerts) oder unverändert gelassen. Dies ist im Detail im Folgenden beschrieben.
  • Figure 00180001
  • Figure 00190001
  • Nach der Berechnung des zufälligen Basiswerts wird der Quadriere-und-Multipliziere-Algorithmus unter Verwendung des zufälligen Basiswerts für jene Bits des Exponenten durchgeführt, die denselben zufälligen Basiswert verwenden, was im vorliegenden Beispiel 16 Bit (außer bei den letzen oder ersten Bits des Exponenten möglicherweise weniger als 16 Bit) sind. Die Funktion MultN_C_C_(C) führt dabei eine Multiplikation des Werts in Register C mit sich selbst aus, wendet darauf die Modulo-Funktion mit dem Modulwert im Register N an und legt das Ergebnis wieder in Register C ab.
  • Figure 00190002
  • Figure 00200001
  • Danach erfolgt eine Rückgewinnung des ursprünglichen Basiswerts basierend auf der zuletzt verwendeten Zufallszahl und eine Rückgewinnung des ursprünglichen Modulwerts durch ein Verschieben nach links, um die Anzahl der Bits der Zufallszahl.
  • Figure 00200002
  • Zuletzt erfolgt eine Endreduktion des Ergebnisses der Exponentiation durch die Anwendung der Modulo-Funktion mit dem Modulwert N. Dies wird durch die Funktion EndRed_Z_Z_(N) ausgeführt.
  • Figure 00210001
  • Durch das gezeigte Beispiel kann z. B. eine fliegende Zufälligmachung eines Basiswerts in einem RSA-Quadriere- und Multipliziere-Algorithmus realisiert werden, der beispielsweise Quadriere-und-Multipliziere-mit-varierendem-Basiswert-Algorithmus genannt werden kann.
  • Eine alternative Lösung könnte anstatt den Basiswert alle 16-bit zu randomisieren (zufällig zu machen), die Randomisierung all n-Bits durchführen, n [1, ExponentBitlänge]. Ebenfalls eine Randomisierung mit einem variablen Intervall ist denkbar, d. h. B wird nicht alle n-Bits randomisiert sondern der Abstand ist zufällig gewählt.
  • Eine weitere Alternative besteht in der Anzahl der Bits mit denen randomisiert wird, also der Randomisierungsstärke. Im obigen Beispiel wurde hier mit 16-bit randomisert, dieser Wert kann jedoch auch andere Werte annehmen, z. B. 32-bit, oder 10-bit.
  • Für die Implementierung des erfindungsgemäßen Konzepts kann beispielsweise ein Prozessor mit einer Langzahlarithmetischen-logischen-Einheit verwendet werden, die zumindestens ein Basiswertregister zum anfänglichen Speichern des Basiswerts (z. B. in der Implementierung zuvor CR0), ein Modulwertregister zum anfänglichen Speichern des Modulwerts (z. B. N in der vorher beschriebenen Implementierung) und ein Ergebnisregister zum Speichern des Ergebnisses der Exponentiation (z. B. Z in der vorherigen Implementierung) aufweist.
  • Allgemein kann das erfindungsgemäße Konzept auch als eine Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten modulo eines Modulwerts zum Verschlüsseln oder Entschlüsseln von Daten, mit einer Vorrichtung zum Erzeugen einer Zufallszahl und einer Vorrichtung zum Berechnen des Ergebnisses der Exponentiation realisiert werden. Die Vorrichtung zum Erzeugen einer Zufallszahl ist ausgelegt, um eine Zufallszahl zu erzeugen, und die Vorrichtung zum Berechnen des Ergebnisses der Exponentiation ist ausgelegt, um eine Summe des Basiswerts (B) mit einem Vielfachen des Modulwerts (N) zu berechnen, um einen zufälligen Basiswert (BR) zu erhalten. Dabei ist das Vielfache des Modulwerts (N) von der Zufallszahl (R) abhängig. Des Weiteren ist die Vorrichtung zum Berechnen des Ergebnisses der Exponentiation ausgelegt, um das Ergebnis der Exponentiation, basierend auf dem zufälligen Basiswert (BR) zu berechnen.
  • Einige Ausführungsbeispiele gemäß der Erfindung beziehen sich auf eine Anwendung eines erfindungsgemäßen Kryptographie-Prozessors in einer Chipkarte (SmartCard). 2 zeigt ein Blockdiagramm einer Chipkarte 200 als Ausführungsbeispiel gemäß der Erfindung. Die Chipkarte 200 umfasst einen Zufallszahlengenerator 110 und einen Prozessor 120, die auch beispielsweise in 1 gezeigt und beschrieben sind. Zusätzlich weist die Chipkarte 200 einen Speicher 230 und eine Eingangs-Ausgangs-Schnittstelle (I/O-Schnittstelle) 240 auf. Die Eingangs-Ausgangs-Schnittstelle 240, der Speicher 230 und der Zufallszahlengenerator 110 sind mit dem Prozessor 120 verbunden. Der Speicher 230 kann vom Prozessor 120 zu verschlüsselnde Daten, vom Prozessor entschlüsselte Daten, den Exponenten der Exponentiation (z. B. als privater Schlüssel), Zwischenergebnisse oder andere Variablen oder Parameter speichern und diese dem Prozessor 120 zur Verfügung stellen. Die Eingangs-Ausgangs-Schnittelle 240 kann beispielsweise zu verschlüsselnde Daten empfangen und an dem Prozessor 120 weiterleiten oder verschlüsselte Daten vom Prozessor 120 empfangen und an einen Empfänger übermitteln. Dies kann sowohl kabelgebunden als auch kabellos erfolgen.
  • Solche Chipkarten können beispielsweise Anwendung als Geldkarten, Simkarten für Telefone, Karten zur Identifikation oder Decoderkarten für Bezahl-TV-Anwendungen finden.
  • 3 zeigt ein Flussdiagramm eines Verfahrens 300 zur Berechnung eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten modulo eines Modulwerts zum Verschlüsseln von Daten entsprechend eines Ausführungsbeispiels gemäß der Erfindung. Das Verfahren 300 umfasst ein Erzeugen 310 einer Zufallszahl, ein Berechnen 320 einer Summe des Basiswerts mit einem Vielfachen des Modulwerts, um einen zufälligen Basiswert zu erhalten, und ein Berechnen 330, des Ergebnisses der Exponentiation basierend auf dem zufälligen Basiswert. Das Vielfache des Modulwerts hängt dabei von der Zufallszahl ab.
  • Optional kann das Verfahren 300 weitere Schritte umfassen, die Merkmalen entsprechen, die z. B. im Zusammenhang mit dem zuvor beschriebenen Kryptographie-Prozessor oder allgemein dem erfindungsgemäßen Konzept beschrieben wurden.
  • Obwohl manche Aspekte im Zusammenhang mit einer Vorrichtung beschrieben wurden, versteht es sich, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens darstellen, sodass ein Block oder ein Bauelement einer Vorrichtung auch als ein entsprechender Verfahrensschritt oder als ein Merkmal eines Verfahrensschrittes zu verstehen ist. Analog dazu stellen Aspekte, die im Zusammenhang mit einem oder als ein Verfahrensschritt beschrieben wurden, auch eine Beschreibung eines entsprechenden Blocks oder Details oder Merkmals einer entsprechenden Vorrichtung dar.
  • Je nach 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 Floppy-Disk, einer DVD, einer Blu-ray Disc, einer CD, eines ROM, eines PROM, eines EPROM, eines EEPROM oder eines FLASH-Speichers, einer Festplatte oder eines anderen magnetischen oder optischen Speichers durchgeführt werden, auf dem elektronisch lesbare Steuersignale gespeichert sind, die mit einem programmierbaren Computersystem derart zusammenwirken können oder zusammenwirken, dass das jeweilige Verfahren durchgeführt wird. Deshalb kann das digitale Speichermedium computerlesbar sein. Manche Ausführungsbeispiele gemäß der Erfindung umfassen also einen Datenträger, der elektronisch lesbare Steuersignale aufweist, die in der Lage sind, mit einem programmierbaren Computersystem derart zusammenzuwirken, dass eines der hierin beschriebenen Verfahren durchgeführt wird.
  • Allgemein können Ausführungsbeispiele der vorliegenden Erfindung als Computerprogrammprodukt mit einem Programmcode implementiert sein, wobei der Programmcode dahin gehend wirksam ist, eines der Verfahren durchzuführen, wenn das Computerprogrammprodukt auf einem Computer abläuft. Der Programmcode kann beispielsweise auch auf einem maschinenlesbaren Träger gespeichert sein.
  • Andere Ausführungsbeispiele umfassen das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren, wobei das Computerprogramm auf einem maschinenlesbaren Träger gespeichert ist.
  • Mit anderen Worten ist ein Ausführungsbeispiel des erfindungsgemäßen Verfahrens somit ein Computerprogramm, das einen Programmcode zum Durchführen eines der hierin beschriebenen Verfahren aufweist, wenn das Computerprogramm auf einem Computer abläuft. Ein weiteres Ausführungsbeispiel der erfindungsgemäßen Verfahren ist somit ein Datenträger (oder ein digitales Speichermedium oder ein computerlesbares Medium), auf dem das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren aufgezeichnet ist.
  • Ein weiteres Ausführungsbeispiel des erfindungsgemäßen Verfahrens ist somit ein Datenstrom oder eine Sequenz von Signalen, der bzw. die das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren darstellt bzw. darstellen. Der Datenstrom oder die Sequenz von Signalen kann bzw. können beispielsweise dahin gehend konfiguriert sein, über eine Datenkommunikationsverbindung, beispielsweise über das Internet, transferiert zu werden.
  • Ein weiteres Ausführungsbeispiel umfasst eine Verarbeitungseinrichtung, beispielsweise einen Computer oder ein programmierbares Logikbauelement, die dahin gehend konfiguriert oder angepasst ist, eines der hierin beschriebenen Verfahren durchzuführen.
  • Ein weiteres Ausführungsbeispiel umfasst einen Computer, auf dem das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren installiert ist.
  • Bei manchen Ausführungsbeispielen kann ein programmierbares Logikbauelement (beispielsweise ein feldprogrammierbares Gatterarray, ein FPGA) dazu verwendet werden, manche oder alle Funktionalitäten der hierin beschriebenen Verfahren durchzuführen. Bei manchen Ausführungsbeispielen kann ein feldprogrammierbares Gatterarray mit einem Mikroprozessor zusammenwirken, um eines der hierin beschriebenen Verfahren durchzuführen. Allgemein werden die Verfahren bei einigen Ausführungsbeispielen seitens einer beliebigen Hardwarevorrichtung durchgeführt. Diese kann eine universell einsetzbare Hardware wie ein Computerprozessor (CPU) sein oder für das Verfahren spezifische Hardware, wie beispielsweise ein ASIC.
  • Die oben beschriebenen Ausführungsbeispiele stellen lediglich eine Veranschaulichung der Prinzipien der vorliegenden Erfindung dar. Es versteht sich, dass Modifikationen und Variationen der hierin beschriebenen Anordnungen und Einzelheiten anderen Fachleuten einleuchten werden. Deshalb ist beabsichtigt, dass die Erfindung lediglich durch den Schutzumfang der nachstehenden Patentansprüche und nicht durch die spezifischen Einzelheiten, die anhand der Beschreibung und der Erläuterung der Ausführungsbeispiele hierin präsentiert wurden, beschränkt sei.

Claims (18)

  1. Kryptographie-Prozessor (100) zur Berechnung eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten modulo eines Modulwerts zum Verschlüsseln oder Entschlüsseln von Daten, mit folgenden Merkmalen: einem Zufallszahlengenerator (110), der ausgelegt ist, um eine Zufallszahl (R) zu erzeugen; und einem Prozessor (120), der ausgelegt ist, um eine Summe des Basiswerts (B) mit einem Vielfachen des Modulwerts (N) zu berechnen, um einen zufälligen Basiswert (BR) zu erhalten, wobei das Vielfache des Modulwerts (N) von der Zufallszahl (R) abhängt, und wobei der Prozessor (120) ausgelegt ist, um das Ergebnis der Exponentiation basierend auf dem zufälligen Basiswert (BR) zu berechnen.
  2. Kryptographie-Prozessor gemäß Anspruch 1, wobei der Prozessor (120) ausgelegt ist, um den zufälligen Basiswert (BR) durch eine Multiplikation des Modulwerts (N) mit der Zufallszahl (R) und einer anschließenden Addition des Basiswerts (B) zu erhalten.
  3. Kryptographie-Prozessor gemäß Anspruch 1 oder Anspruch 2, wobei der Prozessor (120) ausgelegt ist, um das Ergebnis der Exponentiation durch eine Berechnung eines Zwischenergebnisses für jedes Bit des Exponenten zu berechnen.
  4. Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 3, wobei der Zufallszahlengenerator (110) ausgelegt ist, um die Zufallszahl (R) mit einer vordefinierten Bitlänge zu erzeugen.
  5. Kryptographie-Prozessor gemäß Anspruch 4, wobei die vordefiniert Bitlänge der Zufallszahl (R) zumindest gleich groß ist, wie eine Anzahl von Bits des Exponenten (E) für welche die Berechnung der zugehörigen Zwischenergebnisse auf demselben zufälligen Basiswert (BR) basiert.
  6. Kryptographie-Prozessor gemäß einem der Ansprüche 3 bis 5, wobei der Prozessor ausgelegt ist, um die Zwischenergebnisse für alle Bits des Exponenten (E) basierend auf unterschiedlichen zufälligen Basiswerten (BR) zu berechnen, die Zwischenergebnisse einer vordefinierten Anzahl von Bits des Exponenten (E) basierend auf einem selben zufälligen Basiswert (BR) zu berechnen, die Zwischenergebnisse einer zufälligen Anzahl von Bits des Exponenten (E) basierend auf einem selben zufälligen Basiswert (BR) zu berechnen oder die Zwischenergebnisse für alle Bits des Exponenten (E) basierend auf demselben zufälligen Basiswert (BR) zu berechnen.
  7. Kryptographie-Prozessor gemäß einem der Ansprüche 3 bis 6, wobei der Prozessor (120) ausgelegt ist, um zur Berechnung des Zwischenergebnisses eines Bits des Exponenten (E) ein Zwischenergebnis eines vorhergehenden Bits mit sich selbst zu multiplizieren und das Ergebnis modulo dem Modulwert (N) zu berechnen, um das Zwischenergebnis für das aktuelle Bit des Exponenten (E) zu erhalten, wenn das Bit des Exponenten (E) einen ersten Wert aufweist, und wobei der Prozessor (120) ausgelegt ist, um zusätzlich das Ergebnis der Multiplikation des Zwischenergebnisses des vorhergehenden Bits mit sich selbst modulo dem Modulwert (N) mit dem zufälligen Basiswert (BR) zu multiplizieren und das Ergebnis modulo dem Modulwert (N) zu berechnen, um das Zwischenergebnis für das aktuelle Bit des Exponenten (E) zu erhalten, wenn da Bit des Exponenten (E) einen zweiten Wert aufweist.
  8. Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 7, wobei der Prozessor (120) ausgelegt ist, um eine aktuelle Zufallszahl (R) mit einer vorhergehend verwendeten Zufallszahl zu vergleichen, wobei der Prozessor 120 ausgelegt ist, um in Abhängigkeit des Vergleichs der Zufallszahlen für jedes Bit der aktuellen Zufallszahl entweder ein dem Stellenwert des jeweiligen Bits der Zufallszahl (R) entsprechendes Vielfaches des Modulwerts (N) dem Basiswert (B) oder einem vorhergehend verwendeten, zufälligen Basiswert (BR) hinzuzufügen, vom Basiswert (B) oder einem vorhergehend verwendeten, zufälligen Basiswert (BR) abzuziehen oder dem Basiswert (B) oder einem vorhergehend verwendeten, zufälligen Basiswert (BR) für das jeweilige Bit unverändert zu lassen, um einen zufälligen Basiswert (BR) zu berechnen.
  9. Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 8, wobei der Prozessor (120) ausgelegt ist, um zur Berechnung des zufälligen Basiswerts (BR) den Modulwert (N) in seiner binären Darstellung um die Bitlänge der Zufallszahl (R) nach links zu verschieben.
  10. Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 9, wobei der Prozessor (120) ausgelegt ist, um das Ergebnis der Exponentiation, basierend auf einer Quadriere-und-Multipliziere-Exponentiation zu berechnen.
  11. Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 10, wobei der Prozessor (120) ausgelegt ist, um das Ergebnis der Exponentiation, basierend auf einer Links-nach-Rechts-Exponentiation zu berechnen.
  12. Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 11, wobei der Prozessor (120) ausgelegt ist, um nach der Berechnung des Ergebnisses der Exponentiation eine Endreduktion durch Berechnung des modulo des Ergebnisses der Exponentiation mit dem Modulwert (N) durchzuführen, um das Ergebnis der Exponentiation des Basiswerts (B) mit dem Exponenten (E) modulo des Modulwerts (N) zu erhalten.
  13. Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 12, wobei der Prozessor (120) ein Basiswertregister, ein Modulwertregister und ein Ergebnisregister aufweist, wobei das Basiswertregister ausgelegt ist, um den Basiswert (B) zu speichern, wobei das Modulwertregister ausgelegt ist, um den Modulwert (N) zu speichern, und wobei das Ergebnisregister ausgelegt ist, um das Ergebnis der Exponentiation des Basiswerts (B) mit dem Exponenten (E) modulo des Modulwerts (N) zu speichern.
  14. Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 13, wobei der Basiswert (B) zu verschlüsselnde Daten repräsentiert und das Ergebnis der Exponentiation des Basiswerts (B) mit dem Exponenten (E) modulo des Modulwerts (N) verschlüsselte Daten repräsentiert oder der Basiswert (B) verschlüsselte Daten repräsentiert und das Ergebnis der Exponentiation des Basiswerts (B) mit dem Exponenten (E) modulo des Modulwerts (N) entschlüsselte Daten repräsentiert.
  15. Chipkarte mit einem Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 14.
  16. Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten modulo eines Modulwerts zum Verschlüsseln oder Entschlüsseln von Daten, mit folgenden Merkmalen: einer Vorrichtung zum Erzeugen einer Zufallszahl, die ausgelegt ist, um eine Zufallszahl zu erzeugen; und einer Vorrichtung zum Berechnen des Ergebnisses der Exponentiation, die ausgelegt ist, um eine Summe des Basiswerts (B) mit einem Vielfachen des Modulwerts (N) zu berechnen, um einen zufälligen Basiswert (BR) zu erhalten, wobei das Vielfache des Modulwerts (N) von der Zufallszahl (R) abhängt, und wobei die Vorrichtung zum Berechnen des Ergebnisses der Exponentiation ausgelegt ist, um das Ergebnis der Exponentiation, basierend auf dem zufälligen Basiswert (BR) zu berechnen.
  17. Verfahren (300) zur Berechnung eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten modulo eines Modulwerts zum Verschlüsseln oder Entschlüsseln von Daten, mit folgenden Schritten: Erzeugen (310) einer Zufallszahl; Berechnen (320) einer Summe des Basiswerts mit einem Vielfachen des Modulwerts, um einen zufälligen Basiswert zu erhalten, wobei das Vielfache des Modulwerts von der Zufallszahl abhängt; und Berechnen (330) des Ergebnisses der Exponentiation basierend auf dem zufälligen Basiswert.
  18. Computerprogramm mit einem Programmcode zum Durchführen eines Verfahrens gemäß Anspruch 17, wenn das Computerprogramm auf einem Computer oder Mikrocontroller abläuft.
DE201010039273 2010-08-12 2010-08-12 Kryptographie-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation Active DE102010039273B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE201010039273 DE102010039273B4 (de) 2010-08-12 2010-08-12 Kryptographie-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE201010039273 DE102010039273B4 (de) 2010-08-12 2010-08-12 Kryptographie-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation

Publications (2)

Publication Number Publication Date
DE102010039273A1 true DE102010039273A1 (de) 2012-02-16
DE102010039273B4 DE102010039273B4 (de) 2014-12-04

Family

ID=45528456

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201010039273 Active DE102010039273B4 (de) 2010-08-12 2010-08-12 Kryptographie-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation

Country Status (1)

Country Link
DE (1) DE102010039273B4 (de)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10042234A1 (de) * 2000-08-28 2002-03-14 Infineon Technologies Ag Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor
DE10304451B3 (de) * 2003-02-04 2004-09-02 Infineon Technologies Ag Modulare Exponentiation mit randomisiertem Exponenten
GB2399904A (en) * 2003-03-28 2004-09-29 Sharp Kk Side channel attack prevention in data processing by adding a random multiple of the modulus to the plaintext before encryption.

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10042234A1 (de) * 2000-08-28 2002-03-14 Infineon Technologies Ag Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor
DE10304451B3 (de) * 2003-02-04 2004-09-02 Infineon Technologies Ag Modulare Exponentiation mit randomisiertem Exponenten
GB2399904A (en) * 2003-03-28 2004-09-29 Sharp Kk Side channel attack prevention in data processing by adding a random multiple of the modulus to the plaintext before encryption.

Also Published As

Publication number Publication date
DE102010039273B4 (de) 2014-12-04

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
DE102017117907B4 (de) Durchführen einer kryptografischen Operation
EP2742643B1 (de) Vorrichtung und verfahren zum entschlüsseln von daten
DE2843583C2 (de) Verfahren für den zugriffsicheren Nachrichtenverkehr über einen ungesicherten Nachrichtenübertragungskanal
EP1262037B1 (de) Tragbarer datenträger mit zugriffsschutz durch schlüsselteilung
DE102006022960B9 (de) Verfahren zum Verschlüsseln von Eingabedaten, kryptographisches System und Computerprogrammprodukt
DE102005028662A1 (de) Verfahren und Vorrichtung zum Berechnen einer Polynom-Multiplikation, insbesondere für die elliptische Kurven-Kryptographie
EP1891512B1 (de) Bestimmung einer modularen inversen
EP2656535B1 (de) Kryptographisches verfahren
DE112008000668T5 (de) Kryptografisches Verfahren und System
DE10143728B4 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Exponentiation
EP1922837B1 (de) Verfahren zum sicheren ver- oder entschlüsseln einer nachricht
DE102005037598A1 (de) Verfahren und System zur Sicherung von Daten
DE112009000154T5 (de) Änderung der Darstellung eines Punktes auf einer elliptischen Kurve
DE102008051447B4 (de) Verfahren und Vorrichtung zum Schützen einer RSA-Berechnung an einer Ausgabe mit Hilfe des chinesischen Restsatzes
DE112009000152B4 (de) Verfahren zur Datenübertragung über einen Datenkanal mit einem Elliptische-Kurven-Kryptographieverfahren und Vorrichtung hierfür
DE10304451B3 (de) Modulare Exponentiation mit randomisiertem Exponenten
DE60117813T2 (de) Verfahren und Vorrichtung zur Speicherung und wiedergewinnung eones Privaten Kryptoschlüssels
DE112018002723B4 (de) System, verfahren und vorrichtung zur verschleierung von vorrichtungsoperationen
DE102010051853A1 (de) Verfahren zur Langzahldivision
DE102010039273B4 (de) Kryptographie-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation
DE102010064578B3 (de) Kryptographie-Prozessor, Chipkarte und Verfahren zur Berechnung eines Ergebnisses einer Exponentiation
DE102021003275B3 (de) Verfahren zur Berechnung eines Übergangs von einer booleschen zu einer arithmetischen Maskierung
DE10042234C2 (de) Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor
EP1506473B1 (de) Ausspähungsgeschützte modulare inversion

Legal Events

Date Code Title Description
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R130 Divisional application to

Ref document number: 102010064576

Country of ref document: DE

Ref document number: 102010064578

Country of ref document: DE

R018 Grant decision by examination section/examining division
R130 Divisional application to

Ref document number: 102010064578

Country of ref document: DE

Effective date: 20140811

Ref document number: 102010064576

Country of ref document: DE

Effective date: 20140811

R020 Patent grant now final
R082 Change of representative