-
Die
vorliegende Erfindung betrifft ein Gegenmaßnahmen-Verfahren in einer
einen Chiffrierungsalgorithmus mit öffentlichem Schlüssel vom
Typ RSA umsetzenden elektronischen Komponente.
-
Im
klassischen Modell der Kryptographie mit geheimem Schlüssel müssen zwei
Personen, die über
einen nicht gesicherten Kanal miteinander kommunizieren möchten, sich
vorab über
einen geheimen Chiffrierungsschlüssel
K einigen. Die Chiffrierungsfunktion und die Dechiffrierungsfunktion
benutzen dabei denselben Schlüssel
K. Der Nachteil des Chiffrierungssystems mit geheimem Schlüssel besteht
darin, dass das System die vorherige Übermittlung des Schlüssels K
zwischen den beiden Personen über
einen gesicherten Kanal erfordert, bevor irgendeine chiffrierte
Meldung durch den nicht gesicherten Kanal verschickt werden kann.
In der Praxis ist es im Allgemeinen schwierig, einen absolut gesicherten
Kommunikationskanal zu finden, vor allem, wenn die die beiden Personen
trennende Entfernung groß ist.
Unter gesichertem Kanal versteht man einen Kanal, bei dem die Kenntnis
oder die Modifikation der Informationen, die den genannten Kanal
passieren, unmöglich
ist. Ein derartiger gesicherter Kanal kann durch ein die beiden,
sich im Besitz der zwei genannten Personen befindenden Terminals
verbindendes Kabel realisiert werden.
-
Das
Kryptographiekonzept mit öffentlichem Schlüssel wurde
1976 von Whitfield DIFFIE und Martin HELLMAN erfunden. Die Kryptographie
mit öffentlichem
Schlüssel
erlaubt die Lösung
des Problems der Weitergabe der Schlüssel durch einen nicht gesicherten
Kanal. Das Prinzip der Kryptographie mit öffentlichem Schlüssel besteht
im Einsatz eines Schlüsselpaares,
eines öffentlichen
Chiffrierungsschlüssels
und eines privaten Dechiffrierungsschlüssels. Es muss rechnerisch
unmöglich
sein, ausgehend von dem öffentlichen
Chiffrierungsschlüssel den
privaten Dechiffrierungsschlüssel
zu finden. Eine Person A, die eine Information an eine Person B übermitteln
möchte,
benutzt den öffentlichen
Chiffrierungsschlüssel
der Person B. Nur die Person B besitzt den ihrem öffentlichen
Schlüssel
zugeordneten privaten Schlüssel.
Nur die Person B ist daher zum Dechiffrieren der Meldung in der
Lage, die ihr zugeschickt wird.
-
Ein
weiterer Vorteil der Kryptographie mit öffentlichem Schlüssel gegenüber der
Kryptographie mit geheimem Schlüssel
besteht darin, dass die Kryptographie mit öffentlichem Schlüssel die
Authentifizierung durch Einsatz der elektronischen Unterschrift
erlaubt.
-
Die
erste Realisierung eines Chiffrierungsschemas mit öffentlichem
Schlüssel
wurde 1977 durch Rivest, Shamir und Adleman ausgearbeitet, die das
Chiffrierungssystem RSA erfunden haben. Die Sicherheit von RSA beruht
auf der Schwierigkeit, eine große
Zahl zu fakturieren, die das Produkt von zwei Primzahlen ist. Seitdem
wurden zahlreiche Chiffrierungssysteme mit öffentlichem Schlüssel vorgeschlagen,
deren Sicherheit auf unterschiedlichen kalkulatorischen Problemen
beruht: (diese Liste erhebt keinen Anspruch auf Vollständigkeit).
- – „Rucksack" von Merckle-Hellman:
- Dieses Chiffrierungssystem beruht auf der Schwierigkeit des
Problems der Summe der Teilsysteme;
- – McEliece:
- Dieses Chiffrierungssystem basiert auf der Theorie der Algebracodes.
Es basiert auf dem Problem der Kodierung von linearen Codes;
- – ElGamal:
- Dieses Chiffrierungssystem basiert auf der Schwierigkeit des
diskreten Logarithmus in einem fertigen Körper;
- – elliptische
Kurven:
- Das Chiffrierungssystem mit elliptischer Kurve besteht aus einer
Modifikation von vorhandenen kryp tographischen Systemen zur Anwendung
auf den Bereich von elliptischen Kurven. Der Vorteil der Chiffrierungssysteme
mit elliptischen Kurven besteht darin, dass sie eine kleinere Schlüsselgröße erfordern
als bei den anderen Chiffrierungssystemen.
-
Das
Chiffrierungssystem RSA ist das am häufigsten eingesetzte Chiffrierungssystem
mit öffentlichem
Schlüssel.
Es kann als Chiffrierungsverfahren oder als Unterschriftsverfahren
verwendet werden. Das Chiffrierungssystem RSA wird in Chipkarten
bei einigen Anwendungen derselben eingesetzt. Die möglichen
Anwendungen von RSA auf einer Chipkarte sind der Zugriff auf Datenbanken,
Bankenanwendungen, entfernte Zahlungsanwendungen, wie zum Beispiel
Pay-TV, die Ausgabe von Benzin oder die Zahlung von Autobahnmaud.
-
Das
Prinzip des Chiffrierungssystems RSA funktioniert folgendermaßen. Es
kann in drei unterschiedliche Teile aufgeteilt werden, und zwar:
- 1) die Erzeugung des Schlüsselpaares RSA
- 2) Die Chiffrierung einer klaren Meldung in eine chiffrierte
Meldung und
- 3) Die Dechiffrierung einer chiffrierten Meldung in eine klare
Meldung.
-
Der
erste Teil ist die Erzeugung des Schlüssels RSA. Jeder Nutzer erstellt
einen öffentlichen Schlüssel RSA
und einen entsprechenden privaten Schlüssel gemäß dem folgenden Verfahren in
5 Stufen:
- 1) Erzeugen von zwei unterschiedlichen
Primzahlen p und q derselben Größe
- 2) Berechnung von n = pq und ⌋ = (p – 1)(q – 1)
- 3) Zufällige
Auswahl einer ganzen Zahl e, 1 < e < ⌋, wie
zum Beispiel pgcd (e, ⌋) = 1
- 4) Berechnung der einzigen ganzen Zahl d, 1 < d < ⌋,
wie zum Beispiel e*d = 1 mod ⌋.
- 5) Der öffentliche
Schlüssel
ist (n, e); der private Schlüssel
ist d oder (d, p, q).
-
Die
ganzen Zahlen e und d werden jeweils als Chiffrierungsexponent und
Dechiffrierungsexponent bezeichnet. Die ganze Zahl n wird als Modul
bezeichnet.
-
Der
zweite Teil der Generation mit Schlüssel RSA besteht in der Chiffrierung
einer mit m bezeichneten klaren Meldung mittels eines Algorithmus
mit 1 < m < n in eine mit c
bezeichnete chiffrierte Meldung wie folgt:
Berechnung von c
= m^e mod n.
-
Der
dritte Teil der Erzeugung des Schlüssels RSA besteht in der den
privaten Dechiffrierungsexponenten p einsetzenden Dechiffrierung
mittels eines Algorithmus. Der Dechiffrierungsalgorithmus einer mit
c bezeichneten chiffrierten Meldung mit 1 < c < n in
eine mit m bezeichnete klare Meldung erfolgt wie folgt:
Berechnung
von m = c^d mod n.
-
Der
zuvor beschriebene Dechiffrierungsalgorithmus RSA kann durch zwei
unterschiedliche Methoden erfolgen. Diese beiden Methoden sind:
Dechiffrierung mit CRT und Dechiffrierung ohne CRT. CRT ist ein
Akronym für
Chinese Remainder Therorem. Der Vorteil des Dechiffrierungsalgorithmus
mit CRT besteht darin, dass er theoretisch 4 Mal schneller ist als
der Dechiffrierungsalgorithmus ohne CRT.
-
Der
Dechiffrierungsalgorithmus ohne CRT besteht in der Berechnung von
m = c^d mod n wie zuvor beschrieben.
-
Der
Dechiffrierungsalgorithmus mit CRT besteht in den 4 folgenden Stufen:
- 1) Berechnung von cp = c modulo p und cq =
c modulo q
- 2) Berechnung von dp = d modulo p – 1 und dq = d modulo q – 1
- 3) Berechnung von mp = cp^dp modulo p und mq = cq^dq modulo
q
- 4) Berechnung von m = mp*q* (q^(–1) mod p) + mq*p* (p^(–1) mod
q)
-
Zur
Realisierung der in den zuvor beschriebenen Berechnungsverfahren
notwendigen modularen Exponentierungen gibt es mehrere Algorithmen:
- – Den
als „square
and multiply" bezeichneten
Algorithmus;
- – Den
Algorithmus mit Additionsketten;
- – Den
Algorithmus mit Fenster;
- – Den
Algorithmus mit unterschriebener Darstellung,
-
Diese
Liste erhebt keinen Anspruch auf Vollständigkeit. Der einfachste und
am häufigsten
eingesetzte Algorithmus ist der Algorithmus „square and multiply". Der Algorithmus „square
and multiply" übernimmt
am Eingang eine Zahl c, einen Exponenten d und ein Modul n. Der
Exponent d wird mit d = (d(t)), d(t – 1), d(0)) bezeichnet, wobei
(d(t), d(t – 1) ist,
wobei d (0)) die binäre
Darstellung von d ist, wobei d (t) das Bit mit hohem Bitgewicht
ist und d(0) das Bit mit niedrigem Bitgewicht. Die Darstellung der
Zahl fünf
als binäre Zahl
ist aufgrund der Tatsache, dass 5 = 1*2^2 + 0*2^1 + 1*2^0 ist, zum
Beispiel 101. Die Primzahl 1 ist das Bit mit hohem Gewicht und die
letzte Primzahl 1 das Bit mit niedrigem Gewicht. Der Algorithmus
dreht am Ausgang die Zahl m = c^d mod n um.
-
Der
Algorithmus „square
and multiply" umfasst
die folgenden 3 Stufen:
- 1) Initialisierung
einer ganzen Variablen A mit dem Wert c;
- 2) Für
i, das von t – 1
bis 0 reicht, erfolgt:
- 2a) Ersatz von A durch A*A mod n;
- 2b) Wenn d(i) = 1, Ersatz von A durch A*c mod n;
- 3) Rückkehr
in die obige Stufe 1.
-
Im
Fall der Dechiffrierung RSA ohne CRT erfolgt die Dechiffrierung
wie zuvor beschrieben unter Einsatz des Algorithmus „square
and multiply". In
diesem Fall nimmt der Algorithmus „square and multiply" dann am Eingang
die chiffrierte Meldung c, das Modul n und den Dechiffrierungsexponenten
d auf.
-
In
dem Fall der Dechiffrierung RSA mit CRT erfolgt die Dechiffrierung
wie zuvor beschrieben unter zweimaligem Einsatz des Algorithmus „square
and multiply" für die Ausführung der
Stufe 3) des Dechiffrierungsalgorithmus mit CRT. Das erste Mal nimmt der
Algorithmus am Eingang die ganzen Zahl cp, das Modul p und den Exponenten
dp auf. Das zweite Mal nimmt der Algorithmus am Eingang die ganze
Zahl cq, das Modul q und den Exponenten dq auf.
-
Es
ist möglich,
diese Operationen im Innern einer Chipkarte durchzuführen, wobei
die genannten Operatio nen durch den Mikroprozessor der Chipkarte
durchgeführt
werden. Es hat sich gezeigt, dass die Implementierung eines Chiffrierungsalgorithmus
mit öffentlichem
Schlüssel
vom Typ RSA auf der Chipkarte für
aus einer Differentialanalyse des das Wiederfinden des privaten
Dechiffrierungsschlüssels
erlaubenden Stromverbrauchs bestehenden Angriffe empfindlich ist.
Diese Angriffe werden als DPA-Angriffe bezeichnet, das Akronym für Differential
Power Analysis. Das Prinzip dieser DPA-Angriffe beruht auf der Tatsache,
dass der Stromverbrauch des ausführenden
Mikroprozessors je nach der behandelten Angabe variiert.
-
Wenn
eine Anweisung eine Angabe behandelt, von der ein Bit konstant ist,
wobei der Wert der anderen Bits variieren kann, zeigt insbesondere
die Analyse des mit der Anweisung verbundenen Stromverbrauchs, dass
der durchschnittliche Verbrauch der Anweisung nicht derselbe ist,
je nachdem, ob das besondere Bit den Wert 0 oder 1 übernimmt.
Der Angriff vom Typ DPA erlaubt daher den Erhalt von zusätzlichen
Informationen zu den vom Mikroprozessor der Karte behandelten intermediären Daten
bei der Ausführung
eines kryptographischen Algorithmus. Diese zusätzlichen Informationen können in
bestimmten Fällen
die Aufdeckung der privaten Parameter des Dechiffrierungsalgorithmus
erlauben, was das kryptographische System unsicher macht.
-
In
der Folge dieser Patentschrift werden zwei DPA-Angriffstypen auf dem Dechiffrierungsalgorithmus
RSA beschrieben. Der erste beschriebene DPA-Angriff betrifft den
Dechiffrierungsalgorithmus RSA ohne CRT. Der zweite beschriebene
Angriff betrifft den Dechiffrierungsalgorithmus RSA mit CRT. Diese
beiden Angriffe erlauben die Aufdeckung des privaten Dechiffrierungsexponenten
d. Sie gefährden daher
beträchtlich
die Sicherheit der Implementierung von RSA auf einer Chipkarte.
-
Der
erste DPA-Angriff betrifft den Dechiffrierungsalgorithmus RSA ohne
CRT. Der Angriff erlaubt die direkte Aufdeckung des geheimen Exponenten
d, der auch als privater Schlüssel
bezeichnet wird.
-
Die
erste Stufe des Angriffs ist das Registrieren des der Ausführung des
zuvor beschriebenen Algorithmus „square and multiply" entsprechenden Stromverbrauchs
für N chiffrierte
unterschiedliche Meldungen c(1), ..., c(N).
-
Für die Klarheit
der Beschreibung des Angriffs wird mit der Beschreibung einer den
Erhalt des Wertes des Bits d(t – 1)
des privaten Schlüssels
d oder (d(t), d(t – 1),
d(0)) erlaubenden Methode, der binären Darstellung von d, wobei
d(t) das Bit mit hohem Gewicht ist und d(0) das Bit mit geringem
Gewicht, begonnen. Anschließend
wird ein Algorithmus beschrieben, der das Wiederfinden des Wertes
von d erlaubt.
-
Man
fasst die Meldungen c(1) bis c(N) gemäß dem Wert des Bits mit geringem
Gewicht von c^4 mod n zusammen, wobei c eine der Meldungen c(1)
bis c(N) bezeichnet. Die erste Gruppe wird durch Meldungen c gebildet,
so dass das Bit mit geringem Gewicht von c^4 mod n gleich 1 ist.
-
Die
zweite Gruppe wird von den Meldungen c gebildet, so dass das genannte
Bi gleich 0 ist. Man berech net den Durchschnitt des jeder dieser
beiden Gruppen entsprechenden Stromverbrauchs und berechnet die
Abweichungskurve zwischen diesen beiden Durchschnitten.
-
Wenn
das Bit d(t – 1)
von d gleich 0 ist, dann berechnet und speichert der zuvor beschriebene
Exponentialalgorithmus den Wert c^4 mod n. Das bedeutet, dass der
Mikroprozessor der Karte bei der Ausführung des Algorithmus in einer
Chipkarte effektiv c^4 mod n berechnen wird. In diesem Fall ist
das letzte Bit der vom Mikroprozessor bearbeiteten Angabe in einer
Gruppe von Meldungen immer gleich 1 und in der anderen Gruppe von
Meldungen ist das letzte Bit der behandelten Angabe immer gleich
0. Der Durchschnitt des jeder Gruppe entsprechenden Stromverbrauchs
ist daher unterschiedlich. In der Abweichungskurve erscheint daher
zwischen den beiden Durchschnitten eine Differentialspitze des Stromverbrauchs.
-
Wenn
das Bit d(t – 1)
von d im Gegenteil gleich 1 ist, berechnet der zuvor beschriebene
Exponentialalgorithmus nicht den Wert von c^4 mod n. Bei der Ausführung des
Algorithmus durch die Chipkarte behandelt der Mikroprozessor daher
niemals die Angabe c^4 mod n. Es erscheint daher keine Differentialspitze
des Verbrauchs.
-
Diese
Methode erlaubt daher die Bestimmung des Wertes des Bits d(t – 1) von
d.
-
Der
in dem folgenden Absatz beschriebene Algorithmus ist eine Verallgemeinerung
des vorherigen Algorithmus. Er erlaubt die Bestimmung des Wertes
des privaten Schlüssels
d:
Der Algorithmus nimmt am Eingang N Meldungen c(1) bis c(N)
und das Modul RSA n auf und schickt am Ausgang eine ganze Zahl h
zurück.
Die Stufen des obigen Algorithmus lauten daher wie folgt:
- 1) 1 in die Variable h setzen,
- 2) Für
i, das von t – 1
bis 1 reicht, die folgenden Stufen ausführen:
- 2)1) Die Meldungen c(1) bis c(N) gemäß des Wertes des letzten Bits
von c^(4*h) mod n in zwei Gruppen einordnen;
- 2)2) Den Durchschnitt des Stromverbrauchs für jede der 2 Gruppen berechnen;
- 2)3) Die Abweichung zwischen den beiden Durchschnitten berechnen;
- 2)4) Wenn die Abweichung eine Differenzialspitze des Verbrauchs
ergibt, h = h*2 berechnen; Ansonsten h = h*2 + 1 ausführen.
-
Das
Ergebnis des Algorithmus ist in der Variablen h enthalten.
-
Der
vorherige Algorithmus liefert eine ganze Zahl h, wie zum Beispiel
d = 2*h oder d = 2*h + 1. Um den Wert von d zu erhalten, braucht
man anschließend
nur die beiden möglichen
Hypothesen zu testen, die d = 2*h und d = 2*h + 1 sind. Der Angriff
vom beschriebenen Typ DPA erlaubt daher das Wiederfinden des privaten
Schlüssels
d, wenn der Dechiffrierungsalgorithmus RSA ohne CRT durchgeführt wird.
-
Der
zweite mögliche
DPA-Angriff auf den Dechiffrierungsalgorithmus RSA betrifft die
Anwendung des Dechiffrierungsalgorithmus mit CRT wie zuvor beschrieben.
-
Der
beschriebene Angriff erfolgt mit gewählter Meldung und bezieht sich
ausschließlich
auf die modulare Reduktionsoperation (Stufe 1) in der Beschreibung
des Dechiffrierungsalgorithmus mit CRT.
-
Der
Angriff besteht darin, ordnungsgemäß ausgewählte Meldungen an die Karte
zu schicken. Die Größe der binären Darstellung
von p ist eine ganze Zahl k. Man hat also 2^(k – 1) < p < 2^k.
Dann unterscheidet man zwei Fälle:
Im
ersten Fall hat man 2^(k – 1)
+ 2^(k – 2) < p < 2^k.
Im zweiten
Fall hat man 2^(k – 1) < p < 2^(k – 1) + 2^(k – 2).
-
Das
Verfahren besteht darin, eine erste Gruppe A von Meldungen c, wie
zum Beispiel c < 2^(k – 1) von
der Karte dechiffrieren zu lassen. Die modulare Reduktion von c
modulo P ergibt daher genau die ganze Zahl c als Ergebnis. Auch
lässt man
von der Karte eine zweite Gruppe B von Meldungen c dechiffrieren,
wie zum Beispiel 2^k < c < 2^k + 2^(k – 2) im
ersten Fall und 2^(k – 1)
+ 2^(k – 2) < c < 2^k im zweiten
Fall. In beiden Fällen
ergibt die modulare Reduktion von c modulo P c-p. Die Karte wird
also im Anschluss die Angabe c-p behandeln. Durch Analyse der Abweichung
des Verbrauchs zwischen den Meldungen der Gruppe A, für die das
Ergebnis c ist, und den Meldungen der Gruppe B, für die das
Ergebnis c-p ist, ist die Kenntnis jeder den Erhalt von p erlaubenden
notwendigen Information durch Vergleich möglich.
-
In
diesem Absatz wird die den Erhalt des Bits mit geringem Gewicht
von p erlaubende Methode erläutert.
Die Methode zum Erhalt der anderen Bits von p ist ähn lich.
Die Meldungen der Gruppe A werden in zwei Kategorien eingestuft:
eine Gruppe von Meldungen A0, für
die das letzte Bit der Meldungen gleich 0 ist und eine Gruppe von
Meldungen A1, für
die das letzte Bit gleich 1 ist. Dieselbe Operation wird für die Gruppe
B realisiert, wobei die Gruppe B0 und die Gruppe B1 erhalten werden.
Wenn das Bit von niedrigem Gewicht von p gleich 1 ist, weist die
Abweichung des Verbrauchs zwischen der Gruppe A0 und B0 eine Differentialspitze
des Verbrauchs auf, denn in der Gruppe A0 ist das letzte Bit des
Ergebnisses gleich 0 und in der Gruppe B0 ist das letzte Bit des
Ergebnisses gleich 1. Wenn das Bit mit niedrigem Gewicht von p gleich
0 ist, weist die Abweichung des durchschnittlichen Verbrauchs zwischen
den Gruppen keine Spitzen auf. Durch diese Methode kann man das
Bit mit niedrigem Gewicht von p bestimmen. Durch eine ähnliche
Methode kann man nacheinander die Bits von p bestimmen.
-
Das
erfindungsgemäße Verfahren
besteht aus der Erarbeitung von zwei die Abwehr von 2 zuvor beschriebenen
Arten von DPA-Angriffen (Angriff mit CRT und Angriff ohne CRT) erlaubenden
Gegenmaßnahmen.
Das Verfahren der ersten Gegenmaßnahme besteht in der Durchführung der
Berechnungen modulo p*r und q*t, wobei r und t zufällige Zahlen sind.
Das Verfahren der ersten Gegenmaßnahme besteht in einer Verbesserung
eines bereits vorhandenen, im von der Firma Cryptography Research
gestellten Patentantrag WO 99/35782 vorgestellten Verfahrens. In
diesem Patentantrag wird eine die Abwehr von den Angriffen vom Typ
DPA bei der Dechiffrierungsoperation RSA erlaubende Methode beschrieben.
Der Nachteil dieser Methode besteht darin, dass sie die Umsetzung
von Divisionen von ganzen Zahlen erfordert, welche im Innern eines
tragbaren Gegenstandes vom Typ Chipkarte schwer zu realisieren sind.
Das Verfahren der ersten Gegenmaßnahme umfasst ausschließlich die
Additions- und Multiplikationsoperationen. Die zweite Gegenmaßnahme besteht
darin, die den Satz des Chinesischen Restes oder CRT einsetzende
Rekombination zufällig
zu machen.
-
Das
Verfahren der ersten Gegenmaßnahme besteht
in der Verwendung eines zufälligen
Berechnungsmoduls bei jeder neuen Ausführung des Dechiffrierungsalgorithmus
mit CRT. Es besteht in der Durchführung der Berechnungen modulo
p*r und q*t, in dem r und t zufällige
Zahlen sind.
-
Dieses
Verfahren nimmt am Eingang eine Meldung c, einen Dechiffrierungsexponenten
d und einen Sicherheitsparameter s auf und umfasst die acht folgenden
Stufen:
- 1) Ermitteln von drei zufälligen,
zwischen o und 2^s inbegriffenen Zahlen r, t und u;
- 2) Berechnung von p' =
p*r und q' = q*t;
- 3) Ersatz von c durch c + u*n
- 4) Berechnung von cp = c modulo p' und cq = c modulo q';
- 5) Berechnung von dp = d' modulo
p – 1
und dq = d' modulo
q – 1;
- 6) Berechnung von mp' =
cp^dp modulo p' und mq' = cq^dq modulo q';
- 7) Berechnung von m = ((mq – mp)
* (p^(–1))
mod q) mod q') *
p + mp
- 8) Ersatz von m durch m mod n.
-
Das
Verfahren der ersten Gegenmaßnahme umfasst
zwei Varianten, die die Aktualisierung der ganzen Zahlen r und t
betreffen. Die erste Variante besteht darin, dass gemäß dem zuvor
beschriebenen Verfahren ein neues Paar ganzer Zahlen r und t bei jeder
neuen Ausführung
des Dechiffrierungsalgorithmus berechnet wird. Die zweite Variante
besteht darin, dass ein Zähler
bei jeder neuen Ausführung
des Dechiffrierungsalgorithmus inkrementiert wird. Wenn dieser Zähler einen
festen Wert T erreicht, wird gemäß dem zuvor
beschriebenen Verfahren ein neues Paar ganzer Zahlen r und t berechnet
und der Zähler wird
wieder auf 0 gesetzt. In der Praxis kann T = 16 annehmen.
-
Das
Verfahren der ersten Gegenmaßnahme umfasst
eine dritte Variante, die sinnvoll ist, wenn die Größe der Operationen
auf den ganzen Zahlen begrenzt ist. Diese dritte Variante umfasst
die folgenden Stufen:
- 1) Ermittlung von vier
zufälligen,
zwischen o und 2^s inbegriffenen Zahlen r, t, u und v;
- 2) Berechnung von p' =
p*r und q' = q*t;
- 3) Berechnung von cp = c modulo p' und cq = c modulo q';
- 4) Ersatz von cp durch cp + u*p und Ersatz von cq durch cq +
v*q.
- 5) Berechnung von dp = d' modulo
p – 1
und dq = d' modulo
q – 1;
- 6) Berechnung von mp' =
cp^dp modulo p' und mq' = cq^dq modulo q';
- 7) Berechnung von m = (((mq – mp) * (p^(–1) mod q)
mod q') * p mod
n) + mp mod n
- 8) Ersatz von m durch m mod n.
-
Das
Verfahren der ersten Gegenmaßnahme umfasst
eine vierte, die Erhöhung
der Sicherheit der Operationen erlaubende Variante. In dieser vierten Variante
wird ein Teil der Dechiffrierung modulo p und modulo q unter Einsatz
des Satzes des Chinesischen Restes realisiert, und ein Teil der
Dechiffrierung wird modulo n realisiert. Der Sinn dieser vierten
Variante besteht darin, darauf hinzuwirken, dass der Angreifer den
Ausgang der den Satz des Chinesischen Restes einsetzenden Rekombination
nicht kennt. Diese vierte Variante umfasst die folgenden Stufen:
- 1) Ermittlung von drei zufälligen, zwischen o und 2^s
inbegriffenen Zahlen r, t und u;
- 2) Berechnung von p' =
p*r und q' = q*t;
- 3) Ersatz von c durch c + u*n
- 4) Berechnung von cp = c modulo p' und cq = c modulo q';
- 5) Berechnung von dp = d' modulo
p – 1
und dq = d' modulo
q – 1;
- 6) Berechnung von dp' =
(dp – 1)/2
und dq' = (dq – 1)/2.
- 7) Berechnung von mp' =
cp^dp' modulo p' und mq' = cq^dq' modulo q';
- 8) Berechnung m = ((mq – mp)
+ (p^(–1)
mod q) mod q') *p
+ mp
- 9) Ersatz von m durch m^2*c mod n.
-
Somit
kann der Angreifer, da er den der Stufe 7 entsprechenden Ausgang
der den Satz des Chinesischen Restes einsetzenden Rekombination
nicht kennt, einen DPA-Angriff auf die den Satz des Chinesischen
Restes verwendenden Rekombination nicht ausführen.
-
Die
zweite Gegenmaßnahme
besteht darin, die den Satz des Chinesischen Restes einsetzende Rekombination
zufällig
zu machen. Das zufällige Merkmal
stammt aus dem Einsatz von zufälligen
Berechnungsmodulen. Diese Gegenmaßnahme besteht im Ersatz der
Stufen 7 und 8 des Verfahrens der ersten Gegenmaßnahme durch die folgenden
Stufen. Mit k wird die Länge
(in Bits) der ganzen Zahl p' bezeichnet.
- a) Auswahl von 2 zufälligen ganzen Zahlen (a0, b0),
wie zum Beispiel b0 = a0 – 1,
wobei die ganzen Zahlen a0 und b0 die Größe von k Bits haben.
- b) Berechnung der ganzen Zahl C = (mq – mp) (p^(–1) mod q) mod q'.
- c) Berechnung (c mod a0) = (C*p + cp) mod a0 und (c mod b0)
= (C*p + cp) mod b0.
- d) Berechnung von 2 zufälligen
ganzen Zahlen (a1, b1), wie zum Beispiel b1 = a1 – 1, wobei
die ganzen Zahlen a1 und b1 die Größe k Bits haben.
- e) Berechnung von C = ((c mod b0) – (c mod a0)) mod b0
- f) Berechnung von (c mod q1) = ((C*a0 + (c mod ao) mod a1 und
(c mod b1) = (C*ao + (c mod a0) mod b1
- g) Wiederholung der Stufen 5 und 6 für ein neues Paar (a2, b2) mit
b2 = a2 – 1,
wobei die ganzen Zahlen a2 und b2 die Größe k Bits haben. Die ganzen
Zahlen (a0, b0) und (a1, b1) werden jeweils durch die ganzen Zahlen
(a1, b1) und (a2, b2) ersetzt.
- h) Die Stufe 7 wird k Mal wiederholt, wobei k ein ganzer Parameter
ist.
- i) Die Stufe g wird bei dem Paar ganzer Zahlen (a, b) = (2^k,
2^k – 1)
wiederholt.
- j) Berechnung der durch c1 = c mod 2^k definierten ganzen Zahl
und Berechnung der durch ch = ((c mod 2^k – 1) – (c mod 2^k)) mod 2^k – 1 definierten
ganzen Zahl.
- k) Berechnung der Unterschrift c = ch*2^k + c1.
-
Die
Anwendung der beiden vorherigen Gegenmaßnamen erlaubt den Schutz des
Dechiffrierungsalgorithmus auf der Chipkarte vor Angriffen vom Typ
DPA. Die beiden vorgestellten Gegenmaßnahmen sind darüber hinaus
untereinander kompatibel: Es ist möglich, eine oder zwei der beschriebenen Gegenmaßnahmen
sowie die 4 Varianten der ersten Gegenmaßnahme auf den Dechiffrierungsalgorithmus
RSA anzuwenden.