-
Die vorliegende Erfindung betrifft ein Verfahren in einem portablen Datenträger zum Verhindern eines Angriffs auf den Datenträger mittels ausführbaren Programmcodes, insbesondere Schadcodes, sowie einen entsprechend eingerichteten Datenträger.
-
Portable Datenträger, beispielsweise Chipkarten oder dergleichen, umfassen in der Regel zumindest einen nichtflüchtigen, wiederbeschreibbaren Speicher, beispielsweise in Form eines FLASH- oder EEPROM-Speichers, sowie einen Prozessor. In dem Speicher des Datenträgers können gleichermaßen Nutzdaten, d. h. nicht ausführbare Daten, wie beispielsweise Textdateien, Foto-, Video- oder Musik-Daten, als auch auf dem Prozessor des Datenträgers ausführbarer Programmcode, beispielsweise in Form verschiedener Applikationen, gespeichert sein.
-
Gemäß einem bekannten Angriffsszenario versucht ein Angreifer in einem ersten Schritt Schadcode, d. h. auf dem Prozessor des Datenträgers ausführbaren Programmcode, mittels dessen beispielsweise sensible Informationen aus dem Speicher des Datenträgers ausgelesen werden können, als Nutzdaten „getarnt” in den Speicher des Datenträgers „einzuschleusen”, d. h. darin zu speichern.
-
In einem zweiten Schritt wird dann ein Befehlszähler des Datenträgers durch externe Einwirkung auf den Datenträger derart verändert, dass der Befehlszähler in einen Speicherbereich des Speichers zeigt, in dem der Schadcode gespeichert ist, so dass der Schadcode zur Ausführung kommt.
-
Der Befehlszähler (auch als „program counter” oder „PC” bezeichnet) ist dabei in der Regel als Register des Prozessors des Datenträgers ausgebildet, welches eine Speicheradresse des derzeitigen oder des nächsten auszuführenden Befehls enthält. Dass der Programmzähler in einen Speicherbereich bzw. auf eine bestimmte Adresse des Speichers „zeigt”, bedeutet im Rahmen der vorliegenden Erfindung, dass der Programmzähler eine Speicheradresse in dem Speicherbereich bzw. die Speicheradresse (der bestimmten Adresse) enthält.
-
Verschiedene Arten externer Einwirkung zum Herbeiführen von Fehlfunktionen in dem Datenträger sind bekannt. Zur Manipulation des Befehlszählers werden beispielsweise so genannte Licht- oder Glitch-Angriffe verwendet. Bei einem Lichtangriff wird der Datenträger gezielt mit Licht hoher Intensität bestrahlt, wodurch es in dem Datenträger zu Fehlfunktionen, insbesondere zu einer Manipulation des Befehlszählers, kommen kann. Bei einem Glitch-Angriff wird das Taktsignal des Prozessors des Datenträgers gezielt gestört, um vom Angreifer beabsichtigte Fehlfunktionen hervorzurufen.
-
Aufgabe der vorliegenden Erfindung ist es, die Ausführung von Schadcode auf einem portablen Datenträger zu verhindern.
-
Diese Aufgabe wird durch ein Verfahren und einen Datenträger mit den Merkmalen der unabhängigen Ansprüche gelöst. Vorteilhafte Ausgestaltungen und Weiterbildungen sind in den abhängigen Ansprüchen angegeben.
-
Ein erfindungsgemäßes Verfahren in einem portablen Datenträger zum Verhindern eines Angriffs auf den portablen Datenträger mittels ausführbaren Programmcodes, insbesondere Schadcodes, umfasst zumindest die folgenden Schritte. In einem ersten Schritt wird zumindest ein kritischer Adressbereich des Speichers des Datenträgers vorgegeben. Dieser Adressbereich ist nicht zum Speichern von ausführbarem Programmcode vorgesehen. In einem zweiten Schritt wird geprüft, ob ein Befehlszähler des Datenträgers in den kritischen Adressbereich des Speichers des Datenträgers zeigt.
-
Demgemäß umfasst ein erfindungsgemäßer portabler Datenträger zumindest einen Speicher und einen Prozessor, wobei in dem Speicher ausführbarer Programmcode gespeichert werden kann, welcher auf dem Prozessor ausführbar ist. Erfindungsgemäß umfasst der Datenträger eine Speicherbereichsvorgabeeinrichtung. Diese ist eingerichtet, einen kritischen Adressbereich des Speichers des Datenträgers vorzugeben, welcher nicht zum Speichern von ausführbarem Programmcode vorgesehen ist. Weiter umfasst der Datenträger erfindungsgemäß eine Befehlszählerprüfeinrichtung. Diese ist eingerichtet zu prüfen, ob ein Befehlszähler des Datenträgers in den kritischen Adressbereich des Speichers des Datenträgers zeigt.
-
In der Regel obliegt es einer Steuerinstanz des Datenträgers, beispielsweise einem Betriebssystem, zu entscheiden, in welche Bereiche des Speichers des Datenträgers welche Arten von Daten gespeichert werden. Dabei kann zwischen Nutzdaten und ausführbarem Programmcode unterschieden werden. In der Regel ist ein wiederbeschreibbarer Speicher des Datenträgers daher in verschiedene Bereiche unterteilt. Ein erster Bereich kann Teile des Betriebssystems des Datenträgers umfassen und optional weitere, auf dem Datenträger installierte Applikationen, also ausführbaren Programmcode. Ein zweiter Bereich kann zum Speichern von Nutzdaten vorgesehen sein.
-
Immer dann, wenn ein Nutzer – oder ein Angreifer – Daten von außen in den Speicher des Datenträgers einzubringen versucht, wird die Steuerinstanz zum Speichern solcher Daten einen Speicherbereich in dem zweiten, den Nutzdaten vorbehaltenen Bereich, bereitstellen. Der erfindungsgemäße kritische Adressbereich des Speichers kann somit beispielsweise mit dem den Nutzdaten vorbehaltenen zweiten Speicherbereich übereinstimmen.
-
Es ist allerdings auch möglich, dass in dem Speicher des Datenträgers kein separater Bereich für Nutzdaten vorgesehen ist. Dann kann der erfindungsgemäße kritische Adressbereich derart bestimmt und vorgegeben werden, dass, ausgehend von dem gesamten Speicher des Datenträgers, diejenigen Adressbereiche ausgenommen werden, in denen ausführbarer Programmcode, insbesondere Anteile des Betriebssystems, gespeichert sind. Ein seitens der Steuerinstanz erlaubtes, nachträgliches Installieren von ausführbarem Programmcode, beispielsweise im Rahmen eines Firmware-Updates des Datenträgers oder dergleichen, führt dabei eventuell zu einer entsprechenden Anpassung des kritischen Adressbereichs.
-
In beiden Fällen wird bei gewöhnlichem, d. h. ungestörtem und/oder nicht manipuliertem Betrieb des Datenträgers der Befehlszähler des Datenträgers nicht in den kritischen Adressbereich des Speichers zeigen, da sich dort kein ausführbarer Programmcode befindet.
-
Vorzugsweise wird der Schritt des Vorgebens des kritischen Adressbereichs von einer genannten Steuerinstanz des Datenträgers, beispielsweise einem Betriebssystem des Datenträgers, durchgeführt. Diese Steuerinstanz bestimmt oder verwaltet, wie erwähnt, an welchen Stellen des Speichers des Datenträgers welche Art von Daten gespeichert werden und kann daher den erfindungsgemäßen kritischen Speicherbereich in einfacher Weise daraus ableiten und dementsprechend vorgeben. Weiterhin ist eine solche Steuerinstanz in der Regel innerhalb des Datenträgers mit den höchsten Privilegien ausgestattet, so dass Vorgaben dieser Instanz, insbesondere die Vorgabe des oder der kritischen Adressbereiche, von keiner anderen Applikation, auch nicht dem Schadcode, verändert oder manipuliert werden können.
-
Entsprechend ist die Speicherbereichsvorgabeeinrichtung des Datenträgers vorzugsweise als eine Funktionalität des Betriebssystems des Datenträgers ausgebildet.
-
Wenn es einem Angreifer dennoch gelingt, Schadcode, d. h. ausführbaren Programmcode, in dem Speicher des Datenträgers zu speichern, so wird dieser Code in dem kritischen Adressbereich gespeichert werden. Ein Speichern von Schadcode in dem Datenträger kann dem Angreifer ohnehin nur dann gelingen, wenn der Schadcode von der Steuerinstanz nicht als solcher erkannt wird, beispielsweise da der Schadcode als „Nutzdaten” getarnt worden ist. Selbst wenn es dem Angreifer weiter gelingt, den Befehlszähler des Datenträgers, beispielsweise durch externes Einwirken auf den Datenträger, derart zu verändern, dass dieser in den kritischen Adressbereich zeigt, in dem der Schadcode gespeichert ist, so wird dennoch keine Ausführung des Schadcodes erfolgen, da erfindungsgemäß die Manipulation des Befehlszählers durch den zweiten Schritt des Prüfers, ob der Befehlszähler in den kritischen Adressbereich des Speichers des Datenträgers zeigt, sicher erkannt wird.
-
Daher kann die Ausführung von Schadcode auf dem Datenträger erfindungsgemäß wirkungsvoll verhindert werden.
-
Vorzugsweise wird der Schritt des Prüfen, ob der Befehlszähler des Datenträgers in den kritischen Adressbereich des Speichers des Datenträgers zeigt, periodisch wiederholt. Die Frequenz, in der die Prüfung wiederholt wird, kann dabei an die Sicherheitsanforderungen des Datenträgers angepasst werden. Durch das periodische Wiederholen der Prüfung wird sichergestellt, dass selbst dann, wenn es einem Angreifer gelingt, durch einen vorstehend beschriebenen Angriff den Programmzähler des Datenträgers kurzfristig in den kritischen Adressbereich des Speichers zeigen zu lassen, so kann allenfalls ein kleiner Teil des Schadcodes zur Ausführung kommen, denn bereits die nächste Prüfung des Befehlszählers erkennt den Angriff und eine weitere Ausführung des Schadcodes kann gestoppt werden.
-
Gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung wird der Schritt des Prüfen, ob der Befehlszähler des Datenträgers in den kritischen Adressbereich des Speichers des Datenträgers zeigt, unter Verwendung einer nicht maskierbaren Hardware-Unterbrechung durchgeführt. Auf diese Weise wird sichergestellt, dass nicht softwareseitig, beispielsweise mittels einer Funktionalität des Schadcodes, eine Prüfung des Befehlszählers umgangen werden kann.
-
Entsprechend umfasst die Befehlszählerprüfeinrichtung des erfindungsgemäßen Datenträgers vorzugsweise eine Vorrichtung zum Auslösen einer nicht maskierbaren Hardware-Unterbrechung. Die Verwendung einer nicht maskierbaren Hardware-Unterbrechung stellt sicher, dass, sobald dem Prozessor die Unterbrechung signalisiert wird, der aktuell ausgeführte Prozess, also gegebenenfalls auch der Schadcode, umgehend unterbrochen und die Unterbrechungsroutine, hier also die Prüfung des Befehlszählers, durchgeführt wird. In dem Fall, dass der Befehlszähler nicht in den kritischen Adressbereich zeigt, also kein Angriff vorliegt, wird der zuvor durch den Prozessor ausgeführte, unterbrochene Prozess unverändert fortgeführt.
-
In dem Fall allerdings, dass der Befehlszähler in den kritischen Adressbereich zeigt, was erfindungsgemäß als Angriff auf den Datenträger erkannt wird, werden geeignete Schutzmaßnahmen für den Datenträger eingeleitet. Der Datenträger umfasst dazu eine oder mehrere geeignete Schutzeinrichtungen, welche in Software und/oder Hardware realisiert werden können.
-
Dabei sind abhängig von der Art des Datenträgers, der Art des Angriffs und der Art der auf den Datenträger gespeicherten, vor einem Angriff zu schützenden Daten verschiedene Schutzmaßnahmen möglich. Eine solche Schutzmaßnahme für den Datenträger kann beispielsweise dadurch eingeleitet werden, dass der Datenträger deaktiviert wird. Dadurch wird der aktuell erkannte Angriff wirkungsvoll abgewehrt, ein weiterer, gleichartiger Angriff auf den Datenträger kann somit nicht mehr erfolgen. Alternativ oder zusätzlich können zumindest Teile des Speichers des Datenträgers, insbesondere solche, die schätzenswerte oder geheime Daten umfassen, gelöscht oder gar zerstört werden. Auf diese Weise wird wirkungsvoll verhindert, dass ein Angreifer sensible Daten, auch nach einem erkannten Angriff, aus dem Datenträger auslesen kann, selbst wenn er sich weiterer Mittel bedienen würde.
-
Um einen Angriff mittels Schadcode auf den Datenträger bereits zu einem früheren Zeitpunkt zu begegnen, insbesondere bereits dann, wenn ein potentiell Schadcode umfassender Datensatz in den Speicher des Datenträgers gespeichert werden soll, oder – falls dies bereits geschehen ist –, zumindest bevor der Befehlszähler derart manipuliert werden kann, dass dieser in den kritischen Adressbereich des Speichers des Datenträgers zeigen kann, in welchem ein gefährdender Datensatz gespeichert ist, können weitere Maßnahmen ergriffen werden.
-
Optional kann das erfindungsgemäße Verfahren dazu einen ersten zusätzlichen Schritt umfassen. Dieser Schritt umfasst ein Untersuchen eines in dem Speicher des Datenträgers zu speichernden oder bereits in dem Speicher des Datenträgers gespeicherten Datensatzes dahingehend, ob der Datensatz auf dem Prozessor des Datenträgers ausführbaren Programmcode umfasst. Dazu umfasst der erfindungsgemäße portable Datenträger zusätzlich eine entsprechende Untersuchungseinrichtung.
-
Mittels des optionalen Schritts des Untersuchens des betreffenden, zu speichernden oder bereits gespeicherten Datensatzes dahingehend, ob der Datensatz auf dem Prozessor des Datenträgers ausführbaren Programmcode umfasst, wird somit bereits der erste Schritt des einleitend skizzierten Angriffs, nämlich das Speichern von Schadcode in einem Speicher des Datenträgers, wirkungsvoll verhindert oder zumindest nachträglich erkannt. Solcher Schadcode umfasst stets typische Charakteristika ausführbaren Programmcodes, welche erfindungsgemäß untersucht und erkannt werden können. Auch als Nutzdaten „getarnte” Datensätze, also solche, die beispielsweise anhand deren Dateierweiterung als vermeintlich nicht ausführbar bezeichnet sind, werden erfindungsgemäß untersucht. Auf diese Weise wird ein „Einschleusen” von Schadcode in einen portablen Datenträger zumindest erheblich erschwert bzw. wird bereits in dem Datenträger gespeicherter Schadcode nachträglich erkannt. Dadurch kann bereits das Speichern von Schadcode und folglich das Ausführen desselben auf dem Datenträger effektiv verhindert werden.
-
Der Schritt des Untersuchens des Datensatzes erfolgt in der Regel anhand in dem Datensatz vorkommender Programmcodefragmente und/oder anhand vorgegebener Signaturen. Jede Art von ausführbarem Programmcode umfasst charakteristische Programmcodefragmente, mittels derer immer wiederkehrende, wesentliche Programmabläufe oder Programmstrukturen, wie beispielsweise Schleifen, Verzweigungen, Sprünge und dergleichen implementiert werden – und anhand derer ausführbarer Programmcode als solcher erkannt werden kann. Beim Bilden einer Signatur über einen Datensatz werden in bekannter Weise wesentliche Strukturelemente des Datensatzes, beispielsweise entsprechend den vorgenannten Programmcodefragmenten, in komprimierter Form erfasst. Die Signatur bildet quasi einen „Fingerabdruck” des Datensatzes, anhand dessen der Datensatz erkannt werden kann.
-
Die vorgegebenen Programmcodefragmente, nach denen im Schritt des Untersuchens des Datensatzes gesucht wird, sowie die Signaturen, anhand derer ein Datensatz als Schadcode erkannt werden kann, werden vorzugsweise in dem Datenträger aktualisierbar gespeichert.
-
Abhängig von einem Ergebnis der Untersuchung des Datensatzes kann der Datensatz als potentiell ausführbaren Programmcode umfassend, d. h. potentiell gefährdend, markiert werden. Diese Vorgehensweise bietet sich für die Fälle an, in denen eine Untersuchung des Datensatzes zwar Anzeichen erkennen lässt, welche auf ausführbaren Programmcode in dem Datensatz hindeuten, aber kein endgültiges diesbezügliches Resultat zulassen. Auch eine erkannte Signatur, welche bekannten Schadcodesignaturen zumindest nahe kommt, kann Anlass zu einer beschriebenen Markierung geben.
-
Weiter kann, abhängig von einem Ergebnis der Untersuchung des Datensatzes, der zu speichernde Datensatz nicht in dem Speicher des Datenträgers gespeichert werden bzw. der bereits gespeicherte Datensatz aus dem Speicher des Datenträgers gelöscht werden. Diese Vorgehensweise bietet sich für die Fälle an, in denen die Untersuchung des Datensatzes mit sehr hoher Wahrscheinlichkeit auf in dem Datensatz befindlichen, ausführbaren Programmcode schließen lässt, beispielsweise anhand einer Vielzahl erkannter, vorgegebener Programmcodefragmente und/oder anhand einer gespeicherten, erkannten Signatur. Alternativ oder zusätzlich kann der Datenträger ein Signal ausgeben, welches einem Nutzer des Datenträgers und/oder einem Terminal oder dergleichen anzeigt, dass der Datensatz als ausführbaren Programmcode umfassend und somit potentiell gefährdend angesehen wird.
-
Weiterhin optional kann das erfindungsgemäße Verfahren einen zweiten zusätzlichen Schritt umfassen. Dieser Schritt umfasst ein Umcodieren eines in dem kritischen Adressbereich des Speichers des Datenträgers zu speichernden oder bereits in dem Speicher des Datenträgers gespeicherten Datensatzes derart, dass, falls der Datensatz auf einem Prozessor des Datenträgers ausführbaren Programmcode umfasst, der Programmcode nicht mehr ausgeführt wird. Ein erfindungsgemäßer Datenträger umfasst dazu eine entsprechende Codiereinrichtung
-
Die Ausführung dieses Schrittes des Umcodierens bietet sich insbesondere in Kombination mit dem vorstehend beschriebenen Schritt des Untersuchens eines Datensatzes hinsichtlich darin befindlichen, ausführbaren Programmcodes an, wenn die Untersuchung zwar Anzeichen dafür liefert, dass der untersuchte Datensatz möglicherweise ausführbaren Programmcode umfasst, eine sichere Entscheidung aber abhängig von dem Ergebnis der Untersuchung nicht gefällt werden kann. Wird ein solcher Datensatz zusätzlich umcodiert, so bleibt er für den Nutzer bzw. zugreifende Applikationen verfügbar, gleichzeitig ist eine Gefahr ausgehend von darin potentiell befindlichem, ausführbarem Programmcode gebannt.
-
Um einen umcodierten Datensatz, der beispielsweise in seiner ursprünglichen Form lediglich gewöhnliche Nutzdaten umfasst, für einen Nutzer des Datenträgers bzw. für eine Applikation auf dem Datenträger, welche auf den Datensatz lesend zugreift, wieder nutzbar zu machen, ist in der Regel zusammen mit den Schritt des Umcodierens ein weiterer Schritt des Decodierens des umcodiert gespeicherten Datensatzes beim Auslesen des Datensatzes in dem Datenträger vorgesehen.
-
Umcodieren und Speichern bzw. Auslesen und Dekodieren werden dabei vorzugsweise durch entsprechende Funktionalitäten einer Steuerinstanz des Datenträgers, insbesondere durch Codier- und Speicher- bzw. Auslese- und Dekodierfunktionalitäten des Betriebssystems des Datenträgers durchgeführt.
-
Der Schritt des Umcodierens des Datensatzes kann auf vielfältige Weise durchgeführt werden. Gemäß einer ersten Variante erfolgt das Umcodieren derart, dass der gesamte Datensatz gemäß einer vorgegebenen Regel umcodiert wird, beispielsweise byteweise. Im Schritt des Decodieren wird die Umcodierung für den gesamten Datensatz rückgängig gemacht.
-
Ein Datensatz kann beispielsweise dadurch umcodiert werden, dass der Datensatz in Blöcke, beispielsweise ein oder mehrere Bytes, unterteilt wird, wobei eine Anordnung der Blöcke vor dem Speichern der Blöcke permutiert wird. Alternativ oder zusätzlich können die Blöcke in Unterblöcke, beispielsweise einzelne Bits, unterteilt werden, wobei eine Anordnung der Unterblöcke vor dem Speichern permutiert wird. Eine weitere Möglichkeit des Umcodierens des Datensatzes besteht darin, den Datensatz mit einem vorgegebenen Umcodierungsdatensatz mittels einer XOR-Operation zu verknüpfen.
-
Gemäß einer zweiten Variante wird nicht der gesamte Datensatz umcodiert, sondern es werden im Schritt des Umcodierens lediglich in nachstehend beschriebener Weise zusätzliche Füllblöcke an vorgegebenen Stellen des Datensatzes eingefügt. Die restlichen Teile des Datensatzes, zwischen den Füllblöcken, können unverändert verbleiben. Im Schritt des Dekodieren werden die beim Umcodieren hinzugefügten Füllblöcke wieder entfernt, so dass wieder der ursprüngliche Datensatz entsteht.
-
Hierbei wird der Datensatz beispielsweise dadurch umcodiert, dass der Datensatz in Blöcke unterteilt wird und dass ein oder mehrere zusätzliche Füllblöcke an vorgegebenen Stellen zwischen einzelne Blöcke des Datensatzes eingefügt werden. Der oder die Füllblöcke umfassen dabei vorzugsweise für den Prozessor des Datenträgers ausführbaren Programmcode.
-
Der als Füllblock eingefügte Programmcode kann beispielsweise so ausgewählt werden, dass der Prozessor in eine Endlosschleife läuft, einen Fehlerzähler inkrementiert, zu einer Stilllegungsroutine des Datenträgers springt oder dergleichen. D. h. der durch einen Füllblock eingefügte Programmcode hält den Prozessor in geeigneter Weise davon ab, in dem Datensatz nach dem Füllblock oder zwischen den Füllblöcken gegebenenfalls befindlichen Programmcode überhaupt zu erreichen und, falls doch, allenfalls teilweise auszuführen.
-
Die vorliegende Erfindung wird im Folgenden mit Bezug auf die beiliegenden Zeichnungen beispielhaft beschrieben. Darin zeigen:
-
1 eine bevorzugte Ausführungsform eines erfindungsgemäßen Datenträgers; und
-
2 zwei schematische Ansichten eines Ausschnitts des Speichers des Datenträgers aus 1.
-
Mit Bezug auf 1 umfasst ein Datenträger 10, der hier als Chipkarte dargestellt ist, Datenkommunikationsschnittstellen 20, 20', einen Prozessor 30 sowie verschiedene Speicher 40, 50 und 60. Der Datenträger 10 kann auch in anderer Bauform vorliegen. Mit dem Prozessor 30 ist ein Bauteil 35 verbunden, welches eingerichtet ist, vorzugsweise in vorgegebenen Intervallen, eine Unterbrechungsanforderung an den Prozessor 30 zu senden. Eine konkrete Verwendung des Bauteils 35 wird nachfolgend beschrieben.
-
Als Datenkommunikationsschnittstellen 20, 20' umfasst der Datenträger 10 ein Kontaktfeld 20 zur kontaktbehafteten Datenkommunikation sowie eine Antennenspule 20' zur kontaktlosen Datenkommunikation. Alternative oder zusätzliche Datenkommunikationsschnitstellen können vorgesehen sein, wie z. B. eine optische Datenkommunikationsschnittstelle. Es ist weiterhin möglich, dass der Datenträger 10 lediglich eine Art der Datenkommunikation unterstützt, also z. B. lediglich kontaktbehaftet oder kontaktlos.
-
Der nicht flüchtige, nicht wiederbeschreibbare ROM-Speicher 40 umfasst ein Betriebssystem (OS) 42 des Datenträgers 10, welches den Datenträger 10 steuert. Zumindest Teile des Betriebssystems 42 können auch in dem nicht flüchtigen, wiederbeschreibbaren Speicher 50 gespeichert sein. Dieser kann beispielsweise als FLASH-Speicher vorliegen.
-
Der Speicher 50 umfasst eine Speicherbereichsvorgabeeinrichtung 52, eine Befehlszählerprüfeinrichtung 54 sowie eine Schutzeinrichtung 56, deren jeweilige Funktionalitäten nachstehend genauer beschrieben werden.
-
Der Speicher 50 kann weiterhin Nutzdaten, d. h. nicht ausführbare Daten in Form von beispielsweise Textdateien, Foto-, Audio- oder Videodaten oder dergleichen, und/oder ausführbaren Programmcode, beispielsweise bereits installierte Applikationen, enthalten.
-
Der flüchtige, wiederbeschreibbare RAM-Speicher 60 dient dem Datenträger 10 als Arbeitsspeicher.
-
Die vorstehend genannten Einrichtungen 52, 54, 56 werden zusammen mit dem Bauteil 35 in nachstehend beschriebener Weise eingesetzt, um das Ausführen von Schadcode in dem Datenträger 10 zu verhindern.
-
Wenn es einem Angreifen gelingt, Schadcode in dem Speicher 50 des Datenträgers zu speichern, so wird dieser Schadcode nur dann ausgeführt, wenn es dem Angreifer weiterhin gelingt, den Befehlszähler des Prozessors 30 des Datenträgers 10 derart zu manipulieren, dass dieser in den Bereich des Speichers 50 zeigt, in dem der Schadcode gespeichert ist. Eine solche Manipulation kann beispielsweise durch externes Einwirken auf den Datenträger 10 erfolgen, beispielsweise durch gezielte Bestrahlung des Datenträgers 10 mit Licht oder dergleichen.
-
Die Speicherbereichsvorgabeeinrichtung 52, welche in der Regel ein Teil des Betriebssystem 42 des Datenträgers 10 ist, kennt diejenige Adressbereiche, welche in dem wiederbeschreibbaren Speicher 50 des Datenträgers 10 zum Speichern von ausführbarem Programmcode vorgesehen sind. Solcher ausführbarer Programmcode umfasst diejenigen Anteile des Betriebssystems 42, welche nicht bereits in dem ROM-Speicher 40 gespeichert sind, sowie weitere, in dem Datenträger 10 installierte Applikationen. Der restliche Speicherbereich des Speichers 50, welcher nicht zum Speichern von ausführbarem Programmcode vorgesehen ist, ist Nutzdaten, d. h. nicht ausführbaren Daten, vorbehalten.
-
Wie in 2 illustriert, ist es möglich, dass die vorstehend beschriebenen Datentypen, ausführbarer Programmcode bzw. Nutzdaten, in dem Speicher 50 in klar getrennten, jeweils zusammenhängenden Speicherbereichen 50', 50'' gespeichert sind (vgl. 2, linke Seite). Alternativ kann die Speicherverwaltung des Speichers 50 des Datenträgers 10 aber auch derart erfolgen, dass zur Speicherung von ausführbarem Programmcode bzw. Nutzdaten keine zusammenhängenden Speicherbereiche vorgesehen sind, sondern dass sich Blöcke von Nutzdaten mit Blöcken von ausführbarem Code abwechseln können (vgl. 2, rechte Seite).
-
Die Speicherbereichsvorgabeeinrichtung 52 ist eingerichtet, diejenigen Speicherbereiche zu ermitteln, in denen kein ausführbarer Programmcode des Datenträgers gespeichert ist. Diese Speicherbereiche, die den Nutzdaten vorbehalten sind und nicht zum Speichern von ausführbarem Programmcode vorgesehen sind, bilden einen so genannten „kritischen” Adressbereich 70 des Speichers 50 des Datenträgers 10. Dieser kritische Adressbereich 70 wird von der Speicherbereichsvorgabeeinrichtung 52 bei Inbetriebnahmen des Datenträgers 10 vorgegeben. Zusätzlich oder alternativ kann der kritische Adressbereich 70 auch dynamisch, also nicht nur bei Inbetriebnahme, sondern auch zu einem beliebigen Zeitpunkt während des Betriebs, definiert werden.
-
Falls Schadcode in dem Speicher 50 des Datenträgers 10 gespeichert wäre oder dort gespeichert werden würde, so könnte dieser Schadcode nur in den den Nutzdaten vorbehaltenen Speicherbereichen, also in den Speicherbereichen entsprechend dem kritischen Adressbereich 70, gespeichert werden. Eine gefährliche Situation tritt für den Datenträger 10 dann auf, wenn dieser Schadcode ausgeführt wird. Dies geschieht aber nur dann, wenn der Befehlszähler in den Bereich des Speichers 50 zeigt, in dem der Schadcode gespeichert ist. „Kritisch”, daher die Begriffsbildung, ist die Situation für den Datenträger also bereits dann, wenn der Befehlszähler in den den Nutzdaten vorbehaltenen Speicherbereich, den „kritischen” Adressbereich 70, zeigt. Dies deutet auf eine Manipulation des Befehlszählers hin, welcher im normalen, ungestörten Betrieb des Datenträgers 10 nie in den kritischen Adressbereich 70 zeigt – da dort kein ausführbarer Programmcode vorgesehen ist. Da eine Manipulation des Befehlszählers in der Regel das Ziel hat, bereits in den Speicher des Datenträgers eingeschleusten Schadcode auszuführen, kann bei Erkennen einer solchen Manipulation mit hinreichender Wahrscheinlichkeit davon ausgegangen werden, dass in dem kritischen Adressbereich 70 tatsächlich Schadcode gespeichert ist.
-
Die Befehlszählerprüfeinrichtung 54 prüft nun, vorzugsweise periodisch, ob der Befehlszähler des Datenträgers 10 in den kritischen Adressbereich 70 des Speichers 50 zeigt. Dazu prüft die Befehlszählerprüfeinrichtung 54, ob die Speicheradresse, die aktuell in dem dem Befehlszähler entsprechenden Register des Prozessors 30 des Datenträgers 10 gespeichert ist, in dem kritischen Adressbereich 70 liegt oder nicht. Zusätzlich oder alternativ kann auch geprüft werden, ob sich der Befehlszähler außerhalb des erlaubten Speicherbereiches, d. h. der Bereich für das Betriebssystem und die Anwendungen, befindet. Diese Prüfung bietet sich insbesondere dann an, wenn der erlaubte Speicherbereich ein zusammenhängender Bereich ist, weil dann die Prüfung einfacher und somit schneller ist.
-
Der Schritt des Prüfen des Befehlszählers erfolgt vorzugsweise unter Verwendung einer nicht maskierbaren Hardware-Unterbrechung. Das vorstehend erwähnte Bauteil 35 ist eingerichtet, in vorgegeben Intervallen, beispielsweise alle 20 ms, eine Unterbrechungsanforderung an den Prozessor 30 zu signalisieren. Da diese Anforderung nicht abgewiesen werden kann, unterbricht der Prozessor 30 die laufenden Berechnungen und startet die der Unterbrechung zugewiesene Unterbrechungsroutine, welche durch die Befehlszählerprüfeinrichtung 54 implementiert ist.
-
Falls der Befehlszähler nicht in den kritischen Adressbereich 70 zeigt, kann der Betrieb des Datenträgers 10 fortgesetzt werden, d. h. der unterbrochene Prozess wird fortgesetzt.
-
Falls der Befehlszähler allerdings in den kritischen Adressbereich 70 zeigt, liegt potentiell eine Gefährdung durch Schadcode vor. In diesem Fall werden Schutzmaßnahmen für den Datenträger 10 eingeleitet. Zu diesem Zweck ist die Schutzeinrichtung 56 vorgesehen.
-
Die Schutzeinrichtung 56 kann zum einen eingerichtet sein, den Datenträger 10 temporär zu deaktivieren oder vollständig außer Betrieb zu setzen. Auf diese Weise wird verhindert, dass Schadcode sensible Daten des Datenträgers 10 manipulieren oder auslesen kann. Alternativ kann die Schutzeinrichtung 56 solche sensiblen Daten im Datenträger 10 löschen.
-
Die Schutzeinrichtung 56 kann weiter eingerichtet sein, denjenigen Bereich des Speichers 50, welcher von Schadcode befallen zu sein scheint, zu erkennen und zu löschen oder derart zu verändern, dass ein Ausführen des Schadcodes nicht mehr möglich ist.
-
Zum Erkennen von Schadcode kann die Schutzeinrichtung 56 eine Untersuchungseinrichtung (nicht gezeigt) umfassen oder aufrufen, welche eingerichtet ist, einen in dem kritischen Adressbereich 70 gespeicherten Datensatz dahingehend zu untersuchen, ob der Datensatz auf dem Prozessor 30 des Datenträgers 10 ausführbaren Programmcode umfasst. Diese Untersuchung kann beispielsweise anhand vorgegebener Programcodefragmente und/oder vorgegebener Signaturen erfolgen, welche jeweils aktualisierbar in dem Speicher 50 des Datenträgers 10 gespeichert sein können.
-
Die Untersuchungseinrichtung kann auch unabhängig von einem Aufruf durch die Schutzeinrichtung 56 aktiviert werden, beispielsweise immer dann, wenn neue Nutzdaten, welche prinzipiell stets Schadcode enthalten können, in den Datenträger 10 geschrieben werden sollen.
-
Alternativ oder zusätzlich kann die Schutzeinrichtung 56 zur Behandlung eines verdächtigen, potentiell Schadcode umfassenden Datensatzes eine Codiereinrichtung (nicht gezeigt) umfassen oder aufrufen. Diese ist eingerichtet, einen in dem kritischen Adressbereich 70 des Speichers 50 gespeicherten Datensatz derart umzucodieren, dass, falls der Datensatz auf einem Prozessor 30 des Datenträgers 10 ausführbaren Programmcode umfasst, der Programmcode nicht mehr ausgeführt wird. Das Umcodieren, welches beim Auslesen des entsprechenden Datensatzes durch entsprechendes Decodieren wieder aufgehoben wird, kann beispielsweise durch Verändern der Speicherreihenfolge einzelner Blöcke des Datensatzes, durch XOR-Verknüpfung mit einem vorgegebenen Schlüssel, durch Einfügen von ausführbarem Programmcode in den Datensatz, welcher den Prozessor 30 beispielsweise in eine Endlosschleife führen kann, oder auf andere, geeignete Weise erfolgen.
-
Wird ein in den Datenträger 10 zu schreibender oder bereits geschriebener Datensatz von der Untersuchungseinrichtung als zumindest potentiell Schadcode umfassend eingestuft, so kann der Datensatz durch die Codiereinrichtung, unabhängig von einem Aufruf durch die Schutzeinrichtung 56, vorsorglich umcodiert werden.