DE102010064578B3 - Cryptography processor, smart card and method of calculating a result of exponentiation - Google Patents

Cryptography processor, smart card and method of calculating a result of exponentiation Download PDF

Info

Publication number
DE102010064578B3
DE102010064578B3 DE102010064578.8A DE102010064578A DE102010064578B3 DE 102010064578 B3 DE102010064578 B3 DE 102010064578B3 DE 102010064578 A DE102010064578 A DE 102010064578A DE 102010064578 B3 DE102010064578 B3 DE 102010064578B3
Authority
DE
Germany
Prior art keywords
base value
random
value
result
exponent
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.)
Active
Application number
DE102010064578.8A
Other languages
German (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 DE102010064578.8A priority Critical patent/DE102010064578B3/en
Application granted granted Critical
Publication of DE102010064578B3 publication Critical patent/DE102010064578B3/en
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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7252Randomisation as countermeasure against side channel attacks of operation order, e.g. starting to treat the exponent at a random place, or in a randomly chosen direction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

Kryptographie-Prozessor (100) zur Berechnung eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten (E) modulo eines Modulwerts (N) 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, wobei der Zufallszahlengenerator (110) ausgelegt ist, um die Zufallszahl (R) mit einer vordefinierten Bitlänge zu erzeugen, wobei die vordefinierte 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, wobei der Prozessor (120) 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 oder die Zwischenergebnisse einer zufälligen Anzahl von Bits des Exponenten (E) basierend auf einem selben zufälligen Basiswert (BR) zu berechnen, 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.A cryptographic processor (100) for calculating a result of an exponentiation of a base value with an exponent (E) modulo a modulus value (N) for encrypting or decrypting data, comprising: a random number generator (110) adapted to generate a random number To produce (R); and a processor (120) arranged to calculate a sum of the base value (B) by a multiple of the modulus value (N) to obtain a random base value (BR), the multiple of the modulus value (N) of the Random number (R) depends, and wherein the processor (120) is adapted to calculate the result of the exponentiation based on the random base value (BR), wherein the random number generator (110) is adapted to the random number (R) with a predefined Bit length, where the predefined bit length of the random number (R) is at least equal to a number of bits of the exponent (E) for which the calculation of the associated intermediate results is based on the same random base value (BR), the processor (120) is designed to calculate the intermediate results for all bits of the exponent (E) based on different random base values (BR), the intermediate results of a predefined number of bits of the Ex compute components (E) based on a same random base (BR) or calculate the intermediate results of a random number of bits of the exponent (E) based on a same random base (BR), the processor (120) being adapted to to calculate the random base value (BR), shift the modulus value (N) in its binary representation to the left by the bit length of the random number (R).

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.Embodiments according to the invention relate to cryptography systems and in particular to a cryptography processor, a smart card and a method for calculating a result of an exponentiation of a base value with an exponent modulo a module value for encrypting data.

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.Today, electronic data is transmitted every day. Often this also applies to sensitive information, for example, business or personal data. For such data, secure transmission is extremely important. Accordingly, encryption and decryption techniques are used to protect this data from unwanted access.

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.However, unwanted persons could attempt to decrypt the secured data or, for example, a private key used to encrypt the data. For example, attackers may attempt to collect page channel information (eg, power usage information, electromagnetic information, or error information) from a device that is currently encrypting the data. Therefore, it is of great interest to develop cryptographic systems that are as secure as possible against attacks.

Aus der DE 199 63 407 A1 ist ein tragbarer Datenträger mit einem Halbleiterchip bekannt, wobei Daten, die für eine Berechnung mehrmals verwendet werden, mit unterschiedlichen Funktionen verfremdet werden, was in Form einer Verschlüsselung mittels Modulo-Operationen implementiert ist. Bei jeder Verfremdung wird zu einer Nachricht ein Faktor addiert, der aus dem Produkt des Modulus und einem Wert, der sich bei jeder Verwendung ändern kann, besteht.From the DE 199 63 407 A1 For example, a portable data carrier with a semiconductor chip is known, wherein data that is used several times for a calculation is alienated with different functions, which is implemented in the form of an encryption by means of modulo operations. For each alienation, a factor is added to a message consisting of the product of the modulus and a value that can change with each use.

Aus der GB 2 399 904 A ist eine Datenverarbeitungseinheit zum Durchführen einer modularen Exponentiationsoperation der Form md mod N bekannt, bei der die Basis vor dem Durchführen der Operation derart geändert wird, dass das Ergebnis der Modulus-Operation nicht beeinträchtigt wird.From the GB 2 399 904 A For example, a data processing unit for performing a modular exponentiation operation of the form m d mod N is known in which the base is changed prior to performing the operation such that the result of the modulus operation is not compromised.

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.It is the object of the present invention to provide a cryptography concept which makes it possible to increase the security when encrypting or decrypting data.

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.For example, encryption may be by the Rivest-Shamir-Adleman (RSA) algorithm. The RSA method is an asymmetric crypto concept that can be used for both encryption and digital signatures. It uses a key pair consisting of a private key used to decrypt or sign data and a public key that encrypts or verifies signatures. The private key is kept secret and can not be obtained from the public key or only with extremely high expenditure. Decisive in this method is the calculation of an exponentiation of a base value with an exponent modulo a modulus value to encrypt or decrypt data.

Diese Aufgabe wird durch einen Kryptographie-Prozessor gemäß Anspruch 1, eine Vorrichtung gemäß Anspruch 12 oder ein Verfahren gemäß Anspruch 13 gelöst.This object is achieved by a cryptographic processor according to claim 1, an apparatus according to claim 12 or a method according to claim 13.

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. Der Zufallszahlengenerator ist ausgelegt, um die Zufallszahl mit einer vordefinierten Bitlänge zu erzeugen. Die vordefinierte Bitlänge der Zufallszahl ist zumindest gleich groß wie eine Anzahl von Bits des Exponenten, für welche die Berechnung der zugehörigen Zwischenergebnisse auf demselben zufälligen Basiswert basiert. Der Prozessor ist ausgelegt, um die Zwischenergebnisse für alle Bits des Exponenten basierend auf unterschiedlichen zufälligen Basiswerten zu berechnen, die Zwischenergebnisse einer vordefinierten Anzahl von Bits des Exponenten basierend auf einem selben zufälligen Basiswert zu berechnen oder die Zwischenergebnisse einer zufälligen Anzahl von Bits des Exponenten basierend auf einem selben zufälligen Basiswert zu berechnen. Der Prozessor ist ausgelegt, um zur Berechnung des zufälligen Basiswerts den Modulwert in seiner binären Darstellung um die Bitlänge der Zufallszahl nach links zu verschiebenAn embodiment according to the invention provides a cryptographic processor for calculating a result of an exponentiation of a base value with an exponent modulo of a module value for encrypting or decrypting data comprising a random number generator and a processor. The random number generator is designed to generate a random number. Further, the processor is configured to calculate a sum of the base value by a multiple of the modulus value to obtain a random base value. The multiple of the module value depends on the random number. In addition, the processor is configured to calculate the result of the exponentiation based on the random base value. The random number generator is designed to generate the random number with a predefined bit length. The predefined bit length of the random number is at least equal to a number of bits of the exponent for which the calculation of the associated intermediate results is based on the same random base value. The processor is configured to calculate the intermediate results for all bits of the exponent based on different random bases, calculate the intermediate results of a predefined number of bits of the exponent based on a same random base, or the intermediate results of a random number of bits of the exponent based on to calculate a same random base value. The processor is designed to shift the modulus value in its binary representation by the bit length of the random number to the left to calculate the random base value

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. Embodiments according to the invention are based on the core idea of adding a random component to the base value of the exponentiation. However, this can not be done in any way, since the underlying represents the data to be encrypted or decrypted and this information should not be lost. However, any multiple of the modulus value may be added to the baseline, as this multiple can be easily removed by later applying the modulo function to the modulus value. By using the random base value, both the base value itself and the exponent of attacks such As performance analyzes are obfuscated. As a result, the security of encryption and decryption of data can be significantly increased in a simple manner.

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.In some embodiments according to the invention, the random base value is obtained by multiplying the modulus value by the random number and then adding the base value. As a result, the inventive concept can be realized in a very simple manner.

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.In some other embodiments according to the invention, the random number generator generates a random number having a predefined bit length. By the bit length of the random number, for example, the strength of the randomness of the random base value can be determined.

Einige Ausführungsbeispiele gemäß der Erfindung beziehen sich auf eine Chipkarte mit einem Kryptographie-Prozessor gemäß dem beschriebenen Konzept.Some embodiments according to the invention relate to a chip card with a cryptographic processor according to the described concept.

Ausführungsbeispiele gemäß der Erfindung werden nachfolgend bezugnehmend auf die beiliegenden Figuren näher erläutert.Embodiments according to the invention are explained below with reference to the accompanying figures.

Es zeigen:Show it:

1 ein Blockdiagramm eines Kryptographie-Prozessors; 1 a block diagram of a cryptography processor;

2 ein Blockdiagramm einer Chipkarte; und 2 a block diagram of a smart card; and

3 ein Flussdiagramm eines Verfahrens zur Berechnung eines Ergebnisses einer Exponentiation. 3 a flowchart of a method for calculating a result of an 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.Hereinafter, the same reference numerals are used in part for objects and functional units having the same or similar functional properties. Furthermore, optional features of the various embodiments may be combined with each other or interchangeable.

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. 1 shows a block diagram of a cryptographic processor 100 for calculating a result of an exponentiation of a base value with an exponent modulo for encrypting or decrypting data according to an embodiment according to the invention. The cryptography processor 100 includes a random number generator 110 and a processor 120 , The random number generator 110 is with the processor 120 and generates a random number R. The processor 120 calculates a sum of the base value B at a multiple of the modulus value N to obtain a random base value B R. The multiple of the modulus value N depends on the random number R. Furthermore, the processor calculates 120 the result of the exponentiation, based on the random base value B R.

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.By adding a multiple of the modulus value N as a function of the random number R to the base value B, a random base value B R can be generated, whereby the exponentiation of the base value B against attacks such. B. Performance analysis attacks, can be obscured. Nevertheless, the correct result (and, for example, the original base value B) can easily be recovered at any time by applying the modulo function (mod) with the modulus N to the random base B R. This can easily increase the security of encryption or decryption of data.

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.The base value B, the exponent E, the modulus value N and the random number R are integers which are, for example, for processing by the cryptography processor 100 present in binary representation.

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.In this context, the base value may represent data to be encrypted or encrypted data, and the result of the exponentiation modulo of the module value may represent encrypted data or decrypted data, depending on whether the cryptographic processor 100 used to encrypt or decrypt data, as in 1 indicated.

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. By the described concept, for example, the central arithmetic operation of the RSA method (B ^ E) mod N to encrypt and decrypt data more securely against attacks.

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.The random number generator 110 may be a true random number generator, the random numbers, for example based on thermal noise, or a pseudo-random number generator, the random numbers z. B. generated based on a deterministic generating functions.

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.The random number generator 110 and the processor 120 For example, they may be independent hardware units, part of a computer, microcontroller or smart card processor, as well as computer programs or software products for use on computers, microcontrollers, or smart card processors.

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.Both the calculation of the random base value B R and the calculation of the exponentiation of the base value B with the exponent E can take place in different ways.

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.For example, the random base value B R may be from the processor 120 by a multiplication of the modulus value N with the random number R and a subsequent addition of the base value B are obtained. Alternatively, however, a random base value B R can also be calculated in another way, for example, the memory requirement of the cryptography processor 100 to reduce, as will be shown later.

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 The calculation of the result of the exponentiation of the base value B with the exponent E can, for. Example, be calculated by a sequential calculation of an intermediate result ZE for each bit of the exponent E. That is, the exponentiation can be carried out, for example, by calculating intermediate results for each bit of the exponent E, using an intermediate result ZE of a previously considered bit of the exponent E for the calculation of the intermediate result ZE of a subsequent bit of the exponent E. An example of such a procedure is a quadrature and multiply exponentiation, as generally expressed as follows. ZE = ZE · ZE mod N ZE = ZE · B R mod N, if E i = 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 other words, the processor 120 For example, to calculate the intermediate result ZE of a bit E i of the exponent E, multiply an intermediate result ZE of a preceding bit E i -1 and calculate the result modulo the modulus value N to obtain the intermediate result for the current bit E i of the exponent E. if the bit E i of the exponent has a first value (0 or 1, depending on the logic used). Otherwise, the processor can 120 in addition multiply the result of the multiplication of the intermediate result ZE of the preceding bit E i + 1 with itself modulo the modulus value N with the random base value B R and calculate the result modulo the modulus value N to the intermediate result ZE for the bit E i of the exponent E when the bit E i of the exponent E has a second value (1 or 0). Depending on the implementation of the processor 120 For example, a positive logic (eg, a binary exponent of 1010, represents the decimal number 10) is used so that multiplication by the random base B R is performed when the bit E i of the exponent E is equal to 1. However, an implementation with negative logic (eg, an exponent with the bit sequence 0101 represents the decimal number 10) is also conceivable, so that the random base value B R is taken into account when the bit E i of the exponent E is equal to 0.

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.In the example described, the result of exponentiation is calculated based on left-to-right exponentiation. However, algorithms with right-to-left exponentiation may also be used. An RSA eponentiation with scan direction (scan direction) of the right-to-left exponent does not have the disadvantage that the multiply operation always takes place with the same basis. However, one can also apply the concept described to a right-to-left exponentiation in order to achieve additional obfuscation, but the great advantage as in the case of left-to-right exponentiation is not given here. However, with respect to the right-to-left exponentiation, an additional obfuscation of the base B can be made possible as an advantage of the disclosure of the invention, and less memory may be required since in the case of right-to-left exponentiation the original B is no longer present, however, in the case of left-to-right exponentiation using the inventive concept.

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. The random number generator 110 generated random number R may have any number of bits. This bit length of the random number R can be predefined, and can be a measure of the randomness of the random base value B R. In other words, by specifying the length of the random number R, a balance can be made between the gain in security and the additional computational outlay. The random number generator 110 then generates a random number R with the predefined bit length.

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.The predefined bit length can be selected, for example, at least as great as a number of bits of the exponent E for the calculation of the associated intermediate results of the same random base value B R is used.

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 other words, the same random base value B R may be used in considering all the bits of the exponent E, a predefined number of bits of the exponent E, a random number of exponent E bits or only for every 1 bit of the exponent E. For example, it would be sufficient to generate a random number with a bit length of only one bit, if for each bit of the exponent E a new random base value B r is calculated.

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.In other words, the processor can, for. For example, calculate the intermediate results for all bits of the exponent E based on different random base values B R , the intermediate results of a predefined number of bits (eg, for each 8 bits, 16 bits, 32 bits or more) of the exponent E based thereon calculate random base value B R, calculate the intermediate values of a random number of bits (eg, based on another random number) of the exponent E based on the same random base value B R , or the intermediate results for all bits of the exponent E based on the same random base value B Calculate R Also at this point, by choosing the predefined number of bits of the exponent for which the same random base value B R is used, a compromise between the gain in security and additional computational effort can be made.

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.Some embodiments according to the invention relate to a reduction of the memory requirements of the cryptographic processor. A memory requirement reduction can be effected, for example, by the base value B not being stored during the calculation of the exponentiation of the base value B with the exponent E, but later being recovered from the random base value B R. This is a trivial task if only one random base B R is used for all the bits of the exponent E. If at least two different random base values B R based on two different random numbers R are used for different bits of the exponent E, then the original base value B can nevertheless be retrieved from the last used random base value B R , for example if a previously used random number is stored. If the random number R is smaller than the base value B (eg 16-bit random number and 1024-bit base value), this can save a considerable amount of storage space, which is of interest for cryptography processors for card applications, among other things.

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.For this purpose, the processor can, for example, compare a current random number R with a previously used random number R in order to add, depending on the comparison of the random numbers for each bit of the current random number R, a multiple of the modulus value N corresponding to the position of the respective bit of the random number R to the base value B. , subtract from the underlying B or leave the base value unchanged for the respective bit of the random number. The processor may begin with the most significant bit or least significant bit of the random numbers. If, for example, the comparison of two bits of the random numbers shows that the two bits are the same, then the base value or subsequently a base value that has already been changed by adding a multiple of the modulus value N is left unchanged. Alternatively, for example, if the bit of the previous random number to be compared is 0 and the bit of the current random number to be compared is a multiple of the modulus N corresponding to the position of the respective bit of the random number R, the base value B or already a multiple of the modulus value Added changed base value. In the other case, if the bit of the previous random number to be compared is 1 and the bit of the current random number to be compared is 0, a multiple of the modulus N corresponding to the position of the respective bit of the random number will be equal to or greater than the base value B N changed base value deducted. Depending on the concrete implementation, this can also be realized in reverse.

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.As a result, with the aid of the last random number R used after the calculation of the exponentiation of the base value B with the exponent E, the original base value B can be recovered.

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. After considering each bit of the current random number R, a new random base B R is present. For the implementation of the calculation of the random base value B R , it may be necessary to shift the modulus value N by the bit length of the random number R to the left.

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.In some embodiments according to the invention, after calculating the exponentiation of the base value B with the exponent E, an end reduction is performed. The final reduction takes place, for example, by the application of the modulo function with the modulus value N to the result of the exponentiation. In other words, after calculating the result of the exponentiation, the processor can make an end reduction by calculating the modulo of the result of the exponentiation with the modulus value N to obtain the result of exponentiation of the base value B with the exponent E modulo of the modulus value N.

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.In the following, a concrete example will be described in detail. The example shows an application of the inventive concept for the central arithmetic operation in an RSA algorithm using a quadrature and multiply method.

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.It shows a concealment or randomization of the base value B in an RSA, square-and-multiply exponentiation calculation, so that during the actual RSA calculation the base value B always assumes a different value ,

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 An RSA Square-and-Multiply (quadrature and multiply) algorithm computes a modular exponentiation of an exponent E to a base 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).The calculation is done so that the exponent is bit scanned (scanned) and always a square operation (quadrature operation) is performed for each bit, and if bit 1 is additionally a multiply operation.

Die Quadriere-Operation ist eine modulare Multiplikation eines fortlaufenden Zwischenergebnisses mit sich selbst.The quadrilling operation is a modular multiplication of a continuous intermediate result with itself.

Die Multipliziere-Operation ist eine modulare Multiplikation eines fortlaufenden Zwischenergebnisses mit der Basis B.The multiply operation is a modular multiplication of a continuous intermediate result with the base 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
The following is an example of a known quadrature and multiply algorithm (with numbers in hexadecimal notation):
Base B = 0x03
Exponent E = 0x31 = 110001 (binary), scanned (scanned) from MSB (most significant bit) to LSB (least significant bit, least significant bit)
Module N = 0x17
Running intermediate result Z = 0x01
1.bit = 1
Quadrangle: Z = Z * Z mod N = 0x01 * 0x01 mod 0x17 = 0x01
Multiply: Z = Z * B mod N = 0x01 * 0x03 mod 0x17 = 0x03
2.bit = 1
Quadrangle: Z = Z * Z mod N = 0x03 * 0x03 mod 0x17 = 0x09
Multiply: Z = Z · B mod N = 0x09 · 0x03 mod 0x17 = 0x04
3rd bit = 0
Quadrangle: Z = Z * Z mod N = 0x04 * 0x04 mod 0x17 = 0x10
4.bit = 0
Quadrangle: Z = Z * Z mod N = 0x10 * 0x10 mod 0x17 = 0x03
5.bit = 0
Quadrangle: Z = Z * Z mod N = 0x03 * 0x03 mod 0x17 = 0x09
6.bit = 1
Quadratic: Z = Z · Z mod N = 0x09 · 0x09 mod 0x17 = 0x0C
Multiply: Z = Z · B mod N = 0x0C · 0x03 mod 0x17 = 0x0D
Result: 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 (Leakage) führen, dass man anhand des Stromverbrauchs die Quadriere von der Multipliziere-Operation unterscheiden kann. While in the quadratic operation the multiplicand and the multiplier always have different content when it comes to the modular multiplication, in the multiply operation only the multiplier is different, but the multiplicand is always the same base value B. This behavior can vary depending on lead to a leakage current (leakage) to the underlying hardware arithmetic unit that one can differentiate the quadrature from the multiplication operation on the basis of the power consumption.

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.An RSA exponentiation calculation can be realized with different algorithms. A well-known algorithm is known here under the name Montgomery-Ladder (Montgomery ladder). The problem does not exist with this algorithm, since both multiplier and multiplier are always different from bit to bit in both the square and multiplier operations.

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.However, an RSA Montgomery-Ladder exponentiation is much slower (about 33%) than a quadrature-and-multiply solution, as can be realized according to the inventive concept.

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.The idea of the invention is to randomize the base value B during the quadrature-and-multiply RSA exponentiation in order to counteract a possible weakness of the hardware arithmetic unit. In the following example, the base value B is further randomized, ie changed, every 16 bits of the exponent. For a 1024-bit RSA exponentiation, this means that the exponent is changed (1024/16 = 64) times, making it more difficult for a possible attack scenario. The randomization strength of the on-the-fly base value randomization is 16-bit in this example.

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.In general, however, the described concept can also be adapted so that the randomization of all n-bits of the exponent is made with a randomization power of m-bits.

