DE60100363T2 - Sequenznummerierungsmechanismus zur sicherung der ausführungsordnungs-integrietät von untereinander abhängigen smart-card anwendungen - Google Patents
Sequenznummerierungsmechanismus zur sicherung der ausführungsordnungs-integrietät von untereinander abhängigen smart-card anwendungen Download PDFInfo
- Publication number
- DE60100363T2 DE60100363T2 DE60100363T DE60100363T DE60100363T2 DE 60100363 T2 DE60100363 T2 DE 60100363T2 DE 60100363 T DE60100363 T DE 60100363T DE 60100363 T DE60100363 T DE 60100363T DE 60100363 T2 DE60100363 T2 DE 60100363T2
- Authority
- DE
- Germany
- Prior art keywords
- code
- applet
- tamper
- sequence data
- executed
- 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
Links
- 230000007246 mechanism Effects 0.000 title description 8
- 238000000034 method Methods 0.000 claims description 27
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000004891 communication Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 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
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
Description
- Hintergrund und Zusammenfassung der Erfindung
- Die vorliegende Erfindung beschreibt einen Mechanismus zum Schutz der richtigen Ausführungsreihenfolge von zusammenhängenden (verknüpften) Softwareanwendungen. Insbesondere betrifft die vorliegende Erfindung den Softwarelizenzschutz für die geschützte und zeitgemäße Ausführung von Softwareanwendungen mittels manipulationssicheren externen Vorrichtungen, wie etwa Smartcards, USB-Schlüsseln oder anderen Formen von manipulationssicheren Zusatzgeräten. Die vorliegende Erfindung findet ihre Anwendungen auch in jeglichem herkömmlichen Smartcard Sicherheitsanwendungsbereich, wie etwa elektronisches Bezahlen, Digitalrechteverwaltung (DRM), Multimediaschutz, Authentifizierung, Biometrie, öffentlicher Schlüssel Infrastruktur (PKI), Verschlüsselungschemen, als ein integrierter Bestandteil sicherer Spezialbetriebssysteme für manipulationssichere externe Vorrichtungen, und ähnlichem. Die vorliegende Erfindung bezieht sich auf die internationale Anmeldung Nr. PCT/NO96/00171, die die USA benennt. Dieses Patent beschreibt ein System zum Softwarelizenzschutz mittels der teilweisen Ausführung einer Softwareanwendung in einer manipulationssicheren externen Vorrichtung.
- In einer Mehrprozess-Computerumgebung, wie sie beispielsweise von einer Dualprozess-Umgebung vorgegeben wird, die aus einem (nicht vertrauenswürdigen) Hostcomputer und einer (vertrauenswürdigen) externen, manipulationssicheren Vorrichtung wie etwa einer Smartcard oder anderen Schlüsseln besteht, wird von Softwareanwendungen, die auf dem Hostcomputer liegen, verlangt, dass sie einen oder mehrere Funktionsaufrufe für auf der externen Vorrichtung liegende Anwendungen machen. Softwareanwendungen, die wie hier beschrieben auf externen Vorrichtungen ablaufen, werden auch als „Applets" bezeichnet. Allgemein gesagt ist der Ausführweg einer Softwareanwendung, ob diese eine Hostanwendung oder eine externe Vorrichtungs-/Smartcard-Applet ist, kritisch für die richtige Funktionsweise der Anwendung. Es ist wichtig, dass der Ausführweg nicht manipuliert wird.
- Als ein einfaches Beispiel muss eine Anwendung, die Temperaturgrad Celsius in Fahrenheit umsetzt, die Gleichung F = 9/5*C + 32 berechnen. Die Multiplikation der Grad Celsius mit 9/5 muss vor der Addition mit 32 durchgeführt werden. Gemäß dem Stand der Technik wird die richtige Reihenfolge der Ausführung sichergestellt, indem die Funktion in ihrer Gesamtheit in einer manipulationssicheren Umgebung als ein Applet ausgeführt wird, die genau einen Funktionsaufrufzugang von der Hostanwendung zu dem Applet zulässt. Da das Applet auf der manipulationssicheren Smartcard liegt, kann es nicht manipuliert werden, und da das Applet genau einen Zugangspunkt aufweist, gibt es keinen Weg, dass der Additionsvorgang möglicherweise vor dem Multiplikationsvorgang durchgeführt werden kann. Funktionsaufteilung, Integrität und richtige Ausführungsreihenfolge werden sichergestellt.
- Wenn die Funktion F = 9*C/5 + 32 nichts desto weniger in drei Applets, wie in
1 dargestellt, aufgeteilt werden soll; Applet 1 als i = 9*C, Applet 2 als i = i/5 und Applet 3 als F = i + 32, wobei jedes einen unterschiedlichen Funktionsstartpunkt aufweist und nach dem Stand der Technik es kein Mechanismus der externen Vorrichtung ermöglicht, einen Gegner aufzudecken und am Verändern der Hostanwendung durch Umdrehen der Funktionsaufrufe des Applets in der externen Vorrichtung zu hindern, z. B. durch Aufrufen von Applet 3 vor Applet 1, oder durch Entfernen eines oder mehrerer Aufrufe und dadurch Aufbrechen der Integrität der verbundenen Smartcard-Anwendungen. -
2 zeigt ein Szenarium, bei der der Gegner den Aufruf fr Applet 2 entfernt hat, und dadurch die externe Vorrichtung zur Rückgabe eines fehlerhaften Ergebnisses zwingt. Daher reicht eine manipulationssichere Vorrichtung nicht allgemein aus, um einen richtige Ausführungsreihenfolge und eine Gesamtintegrität des Applets sicherzustellen. - Es ist eine erste Aufgabe der vorliegenden Erfindung, einen Integritätsschutzmechanismus vorzusehen, der es ermöglicht, dass eine Smartcardanwendung in mehr als eine Unteranwendung auf sicherer Art und Weise aufgeteilt wird, der die richtige Ausführungsreihenfolge und die Anwendungsintegrität sicherstellt und es der Ausführungsumgebung der externen Vorrichtung ermöglicht, jegliche Versuche aufzudecken, Applets in einer unzulässigen Art und Weise zu betreiben. Die Einrichtung eröffnet neue technologische Möglichkeiten. Es ist eine zweite Aufgabe der vorliegenden Erfindung, für Zwecke des Softwarelizenzschutzes und anderer Anwendungsbereiche, die oben aufgezeigt wurden, die Auswahl geeigneter und für die Ausführung auf einer manipulationssicheren Vorrichtung nicht geeigneter Softwareanwendungskomponenten ohne Einschränkungen zu ermöglichen, und dabei ein effizientes und höchst Anwenderfreundliches Tool für die Optimierung der Anwendungssicherheit und Leistungsfähigkeit zur Verfügung zustellen.
- Die vorliegende Erfindung ist dargestellt in Anspruch 1. Bevorzugte Ausführungsbeispiele sind in den Unteransprüchen angegeben.
- Kurze Beschreibung der Zeichnungen
- Die vorhergehende Zusammenfassung ebenso wie die nachfolgende detaillierte Beschreibung bevorzugter Ausführungsbeispiele der Erfindung können besser verstanden werden, wenn sie in Verbindung mit den beigefügten Zeichnungen gelesen werden. Um die Erfindung zu erläutern, ist in den Zeichnungen ein Ausführungsbeispiel dargestellt, das gegenwärtig bevorzugt wird. Es sollte jedoch berücksichtigt werden, dass die Erfindung nicht auf die genauen Anordnungen und dargestellten Umsetzungen beschränkt ist. In den Zeichnungen zeigt:
-
1 ein schematisches Blockdiagramm einer Mehrprozessor-Computerumgebung zur Ausführung eines Codeabschnitts in einer externen Vorrichtung nach dem Stand der Technik, -
2 , wie ein Angriff auf die Umgebung der1 geführt werden kann, -
3 ein schematisches Blockdiagramm einer Mehrprozessor-Computerumgebung zur Ausführung eines Codeabschnitts in einer externen Vorrichtungen in Übereinstimmung mit einem ersten Ausführungsbeispiel der vorliegenden Erfindung, -
4 ein schematisches Blockdiagramm einer Mehrprozessor-Computerumgebung zu Ausführung eines Codeabschnitts in einer externen Vorrichtung in Übereinstimmung mit einem zweiten Ausführungsbeispiel der vorliegenden Erfindung und -
5 , wie die vorliegende Erfindung eine allgemeine Lösung zur Überwachung mehrerer, alternativer Applet-Ausführungswege vorsieht. - Detaillierte Beschreibung der Erfindung
- Eine bestimmte Terminologie wird nachfolgend allein aus Bequemlichkeit benutzt und kann nicht als eine Einschränkung der vorliegende Erfindung angesehen werden. Bei den Zeichnungen werden dieselben Bezugszeichen zur Bezeichnung derselben Elemente bei den mehreren Figuren benutzt.
- Die vorliegenden Erfindung verbindet Applet-Barbeitungssequenzdaten (z. B. Sequenznummern oder andere Bezeichner wie etwa willkürliche Zahlen oder diskrete Zeitwerte) zusammen mit dem aktuellen Appletcode, wodurch die Applets dazu gebracht werden, in einer richtigen Sequenz ausgeführt zu werden, die durch die Sequenzdaten festgelegt ist. Jedes Applets muss eine allgemeine Identität aufweisen. Für jedes Applet enthalten die Sequenzdaten Informationen über den Satz an vorausgehenden Applets, denen es erlaubt ist, vor dem gegenwärtigen Applet ausgeführt zu werden, und den Satz von nachfolgenden, denen es erlaubt ist, nach dem gegenwärtigen Applet ausgeführt zu werden. Die Sätze von vorausgehenden und nachfolgenden können leer seien, oder können eines oder mehrere Elemente (Appletidentitäten) enthalten, oder können Wildcards (Platzhalterzeichen) enthalten, die eine bestimmte Gruppe von Applets definieren. Im Ergebnis identifizieren die Sequenzdaten für jedes Applet die Sätze von Applets, die dem gegenwärtigen Applet vorausgehen oder nachfolgen, und die Sequenzinformationen müssen inhärent mit dem aktuellen Appletcode verbunden sein.
- Der spezielle vorausgehende- und nachfolgende Code * wird als Wildcard verwendet. Ein vorausgehender Code * zeigt an, dass vom Standpunkt des gegenwärtigen Applets aus jegliches andere Applet vor diesem ausgeführt werden kann. Z. B. ist in
3 das Vorhergehende zu Applet 1 als * bezeichnet, was anzeigt, dass das Applet 1 keinerlei Beschränkungen für ein Applet, falls vorhanden, auferlegt, das zuvor ausgeführt wurde. Applet 2 andererseits legt speziell fest, dass sein Nachfolger Applet 3 sein soll. So erlaubt, sogar wenn Applet 1 dem Applet 2 zugesteht, sein Vorgänger zu sein, Applet 2 dem Applet 1 nicht, dessen Nachfolger zu sein. Mit anderen Worten, die Ausführung eines Applet findet nur statt, wenn sowohl die Vorgängerbedingung als auch die Nachfolgebedingung erfüllt sind. - Andere Arten von Wildcards als * sind vorstellbar, die unterschiedliche Beschränkungen für Applets oder unterschiedliche Appletuntergruppen beschreiben.
- Zwei Hauptausführungsbeispiele der vorliegenden Erfindung werden nachfolgend beschrieben. In dem ersten Ausführungsbeispiel, dargestellt in
3 , werden der Appletbezeichner, die Vorgänger-/Nachfolgerinformationen und der Appletcode in der externen Vorrichtung, außerhalb der Reichweite von Manipulationen durch den Gegner, gespeichert. In einem zweiten Ausführungsbeispiel, dargestellt in4 , sind der Appletbezeichner und die Vorgänger-/Nachfolgerinformationen in den tatsächlichen Appletcode eingebunden, der dann mittels Standardverschlüsselungstechniken für die Integrität und/oder Vertrauenswürdigkeit geschützt wird. -
3 zeigt Sequenzdaten und die Ablaufüberwachung der externen Vorrichtung in dem oben dargelegten Beispiel. Bei dieser Figur werden sowohl die Vorgänger- als auch die Nachfolge-Sequenzdaten verwendet und im Ablauf dargestellt, um das Erfindungskonzept zu erläutern. Beispielsweise weist das verschlüsselte Applet 1 in der Host-Softwareanwendung keinen spezifischen Vorgänger auf, hat jedoch Applet 2 als alleinigen rechtmäßigen Nachfolger; Applet 2 hat Applet 1 als einzigen Vorgänger und Applet 3 als dessen einzigen Nachfolger; und Apple 3 hat Applet 2 als dessen einzigen Vorgänger, aber keinen spezifischen Nachfolger. - Mit Bezug auf die Ablaufdarstellung der externen Vorrichtung wurde zum Zeitpunkt t1 (die dem Speicherzustand t1 in Speicher
222 in der3 entspricht) Applet 1 ausgeführt und war Applet 1 das letzte auszuführende Applet; zum Zeitpunkt t2 (der dem Speicherzustand 2 in Speicher222 entspricht) wurden die Applets 1 und 2 ausgeführt und war Applet 2 der letzte auszuführende Block ; und zum Zeitpunkt t3 (der dem Speicherzustand 3 in Speicher222 entspricht) wurden die Applets 1,2 und 3 ausgeführt und war Applet 3 der letzte auszuführende Block. - Die Vorgänger- und Nachfolgedaten werden mit den durch die externe Vorrichtung
200 beobachteten Daten abgeglichen, bevor der Codeblock ausgeführt werden kann. Bevor beispielsweise Applet 2 ausgeführt wird, sieht die externe Vorrichtung200 die rechtmäßigen Vorgänger des Applet 2 in dem Speicher224 in der3 nach, das heißt, Applet 1, überprüft sodann, ob das Applet 1 tatsächlichen das in dem vorangehenden Zustand t1 in dem Speicher222 ausgeführte Applet war. Die externe Vorrichtung200 prüft dann, ob das gegenwärtige Applet 2 ein rechtmäßiger Nachfolger des Applet 1 ist, indem es die Nachfolgerinformationen in dem vorigen Zustand t1 in dem Speicher222 nachschaut. Falls dem so ist, wird Applet 2 ausgeführt. Falls nicht, kann Applet 2 nicht ausgeführt werden. - Es sei nun erneut der in
2 dargelegte Angriff mit Blick auf die vorliegende Erfindung und das Ausführungsbeispiel gemäß der3 betrachtet. Wenn ein Gegner den Aufruf an Applet 2 durch einen Aufruf an Applet 3 ersetzt, wird die externe Vorrichtung200 Applet 3 nicht ausführen, weil der Nachfolger von Applet 1 gemäß dem Speicher224 allein Applet 2 sein kann und eben so wenig, weil der Vorgänger des Applet 3 gemäß demselben Speicher224 Applet 2 ist und nicht Applet 1 wie der Zustand t1 des Speichers222 ergibt. -
4 zeigt ein zweites Ausführungsbeispiel der vorliegenden Erfindung. Hier sind verschlüsselte Sequenzdaten1221 ,1222 und1223 in jeweils unterschiedliche Applets eingebettet, wodurch sie den Speicher224 der3 entlasten. Während der Ausführung erhält die externe Vorrichtung200 Applets von dem Host-Softwareprogramm122 . Für jedes erhaltene Applet verifiziert die externe Vorrichtung200 , dass dieses Applet einen gültigen Ausführungsweg gemäß den in dem Appletausführungswegspeicher222 gespeicherten Weg befolgt. Wenn z. B. die externe Vorrichtung200 Applet 2 erhält, wird das Applet als erstes entschlüsselt, sodann schaut die externe Vorrichtung200 den rechtmäßigen Vorgänger des Applet 2 in dem Appletkörper1222 nach, der sich als Applet 1 herausstellt, und überprüft sodann, ob Applet 1 tatsächlich als letztes in dem vorangehenden Zustand t1 in dem Speicher222 ausgeführt wurde. Sodann überprüft die externe Vorrichtung200 , ob das gegenwärtige Applet 2 ein rechtmäßiger Nachfolger des Applet 1 ist, indem es die Nachfolgeinformationen in dem vorigen Zustand t1 in dem Speicher222 nachsieht. Falls dem so ist, wird Applet 2 ausgeführt. Falls nicht, kann Applet 2 nicht ausgeführt werden. - Es sei erneut der in
2 dargestellte Angriff mit Blick auf die vorliegende Erfindung und das Ausführungsbeispiel gemäß der4 betrachtet. Falls ein Gegner den Aufruf an Applet 2 durch einen Aufruf an Applet 3 ersetzt, wird die externe Vorrichtung200 Applet 3 nicht ausführen, weil der Nachfolger für Applet 1 nach dem Speicher224 allein Applet 2 sein kann, und ebenso wenig, weil der Vorgänger von Applet 3 nach demselben Speicher224 Applet 2 ist und nicht Applet 1, wie der Zustand t1 des Speichers222 ergibt. - Die in den
3 und4 erläuterten Ausführungsbeispiele haben jeweils ihre Vorteile:3 ermöglicht das Speichern der Applets und der zugeordneten Vorgänger- und Nachfolgerdaten in dem Speicher224 innerhalb der externen Vorrichtung200 . Dies reduziert die Kommunikation zwischen dem Host100 und der externen Vorrichtung200 . - Zur Laufzeit werden allein der Appletbezeichner und die zugeordneten VO-Parameter zwischen der Hostanwendung
122 und der externen Vorrichtung200 übertragen. Andererseits reduziert das Speichern der verschlüsselte Applets in dem Hostspeicher110 und das Zulassen, dass diese während der Laufzeit in die externe Vorrichtung200 geladen werden, den Speicherverbrauch in der externen Vorrichtung200 . Diese Ansätze können kombiniert werden. - Die Applets 1,2 und 3 in
3 und4 werden in strikt aufeinander folgender Reihenfolge (Sequenz) ausgeführt. Jedes Applet hat genau einen Vorgänger und genau einen Nachfolger. Bei Softwareanwendungen ist dies ein Spezialfall und nicht der Regelfall. Der Stand der Technik bietet eine Lösung für diesen Spezialfall:
Standardverschlüsselungsverfahren lehren Kettenverschlüsselungsverfahren wie z. B. die Ziffer-Blockverkettung (CBC), definiert in Federal Information Processing Standards Publication 81, DES Modes of Operation, Dezember 1980 (FIPS PUB 81), wobei ein Ziffernblock kryptografisch mit dem vorangehenden verknüpft ist. Bei Verwendung von CBC ist es nicht möglich, Applet i + 1 zu entschlüsseln und für den hier beschriebenen Zweck auszuführen, ohne zuvor Applet i entschlüsselt und ausgeführt zu haben. Weiterhin bietet für einige Verschlüsselungsblöcke i + 1 der kryptografische Verkettungsmechanismus keine Lösung für das Problem, zwei verschiedene Blöcke i und i' zu haben, die beide eine richtige Entschlüsselung des Blocks i + 1 abdecken. -
5 zeigt, dass die vorliegende Erfindung eine allgemeine Lösung für die Überwachung mehrerer alternativer Appletausführungswege bietet und dabei die Begrenzungen des kryptografischen Verkettungsmechanismuses und des sonstigen Standes der Technik überwindet. In5 weist das Applet 4 zwei mögliche Vorgänger auf; die Applets 2 und 3. dies spiegelt sich wieder in dem Eintrag für Applet 4 in Speicher224 , der die externe Vorrichtung informiert, dass beide Applets 2 und 3 rechtmäßige Vorgänger des Applets 4 sind. - Die vorliegende Erfindung wird geringfügig verallgemeinert, um mehrere manipulationensichere externe Vorrichtung zu handhaben: Aus Sicht der Host-Softwareanwendung hat sie die Fähigkeit, Aufrufe für Applets auf mehreren (unterschiedlichen) externen Vorrichtung durchzuführen. Ebenso kann aus Sicht einer externe Vorrichtung jede Anzahl von Anwendungen von unterschiedlichen Hosts (und sogar von anderen externen Vorrichtung) Aufrufe an Applets innerhalb der gegenwärtigen externe Vorrichtung durchführen, ohne den hier beschriebenen Sicherheitsmechanismus zu stören.
- Die vorliegende Erfindung kann auch ausgeweitet werden, um es jedem einzelnen Applet zu ermöglichen, auf einem Satz von mehr als einer externen Vorrichtung ausgeführt zu werden. Bei diesem Szenario muss die externe Vorrichtung, die momentan dafür zuständig ist, zu bestimmen, ob ein Applet ausgeführt werden darf, den relevanten Ausführungsweg der vorangehenden Applets holen, einschließlich eines Mechanismus, um die Integrität dieser Informationen zu sichern, um dadurch zu bestimmen, ob dem aktuellen Applet das Recht zusteht, ausgeführt zu werden oder nicht.
- Bei den oben beschriebenen Ausführungsbeispielen können Änderungen gemacht werden, ohne von dem breiten erfinderischen Konzept abzuweichen. Die vorliegende Erfindung ist daher nicht begrenzt auf die einzelnen offen gelegten Ausführungsbeispiele, sondern richtet sich darauf, Modifikationen innerhalb des Bereichs der vorliegenden Erfindung wie beansprucht abzudecken.
Claims (17)
- Verfahren zur Ausführung von Softwarecode eines Softwareprogramms in einer Mehrprozessor-computerumgebung, wobei der Softwarecode (i) einen ersten in einem Computer (
100 ) auszuführenden Abschnitt und (ii) einen zweiten Abschnitt umfaßt, wobei der zweite Abschnitt eine Mehrzahl unterschiedlicher Codeblöcke aufweist, von denen wenigstens einige der Codeblöcke diesen zugeordnete Sequenzdaten aufweisen, wobei das Verfahren umfaßt: (a) Ausführen des zweiten Codeabschnitts in einer oder mehreren manipulationssicheren Vorrichtungen (200 ), die mit dem Computer (100 ) kommunizieren, und, (b) falls in dem gegenwärtigen Codeblock, der in der einen oder den mehreren manipulationssicheren Vorrichtungen) (200 ) ausgeführt werden soll, Sequenzdaten existieren, Benutzen der Sequenzdaten zur Festlegung, ob die Ausführung des Codeblocks zulässig ist, oder unterbunden werden soll. - Verfahren nach Anspruch 1, wobei die Codeblöcke, die verbundene Sequenzdaten aufweisen, jeder (i) eine Applet ID, (ii) vorlaufende Daten, die einen oder mehrere spezifische Codeblöcke an Code anzeigen, der unmittelbar vor dem Codeblock, der die verbundene Sequenzdaten aufweist, ausgeführt werden muß, (iii) nachlaufende Daten, die einen oder mehrere spezifische Codeblöcke anzeigen, der unmittelbar nach dem Codeblock, der die zugeordneten Sequenzdaten aufweist, ausgeführt werden muß, und (iv) Appletcode aufweisen.
- Verfahren nach Anspruch 2, wobei der Applet-Identifier, die Sequenzdaten und der Appletcode jeweils in der manipulationssicheren Vorrichtung gespeichert (
224 ) sind. - Verfahren nach Anspruch 2, wobei der Applet-Identifier und die Sequenzdaten in den Appletcode (1221-1223) eingebunden sind, und der zweite Codeabschnitt verschlüsselt ist, der den Applet-Identifier, die Sequenzdaten und den Appletcode enthält.
- Verfahren nach Anspruch 1, wobei der zweite Codeabschnitt verschlüsselt ist, wobei das Verfahren weiter umfasst: (c) Entschlüsseln des zweiten Codeabschnitts in der einen oder den mehreren manipulationssicheren Vorrichtung(en) (
200 ) vor der Ausführung. - Verfahren nach Anspruch 1, weiter umfassend: (c) Nachverfolgen von Daten in der einen oder den mehreren manipulationssicheren Vorrichtung(en) (
200) , dabei Betrachten, welche Codeblöcke des zweiten Abschnitts darin ausgeführt wurden, wobei Schritt (b) weiter ein Vergleichen der Sequenzdaten im gegenwärtigen Codeblock, der mit den nachverfolgten Daten auszuführen ist, aufweist, um festzulegen, ob die Ausführung des Codeblocks zulässig ist oder unterbunden werden soll. - Verfahren nach Anspruch 1, wobei die Mehrzahl an unterschiedlichen Codeblöcken innerhalb des ersten Codeabschnitts verstreut ist.
- Verfahren nach Anspruch 1, weiter umfassend: (c) Senden des zweiten Codeabschnitts an die eine oder die mehreren manipulationssicheren Vorrichtung(en) (
200 ) zur Ausführung darin durch den Computer (100 ), Erhalten von Rückstatusinformationen aus der einen oder den mehreren manipulationssicheren Vorrichtung(en) (200 ) über die erfolgreiche Ausführung des zweiten Codeabschnitts durch den Computer (100 ). - Verfahren nach Anspruch 1, wobei die eine oder die mehreren manipulationssichere(n) Vorrichtung(en) (
200 ) Smart-Karten sind. - Verfahren nach Anspruch 1, wobei die eine oder die mehreren manipulationssichere(n) Vorrichtungen) (
200 ) USB-Schlüssel sind. - Verfahren nach Anspruch 1, wobei die eine oder die mehreren manipulationssichere(n) Vorrichtungen) (
200 ) PCMCIA-Karten sind. - Verfahren nach Anspruch 1, wobei die eine oder die mehreren manipulationssichere(n) Vorrichtungen) (
200 ) in den Computer (100 ) integrierte Microcontroller sind. - Verfahren nach Anspruch 1, wobei die Codeblöcke Applets sind.
- Verfahren nach Anspruch 1, wobei die Sequenzdaten Platzhalterdaten sind, die anzeigen, dass entweder jeder Codeblock unmittelbar vor dem Codeblock, der die mit diesem zugeordneten Platzhalterdaten aufweist, ausgeführt werden kann, oder, dass kein Codeblock unmittelbar vor dem Codeblock, der die diesem zugeordneten Platzhalterdaten aufweist, ausgeführt werden muss.
- Verfahren nach Anspruch 1, wobei der zweite Codeabschnitt in dem Computer (
100 ) gespeichert ist und in die eine oder die mehreren manipulationssichere(n) Vorrichtungen) (200 ) vor der Ausführung heruntergeladen wird. - Verfahren nach Anspruch 1, wobei der zweite Codeabschnitt in der einen oder den mehreren manipulationssicheren Vorrichtungen) (
200 ) gespeichert ist und auf den Empfang von Befehlen von dem ersten Codeabschnitt hin angewiesen wird auszuführen. - Verfahren nach Anspruch 1, wobei der Softwarecode Teil eines Softwareanwendungsprogramms ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/NO2001/000201 WO2002093365A1 (en) | 2001-05-11 | 2001-05-11 | Sequence numbering mechanism to ensure execution order integrity of inter-dependent smart card applications |
Publications (2)
Publication Number | Publication Date |
---|---|
DE60100363D1 DE60100363D1 (de) | 2003-07-17 |
DE60100363T2 true DE60100363T2 (de) | 2004-05-06 |
Family
ID=19904215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE60100363T Expired - Fee Related DE60100363T2 (de) | 2001-05-11 | 2001-05-11 | Sequenznummerierungsmechanismus zur sicherung der ausführungsordnungs-integrietät von untereinander abhängigen smart-card anwendungen |
Country Status (10)
Country | Link |
---|---|
US (1) | US6490720B1 (de) |
EP (1) | EP1305708B1 (de) |
AT (1) | ATE242892T1 (de) |
CA (1) | CA2446489A1 (de) |
DE (1) | DE60100363T2 (de) |
DK (1) | DK1305708T3 (de) |
ES (1) | ES2201038T3 (de) |
NO (1) | NO20034816L (de) |
PT (1) | PT1305708E (de) |
WO (1) | WO2002093365A1 (de) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6938244B1 (en) | 1999-05-11 | 2005-08-30 | Microsoft Corp. | Interlaced protocol for smart card application development |
US6845498B1 (en) * | 1999-05-11 | 2005-01-18 | Microsoft Corporation | Method and apparatus for sharing data files among run time environment applets in an integrated circuit card |
US6912528B2 (en) * | 2000-01-18 | 2005-06-28 | Gregg S. Homer | Rechargeable media distribution and play system |
US7272228B2 (en) * | 2003-06-12 | 2007-09-18 | International Business Machines Corporation | System and method for securing code and ensuring proper execution using state-based encryption |
DE10340411B4 (de) * | 2003-09-02 | 2005-10-13 | Infineon Technologies Ag | Vorrichtung und Verfahren zur sicheren Ausführung eines Programms |
US7730318B2 (en) * | 2003-10-24 | 2010-06-01 | Microsoft Corporation | Integration of high-assurance features into an application through application factoring |
US7426752B2 (en) * | 2004-01-05 | 2008-09-16 | International Business Machines Corporation | System and method for order-preserving encryption for numeric data |
US20050204405A1 (en) * | 2004-03-04 | 2005-09-15 | Brian Wormington | Method and system for digital rights management |
EP1754146A4 (de) * | 2004-04-26 | 2009-04-22 | Google Inc | Verfahren und systeme zum dynamischen erstellen verteilter interaktiver anwendungen aus hohen programmiersprachen |
ES2255814B1 (es) * | 2004-05-31 | 2007-07-01 | Administracion De La Comunidad Autonoma De Euskadi | Dispositivo de establecimiento, ejecucion y obtencion del resultado de la ejecucion de una tarea. |
EP1698958A1 (de) * | 2005-02-25 | 2006-09-06 | Axalto SA | Verfahren zur Sicherung des Schreibens im Speicher gegen Strahlungsangriffe oder ähnliches |
WO2007145366A1 (en) | 2006-06-15 | 2007-12-21 | Kabushiki Kaisha Toshiba | Portable electronic device and control method thereof |
US20080133419A1 (en) * | 2006-12-05 | 2008-06-05 | Brian Wormington | Secure financial transaction system and method |
KR101224717B1 (ko) * | 2008-12-26 | 2013-01-21 | 에스케이플래닛 주식회사 | 소프트웨어 라이센스 보호 방법과 그를 위한 시스템, 서버,단말기 및 컴퓨터로 읽을 수 있는 기록매체 |
US9934377B2 (en) * | 2015-11-20 | 2018-04-03 | Atmel Corporation | Input/output parameter selection |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4558176A (en) | 1982-09-20 | 1985-12-10 | Arnold Mark G | Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software |
CA1322422C (en) * | 1988-07-18 | 1993-09-21 | James P. Emmond | Single-keyed indexed file for tp queue repository |
JP3290280B2 (ja) * | 1994-01-13 | 2002-06-10 | 株式会社東芝 | 情報処理装置 |
FR2723652B1 (fr) | 1994-08-11 | 1996-09-13 | Cegelec | Procede pour ordonnancer des taches successives |
US6157721A (en) * | 1996-08-12 | 2000-12-05 | Intertrust Technologies Corp. | Systems and methods using cryptography to protect secure computing environments |
US5651068A (en) | 1995-03-08 | 1997-07-22 | Hewlett-Packard Company | International cryptography framework |
NO302388B1 (no) | 1995-07-13 | 1998-02-23 | Sigurd Sigbjoernsen | Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse |
US5825877A (en) | 1996-06-11 | 1998-10-20 | International Business Machines Corporation | Support for portable trusted software |
US5841869A (en) | 1996-08-23 | 1998-11-24 | Cheyenne Property Trust | Method and apparatus for trusted processing |
US5917913A (en) | 1996-12-04 | 1999-06-29 | Wang; Ynjiun Paul | Portable electronic authorization devices and methods therefor |
US5933640A (en) * | 1997-02-26 | 1999-08-03 | Digital Equipment Corporation | Method for analyzing and presenting test execution flows of programs |
US6126328A (en) | 1997-02-28 | 2000-10-03 | Oracle Corporation | Controlled execution of partitioned code |
GB2328042B (en) | 1997-07-26 | 2002-10-09 | Ibm | Smartcard transaction processing |
US6117185A (en) * | 1997-09-24 | 2000-09-12 | International Business Machines Corporation | Skip list data storage during compilation |
US6061449A (en) | 1997-10-10 | 2000-05-09 | General Instrument Corporation | Secure processor with external memory using block chaining and block re-ordering |
US6038646A (en) | 1998-01-23 | 2000-03-14 | Sun Microsystems, Inc. | Method and apparatus for enforcing ordered execution of reads and writes across a memory interface |
US6205465B1 (en) * | 1998-07-22 | 2001-03-20 | Cisco Technology, Inc. | Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information |
US6223287B1 (en) * | 1998-07-24 | 2001-04-24 | International Business Machines Corporation | Method for establishing a secured communication channel over the internet |
FR2792431B1 (fr) * | 1999-04-19 | 2001-07-13 | Canon Kk | Dispositif et procede pour filtrer et/ou delivrer des paquets de donnees entrants a des applications clientes dans des architectures de communication a acces direct au reseau |
-
2001
- 2001-05-11 WO PCT/NO2001/000201 patent/WO2002093365A1/en active Application Filing
- 2001-05-11 PT PT01938842T patent/PT1305708E/pt unknown
- 2001-05-11 ES ES01938842T patent/ES2201038T3/es not_active Expired - Lifetime
- 2001-05-11 CA CA002446489A patent/CA2446489A1/en not_active Abandoned
- 2001-05-11 DK DK01938842T patent/DK1305708T3/da active
- 2001-05-11 AT AT01938842T patent/ATE242892T1/de not_active IP Right Cessation
- 2001-05-11 DE DE60100363T patent/DE60100363T2/de not_active Expired - Fee Related
- 2001-05-11 EP EP01938842A patent/EP1305708B1/de not_active Expired - Lifetime
- 2001-06-26 US US09/891,490 patent/US6490720B1/en not_active Expired - Fee Related
-
2003
- 2003-10-28 NO NO20034816A patent/NO20034816L/no not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
EP1305708B1 (de) | 2003-06-11 |
US6490720B1 (en) | 2002-12-03 |
NO20034816L (no) | 2004-03-10 |
WO2002093365A1 (en) | 2002-11-21 |
CA2446489A1 (en) | 2002-11-21 |
DE60100363D1 (de) | 2003-07-17 |
PT1305708E (pt) | 2003-10-31 |
NO20034816D0 (no) | 2003-10-28 |
EP1305708A1 (de) | 2003-05-02 |
DK1305708T3 (da) | 2003-07-14 |
ATE242892T1 (de) | 2003-06-15 |
ES2201038T3 (es) | 2004-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60100363T2 (de) | Sequenznummerierungsmechanismus zur sicherung der ausführungsordnungs-integrietät von untereinander abhängigen smart-card anwendungen | |
DE4339460C1 (de) | Verfahren zur Authentifizierung eines Systemteils durch ein anderes Systemteil eines Informationsübertragungssystems nach dem Challenge-and Response-Prinzip | |
DE69724235T2 (de) | Computersystem und Verfahren zum Schutz von Software | |
DE69635868T2 (de) | Verfahren und vorrichtung zum kryptographisch gesteuerten betrieb eines zusatzgeräts | |
DE69815599T2 (de) | Verfahren und Vorrichtung zum Schutz von Anwendungsdaten in sicheren Speicherbereichen | |
DE69534757T2 (de) | System und Verfahren zur sicheren Speicherung und Verteilung von Daten unter Verwendung digitaler Unterschriften | |
DE69819485T2 (de) | Verfahren und vorrichtung zur sicheren verarbeitung kryptographischer schlüssel | |
EP0155399A2 (de) | Schutzanordnung zur Verhinderung der unerlaubten Ausführung eines Programms | |
DE112008003931T5 (de) | Systeme und Verfahren für Datensicherheit | |
DE60002687T2 (de) | Techniken zum gewähren des zugriffs durch eine kontextsperre in einem gerät mit kleinem platzbedarf unter verwendung von laufzeitumgebungsprivilegien | |
DE10200288A1 (de) | Eine Vorrichtung zur Ausführung von Anwendungen, die sichere Transaktionen und/oder Zugangskontrolle zu werthaltigen Inhalten und/oder Dienstleistungen umfassen, und Verfahren zum Schutz einer solchen Vorrichtung | |
DE69720972T2 (de) | Computersystem und Verfahren zum Schutz von Software | |
DE3321910A1 (de) | Vorrichtung und verfahren zum schuetzen von software | |
DE112006004173T5 (de) | Schutz eines programmierbaren Speichers gegen unberechtigte Veränderung | |
DE112019007421T5 (de) | Speichergerät mit sicherer testmoduseingabe | |
DE602004011965T2 (de) | Verfahren und schaltung zum identifizieren und/oder verifizieren von hardware und/oder software eines geräts und eines mit dem gerät arbeitenden datenträgers | |
EP1150190B1 (de) | Vorrichtung und Verfahren zur Steuerung und/oder Regelung einer Anlage | |
DE602004001293T2 (de) | Programmintegritätsprüfung mittels Statistiken | |
EP3963490B1 (de) | Verfahren und vorrichtung zum übertragen eines boot-codes mit verbesserter datensicherheit | |
DE102020206039A1 (de) | Erstellen einer Container-Instanz | |
EP1506473B1 (de) | Ausspähungsgeschützte modulare inversion | |
DE102018115758A1 (de) | Sicherheit von Java-Card-Schlüsselobjekten | |
DE60216106T2 (de) | Geschützte lesung von rechnerbefehlen in einem datenverarbeitungssystem | |
DE102015112837A1 (de) | Vorrichtung und Verfahren zur Verhinderung des Klonens von Code | |
DE112005002314T5 (de) | Mechanismus zum Erzeugen eingeschränkter und uneingeschränkter Ausführungsumgebungen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |