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 PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public 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/302—Public 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public 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/3033—Public 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details 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-Prozessors100 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-Prozessor100 umfasst einen Zufallszahlengenerator110 und einen Prozessor120 . Der Zufallszahlengenerator110 ist mit dem Prozessor120 verbunden und erzeugt eine Zufallszahl R. Der Prozessor120 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 Prozessor120 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 in1 angedeutet. - Durch das beschriebene Konzept kann beispielsweise die zentrale Rechenoperation des RSA-Verfahrens
(B^E) mod N - 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 Prozessor120 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-Prozessors100 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 Prozessor120 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 Prozessors120 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 Zufallszahlengenerator110 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 Chipkarte200 als Ausführungsbeispiel gemäß der Erfindung. Die Chipkarte200 umfasst einen Zufallszahlengenerator110 und einen Prozessor120 , die auch beispielsweise in1 gezeigt und beschrieben sind. Zusätzlich weist die Chipkarte200 einen Speicher230 und eine Eingangs-Ausgangs-Schnittstelle (I/O-Schnittstelle)240 auf. Die Eingangs-Ausgangs-Schnittstelle240 , der Speicher230 und der Zufallszahlengenerator110 sind mit dem Prozessor120 verbunden. Der Speicher230 kann vom Prozessor120 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 Prozessor120 zur Verfügung stellen. Die Eingangs-Ausgangs-Schnittelle240 kann beispielsweise zu verschlüsselnde Daten empfangen und an dem Prozessor120 weiterleiten oder verschlüsselte Daten vom Prozessor120 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 Verfahrens300 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 Verfahren300 umfasst ein Erzeugen310 einer Zufallszahl, ein Berechnen320 einer Summe des Basiswerts mit einem Vielfachen des Modulwerts, um einen zufälligen Basiswert zu erhalten, und ein Berechnen330 , 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)
- 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. - 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. - 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. - 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. - 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.
- 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.
- 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. - 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 Prozessor120 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. - 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. - 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. - 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. - 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. - 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. - 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.
- Chipkarte mit einem Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 14.
- 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.
- 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. - Computerprogramm mit einem Programmcode zum Durchführen eines Verfahrens gemäß Anspruch 17, wenn das Computerprogramm auf einem Computer oder Mikrocontroller abläuft.
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)
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. |
-
2010
- 2010-08-12 DE DE201010039273 patent/DE102010039273B4/de active Active
Patent Citations (3)
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 |