-
Die
vorliegende Erfindung betrifft allgemein die Ausführung von
Berechnungsfunktionen mittels einer integrierten Schaltung. Die
vorliegende Erfindung betrifft insbesondere die Steuerung der Ausführung eines
Algorithmus', insbesondere
einer Kryptographie, gegen Angriffe durch eine Einführung von
Fehlern mit dem Ziel, das Geheimnis (allgemein, einen Schlüssel) zu
entdecken, das bzw. der von diesem gehandhabt bzw. gehandelt wird.
-
Ein
Angriff durch Fehlereinführung
besteht im Einführen
eines Fehlers in das ausgeführte
Programm (beispielsweise durch Zerstören des Programmzählers) oder
in die gehandhabten Daten, um ein fehlerhaftes Ergebnis zu erlangen.
Diese Fehlereinführung
wird mehrmals wiederholt und endet damit, dass sie es dem Angreifer
ermöglicht,
die gehandhabte Geheimmenge zu entdecken. Für Kryptographiealgorithmen
(DSA, RSA, DES, AES etc.) können
die geheimen Schlüssel
beispielsweise durch Piraterie entdeckt werden, was Befehlssprünge verursacht.
-
Eine
bekannte Technik, um ein Programm gegen Fehlereinführungen
zu schützen,
besteht im Berechnen einer Signatur (Anwendung eines Chiffrieralgorithmus' auf zumindest einen
Teil des Softwarecodes) beim Installieren oder Schreiben des Programms.
Diese Signatur wird dann innerhalb oder außerhalb der integrierten Schaltung
gespeichert, die das Programm ausführt. Bei der Ausführung des
Softwarecodes berechnet das Nutzungssystem dann nochmals eine Signatur
beruhend auf dem gleichen Algorithmus, wie dem, der verwendet wurde,
um die anfängliche
Signatur zu erzeugen. Die aktuelle Signatur wird dann mit der vorbestimmten Signatur
verglichen. Eine Abweichung zwischen diesen beiden Signaturen bedeutet,
dass das gespeicherte Programm modifiziert worden ist, und ermöglicht somit
eine Identifizierung eines potenziellen Angriffs, ob beabsichtigt
oder zufällig.
Ein Beispiel eines solchen Integritätsüberwachungsverfahrens ist im
US-Patent 5442645 beschrieben.
-
Eine
solche Lösung
schützt
das Programm, aber nicht die Daten und insbesondere nicht die gehandhabten
geheimen Schlüssel.
Ferner bleiben Angriffe mittels Fehlereinführung, wie beispielsweise im
Dokument "DFA of
DES with single injection faults" von
M. Witterman, im IBM Workshop für
Sicherheit – April
2000 beschrieben, bei Algorithmen wie dem DES wirkungsvoll.
-
Um
die Daten zu schützen,
besteht eine bekannte Technik darin, eine Funktion C zum Berechnen
eines Fehlerkorrekturcodes auf Daten D anzuwenden, die verarbeitet
werden. Bevor eine gegebene Operation O des Programms gestartet
wird, wird diese Berechnungsfunktion auf die Daten angewandt, die
zu verarbeiten sind, um einen initialen bzw. anfänglichen Code C(D) zu erhalten.
Am Ende der Verarbeitung der Daten durch die Operation wird die
gleiche Funktion C auf die Ergebnisdaten O(D) angewandt, und eine
Operation O des Programms wird auf den initialen Code C(D) angewandt.
Die Daten sind während
der Verarbeitung nicht modifiziert worden, falls die beiden Ergebnisse
C(O(D)) und O(C(D)) identisch sind.
-
Ein
Nachteil dieser Technik besteht darin, dass sie nicht auf alle Operationen
anwendbar ist. Insbesondere wird es für die Operation, welche die
Daten handhabt, und für
die Codeberechnungsfunktion benötigt, dass,
für gültige Daten,
die Bedingung C(O(D)) = O(C(D)) eingehalten wird.
-
Eine
weitere bekannte Lösung,
um die Ausführung
eines Programms zu steuern, ist es, bestimmte Operationen zweimal
durchzuführen,
um eine Redundanz der Daten zu erhalten, um die Übereinstimmung zwischen den
zwei Ausführungen
zu überprüfen. Ein
Nachteil einer solchen Lösung
besteht darin, dass sie entweder eine Verdopplung der Ausführungszeit
oder eine Verdopplung der Hardwareberechnungselemente erfordert.
-
Die
vorliegende Erfindung zielt auf ein Überwinden der Nachteile von
bekannten Lösungen
eines Schutzes gegen Fehlereinführungen
in die Ausführung
von Programmen und insbesondere auf ein Erkennen von möglichen
Fehlereinführungen,
ob nun in das Programm oder in die Daten.
-
Die
vorliegende Erfindung zielt auch auf ein Bereitstellen einer Lösung, welche
mit einer Ausführung auf
einem Mikrocontroller von begrenzter Leistung nach Art einer Smart-Card
bzw. Chipkarte kompatibel ist.
-
Um
diese und andere Aufgaben zu erreichen, stellt die vorliegende Erfindung
ein Verfahren zum Schutz einer Berechnung, die sukzessiv durch mehrere
Hardware-Zellen
eines gleichen elektronischen Elements durchgeführt wird, gegenüber möglicher
Fehlereinführungen
bereit, welches aus Folgendem besteht:
Starten einer ersten
Ausführung
der Berechnung;
Starten einer zweiten Ausführung der gleichen Berechnung
sobald die erste Ausführung
eine erste Zelle freigegeben hat und in einer zweiten Zelle weitergeht;
Synchronisieren
der Ausführungen,
so dass die zweite Ausführung
eine Zelle nur nutzt, wenn die erste Ausführung zu der nächsten Zelle übergeben
hat; und
Verifizieren der Identität zwischen den zwei Ergebnissen
am Ende der Ausführung
der zwei Berechnungen.
-
Gemäß einer
Ausführungsform
der vorliegenden Erfindung ist jeder Ausführung ein temporäres Speicherelement
zum Speichern von Zwischenergebnissen zugewiesen, die durch die
Zellen geliefert werden.
-
Gemäß einer
Ausführungsform
der vorliegenden Erfindung ist jeder Hardware-Zelle zumindest ein temporäres Speicherelement
zum Speichern eines zu verarbeitenden Werts zugewiesen, wobei das
Ergebnis jeder Zelle in einem Speicherelement gespeichert wird,
das vorzugsweise das Eingangselement der nächsten Zelle bildet.
-
Gemäß einer
Ausführungsform
der vorliegenden Erfindung wird eine Fehlerverarbeitung implementiert,
falls die zwei Ergebnisse am Ende der Ausführung voneinander unterschiedlich
sind.
-
Gemäß einer
Ausführungsform
der vorliegenden Erfindung wird das Verfahren auf einen Algorithmus des
DES-Typs angewandt.
-
Die
vorliegende Erfindung stellt auch einen Mikrocontroller bereit,
der ein Mittel zum Ausführen
des Verfahrens aufweist, sowie eine Smart-Card, die einen solchen
Mikrocontroller aufweist.
-
Die
obigen und andere Aufgaben, Merkmale und Vorteile der vorliegenden
Erfindung werden in der folgenden, nicht-beschränkenden Beschreibung von spezifischen
Ausführungsformen
besprochen.
-
Aus
Gründen
der Klarheit werden nachstehend nur die Elemente und Schritte beschrieben,
die für
das Verständnis
der vorliegenden Erfindung notwendig sind. Insbesondere sind die
Operatoren oder Befehle bzw. Instruktionen, die durch die Implementierung
der vorliegenden Erfindung betroffen sind, nicht genau beschrieben
worden, die vorliegende Erfindung trifft vielmehr auf jegliche Art
von Operator oder Befehl zu. Ferner sind nicht alle Komponenten,
die zur Ausführung
eines Programms nötig
sind, sei es für
eine Softwareimplementierung oder mittels eines Automaten in verdrahteter
Logik, genau beschrieben worden, da sie herkömmliche Elemente bilden.
-
Ein
Merkmal der vorliegenden Erfindung besteht darin, die gleiche Berechnung
mit den gleichen Daten zweimal auszuführen, und zwar mittels Verwendens
einer gleichen Hardwarezelle für
die gleiche Ausführung, sobald
sie durch eine erste Ausführung
freigegeben ist. Mit anderen Worten werden die zwei Ausführungen, die
mittels der vorliegenden Erfindung bereitgestellt werden, um eine
Zelle zeitlich verschoben.
-
Die
vorliegende Erfindung zieht einen Vorteil aus der Tatsache, dass
die Algorithmen, die Daten handhaben, und insbesondere die Kryptographiealgorithmen,
sukzessiv mehrere Hardwarezellen verwenden, welche sie im Lauf der
Ausführung
des Algorithmus freigeben.
-
"Hardwarezelle" wird verwendet,
um im Sinne der vorliegenden Erfindung eine verdrahtete Operation oder
Funktion, d. h., eine, die dedizierte Komponenten verwendet, zu
bezeichnen. Dies geht auch von der Annahme aus, dass die Eingabe-Ausgabe-Werte
dieser Operation oder Funktion speicherbar sind, z. B. in einem temporären Register.
-
Gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung ist jeder der zu speichernden Ausführungen,
insbesondere Zwischenergebnissen, zumindest ein erstes temporäres Speicherelement
(z. B. ein oder mehrere Register) zugewiesen. Falls nötig, ist
jedem Ergebnis ein Speicherelement zugewiesen, um den Vergleich
zu ermöglichen.
Als eine Alternative speichert das erste Element jeder Ausführung ihr
Ergebnis. Die Anzahl von Speicherelementen ist an den Algorithmus
anzupassen und hängt
insbesondere von der möglichen
Notwendigkeit ab, ein oder mehrere vorherige Zwischenergebnisse
zu berücksichtigen.
In der Praxis verdoppelt die Implementierung der vorliegenden Erfindung
die Anzahl von Zwischenstatusspeicherelementen bezüglich einer
herkömmlichen
Ausführung
des berücksichtigten
Algorithmus'. Dementsprechend
verbraucht die Implementierung der vorliegenden Erfindung umso weniger
Ressourcen, je kleiner diese Anzahl ist (idealerweise ein einziges).
-
Indem
ein Algorithmus, der die n Operationen f1,
... , fi, ... fn (wobei
i den Rang der Operation in einer ersten Ausführung bezeichnet) mit F bezeichnet
wird, zwei Register (oder Sätze
von Registern), die den entsprechenden Zwischenergebnissen von zwei
Ausführungen
des Algorithmus zugewiesen sind, mit R1 und R2 bezeichnet werden
und die zu verarbeiteten Daten, die am Ende der Verarbeitung zu
Daten Dfin führen müssen, mit Dinit bezeichnet
werden, mag die Implementierung der vorliegenden Erfindung wie folgt
geschrieben werden.
-
Der
Einfachheit halber wird jede Operation f an eine Zeitspanne tj angepasst. Tatsächlich mögen die entsprechenden Dauern
von Operationen f voneinander unterschiedlich sein, aber dies hat
keinen Einfluss, vorausgesetzt, dass die gleiche Operation nicht
gleichzeitig auf die entsprechenden Inhalte der zwei Register R1
und R2 angewandt wird. Es wird angenommen, dass die Register R1
und R2 die Daten enthalten, die an jedem Ende einer Operation verarbeitet
werden. Die entsprechenden Inhalte der Register R1 und R2 am Ende von
Periode j werden als R1j und R2j bezeichnet.
Tatsächlich
sind die Ränge
i und j aufgrund der Ausführungsverschiebung
für die
erste Ausführung
(R1) gleich.
-
Anfänglich (vor
Periode t1) enthält zumindest Register R1 einen
Wert Dinit. Während Periode t1 wird
eine erste Operation f1 auf die Daten Dinit, die in Register R1 enthalten sind,
angewandt, und am Ende von Periode t1 enthält Register
R1 Daten R11 = f1(Dinit). Während
dieser Periode t1 wird keine Verarbeitung
auf Register R2 ange wandt, außer
möglicherweise
sein Laden mit Daten Dinit. Dementsprechend
gilt R21 = Dinit.
-
Während Periode
t2 wird eine zweite Operation f2 auf
die Daten von Register R1 angewandt, welches am Ende der Periode
Daten R12 = f2(R11) enthält.
Parallel dazu wird eine erste Operation f1 auf
die initialen Daten Dinit angewandt, die
in Register R2 enthalten sind, welches am Ende von Periode t2 dann Daten R22 = f1(Dinit) enthält.
-
Danach,
am Ende jede Zeitphase tj, enthalten Register
R1 bzw. R2 Werte R1j = fj(R1j-1) und R2j = fj-1(R2j-1).
-
Am
Ende von Periode tn ist die erste Ausführung beendet,
und Register R1 enthält
Daten R1n = fn(R1n-1). Falls die Ausführung korrekt stattgefunden
hat, gilt R1 n = Auf der Seite von Register R2 wird die vorletzte
Operation fn-1 während Periode tn angewandt,
um zu Daten R2n = fn-1(R2n-1) zu führen.
-
Die
Implementierung der vorliegenden Erfindung erfordert zumindest eine
zusätzliche
Periode t, um die zweite Ausführung
zu beenden. Am Ende dieser zusätzlichen
Periode tn+1 enthält R2 enthält Daten
R2n+1 = fn(R2n). Hier gilt wiederum, dass, falls die Ausführung korrekt
stattgefunden hat, R2n+1 = Dfin gilt.
-
Dies
reicht dann aus, um am Ende von Periode tn+1 die
entsprechenden Inhalte der Register R1 und R2 zu vergleichen. Im
Fall einer Identität
kann daraus geschlossen werden, dass das Ergebnis verlässlich ist (dass
die Ausführungen
nicht gestört
worden sind). Im gegenteiligen Fall bedeutet dies, dass ein Angriff
(oder ein zufälliger
Fehler) aufgetreten ist.
-
Ein
Beispiel einer Implementierung der vorliegenden Erfindung wird nachfolgend
unter Bezug auf ein spezifisches Anwendungsbeispiel des DES-Algorithmus' beschrieben. Jedoch
trifft die vorliegende Erfindung insbesondere auf jeglichen Algorithmus
zu, der sukzessiv mehrere Hardwarezellen verwendet. Beispielsweise trifft
die vorliegende Erfindung auch auf den AES-Algorithmus zu.
-
Ein
Algorithmus des DES-Typs zerfällt
in Chiffrierrunden (ROUND), in welchen Daten und Schlüssel gehandhabt
werden. Dieser Algorithmus ist beispielsweise im Dokument "Federal Information
Processing Standards Publication" 46-2,
30. Dezember 1993, beschrieben.
-
Jede
Runde kann wie folgt aufgebrochen werden, wobei i den Rang der Runde
bezeichnet, K den Schlüssel,
R den rechten Teil des zu verarbeitenden Datenworts, L den linken
Teil des zu verarbeitenden Datenworts und T die Variable, die verarbeitet
wird.
- T
- = E(R), wobei E die
Erweiterung von Daten R über
alle Bits des Worts bezeichnet;
- T
- = T xor K(i), wobei
xor die XOR-Funktion und K(i) den Schlüssel von Runde i bezeichnet;
- T
- = Sbox(T), wobei Sbox
eine Substitutionstabelle bezeichnet;
- T
- = P(T), wobei P eine
Permutation bezeichnet;
- T
- = T xor L;
- L
- = R; und
- R
- = T.
-
Hinsichtlich
der Zeit kann die Ausführung
einer Runde von Rang i wie nachstehend in Tabelle 1 dargestellt
werden, wobei t den Taktzyklus bezeichnet.
Tabelle
1 | |
t | Operation | Inhalt
der Register | | |
| | temporäres Register | R | L |
0 | | Ri-1 | Ri-1 | Li-1 |
1 | T
= E(Ri-1) | E(Ri-1) | | |
2 | T
= T xor K(i) | E(Ri-1)xor K(i) | | |
3 | T
= Sbox(T) | Sbox(E(Ri-1)xor K(i)) | | |
4 | T
= P(T) | P(Sbox(E(Ri-1)xor K(i))) | | |
5 | T
= T xor L | P(Sbox(E(Ri-1)xor K(i)))xor L | | |
6 | L
= R | | | R1 |
7 | R
= T | | P(Sbox(E(Ri-1)xor K(i)))xor L | |
-
Tabelle
2 zeigt nachstehend die Implementierung der vorliegenden Erfindung
einer Chiffrierrunde des DES-Algorithmus'. Es sind die gleichen Notationen wie
zuvor verwendet wurden, und zwar dadurch, dass sie mit einer 1 für die erste
Ausführung
und mit einer 2 für
die zweite Ausführung
bezeichnet wurden.
-
Im
Vergleich zu der herkömmlichen
Ausführung
wird die Identität
der Inhalte der Register T1 und T2 vor einem Aktualisieren von Registern
R und L getestet. Wie zu sehen ist, sind zwei zusätzliche
Zyklen nötig (einer
zum Testen und einer, um die Verschiebung zu unterstützen). In
Tabelle 2 wird angenommen, dass das Testen von Zyklus 7 die Ausführung validiert.
Im gegenteiligen Fall werden die Zyklen 8 und 9 nicht ausgeführt.
-
Als
eine Alternative wird das Testen nicht am Ende jeder Runde i ausgeführt, sondern
am Ende der Ausführung
aller Runden. In diesem Fall ist die Anzahl von zusätzlichen
Zyklen auf n + 1 begrenzt (wobei n die Anzahl der Runden ist) anstatt
auf 2n.
-
Es
sollte beachtet werden, dass die Implementierung der vorliegenden
Erfindung mit einem Algorithmus kompatibel ist, der die gleiche
Zelle mehr als einmal verwendet. Falls diese Verwendung zeitlich
genügend voneinander
beabstandet ist, erfordert dies keine besondere Vorkehrung. Falls
jedoch die Verwendung nahe beieinander liegt, z. B., falls eine
gleiche Zelle zweimal hintereinander verwendet wird, werden die
zwei Verwendungen dann als eine einzige angesehen und es wird darauf
gewartet, dass diese Zelle freigegeben wird. Als eine Alternative
wird diese Zelle ein erstes Mal für die erste Ausführung verwendet.
Dann wird darauf gewartet, dass sie durch die zweite Ausführung verwendet
worden ist, bevor sie wieder für
die erste verwendet wird. Jede Ausführung wird dann kurzfristig
warten gelassen, während
die Zelle für
die andere verwendet wird. Die Auswahl des Implementierungsmodus
hängt von
der Ausführungsdauer
der Zelle bezüglich
der vorherigen oder der nächsten
Zellen ab. Insbesondere verlängert
ein zweimaliges Verwenden hintereinander für eine gleiche Ausführung das
Verfahren nicht, falls der vorherige Schritt allein zweimal so lang
ist (die Daten der zweiten Ausführung
würden
dann vor dem Ende der zwei Verwendungen sowieso nicht für die erste
Verwendung bereit stehen).
-
Nach
einer Erfassung von zwei unterschiedlichen Ergebnissen kann jegliche
herkömmliche
Maßnahme
ergriffen werden. Beispielsweise wird das endgültige Ergebnis nicht für den Rest
der Anwendung berücksichtigt.
Gemäß einem
weiteren Beispiel wird das elektronische Element, beispielsweise
die Smart-Card, blockiert.
-
Ein
Vorteil der vorliegenden Erfindung liegt darin, dass ihre Implementierung
bezüglich
einer ungeschützten
Ausführung
nur wenig zusätzliche
(Zeit- oder Hardware-)Ressourcen benötigt. In der Tat ist das Verlängern der
Gesamtdauer, verbunden mit der Implementierung der vorliegenden
Erfindung bezüglich
zweier paralleler Ausführungen,
auf die Ausführungszeit
einer einzigen Zelle beschränkt
(die, welche die meiste Zeit beansprucht). Ferner sind die zusätzlichen
Hardwareelemente bezüglich
zweier aufeinanderfolgender Ausführungen
höchstens
ein Element zum Speichern der Zwischenergebnisse der zweiten Ausführung (wobei
die Speicherung der Ergebnisse der zwei Ausführungen zum Vergleich schon
für zwei
aufeinanderfolgende Ausführungen
vorhanden ist).
-
Natürlich ist
es wahrscheinlich, dass die vorliegende Erfindung verschiedene Änderungen,
Modifizierungen und Verbesserungen aufweist, welche dem Fachmann
leicht ersichtlich sein werden. Insbesondere liegt das Aufteilen
des Algorithmus (die Auswahl der Hardwarezellen) gemäß der Anwendung
und auf Grundlage der oben angegebenen funktionalen Angaben in den
Fähigkeiten
des Fachmanns. Ferner liegt die praktische Implementierung der vorliegenden
Erfindung durch Softwaremittel, um das Verifikationsverfahren auszuführen, und
insbesondere, um die Register und die Operationsabfolge zu verwalten,
in den Fähigkeiten
des Fachmanns und ruft gewöhnliche
Programmierhandlungen hervor.