DE102004058882A1 - Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode - Google Patents
Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode Download PDFInfo
- Publication number
- DE102004058882A1 DE102004058882A1 DE102004058882A DE102004058882A DE102004058882A1 DE 102004058882 A1 DE102004058882 A1 DE 102004058882A1 DE 102004058882 A DE102004058882 A DE 102004058882A DE 102004058882 A DE102004058882 A DE 102004058882A DE 102004058882 A1 DE102004058882 A1 DE 102004058882A1
- Authority
- DE
- Germany
- Prior art keywords
- program code
- library
- disk
- data carrier
- format
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000004590 computer program Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 32
- 230000027455 binding Effects 0.000 claims description 22
- 238000009739 binding Methods 0.000 claims description 20
- 238000013500 data storage Methods 0.000 abstract 1
- 230000018109 developmental process Effects 0.000 description 15
- 239000000969 carrier Substances 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000004090 dissolution Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Bei einem Verfahren zum Erzeugen von Programmcode (24, 30) in einem Ladeformat für einen tragbaren Datenträger (12) wird eine Pseudobibliothek (20) verwendet, die sich von einer auf dem Datenträger (12) befindlichen Bibliothek (38) dergestalt unterscheidet, daß zumindest manche Interna der auf dem Datenträger befindlichen Bibliothek (38) in der Pseudobibliothek (12) fehlen oder verborgen oder verschleiert sind. Bei einem Verfahren zum Bereitstellen von ausführbarem Programmcode (40) in dem tragbaren Datenträger (12) wird der Programmcode (24, 30) im Ladeformat gegenüber der auf dem Datenträger (12) befindlichen Bibliothek (38) gebunden. Eine Vorrichtung (10, 12) und ein Computerprogrammprodukt weisen entsprechende Merkmale auf. Durch die Erfindung wird eine sichere und vertraulichkeitswahrende Technik geschaffen, die das Erzeugen von Programmcode (24, 30) in einem Ladeformat für einen tragbaren Datenträger (12) und das Bereitstellen von ausführbarem Programmcode (40) in dem tragbaren Datenträger (12) gestattet.
Description
- Die Erfindung betrifft allgemein das Gebiet der tragbaren Datenträger und der Erstellung von Software für solche Datenträger. Insbesondere betrifft die Erfindung das Gebiet, Programmcode für einen tragbaren Datenträger zu erzeugen, den Programmcode in den Datenträger zu laden und den Programmcode zur Ausführung durch einen Prozessor des Datenträgers bereitzustellen. Tragbare Datenträger im Sinne des vorliegenden Dokuments können als Chipkarten (Smart Cards) oder als kompakte Chipmodule und in manchen Ausführungsformen der Erfindung auch als ressourcenbeschränkte Systeme in anderen Bauformen ausgestaltet sein.
- Im Zuge der stetigen technischen Entwicklung sind tragbare Datenträger in den letzten Jahren immer leistungsfähiger geworden. Dies betrifft sowohl die von der Hardware zur Verfügung gestellte Rechenleistung und den Speicherplatz als auch die vom Betriebssystem bereitgestellten Funktionen. Moderne tragbare Datenträger weisen eine Funktionalität zum Nachladen von Programmcode – also zum Laden von Programmcode während des Betriebs des Datenträgers – auf. Datenträger, in die Anwendungsprogramme nachgeladen werden können, sind schon seit einiger Zeit bekannt. Gegenwärtig befinden sich jedoch auch Datenträger in der Entwicklung, die ein Nachladen von Teilen des Betriebssystems, z.B. von Treibern, Bibliotheken oder Funktionsmodulen, erlauben. Es ist zu erwarten, daß sich diese Nachlademöglichkeit in Zukunft zu einem wichtigen Bestandteil flexibler Betriebssysteme für tragbare Datenträger entwickeln wird.
- Allgemein sind bei tragbaren Datenträgern die Aspekte der Sicherheit und des Ausspähungsschutzes wichtige Faktoren, weil tragbare Datenträger häufig für sicherheitskritische Anwendungen eingesetzt werden und durch eine unbefugte Verwendung oder eine Ausspähung hoher Schaden entstehen könnte. Insbesondere besteht bei Datenträgern, die das Nachladen von Programmcode erlauben, das Problem, möglichst keine Interna des Datenträgers preiszugeben. Insbesondere soll vermieden werden, daß der externe Entwickler des nachzuladenden Programmcodes Information über den internen Aufbau und interne Programmstrukturen des Datenträgers benötigt oder ermitteln kann. So sollen beispielsweise plattformabhängige Funktionen des Datenträgers möglichst verborgen bleiben, auch wenn der nachzuladende Programmcode diese Funktionen letztendlich nutzt.
- Die Erfindung hat die Aufgabe, das gerade genannte Problem ganz oder zum Teil zu lösen. Insbesondere soll durch die Erfindung eine sichere und vertraulichkeitswahrende Technik geschaffen werden, die das Erzeugen von Programmcode in einem Ladeformat für einen tragbaren Datenträger und das Bereitstellen von ausführbarem Programmcode in dem tragbaren Datenträger gestattet.
- Erfindungsgemäß wird diese Aufgabe ganz oder zum Teil gelöst durch ein Verfahren mit den Merkmalen von Anspruch 1 bzw. Anspruch 4, eine Vorrichtung mit den Merkmalen von Anspruch 16 und ein Computerprogrammprodukt mit den Merkmalen von Anspruch 17 bzw. Anspruch 18. Die abhängigen Ansprüche definieren bevorzugte Ausgestaltungen der Erfindung.
- Die Erfindung geht von der Grundüberlegung aus, außerhalb des Datenträgers lediglich eine Pseudobibliothek bereitzustellen, die sich von einer auf dem Datenträger befindlichen Bibliothek dergestalt unterscheidet, daß zumindest manche Interna der auf dem Datenträger befindlichen Bibliothek in der Pseudobibliothek fehlen oder verborgen oder verschleiert sind. Einem externen Programmentwickler braucht nur die Pseudobibliothek – und gegebenenfalls die zugehörige Dokumentation – zugänglich gemacht zu werden. Auf diese Weise können Informationen, aus denen Dritte mögli cherweise unerwünschte Rückschlüsse auf Interna des Datenträgers ziehen könnten, geheim gehalten werden. Damit ermöglicht die Erfindung eine sichere Entwicklung von nachladbarem Programmcode auch durch Dritte, beispielsweise durch unabhängige Softwarehäuser oder industrielle Nutzer von Datenträgern.
- Das Binden (Linken) des Programmcodes in dem Objektcode-Format gegenüber der Pseudobibliothek erfolgt zumindest teilweise. Insbesondere heißt dies, daß in manchen Ausgestaltungen der Erfindung der Programmcode in dem Ladeformat noch symbolische Informationen, wie sie üblicherweise im Objektcode-Format enthalten sind, aufweisen kann. In anderen Ausgestaltungen wird dagegen ein vollständig gegenüber der Pseudobibliothek gelinkter Programmcode in dem Ladeformat erzeugt.
- Auf dem Datenträger erfolgt ein weiterer Bindevorgang, der in bevorzugten Ausführungsformen als dynamischer Bindevorgang ausgestaltet ist. Dieser Bindevorgang kann in unterschiedlichen Ausführungsformen zur Ladezeit oder zur Laufzeit oder teils zur Lade- und teils zur Laufzeit stattfinden. Der auf dem Datenträger ausgeführte Bindevorgang erfolgt gegenüber der vertraulichen, auf dem Datenträger befindlichen Bibliothek.
- In bevorzugten Ausgestaltungen ist das außerhalb des Datenträgers ausgeführte Binden ein virtuelles Binden gegenüber virtuellen Funktionen der Pseudobibliothek. Entsprechend können in manchen Ausführungsformen innerhalb des Datenträgers virtuelle Funktionsaufrufe in dem Programmcode im Ladeformat durch tatsächliche Funktionsaufrufe der auf dem Datenträger befindlichen Bibliothek ersetzt werden.
- Es sind ferner Ausgestaltungen der Erfindung vorgesehen, bei denen der Programmcode im Ladeformat Sprungtabellen oder Verweistabellen auf weist, die erst beim Binden auf dem Datenträger mit auf die reale Bibliothek verweisenden Einträgen gefüllt werden. Insbesondere – aber nicht nur – in solchen Ausgestaltungen kann vorgesehen sein, daß in der auf dem Datenträger befindlichen Bibliothek virtuelle Funktionsaufrufe aufgelöst werden. Dies kann zur Ladezeit oder zur Laufzeit oder teils zur Lade- und teils zur Laufzeit erfolgen.
- In bevorzugten Ausgestaltungen der Erfindung stellt die Pseudobibliothek eine Aufrufschnittstelle bereit, die sich von der Aufrufschnittstelle der auf dem Datenträger befindlichen Bibliothek unterscheidet. Insbesondere kann die von der Pseudobibliothek bereitgestellte Aufrufschnittstelle eine virtuelle Aufrufschnittstelle sein.
- Um eine hohe Sicherheit gegen eine Verfälschung des Programmcodes und gegen ein unerwünschtes Nachladen von unautorisiertem Programmcode zu erhalten, werden in bevorzugten Ausgestaltungen Authentisierungsdaten erstellt und beim Laden des Programmcodes überprüft.
- In bevorzugten Ausführungsformen wird eine flexible und automatische Erkennung des nachgeladenen Programmcodes durch das Betriebssystem und/oder Anwendungsprogramme des Datenträgers dadurch ermöglicht, daß die von dem Programmcode bereitgestellten Funktionen in einer Verwaltungseinheit des Datenträgers eingetragen werden.
- Der erzeugte und in den Datenträger geladene Programmcode kann beispielsweise ein Anwendungsprogramm oder ein Kernel-Modul sein. In bevorzugten Ausgestaltungen ist vorgesehen, daß der Programmcode nativer Programmcode ist. Als nativer Programmcode soll hier insbesondere Binärcode angesehen werden, der von dem Prozessor des Datenträgers ohne eine zwischengeschaltete Interpretierung und ohne eine virtuelle Maschine ausführbar ist.
- Das erfindungsgemäße Computerprogrammprodukt weist Programmbefehle auf, um das erfindungsgemäße Verfahren zu implementieren, oder Programmbefehle, die durch das erfindungsgemäße Verfahren erzeugt worden sind. Ein derartiges Computerprogrammprodukt kann ein körperliches Medium sein, z.B. ein Halbleiterspeicher oder eine Diskette oder eine CD-ROM. Das Computerprogrammprodukt kann jedoch auch ein nicht-körperliches Medium sein, z.B. ein über ein Computernetzwerk übermitteltes Signal. Insbesondere kann das Computerprogrammprodukt Software für ein Programmentwicklungssystem oder einen tragbaren Datenträger enthalten oder im Zusammenhang mit der Herstellung oder Initialisierung oder Personalisierung oder dem Betrieb eines tragbaren Datenträgers verwendet werden.
- Die erfindungsgemäße Vorrichtung kann insbesondere ein Programmentwicklungssystem oder ein tragbarer Datenträger sein. In bevorzugten Weiterbildungen weisen das Computerprogrammprodukt und/oder die Vorrichtung Merkmale auf, die den in der vorliegenden Beschreibung erwähnten und/oder den in den abhängigen Verfahrensansprüchen genannten Merkmalen entsprechen.
- Weitere Merkmale, Aufgaben und Vorteile der Erfindung ergeben sich aus der folgenden Beschreibung eines Ausführungsbeispiels und mehrerer Ausführungsalternativen. In den schematischen Zeichnungen zeigen:
-
1 eine konzeptionelle Darstellung der Datenstrukturen und Datenverarbeitungsstufen in einem Programmentwicklungssystem und einem Datenträger gemäß einem Ausführungsbeispiel der Erfindung, -
2 ein Flußdiagramm eines in dem Programmentwicklungssystem von1 ausgeführten Verfahrens zum Erzeugen von Programmcode in einem Ladeformat, -
3 ein Flußdiagramm eines in dem Datenträger von1 ausgeführten Verfahrens zum Bereitstellen von ausführbarem Programmcode, und -
4 eine beispielhafte Darstellung der Beziehung zwischen einer auf dem Datenträger befindlichen Bibliothek und einer Pseudobibliothek. - In
1 sind schematisch ein Programmentwicklungssystem10 und ein tragbarer Datenträger12 gezeigt. Das Programmentwicklungssystem10 kann als üblicher persönlicher Computer oder Arbeitsplatzrechner mit geeigneter Software ausgestaltet sein. Der Datenträger12 ist im vorliegenden Ausführungsbeispiel eine Chipkarte oder ein Chipmodul mit an sich bekannter Hardware. Insbesondere enthält der Datenträger12 einen Ein-Chip-Mikrocontroller mit einem Prozessor, mehreren in unterschiedlichen Technologien ausgestalteten Speicherfeldern und einer Schnittstellenschaltung zur drahtgebundenen oder drahtlosen Kommunikation. - In dem in
1 gezeigten Ausführungsbeispiel geht die Erzeugung des Programmcodes von einem Quelltext14 aus, der durch einen Compiler16 in einen entsprechenden Programmcode18 in einem Objektcode-Format übersetzt wird. In dem Programmentwicklungssystem10 steht eine Pseudobibliothek20 zur Verfügung, auf die später noch genauer eingegangen werden wird. Ein Linker22 erzeugt aus dem im Objektcode-Format vorliegenden Programmcode18 und der Pseudobibliothek20 einen zumindest zum Teil gebundenen (gelinkten) Programmcode24 in einem Ladeformat. - Um den Programmcode
24 gegen versehentliche oder böswillige Verfälschungen zu sichern, wird ein Authentisierungserzeuger26 verwendet, der Authentisierungsdaten28 – z.B. eine geeignete Prüfsumme des Programmcodes24 – generiert. Der durch die Authentisierungsdaten28 gesicherte Programmcode30 im Ladeformat bildet das Ergebnis des mit Hilfe des Programmentwicklungssystems10 ausgeführten Entwicklungsprozesses. Dieser Programmcode30 wird zur späteren Verwendung gespeichert. - Der Programmcode
30 kann während des Betriebs des Datenträgers12 in diesen geladen werden. Der Ladevorgang kann beispielsweise beim Endkunden oder im Zusammenhang mit der Herstellung oder Initialisierung oder Personalisierung des Datenträgers12 erfolgen. Der Programmcode30 liegt dabei in dem Programmentwicklungssystem10 oder einer Initialisierungs- oder Personalisierungsvorrichtung oder einem Endkunden-Terminal vor und wird in den Datenträger12 übertragen. Bei dem Ladevorgang ist der Datenträger12 in Betrieb. Hierunter soll verstanden werden, daß der Programmcode30 bei dem Ladevorgang durch den Prozessor des Datenträgers12 aktiv verarbeitet und verändert wird. - In
1 ist durch einen gestrichelten Pfeil angedeutet; daß der gesicherte Programmcode30 im Ladeformat – gegebenenfalls über eine der oben erwähnten Zwischenstationen – von einem Ladeprogramm32 in den Datenträger12 übernommen wird. Ein Authentisierungsprüfer34 stellt sicher, daß der Programmcode30 unverfälscht ist und von einer autorisierten Stelle mit den Authentisierungsdaten28 versehen wurde. Bei bestandener Prüfung wird der Programmcode24 im Ladeformat von einem Linker36 gegenüber einer im Datenträger12 gespeicherten Bibliothek38 gebunden. Auf diesen Vorgang des dynamischen Linkens wird unten noch genauer eingegangen. - Der Linker
36 erzeugt ausführbaren Programmcode40 , der nun zur Ausführung durch den Prozessor des Datenträgers12 bereitsteht. In manchen Ausgestaltungen ist der ausführbare Programmcode40 ein Anwendungsprogramm (Applikation) für den Datenträger12 . Im hier beschriebenen Ausführungsbeispiel ist der ausführbare Programmcode40 dagegen ein Kernel-Modul des Datenträgers12 , also z.B. ein Teil des Betriebssystems, ein Treiber oder eine Bibliothek. Das Kernel-Modul kann beispielsweise einen Treiber für die Speicherverwaltung oder eine Kryptobibliothek oder Funktionalitäten zur Kommunikation mit diversen Schnittstellen – z.B. USB, Wireless, TCP/IP – zur Verfügung stellen. - Die Funktionen des ausführbaren Programmcodes
40 werden dem Betriebssystem des Datenträgers12 und den auf dem Datenträger12 gespeicherten Anwendungsprogrammen bereitgestellt. In manchen Ausgestaltungen erfolgt hierbei eine flexible Erkennung der geladenen Funktionalität. Hierzu stellt der ausführbare Programmcode40 – insbesondere, wenn er ein Kernel-Modul ist – eine vorher spezifizierte Schnittstelle zur Verfügung. Ferner ist in den hier beschriebenen Ausführungsbeispielen vorgesehen, den Programmcode40 durch ein Registrierungsprogramm42 in einer Verwaltungseinheit des Datenträgers12 mit den bereitgestellten Funktionen einzutragen. Diese Verwaltungseinheit kann beispielsweise eine Registrierungsdatei (Registry) oder eine sonstige Datenstruktur des Datenträgers12 sein. -
2 veranschaulicht nochmals den Verfahrensablauf im Programmentwicklungssystem10 . In Schritt50 wird der Programmcode18 im Objektcode-Format erzeugt. Schritt52 betrifft das Binden des Programmcodes18 gegenüber der Pseudobibliothek20 , um den ungesicherten Programmcode 24 im Ladeformat zu erhalten. In Schritt54 werden schließlich die Authentisierungsdaten28 und der gesicherte Programmcode30 im Ladeformat erstellt. - Das in
3 gezeigte Flußdiagramm faßt die im Datenträger12 ausgeführten Verfahrensschritte zusammen. Auf das Einlesen des gesicherten Programmcodes30 in Schritt56 und die Authentisierungsüberprüfung in Schritt58 folgt in Schritt60 das Binden des Programmcodes24 gegenüber der im Datenträger12 gespeicherten Bibliothek38 , um den ausführbaren Programmcode40 zu erhalten. Der ausführbare Programmcode40 wird in Schritt62 zur Ausführung bereitgestellt und gegebenenfalls in die Verwaltungseinheit des Datenträgers12 eingetragen. - Wesentlicher Bestandteil der hier beschriebenen Ausführungsbeispiele sind die beiden Bindevorgänge in den Schritten
52 und60 . Bei dem ersten Bindevorgang in Schritt52 , der von dem Linker22 ausgeführt wird, wird die Pseudobibliothek20 (Dummy-Bibliothek) verwendet. Die Pseudobibliothek20 unterscheidet sich von der im Datenträger12 gespeicherten Bibliothek38 insbesondere dadurch, daß die Pseudobibliothek20 nicht die wirklichen Funktionen der auf dem Datenträger12 gespeicherten Bibliothek38 enthält, sondern lediglich Funktionen, die hier als "virtuelle Funktionen" bezeichnet werden. - Der Bindevorgang außerhalb des Datenträgers
12 erfolgt somit virtuell, d.h. gegen virtuelle Funktionen der Pseudobibliothek20 statt gegen die tatsächlichen Funktionen der im Datenträger12 enthaltenen Bibliothek38 . Mit anderen Worten findet ein Linken gegen eine virtuelle Aufrufschnittstelle der Pseudobibliothek20 statt gegen die reale Aufrufschnittstelle der Bibliothek 38 im Datenträger12 statt. Die Interna des Datenträgers12 , nämlich insbesondere die internen Funktionen und internen Funktionalitäten der Bibliothek38 , bleiben daher verborgen. Auch durch eine Analyse der Pseudobibliothek20 könnten diese internen Funktionen und Funktionalitäten nicht ermittelt werden. - Die gerade beschriebene Beziehung zwischen der Pseudobibliothek
20 und der im Datenträger12 enthaltenen Bibliothek38 ist in4 an einem Beispiel veranschaulicht. Die Pseudobibliothek20 stellt eine virtuelle Aufrufschnittstelle mit beispielsweise den Funktionen VirtFunc1, VirtFunc2 und VirtFunc3 bereit. Erst auf dem Datenträger12 ist die Aufrufschnittstelle der Bibliothek38 mit den tatsächlichen Funktionen des Datenträgers12 hinterlegt. - Die tatsächliche Aufrufschnittstelle der im Datenträger
12 enthaltenen Bibliothek38 löst die virtuellen Funktionsaufrufe auf und stellt beispielsweise die internen Funktionen Func1, Func2, Func3 und Func4 bereit. Das Binden des Programmcodes18 in Schritt52 durch den Linker22 erfolgt gegen die Pseudobibliothek20 , die nur die Aufrufschnittstelle zur Verfügung stellt. Das tatsächliche Auflösen der Referenzen erfolgt dagegen erst in Schritt60 auf dem Datenträger12 . Bei diesem Vorgang werden die virtuellen Funktionen VirtFunc1 – VirtFunc3 durch die tatsächlichen Funktionen Func1 – Func4 ersetzt. Dies ist in4 durch die gestrichelten Pfeile veranschaulicht. - Insgesamt wird somit erreicht, daß der auf dem Datenträger
12 ausgeführte Programmcode40 plattformabhängige und/oder vertrauliche Funktionen nutzen kann. Durch die Verwendung der Pseudobibliothek20 braucht aber die erst im Datenträger12 erfolgende Umsetzung der dem Programmentwickler bekannten, externen Funktionen in die plattformabhängigen Funktionen nicht offengelegt zu werden. Diese Maßnahme bewirkt eine erhebliche Steigerung der Sicherheit des Datenträgers12 , auch wenn dieser ein Laden von nativem Programmcode – z.B. Anwendungsprogrammen und Treibern – gestattet. - Es versteht sich, daß die Einzelheiten der obigen Beschreibung nur als Beispiele für mögliche Ausgestaltungen der vorliegenden Erfindungen dienen sollen. Weitere Abwandlungen, insbesondere im Hinblick auf die außerhalb des Datenträgers
12 und im Datenträger12 ausgeführten Bindevorgänge52 ,60 und die jeweiligen Inhalte der Pseudobibliothek20 und der im Datenträger12 befindlichen Bibliothek38 , sind möglich und für den Fachmann offensichtlich.
Claims (18)
- Verfahren zum Erzeugen von Programmcode (
24 ,30 ) in einem Ladeformat, der dazu vorgesehen ist, während des Betriebs eines tragbaren Datenträgers (12 ) in diesen geladen und von einem Prozessor des Datenträgers (12 ) ausgeführt zu werden und bei der Ausführung Funktionen einer auf dem Datenträger (12 ) befindlichen Bibliothek (38 ) zu nutzen, mit den außerhalb des Datenträgers (12 ) ausgeführten Schritten: – Erzeugen von Programmcode (18 ) in einem Objektcode-Format, und – zumindest teilweises Binden des Programmcodes (18 ) in dem Objektcode-Format gegenüber einer Pseudobibliothek (20 ), um den Programmcode (24 ,30 ) in dem Ladeformat zu erhalten, wobei sich die Pseudobibliothek (20 ) von der auf dem Datenträger (12 ) befindlichen Bibliothek (38 ) dergestalt unterscheidet, daß zumindest manche Interna der auf dem Datenträger (12 ) befindlichen Bibliothek (38 ) in der Pseudobibliothek (20 ) fehlen oder verborgen oder verschleiert sind. - Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß das Binden ein virtuelles Binden gegenüber virtuellen Funktionen der Pseudobibliothek (
20 ) ist. - Verfahren nach Anspruch 1 oder Anspruch 2, dadurch gekennzeichnet, daß Authentisierungsdaten (
28 ) erstellt werden, um den Programmcode (24 ,30 ) im Ladeformat gegen Verfälschung zu sichern. - Verfahren zum Bereitstellen von ausführbarem Programmcode (
40 ) in einem tragbaren Datenträger (12 ), wobei der ausführbare Programmcode (40 ) dazu eingerichtet ist, bei der Ausführung durch einen Prozessor des Datenträgers (12 ) Funktionen einer auf dem Datenträger (12 ) befindlichen Bibliothek (38 ) zu nutzen, mit den von dem Prozessor des Datenträgers (12 ) ausgeführten Schritten: – Laden von Programmcode (24 ,30 ) in einem Ladeformat während des Betriebs des Datenträgers (12 ), wobei der Programmcode (24 ,30 ) in dem Ladeformat zumindest teilweise gegenüber einer Pseudobibliothek (20 ) gebunden ist, die sich von der auf dem Datenträger (12 ) befindlichen Bibliothek (38 ) dergestalt unterscheidet, daß zumindest manche Interna der auf dem Datenträger (12 ) befindlichen Bibliothek (38 ) in der Pseudobibliothek fehlen oder verborgen oder verschleiert sind, und – Binden des Programmcodes (24 ,30 ) in dem Ladeformat gegenüber der auf dem Datenträger (12 ) befindlichen Bibliothek (38 ), um den ausführbaren Programmcode (40 ) zu erhalten. - Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß das Binden ein dynamisches Binden ist.
- Verfahren nach Anspruch 4 oder Anspruch 5, dadurch gekennzeichnet, daß bei dem Binden virtuelle Funktionsaufrufe in dem Programmcode (
24 ,30 ) im Ladeformat durch tatsächliche Funktionsaufrufe der auf dem Datenträger (12 ) befindlichen Bibliothek (38 ) ersetzt werden. - Verfahren nach einem der Ansprüche 4 bis 6, dadurch gekennzeichnet, daß der Programmcode (
24 ,30 ) im Ladeformat durch Authentisierungsdaten (28 ) gesichert ist, und daß der ausführbare Programmcode (40 ) erst nach erfolgreicher Authentisierungsüberprüfung zur Ausführung bereitgestellt wird. - Verfahren nach einem der Ansprüche 4 bis 7, dadurch gekennzeichnet, daß die von dem ausführbaren Programmcode (
40 ) bereitgestellten Funktionen in einer Verwaltungseinheit des Datenträgers (12 ) eingetragen werden. - Verfahren nach einem der Ansprüche 4 bis 8, dadurch gekennzeichnet, daß der Programmcode (
24 ,30 ) im Ladeformat durch ein Verfahren nach einem der Ansprüche 1 bis 3 erzeugt worden ist. - Verfahren nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß die Pseudobibliothek (
20 ) eine Aufrufschnittstelle bereitstellt, die sich von einer Aufrufschnittstelle der auf dem Datenträger befindlichen Bibliothek (38 ) unterscheidet. - Verfahren nach Anspruch 10, dadurch gekennzeichnet, daß die von der Pseudobibliothek (
20 ) bereitgestellte Aufrufschnittstelle eine virtuelle Aufrufschnittstelle ist. - Verfahren nach einem der Ansprüche 1 bis 11, dadurch gekennzeichnet, daß in der auf dem Datenträger (
12 ) befindlichen Bibliothek (38 ) virtuelle Funktionsaufrufe aufgelöst werden. - Verfahren nach einem der Ansprüche 1 bis 12, dadurch gekennzeichnet, daß der Programmcode (
24 ,30 ,40 ) ein Anwendungsprogrammist. - Verfahren nach einem der Ansprüche 1 bis 12, dadurch gekennzeichnet, daß der Programmcode (
24 ,30 ,40 ) ein Kernel-Modul ist. - Verfahren nach einem der Ansprüche 1 bis 14, dadurch gekennzeichnet, daß der Programmcode (
24 ,30 ,40 ) nativer Programmcode ist. - Vorrichtung, insbesondere Programmentwicklungssystem (
10 ) oder tragbarer Datenträger (12 ), die dazu eingerichtet ist, ein Verfahren nach einem der Ansprüche 1 bis 15 auszuführen. - Computerprogrammprodukt, das eine Vielzahl von Programmbefehlen zur Steuerung einer programmierbaren Vorrichtung, insbesondere eines Programmentwicklungssystems (
10 ) oder eines tragbaren Datenträgers (12 ), aufweist, wobei die Programmbefehle dazu eingerichtet sind, die programmierbare Vorrichtung zur Ausführung eines Verfahrens nach einem der Ansprüche 1 bis 15 zu veranlassen. - Computerprogrammprodukt mit Programmcode (
24 ,30 ,40 ), der durch ein Verfahren nach einem der Ansprüche 1 bis 15 erzeugt worden ist.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102004058882A DE102004058882A1 (de) | 2004-12-06 | 2004-12-06 | Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode |
JP2007544782A JP2008523480A (ja) | 2004-12-06 | 2005-12-01 | ロードフォーマットのプログラムコードの生成および実行可能プログラムコードの提供 |
EP05818331A EP1839136A1 (de) | 2004-12-06 | 2005-12-01 | Erzeugen von programmcode in einem ladeformat und bereitstellen von ausf]hrbarem programmcode |
US11/792,517 US8332834B2 (en) | 2004-12-06 | 2005-12-01 | Generation of a program code in a load format and provision of an executable program code |
PCT/EP2005/012854 WO2006061141A1 (de) | 2004-12-06 | 2005-12-01 | Erzeugen von programmcode in einem ladeformat und bereitstellen von ausführbarem programmcode |
CN2005800419175A CN101073054B (zh) | 2004-12-06 | 2005-12-01 | 加载格式的程序代码的产生以及可执行程序代码的提供 |
JP2012222975A JP2013041598A (ja) | 2004-12-06 | 2012-10-05 | プログラムコードの生成方法、プログラム開発システム、携帯用データキャリア、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102004058882A DE102004058882A1 (de) | 2004-12-06 | 2004-12-06 | Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102004058882A1 true DE102004058882A1 (de) | 2006-06-08 |
Family
ID=35788755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102004058882A Withdrawn DE102004058882A1 (de) | 2004-12-06 | 2004-12-06 | Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode |
Country Status (6)
Country | Link |
---|---|
US (1) | US8332834B2 (de) |
EP (1) | EP1839136A1 (de) |
JP (2) | JP2008523480A (de) |
CN (1) | CN101073054B (de) |
DE (1) | DE102004058882A1 (de) |
WO (1) | WO2006061141A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014019679A1 (de) | 2012-08-02 | 2014-02-06 | Masktech International Gmbh | Verfahren zur bereitstellung von chips mit hohem re-engineering-schutz, insbesondere für digitale authentifizierungssysteme, wie chipkarten oder dergleichen, sowie danach hergestellte chips |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8452981B1 (en) * | 2006-03-01 | 2013-05-28 | Nvidia Corporation | Method for author verification and software authorization |
US20120023483A1 (en) * | 2010-07-20 | 2012-01-26 | Dan Welchman | System and method for use in indicating execution of application code |
WO2019148470A1 (zh) * | 2018-02-02 | 2019-08-08 | 深圳配天智能技术研究院有限公司 | 一种可编程逻辑芯片的保护电路及控制系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6792612B1 (en) * | 1998-03-23 | 2004-09-14 | International Business Machines Corporation | Java runtime system with modified constant pool |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2143488C (en) * | 1995-02-27 | 2000-01-11 | Robert Paul Duncan | Dynamic link libraries without linker or loader support |
CA2171898C (en) * | 1996-03-15 | 2000-02-01 | Brian Ward Thomson | Linker optimization for compiled object oriented programs |
JPH09258969A (ja) * | 1996-03-21 | 1997-10-03 | Toshiba Corp | プログラム開発装置及びプログラム開発方法 |
US6141698A (en) * | 1997-01-29 | 2000-10-31 | Network Commerce Inc. | Method and system for injecting new code into existing application code |
WO1999001815A1 (en) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
DE19840029C1 (de) * | 1998-09-02 | 2000-04-20 | Siemens Ag | Verfahren zum Linken von in einen Arbeitsspeicher eines Prozessors nachgeladenen Programmodulen auf einer Chipkarte |
GB9920676D0 (en) * | 1999-09-01 | 1999-11-03 | Tao Group Ltd | Translating and executing object-oriented computer programs |
GB9921720D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
US20010047512A1 (en) * | 2000-03-23 | 2001-11-29 | Leland Szewerenko | Method and system for linking multiple processors having shared memory |
JP2002132364A (ja) | 2000-10-19 | 2002-05-10 | Yutaka Iizuka | プログラムを内部解析から保護する方法、コンピュータ読み取り可能な記録媒体及びプログラムの配布方法 |
CN1373418A (zh) * | 2001-02-28 | 2002-10-09 | 无敌科技(西安)有限公司 | 抽换可携式执行文件格式文件资料的方法 |
ATE481677T1 (de) * | 2001-05-30 | 2010-10-15 | Research In Motion Ltd | System zur verarbeitung einer anwendung für ein mobiles kommunikationsgerät |
US7099663B2 (en) * | 2001-05-31 | 2006-08-29 | Qualcomm Inc. | Safe application distribution and execution in a wireless environment |
JP2003140758A (ja) | 2001-11-07 | 2003-05-16 | Hitachi Ltd | プログラム暗号化方法、復号化方法および実行方法 |
NL1019876C2 (nl) | 2002-01-31 | 2003-08-04 | Chess Embedded Technology B V | Systeem en werkwijze voor het laden van een programmacode in een inrichting alsmede een werkwijze voor het voeden van een programmacode aan een inrichting. |
JP2003337629A (ja) * | 2002-05-18 | 2003-11-28 | Mitsuko Miyaji | プログラム難読化方法及び装置 |
JP4115759B2 (ja) * | 2002-07-01 | 2008-07-09 | 株式会社東芝 | 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム |
-
2004
- 2004-12-06 DE DE102004058882A patent/DE102004058882A1/de not_active Withdrawn
-
2005
- 2005-12-01 JP JP2007544782A patent/JP2008523480A/ja active Pending
- 2005-12-01 CN CN2005800419175A patent/CN101073054B/zh not_active Expired - Fee Related
- 2005-12-01 WO PCT/EP2005/012854 patent/WO2006061141A1/de active Application Filing
- 2005-12-01 EP EP05818331A patent/EP1839136A1/de not_active Ceased
- 2005-12-01 US US11/792,517 patent/US8332834B2/en not_active Expired - Fee Related
-
2012
- 2012-10-05 JP JP2012222975A patent/JP2013041598A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6792612B1 (en) * | 1998-03-23 | 2004-09-14 | International Business Machines Corporation | Java runtime system with modified constant pool |
Non-Patent Citations (1)
Title |
---|
Virtual Machine Specification. Java Card Platform,Version 2.2.1, (online). Sun Microsystems,Inc.,4150 Network Circle,Santa Clara, California,USA,2003,recherchiert am 15.02.2005 im Internet <URL: http://java.sun.com/products/javacard/specs.html> * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014019679A1 (de) | 2012-08-02 | 2014-02-06 | Masktech International Gmbh | Verfahren zur bereitstellung von chips mit hohem re-engineering-schutz, insbesondere für digitale authentifizierungssysteme, wie chipkarten oder dergleichen, sowie danach hergestellte chips |
DE102012024250A1 (de) * | 2012-08-02 | 2014-02-06 | Masktech International Gmbh | Verfahren zur Bereitstellung von Chips mit hoher Kopierschutzfunktion, insbesondere für digitale Authentifizierungssysteme, wie Chipkarten oder dergleichen, sowie danach hergestellte Chips |
DE102012024250B4 (de) | 2012-08-02 | 2023-04-13 | Masktech International Gmbh | Verfahren zur Bereitstellung von Chips mit hoher Kopierschutzfunktion, insbesondere für digitale Authentifizierungssysteme, wie Chipkarten oder dergleichen, sowie danach hergestellte Chips |
Also Published As
Publication number | Publication date |
---|---|
JP2013041598A (ja) | 2013-02-28 |
EP1839136A1 (de) | 2007-10-03 |
CN101073054A (zh) | 2007-11-14 |
US20090044172A1 (en) | 2009-02-12 |
CN101073054B (zh) | 2011-01-26 |
WO2006061141A1 (de) | 2006-06-15 |
US8332834B2 (en) | 2012-12-11 |
JP2008523480A (ja) | 2008-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60011615T3 (de) | Techniken zum erlauben von zugang durch eine kontextsperre in einem kleinen gerät unter verwendung von globalen datenstrukturen | |
DE60018505T2 (de) | Vertraute Überprüfung von Rechnerprogrammodulen | |
DE202009019137U1 (de) | Apparat für die Validierung eines nicht vertrauenswürdigen Nativen Code-Moduls | |
DE202009019136U1 (de) | Systeme zur sicheren Ausführung eines nicht vertrauenswürdigen Nativen Codemoduls auf einer Datenverarbeitungsvorrichtung | |
DE102012200613A1 (de) | System und Verfahren zur Unterstützung von JIT in einem sicheren System und zufällig zugewiesenen Speicherbereichen | |
DE202009019148U1 (de) | Dateisystemzugriff für Web-Anwendungen und native Kodemodule | |
DE60010433T2 (de) | Verfahren zur durchführung von sicherheitvorgaben in einem kleingerät unter verwendung von einer kontextsperre | |
DE102004057490B4 (de) | Vorrichtung und Verfahren zum Verarbeiten eines Programmcodes | |
DE10313318A1 (de) | Kontrollierte Ausführung eines für eine virtuelle Maschine vorgesehenen Programms auf einem tragbaren Datenträger | |
EP1798653A1 (de) | Verfahren und Vorrichtung zum Schützen eines einen Funktionsblock aufweisenden Programms | |
WO2006061141A1 (de) | Erzeugen von programmcode in einem ladeformat und bereitstellen von ausführbarem programmcode | |
WO2001033318A1 (de) | Vorrichtung und verfahren zur geschützten ausgabe eines elektronischen dokuments über ein datenübertragungsnetz | |
DE102005046696B4 (de) | Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt | |
DE102014019090A1 (de) | Verfahren zum Bereitstellen einer sicherheitskritischen Softwareapplikation auf einer Computereinheit | |
EP1801696B1 (de) | Multithreading - fähige virtuelle Maschine | |
EP3745287B1 (de) | Schützen einer softwareapplikation | |
DE102004011488B4 (de) | Schutz von Software gegen Angriffe | |
EP1879128B1 (de) | Abgesicherter Programmcode | |
CH712679B1 (de) | Verfahren zur Maskierung und eindeutigen Signierung von Datenbank-Quellcodes. | |
DE102018115758A1 (de) | Sicherheit von Java-Card-Schlüsselobjekten | |
DE102007041873A1 (de) | Installieren eines Patch in einem Smartcard-Modul | |
EP2573677B1 (de) | Datenaustausch zwischen Applikationen | |
DE102017214584A1 (de) | Verfahren und Vorrichtung zum Schützen eines Gerätes | |
EP1720096B1 (de) | Verfahren zum Hinzufügen einer Funktionalität zu einem ausführbaren ersten Modul eines Programmpakets | |
DE10323033A1 (de) | Laden eines ausführbaren Programms in einen tragbaren Datenträger |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OM8 | Search report available as to paragraph 43 lit. 1 sentence 1 patent law | ||
R012 | Request for examination validly filed | ||
R012 | Request for examination validly filed |
Effective date: 20111118 |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20140701 |