-
Die
vorliegende Erfindung bezieht sich auf Detektion von kryptographischen
Angriffen auf kryptographische Berechnungseinheiten, und insbesondere
auf Detektion von einer Beeinflussung der kryptographischen Einheiten
von außen
im Rahmen des kryptographischen Angriffs.
-
Zwei
der bekanntesten Angriffsszenarien auf Sicherheitsbausteine (Security-Bausteine)
sind die differentielle Leistungsanalyse (differential power analysis,
DPA) und Fehlerangriffe (fault attacks, FA). Jede Art dieser Bausteine
muss in der Lage sein, diese Angriffe abzuwehren.
-
Bei
einem DPA-Angriff wird auf der Basis einer Messung einer Leistung,
die von einem kryptographischen Baustein während einer kryptographischen
Berechnung mit vorbestimmten Angriffsparametern verbraucht wird,
eine Information abgeleitet, die beispielsweise zu einer Offenlegung
eines durch die kryptographische Berechnung verwendeten privaten
Schlüssels
führt.
-
Um
einen DPA-Angriff zu vereiteln, können unterschiedliche Zeitverzögerungen
implementiert werden, um die von einem DPA-Angriff ausgenutzten Verarbeitungsmuster
so zu verändern,
dass die zu einer Offenlegung des privaten Schlüssels notwendigen charakteristischen
Merkmale in dem Leistungsverlauf nicht auftreten.
-
Eine
andere Möglichkeit
besteht darin, die kryptographischen Daten zu maskieren, wobei die kryptographischen
Daten mit beispielsweise Maskierungszahlen derart verknüpft werden,
dass eine Leistungsanalyse nicht zu dem gewünschten Erfolg führt.
-
Bei
den Fehlerattacken handelt es sich hingegen um kryptographische
Angriffe, bei denen beispielsweise durch eine äußere Einwirkung auf einen kryptographischen
Chip Fehler in der kryptographischen Berechnung herbeigeführt werden,
die zu einer Offenlegung des privaten Schlüssels führen können.
-
Fehlerattacken
können
beispielsweise mit Sensorik und spezieller Software abgewehrt werden. Ersteres
löst das
Problem jedoch nur symptomatisch, da eine Einwirkung, nicht jedoch
die Wirkung erkannt wird. Letzteres ist nur gut in speziellen Situationen möglich, beispielsweise
bei einer RSA-Berechnung, aber schlecht bei der allgemeinen Ausführung vom Code
in der CPU.
-
DPA-Attacken
können
beispielsweise durch Erzeugung eines ausgeglichenen Stromprofils,
z.B. durch Dual-Rail with Precharge in FullCustom, durch Erzeugung
durch Strom- bzw. Zeitlichem Rauschen oder durch Randomisierung
der verarbeiteten Daten abgewehrt werden. Letzteres ist wiederum
nur in speziellen Situationen durch die Software möglich, beispielsweise
für die
RSA-Berechnung. Ersteres fordert hingegen ein sehr aufwändiges Design,
so dass ein Semi-Custom Design noch nicht möglich ist, und garantiert nicht
notwendigerweise einen Erfolg. Rauschen als Maskierungsparameter
kann eine DPA-Analyse erschweren, macht sie jedoch nicht unmöglich.
-
Die
US 2001/0053220 A1 zeigt ein Verfahren und Vorrichtungen zum Verbessern
von DES- und anderen kryptographischen Protokollen gegen externe
Abhörattacken
durch Reduktion der Menge (und des Signal-Zu-Rauschverhältnisses)
von Nutzinformationen, welche während
der Verarbeitung entweichen können.
Eine verbesserte DES-Implementation des sicheren vorgeschlagenen
Ansatzes verwendet stattdessen zwei 56-Bit lange Schlüssel (K1
und K2) und zwei 64-Bit lange unverschlüsselte Nachrichten (M1 und
M2), wobei jeder mit einer Permutation (z. B. K1P, K2P und M1P,
M2P) verbunden ist, so dass K1P {K1} XOR K2P {K2} gleich dem „Standard" DES-Schlüssel K ist
und M1P {M1} XOR M2P {M2} gleich der „Standard"-Nachricht ist.
-
Die
Veröffentlichung „On Boolean
and Arithmetic Masking against Differential Power Analysis", verfasst von Coron,
J.-S. und Goubin,
L. veröffentlicht
in „Cryptographic
Hardware and Embedded Systems" – CHES 2000,
vol. 1965 of Lecture Notes in Computer Science, Springer Verlag,
2000, Seiten 231–237,
offenbart, dass seit der Ankündigung
der „Differential
Power Analysis" – DPA durch
Paul Kocher et al. einige Gegenmaßnahmen vorgeschlagen wurden,
um Softwareimplementationen von kryptographischen Algorithmen zu
schützen.
In einem Versuch zum Reduzieren des resultierenden Speicher- und
Ausführungszeit-Überhangs
hat kürzlich
Thomas Messerges ein allgemeines Verfahren vorgeschlagen, das alle
Zwischendaten maskiert. In dieser Maskierung wird ein Verfahren
verwendet, um zwischen einer logischen Maskierung und einer arithmetischen
Maskierung zu wechseln. Die oben bezeichnete Veröffentlichung zeigt jedoch,
dass der Algorithmus „Boolean
to Arithmetic",
der von T. Messerges vorgeschlagen wurde, nicht ausreichend ist,
um eine DPA zu verhindern.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein sichereres kryptographisches
Abwehrkonzept zu schaffen.
-
Diese
Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1 oder durch ein
kryptographisches System gemäß Anspruch
23 oder durch ein Verfahren gemäß Anspruch
24 oder durch ein Verfahren gemäß Anspruch
25 oder durch ein Computerprogramm gemäß Anspruch 26 gelöst.
-
Der
vorliegenden Erfindung liegt die Erkenntnis zugrunde, dass der DPA-Angriff
vereitelt und der FA-Angriff detektiert werden kann, wenn kryptographische
Daten, bevor sie kryptographisch verarbeitet werden, mit Hilfe von
unterschiedlichen Maskierungsparametern maskiert werden (DPA-Abwehr) wobei ein
maskiertes Ergebnis der Berechnung der maskierten Daten weiterverarbeitet
wird, um einen Fehlerangriff zu detektieren, der beispielsweise
während
der kryptographischen Berechnung stattgefunden hat.
-
Erfindungsgemäß wird das
Design einer DPA- und FA-resistenten ALU ermöglicht, was sogar dann gewährleistet
werden kann, wenn als Designmethodik Semi-Custom Design, z.B. Asynchron-Design benutzt wird.
-
Erfindungsgemäß liegen
alle zusätzlichen Delays
außerhalb
des Datenpfades – zumindest
ist es möglich,
eine solche Anordnung hiermit zu realisieren, da beispielsweise
das oben erwähnte
maskierte Ergebnis bzw. das in Kopie außerhalb des Hauptdatenpfades
verarbeitet werden kann.
-
Viele
Attacken, die auf die ALU wirken, werden an der Stelle detektiert,
an der sie relevant sind. Die Ursache bei einem Angriff, wie z.B.
Strahlung oder Spike, ist nämlich
uninteressant, solange sie keine Wirkung entfaltet. Dies bedeutet,
dass ein Arbeitsbereich des Chips nicht künstlich eingeschränkt werden
muss. Darüber
hinaus kann unter Verwendung des erfindungsgemäßen Ansatzes ein stabileres
Design realisiert werden.
-
Da
gemäß der vorliegenden
Erfindung die Fehlerattacke stets unter Verwendung von maskierten
Daten bzw. Ergebnissen detektiert wird, wird hierzu beispielsweise
eine Klartextnachricht als Eingangsdaten nicht benötigt. Dadurch
wird kein zusätzliches
kryptographisches Risiko herbeigeführt.
-
Die
Erfindung schafft ferner ein Konzept, mit dem gleichzeitig DPA-Angriffe
abgewehrt und Fehlerangriffe detektiert werden können.
-
Weitere
Ausführungsbeispiele
werden anhand der beiliegenden Zeichnungen erläutert. Es zeigen:
-
1 ein
Blockdiagramm einer Vorrichtung zum Detektieren eines potentiellen
Angriffs gemäß einem
Ausführungsbeispiel;
-
2 ein
Blockdiagramm einer Vorrichtung zum Detektieren eines potentiellen
Angriffs gemäß einem
weiteren Ausführungsbeispiel;
und
-
3 ein
Blockdiagramm einer Vorrichtung zum Detektieren eines potentiellen
Angriffs gemäß einem
weiteren Ausführungsbeispiel.
-
1 zeigt
eine Vorrichtung zum Detektieren eines potentiellen Angriffs auf
eine kryptographische Berechnung, die eine Berechnung mit wenigstens
einem Parameter durchführt,
mit einer ersten Einrichtung 101 zum Bereitstellen von
einem gemäß einem
ersten Maskierungsalgorithmus maskierten Parameter, einer ersten
Einrichtung 103 zum Durchführen der Berechnung mit dem
maskierten Parameter, um ein maskiertes Ergebnis der Berechnung
zu erhalten, einer Einrichtung 105 zum Ummaskieren des
maskierten Ergebnisses, die ausgebildet ist, um das maskierte Ergebnis
so zu verarbeiten, dass ein ummaskiertes Ergebnis erhalten wird,
das gemäß einem
zweiten Maskierungsalgorithmus maskiert ist, einer zweiten Einrichtung 109 zum
Bereitstellen von einem gemäß dem ersten
Maskierungsalgorithmus maskierten Parameter, einer zweiten Einrichtung 111 zum
Durchführen
der Berechnung mit dem bereitgestellten maskierten Parameter, um
ein zweites maskiertes Ergebnis zu erhalten, und einer Einrichtung 107 zum
Untersuchen des ummaskierten Ergebnisses und des zweiten maskierten
Ergebnisses, um den potentiellen Angriff zu detektieren.
-
Die
Berechnung kann beispielsweise eine Negation eines Parameters umfassen.
Darüber
hinaus kann die Berechnung eine Berechnungsverknüpfung umfassen, beispielsweise
wenn ein Parameter (z.B. eine Zahl) mit einem weiteren Parameter
(z.B. einer Zahl) verknüpft
wird.
-
Die
erste Einrichtung 101 zum Bereitstellen ist beispielsweise
ausgebildet, um einen Parameter mit einem ersten Maskierungsparameter
unter Verwendung des ersten Maskierungsalgorithmus zu maskieren,
um den maskierten Parameter bereitzustellen.
-
Die
in 1 dargestellte Vorrichtung kann ausgebildet sein,
um einen potentiellen Angriff auf eine kryptographische Berechnung,
die eine Berechnungsverknüpfung
eines ersten Parameters mit einem zweiten Parameter durchführt, zu
detektieren. Die Vorrichtung umfasst die erste Einrichtung 101 zum
Bereitstellen von einem gemäß einem
ersten Maskierungsalgorithmus maskierten ersten und zweiten Parameter.
Die erste Einrichtung 101 zum Bereitstellen weist Ausgänge auf,
die mit Eingängen der
ersten Einrichtung 103 zum Durchführen der Berechnung verbunden
sind. In dem in 1 dargestellten Ausführungsbeispiel
umfasst die erste Einrichtung 101 zum Be reitstellen zwei
Ausgänge, über die
jeweils der maskierte erste und zweite Parameter ausgegeben werden.
-
Die
erste Einrichtung 103 zum Durchführen der Berechnung umfasst
einen Ausgang, der mit der Einrichtung 105 zum Ummaskieren
verbunden ist. Die Einrichtung zum Ummaskieren weist einen Ausgang
auf, der mit einem Eingang der Einrichtung zum Untersuchen verbunden
ist.
-
Die
in 1 dargestellte Vorrichtung umfasst ferner die
zweite Einrichtung 109 zum Bereitstellen von einem gemäß dem ersten
Maskierungsalgorithmus maskiertem ersten und zweiten Parameter,
um einen bereitgestellten maskierten ersten und zweiten Parameter
zu erhalten. Die zweite Einrichtung 109 zum Bereitstellen
weist Ausgänge
auf, die mit Eingängen
der zweiten Einrichtung 111 zum Durchführen der Berechnung verbunden
sind. Die zweite Einrichtung 111 zum Durchführen der
Berechnung weist einen Ausgang auf, der mit einem weiteren Eingang
der Einrichtung 107 zum Untersuchen verbunden ist.
-
Die
erste Einrichtung 101 ist ausgebildet, um einen gemäß einem
ersten Maskierungsalgorithmus maskierten ersten und zweiten Parameter
bereitzustellen. Die erste Einrichtung 103 ist ausgebildet,
um den maskierten ersten und zweiten Parameter zu empfangen, und
um die Berechnungsverknüpfung mit
dem maskierten ersten und zweiten Parameter durchzuführen, um
ein erstes maskiertes Ergebnis der Berechnung zu erhalten.
-
Die
zweite Einrichtung 109 ist ausgebildet, um den gemäß dem ersten
Maskierungsalgorithmus maskierten ersten und zweiten Parameter bereitzustellen.
Der bereitgestellte maskierte erste Parameter und der bereitgestellte
maskierte zweite Parameter werden der zweiten Einrichtung 111 zur
Verfügung gestellt,
die ausgebildet ist, um mit dem bereitgestellten maskierten ersten
und zweiten Parameter die Berechnungsverknüpfung durchzuführen, um
ein zweites maskiertes Ergebnis zu erhalten.
-
Das
zweite maskierte Ergebnis wird an die Einrichtung 107 zum
Untersuchen geliefert.
-
Das
erste maskierte Ergebnis der Berechnung wird an die Einrichtung 105 zum
Ummaskieren geliefert, die ausgebildet ist, um das erste maskierte Ergebnis
so zu verarbeiten, dass ein ummaskiertes Ergebnis erhalten wird,
das gemäß einem
zweiten Maskierungsalgorithmus maskiert ist. Das ummaskierte Ergebnis
wird an die Einrichtung 107 zum Untersuchen geliefert.
Die Einrichtung 107 zum Untersuchen ist ausgebildet, um
das ummaskierte Ergebnis und um das zweite maskierte Ergebnis zu
untersuchen, um den Angriff zu detektieren.
-
Die
erste Einrichtung 103 und die zweite Einrichtung 111 zum
Durchführen
der Berechnung können
voneinander getrennt sein. Gemäß einem
weiteren Aspekt können
die erste und die zweite Einrichtung zum Durchführen der Berechnung jedoch
von einer Einrichtung umfasst sein, die ausgebildet ist, um die
Berechnungsverknüpfung
des maskierten ersten und zweiten Parameters, die von der ersten Einrichtung 101 bereitgestellt
werden, als auch um die Berechnungsverknüpfung des bereitgestellten maskierten
ersten und zweiten Parameters, die von der zweiten Einrichtung 109 zum
Bereitstellen bereitgestellt werden, durchzuführen.
-
Gemäß einem
weiteren Aspekt ist die erste Einrichtung 101 zum Bereitstellen
ausgebildet, um einen ersten Parameter mit einem ersten Maskierungsparameter
unter Verwendung des ersten Maskierungsalgorithmus zu maskieren,
um den maskierten ersten Parameter bereitzustellen, und um einen zweiten
Parameter mit einem zweiten Maskierungsparameter unter Verwendung
des ersten Maskierungsalgorithmus zu maskieren, um den maskierten zweiten
Parameter bereitzustellen. Bei dem ersten und zweiten Maskierungsparameter
kann es sich beispielsweise um Zufallszahlen handeln.
-
Der
erste Maskierungsalgorithmus kann beispielsweise eine erste Maskierungsverknüpfung umfassen.
In diesem Fall kann die erste Einrichtung 101 zum Bereitstellen
ausgebildet sein, um die erste Maskierungsverknüpfung durchzuführen, um
den ersten Parameter mit dem ersten Maskierungsparameter zu verknüpfen, und
um den zweiten Parameter mit dem zweiten Maskierungsparameter zu
verknüpfen,
wo bei der ersten Maskierungsverknüpfung und der Berechnungsverknüpfung dieselbe
Verknüpfungsart
zugrunde liegt.
-
Bei
der Verknüpfungsart
kann es sich beispielsweise um eine arithmetische Verknüpfungsart handeln,
die beispielsweise die folgenden arithmetischen Operationen umfasst:
Addition, Subtraktion, Multiplikation und Division. In diesem Fall
handelt es sich bei der Berechnungsverknüpfung und bei der ersten Maskierungsverknüpfung um
arithmetische Verknüpfungen,
beispielsweise um Additionen. Die erste Maskierungsverknüpfung und
die Berechnungsverknüpfung
können
gleiche Verknüpfungsoperation
umfassen. Gemäß einem
weiteren Aspekt ist es jedoch denkbar, dass die erste Maskierungsverknüpfung und
die Berechnungsverknüpfung
unterschiedliche arithmetische Operationen aufweisen können. So
kann beispielsweise die erste Maskierungsverknüpfung eine Subtraktion umfassen,
während
die Berechnungsverknüpfung
eine Addition umfasst.
-
Bei
der Verknüpfungsart
kann es sich jedoch um eine Boolsche Verknüpfungsart, d.h. um eine logische
Verknüpfungsart
handeln. In diesem Fall handelt es sich bei der ersten Maskierungsverknüpfung und
bei der Berechnungsverknüpfung
um eine logische Verknüpfung,
die die folgenden logischen Operationen umfassen kann: „oder" (or), „nicht-oder" (nor), „exklusiv-oder" (xor), „und" (and), sowie „nicht-und" (nand). Die von
der Berechnungsverknüpfung
und von der ersten Maskierungsverknüpfung umfassten logischen Operationen
können
gleich oder unterschiedlich sein. Umfasst die erste Masierungsverknüpfung beispielsweise
ein „exklusiv-oder" (xor) oder ein „exklusiv- nicht-oder" (xnor), so kann die
Berechnungsverknüpfung
beispielsweise ein „und" bzw. ein „nicht-und" umfassen.
-
In
Abhängigkeit
von der Berechnung (der Berechnungsverknüpfung) zugrunde liegenden Verknüpfungsart
können
die erste Einrichtung 103 zum Durchführen der Berechnung als auch
die zweite Einrichtung 111 zum Durchführen der Berechnung ausgebildet
sein, entweder eine arithmetische oder eine logische Verknüpfung durchzuführen. In
Abhängigkeit
von der von der ersten Einrichtung 103 zum Durchführen der
Berechnung durchgeführten
Verknüpfungsart,
kann die erste Einrichtung 101 zum Bereitstellen ausgebildet
sein, um entweder eine arithmetische oder eine logische Verknüpfung durchzuführen. Mit
anderen Worten ausgedrückt,
ist die erste Einrichtung 101 zum Bereitstellen ausgebildet, um
die Parameter arithmetisch zu maskieren (arithmetische Maske), wenn
die erste Einrichtung 103 zum Durchführen der Berechnung ausgebildet
ist, um eine arithmetische Verknüpfung
durchzuführen. Analog
kann die erste Einrichtung 101 zum Bereitstellen ausgebildet
sein, um die Parameter mit Hilfe einer logischen Verknüpfung zu
maskieren (logische Maske), wenn die erste Einrichtung 103 ausgebildet ist,
um eine logische Verknüpfung
durchzuführen.
-
Beispielsweise
ist die erste Einrichtung 101 zum Bereitstellen ausgebildet,
um den ersten Parameter und den ersten Maskierungsparameter zu addieren,
und um den zweiten Parameter und den zweiten Maskierungsparameter
zu addieren, um eine logische Maske zu erzeugen.
-
Gemäß einem
weiteren Aspekt kann die erste Einrichtung 101 zum Bereitstellen
ausgebildet sein, um den ersten Parameter mit dem ersten Maskierungsparameter
und um den zweiten Parameter mit dem zweiten Maskierungsparameter
durch eine logische Verknüpfung
zu verknüpfen,
beispielsweise durch eine „exklusiv-oder"-Verknüpfung oder
durch eine „exklusiv-nicht-oder"-Verknüpfung zu
verknüpfen.
In dem Fall kann die erste Einrichtung 103 zum Durchführen ausgebildet
sein, um den mas kierten ersten Parameter mit dem maskierten zweiten
Parameter durch eine „und"- oder durch eine „nicht-und"-Verknüpfung zu
verknüpfen,
um das erste maskierte Ergebnis zu erhalten, das eine logische Maske
aufweist.
-
Die
von der ersten Einrichtung 103 zum Durchführen der
Berechnung durchgeführte
Berechnung kann beispielsweise eine Berechnung sein, die innerhalb
der kryptographischen Berechnung durchgeführt wird. Die Maskierung dient
dazu, um beispielsweise einen erfolgreichen DPA-Angriff zu verhindern.
Dies geschieht durch Maskierung des ersten und des zweiten Parameters
unter Verwendung des ersten Maskierungsalgorithmus. Das von der
ersten Einrichtung 103 zum Durchführen der Berechnung ausgegebene
Ergebnis kann beispielsweise abgezweigt werden, um im Rahmen der
weiteren kryptographischen Berechnung verwendet zu werden. Die übrigen in 1 dargestellten
Einrichtungen können z.B.
dazu verwendet werden, um einen Fehlerangriff zu detektieren.
-
Die
zweite Einrichtung 109 zum Bereitstellen ist ausgebildet,
um den ersten Parameter mit einem dritten Maskierungsparameter und
Verwendung des zweiten Maskierungsalgorithmus zu maskieren, um einen
maskierten ersten Zwischenparameter zu erhalten, und um den ersten
Parameter mit einem vierten Maskierungsparameter unter Verwendung
des zweiten Maskierungsalgorithmus zu maskieren, um einen maskierten
zweiten Zwischenparameter zu erhalten.
-
Bevorzugt
unterscheidet sich der zweite Maskierungsalgorithmus von dem ersten
Maskierungsalgorithmus derart, dass eine Manipulation der Daten
auf jeden Fall detektierbar ist. Umfasst der zweite Maskierungsalgorithmus
beispielsweise eine zweite Maskierungsverknüpfung, so unterscheiden sich
die erste Maskierungsverknüpfung,
die von dem ersten Maskierungsalgorithmus verwendet wird, und die
zweite Maskierungsverknüpfung,
die von dem zweiten Maskierungsalgorithmus verwendet wird, beispielsweise
in der Verknüpfungsart.
Falls die erste Maskierungsverknüpfung
beispielsweise eine arithmetische Verknüpfung umfasst, so umfasst die
zweite Maskierungsverknüpfung
beispielsweise eine logische Verknüpfung und umgekehrt. Somit
kann gewährleistet
werden, dass selbst bei einem erfolgreichen Angriff auf die arithmetische
Maskierungsverknüpfung
der Angriff auf der Basis der logischen Verknüpfung detektiert werden kann
oder umgekehrt.
-
Mit
anderen Worten, die zweite Maskierungsverknüpfung ist eine logische Verknüpfung, wenn
die erste Maskierungsverknüpfung
eine arithmetische Verknüpfung
ist. Entsprechend ist die zweite Maskierungsverknüpfung eine
arithmetische Verknüpfung,
wenn die erste Maskierungsverknüpfung eine
logische Verknüpfung
ist.
-
Beispielsweise
umfasst die zweite Maskierungsverknüpfung eine „exklusiv-oder" oder eine „exklusiv-nicht-oder"-Verknüpfung, wenn
die erste Maskierungsverknüpfung
eine Addition oder eine Subtraktion umfasst. Entsprechend umfasst
die zweite Maskierungsverknüpfung
beispielsweise eine Addition oder eine Subtraktion, wenn die erste
Maskierungsverknüpfung
eine „exklusiv-nicht-oder"-Verknüpfung oder
eine „exklusiv-oder"-Verknüpfung umfasst.
-
Mit
anderen Worten ausgedrückt,
werden der erste und der zweite Parameter unter Verwendung des zweiten
Maskierungsalgorithmus maskiert, um beispielsweise eine logische
Maske zu erzeugen, wenn der erste Maskierungsalgorithmus eine arithmetische
Maske erzeugt, oder um beispielsweise eine arithmetische Maske zu
erzeugen, wenn der erstes Maskierungsalgorithmus eine logische Maske erzeugt.
-
Gemäß einem
weiteren Ausführungsbeispiel kann
die zweite Einrichtung 109 zum Bereitstellen einer Einrichtung
zum Ummaskieren umfassen, die ausgebildet ist, um den maskierten
ersten Zwischenparameter umzumaskieren, um den bereitgestellten maskierten
ersten Parameter zu erhalten, und um den maskier ten zweiten Zwischenparameter
umzumaskieren, um den bereitgestellten maskierten zweiten Parameter
zu erhalten.
-
Die
Einrichtung zur Ummaskierung, die von der zweiten Einrichtung zum
Bereitstellen umfasst ist, kann beispielsweise ausgebildet sein,
um eine logische Maske durch eine arithmetische Maske zu ersetzen.
-
Beispielsweise
ist die eine Richtung zum Ummaskieren, die von der zweiten Einrichtung 109 zum
Bereitstellen umfasst ist, ausgebildet, um die maskierten ersten
Parameter unter Verwendung eines weiteren Maskierungsparameters,
der sich von dem dritten Maskierungsparameter unterscheiden, umzumaskieren,
um den bereitgestellten maskierten ersten Parameter zu erhalten,
und um den maskierten zweiten Zwischenparameter unter Verwendung eines
weiteren Maskierungsparameters, der sich von dem vierten Maskierungsparameter
unterscheidet, umzumaskieren, um den bereitgestellten maskierten zweiten
Parameter zu erhalten.
-
Mit
anderen Worten ausgedrückt
ist die Einrichtung zum Ummaskieren ausgebildet, um das Ergebnis
der Berechnung unter Verwendung von neuen Maskierungsparametern,
die noch nicht verwendet worden sind, umzumaskieren, um beispielsweise eine
logische Maske durch eine arithmetische zu ersetzen.
-
Gemäß einem
weiteren Aspekt kann die Einrichtung zum Ummaskieren ausgebildet
sein, um den ersten maskierten Zwischenparameter und um den maskierten
zweiten Zwischenparameter unter Verwendung von weiteren Maskierungsparametern
so umzumaskieren, dass der bereitgestellte maskierte erste Parameter
und der bereitgestellte maskierte zweite Parameter jeweils eine
arithmetische Verknüpfung
mit einem weiteren Maskierungsparameter darstellen, wenn die zweite
Einrichtung 111 zum Durchführen der Berechnung ausgebildet
ist, um eine arithmetische Verknüpfung
durchzuführen,
oder so umzumaskieren, dass der bereitgestellte maskierte erste
Parameter und der bereitge stellte maskierte zweite Parameter jeweils
eine logische Verknüpfung mit
einem weiteren Maskierungsparameter darstellen, wenn die zweite
Einrichtung 111 zum Durchführen der Berechnung ausgebildet
ist, um eine logische Verknüpfung
darzustellen. Die Einrichtung 105 zum Ummaskieren weist
beispielsweise dieselben Eigenschaften auf.
-
Die
Einrichtung 105 zum Ummaskieren kann ausgebildet sein,
um das maskierte Ergebnis unter Verwendung eines weiteren Maskierungsparameters,
der sich von dem ersten und dem zweiten Maskierungsparameter unterscheidet,
so umzumaskieren, dass das ummaskierte Ergebnis eine arithmetische
Verknüpfung
des ersten Parameters, des zweiten Parameters und des weiteren Maskierungsparameters
darstellt, wenn die Einrichtung 103 zum Durchführen der
Berechnung ausgebildet ist, um eine logische Verknüpfung durchzuführen, oder
so umzumaskieren, dass das ummaskierte Ergebnis eine logische Verknüpfung des
ersten Parameters, des zweiten Parameters und des weiteren Maskierungsparameters
darstellt, wenn die Einrichtung 103 zum Durchführen der
Berechnung ausgebildet ist, um eine arithmetische Verknüpfung durchzuführen.
-
Die
Einrichtung 107 zum Untersuchen ist beispielsweise ausgebildet,
um das erste maskierte Ergebnis, das von der Einrichtung 105 zum
Ummaskieren geliefert wird unter Berücksichtigung des ersten Maskierungsalgorithmus
zu demaskieren, um eine erste Verknüpfung des ersten und des zweiten
Parameters zu erhalten, um das zweite Maskierungsergebnis, das von
der zweiten Einrichtung 111 zum Durchführen der Berechnung geliefert
wird, unter Berücksichtigung
des zweiten Maskierungsalgorithmus zu demaskieren, um eine zweite
Verknüpfung
des ersten und des zweiten Parameters zu erhalten, und um die erste
Verknüpfung
mit der zweiten Verknüpfung
zu vergleichen, um im Falle eines Unterschieds zwischen der ersten
Verknüpfung
und der zweiten Verknüpfung
einen Angriff zu detektieren.
-
Beispielsweise
handelt es sich bei der ersten Verknüpfung und bei der zweiten Verknüpfung um gleiche
Verknüpfungen
(Berechnungsverknüpfungen),
also beispielsweise um eine Addition oder um eine „exklusiv-oder"-Verknüpfung, wobei
die jeweilige Verknüpfung
jeweils auf der Basis einer unterschiedlichen Berechnung unter Verwendung
von unterschiedlichen Verknüpfungen
und Maskierungen zustande gekommen sind. Bei der Demaskierung wird
beispielsweise eine resultierende Maske entfernt, die sich ergibt,
wenn beispielsweise zwei maskierte Parameter miteinander verknüpft werden.
Handelt es sich bei der Verknüpfung
beispielsweise um eine arithmetische Verknüpfung, so kann die gemeinsame
Maskierung durch eine Subtraktion entfernt werden, um die jeweilige
Verknüpfung
zu erhalten.
-
Bei
dem Vergleich kann die Einrichtung 107 zum Untersuchen
beispielsweise eine Subtraktion zwischen der ersten und der zweiten
Verknüpfung
bilden, um einen Unterschied zu erfassen.
-
Die
erfindungsgemäße Vorrichtung
wird bevorzugt mit Hilfe von Rechenwerken und Registern implementiert.
So kann beispielsweise die erste Einrichtung 101 zum Bereitstellen
ein erstes Register zum Bereitstellen des maskierten ersten Parameters ein
zweites Register zum Bereitstellen des maskierten zweiten Parameters
umfassen. In diesem Falle kann die Einrichtung 103 zum
Durchführen
der Berechnung ausgebildet sein, um einen ersten Registerinhalt
des ersten Registers und um einen zweiten Registerinhalt des zweiten
Registers auszulesen, und um den ersten Registerinhalt mit dem zweiten Registerinhalt
zu verknüpfen,
um das erste maskierte Ergebnis zu erhalten, und um das erste maskierte
Ergebnis in ein Zwischenregister abzulegen.
-
Die
Einrichtung 105 zum Ummaskieren ist beispielsweise ausgebildet,
um einen Inhalt des Zwischenregisters zu verarbeiten und beispielsweise
zu verändern,
so dass die Einrichtung 107 zum Untersuchen einen Inhalt
des Zwischenregisters auslesen kann, um den Angriff zu detektieren.
-
Analog
kann die zweite Einrichtung 109 zum Bereitstellen ausgebildet
sein, um den bereitgestellten maskierten ersten Parameter in ein
drittes Register abzulegen, und um den bereitgestellten maskierten
zweiten Parameter in ein viertes Register abzulegen. Die zweite
Einrichtung 111 zum Durchführen der Berechnung kann dann
beispielsweise ausgebildet sein, um einen Registerinhalt des dritten
Registers und um einen Registerinhalt des vierten Registers auszulesen,
und um das zweite maskierte Ergebnis in ein weiteres Ergebnisregister
abzulegen, so dass die Einrichtung 107 zum Untersuchen
das zweite maskierte Ergebnis aus dem weiteren Ergebnisregister
auslesen kann.
-
Wie
es bereits erwähnt
worden ist, kann die Berechnung eine Operation innerhalb einer kryptographischen
Berechnung sein. In diesem Fall kann es sich bei den Parametern,
beispielsweise bei dem ersten oder bei dem zweiten Parameter oder
bei dem ersten maskierten Ergebnis um Klartextdaten, um Verschlüsselungsdaten,
um Signaturdaten oder um Schlüsseldaten
handeln.
-
Generell
bei den von der Vorrichtung durchgeführten Berechnungsverknüpfungen
kann es sich, im Falle von Verknüpfungen
arithmetischer Art, um Additionen, Subtraktionen, Divisionen und
Multiplikationen handeln. Analog kann es sich bei den Verknüpfungen
logischer Art um eine „xor"-, „or"-, „xnor"-, „nor"- „and"- oder „nand"-Verknüpfung handeln.
-
2 zeigt
ein Blockdiagramm einer Vorrichtung zum Detektieren eines potentiellen
Angriffs gemäß einem
weiteren Ausführungsbeispiel
der Erfindung.
-
Die
Vorrichtung umfasst eine Einrichtung 201 zum Bereitstellen
von einem gemäß einem
ersten Maskierungsalgorithmus maskierten ersten Parameter b + y' und einem zweiten
Parameter a + x'.
Bei den Zahlen x' und
y' handelt es sich
um einen ersten und um einen zweiten Maskierungsparameter.
-
Die
Einrichtung 201 zum Bereitstellen umfasst zwei getrennte
Register, in denen der maskierte erste und zweite Parameter abgelegt
sind.
-
Eine
mit der Einrichtung 201 zum Bereitstellen verbundene Einrichtung 203 zum
Durchführen der
Berechnung ist ausgebildet, um den maskierten ersten und zweiten
Parameter miteinander zu verknüpfen,
beispielsweise unter Verwendung einer arithmetischen Additionsoperation,
um ein erstes maskiertes Ergebnis der Berechnung zu erhalten, wobei
das Ergebnis für
eine weitere kryptographische Berechnung bereitgestellt werden kann.
-
Die
Vorrichtung umfasst ferner eine Einrichtung 205 zum Ummaskieren,
die ausgebildet ist, um die arithmetische Maskierung durch eine
logische Maskierung zu ersetzen.
-
Die
Vorrichtung umfasst ferner eine zweite Einrichtung 207 zum
Bereitstellen eines bereitgestellten maskierten ersten Parameters
b xor y'' und eines bereitgestellten
maskierten zweiten Parameters a xor x''.
Wie es in 2 angedeutet ist, umfasst die
zweite Einrichtung 207 zum Bereitstellen zwei Register,
in die die bereitgestellten maskierten Parameter abgelegt werden
können.
-
Die
zweite Einrichtung 207 zum Bereitstellen umfasst ferner
eine Einrichtung 209 zum Ummaskieren, die ausgebildet ist,
um eine logische Maskierung durch eine arithmetische Maskierung
zu ersetzen.
-
Ein
Ausgang der Einrichtung 209 zum Ummaskieren ist mit einer
Einrichtung 211 zum Durchführen der Berechnung verbunden.
Die Einrichtung 211 zum Durchführen der Berechnung ist bevorzugt ausgebildet,
um dieselbe Verknüpfungsart
durchzuführen,
die von der Einrichtung 203 zum Durchführen der Berechnung durchgeführt wird.
-
Die
Vorrichtung umfasst ferner ein Ergebnisregister 213, das
mit einem Ausgang der Einrichtung 205 zum Ummaskieren gekoppelt
ist, wobei in dem Register 213 das ummaskierte Ergebnis
c xor z'' abgelegt ist.
-
Die
Vorrichtung umfasst ferner ein weiteres Ergebnisregister 215,
das mit einem Ausgang der Einrichtung 211 zum Durchführen der
Berechnung gekoppelt ist.
-
Die
Vorrichtung umfasst ferner eine Einrichtung 217 zum Untersuchen
des ersten ummaskierten Ergebnisses und des zweiten maskierten Ergebnisses,
das in dem weiteren Ergebnisregister abgelegt ist, um den potentiellen
Angriff zu detektieren. Wurde ein Angriff detektiert, so ist die
Einrichtung 217 zum Untersuchen ausgebildet, um ein Alarmsignal
auszugeben.
-
3 zeigt
ein weiteres Ausführungsbeispiel einer
Vorrichtung zum Detektieren eines potentiellen Angriffs. Die Vorrichtung
umfasst eine erste Einrichtung 301 zum Bereitstellen, die
mit einer Einrichtung 303 zum Durchführen der Berechnung gekoppelt
ist. Wie es in 3 gezeigt ist, ist die Einrichtung 303 zum
Durchführen
der Berechnung ausgebildet, um eine „und"-Verknüpfung („and") durchzuführen. Hierzu können die
Maskierungsparameter x'' und y'' verwendet werden.
-
Die
erste Einrichtung 303 zum Durchführen der Berechnung ist mit
einer Einrichtung 305 zum Ummaskieren gekoppelt, wobei
die Einrichtung 305 zum Ummaskieren ausgebildet ist, um
eine logische Maske durch eine arithmetische Maske zu ersetzen. Die
Einrichtung 305 zum Ummaskieren weist einen Ausgang auf,
mit dem ein Ergebnisregister 307 gekoppelt ist.
-
Die
Vorrichtung umfasst ferner eine zweite Einrichtung 309 zum
Bereitstellen, die neben den Ergebnisregistern, in denen die bereitgestellten
maskierten Paramter b + y' und
a + x' abgelegt
sind, eine Einrichtung 311 zum Ummaskieren aufweist. Die Einrichtung 311 zum
Ummaskieren ist ausgebildet, um die arithmetische Maske durch eine
logische Maske zu ersetzen, wobei weitere Maskierungsparameter verwendet
werden.
-
Die
Einrichtung 311 zum Ummaskieren ist mit einer zweiten Einrichtung 313 zum
Durchführen der
Berechnung gekoppelt. Die Einrichtung 313 zum Durchführen der
Berechnung weist einen Ausgang auf, der mit einem weiteren Ergebnisregister 309 gekoppelt
ist. Die Vorrichtung umfasst ferner eine Einrichtung 311 zum
Untersuchen, die mit den Eingängen
der Ergebnisregister gekoppelt ist.
-
Im
Folgenden wird das erfindungsgemäße Konzept
am Beispiel einer Addition von zwei Zahlen a und b, um c = a + b
zu erhalten unter Bezugnahme auf 1, erläutert.
-
Beide
Daten sind maskiert, und zwar jeweils mit einer arithmetischen Maske
x', y' und einer logischen
Maske x'', y''.
-
Das
Ergebnis wird maskiert sein mit den entsprechenden Masken z' und z''. In der Rechnung wird Redundanz vorhanden
sein, die zur Fehlererkennung herangezogen werden kann.
-
Wegen
c + x' + y' = (a + x') + (b + y') benutzt man die
arithmetisch maskierten Daten und addiert sie einfach, so dass das
Ergebnis automatisch mit z' =
x' + y' maskiert ist. Dieses
Ergebnis ist genau nach der Zeit vorhanden, die man auch für eine gewöhnliche
Addition benötigt.
Sie könnte,
wenn benötigt,
sofort weiterverarbeitet werden (z.B. Sprungadresse). Bevor das
Datum abgespeichert wird, wird es allerdings ummaskiert, so dass
es eine logische Maske erhält.
Infolgedessen wird dann das Ergebnis auf der „logischen Seite" abgelegt.
-
Andererseits
werden die logisch maskierten Daten (a xor x'')
und (b xor y') erst
ummaskiert, so dass arithmetische Daten erhalten werden (z.B. a
+ x1' und b + y1', mit neuen Masken),
erst dann werden sie addiert – wieder
mit einem normalen Addierer. In der Write-back-Stufe wird das Ergebnis
in die a rithmetische Seite zurückgeschrieben.
Die beiden Ergebnisse repräsentieren
dasselbe mathematische Datum. Man kann also nun überprüfen, ob bei der Ausführung der
Rechnung ein Fehler passiert ist.
-
Durch
dieses Vorgehen wird folgendes gewährleistet:
- – das Ergebnis
selbst ist nach minimaler Ausführungszeit
vorhanden;
- – durch
die alternierende Ausführung
der beiden Schritte „Ummaskieren" und „Addieren" ist ein Multiplexen
der HW möglich;
- – die
Fehlererkennung ist aus dem kritischen Pfad herausgenommen (es reicht
ja aus, wenn ein Fehler einige Takte später erkannt wird);
- – auch
wenn im Vergleich zu einer konventionellen Architektur die doppelte
Registeranzahl benötigt
wird (aber nur für
interne Register!) ist die HW (HW = Hardware) für den Fehlercheck weniger aufwändig, als
für z.B.
Hamming-Code-Checker;
- – die
gesamte Rechnung läuft
voll randomisiert ab!
-
Im
Unterschied hierzu wird in dem in 3 dargestellten
Ausführungsbeispiel
eine Ver-Undung zweiter Daten (a AND b) durchgeführt.
-
Gemäß einem
weiteren Aspekt liefert die folgende Erfindung ein kryptographisches
System mit einem Rechenwerk zum Durchführen einer kryptographischen
Berechnung und einem Ergebnisregister zum Bereitstellen eines Ergebnisses
der kryptographischen Berechnung, wobei die kryptographische Berechnung
eine Berechnungsverknüpfung zweier
maskierter Parameter und eine kryptographische Operation unter Verwendung
eines maskierten Ergebnisses der Berechnung umfasst, und wobei das
kryptographische System die obenstehend beschriebene Vorrich tung,
wobei die erste Einrichtung zum Durchführen der Berechnung ausgebildet
ist, um das maskierte Ergebnis durch die Berechnungsverknüpfung des
maskierten ersten Parameters mit dem maskierten zweiten Parameter
zu liefern, eine Einrichtung zum Durchführen der kryptographischen Operation
unter Verwendung des maskierten Ergebnisses, um das Ergebnis zu
erhalten, wobei das Rechenwerk ausgebildet ist, um das Ergebnis
in das Ergebnisregister abzulegen, und wobei die Vorrichtung zum
Detektieren ausgebildet ist, um einen potentiellen Angriff während der
kryptographischen Berechnung zu detektieren, und wobei das Rechenwerk ausgebildet
ist, um das Ergebnisregister im Fall eines detektierten Angriffs
so anzusteuern, dass ein Registerinhalt des Ergebnisregisters nicht
weitergegeben wird. Beispielsweise wird der Inhalt des Registers
gelöscht.
-
Abhängig von
den Gegebenheiten können die
erfindungsgemäßen Verfahren
in Hardware oder in Software implementiert werden. Die Implementation
kann auf einem digitalen Speichermedium, insbesondere einer Diskette
oder einer CD mit elektronisch auslesbaren Steuersignalen folgen,
die so mit einem programmierbaren Computersystem zusammenwirken
können,
dass das entsprechende Verfahren ausgeführt wird. Allgemein besteht
die Erfindung somit in einem Computer-Programmprodukt mit auf einem maschinenlesbaren
Träger
gespeicherten Programmcode zur Durchführung des erfindungsgemäßen Verfahrens,
wenn das Computer-Programmprodukt auf einem Rechner abläuft. Mit
anderen Worten ausgedrückt
kann die Erfindung somit als ein Computerprogramm mit einem Programmcode
zur Durchführung
des erfindungsgemäßen Verfahrens
realisiert werden, wenn das Computerprogramm auf einem Computer
abläuft.
-
- 101
- Erste
Einrichtung zum Bereitstellen
- 103
- Erste
Einrichtung zum Durchführen
der Berechnung
- 105
- Einrichtung
zum Ummaskieren
- 107
- Einrichtung
zum Untersuchen
- 109
- Zweite
Einrichtung zum Bereitstellen
- 111
- Zweite
Einrichtung zum Durchführen
der Berechnungsverknüpfung
- 201
- Erste
Einrichtung zum Bereitstellen
- 203
- Erste
Einrichtung zum Durchführen
der Berechnungsverknüpfung
- 205
- Einrichtung
zum Ummaskieren
- 207
- Zweite
Einrichtung zum Bereitstellen
- 209
- Einrichtung
zum Ummaskieren
- 211
- Zweite
Einrichtung zum Durchführen
der Berechnungsverknüpfung
- 213
- Ergebnisregister
- 215
- Weiteres
Ergebnisregister
- 217
- Einrichtung
zum Untersuchen
- 301
- Erste
Einrichtung zum Bereitstellen
- 303
- Erste
Einrichtung zum Durchführen
der Berechnungsverknüpfung
- 305
- Einrichtung
zum Ummaskieren
- 307
- Ergebnisregister
- 309
- Weiteres
Ergebnisregister
- 310
- Zweite
Einrichtung zum Bereitstellen
- 311
- Einrichtung
zum Ummaskieren
- 313
- Zweite
Einrichtung zum Durchführen
der Berechnungsverknüpfung