Durch das beschriebene Konzept kann ein Hardware Rechenwerk, das Angriffsmöglichkeit bietet, deutlich sicherer gemacht werden.The described concept can make a hardware arithmetic unit, which offers an opportunity for attack, much safer.

Gegenüber einer Montgomery-Ladder Exponentiation ist die hier vorgeschlagene Lösungsmöglichkeit bis zu (33 – n) Prozent schneller.Compared to a Montgomery-Ladder exponentiation, the solution proposed here is up to (33 - n) percent faster.

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.This can be made possible by the described randomization of the base value during the exponentiation. The new RSA exponentiation can, for. Quad-and-multiply-with-changing-base.

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.In the following, for a better understanding, a standard implementation of a quadrature and multiply algorithm without countermeasures is compared with a possible implementation according to the invention. A secure exponentiation routine needs countermeasures. However, to demonstrate the invention, a simple quadrature and multiply function is used here.

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.The following is an example of a program code for calculating the exponentiation without concealment by a random number. Here, cl_e represents the exponent and the base value is stored in register CR0 and the modulus value in register N. The algorithm implements a left-to-right exponentiation that starts with the most significant bit.

Figure DE102010064578B3_0002
Figure DE102010064578B3_0002

Figure DE102010064578B3_0003
Figure DE102010064578B3_0003

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. In comparison, an implementation according to the inventive concept is shown below. The base value, the exponent, the module value and the predefined bit length of the random number are passed to the function. The exponent is passed by cl_e, the base value is initially stored in register CR0, the modulus value in register N and the predefined bit length of the random number as variable _Datenlänge_.

Die aktuelle Zufallszahl wird durch die Variable RND und die vorhergehende Zufallszahl durch die Variable OLDRND gespeichert.The current random number is stored by the variable RND and the previous random number by the variable OLDRND.

Figure DE102010064578B3_0004
Figure DE102010064578B3_0004

Figure DE102010064578B3_0005
Figure DE102010064578B3_0005

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 DE102010064578B3_0006
Figure DE102010064578B3_0007
Next, preparations are made for the random number consideration by extending the base value 16 bits, but keeping its value and shifting the modulus 16 bits to the left, which corresponds to a multiplication by 2 16 . In this case, the function Exch exchanges the contents of the two subsequently designated registers and the function Srh shifts the contents of the first-mentioned register by the number of bits in the second-mentioned register or in the second-mentioned variable.
Figure DE102010064578B3_0006
Figure DE102010064578B3_0007

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.Next, for each 16 bits (16 bit is specified by the variable data length, but can also be chosen arbitrarily different) calculated a new random base value. This corresponds to the aforementioned example where a predefined number of bits of the exponent is set, for each of which the same random base value is used. Alternatively, for example, a random number of bits of the exponent may also be chosen here, for which the same random base value is used, for all bits of the exponent the same random base value is used or for each bit of the exponent a new random base value is calculated. In this example, the random base value is changed every 16 bits of the exponent. If the number of bits of the exponent is not divisible by 16, then a random base is computed for the remainder, less than 16 bits of the exponent. As already mentioned, the calculation of the random base value can be calculated, for example, by a multiplication of the random number by the modulus value and a subsequent addition to the base value. In the present example, a memory saving alternative is shown in which a new random base is calculated from the previous random base and its generating random number. In this case, depending on a comparison of the preceding random number and the current random number, the preceding random base value is changed (addition or subtraction of a multiple of the modulus value) or left unchanged. This is described in detail below.

Figure DE102010064578B3_0008
Figure DE102010064578B3_0008

Figure DE102010064578B3_0009
Figure DE102010064578B3_0009

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.After computing the random base value, the quadrature and multiply algorithm is performed using the random base value for those bits of the exponent that use the same random base value, which is 16 bits in the present example (except for the last or first bits of the exponent less than 16 bits). The function MultN_C_C_ (C) performs a multiplication of the value in register C with itself, then applies the modulo function with the module value in the register N and stores the result again in register C.

Figure DE102010064578B3_0010
Figure DE102010064578B3_0010

Figure DE102010064578B3_0011
Figure DE102010064578B3_0011

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 DE102010064578B3_0012
Thereafter, a retrieval of the original base value based on the most recently used random number and a retrieval of the original modulus value by a shift to the left to the number of bits of the random number.
Figure DE102010064578B3_0012

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.Finally, the result of the exponentiation is finally reduced by the application of the modulo function with the module value N. This is carried out by the function EndRed_Z_Z_ (N).

Figure DE102010064578B3_0013
Figure DE102010064578B3_0013

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.By the example shown z. For example, a flying randomization of a base value may be realized in an RSA quadrature and multiplier algorithm, which may be called, for example, a quadrature and multiply-by-base-base algorithm.

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.An alternative solution, instead of randomizing the base value to randomize all 16-bits, could perform randomization of all n bits, n [1, exponent bit length]. Also a randomization with a variable interval is conceivable, d. H. B is not randomized to all n-bits but the distance is chosen randomly.

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.Another alternative is the number of randomized bits, ie the randomization strength. In the above example it was randomized here with 16-bit, but this value can take other values, eg. b. 32-bit or 10-bit.

Für die Implementierung des erfindungsgemäßen Konzepts kann beispielsweise ein Prozessor mit einer Langzahl-arithmetischen-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. Nm der vorher beschriebenen Implementierung) und ein Ergebnisregister zum Speichern des Ergebnisses der Exponentiation (z. B. Z in der vorherigen Implementierung) aufweist.For implementing the inventive concept, for example, a processor having a long-range arithmetic logic unit may be used which includes at least one base value register for initially storing the base value (eg, in the implementation previously CR0), a modulus value register for initially storing the modulus value (eg Nm of the previously described implementation) and a result register for storing the result of the exponentiation (eg Z in the previous implementation).

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.In general, the inventive concept can also be realized as an apparatus for calculating a result of exponentiation of a base value with an exponent modulo a modulus value for encrypting or decrypting data, with a random number generating device and a device for calculating the result of the exponentiation. The random number generating device is configured to generate a random number, and the exponentiation result calculating device is configured to calculate a sum of the base value (B) at a multiple of the modulus value (N) by a random base value (B R ). The multiple of the modulus value (N) depends on the random number (R). Further, the exponentiation result calculating apparatus is configured to calculate the result of the exponentiation based on the random base value (B R ).

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.Some embodiments according to the invention relate to an application of a cryptography processor according to the invention in a smart card. 2 shows a block diagram of a smart card 200 as an embodiment according to the invention. The chip card 200 includes a random number generator 110 and a processor 120 which also, for example, in 1 shown and described. In addition, the smart card has 200 a memory 230 and an input-output interface (I / O interface) 240 on. The input-output interface 240 , the memory 230 and the random number generator 110 are with the processor 120 connected. The memory 230 can from the processor 120 data to be encrypted, data decrypted by the processor, the exponents of exponentiation (eg, as a private key), intermediate results or other variables or parameters, and these to the processor 120 provide. The input-output interface 240 For example, it can receive data to be encrypted and to the processor 120 forward or encrypted data from the processor 120 received and transmitted to a recipient. This can be done both wired and wireless.

Solche Chipkarten können beispielsweise Anwendung als Geldkarten, Simkarten für Telefone, Karten zur Identifikation oder Decoderkarten für Bezahl-TV-Anwendungen finden.Such smart cards can be used, for example, as cash cards, sim cards for telephones, cards for identification or decoder cards for pay TV applications.

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. 3 shows a flowchart of a method 300 for calculating a result of an exponentiation of a base value with an exponent modulo a module value for encrypting data according to an embodiment according to the invention. The procedure 300 includes generating 310 a random number, a calculation 320 a sum of the base value with a multiple of the modulus value to obtain a random base value, and a calculation 330 , the result of exponentiation based on the random base value. The multiple of the module value depends on the random number.

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.Optionally, the procedure 300 include further steps that correspond to features that z. B. in connection with the previously described cryptographic processor or generally the inventive concept have been described.

Gemäß einem ersten Aspekt weist 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, folgende Merkmale auf: einen Zufallszahlengenerator, der ausgelegt ist, um eine Zufallszahl zu erzeugen, und einen Prozessor, der ausgelegt ist, um eine Summe des Basiswerts mit einem Vielfachen des Modulwerts zu berechnen, um einen zufälligen Basiswert zu erhalten, wobei das Vielfache des Modulwerts von der Zufallszahl abhängt. Der Prozessor ist ausgelegt, um das Ergebnis der Exponentiation basierend auf dem zufälligen Basiswert zu berechnen.According to a first aspect, a cryptography processor for calculating a result of exponentiation of a base value with an exponent modulo a module value for encrypting or decrypting data comprises: a random number generator adapted to generate a random number and a processor adapted to calculate a sum of the base value by a multiple of the modulus value to obtain a random base value, wherein the multiple of the modulus value depends on the random number. The processor is configured to calculate the result of the exponentiation based on the random base value.

Gemäß einem zweiten Aspekt ist bei einem Kryptographie-Prozessor gemäß dem ersten Aspekt der Prozessor ausgelegt, um den zufälligen Basiswert durch eine Multiplikation des Modulwerts mit der Zufallszahl und einer anschließenden Addition des Basiswerts zu erhalten.According to a second aspect, in a cryptographic processor according to the first aspect, the processor is adapted to obtain the random base value by multiplying the modulus value by the random number and then adding the base value.

Gemäß einem dritten Aspekt ist bei einem Kryptographie-Prozessor gemäß dem ersten oder zweiten Aspekt der Prozessor ausgelegt, um das Ergebnis der Exponentiation durch eine Berechnung eines Zwischenergebnisses für jedes Bit des Exponenten zu berechnen.According to a third aspect, in a cryptographic processor according to the first or second aspect, the processor is adapted to calculate the result of the exponentiation by calculating an intermediate result for each bit of the exponent.

Gemäß einem vierten Aspekt ist bei einem Kryptographie-Prozessor gemäß dem ersten bis dritten Aspekt der Zufallszahlengenerator ausgelegt, um die Zufallszahl mit einer vordefinierten Bitlänge zu erzeugen.According to a fourth aspect, in a cryptographic processor according to the first to third aspects, the random number generator is adapted to generate the random number having a predefined bit length.

Gemäß einem fünften Aspekt ist bei einem Kryptographie-Prozessor gemäß dem vierten Aspekt die vordefiniert Bitlänge der Zufallszahl zumindest gleich groß wie eine Anzahl von Bits des Exponenten für welche die Berechnung der zugehörigen Zwischenergebnisse auf demselben zufälligen Basiswert basiert.According to a fifth aspect, in a cryptographic processor according to the fourth aspect, the predefined bit length of the random number is at least equal to a number of bits of the exponent for which the calculation of the associated intermediate results is based on the same random base value.

Gemäß einem sechsten Aspekt ist bei einem Kryptographie-Prozessor gemäß dem dritten bis fünften Aspekt der Prozessor ausgelegt, um die Zwischenergebnisse für alle Bits des Exponenten basierend auf unterschiedlichen zufälligen Basiswerten zu berechnen, die Zwischenergebnisse einer vordefinierten Anzahl von Bits des Exponenten basierend auf einem selben zufälligen Basiswert zu berechnen, die Zwischenergebnisse einer zufälligen Anzahl von Bits des Exponenten basierend auf einem selben zufälligen Basiswert zu berechnen oder die Zwischenergebnisse für alle Bits des Exponenten basierend auf demselben zufälligen Basiswert zu berechnen.According to a sixth aspect, in a cryptographic processor according to the third to fifth aspects, the processor is adapted to calculate the intermediate results for all bits of the exponent based on different random bases, the intermediate results of a predefined number of bits of the exponent based on a same random one Calculate the base value, calculate the intermediate results of a random number of bits of the exponent based on a same random base value, or calculate the intermediate results for all bits of the exponent based on the same random base value.

Gemäß einem siebten Aspekt ist bei einem Kryptographie-Prozessor gemäß dem dritten bis sechsten Aspekt der Prozessor ausgelegt, um zur Berechnung des Zwischenergebnisses eines Bits des Exponenten ein Zwischenergebnis eines vorhergehenden Bits mit sich selbst zu multiplizieren und das Ergebnis modulo dem Modulwert zu berechnen, um das Zwischenergebnis für das aktuelle Bit des Exponenten zu erhalten, wenn das Bit des Exponenten einen ersten Wert aufweist, und wobei der Prozessor ausgelegt ist, um zusätzlich das Ergebnis der Multiplikation des Zwischenergebnisses des vorhergehenden Bits mit sich selbst modulo dem Modulwert mit dem zufälligen Basiswert zu multiplizieren und das Ergebnis modulo dem Modulwert zu berechnen, um das Zwischenergebnis für das aktuelle Bit des Exponenten zu erhalten, wenn da Bit des Exponenten einen zweiten Wert aufweist.According to a seventh aspect, in a cryptographic processor according to the third to sixth aspects, the processor is configured to multiply an intermediate result of a previous bit by itself to calculate the intermediate result of a bit of the exponent, and to calculate the result modulo the modulus value Obtaining an intermediate result for the current bit of the exponent when the bit of the exponent has a first value, and wherein the processor is adapted to additionally modulate the result of multiplying the intermediate result of the previous bit by itself Multiply the modulus value with the random base value and calculate the result modulo the modulus value to obtain the intermediate result for the current bit of the exponent if the bit of the exponent has a second value.

Gemäß einem achten Aspekt ist bei einem Kryptographie-Prozessor gemäß dem ersten bis siebten Aspekt der Prozessor ausgelegt, um eine aktuelle Zufallszahl mit einer vorhergehend verwendeten Zufallszahl zu vergleichen, wobei der Prozessor 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 entsprechendes Vielfaches des Modulwerts dem Basiswert oder einem vorhergehend verwendeten, zufälligen Basiswert hinzuzufügen, vom Basiswert oder einem vorhergehend verwendeten, zufälligen Basiswert abzuziehen oder dem Basiswert oder einem vorhergehend verwendeten, zufälligen Basiswert für das jeweilige Bit unverändert zu lassen, um einen zufälligen Basiswert zu berechnen.According to an eighth aspect, in a cryptographic processor according to the first to seventh aspects, the processor is adapted to compare a current random number with a previously used random number, the processor being adapted to calculate, in dependence on the comparison of the random numbers for each bit of the current one Random number either to add a multiple of the modulus value corresponding to the significance of the respective bit of the random number to the underlying or a previously used random basis, deduct it from the underlying or a previously used random basis, or unchanged to the underlying or a previously used random basis for the respective bit to calculate a random base value.

Gemäß einem neunten Aspekt ist bei einem Kryptographie-Prozessor gemäß dem ersten bis achten Aspekt der Prozessor ausgelegt ist, um zur Berechnung des zufälligen Basiswerts den Modulwert in seiner binären Darstellung um die Bitlänge der Zufallszahl nach links zu verschieben.According to a ninth aspect, in a cryptographic processor according to the first to eighth aspects, the processor is adapted to shift the modulus value in its binary representation by the bit length of the random number to the left to calculate the random base value.

Gemäß einem zehnten Aspekt ist bei einem Kryptographie-Prozessor gemäß dem ersten bis neunten der Prozessor ausgelegt, um das Ergebnis der Exponentiation, basierend auf einer Quadriere-und-Multipliziere-Exponentiation zu berechnen.According to a tenth aspect, in a cryptography processor according to the first to ninth embodiments, the processor is configured to calculate the result of the exponentiation based on a quadrature and multiply exponentiation.

Gemäß einem elften Aspekt ist bei einem Kryptographie-Prozessor gemäß dem ersten bis zehnten Aspekt der Prozessor ausgelegt, um das Ergebnis der Exponentiation, basierend auf einer Links-nach-Rechts-Exponentiation zu berechnen.According to an eleventh aspect, in a cryptographic processor according to the first to tenth aspects, the processor is adapted to calculate the result of exponentiation based on left-to-right exponentiation.

Gemäß einem zwölften Aspekt ist bei einem Kryptographie-Prozessor gemäß dem ersten bis elften Aspekt der Prozessor ausgelegt, um nach der Berechnung des Ergebnisses der Exponentiation eine Endreduktion durch Berechnung des modulo des Ergebnisses der Exponentiation mit dem Modulwert durchzuführen, um das Ergebnis der Exponentiation des Basiswerts mit dem Exponenten modulo des Modulwerts zu erhalten.According to a twelfth aspect, in a cryptographic processor according to the first to eleventh aspects, the processor is adapted to perform a final reduction by calculating the modulo of the result of the exponentiation with the modulus value after the exponentiation calculation, to calculate the result of the exponentiation of the base value with the exponent modulo of the module value.

Gemäß einem dreizehnten Aspekt weist bei einem Kryptographie-Prozessor gemäß dem ersten bis zwölften Aspekt der Prozessor ein Basiswertregister, ein Modulwertregister und ein Ergebnisregister auf, wobei das Basiswertregister ausgelegt ist, um den Basiswert zu speichern, wobei das Modulwertregister ausgelegt ist, um den Modulwert zu speichern, und wobei das Ergebnisregister ausgelegt ist, um das Ergebnis der Exponentiation des Basiswerts mit dem Exponenten modulo des Modulwerts zu speichern.According to a thirteenth aspect, in a cryptographic processor according to the first to twelfth aspects, the processor comprises a base value register, a modulus value register and a result register, the base value register being adapted to store the base value, the modulus value register being adapted to supply the modulus value and wherein the result register is adapted to store the result of exponentiation of the base value with the exponent modulo of the modulus value.

Gemäß einem vierzehnten Aspekt repräsentiert bei einem Kryptographie-Prozessor gemäß dem ersten bis dreizehnten Aspekt der Basiswert zu verschlüsselnde Daten und das Ergebnis der Exponentiation des Basiswerts mit dem Exponenten modulo des Modulwerts repräsentiert verschlüsselte Daten oder der Basiswert repräsentiert verschlüsselte Daten und das Ergebnis der Exponentiation des Basiswerts mit dem Exponenten modulo des Modulwerts repräsentiert entschlüsselte Daten.According to a fourteenth aspect, in a cryptographic processor according to the first to thirteenth aspects, the base value represents data to be encrypted, and the result of the exponentiation of the base value with the exponent modulo of the modulus value represents encrypted data or the base value represents encrypted data and the result of the exponentiation of the base value with the exponent modulo of the module value represents decrypted data.

Gemäß einem fünfzehnten Aspekt weist eine Chipkarte einen Kryptographie-Prozessor gemäß einem des ersten bis vierzehnten Aspekts auf.According to a fifteenth aspect, a smart card includes a cryptographic processor according to any one of the first to fourteenth aspects.

Gemäß einem sechzehnten Aspekt weist eine Vorrichtung zum Berechnen eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten modulo eines Modulwerts zum Verschlüsseln oder Entschlüsseln von Daten, folgende Merkmalen auf: eine Vorrichtung zum Erzeugen einer Zufallszahl, die ausgelegt ist, um eine Zufallszahl zu erzeugen, und eine Vorrichtung zum Berechnen des Ergebnisses der Exponentiation, die ausgelegt ist, um eine Summe des Basiswerts mit einem Vielfachen des Modulwerts zu berechnen, um einen zufälligen Basiswert zu erhalten, wobei das Vielfache des Modulwerts von der Zufallszahl abhängt. Die Vorrichtung zum Berechnen des Ergebnisses der Exponentiation ist ausgelegt, um das Ergebnis der Exponentiation basierend auf dem zufälligen Basiswert zu berechnen.According to a sixteenth aspect, an apparatus for calculating a result of exponentiation of a base value with an exponent modulo a module value for encrypting or decrypting data, comprising: a random number generating means configured to generate a random number, and an exponentiation result calculating apparatus configured to calculate a sum of the base value by a multiple of the modulus value to obtain a random base value, wherein the multiple of the modulus value depends on the random number. The exponentiation result calculating apparatus is configured to calculate the result of the exponentiation based on the random base value.

Gemäß einem siebzehnten Aspekt weist ein Verfahren zur Berechnung eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten modulo eines Modulwerts zum Verschlüsseln oder Entschlüsseln von Daten, folgende Schritte auf: Erzeugen einer Zufallszahl, Berechnen 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 des Ergebnisses der Exponentiation basierend auf dem zufälligen Basiswert.According to a seventeenth aspect, a method for calculating a result of exponentiation of a base value with an exponent modulo a module value for encrypting or decrypting data, comprises the steps of: generating a random number, calculating a sum of the base value by a multiple of the module value by a random one Obtaining the base value, wherein the multiple of the modulus value depends on the random number, and calculating the result of the exponentiation based on the random base value.

Gemäß einem achtzehnten Aspekt weist ein Computerprogramm einen Programmcode zum Durchführen eines Verfahrens gemäß dem siebzehnten Aspekt auf, wenn das Computerprogramm auf einem Computer oder Mikrocontroller abläuft. According to an eighteenth aspect, a computer program comprises a program code for performing a method according to the seventeenth aspect when the computer program runs on a computer or microcontroller.

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.Although some aspects have been described in the context of a device, it will be understood that these aspects also constitute a description of the corresponding method, so that a block or a component of a device is also to be understood as a corresponding method step or as a feature of a method step. Similarly, aspects described in connection with or as a method step also represent a description of a corresponding block or detail or feature of a corresponding device.

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.Depending on particular implementation requirements, embodiments of the invention may be implemented in hardware or in software. The implementation may be performed using a digital storage medium, such as a floppy disk, a DVD, a Blu-ray Disc, a CD, a ROM, a PROM, an EPROM, an EEPROM or FLASH memory, a hard disk, or other magnetic disk or optical memory are stored on the electronically readable control signals that can cooperate with a programmable computer system or cooperate such that the respective method is performed. Therefore, the digital storage medium can be computer readable. Thus, some embodiments according to the invention include a data carrier having electronically readable control signals capable of interacting with a programmable computer system such that one of the methods described herein is performed.

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.In general, embodiments of the present invention may be implemented as a computer program product having a program code, wherein the program code is operable to perform one of the methods when the computer program product runs on a computer. The program code can also be stored, for example, on a machine-readable carrier.

Andere Ausführungsbeispiele umfassen das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren, wobei das Computerprogramm auf einem maschinenlesbaren Träger gespeichert ist.Other embodiments include the computer program for performing any of the methods described herein, wherein the computer program is stored on a machine-readable medium.

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.In other words, an embodiment of the method according to the invention is thus a computer program which has a program code for performing one of the methods described herein when the computer program runs on a computer. A further embodiment of the inventive method is thus a data carrier (or a digital storage medium or a computer-readable medium) on which the computer program is recorded for carrying out one of the methods described herein.

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.A further embodiment of the method according to the invention is thus a data stream or a sequence of signals, which represent the computer program for performing one of the methods described herein. The data stream or the sequence of signals may be configured, for example, to be transferred via a data communication connection, for example via the Internet.

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.Another embodiment includes a processing device, such as a computer or a programmable logic device, that is configured or adapted to perform one of the methods described herein.

Ein weiteres Ausführungsbeispiel umfasst einen Computer, auf dem das Computerprogramm zum Durchführen eines der hierin beschriebenen Verfahren installiert ist.Another embodiment includes a computer on which the computer program is installed to perform one of the methods described herein.

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.In some embodiments, a programmable logic device (eg, a field programmable gate array, an FPGA) may be used to perform some or all of the functionality of the methods described herein. In some embodiments, a field programmable gate array may cooperate with a microprocessor to perform one of the methods described herein. In general, in some embodiments, the methods are performed by any hardware device. This may be a universal hardware such as a computer processor (CPU) or hardware specific to the process, such as an 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.The embodiments described above are merely illustrative of the principles of the present invention. It will be understood that modifications and variations of the arrangements and details described herein will be apparent to others of ordinary skill in the art. Therefore, it is intended that the invention be limited only by the scope of the appended claims and not by the specific details presented in the description and explanation of the embodiments herein.

Claims (14)

Kryptographie-Prozessor (100) zur Berechnung eines Ergebnisses einer Exponentiation eines Basiswerts mit einem Exponenten (E) modulo eines Modulwerts (N) 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, wobei der Zufallszahlengenerator (110) ausgelegt ist, um die Zufallszahl (R) mit einer vordefinierten Bitlänge zu erzeugen, wobei die vordefinierte 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, wobei der Prozessor (120) 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 oder die Zwischenergebnisse einer zufälligen Anzahl von Bits des Exponenten (E) basierend auf einem selben zufälligen Basiswert (BR) zu berechnen, 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.Cryptography processor ( 100 ) for calculating a result of an exponentiation of a base value with an exponent (E) modulo a module value (N) for encrypting or decrypting data, comprising: a random number generator ( 110 ) designed to generate a random number (R); and a processor ( 120 ) calculated to calculate a sum of the base value (B) by a multiple of the modulus value (N) to obtain a random base value (B R ), where the multiple of the modulus value (N) is a random number (R) depends and the processor ( 120 ) is calculated to calculate the result of the exponentiation based on the random base value (B R ), wherein the random number generator ( 110 ) is designed to generate the random number (R) with a predefined bit length, wherein the predefined bit length of the random number (R) is at least equal to a number of bits of the exponent (E) for which the calculation of the associated intermediate results on the same random base value (B R ), whereby the processor ( 120 ) to calculate the intermediate results for all the bits of the exponent (E) based on different random base values (B R ), the intermediate results of a predefined number of bits of the exponent (E) based on a same random base value (B R ) calculate or calculate the intermediate results of a random number of bits of the exponent (E) based on a same random base value (B R ), the processor ( 120 ) is adapted to shift the modulus value (N) in its binary representation to the left by the bit length of the random number (R) in order to calculate the random base value (B R ). 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.A cryptographic processor according to claim 1, wherein the processor ( 120 ) is adapted to obtain the random base value (B R ) by multiplying the modulus value (N) by the random number (R) and then adding the base value (B). Kryptographie-Prozessor gemäß einem der vorhergehenden Ansprüche, wobei der Prozessor (120) ausgelegt ist, um das Ergebnis der Exponentiation durch eine Berechnung eines Zwischenergebnisses für jedes Bit des Exponenten zu berechnen.A cryptographic processor according to any one of the preceding claims, wherein the processor ( 120 ) to calculate the result of the exponentiation by calculating an intermediate result for each bit of the exponent. Kryptographie-Prozessor gemäß Anspruch 3, 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.A cryptographic processor according to claim 3, wherein the processor ( 120 ) to multiply an intermediate result of a preceding bit by itself to calculate the intermediate result of a bit of the exponent (E), and calculate the result modulo the modulus value (N) to obtain the intermediate result for the current bit of the exponent (E) when the bit of the exponent (E) has a first value, and wherein the processor ( 120 ) is arranged to additionally multiply the result of the multiplication of the intermediate result of the preceding bit by itself modulo the modulus value (N) with the random base value (B R ) and to calculate the result modulo the modulus value (N) to obtain the intermediate result for to obtain the current bit of the exponent (E) if the bit of the exponent (E) has a second value. Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 4, 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. A cryptographic processor according to any one of claims 1 to 4, wherein the processor ( 120 ) is adapted to compare a current random number (R) with a previously used random number, the processor ( 120 ) is adapted to determine, in dependence on the comparison of the random numbers for each bit of the current random number, either a multiple of the modulus value (N) corresponding to the position of the respective bit of the random number (R), the base value (B) or a previously used random base value (B R) add (from baseline or to have a base value previously used, random B) (B R) to deduct or the base value (B) or a base value previously used, random (B R) unchanged for the bit to a random underlying (B R ). Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 5, wobei der Prozessor (120) ausgelegt ist, um das Ergebnis der Exponentiation, basierend auf einer Quadriere-und-Multipliziere-Exponentiation zu berechnen.A cryptographic processor according to any one of claims 1 to 5, wherein the processor ( 120 ) to calculate the result of the exponentiation based on a quadrature and multiply exponentiation. Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 5, wobei der Prozessor (120) ausgelegt ist, um das Ergebnis der Exponentiation, basierend auf einer Links-nach-Rechts-Exponentiation zu berechnen.A cryptographic processor according to any one of claims 1 to 5, wherein the processor ( 120 ) to calculate the result of exponentiation based on left-to-right exponentiation. Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 7, 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.A cryptographic processor according to any one of claims 1 to 7, wherein the processor ( 120 ) is designed, after the calculation of the result of the exponentiation, to carry out a final reduction by calculating the modulo of the result of the exponentiation with the modulus value (N) to obtain the result of the exponentiation of the base value (B) with the exponent (E) modulo the modulus value ( N). Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 8, 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.A cryptographic processor according to any one of claims 1 to 8, wherein the processor ( 120 ) comprises a base value register, a modulus value register and a result register, the base value register being adapted to store the base value (B), the modulus value register being adapted to store the modulus value (N) and the result register being adapted to carry the Store result of the exponentiation of the base value (B) with the exponent (E) modulo the modulus value (N). Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 9, 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.A cryptographic processor according to any one of claims 1 to 9, wherein the base value (B) represents data to be encrypted, and the result of the exponentiation of the underlying (B) with the exponent (E) modulo the modulus value (N) represents encrypted data or the underlying ( B) represents encrypted data and the result of the exponentiation of the base value (B) with the exponent (E) modulo the modulus value (N) represents decrypted data. Chipkarte mit einem Kryptographie-Prozessor gemäß einem der Ansprüche 1 bis 10.Chip card with a cryptographic processor according to one of claims 1 to 10. 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, wobei die Vorrichtung zum Erzeugen einer Zufallszahl ausgelegt ist, um die Zufallszahl (R) mit einer vordefinierten Bitlänge zu erzeugen, wobei die vordefinierte 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, wobei Vorrichtung zum Berechnen des Ergebnisses der Exponentiation 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 oder die Zwischenergebnisse einer zufälligen Anzahl von Bits des Exponenten (E) basierend auf einem selben zufälligen Basiswert (BR) zu berechnen, und wobei Vorrichtung zum Berechnen des Ergebnisses 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.Apparatus for calculating a result of exponentiation of a base value with an exponent modulo a modulus value for encrypting or decrypting data, comprising: means for generating a random number adapted to generate a random number; and an exponentiation result calculating means configured to calculate a sum of the base value (B) by a multiple of the modulus value (N) to obtain a random base value (B R ), wherein the multiple of the modulus value (B) N) is dependent on the random number (R), and wherein the means for calculating the result of the exponentiation is arranged to calculate the result of the exponentiation based on the random base value (B R ), the apparatus being adapted to generate a random number to generate the random number (R) with a predefined bit length, wherein the predefined bit length of the random number (R) is at least equal to a number of bits of the exponent (E) for which the calculation of the associated intermediate results on the same random base value ( B R ), wherein means for calculating the result of the exponentiation is arranged to calculate the intermediate results for all bits of the Expo calculate (E) based on different random base values (B R ), calculate the intermediate results of a predefined number of bits of the exponent (E) based on a same random base value (B R ), or the intermediate results calculates a random number of bits of the exponent (E) based on a same random base value (B R ), and wherein the means for calculating the result is adapted to calculate the random base value (B R ) the modulus value (N) in its binary representation to shift the bit length of the random number (R) to the left. 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 mit einer vordefinierten Bitlänge; 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, wobei die vordefinierte 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, wobei um die Zwischenergebnisse für alle Bits des Exponenten (E) basierend auf unterschiedlichen zufälligen Basiswerten (BR) berechnet, die Zwischenergebnisse einer vordefinierten Anzahl von Bits des Exponenten (E) basierend auf einem selben zufälligen Basiswert (BR) berechnet werden oder die Zwischenergebnisse einer zufälligen Anzahl von Bits des Exponenten (E) basierend auf einem selben zufälligen Basiswert (BR) zu berechnet werden, wobei zur Berechnung des zufälligen Basiswerts (BR) der Modulwert (N) in seiner binären Darstellung um die Bitlänge der Zufallszahl (R) nach links verschoben wird.Procedure ( 300 ) for calculating a result of an exponentiation of a base value with an exponent modulo a module value for encrypting or decrypting data, comprising the steps of: generating ( 310 ) a random number with a predefined bit length; To calculate ( 320 ) a sum of the base value with a multiple of the modulus value to obtain a random base value, wherein the multiple of the modulus value depends on the random number; and calculating ( 330 ) of the result of the exponentiation based on the random base value, wherein the predefined bit length of the random number (R) is at least equal to a number of bits of the exponent (E) for which the calculation of the associated intermediate results on the same random base value (B R ) wherein, to calculate the intermediate results for all the bits of the exponent (E) based on different random base values (B R ), the intermediate results of a predefined number of bits of the exponent (E) are calculated based on a same random base value (B R ) or the intermediate results of a random number of bits of the exponent (E) are calculated on the basis of a same random base value (B R ), wherein for the calculation of the random base value (B R ) the modulus value (N) is multiplied by the bit length of the random number in its binary representation (R) is moved to the left. Computerprogramm mit einem Programmcode zum Durchführen eines Verfahrens gemäß Anspruch 13, wenn das Computerprogramm auf einem Computer oder Mikrocontroller abläuft.Computer program with a program code for performing a method according to claim 13, when the computer program runs on a computer or microcontroller.
DE102010064578.8A 2010-08-12 2010-08-12 Cryptography processor, smart card and method of calculating a result of exponentiation Active DE102010064578B3 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102010064578.8A DE102010064578B3 (en) 2010-08-12 2010-08-12 Cryptography processor, smart card and method of calculating a result of exponentiation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102010064578.8A DE102010064578B3 (en) 2010-08-12 2010-08-12 Cryptography processor, smart card and method of calculating a result of exponentiation

