DE102004011488A1 - Schutz von Software gegen Angriffe - Google Patents

Schutz von Software gegen Angriffe Download PDF

Info

Publication number
DE102004011488A1
DE102004011488A1 DE102004011488A DE102004011488A DE102004011488A1 DE 102004011488 A1 DE102004011488 A1 DE 102004011488A1 DE 102004011488 A DE102004011488 A DE 102004011488A DE 102004011488 A DE102004011488 A DE 102004011488A DE 102004011488 A1 DE102004011488 A1 DE 102004011488A1
Authority
DE
Germany
Prior art keywords
software
memory
portable data
configuration
data carrier
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.)
Granted
Application number
DE102004011488A
Other languages
English (en)
Other versions
DE102004011488B4 (de
Inventor
Wolfgang Rankl
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 DE102004011488A priority Critical patent/DE102004011488B4/de
Publication of DE102004011488A1 publication Critical patent/DE102004011488A1/de
Application granted granted Critical
Publication of DE102004011488B4 publication Critical patent/DE102004011488B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2101Auditing as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect

Landscapes

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

Abstract

Es werden Verfahren zum Schutz von Software (28), die zur Ausführung durch einen Prozessor eines tragbaren Datenträgers vorgesehen ist oder durch einen solche Prozessor ausgeführt wird, gegen Angriffe angegeben. Bei diesen Verfahren wird, ausgehend von einer lauffähigen ersten Konfiguration der Software (28), zumindest ein Abschnitt der Software (28) zumindest hinsichtlich seiner Position verändert, um eine lauffähige zweite Konfiguration der Software (28) zu erhalten, die bei gleicher Funktion eine veränderte Speicherbelegung in einem nichtflüchtigen überschreibbaren Speicher des tragbaren Datenträgers aufweist. Die Erfindung umfaßt ferner Computerprogrammprodukte, eine programmgesteuerte Vorrichtung und eine Mehrzahl von tragbaren Datenträgern mit entsprechenden Merkmalen. Die Erfindung stellt eine verbesserte Technik zum Schutz von Software (28) gegen Angriffe bereit.

Description

  • Die Erfindung betrifft das technische Gebiet des Schutzes von Software, die durch einen Prozessor eines tragbaren Datenträgers ausgeführt werden soll oder ausgeführt wird, gegen Angriffe. Ein tragbarer Datenträger im Sinne des vorliegenden Dokuments kann insbesondere eine Chipkarte (smart card) in unterschiedlichen Bauformen oder ein Chipmodul oder eine sonstige ressourcenbeschränkte Vorrichtung sein.
  • Chipkarten und andere tragbare Datenträger werden häufig für sicherheitskritische Anwendungen wie z.B. zur Autorisierung von Finanztransaktionen oder zur Verschlüsselung oder elektronischen Signatur von Dokumenten eingesetzt. Durch einen erfolgreichen Angriff; bei dem z.B. Daten und/oder Berechnungsvorgänge ausgespäht und/oder manipuliert werden, könnte großer Schaden entstehen. Deshalb kommt dem Schutz des Datenträgers gegen Angriffe aller Art entscheidende Bedeutung zu. Kapitel 8.2 des Buches "Handbuch der Chipkarten" von W. Rankl und W. Effing, Hanser Verlag, 3. Auflage 1999, Seiten 469–519, beschreibt eine Reihe heute bekannter Angriffsverfahren und Abwehrmaßnahmen.
  • Tragbare Datenträger werden heute in großen Stückzahlen hergestellt. Die einzelnen Datenträger einer Baureihe weisen jeweils ein identisches Betriebssystem und identische Anwendungssprogramme auf. Zwar werden bei der Personalisierung der Datenträger unterschiedliche persönliche Daten der zukünftigen Benutzer in die Datenträger eingespielt; die Speicherbelegung der Datenträger sowohl im Hinblick auf den gesamten ausführbaren Programmcode als auch im Hinblick auf die Position der Individualisierungsdaten bleibt jedoch bei allen Datenträgern der Baureihe identisch.
  • Die Tatsache, das alle Datenträger einer Baureihe in ihrer Speicherbelegung übereinstimmen, stellt eine mögliche Schwachstelle dar. Wenn einem Angreifer ein erfolgreicher Angriff gegen einen einzigen Datenträger gelingt, sind damit alle Datenträger der Baureihe kompromittiert. Überdies steht Angreifern, die sich mehrere Datenträger derselben Baureihe beschaffen, Material für statistische Untersuchungen zur Verfügung. Ferner steigert die Tatsache, daß ein erfolgreicher Angriff auf viele weitere Datenträger übertragbar ist, die "Attraktivität" der entsprechenden Baureihe für potentielle Angreifer.
  • Aus dem US-Patent 6,006,328 ist ein Verfahren zum Schutz von Anwendungsprogrammen, die zur Ausführung durch übliche Arbeitsplatzrechner vorgesehen sind, gegen Ausspähung und andere Angriffe bekannt. Bei diesem Verfahren wird eine lauffähige Konfiguration des Anwendungsprogramms verschlüsselt und durch zusätzlichen Lade- und Überwachungscode ergänzt. Wenn das so erzeugte Programmpaket auf einem Arbeitsplatzrechner gestartet wird, wird zunächst der Lade- und Überwachungscode ausgeführt. Dieser entschlüsselt das Anwendungsprogramm und stellt es im Speicher des Arbeitsplatzrechners in seiner ursprünglichen Konfiguration wieder her. Der dann im Arbeitsplatzrechner ausgeführte Programmcode weist dieselbe Speicherbelegung wie der ursprüngliche Programmcode auf.
  • Die Erfindung hat die Aufgabe, auf dem Gebiet der tragbaren Datenträger eine verbesserte Technik zum Schutz von Software gegen Angriffe bereitzustellen. Insbesondere sollen durch die Erfindung die Auswirkungen eines erfolgreichen Angriffs gegen einen tragbaren Datenträger im Hinblick auf andere Datenträger derselben Baureihe reduziert werden. In bevorzugten Ausgestaltungen soll auch ein Angriff gegen einen einzelnen Datenträger erschwert werden.
  • Erfindungsgemäß wird diese Aufgabe ganz oder zum Teil gelöst durch ein Verfahren zum Schutz von Software mit den Merkmalen des Anspruchs 1, ein Verfahren zum Erzeugen von Software mit den Merkmalen des Anspruchs 6, Computerprogrammprodukte gemäß den Ansprüchen 19 und 20, eine programmgesteuerte Vorrichtung gemäß Anspruch 21 und eine Mehrzahl von tragbaren Datenträgern gemäß Anspruch 22. Die abhängigen Ansprüche definieren bevorzugte Ausgestaltungen der Erfindung.
  • Die Erfindung geht von der Grundidee aus, die zu schützende Software individuell für jeden Datenträger oder zumindest jede Gruppe von Datenträgern zu konfigurieren. Mit anderen Worten wird erfindungsgemäß aus einer lauffähigen ersten Konfiguration der Software mindestens eine lauffähige zweite Konfiguration der Software erzeugt, so daß die mindestens eine zweite Konfiguration der Software die gleiche Funktion wie die erste Konfiguration, aber eine veränderte Speicherbelegung, aufweist. Die auf diese Weise individualisierte Software ist zum Einschreiben in einen nichtflüchtigen überschreibbaren Speicher des Datenträgers vorgesehen oder wird innerhalb des Datenträgers in einem solchen Speicher generiert.
  • Die Erfindung hat den erheblichen Vorteil, daß aus der Speicherbelegung eines Datenträgers nicht auf die Speicherbelegung eines anderen Datenträgers geschlossen werden kann. Selbst ein erfolgreicher, gegen einen Datenträger einer Baureihe gerichteter Angriff würde daher die Sicherheit anderer Datenträger derselben Baureihe nicht kompromittieren. Angesichts des hohen Aufwands für einen erfolgreichen Angriff und des beschränkten Nutzens für den Angreifer ist davon auszugehen, daß Datenträger, die mit dem erfindungsgemäßen Schutzmechanismus ausgestattet sind, generell für Angreifer weniger "attraktiv" werden.
  • Der erfindungsgemäße Schutzmechanismus betrifft Software, die zur Ausführung durch einen Prozessor des tragbaren Datenträgers vorgesehen ist oder gerade durch einen solchen Prozessor ausgeführt wird. Der Begriff "Software" soll in diesem Zusammenhang nicht nur ausführbaren Programmcode, sondern vorzugsweise auch konstante und variable Daten, die von diesem Programmcode angesprochen werden, umfassen. Mit anderen Worten soll in bevorzugten Ausgestaltungen der Begriff "Software" als die Gesamtheit aller zur Programmausführung benötigten Programmbefehle und Daten verstanden werden. In anderen Ausführungsformen wird dagegen die Erfindung nur im Hinblick auf die im strengen Sinne ausführbaren Teile der Software angewendet.
  • Besonders bevorzugt sind Ausgestaltungen, bei denen die Software ein Betriebssystem des tragbaren Datenträgers oder ein Teil davon ist. Da das Betriebssystem besonders sicherheitskritische Funktionen ausführt, können Schutzmaßnahmen, selbst wenn sie auf das Betriebssystem beschränkt sind, viele Angriffe wirksam verhindern. In Ausführungsalternativen der Erfindung wird jedoch – alternativ oder zusätzlich zum Schutz des Betriebssystems – mindestens ein Anwendungsprogramm oder mindestens ein Teil davon in die erfindungsgemäßen Schutzmaßnahmen einbezogen.
  • Vorzugsweise ist der nichtflüchtige überschreibbare Speicher des Datenträgers, in den die individualisierte Software eingeschrieben wird, ein Flash-Speicher oder FeRAM (ferroelelectric random access memory). Der Datenträger enthält in bevorzugten Ausgestaltungen keinen maskenprogrammierten Festwertspeicher zur Aufnahme von Programmcode, da sich die erfindungsgemäße Individualisierung nicht für Software, die zur Speicherung in maskenprogrammiertem Festwertspeicher vorgesehen ist, eignen würde.
  • Die erfindungsgemäße Änderung der Software kann auf unterschiedliche Weise erfolgen, sofern die Funktion der Software unverändert bleibt. Beispielsweise können Abschnitte der Software verschoben und/oder vertauscht werden. Alternativ oder zusätzlich können funktionsneutrale Befehle und/oder Befehlssequenzen eingefügt oder entfernt werden, was in der Regel – aber nicht zwingend – eine Verschiebung von Abschnitten der Software zum Ausgleich eines veränderten Programmcodeumfangs nach sich zieht. Ferner wird in bevorzugten Ausgestaltungen berücksichtigt, daß gegebenenfalls manche Abschnitte der Software nicht oder nur im Ganzen verschoben werden dürfen. In vorteilhaften Ausgestaltungen ist vorgesehen, daß Sprungziele und Referenzen – z.B. Zeiger auf konstante oder variable Daten – in der gesamten Software an die veränderte Speicherbelegung angepaßt werden.
  • Die erfindungsgemäß erzeugte Software braucht nicht notwendigerweise einen zusammenhängenden Speicherbereich zu belegen. In manchen Ausgestaltungen der Erfindung ist vielmehr vorgesehen, den zur Verfügung stehenden nichtflüchtigen überschreibbaren Speicher voll auszunutzen, wobei Lücken zwischen einzelnen Abschnitten der Software in Kauf genommen werden.
  • Um eine besonders hohe Sicherheit zu erreichen, wird die Veränderung der Software vorzugsweise zufallsgesteuert – d.h. auf eine zwar möglicherweise deterministische, aber für Dritte nicht vorhersagbare Weise – durchgeführt. Die Funktion der Software darf nicht verändert werden. Dies schließt jedoch nicht aus, daß zumindest Programmabschnitte, die nicht absolut zeitkritisch sind, hinsichtlich ihrer Ausführungszeit verändert werden. Wenn z.B. funktionsneutrale Programmbefehle oder Sprungbefehle eingefügt oder gelöscht werden, beeinflußt dies die Ausführungsgeschwindigkeit des Programms. Eine solche Veränderung ist in der Regel nicht nur unschädlich, sondern sogar vorteilhaft, weil sie Angriffe durch Laufzeitanalysen erschwert.
  • Das erfindungsgemäße Verfahren kann sowohl innerhalb des tragbaren Datenträgers durch den Prozessor des Datenträgers als auch extern, z.B. in Zusammenhang mit der Herstellung oder Initialisierung oder Personalisierung des Datenträgers, ausgeführt werden. Im erstgenannten Fall greift der Prozessor des Datenträgers vorzugsweise auf die bereits in ihrer ersten Konfiguration im nichtflüchtigen überschreibbaren Speicher des Datenträgers befindliche Software zu und verändert diese, um die zweite Konfiguration zu erhalten. Dieser Vorgang kann einmalig zu Beginn der Lebensdauer des Datenträgers oder in Reaktion auf ein vorbestimmtes Ereignis durchgeführt werden. Wenn das erfindungsgemäße Verfahren extern ausgeführt wird, dient dies vorzugsweise dazu, eine Mehrzahl von Datenträgern mit individualisierter Software zu versorgen.
  • Das erfindungsgemäße Computerprogrammprodukt weist in einer ersten Ausgestaltung die Software in einer Mehrzahl unterschiedlich individualisierter Konfigurationen auf. In einer zweiten Ausgestaltung enthält das Computerprogrammprodukt Programmbefehle, die das erfindungsgemäße Verfahren implementieren. Ein derartiges Computerprogrammprodukt kann ein körperliches Medium sein, beispielsweise ein Halbleiterspeicher oder eine Diskette oder eine CD-ROM. Das Computerprogrammprodukt kann jedoch auch ein nicht-körperliches Medium sein, beispielsweise ein über ein Computernetzwerk übermitteltes Signal. Insbesondere kann das Computerprogrammprodukt bei der Herstellung oder Initialisierung oder Personalisierung oder während des Betriebs des tragbaren Datenträgers oder zur Programmierung eines Verarbeitungsrechners eingesetzt werden.
  • Die erfindungsgemäße programmgesteuerte Vorrichtung ist in einer ersten Ausgestaltung ein Verarbeitungsrechner zur Erzeugung einer Mehrzahl von unterschiedlich individualisierten Konfigurationen der Software und in einer zweiten Ausgestaltung ein tragbarer Datenträger, der die zur funktionsneutralen Veränderung der Software erforderliche Funktionalität aufweist. In bevorzugten Ausgestaltungen weist/weisen die Vorrichtung und/oder das Computerprogrammprodukt Merkmale auf, die den gerade beschriebenen und/oder den in den abhängigen Verfahrensansprüchen genannten Merkmalen entsprechen.
  • Weitere Merkmale, Vorteile und Aufgaben der Erfindung gehen aus der folgenden genauen Beschreibung mehrerer Ausführungsbeispiele und Ausführungsalternativen hervor. Es wird auf die schematischen Zeichnungen verwiesen:
  • 1 zeigt ein Blockdiagramm eines tragbaren Datenträgers nach einem Ausführungsbeispiel der Erfindung,
  • 2 veranschaulicht ein Beispiel einer erfindungsgemäßen Schutzmaßnahme,
  • 3 zeigt ein Ablaufdiagramm eines Verfahrens nach einem Ausführungsbeispiel der Erfindung, und
  • 4 veranschaulicht einen außerhalb des Datenträgers ausgeführten Vorgang des Erzeugens individualisierter Software.
  • Der in 1 dargestellte Datenträger 10 ist im vorliegenden Ausführungsbeispiel als Chipkarte ausgestaltet. Der Datenträger 10 weist auf einem einzigen Halbleiterchip einen Prozessor 12 und eine Kommunikationsschnittstelle 14 zur kontaktlosen oder kontaktgebundenen Kommunikation auf. Ferner enthält der Datenträger 10 einen als RAM ausgestalteten Arbeitsspeicher 16 und einen nichtflüchtigen überschreibbaren Speicher 18. Der nichtflüchtige überschreibbare Speicher 18 ist im vorliegenden Ausführungsbeispiel als Flash-Speicher ausgebildet; in Ausführungsalternativen kann jedoch eine andere Speichertechnologie, beispielsweise FeRAM, verwendet werden.
  • Im vorliegenden Ausführungsbeispiel weist der nichtflüchtige überschreibbare Speicher 18 ein Betriebssystem 20, mindestens ein Anwendungsprogramm 22 und einen freien Speicherbereich 24 auf. Ein Programmodul 26, das das im folgenden noch genau zu beschreibende Angriffsschutzverfahren implementiert, ist Teil des Betriebssystems 20. Die Darstellung der Speicherbelegung in 1 ist lediglich schematisch zu verstehen. In realen Implementierungen können das Betriebssystem 20, das mindestens eine Anwendungsprogramm 22 und der freie Speicherbereich 24 in ineinander verzahnten, nicht-zusammenhängenden Speicherabschnitten angeordnet sein.
  • 2 zeigt einen Ausschnitt des nichtflüchtigen überschreibbaren Speichers 18, der Software 28 enthält. Diese Software 28 wird durch das erfindungsgemäße Verfahren gegen Angriffe geschützt. Hierzu wird die Software 28 derart verändert, daß sich bei gleichbleibender Funktion der Software 28 eine neue Speicherbelegung im nichtflüchtigen überschreibbaren Speicher 18 ergibt. Im vorliegenden Ausführungsbeispiel ist die Software 28 das gesamte Betriebssystem 20 oder ein Teil davon; in Ausführungsvarianten kann die Software 28 jedoch – zusätzlich zum Betriebssystem 20 oder stattdessen – das Anwendungsprogramm 22 oder einen Teil davon umfassen. Auch das Modul 26, das das erfindungsgemäße Schutzverfahren implementiert, kann durch das Verfahren selbst geschützt werden und damit Teil der Software 28 sein.
  • In 2 ist die Software 28 links in einer ersten Konfiguration 30 gezeigt. Diese erste Konfiguration 30 der Software 28 wird durch einen Schritt des erfindungsgemäßen Verfahrens, der in 2 durch einen offenen Pfeil dargestellt ist, in eine zweite Konfiguration 32 umgewandelt. In dem in 2 gezeigten, einfachen Beispiel unterscheiden sich die beiden Konfigurationen 30, 32 dadurch, daß in der zweiten Konfiguration 32 ein funktionsneutraler Programmabschnitt 34 – z.B. zwei aufeinanderfolgende Befehle zur Negierung von Prozessorregistern – zwischen zwei in der ersten Konfiguration 30 direkt aufeinanderfolgende Abschnitte 36, 38 der Software 28 eingefügt wurde. Um Platz für den zusätzlichen Programmabschnitt 34 zu schaffen, wurde der Abschnitt 38 "nach hinten" verschoben, während der Abschnitt 36 an seiner ursprünglichen Stelle belassen wurde. Um die Software 28 funktionsfähig zu halten, wurden ferner Sprungziele und Referenzen in der gesamten Software 28 an die Verschiebung des Abschnitts 36 angepaßt.
  • Der erfindungsgemäße Vorgang der funktionsneutralen Veränderung der Software 28 wird durch das Modul 26 ausgeführt. Dieses Modul 26 weist im vorliegenden Ausführungsbeispiel fünf Hauptkomponenten auf, nämlich einen Sucher, einen Einfüger, einen Mischer, einen Optimierer und einen Relokator. Diese Komponenten werden durch eine ebenfalls im Modul 26 implementierte Steuerung aufgerufen und in ihrem Zusammenwirken gesteuert. Die prinzipielle Funktionsweise des Einfügers, Mischers, Optimierers und Relokators ist als solche z.B. aus dem technischen Gebiet des Compilerbaus bekannt.
  • Ein beispielhafter Ablauf des erfindungsgemäßen Verfahrens ist in 3 gezeigt. Das Verfahren wird von einem Ereignis 40 angestoßen. Das Ereignis 40 kann beispielsweise eine vorbestimmte Ausgabe eines Pseudozufallszahlengenerators ein, die bei jeder Transaktion mit einer Wahrscheinlichkeit von z.B. 1 % auftritt. Der Ablauf in 3 kann jedoch auch periodisch – z.B. nach jeder hundertsten Transaktion – aufgerufen werden. Alternativ oder zusätzlich kann das Ereignis 40 auch ein möglicher Manipulationsversuch – z.B. die Eingabe einer falschen Geheimzahl – oder der Empfang eines entsprechenden Befehls über die Kommunikationsschnittstelle 14 sein. Ferner kann vorgesehen sein, das Verfahren immer dann oder nur dann auszuführen, wenn keine anderen dringenden Aufgaben zur Bearbeitung durch den Datenträger 10 anstehen.
  • Nach dem Start des Verfahrens von 3 in Reaktion auf das Ereignis 40 wird zunächst in Schritt 42 der Sucher aufgerufen. Der Sucher verwaltet einen Suchzeiger 44, der, ausgehend von einem zufälligen Startwert, die Software 28 im nichtflüchtigen überschreibbaren Speicher 18 überstreicht. Allgemein identifiziert der Sucher Speicherbereiche im nichtflüchtigen überschreibbaren Speicher 18, die verschoben und/oder manipuliert werden dürfen. Dies ist wichtig, weil z.B. Speicherbereiche, in denen sich in den Adreßraum abgebildete Ein- und Ausgaberegister (memory mapped ports) befinden, nicht verschoben werden dürfen. Andere Speicherbereiche – z.B. zusammenhängende Datenbereiche – dürfen nur als Ganzes verschoben werden. Ferner kann die Software 28 Programmabschnitte enthalten, die zwar verschoben, aber nicht modifiziert werden dürfen, z.B. Programmabschnitte mit zwingend vorgegebener, fester Laufzeit.
  • In manchen Ausgestaltungen kann vorgesehen sein, daß der Sucher die verschiebbaren und/oder modifizierbaren Speicherabschnitte anhand einer Tabelle identifiziert, die bei der Herstellung des Datenträgers 10 vorgegeben wurde und, falls erforderlich, bei jedem Veränderungsschritt an die neue Konfiguration angepaßt wird. Alternativ oder zusätzlich kann vorgesehen sein, daß verschiebbare und/oder modifizierbare Programmcodeteile mit einem vorgegebenen Schlüsselwert (magic number) beginnen, durch den sie vom Sucher eindeutig identifizierbar sind. Schließlich kann der Sucher auch eine Analyse der Software 28 durchführen, um verschiebbare und/oder modifizierbare Abschnitte zu identifizieren. Die dazu erforderlichen Techniken sind als solche bekannt; jedoch wäre eine solche Analyse relativ aufwendig zu implementieren und auszuführen.
  • In Schritt 46 wird der Suchvorgang von Schritt 42 zufallsgesteuert wiederholt. Wenn in Schritt 46 ein Rücksprung zu Schritt 42 erfolgt, wird der aktuell gefundene Speicherabschnitt unverändert belassen, und ein neuer verschiebbarer und/oder modifizierbarer Abschnitt wird gesucht. Wenn in Schritt 46 kein Rücksprung erfolgt, wird das Verfahren in Schritt 48 mit dem zufälligen Aufruf des Einfügers (Schritt 50) oder des Mischers (Schritt 52) oder des Optimierers (Schritt 54) fortgesetzt.
  • Die Aufgabe des Einfügers besteht darin, den vorhandenen Programmcode an einer durch den Suchzeiger 44 angegebenen Stelle durch zusätzliche Befehle oder Befehlssequenzen, die keine Auswirkung auf die Funktion des Programmcodes haben, zu erweitern. Beispielsweise kann der Programmcode durch einen Sprungbefehl an eine Stelle, die einen sofortigen Rücksprung enthält, ergänzt werden. Weitere Beispiele für funktionsinvarianten Programmcode sind die Addition eines Wertes mit darauffolgender Subtraktion des gleichen Wertes oder die zweimalige aufeinanderfolgende Negie rung eines Prozessorregisters. Es können auch einzelne Maschinenbefehle durch funktionsidentische Befehle ersetzt werden, beispielsweise ein Sprungbefehl mit kurzer Sprungzielangabe (short jump) durch einen entsprechenden Sprungbefehl mit langer Sprungzielangabe (long jump). Insgesamt vergrößert sich in Schritt 50 durch die Einfügeoperation der Gesamtumfang des Programmcodes.
  • Der in Schritt 52 aufgerufene Mischer hat die Aufgabe, zwei Programmabschnitte funktionsinvariant zu vertauschen. Die beiden miteinander vertauschten Programmcodeteile werden durch entsprechende Sprungbefehle derart miteinander verbunden, daß sich die Ausführungsreihenfolge der einzelnen Programmbefehle – und damit die Funktion der Software 28 – nicht ändert. Wenn die zu vertauschenden Programmbefehle voneinander unabhängig sind, kann deren Ausführungsreihenfolge ohne Funktionsänderung vertauscht werden. In diesem Fall können die zusätzlichen Sprungbefehle weggelassen werden. Je nachdem, ob zusätzliche Sprungbefehle erforderlich sind oder nicht, kann sich durch die Ausfühung von Schritt 52 der Umfang des Programmcodes vergrößern oder gleich bleiben. In manchen Ausgestaltungen werden zusätzliche Sprungbefehle jedoch selbst dann eingefügt, wenn dies nicht unbedingt erforderlich wäre, weil die durch die Sprungbefehle hervorgerufene Änderung der Programmabläufe bei der Ausführung der Software 28 die Angriffssicherheit weiter erhöht.
  • Mit dem in Schritt 54 aufgerufenen Optimierer wird ein früher durch den Einfüger eingebrachter Programmcode wieder entfernt. Der Optimierer ist also das Gegenstück zum Einfüger. Der Optimierer kann funktionsinvarianten Programmcode erkennen und entfernen, wobei sich der Gesamtumfang des Programmcodes verkleinert. Es ist nicht zwingend erforderlich, daß alle vom Einfüger vorgenommenen Änderungen durch den Optimierer rückstandsfrei entfernt werden können.
  • Nachdem einer der Schritte 50 bis 54 ausgeführt worden ist – in Ausführungsalternativen können auch mehrere dieser Schritte kombiniert werden – wird in Schritt 56 der Relokator aufgerufen, um Sprungzieladressen und Referenzen – z.B. Zeigeradressen – in der gesamten Software 28 an die neue Speicherbelegung im nichtflüchtigen überschreibbaren Speicher 18 anzupassen.
  • Die bisher beschriebenen Vorgänge werden in den Schritten 58 und 60 zufallsgesteuert wiederholt, wobei Schritt 58 einen weiteren Einfüge- oder Misch- oder Optimierungsvorgang an der durch den Suchzeiger 44 angegebenen Stelle und Schritt 60 das Suchen eines neuen zu verändernden Programmabschnitts betrifft. Der zu erwartende Umfang der Veränderungen kann durch Variation der Zufallswahrscheinlichkeiten bei den Schritten 46, 48, 58 und 60 gesteuert werden. Diese Zufallswahrscheinlichkeiten können in manchen Ausgestaltungen kartenindividuell und/oder individuell zu jeder Abfrage parametrisiert werden.
  • Insgesamt wird durch das in 3 gezeigte Verfahren die Software 28 stellenweise verändert, um eine neue Speicherbelegung im nichtflüchtigen überschreibbaren Speicher 18 zu erhalten. Die geänderte Software ist nach wie vor funktionsfähig und funktionsidentisch zu der urspünglichen Software.
  • Bei dem gesamten Verfahrensablauf von 3 muß darauf geachtet werden, daß Ablaufsequenzen, die Schreibzugriffe auf den nichtflüchtigen überschreibbaren Speicher 18 umfassen, atomar, also entweder ganz oder gar nicht, ausgeführt werden. Dies kann durch eine geeignete Verwaltung von Rückführdaten (rollback data) erzielt werden. Durch die atomare Verfahrensausführung wird sichergestellt, daß im Falle einer plötzlichen Spannungsunterbrechung während der Ausführung des Verfahrens von 3 die gerade veränderte Software 28 in einem funktionsfähigen oder zumindest wiederherstellungsfähigen Zustand verbleibt.
  • In manchen Ausführungsformen ist das Verfahren derart ausgestaltet, daß die Software 28 bei den einzelnen Veränderungsvorgängen möglichst kompakt bleibt. Es sind jedoch auch Ausführungsvarianten vorgesehen, bei denen der gesamte zur Verfügung stehende Speicherplatz im nichtflüchtigen überschreibbaren Speicher 18 genutzt wird. Hierdurch kann eine besonders gute Verschleierungswirkung erzielt werden. Wenn zusätzlicher Speicher benötigt wird – z.B. von dem Anwendungsprogramm 22 –, kann dieser durch einen Aufruf des Optimierers gesucht und freigegeben werden.
  • In einer Ausführungsalternative wird das Verfahren gemäß 3 nicht oder nicht nur während des regulären Betriebs des Datenträgers 10, sondern auch oder ausschließlich beim Laden des Betriebssystems 20 und/oder des Anwendungsprogramms 22 in den nichtflüchtigen überschreibbaren Speicher 18 angestoßen. Das Verfahren selbst wird in dieser Ausführungsalternative nach wie vor durch den Prozessor 12 des Datenträgers 10 ausgeführt. Es sind jedoch weitere Ausgestaltungen der Erfindung vorgesehen, in denen ein Verfahren wie in 3 nicht innerhalb des Datenträgers 10, sondern extern ausgeführt wird. Eine derartige Ausführungsform ist in 4 veranschaulicht.
  • Der Ablauf von 4 geht von der Software 28 ihrer ersten Konfiguration 30 aus. Ein Verarbeitungsrechner 70, der als leistungsfähiger Computer mit mindestens einem Prozessor ausgestaltet ist und eine sichere Umgebung bereitstellt, führt ein Verfahren wie in 3 aus, um die Software 28 in eine Vielzahl unterschiedlicher zweiter Konfigurationen 32A, 32B, 32C, ... zu überführen. Jede dieser zweiten Konfigurationen 32A, 32B, 32C, ... – im folgenden zusammenfassend mit 32x bezeichnet – ist für einen einzigen Datenträger 10 vorgesehen. Mit anderen Worten wird eine kartenindividuelle zweite Konfiguration 32x der Software 28 erstellt. In einer Ausführungsalternative wird jede zweite Konfiguration 32x nicht nur für einen einzigen Datenträger 10, sondern für eine relativ kleine Gruppe von Datenträgern – z.B. zehn Datenträger – verwendet.
  • Die diversen zweiten Konfigurationen 32x der Software 28 können auf einem computerlesbaren Medium 72 – z.B. einer Festplatte oder CD-ROM – zwischengespeichert werden. Bei der Herstellung oder Initialisierung oder Personalisierung eines Datenträgers 10 wird die individualisierte Software 28 über ein Terminal 74 in den Datenträger 10 geladen. Hierbei kann der Datenträger 10 nach dem Stand der Technik – also ohne die Funktionalität, weitere Veränderungen der Software ereignisgesteuert durchzuführen – ausgestaltet sein. Der Datenträger 10 kann aber auch gemäß der vorliegenden Erfindung ausgestaltet sein und bei Bedarf die in ihm gespeicherte Software 28 nochmals verändern.
  • In einer besonders einfachen Realisierung des in 4 gezeigten Vorgangs ist vorgesehen, die einzelnen kompilierten Programmodule, die in ihrer Summe die Software 28 bilden, vor dem Laden in den nichtflüchtigen überschreibbaren Speicher 18 des Datenträgers 10 in zufälliger Reihenfolge zu linken. Durch diese Vorgehensweise läßt sich eine kartenindividuelle Belegung des nichtflüchtigen überschreibbaren Speichers 18 mit sehr geringem Aufwand realisieren.

Claims (22)

  1. Verfahren zum Schutz von Software (28), die zur Ausführung durch einen Prozessor (12) eines tragbaren Datenträgers (10) vorgesehen ist oder durch einen solchen Prozessor (12) ausgeführt wird, gegen Angriffe, wobei die Software (28) zum Laden in einen nichtflüchtigen überschreibbaren Speicher (18) des tragbaren Datenträgers (10) vorgesehen ist oder sich in einen solchen Speicher (18) befindet, dadurch gekennzeichnet, daß ausgehend von einer lauffähigen ersten Konfiguration (30) der Software (28) zumindest ein Abschnitt (38) der Software (28) zumindest hinsichtlich seiner Position verändert wird, um mindestens eine lauffähige zweite Konfiguration (32, 32x) der Software (28) zu erhalten, die bei gleicher Funktion eine veränderte Speicherbelegung im nichtflüchtigen überschreibbaren Speicher (18) des tragbaren Datenträgers (10) aufweist.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Veränderung der Software (28) von dem Prozessor (12) des tragbaren Datenträgers (10) ausgeführt wird, während sich die Software (28) in dem nichtflüchtigen überschreibbaren Speicher (18) des Datenträgers (10) befindet.
  3. Verfahren nach Anspruch 1 oder Anspruch 2, dadurch gekennzeichnet, daß der Vorgang der Veränderung der Software (28) durch ein vorbestimmtes Ereignis (40) angestoßen wird.
  4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß das vorbestimmte Ereignis (40) ein Zufallsereignis und/oder ein zählergesteuertes Ereignis und/oder ein durch einen möglichen Manipulationsversuch ausgelöstes Ereignis und/oder ein extern ausgelöstes Ereignis ist.
  5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die Veränderung der Software (28) von einem Prozessor eines externen Verarbeitungsrechners (70) ausgeführt wird, um aus der vorgegebenen ersten Konfiguration (30) der Software (28) mindestens eine für den Datenträger (10) oder eine Gruppe von Datenträgern (10) individuelle zweite Konfiguration (32, 32x) zu erhalten.
  6. Verfahren zur Erzeugung von Software (28), die zur Ausführung durch eine Mehrzahl von tragbaren Datenträgern (10) vorgesehen ist, wobei jeder der tragbaren Datenträger (10) einen Prozessor (12) und mindestens einen nichtflüchtigen überschreibbaren Speicher (18) aufweist, dadurch gekennzeichnet, daß ausgehend von einer lauffähigen ersten Konfiguration (30) der Software (28) eine Mehrzahl von lauffähigen zweiten Konfigurationen (32, 32x) der Software (28) erzeugt wird, indem jeweils zumindest ein Abschnitt (38) der Software (28) zumindest hinsichtlich seiner Position verändert wird, um je eine lauffähige zweite Konfiguration (32, 32x) der Software (28) zu erhalten, die bei gleicher Funktion eine veränderte Speicherbelegung im nichtflüchtigen überschreibbaren Speicher (18) des tragbaren Datenträgers (10) aufweist, wobei jede zweite Konfiguration (32, 32x) der Software (28) aus der Mehrzahl der so erzeugten zweiten Konfigurationen (32, 32x) zum Laden in den nichtflüchtigen überschreibbaren Speicher (18) je eines der tragbaren Datenträger (10) oder je einer Gruppe von tragbaren Datenträgern (10) vorgesehen ist.
  7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß das Verfahren ferner den Schritt aufweist, jede zweite Konfiguration (32, 32x) der Software (28) aus der Mehrzahl der erzeugten zweiten Konfigurationen (32, 32x) in den nichtflüchtigen überschreibbaren Speicher (18) je eines der tragbaren Datenträger (10) oder je einer Gruppe von tragbaren Datenträgern (10) zu laden.
  8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß die Veränderung der Software (28) zumindest eine Verschiebung eines Abschnitts (38) der Software (28) und/oder eine Vertauschung zweier Abschnitte der Software (28) umfaßt.
  9. Verfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß die Veränderung der Software (28) einen vorbereitenden Schritt (42) des Suchens nach einem verschiebbaren und/oder modifizierbaren Abschnitt der Software (28) umfaßt.
  10. Verfahren nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß die Veränderung der Software (28) das Einfügen von funktionsneutralen Befehlen und/oder Befehlssequenzen umfaßt.
  11. Verfahren nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, daß die Veränderung der Software (28) das Entfernen von funktionsneutralen Befehlen und/oder Befehlssequenzen umfaßt.
  12. Verfahren nach einem der Ansprüche 1 bis 11, dadurch gekennzeichnet, daß die Veränderung der Software (28) einen abschließenden Schritt (56) des Anpassens von Sprungzieladressen und/oder Referenzen an die veränderte Speicherbelegung umfaßt.
  13. Verfahren nach einem der Ansprüche 1 bis 12, dadurch gekennzeichnet, daß die Veränderung der Software (28) zufallsgesteuert durchgeführt wird.
  14. Verfahren nach einem der Ansprüche 1 bis 13, dadurch gekennzeichnet, daß durch die Veränderung der Software (28) das Zeitverhalten bei der Ausführung der Software (28) verändert wird.
  15. Verfahren nach einem der Ansprüche 1 bis 14, dadurch gekennzeichnet, daß bei der Veränderung der Software (28) der ganze zur Verfügung stehende Speicherbereich genutzt wird.
  16. Verfahren nach einem der Ansprüche 1 bis 15, dadurch gekennzeichnet, daß die Software (28) ein Betriebssystem (20) des tragbaren Datenträgers (10) oder ein Teil davon und/oder ein von dem Prozessor (12) des Datenträgers (10) auszuführendes Anwendungsprogramm (22) oder ein Teil davon ist.
  17. Verfahren nach einem der Ansprüche 1 bis 16, dadurch gekennzeichnet, daß der nichtflüchtige überschreibbare Speicher (18) ein Flash-Speicher oder ein FeRAM ist.
  18. Verfahren nach einem der Ansprüche 1 bis 17, dadurch gekennzeichnet, daß der Datenträger (10) frei von maskenprogrammiertem Festwertspeicher für Programmcode ist.
  19. Computerprogrammprodukt, das Programmbefehle aufweist, die mindestens einen Prozessor zur Ausführung eines Verfahrens nach einem der Ansprüche 1 bis 18 veranlassen.
  20. Computerprogrammprodukt, das Software (28), die zur Ausführung durch eine Mehrzahl von tragbaren Datenträgern (10) vorgesehen ist, in einer Mehrzahl von zweiten Konfigurationen (32, 32x), die durch ein Verfahren nach Anspruch 6 oder einem der Ansprüche 8 bis 18, jeweils rückbezogen auf Anspruch 6, erzeugt worden sind, enthält.
  21. Programmgesteuerte Vorrichtung (10, 70), die dazu eingerichtet ist, ein Verfahren nach einem der Ansprüche 1 bis 18 auszuführen.
  22. Mehrzahl von tragbaren Datenträgern (10), die jeweils einen Prozessor (12) und mindestens einen nichtflüchtigen überschreibbaren Speicher (18) aufweisen, wobei der nichtflüchtige überschreibbare Speicher (18) eine für jeden Datenträger (10) oder jede Gruppe von Datenträgern (10) individuelle Software (28) enthält, die durch ein Verfahren nach Anspruch 6 oder einem der Ansprüche 7 bis 18, jeweils rückbezogen auf Anspruch 6, erzeugt worden ist.
DE102004011488A 2004-03-09 2004-03-09 Schutz von Software gegen Angriffe Expired - Fee Related DE102004011488B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102004011488A DE102004011488B4 (de) 2004-03-09 2004-03-09 Schutz von Software gegen Angriffe

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102004011488A DE102004011488B4 (de) 2004-03-09 2004-03-09 Schutz von Software gegen Angriffe

Publications (2)

Publication Number Publication Date
DE102004011488A1 true DE102004011488A1 (de) 2005-10-13
DE102004011488B4 DE102004011488B4 (de) 2007-07-05

Family

ID=34982715

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004011488A Expired - Fee Related DE102004011488B4 (de) 2004-03-09 2004-03-09 Schutz von Software gegen Angriffe

Country Status (1)

Country Link
DE (1) DE102004011488B4 (de)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006038877A1 (de) * 2006-08-18 2008-04-03 Giesecke & Devrient Gmbh Manipulationsgesicherte Einheit, Verfahren für eine manipulationsgesicherte Einheit sowie Speichermedium
EP1995682A1 (de) * 2007-05-21 2008-11-26 Stmicroelectronics Sa Personalisierung eines Mikroprozessors und Datensicherungsverfahren
WO2010128060A1 (de) * 2009-05-05 2010-11-11 Giesecke & Devrient Gmbh Verfahren zum schutz von auf einem tragbaren datenträger gespeicherter software und tragbarer datenträger
WO2014023431A1 (de) * 2012-08-10 2014-02-13 Giesecke & Devrient Gmbh Verfahren zum erzeugen von ausf?hrbarem programmcode

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012008988A1 (de) 2012-05-04 2013-11-07 Giesecke & Devrient Gmbh Portabler Datenträger

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000039956A1 (en) * 1998-12-30 2000-07-06 Rainbow Technologies, Inc. A method of software protection using a random code generator
WO2002046890A2 (en) * 2000-12-08 2002-06-13 Cloakware Corporation System and method for protecting computer software from a white box attack
US20020188932A1 (en) * 2001-06-07 2002-12-12 Robert Hundt Optimizing an executable computer program having address-bridging code segments

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000072112A2 (en) * 1999-05-12 2000-11-30 Fraunhofer Crcg, Inc. Obfuscation of executable code
CA2447451C (en) * 2000-05-12 2013-02-12 Xtreamlok Pty. Ltd. Information security method and system
US7383443B2 (en) * 2002-06-27 2008-06-03 Microsoft Corporation System and method for obfuscating code using instruction replacement scheme

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000039956A1 (en) * 1998-12-30 2000-07-06 Rainbow Technologies, Inc. A method of software protection using a random code generator
WO2002046890A2 (en) * 2000-12-08 2002-06-13 Cloakware Corporation System and method for protecting computer software from a white box attack
US20020188932A1 (en) * 2001-06-07 2002-12-12 Robert Hundt Optimizing an executable computer program having address-bridging code segments

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006038877A1 (de) * 2006-08-18 2008-04-03 Giesecke & Devrient Gmbh Manipulationsgesicherte Einheit, Verfahren für eine manipulationsgesicherte Einheit sowie Speichermedium
DE102006038877B4 (de) * 2006-08-18 2018-01-25 Giesecke+Devrient Mobile Security Gmbh Manipulationsgesicherte Einheit, Verfahren für eine manipulationsgesicherte Einheit sowie Speichermedium
EP1995682A1 (de) * 2007-05-21 2008-11-26 Stmicroelectronics Sa Personalisierung eines Mikroprozessors und Datensicherungsverfahren
WO2010128060A1 (de) * 2009-05-05 2010-11-11 Giesecke & Devrient Gmbh Verfahren zum schutz von auf einem tragbaren datenträger gespeicherter software und tragbarer datenträger
WO2014023431A1 (de) * 2012-08-10 2014-02-13 Giesecke & Devrient Gmbh Verfahren zum erzeugen von ausf?hrbarem programmcode

Also Published As

Publication number Publication date
DE102004011488B4 (de) 2007-07-05

Similar Documents

Publication Publication Date Title
DE19633466C2 (de) Nachinitialisierung von Chipkarten
DE19536169A1 (de) Multifunktionale Chipkarte
DE102009041176B4 (de) Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode
DE10162306A1 (de) Verfahren und Anordnung zur Verifikation von NV-Fuses sowie ein entsprechendes Computerprogrammprodukt und ein entsprechendes computerlesbares Speichermedium
EP1883906B1 (de) Tragbarer datenträger mit sicherer datenverarbeitung
DE10313318A1 (de) Kontrollierte Ausführung eines für eine virtuelle Maschine vorgesehenen Programms auf einem tragbaren Datenträger
DE10324337B4 (de) Rechnersystem und zugehöriges Verfahren zum Durchführen eines Sicherheitsprogramms
DE102004011488B4 (de) Schutz von Software gegen Angriffe
DE10340861A1 (de) Prozessorschaltung und Verfahren zum Zuordnen eines Logikchips zu einem Speicherchip
EP1338970B1 (de) Verfahren und Anordnung zur Zugriffssteuerung auf EEPROMs sowie ein entsprechendes Computerprogrammprodukt und ein entsprechendes computerlesbares Speichermedium
EP1439446A1 (de) Verfahren zum Erweitern eines Programms um eine Kopierschutzfunktion
DE102006037016B4 (de) Pseudo-Zufallszahlengenerator für eine Chipkarte
DE102018217016A1 (de) Ein-Chip-System und Sicherheitsschaltung mit einem derartigen Ein-Chip-System
DE10164419A1 (de) Verfahren und Anordnung zum Schutz von digitalen Schaltungsteilen
DE102005027709A1 (de) Verfahren zum Betreiben eines tragbaren Datenträgers
EP3215957B1 (de) Chipkarte, chipkartensystem und verfahren zum zugriff auf eine chipkarte
EP1569089A2 (de) Verfahren zum Erzeugen von Zufallszahlen in einem tragbaren Datenträger
DE102004058882A1 (de) Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode
DE102004047191A1 (de) Manipulationsgeschütztes Mikroprozessorsystem und Betriebsverfahren dafür
DE10336225B3 (de) Zustandskennzeichen (Flag) für einen bezüglich Löschen und Schreiben asymmetrischen Speicher
DE102014113441A1 (de) Schutz vor Software-Komponenten mittels Verschlüsselung
EP3175383B1 (de) Verfahren zur änderung der kontrolldaten einer chipkarte und chipkartensystem
EP1566776B1 (de) Verfahren zum sicheren Betrieb eines tragbaren Datenträgers
DE10319299A1 (de) Optimierung und Ausführung eines Programms
DE10127181A1 (de) Sicherheitsmodul, Verfahren zum Konfigurieren desselben und Verfahren und Vorrichtung zum Herstellen desselben

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R081 Change of applicant/patentee

Owner name: GIESECKE+DEVRIENT MOBILE SECURITY GMBH, DE

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

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee