DE102004011488B4 - Schutz von Software gegen Angriffe - Google Patents

Schutz von Software gegen Angriffe Download PDF

Info

Publication number
DE102004011488B4
DE102004011488B4 DE102004011488A DE102004011488A DE102004011488B4 DE 102004011488 B4 DE102004011488 B4 DE 102004011488B4 DE 102004011488 A DE102004011488 A DE 102004011488A DE 102004011488 A DE102004011488 A DE 102004011488A DE 102004011488 B4 DE102004011488 B4 DE 102004011488B4
Authority
DE
Germany
Prior art keywords
software
configuration
memory
data carrier
portable data
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.)
Expired - Fee Related
Application number
DE102004011488A
Other languages
English (en)
Other versions
DE102004011488A1 (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

Verfahren zum Schutz von Software (28), die zur Ausführung durch einen Prozessor (12) eines tragbaren Datenträgers (10) vorgesehen ist, gegen Angriffe, wobei die Software (28) zum Laden in einen nichtflüchtigen überschreibbaren Speicher (18) des tragbaren Datenträgers (10) vorgesehen ist, wobei ausgehend von einer ersten Konfiguration (30) der Software (28) zumindest ein Abschnitt (38) der Software (28) zumindest hinsichtlich seiner Position verändert wird, um mindestens eine 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, dadurch gekennzeichnet, daß
die erste Konfiguration (30) und die zweite Konfiguration (32, 32x) durch den Prozessor ausführbare Konfigurationen der Software sind, die zweite Konfiguration (32, 32x) für das Laden in den Datenträger oder in eine Gruppe von Datenträgern eine für den Datenträger oder die Gruppe von Datenträgern individuelle Konfiguration der Software (28) ist und
die Veränderung der...

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, Hauser 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.
  • WO 02/46890 A2 zeigt ein Verfahren zum Schutz von Software gegen Angriffe im Sinne des Oberbegriffs von Patentanspruch 1.
  • Um eine Dekompilation von frei auf einem Computer zugänglicher Computersoftware zu verhindern, ist es aus US 2004/0003264 A1 und WO 00/72112 A2 bekannt, einzelne Instruktionen der Computersoftware zu maskieren und die zugehörige Demaskierungsinformation verschlüsselt auf dem Computer abzulegen. US 2002/0016918 A1 schlägt ergänzend vor zufällig ausgewählte einzelne Instruktionen durch gleichwirkende Instruktionen zu ersetzen, um eine Dekompilation zu erschweren.
  • Eine auf einem Computer ausführbare Software zum Schutz von Anwendungsprogrammen wird in WO 00/39956 A1 beschrieben. Mit Hilfe eines zufällig gesteuerten Quellcodegenerators werden über die Schritte des Kompilierens und Linkens individuelle Softwareversionen erstellt, die auf dem jeweiligen Computer zum Schutz von Anwendungsprogrammen ausführbar sind.
  • 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 gelöst durch ein Verfahren zum Schutz von Software mit den Merkmalen des Anspruchs 1, ein Computerprogrammprodukt gemäß Anspruch 17 und eine programmgesteuerte Vorrichtung gemäß Anspruch 18.
  • 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 Einzelheiten und Vorteile 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 (18)

  1. Verfahren zum Schutz von Software (28), die zur Ausführung durch einen Prozessor (12) eines tragbaren Datenträgers (10) vorgesehen ist, gegen Angriffe, wobei die Software (28) zum Laden in einen nichtflüchtigen überschreibbaren Speicher (18) des tragbaren Datenträgers (10) vorgesehen ist, wobei ausgehend von einer ersten Konfiguration (30) der Software (28) zumindest ein Abschnitt (38) der Software (28) zumindest hinsichtlich seiner Position verändert wird, um mindestens eine 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, dadurch gekennzeichnet, daß die erste Konfiguration (30) und die zweite Konfiguration (32, 32x) durch den Prozessor ausführbare Konfigurationen der Software sind, die zweite Konfiguration (32, 32x) für das Laden in den Datenträger oder in eine Gruppe von Datenträgern eine für den Datenträger oder die Gruppe von Datenträgern individuelle Konfiguration der Software (28) ist und die Veränderung der Software (28) einen vorbereitenden Schritt (42) des Identifizierens des Abschnitts als einen verschiebbaren Abschnitt der Software (28) anhand einer vorgegebenen Information umfaßt.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Veränderung der Software (28) von einem Prozessor eines externen Verarbeitungsrechners (70) ausgeführt wird.
  3. Verfahren nach einem der Ansprüche 1 oder 2, dadurch gekennzeichnet, daß eine Mehrzahl von lauffähigen zweiten Konfigurationen (32, 32x) der Software (28) für eine Mehrzahl von tragbaren Datenträgern (10) erzeugt wird, 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.
  4. Verfahren nach Anspruch 3, 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.
  5. Verfahren nach einem der Ansprüche 1 bis 4, 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.
  6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß als die vorgegebene Information eine Tabelle verwendet wird.
  7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß die Veränderung der Software (28) das Einfügen von funktionsneutralen Befehlen und/oder Befehlssequenzen umfaßt.
  8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß die Veränderung der Software (28) das Entfernen von funktionsneutralen Befehlen und/oder Befehlssequenzen umfaßt.
  9. Verfahren nach einem der Ansprüche 1 bis 8, 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.
  10. Verfahren nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß die Veränderung der Software (28) zufallsgesteuert durchgeführt wird.
  11. Verfahren nach einem der Ansprüche 1 bis 10, dadurch gekennzeichnet, daß durch die Veränderung der Software (28) das Zeitverhalten bei der Ausführung der Software (28) verändert wird.
  12. Verfahren nach einem der Ansprüche 1 bis 11, dadurch gekennzeichnet, daß bei der Veränderung der Software (28) der ganze zur Verfügung stehende Speicherbereich genutzt wird.
  13. Verfahren nach einem der Ansprüche 1 bis 12, dadurch gekennzeichnet, daß die Software (28) ein Betriebssystem (20) des tragbaren Datenträgers (10) oder ein Teil davon und/oder ein von dem Prozes sor (12) des Datenträgers (10) auszuführendes Anwendungsprogramm (22) oder ein Teil davon ist.
  14. Verfahren nach einem der Ansprüche 1 bis 13, dadurch gekennzeichnet, daß der nichtflüchtige überschreibbare Speicher (18) ein Flash-Speicher oder ein FeRAM ist.
  15. Verfahren nach einem der Ansprüche 1 bis 14, dadurch gekennzeichnet, daß der Datenträger (10) frei von maskenprogrammiertem Festwertspeicher für Programmcode ist.
  16. Verfahren nach einem der Ansprüche 1 bis 15, dadurch gekennzeichnet, daß als die vorgegebene Information ein Schlüsselwort verwendet wird, mit welchem verschiebbare und/oder modifizierbare Abschnitte der Software beginnen.
  17. Computerprogrammprodukt, das Programmbefehle aufweist, die mindestens einen Prozessor zur Ausführung eines Verfahrens nach einem der Ansprüche 1 bis 16 veranlassen.
  18. Programmgesteuerte Vorrichtung (10, 70), die dazu eingerichtet ist, ein Verfahren nach einem der Ansprüche 1 bis 16 auszuführen.
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 DE102004011488A1 (de) 2005-10-13
DE102004011488B4 true 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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009019981A1 (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
EP2660747A1 (de) 2012-05-04 2013-11-06 Giesecke & Devrient GmbH Sicherheitsmodul

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
DE102012015899A1 (de) * 2012-08-10 2014-02-13 Giesecke & Devrient Gmbh Verfahren zum Erzeugen von ausführbarem Programmcode

Citations (6)

* 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
WO2000072112A2 (en) * 1999-05-12 2000-11-30 Fraunhofer Crcg, Inc. Obfuscation of executable code
US20020016918A1 (en) * 2000-05-12 2002-02-07 David Tucker Information security method and system
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
US20040003264A1 (en) * 2002-06-27 2004-01-01 Pavel Zeman System and method for obfuscating code using instruction replacement scheme

Patent Citations (6)

* 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
WO2000072112A2 (en) * 1999-05-12 2000-11-30 Fraunhofer Crcg, Inc. Obfuscation of executable code
US20020016918A1 (en) * 2000-05-12 2002-02-07 David Tucker Information security method and system
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
US20040003264A1 (en) * 2002-06-27 2004-01-01 Pavel Zeman System and method for obfuscating code using instruction replacement scheme

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009019981A1 (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
EP2660747A1 (de) 2012-05-04 2013-11-06 Giesecke & Devrient GmbH Sicherheitsmodul
DE102012008988A1 (de) 2012-05-04 2013-11-07 Giesecke & Devrient Gmbh Portabler Datenträger

Also Published As

Publication number Publication date
DE102004011488A1 (de) 2005-10-13

Similar Documents

Publication Publication Date Title
DE102009041176B4 (de) Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode
DE19536548A1 (de) Vorrichtung und Verfahren zur vereinfachten Erzeugung von Werkzeugen zur Initialisierung und Personalisierung von und zur Kommunikation mit einer Chipkarte
DE19536169A1 (de) Multifunktionale Chipkarte
EP1883906B1 (de) Tragbarer datenträger mit sicherer datenverarbeitung
DE19633466A1 (de) Nachinitialisierung von Chipkarten
DE10324337B4 (de) Rechnersystem und zugehöriges Verfahren zum Durchführen eines Sicherheitsprogramms
DE10313318A1 (de) Kontrollierte Ausführung eines für eine virtuelle Maschine vorgesehenen Programms auf einem tragbaren Datenträger
DE102004011488B4 (de) Schutz von Software gegen Angriffe
DE10340861A1 (de) Prozessorschaltung und Verfahren zum Zuordnen eines Logikchips zu einem Speicherchip
EP1439446A1 (de) Verfahren zum Erweitern eines Programms um eine Kopierschutzfunktion
DE102006037016B4 (de) Pseudo-Zufallszahlengenerator für eine Chipkarte
DE10162308A1 (de) Verfahren und Anordnung zur Zugriffssteuerung auf EEPROMs sowie ein entsprechendes Computerprogrammprodukt und eine entsprechendes computerlesbares Speichermedium
DE10320062A1 (de) Speicherverwaltung bei einem tragbaren Datenträger
DE10164419A1 (de) Verfahren und Anordnung zum Schutz von digitalen Schaltungsteilen
DE19716015A1 (de) Einbringen von Information auf einer Chipkarte
WO2006061141A1 (de) Erzeugen von programmcode in einem ladeformat und bereitstellen von ausführbarem programmcode
DE102005027709A1 (de) Verfahren zum Betreiben eines tragbaren Datenträgers
EP3215957B1 (de) Chipkarte, chipkartensystem und verfahren zum zugriff auf eine chipkarte
DE102007027935A1 (de) Tragbarer Datenträger und Verfahren zur Personalisierung eines tragbaren Datenträgers
EP1569089A2 (de) Verfahren zum Erzeugen von Zufallszahlen in einem tragbaren Datenträger
DE102014113441A1 (de) Schutz vor Software-Komponenten mittels Verschlüsselung
DE102005063499B4 (de) Compiliervorrichtung und Verfahren zum Compilieren
DE10127181A1 (de) Sicherheitsmodul, Verfahren zum Konfigurieren desselben und Verfahren und Vorrichtung zum Herstellen desselben
DE102008020343A1 (de) Portabler Datenträger
DE10319299A1 (de) Optimierung und Ausführung eines Programms

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