-
Gebiet der Erfindung
-
Die Erfindung betrifft ein computerimplementiertes Verfahren zur zumindest teilweisen Generierung eines kryptographischen Schlüssels, umfassend Durchführen einer modularen Exponentiation und eine darauf basierende Primzahlprüfung wie sie in Verfahren zur Generierung von RSA-Schlüsseln mit einer solchen Primzahlprüfung verwendet wird.
-
Stand der Technik
-
RSA ist ein asymmetrisches kryptographisches System, das zum Verschlüsseln und zur Erzeugen digitaler Signaturen anwendbar ist. Das RSA System umfasst einen öffentlichen Schlüssel, gebildet durch eine Zahlenpaar e,N, und einen privaten Schlüssel, gebildet durch eine Zahlenpaar d,N, wobei N der Modulus ist, e der öffentliche Exponent und d der geheime Exponent. Der Modulus ist gebildet durch das Produkt N=p*q zweier Primzahlen p, q. Der öffentliche Exponent e wird ausgewählt. Der geheime Exponent d wird berechnet als das multiplikativ Inverse des öffentlichen Exponenten e bezüglich der von dem Modulus und den beiden Primzahlen p, q abgeleiteten Eulerschen Funktion Phi(N) = (p-1)*(q-1).
-
Der Hauptzeitaufwand bei der Generierung der RSA-Schlüssel e,N und d,N entfällt auf das Auffinden der beiden Primzahlen p und q. Zum Auffinden der Primzahlen p, q werden Zufallszahlen erzeugt und auf ihre Primzahleigenschaft überprüft. Ist die Zufallszahl gemäß der Überprüfung keine Primzahl oder mit anderen Worten eine zusammengesetzte Zahl, wird sie verworfen. Andernfalls wird die Zufallszahl weiter geprüft, bis mit ausreichend hoher Wahrscheinlichkeit feststeht, dass die Zufallszahl eine Primzahl ist.
-
Ein bekannter Test zur Überprüfung der Primzahleigenschaft einer Zahl n ist der Fermattest. Ein weiterer bekannter, dem Fermattest vom Grundschema her ähnlicher Primzahltest ist der Miller-Rabin-Test. Beim Fermattest wird ein a kleiner n ausgewählt, und dass geprüft ob a und n teilerfremd sind. Weiter wird geprüft, ob die Gleichung a^(n-1) mod n = 1 erfüllt ist. Falls die Gleichung nicht erfüllt ist, ist n keine Primzahl. Falls die Gleichung erfüllt ist, ist keine Aussage möglich, und weitere Primzahltests werden durchgeführt. Nach Vorauswahl mittels Ausschluss kleiner Primteiler besteht etwa jeder 30. zufällig gewählte Kandidat p einen Fermattest (die Anzahl der zu überprüfenden Kandidaten hängt u.a. von der Bitlänge des Exponenten ab, sowie bis zu welcher Größe kleine Primteiler ausgeschlossen werden). Nach Bestehen eines Fermattests folgt eine von der Größe von p abhängige Anzahl von Miller-Rabin-Tests bis mit ausreichend hoher Wahrscheinlichkeit feststeht, dass der Kandidat p für eine Primzahl prim ist.
-
Zu computerimplementierten Berechnung der Exponentiation a^(n-1) wird der Exponent n-1 in der Regel in Binärdarstellung dargestellt, das heißt als eine Folge von Exponentenbits, die einen Wert von entweder Null oder Eins haben. Die Exponentiation a^(n-1) wird üblicherweise durch das Squareand Multiply-Verfahren durchgeführt, bei dem der binär dargestellte Exponent Exponentenbit-weise durch eine Aufeinanderfolge von Quadrierungen und Multiplikationen abgearbeitet wird. Ist ein Exponentenbit Null, wird eine Quadrierung der Basis a durchgeführt, ist ein Exponentenbit Eins, wird eine Quadrierung der Basis a zuzüglich einer Multiplikation mit der Basis a durchgeführt.
-
Sei e = 37_10(dezimal) = 100101_2(binär) = 2*(2*(2*(2*(2*1+0)+0)+1)+0)+1. Dann lässt sich der Wert a^e (immer modulo p) nach dem Square and Multiply Verfahren berechnen wie folgt.
-
Lege fest a0 = a,
Berechne a1 = (a0^2) * 1 (innerste Multiplikation mit +0, da a^0 = 1), entsprechend einer Quadrierung der Basis a,
Berechne a2 = (a1^2) * 1 (zweitinnerste Multiplikation mit +0), entsprechend einer Quadrierung der Basis a,
Berechne a3 = (a2^2) * a (nach der drittinnersten Multiplikation wird 1 addiert und a^1 = a), entsprechend einer Quadrierung der Basis a zuzüglich einer Multiplikation mit der Basis a,
Berechne a4 = (a3^2) * 1 (entsprechend der +0), entsprechend einer Quadrierung der Basis a,
Berechne a5 = (a4^2) * a, entsprechend einer Quadrierung der Basis x zuzüglich einer Multiplikation mit der Basis a.
-
Für Exponentiationen mit einer Basis a=2 lässt sich eine Multiplikation im Square- and Multiply Verfahren dadurch bewerkstelligen, dass an den in Binärdarstellung dargestellten Exponenten eine Null angehängt wird. Für einen Exponenten, der in einem Register abgelegt ist, bedeutet das Anhängen der Null ein Verschieben des Exponenten im Register um eine Bitposition nach links, oder anders ausgedrückt einen Left-Shift im Register.
-
Hierdurch lässt sich bei Basis 2 das Square- and Multiply-Verfahren vereinfachen auf eine Folge von Quadrierungen und Left-Shifts im Register, wobei letztere als Ersatz für dazwischenliegenden Multiplikationen eingesetzt werden. Durch die höhere Geschwindigkeit der Left-Shifts im Vergleich zu Multiplikationen ist ein Square- and Multiply-Verfahren, bei dem die Multiplikationen durch Left-Shifts im Register ersetzt sind, signifikant schneller.
-
Nachteilig am Square- and Multiply-Verfahren, bei dem die Multiplikationen durch Left-Shifts im Register ersetzt sind, ist, dass es anfälliger ist gegenüber Seitenkanalangriffen, wie beispielsweise Stromanalyse (beispielsweise Single Power Attack SPA oder Differential Power Attack DPA) als das herkömmliche Square- and Multiply-Verfahren. Bei einem Seitenkanalangriff auf eine Berechnung wird eine messbare Größe, die während der Berechnung entsteht, gemessen und ausgewertet, mit dem Ziel in der Berechnung verarbeitete geheime Information, z.B. Exponentenbits einer Exponentiation falls die Berechnung eine Exponentiation ist, auszuspähen.
-
Das Dokument
EP3287892B1 offenbart ein Verfahren zum Durchführen einer modularen Exponentiation, M^d mod N, bei welchem der Modulus N zur Verschleierung mit einer Zufallszahl multipliziert wird.
-
Das Dokument
EP3166013B1 offenbart ein Verfahren zum Durchführen einer modularen Exponentiation, wobei anstelle des Exponenten eine randomisierte Additionskette verwendet wird.
-
Das Dokument
US 2009/ 0 097 637 A1 offenbart ein Verfahren zur modularen Exponentiation von Daten mit einem Exponenten, wobei der Wert der Daten auf Grundlage einer Zufallszahl randomisiert wird und eine Ausgabe der Exponentiation unter Verwendung des inversen Wertes dieser Zufallszahl erzeugt wird.
-
Das Dokument
DE 10 2005 037 598 A1 offenbart ein Verfahren, im RSA, zur modularen Exponentiation einer Nachricht mit einem Exponenten, wobei sowohl die Nachricht als auch der Exponent maskiert sind, die Nachricht beispielsweise mit einer Zufallszahl, die zum RSA-Modul prim ist, und der Exponent beispielsweise mit einer ganzen Zahl, die zur Eulerschen Funktion prim ist.
-
Zusammenfassung der Erfindung
-
Der Erfindung liegt die Aufgabe zu Grunde, ein computerimplementiertes Verfahren zur zumindest teilweisen Generierung eines kryptographischen Schlüssels, umfassend zum Durchführen einer modularen Exponentiation, zu schaffen, das eine erhöhte Resistenz gegen Seitenkanalangriffe hat. Speziell soll ein solches Verfahren angegeben werden, das den Einsatz von Left-Shifts anstelle von Multiplikationen im Square- and Multiply-Verfahren erlaubt und dennoch ausreichend resistent gegen Seitenkanalangriffe ist. Weiter soll ein Primzahltest angegeben werden, zur Verwendung in einem RSA-Schlüsselgenerierungsverfahren. Die zumindest teilweise Generierung des Schlüssels ist dahingehend zu verstehen, dass die Exponentiation vorzugsweise einen Teil eines Primzahltests bildet, und der Primzahltest wiederum vorzugsweise einen Teil einer Generierung eines kryptographischen Schlüssels, insbesondere RSA-Schlüssels, bildet.
-
Die Aufgabe wird gelöst durch ein computerimplementiertes Verfahren nach Anspruch 1.
-
Das erfindungsgemäße Verfahren nach Anspruch 1 ist eingerichtet zur zumindest teilweisen Generierung eines kryptographischen Schlüssels, umfassend Durchführen einer modularen Exponentiation, b := a
e mod N, einer Basis a mit einem Exponenten e der Bitlänge 1 mit Binärdarstellung e = Σ
0≤i<1 e
i. 2
i, e
i aus {0,1} für i = 0 ... l - 1, bezüglich eines Modulus N, dadurch gekennzeichnet, dass die modulare Exponentiation durchgeführt wird als
für ein
für k = k
0-1, ... 1, 0, so dass b
0 = a
e' = a
e mod N für
und damit
wobei r
i ≥ 0 Zufallszahlen derart sind, dass
für alle i.
-
Ein Exponentenbit ei ist somit während seiner Abarbeitung in der Computerimplementierung durch eine Kombination von Zufallszahlen ri verschleiert. Somit ist durch die Verschleierung der einzelnen Exponentenbits ei mit jeweils einer Kombination (z.B. Sequenz) von Zufallszahlen ri das Ausspähen der Exponentenbits über Seitenkanalangriffe erschwert.
-
Damit ist gemäß Anspruch 1 ein computerimplementiertes Verfahren zur zumindest teilweisen Generierung eines kryptographischen Schlüssels, umfassend Durchführen einer modularen Exponentiation, geschaffen, das eine erhöhte Resistenz gegen Seitenkanalangriffe hat.
-
Die Form der Verschleierung ist so, dass im Square and Multiply Verfahren implementierte Exponentiationen, bei denen die Multiplikation durch Verschieben in einem Register oder anderen Speicherort verwirklicht ist, gegen Seitenkanalangriffe gut geschützt sind, wie weiter unten noch gezeigt wird.
-
Die Kombination (z.B. Sequenz) von Zufallszahlen ri wird bei einer nachfolgenden Exponentiation bevorzugt wieder neu zufällig festgelegt, um statistische Auswertungen über mehrere Exponentiationen weiter zu erschweren.
-
Wahlweise werden die Zufallszahlen r
t aus dem Intervall (bzw. aus der Menge) [3, 4, 5, 6] zufällig ausgewählt. Dies ergibt Werte von 2 · r
i+1 aus der Menge [6, 8, 10, 12]. Zuzüglich der in die Formel für
eingesetzten Exponentenbits e
i = 0 oder 1 , abzüglich der nachfolgenden Zufallszahl, ergibt sich ein Intervall [6, ..., 13]. Hierdurch wird erreicht, dass die Werte
im Intervall [0, 1, 2,3, 4, 5, 6, 7, 8, 9, 10] liegen. Dies ist eine akzeptable Schwankungsbreite für
bei einer moderaten Anzahl von möglichen Zufallszahlen, die berücksichtigt werden müssen. Alternativ kann das Intervall für die Zufallszahlen r
i auch größer oder kleiner sein. Wahlweise beginnt das Intervall der möglichen Zufallszahlen bei 3, insbesondere falls jedes Mal genau zwei Bit Zufall verwendet werden.
-
Die der Erfindung zugrunde liegende Exponentiation der Basis a mit dem Exponenten e setzt auf dem Square- and Multiply Verfahren auf, und verleiht ihm Eigenschaften eines Fenster-Verfahrens.
-
Gemäß Ausführungsformen der Erfindung wird die Exponentiation der Basis a mit dem Exponenten e nach einem optimierten Square- and Multiply-Verfahren durchgeführt, bei dem die Multiplikation dahingehend optimiert ist, dass die Multiplikation als ein logisches Verschieben des Exponenten e in dem binär codierten elektronischen Speicherort, insbesondere Register, des Computers, auf dem das Verfahren implementiert ist, verwirklicht ist. Das Verschieben ist dabei derart, dass eine Multiplikation mit der Basis a erreicht wird. Ein logisches Verschieben, insbesondere logisches Linksschieben, in einem Register um eine Anzahl von f Bits (f = z.B. 1 oder 2 oder 3 oder ...) wird beispielsweise dadurch erreicht, dass das Register um diese Anzahl f von Bits verlängert wird, als die im Register zu verarbeitende Zahl, indem eine Anzahl von f Nullen an die Zahl angehängt werden.
-
Ein Exponentiations-Verfahren, implementiert nach Art des Square and Multiply Verfahrens, bei dem die Multiplikationen des Square and Multiply Verfahrens als Verschiebungen in einem Register oder vergleichbaren Speicherort des Computers verwirklicht sind, ist besonders schnell und effizient, und daher vorteilhaft. Beim herkömmlichen Verschieben im Register/Speicherort wird ein Exponentenbit, das einen bestimmten Wert hat, stets um dieselbe Distanz im Register/ Speicherort verschoben. Aus der Verschiebedistanz können Rückschlüsse auf den Wert des Exponentenbits gezogen werden. Mit der erfindungsgemäßen Verschleierung der Exponentenbits ei während ihrer Abarbeitung in der Computerimplementierung durch Kombinationen von Zufallszahlen ri variiert die Verschiebedistanz eines Exponentenbits ei entsprechend der Kombinationen von Zufallszahlen ri , die bei der Verschleierung eingesetzt wird. Somit ist das Verschieben der Exponentenbits besser gegenüber Seitenkanalangriffen geschützt als ein herkömmliches, ungeschütztes Verschieben der Exponentenbits.
-
Je größer der Wert a für die Basis ist, umso höher ist die Anzahl Register/ Speicherorte, die für das oben beschriebene Verfahren mit Verschiebungen benötigt werden, weshalb kleine Basen a vorteilhaft sind.
-
Wahlweise wird als Basis a = 2 ausgewählt oder festgelegt. Andere Werte der Basis a sind ebenfalls möglich, beispielsweise 3, 4, 5, 6, 7, 8, ..... Vorzugsweise ist die Basis eine Zweierpotenz a^z, z = 1, 2, 3, 4, 5, ..., d.h. a = 2, 4, 8, 16, ... und weiter bevorzugt a = 2. Die Basis a = 2 und weitere Zweierpotenzen sind insbesondere bei Ausführungsformen bevorzugt, bei denen die Multiplikationen des Square and Multiply Verfahrens als Verschiebungen in einem Register oder vergleichbaren Speicherort verwirklicht sind, da die Verwirklichung von Multiplikationen durch Verschieben im Register nur bei Basen möglich ist, die eine Zweierpotenz sind. Die Basis a = 2 ist besonders bevorzugt, da hiermit die Anzahl Register / Speicherorte vergleichsweise klein ist.
-
Alternativ kann eine größere Basis a > 2 verwendet werden, und stattdessen wird die Auswahl der Zufallszahlen auf ri beschränkt, die um maximal einen Höchstwert variieren, beispielsweise maximal um eins, 2, 3, ... variieren.
-
Das computerimplementiertes Verfahren zum Durchführen einer modularen Exponentiation wird bevorzugt eingesetzt in einem Primzahltest, der auf Exponentiation basiert, z.B. einem Fermattest.
-
Das computerimplementierte Verfahren zum Durchführen einer modularen Exponentiation wird weiter bevorzugt eingesetzt in einem computerimplementierten Verfahren zur Generierung von RSA-Schlüsseln umfassend einen öffentlichen Schlüssel e,N und einen privaten Schlüssel d,N , das Verfahren umfassend das Auffinden zweier Primzahlen p und q unter Anwendung eines computerimplementierten Verfahrens zum Durchführen eines Primzahltests, um die Primzahlen p und q aufzufinden.
-
Figurenliste
-
Im Folgenden wird die Erfindung an Hand von Ausführungsbeispielen und unter Bezugnahme auf die Zeichnung näher erläutert, in der zeigen:
- 1 ein Schaubild zur Veranschaulichung einer Multiplikation eines Werts R in Binärdarstellung, d.h. in Darstellung mit Basis a = 2, die durch Verschieben des Werts R im Register um a=2 verwirklicht ist,
- 2 Bestandteile der erfindungsgemäßen Formel zur Exponentiation.
-
Detaillierte Beschreibung von Ausführungsbeispielen
-
1 zeigt ein Schaubild zur Veranschaulichung einer Multiplikation eines Werts R, der in einem Register REG abgelegt ist. R ist in Binärdarstellung angegeben, d.h. in Darstellung mit Basis a = 2. Die Wertigkeit der Bits des dargestellten Registers REG ist links an höchsten und rechts am geringsten. Die Multiplikation ist durch Verschieben des Werts R im Register REG um a=2 nach links, in Richtung der höherwertigen Bits, verwirklicht. Zeile a) zeigt einen sechs Bit langen Wert R = 011111. Zeile b) zeigt den Vorgang der Multiplikation des Werts R mit der Basis a= 2, angedeutet durch einen Pfeil, der den Wert R im Register um ein Bit nach links verschiebt. Zeile c) zeigt den multiplizierten Wert R*2. Nun ist jedes Bit des Registers um einen Wert nach links verschoben, und ganz rechts eine 0 angefügt. Die ursprünglich enthaltende führende 0, die den Wert von R* nicht beeinflusst, ist nicht mehr im Register, da dieses nur sechs Stellen hat. Multiplikation mit 2*2 würde die Bits im Register REG um zwei Positionen verschieben.
-
2 zeigt Bestandteile der erfindungsgemäßen Formel zur Exponentiation.