Publications (1)

Publication Number Publication Date
DE102010064578B3 true DE102010064578B3 (en) 2015-12-10

Family

ID=54549085

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010064578.8A Active DE102010064578B3 (en) 2010-08-12 2010-08-12 Cryptography processor, smart card and method of calculating a result of exponentiation

Country Status (1)

Country Link
DE (1) DE102010064578B3 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19963407A1 (en) * 1999-12-28 2001-07-12 Giesecke & Devrient Gmbh Portable data carrier with access protection through message alienation
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19963407A1 (en) * 1999-12-28 2001-07-12 Giesecke & Devrient Gmbh Portable data carrier with access protection through message alienation
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.

Similar Documents

Publication Publication Date Title
DE102012202015B4 (en) Apparatus and method for protecting a reference number against differential power analysis attacks and template attacks
EP2742643B1 (en) Device and method for decrypting data
EP1262037B1 (en) Portable data carrier provided with access protection by dividing up codes
DE102006022960B9 (en) Method for encrypting input data, cryptographic system and computer program product
DE112008000668T5 (en) Cryptographic procedure and system
EP1891512B1 (en) Determination of a modular inverse
WO2008096004A1 (en) Reduction of side channel information by interacting crypto blocks
DE102005028662A1 (en) Polynom multiplication calculating method e.g. for elliptical curve cryptography, making available coefficients with two polynomials each polynomial fragmented into two or more fragments, being operands partial multiplication
EP2656535B1 (en) Cryptographic method
DE10143728B4 (en) Device and method for calculating a result of a modular exponentiation
DE112007003061T5 (en) Mechanism for protecting a key
EP1922837B1 (en) Method for securely encrypting or decrypting a message
DE102005037598A1 (en) Method and system for backing up data
DE112009000154T5 (en) Change the representation of a point on an elliptic curve
DE102008051447B4 (en) Method and apparatus for protecting an RSA calculation on an output using the Chinese Remainder Theorem
DE112009000152B4 (en) Method for data transmission via a data channel using an elliptic curve cryptography method and device therefor
DE10304451B3 (en) Modular exponentiation with randomized exponent
DE112018002723B4 (en) SYSTEM, METHOD AND APPARATUS FOR CONCEALING DEVICE OPERATIONS
DE102010064578B3 (en) Cryptography processor, smart card and method of calculating a result of exponentiation
DE102010039273B4 (en) Cryptography processor, smart card and method of calculating a result of exponentiation
DE102021003275B3 (en) Method for computing a transition from a Boolean to an arithmetic masking
DE60100992T2 (en) METHOD FOR MODULAR POTENTIALIZATION IN AN ELECTRONIC MODULE THAT PERFORMS A CRYPTOGRAPHIC ALGORITHM WITH A PUBLIC KEY
DE10042234C2 (en) Method and device for performing a modular exponentiation in a cryptographic processor
DE102020134618A1 (en) SECURITY CONTROLLERS AND METHODS FOR PROCESSING DATA ELEMENTS OF A DATA FIELD
DE102012210354B3 (en) Method for computer-aided generation of cryptographic data by e.g. smart card based on elliptic curve, involves transforming projective representations of x-coordinate of point of curve to other representations by preset equations

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R129 Divisional application from

Ref document number: 102010039273

Country of ref document: DE

Effective date: 20140811

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative