DE102011118568A1 - Verfahren zum Schutz gegen Schadcode - Google Patents

Verfahren zum Schutz gegen Schadcode Download PDF

Info

Publication number
DE102011118568A1
DE102011118568A1 DE201110118568 DE102011118568A DE102011118568A1 DE 102011118568 A1 DE102011118568 A1 DE 102011118568A1 DE 201110118568 DE201110118568 DE 201110118568 DE 102011118568 A DE102011118568 A DE 102011118568A DE 102011118568 A1 DE102011118568 A1 DE 102011118568A1
Authority
DE
Germany
Prior art keywords
data carrier
memory
data
address range
critical address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE201110118568
Other languages
English (en)
Inventor
Klaus Butz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Giesecke and Devrient Mobile Security GmbH
Original Assignee
Giesecke and Devrient GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Giesecke and Devrient GmbH filed Critical Giesecke and Devrient GmbH
Priority to DE201110118568 priority Critical patent/DE102011118568A1/de
Publication of DE102011118568A1 publication Critical patent/DE102011118568A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

Ein Verfahren in einem portablen Datenträger (10) zum Verhindern eines Angriffs auf den portablen Datenträger (10) mittels ausführbaren Programmcodes, insbesondere Schadcodes, umfasst zumindest die folgenden Schritte: In einem ersten Schritt wird zumindest ein kritischer Adressbereich (70) des Speichers (50) des Datenträgers (10) vorgegeben. Dieser Adressbereich (70) ist nicht zum Speichern von ausführbarem Programmcode vorgesehen. In einem zweiten Schritt wird geprüft, ob ein Befehlszähler des Datenträgers (10) in den kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) zeigt. Vorzugsweise erfolgt diese Prüfung periodisch unter Verwendung einer nicht maskierbaren Hardware-Unterbrechung.

Description

  • 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.

Claims (15)

  1. Verfahren zum Verhindern eines Angriffs auf einen portablen Datenträger (10) mittels ausführbaren Programmcodes, insbesondere Schadcodes, gekennzeichnet durch die Schritte: – Vorgeben zumindest eines kritischen Adressbereichs (70) des Speichers (50) des Datenträgers (10), welcher nicht zum Speichern von ausführbarem Programmcode vorgesehen ist, und – Prüfen, ob ein Befehlszähler des Datenträgers (10) in den kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) zeigt.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Schritt des Prüfens periodisch wiederholt wird.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der Schritt des Prüfens unter Verwendung einer nicht maskierbaren Hardware-Unterbrechung durchgeführt wird.
  4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass der Schritt des Vorgebens des kritischen Adressbereichs (70) von einem Betriebssystem (42) des Datenträgers (10) durchgeführt wird.
  5. Verfahren nach einem der Ansprüche 1 bis 4, gekennzeichnet durch einen weiteren Schritt des Einleitens einer Schutzmaßnahme für den Datenträger (10), wenn der Befehlszähler in den kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) zeigt.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass eine Schutzmaßnahme für den Datenträger (10) dadurch eingeleitet wird, dass der Datenträger (10) deaktiviert wird und/oder dass zumindest Teile des Speichers (40; 50) des Datenträgers (10) gelöscht werden.
  7. Verfahren nach einem der Ansprüche 1 bis 6, gekennzeichnet durch den weiteren Schritt: – Untersuchen eines in dem kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) zu speichernden oder bereits in dem kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) gespeicherten Datensatzes dahingehend, ob der Datensatz auf dem Prozessor (30) des Datenträgers (10) ausführbaren Programmcode umfasst.
  8. Verfahren nach einem der Ansprüche 1 bis 7, gekennzeichnet durch den weiteren Schritt: – Umcodieren eines in dem kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) zu speichernden oder bereits in dem kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) gespeicherten Datensatzes derart, dass, falls der Datensatz auf einem Prozessor (30) des Datenträgers ausführbaren Programmcode umfasst, der Programmcode nicht mehr ausgeführt wird.
  9. Verfahren nach Anspruch 8, gekennzeichnet durch den weiteren Schritt: – Decodieren des umcodiert gespeicherten Datensatzes beim Auslesen des Datensatzes in dem Datenträger (10).
  10. Portabler Datenträger (10), umfassend zumindest einen Speicher (40; 50; 60) und einen Prozessor (30), wobei in dem Speicher (50) ausführbarer Programmcode gespeichert werden kann, welcher auf dem Prozessor (30) ausführbar ist, gekennzeichnet durch eine Speicherbereichsvorgabeeinrichtung (52), welche eingerichtet ist, einen kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) vorzugeben, welcher nicht zum Speichern von ausführbarem Programmcode vorgesehen ist, und durch eine Befehlszählerprüfeinrichtung (54, 35), welche eingerichtet ist zu prüfen, ob ein Befehlszähler des Datenträgers (10) in den kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) zeigt.
  11. Datenträger (10) nach Anspruch 10, dadurch gekennzeichnet, dass die Speicherbereichsvorgabeeinrichtung (52) als eine Funktionalität eines Betriebssystems (42) des Datenträgers (10) ausgebildet ist.
  12. Datenträger (10) nach Anspruch 10 oder 11, dadurch gekennzeichnet, dass die Befehlszählerprüfeinrichtung (54, 35) eine Vorrichtung (35) zum Auslösen einer nicht maskierbaren Hardware-Unterbrechung umfasst.
  13. Datenträger (10) nach einem der Ansprüche 10 bis 12, dadurch gekennzeichnet, dass der Datenträger (10) eine Schutzeinrichtung (56) umfasst, welche eingerichtet ist, eine Schutzmaßnahme für den Datenträger (10) einzuleiten, wenn der Befehlszähler in den kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) zeigt.
  14. Datenträger (10) nach einem der Ansprüche 10 bis 13, gekennzeichnet durch eine Untersuchungseinrichtung, welche eingerichtet ist, einen in dem kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) zu speichernden oder bereits in dem kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) gespeicherten Datensatz dahingehend zu untersuchen, ob der Datensatz auf dem Prozessor (30) des Datenträgers (10) ausführbaren Programmcode umfasst.
  15. Datenträger (10) nach einem der Ansprüche 10, bis 14, gekennzeichnet durch eine Codiereinrichtung, welche eingerichtet ist, einen in dem kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) zu speichernden oder bereits in dem kritischen Adressbereich (70) des Speichers (50) des Datenträgers (10) gespeicherten Datensatz derart umzucodieren, dass, falls der Datensatz auf dem Prozessor (30) des Datenträgers (10) ausführbaren Programmcode umfasst, der Programmcode nicht mehr ausgeführt wird.
DE201110118568 2011-11-15 2011-11-15 Verfahren zum Schutz gegen Schadcode Ceased DE102011118568A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE201110118568 DE102011118568A1 (de) 2011-11-15 2011-11-15 Verfahren zum Schutz gegen Schadcode

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE201110118568 DE102011118568A1 (de) 2011-11-15 2011-11-15 Verfahren zum Schutz gegen Schadcode

Publications (1)

Publication Number Publication Date
DE102011118568A1 true DE102011118568A1 (de) 2013-05-16

Family

ID=48145134

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201110118568 Ceased DE102011118568A1 (de) 2011-11-15 2011-11-15 Verfahren zum Schutz gegen Schadcode

Country Status (1)

Country Link
DE (1) DE102011118568A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021210188A1 (de) 2021-09-15 2023-03-16 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren und Vorrichtung zum Steuern von Zugriffen auf eine Speichereinrichtung

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021210188A1 (de) 2021-09-15 2023-03-16 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren und Vorrichtung zum Steuern von Zugriffen auf eine Speichereinrichtung

Similar Documents

Publication Publication Date Title
DE60314782T2 (de) Vorrichtung zum Generieren eines verschlüsselten Programms
DE202011111121U1 (de) System zum Erfassen komplexer Schadsoftware
DE102009041176A1 (de) Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode
DE102006009214B4 (de) Verfahren und Vorrichtung zum Schreiben in eine Zielspeicherseite eines Speichers
EP1664978B1 (de) Vorrichtung und verfahren zur sicheren ausführung eines programmes
EP2689373B1 (de) Detektieren von angriffen auf einen portablen datenträger
EP1661069A2 (de) Prozessorschaltung und verfahren zum zuordnen eines logikchips zu einem speicherchip
DE102011118568A1 (de) Verfahren zum Schutz gegen Schadcode
WO2004114131A1 (de) Verfahren zum nachladen einer software in den bootsektor eines programmierbaren lesespeicher
EP2595061B1 (de) Verfahren zum Schutz gegen Schadcode
EP2394232B1 (de) Vorrichtung und verfahren zum verhindern von unautorisierter verwendung und/oder manipulation von software
DE102005046696B4 (de) Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt
WO2006050973A1 (de) Vorrichtung und verfahren zum detektieren einer manipulation eines informationssignals
DE10348729A1 (de) Einrichtung und Verfahren zur Sicherung von geschützten Daten
DE112020003890T5 (de) Ereignisprotokoll-fälschungssicherheit
DE102011118567A1 (de) Verfahren zum Schutz gegen Schadcode
DE102008003531A1 (de) Softwareidentifikation
EP1577734A2 (de) Verfahren zum sicheren Betrieb eines tragbaren Datenträgers
WO2007000295A1 (de) Integritätsgeschützter datenträger
DE102009033211A1 (de) Chipkarte mit Überwachung der Integrität auf Softwarebasis
EP2230617B1 (de) Sperren eines portablen Datenträgers
EP1750217B1 (de) Absicherung von Speichereinhalten eines Datenträgers
EP1566776B1 (de) Verfahren zum sicheren Betrieb eines tragbaren Datenträgers
DE102018005102A1 (de) Adaptive Sicherheitsupdates für Applikationen
DE10341593B4 (de) Prozessor und Verfahren zum Ausführen einer Sequenz von Befehlen

Legal Events

Date Code Title Description
R163 Identified publications notified
R012 Request for examination validly filed
R163 Identified publications notified

Effective date: 20131203

R012 Request for examination validly filed

Effective date: 20131210

R081 Change of applicant/patentee

Owner name: GIESECKE+DEVRIENT MOBILE SECURITY GMBH, DE

Free format text: FORMER OWNER: GIESECKE & DEVRIENT GMBH, 81677 MUENCHEN, DE

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final