-
Die
vorliegende Erfindung bezieht sich auf eine Datenverarbeitungseinrichtung
mit einem Cachespeicher und insbesondere auf die Manipulation der
in dem Cachespeicher gespeicherten Informationen.
-
Ein
Cachespeicher ist eine kleine, sehr schnelle Speichereinheit, die
zwischen einem Prozessor und einem Hauptspeicher angeordnet ist.
Der Cachespeicher wird mit einer Taktfrequenz betrieben, die nahe
an der Taktfrequenz liegt, mit der der Prozessor arbeitet, beziehungsweise
dieser sogar entspricht. Dadurch erfordern Zugriffe des Prozessors
auf den Cachespeicher erheblich weniger Zeit als Zugriffe auf den
Hauptspeicher. Zudem reduziert ein Cachespeicher die Stromaufnahme
einer Datenverarbeitungsvorrichtung. Dies trifft insbesonders bei speicherbedingten
Corner-Cases zu. Das Hinzufügen
eines Cachespeichers in eine Prozessorarchitektur erfordert relativ
wenig Änderungen
an der gegebenen Prozessorarchitektur und bietet damit eine kostengünstige Möglichkeit,
die Systemperformance einer Datenverarbeitungsvorrichtung zu erhöhen und zugleich
die Stromaufnahme zu reduzieren. Die meisten dem Stand der Technik
entsprechenden Prozessorarchitekturen bieten die Möglichkeit
einen Cachespeicher zu integrieren. Selbst integrierte Schaltungen
und speziell Chipkarten-Controller
sind bereits mit einem Cachespeicher ausgestattet.
-
Chipkarten
haben ein breites, sich ständig erweiterndes
Einsatzspektrum. Sie enthalten häufig vertrauliche
Informationen. Beispiele dafür
sind Geld- und Kreditkarten, Versicherungskarten oder Zugangskontrollkarten.
Der Einsatzbereich und die Akzeptanz solcher Chipkarten hängt wesentlich
von ihren Sicherheitsmerkmalen ab. Die auf den Chipkarten enthaltenen
vertraulichen Daten müssen
vor dem Auslesen durch Unbefugte geschützt sein und es muß gewährleistet
sein, dass sich keine funktionsfähigen
Kopien einer Chipkarte anfertigen lassen.
-
Ein
bekanntes Angriffsszenario auf integrierte Schaltungen und speziell
Chipkarten-Controller ist die Stromanalyse. Hierbei macht sich ein
Angreifer zu nutze, daß jeder
von einem Chipkarten-Controller ausgeführte Arbeitsschritt ein charakteristisches Stromaufnahmeprofil
hinterläßt. Dieses
Stromprofil wird von dem Angreifer aufgezeichnet. Kennt der Angreifer
die Architektur des Chipkarten-Controllers, so ermöglicht das
Stromprofil Rückschlüsse auf
die durchgeführten
Arbeitsschritte des Chipkarten-Controllers. Bekannte Formen der
Stromanalyse sind die Differential-Power-Analysis (DPA) oder die
Simple-Power-Analysis (SPA).
-
Eine
spezielle Form der Stromanalyse wird in der Veröffentlichung von D. Page „Theoretical
Use of Cache Memory as a Cryptoanalytic Side-Channel" behandelt. Es wird
ein System zur Datenverschlüsselung,
beispielsweise ein Chipkarten-Controller,
basierend auf einem Prozessor, der auf einen Cachespeicher und einen
Hauptspeicher zugreift, zugrunde gelegt. Die zu verschlüsselnden
Daten werden in diesem System mittels kryptographischer Schlüssel verschlüsselt. Diese
sind in dem Hauptspeicher hinterlegt. Während des Verschlüsselungsvorganges
lädt der
Prozessor Teile des kryptographischen Schlüssels aus dem Hauptspeicher
in den Cachespeicher. Gelingt es einem Angreifer, Rückschlüsse auf
diese in den Cachespeicher geladenen Informationen zu ziehen, so
ist es ihm möglich,
Teile des verwendeten Schlüssels
oder den gesamten Schlüssel
zu rekonstruieren und somit den verwendeten Verschlüsselungsalgorithmus
zu schwächen
oder vollständig
unwirksam zu machen. Ein solches Verfahren wird in der genannten
Veröffentlichung
beschrieben. Das Verfahren basiert auf einer Stromanalyse des Cachespeichers.
Es wird angenommen, daß der
Angreifer den verwendeten Verschlüsselungsalgorithmus sowie die
Architektur des Verschlüsselungssystems kennt
und somit einen Zugriff des Verschlüsselungssystems auf den Cachespeicher
einem Ablaufschritt des Verschlüsselungsalgorithmus
zuordnen kann. Der Angreifer regt das Verschlüsselungssystem mit definierten
zu verschlüsselnden
Daten an und zeichnet das Stromprofil des Cachespeichers auf. Aufgrund
seiner Kenntnisse kann der Angreifer nun mit Hilfe des Stromprofils
den verwendeten kryptographischen Schlüssel rekonstruieren.
-
Die
besondere Anfälligkeit
des Cachespeicher auf eine Stromanalyse wird anhand von 6 veranschaulicht. 6 zeigt einen Zugriff des
Prozessors auf den Cachespeicher in einem dem Stand der Technik
entsprechenden Datenverarbeitungssystem, das einen Prozessor, einen
Cachespeicher und einen Hauptspeicher aufweist. Ausgehend von einem
Prozessorzugriff 600 auf den Cachespeicher wird überprüft, ob die
angeforderten Daten im Cachespeicher enthalten sind 602.
Sind die Daten im Cachespeicher enthalten, so werden die angeforderten Daten
direkt aus dem Cachespeicher zum Prozessor weitergereicht 606.
Es findet kein Zugriff zu dem Hauptspeicher statt. Dieser Vorgang
wird Cache-Hit genannt.
-
Wenn
sich die angeforderten Daten jedoch nicht im Cachespeicher befinden,
so spricht man von einem Cache-Miss. In diesem Fall müssen die
Daten aus dem Hauptspeicher geholt werden und in den Cachespeicher
geschrieben werden 610. Sobald sich die Daten aus dem Hauptspeicher
im Cachespeicher befinden, werden sie an den Prozessor weitergereicht 612.
Im Gegensatz zum Cache-Hit wird beim Cache-Miss Verkehr auf einem
Speicherbus zum Hauptspeicher erzeugt. Da die vom Prozessor angeforderten
Daten erst zum Prozessor geliefert werden können, wenn sie aus dem Hauptspeicher
in den Cachespeicher geholt worden sind, dauert ein Zugriff, der
einen Cache-Miss zur Folge hat, zudem erheblich länger als
ein Zugriff, der den Cache-Hit erzeugt.
-
Das
charakteristische Stromprofil eines Zugriffs des Prozessor auf den
Speicher wird hauptsächlich
von zwei Komponenten geprägt.
Zum einen von den CMOS-Schaltungen, die nur beim Umschalten Strom
verbrauchen, und zum anderen von den, durch meist lange Leitungen
des Speicherbus hervorgerufenen Kapazitäten, die bei einer Aktivierung des
Speicherbus umgeladen werden müssen.
Dies führt
dazu, daß sich
das Stromprofil eines Cache-Hit deutlich von dem eines Cache-Miss
unterscheidet, und zwar sowohl im zeitlichem Ablauf als auch betragsmäßig.
-
Es
gibt bereits unterschiedliche Ansätze, Angriffe auf integrierte
Schaltungen und speziell Chipkarten-Controller zu verhindern, die
auf Stromanalysen beruhen. Ein bekanntes Mittel ist die Stromverschleierung.
Dabei wird der tatsächliche
Stromverbrauch mit einem Stromrauschen überlagert. Dabei wird der zeitliche
Ablauf von Zugriffen auf den Cachespeicher jedoch nicht verändert. Aufgrund
des sich stark unterscheidenden Stromprofils eines Cache-Hits und
eines Cache-Misses reicht diese Methode deshalb nicht aus, um einen
Cachespeicher vor einem Angriff durch eine Stromanalyse zu schützen. Der
zeitliche Ablauf von Zugriffen kann durch das zufällige Einfügen von
Wait-States verändert werden.
Diese Methode bietet jedoch keinen wirksamen Schutz, da hierdurch
die Reihenfolge von Cache-Hits und Cache-Misses nicht verändert wird.
Außerdem
wird durch das Einfügen
von Wait-States die Systemperformance reduziert.
-
In
der oben genannten Veröffentlichung
wird eine Methode vorgestellt, um die Reihenfolge von Cache-Hits
und Cache-Misses
während
der Ausführung
eines Verschlüsselungsalgorithmus
zu verändern.
Diese Methode setzt jedoch eine Änderung
des Sourcecodes des Algorithmus voraus und basiert darauf, daß vor der
eigentlichen Ausführung
des Algorithmus bereits Teile der von dem Algorithmus benötigten Verschlüsselungsdaten
in den Cachespeicher geladen werden. Der Cachespeicher wird sozusagen
vorgewärmt.
Diese in Software realisierte Methode stellt jedoch keinen sicheren
Schutz dar, da nicht sichergestellt ist, daß der Cachespeicher mit den
richtigen Daten vorgeladen wird. Es wäre möglich, daß die vorgeladenen Daten erst
in späteren
Arbeitsschritten benötigt
werden und bis dahin bereits wieder aus dem Cachespeicher verdrängt sind.
-
Es
ist die Aufgabe der vorliegenden Erfindung, eine Cachemanipulationsvorrichtung
zu schaffen, die einen sicheren Be- trieb einer Datenverarbeitungsvorrichtung,
die einen Cachespeicher enthält, ermöglicht.
-
Diese
Aufgabe wird durch eine Cachemanipulationsvorrichtung gemäß Anspruch
1 gelöst.
-
Die
vorliegende Erfindung schafft eine Vorrichtung zum Manipulieren
eines Cachespeichers mit einer Mehrzahl von Cachezeilen in denen
Cacheinformationen speicherbar sind, in einer Datenverarbeitungsvorrichtung
mit einem Hauptspeicher, mit folgenden Merkmalen:
einer Einrichtung
zum Bereitstellen eines Manipulationsauslösesignals zu aufeinanderfolgenden
Zeitpunkten mit einer zufällig
oder deterministisch bestimmten Periodizität; und
einer Einrichtung
zum Ungültigmachen
einer Cachezeile oder zum Überschreiben
einer Cachezeile mit Hauptspeicherinformationen aus dem Hauptspeicher,
ansprechend auf ein Erhalten des Manipulationsauslösesignals.
-
Der
Erfindung liegt die Erkenntnis zugrunde, daß sich in einen Cachespeicher
geladene sensitive Daten durch gezielte zufallsgesteuerte oder deterministisch
gesteuerte periodische Modifikationen der Cacheinformationen vor
Angriffen schützen
lassen, die auf der Auswertung eines Stromprofils des Cachespeichers
beruhen. Die Wiedererkennbarkeit von wiederkehrenden Programmabläufen, aufgrund
ihres charakteristischen Stromprofils (Mittelung von Stromkurven),
wird verhindert bzw. erschwert, da die Stromprofile wiederkehrender
Programm abläufe
aufgrund der Modifikationen unterschiedlicher Cache-Hit Raten und zeitlicher
Versätze
aufweisen, und sich damit unterscheiden.
-
Entsprechend
der vorliegenden Erfindung werden die in einem Cachespeicher gespeicherten Cacheinformationen
fortlaufend durch gezielte zufallsgesteuerte oder deterministisch
gesteuerte Modifikationen verändert.
Eine Modifikationsmöglichkeit ist
das zufällige
Löschen
von Cachespeicherinformationen. Eine weitere ist das Lesen von Hauptspeicherinformationen
und Speichern der gelesenen Informationen in den Cachespeicher.
Durch die Modifikation der Cachespeicherinformationen werden zusätzliche
Speicherzugriffe erzeugt und die im Cachespeicher gespeicherten
Cacheinformationen ständig
verändert.
Einem Angreifer ist es damit nicht möglich, einen Zugriff des Prozessors
auf den Cachespeicher einem Ablaufschritt eines von dem Prozessor
ausgeführten
Programms zuzuordnen. Bei einem erkannten Cache-Hit ist es einem
Angreifer außerdem
nicht möglich
zu entscheiden, ob die bereits im Cachespeicher enthaltenen Informationen
durch den Programmablauf des Verschlüsselungsalgorithmus oder durch
einen Modifikationszugriff in den Cachespeicher geladen wurden.
Ebenso ist ein Cache-Miss kein Indiz dafür, dass die angeforderten Information noch
nicht in den Cachespeicher geladen wurden beziehungsweise bereits
wieder verdrängt
wurden. Der Cache-Miss kann auch durch einen Manipulationsvorgang
provoziert worden sein.
-
Zum Überschreiben
der Informationen im Cachespeicher werden bevorzugt Informationen
aus dem Hauptspeicher ausgewählt,
die in Zukunft benötigt
werden. Der Vorteil liegt darin, dass in der Folge vermehrt Cache-Hits
auftreten. Dies bewirkt eine Änderung
des Stromprofils und bringt zusätzlich
einen Performance-Gewinn.
-
Ein
weiterer Vorteil der vorliegenden Erfindung besteht darin, daß eine auf
der Datenverarbeitungsvorrichtung ablau fende Software nicht mehr umgeschrieben
werden muß,
um zu einer gegen Angriffe sicheren Software zu werden. Solche Maßnahmen
entfallen dadurch, dass die Hardware eine zeitliche Verzerrung des
Ablaufes der Algorithmen und damit er Stromprofile bewirkt.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 eine Vorrichtung zum Manipulieren
eines Cachespeichers;
-
2 ein Blockschaltbild einer
Einrichtung zum Bereitstellen eines Manipulationsauslösesignals gemäß einem
bevorzugten Ausführungsbeispiel;
-
3 ein Blockschaltbild einer
Einrichtung zum Bereitstellen eines Manipulationsauslösesignals gemäß einem
weiteren bevorzugten Ausführungsbeispiel;
-
4 ein Blockdiagramm einer Überwachungseinrichtung
gemäß einem
bevorzugten Ausführungsbeispiel;
-
5 ein Ablaufdiagramm eines
bevorzugten Ausführungsbeispiels
einer Vorrichtung zum Manipulieren eines Cachespeichers; und
-
6 ein Ablaufdiagramm eines
Prozessorzugriffs auf den Cachespeicher gemäß dem Stand der Technik.
-
1 zeigt eine Vorrichtung
zum Manipulieren 100 eines Cachespeichers 154 in
einer Datenverarbeitungsvorrichtung 150. Die Datenverarbeitungsvorrichtung 150 weist
einen Prozessor 152, den Cachespeicher 154 und
einen Hauptspeicher 158 auf. Der Cachespeicher 154 ist
mit dem Prozessor 152 über
einen Prozessorbus 160 und mit dem Hauptspeicher 158 über einen
Speicherbus 162 gekoppelt. Der Cachespeicher weist eine
Mehrzahl von Cachezeilen 156 auf, in denen Cacheinformationen speicherbar
sind. Zugriffe des Prozessors 152 auf den Hauptspeicher 158 führen über den
Cachespeicher 154. Sind die von dem Prozessor 152 angeforderten
Informationen in den Cachezeilen 156 des Cachespeichers 154 enthalten,
so werden diese Informationen an den Prozessor 152 weitergeleitet.
Sind die von dem Prozessor 152 angeforderten Informationen
nicht in dem Cachespeicher 154 enthalten, so werden diese
Informationen aus dem Hauptspeicher 158 angefordert, in
eine der Cachespeicherzeilen 156 geschrieben und anschließend an
den Prozessor 152 weitergeleitet. Diese Betriebsweise einer
Datenverarbeitungsvorrichtung mit einem Cachespeicher entspricht
dem Stand der Technik und wurde in 6 veranschaulicht.
Die erfindungsgemäße Einrichtung
kann aber auch in komplexeren Speicherarchitekturen, als der in 6 beschriebenen eingesetzt
werden. So kann eine Speicherarchitektur mehrere Cachespeicher und
Hauptspeicher aufweisen und der Prozessor kann mittels unterschiedlichen
Zugriffsarten (beispielsweise Uncached, Write-Through, Write-Back)
auf die Speicher zugreifen.
-
Die
Vorrichtung zum Manipulieren 100 des Cachespeichers 154 weist
eine Einrichtung zum Bereitstellen 102 eines Manipulationsauslösesignals 106 und
eine Einrichtung zum Ungültigmachen
oder zum Überschreiben 108 einer
Cachezeile 156 auf. Die Einrichtung zum Ungültigmachen
oder zum Überschreiben 108 ist
mit dem Cachespeicher 154 und der Einrichtung zum Bereitstellen 102 gekoppelt. Die
Einrichtung zum Bereitstellen eines Manipulationsauslösesignals 102 weist
einen Periodizitätssteuersignaleingang 104 auf, über den
eine Periodizität eingestellt
wird. Die Periodizität
definiert den zeitlichen Abstand zwischen zwei aufeinanderfolgenden Manipulationsvorgängen. Die
Periodizität
kann sich nach jedem durchgeführten
Manipulationsvorgang ändern.
Die Einrichtung zum Bereitstellen eines Manipulationsauslösesignals 102 stellt
ansprechend auf diese Periodizität
zu aufeinander folgenden Zeitpunkten das Manipulationsauslösesignal 106 bereit. Die
Einrichtung zum Ungültigmachen
oder zum Überschreiben
einer Cachezeile 108 spricht auf das Manipulationsauslösesignal 106 an
und veranlaßt
als Folge dessen eine Manipulation der in dem Cachespeicher 154 enthaltenen
Cacheinformationen. Die Art und Weise der Durchführung der Manipulation hängt von
der Art der Speicheransteuerung in der Datenverarbeitungsvorrichtung
ab. Wenn es der Cachespeicher zulässt, so kann er direkt mit
einem Manipulationsauslösesignal 109 angesprochen
werden. Typischerweise wird jedoch eine in der Datenverarbeitungsvorrichtung
verwendete Vorrichtung zur Speicheransteuerung (Memory Management
Unit) über
ein Manipulationssignal angesprochen und führt als Folge dessen die Manipulation
des Cachespeichers durch.
-
2 zeigt ein Blockdiagramm
einer Einrichtung zum Bereitstellen 202 eines Manipulationsauslösesignals,
wie sie in der in 1 beschriebenen Vorrichtung
eingesetzt werden kann. Die Einrichtung zum Bereitstellen 202 weist
eine Zyklenzähleinrichtung 210 auf,
die ansprechend auf ein Periodizitätssteuersignal 214 und
ein Taktsignal 216 ein Manipulationsauslösesignal 206 bereitstellt.
Das Taktsignal 216 entspricht bevorzugterweise dem Takt
eines zu manipulierender Cachespeichers. Die Zyklenzähleinrichtung 210 weist
einen Zähler
auf, der die Zyklen des Taktsignals 216 zählt. Nach
einer durch das Periodizitätssteuersignal 214 definierten
Anzahl von Taktzyklen wird der Zähler
auf Null zurückgesetzt
und das Manipulationsauslösesignal 206 bereitgestellt, auf
das die Einrichtung zum Ungültigmachen
oder zum Überschreiben
einer Cachezeile anspricht. Das Periodizitätssteuersignal 214 wird
von einer Periodizitätssteuereinrichtung 212 bereitgestellt.
Die Periodizitätssteuereinrichtung 212 kann
eine einfache Einrichtung sein, die einen Wert für das Priodizitätssteuersignal 214 zuläßt, der
fest eingestellt ist oder vom Anwender eingestellt wird, oder alternativ
eine komplexe Logik enthalten, die das Priodizitätssteuersignal 214 abhängig von
defi nierten Zuständen
der Datenverarbeitungsvorrichtung einstellt.
-
3 zeigt ein weiteres bevorzugtes
Ausführungsbeispiel
einer Einrichtung 302 zum Bereitstellen eines Manipulationsauslösesignals.
Die Einrichtung 302 weist eine Komparatoreinrichtung 310 auf,
die ansprechend auf ein Periodizitätssteuersignal 314 und
ein Referenzsignal 316 ein Manipulationsauslösesignal 306 bereitstellt.
Das Manipulationsauslösesignal 306 ist
wiederum mit einer Einrichtung zum Ungültigmachen oder zum Überschreiben einer
Cachezeile gekoppelt, die in 3 nicht
gezeigt ist. Das Periodizitätssteuersignal 314 wird
in diesem Ausführungsbeispiel
von einer Zufallszahlengeneratoreinrichtung 312 bereitgestellt.
Die Zufallszahlengeneratoreinrichtung 312 stellt Zufallswerte
in einem festgelegten Bereich bereit. Die Komparatoreinrichtung 310 vergleicht
einen von dem Periodizitätssteuersignal 314 übertragenen
Zufallswerte der Zufallszahlengeneratoreinrichtung 312 mit
dem durch das Referenzsignal 316 vorgegebenen Wert, der
ebenfalls in dem vorher festgelegten Bereich liegt. Der von dem
Referenzsignal 316 bereitgestellte Wert kann wiederum fest
eingestellt sein oder von einem Anwender vorgegeben werden. Bei Übereinstimmung
beider stellt die Komparatoreinrichtung 310 das Manipulationsauslösesignal 306 bereit.
-
4 zeigt eine Vorrichtung 400 zum
Manipulieren eines Cachespeichers, eine Datenverarbeitungsvorrichtung 150 und
eine Einrichtung zum Entscheiden 420, entsprechend einem
bevorzugten Ausführungsbeispiels.
Die Vorrichtung 400 zum Manipulieren sowie die Datenverarbeitungsvorrichtung 450 sind
bereits aus 1 bekannt.
Die Vorrichtung zum Manipulieren 400 weist eine Einrichtung
zum Bereitstellen eines Manipulationsauslösesignals 402 und
eine Einrichtung 408 zum Ungültigmachen einer Cachezeile
oder zum Überschreiben
einer Cachezeile auf. Die Einrichtung 402 zum Bereitstellen
eines Manipulationsauslösesignals
weist wiederum einen Periodizitätssteuersignaleingang 404 auf,
ansprechend auf den die Einrichtung 402 ein Manipulationsauslösesignal 406 bereitstellt,
das die Einrichtung 408 zum Ungültigmachen oder zum Überschreiben einer
Cachezeile veranlaßt,
die in dem Cachespeicher 454 der Datenverarbeitungsvorrichtung 450 enthaltenen
Daten zu manipulieren. Der Cachespeicher 454 ist wiederum
zwischen einem Prozessor 452 und einem Hauptspeicher 458 angeordnet
und mit dem Prozessor 452 über einen Prozessorbus 460 und
mit dem Hauptspeicher 458 über einen Speicherbus 462 verbunden.
-
Das
in 4 gezeigte Ausführungsbeispiel weist
zusätzlich
zu dem in 1 gezeigten
Ausführungsbeispiel
die Einrichtung zum Überwachen
von Zugriffen auf den Cachespeicher 420 auf. Die Einrichtung 420 zum Überwachen
ist mit der Vorrichtung zum Manipulieren 400 und der Datenverarbeitungsvorrichtung 450 gekoppelt.
Die Einrichtung 420 zum Überwachen weist eine Detektoreinrichtung 424 und eine
Deaktivierungseinrichtung 422 auf. Die Detektoreinrichtung 424 ist
mit dem Prozessorbus gekoppelt und erkennt, wann der Prozessor 452 einen
Zugriff auf den Cachespeicher 454 startet und wann dieser
Zugriff abgeschlossen ist. Die Kopplung der Detektoreinrichtung 424 an
den Prozessorbus 460 kann durch ein Cachebussignal 426 erfolgen,
das während eines über den
Prozessorbus 460 stattfindenden Zugriffs des Prozessors
auf dem Cachespeicher aktiv ist. Ansprechend auf das Cachebussignal 426 stellt die
Detektoreinrichtung 424 ein Detektorsignal 428 bereit,
das mit der Deaktivierungseinrichtung 422 verbunden ist.
-
Die
Deaktivierungseinrichtung 422 ist ausgebildet, um die Vorrichtung
zum Manipulieren 400 während
eines Zugriffs des Prozessors 452 auf den Cachespeicher 454 zu
deaktivieren. Würde
die Vorrichtung zum Manipulieren eines Cachespeichers 400 während eines
Zugriffs des Prozessors 452 auf den Cachespeicher 454 in
dem Cachespeicher 454 enthaltene Cacheinformationen manipulieren,
so könnte
es zu einem Informationsverlust bzw. zu einer Informationsverfälschung
kommen. Eine solche Kollision von Zugriffen auf den Cachespeicher
wird durch die Einrichtung zum Überwachen 420 verhindert,
indem die Vorrichtung zum Manipulieren 400 solange deaktiviert
wird, bis ein Zugriff durch den Prozessor 452 auf den Cachespeicher 454 abgeschlossen
ist. Zum Deaktivieren der Vorrichtung zum Manipulieren 400 stellt
die Deaktivierungseinrichtung 422 ein Deaktivierungssignal 430 bereit,
das mit der Einrichtung 402 zum Bereitstellen eines Manipulationsauslösesignals
oder der Einrichtung 408 zum Ungültigmachen einer Cachezeile
oder zum Überschreiben
einer Cachezeile. Die Einrichtung zum Bereitstellen 402 eines
Manipulationsauslösesignal
ist ausgebildet, um ansprechend auf das Deaktivierungssignal 430 die
Bereitstellung des Manipulationsauslösesignal 406 zu sperren.
Ebenso ist die Einrichtung 408 zum Ungültigmachen einer Cachezeile
oder zum Überschreiben
einer Cachezeile ausgebildet, um ansprechend auf das Deaktivierungssignal 430 die
Bereitstellung des Manipulationssignal 409 zu sperren.
-
Gemäß einem
weiteren bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung weist die Vorrichtung zum Manipulieren
ferner eine Einrichtung zum Auswählen
einer Cachezeile, die ungültig
gemacht oder überschrieben
wird auf. Außerdem
eine Einrichtung zum Auswählen
von Informationen aus dem Hauptspeicher, mit denen die ausgewählte Cachezeile,
im Falle des Manipulierens durch Überschreiben, überschrieben
wird. 5 veranschaulicht
dieses Ausführungsbeispiel
anhand eines Ablaufdiagramms. Ansprechend auf ein Manipulationssignal 500 (die
Bereitstellung eines Manipulationssignals wurde in den 2, 3 und 4 beschrieben)
wird eine Cachezeile, die ungültig
gemacht bzw. überschrieben
wird, ausgewählt 510.
Das Auswählen
einer Cachezeile 510 wird in der Einrichtung zum Auswählen einer
Cachezeile, die ungültig
gemacht oder überschrieben
wird, durchgeführt.
Der Auswahl einer Cachezeile 510 kann dabei eine deterministische oder
eine zufällige
Entscheidung zugrunde liegen. Die zufällige Entscheidung wird durch
ein empfangenes echtes oder ein Pseudozufallssignal herbeigeführt. Nach
dem Auswählen
einer Cachezeile 510 wird entschieden, ob die ausgewählte Cachezeile
ungültig
gemacht oder ob sie überschrieben
wird 520. Die Entscheidung 520 wird in einer Einrichtung
zum Entscheiden, ob eine Cachezeile ungültig gemacht oder überschrieben
wird, durchgeführt
und basiert wiederum entweder auf einer deterministischen oder auf
einer zufallsgesteuerten Entscheidung.
-
Im
Falle einer Entscheidung zugunsten des Ungültigmachens wird die ausgewählte Cachezeile ungültig gemacht 530.
Der Manipulationsvorgang ist damit beendet und die Vorrichtung zum
Manipulieren eines Cachespeichers nimmt einen Ruhezustand ein, solange
bis ein neues gültiges
Manipulationssignal bereitgestellt wird.
-
Im
Falle einer Entscheidung zugunsten des Manipulierens durch Überschreiben
müssen
Hauptspeicherinformationen ausgewählt werden, mit denen die in
der ausgewählten
Cachezeile enthaltenen Cacheinformationen überschrieben werden. Nach dem
Auswählen
der Hauptspeicherinformationen 540 wird die ausgewählte Cachezeile
mit den ausgewählten
Hauptspeicherinformationen überschrieben 550.
Damit ist auch im Fall des Überschreibens
der Manipulationsvorgang abgeschlossen und die Manipulationsvorrichtung
befindet sich wieder im Ruhestand, bis ein weiteres gültiges Manipulationssignal bereitgestellt
wird.
-
Bevorzugterweise
werden zum Überschreiben
Hauptspeicherinformationen ausgewählt, die in Kürze ohnehin
von dem Prozessor benötigt
werden. Die Identifikation solcher Hauptspeicherinformationen kann
auf Heuristiken beruhen, da Codeinformationen und Dateninformationen
typischerweise in eng zusammenhängenden
Bereichen im Hauptspeicher organisiert sind. Eine mögliche Vorgehensweise
basiert auf einem vorangegangenen Zugriff des Prozessors auf den
Cachespeicher. Es wird ein Adressbereich um die Stelle dieses vorangegangenen
Zugriffs definiert und die auszuwählenden Hauptspeicherinformationen
werden aus diesem Adressbereich ausgewählt. Werden die auf diese Weise
ausgewählten Informationen
in Kürze
von dem Prozessor benötigt, so
wird die Performanz der Datenverarbeitungsvorrichtung aufgrund der
durchgeführten
Manipulation nicht beeinträchtigt.
-
In
einem weiteren bevorzugten Ausführungsbeispiel
ist die Datenverarbeitungsvorrichtung ein Chipkarten-Controller
und der Cachespeicher ist ein Code-Cache. Der Code-Cache ist dabei
ausgebildet, um 64 aufeinander folgende Bytes aufnehmen zu können. Die
Vorrichtung zum Manipulieren des Cachespeichers ist in Form eines
in Hardware ausgeführten
sogenannten funktionalen Current-Scramblers ausgeführt. Der
Current-Scrambler
erzeugt zufallsgesteuert Dummy-Zugriffe. War der letzte Zugriff vor
dem Dummy-Zugriff ein Code-Zugriff, so greift der Current-Scrambler
zufallsgesteuert auf 64 aufeinander folgende Bytes zu, die sich
in einem Bereich von ±64
Byte um die zuletzt gelesenen Bytes befinden. Dies bedeutet, daß nicht
nur eine einzelne Cachezeile überschrieben
wird, sondern alle in dem Cachespeicher gespeicherten Informationen
durch neue Informationen ersetzt werden. Dadurch verändert sich
zum einen das Code-Cache-Fenster und zum anderen werden mit hoher
Wahrscheinlichkeit Informationen in den Cachespeicher geschrieben, die
in Zukunft von dem Chipkarten-Controller
benötigt
werden. Enthält
der in dem Chipkarten-Controller verarbeitete
Code kryptographische oder andere sensitive Informationen, so sind
diese durch die von dem Current-Scrambler durchgeführten Modifikationen
vor einem auf einer Stromanalyse basierendem Angriff geschützt. Auch
wenn keine sensitiven Daten Bestandteil des Codes sind, führt die Änderung
des Stromprofils durch die eingefügten Code Bytes zu erschwerter
Wiedererkennbarkeit eines Codeabschnitts, da eine Triggerung auf
charakteristische Stromprofilabschnitte nicht möglich ist.
-
Obwohl
sich die beschriebenen Ausführungsbeispiele
auf Datenverarbeitungsvorrichtungen und insbesondere auf Chipkarten-Controller beziehen,
so kann die vorliegende Erfindung auch in anderen Vorrichtungen,
die einen Speicher aufweisen, und deren Stromaufnahme verschleiert
werden soll, angewendet werden.
-
Der
zeitliche Ablauf der Speichermanipulationen kann über einen
Zufallsgenerator oder eine ähnliche
Vorrichtung, oder über
nicht regelmäßig wiederkehrende
Abläufe
in der Datenverarbeitungsvorrichtung gesteuert werden. Als Entscheidungsrundlage über die
Durchführung
und Art der Durchführung
einer Manipulation können
neben Code-Zugriffen eines Prozessors auch Daten-Zugriffe oder beliebig
andere Vorgänge
und Zustände
in einer Datenverarbeitungsvorrichtung zugrunde gelegt werden. Ebenso
ist das Ungültigmachen
nicht auf eine Speicherzeile beschränkt, sondern es können alle
in einem Speicherbereich bzw. alle in dem gesamten Speicher enthaltene
Informationen ungültig
gemacht werden.
-
Abhängig von
den Gegebenheiten kann die erfindungsgemäße Vorrichtung zum Manipulieren
eines Cachespeichers in Hardware oder in Software implementiert
werden. Die Implementation kann auf einem digitalen Speichermedium,
insbesondere einer Diskette oder CD mit elektronisch auslesbaren Steuersignalen
erfolgen, die so mit einem programmierbaren Computersystem zusammenwirken
können,
dass das entsprechende Verfahren ausgeführt wird. Allgemein besteht
die Erfindung somit auch in einem Computer-Programm-Produkt mit
einem auf einem maschinenlesbaren Träger gespeichertem Programmcode
zur Durchführung
des erfindungsgemäßen Verfahrens,
wenn das Computer-Programm-Produkt
auf einem Rechner abläuft.
In anderen Worten ausgedrückt
kann die Erfindung somit als ein Computer-Programm mit einem Programmcode zur
Durchführung
des Verfahrens realisiert werden, wenn das Computer-Programm auf
einem Computer abläuft.
-
- 100
- Vorrichtung
zum Manipulieren
- 102
- Einrichtung
zum Bereitstellen eines Manipulationsauslösesignals
- 104
- Periodizitätssteuersignaleingang
- 106
- Manipulationsauslösesignal
- 108
- Einrichtung
zum Ungültigmachen
oder zum Überschreiben
einer Cachezeile
- 109
- Manipulationssignal
- 150
- Datenverarbeitungsvorrichtung
- 152
- Prozessor
- 154
- Cachespeicher
- 156
- Cachezeilen
- 158
- Hauptspeicher
- 160
- Prozessorbus
- 162
- Speicherbus
- 202
- Einrichtung
zum Bereitstellen eines Manipulationsauslösesignals
- 206
- Manipulationsauslösesignal
- 210
- Zyklenzähleinrichtung
- 212
- Periodizitätssteuereinrichtung
- 214
- Periodizitätssteuersignal
- 216
- Taktsignal
- 302
- Einrichtung
zum Bereitstellen eines Manipulationsauslösesignals
- 306
- Manipulationsauslösesignal
- 310
- Komparatoreinrichtung
- 312
- Zufallszahlengeneratoreinrichtung
- 314
- Steuersignal
- 316
- Referenzsignal
- 400
- Vorrichtung
zum Manipulieren
- 402
- Einrichtung
zum Bereitstellen eines Manipulationsauslösesignals
- 404
- Periodizitätssteuersignaleingang
- 406
- Manipulationsauslösesignal
- 408
- Einrichtung
zum Ungültigmachen
oder zum Überschreiben
einer Cachezeile
- 409
- Manipulationssignal
- 420
- Einrichtung
zum Entscheiden
- 422
- Deaktivierungseinrichtung
- 424
- Detektoreinrichtung
- 426
- Prozessorbussignal
- 428
- Detektorsignal
- 430
- Deaktivierungssignal
- 450
- Datenverarbeitungsvorrichtung
- 452
- Prozessor
- 454
- Cachespeicher
- 458
- Hauptspeicher
- 460
- Prozessorbus
- 462
- Speicherbus
- 500
- Gültiges Manipulationssignal?
- 510
- Auswählen einer
Cachezeile
- 520
- Entscheiden,
ob ausgewählte
Cachezeile ungültig
gemacht oder überschrieben
wird
- 530
- Ungültigmachen
der Cachezeile
- 540
- Hauptspeicherinformationen
zum Überschreiben
der Cachezeile auswählen
- 550
- Überschreiben
der Cachezeile
- 600
- Prozessorzugriff
auf Cachespeicher
- 602
- Angeforderte
Informationen im Cachespeicher?
- 606
- angeforderte
Informationen vom Cachespeicher zum Prozessor
- 610
- Informationen
vom Hauptspeicher lesen in den Cachespeicher schreiben
- 612
- angeforderte
Informationen vom Cachespeicher zum Prozessor