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 PDF

Info

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
Application number
DE60100363T
Other languages
English (en)
Other versions
DE60100363D1 (de
Inventor
Ulf Carlsen
Hakon Hammerstad
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.)
Sospita AS
Original Assignee
Sospita AS
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 Sospita AS filed Critical Sospita AS
Publication of DE60100363D1 publication Critical patent/DE60100363D1/de
Application granted granted Critical
Publication of DE60100363T2 publication Critical patent/DE60100363T2/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/465Distributed 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 der 1 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 in 4, 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 der 3 entspricht) Applet 1 ausgeführt und war Applet 1 das letzte auszuführende Applet; zum Zeitpunkt t2 (der dem Speicherzustand 2 in Speicher 222 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 Speicher 222 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 Vorrichtung 200 die rechtmäßigen Vorgänger des Applet 2 in dem Speicher 224 in der 3 nach, das heißt, Applet 1, überprüft sodann, ob das Applet 1 tatsächlichen das in dem vorangehenden Zustand t1 in dem Speicher 222 ausgeführte Applet war. Die externe Vorrichtung 200 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 Speicher 222 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äß der 3 betrachtet. Wenn ein Gegner den Aufruf an Applet 2 durch einen Aufruf an Applet 3 ersetzt, wird die externe Vorrichtung 200 Applet 3 nicht ausführen, weil der Nachfolger von Applet 1 gemäß dem Speicher 224 allein Applet 2 sein kann und eben so wenig, weil der Vorgänger des Applet 3 gemäß demselben Speicher 224 Applet 2 ist und nicht Applet 1 wie der Zustand t1 des Speichers 222 ergibt.
  • 4 zeigt ein zweites Ausführungsbeispiel der vorliegenden Erfindung. Hier sind verschlüsselte Sequenzdaten 1221,1222 und 1223 in jeweils unterschiedliche Applets eingebettet, wodurch sie den Speicher 224 der 3 entlasten. Während der Ausführung erhält die externe Vorrichtung 200 Applets von dem Host-Softwareprogramm 122. Für jedes erhaltene Applet verifiziert die externe Vorrichtung 200, dass dieses Applet einen gültigen Ausführungsweg gemäß den in dem Appletausführungswegspeicher 222 gespeicherten Weg befolgt. Wenn z. B. die externe Vorrichtung 200 Applet 2 erhält, wird das Applet als erstes entschlüsselt, sodann schaut die externe Vorrichtung 200 den rechtmäßigen Vorgänger des Applet 2 in dem Appletkörper 1222 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 Speicher 222 ausgeführt wurde. Sodann überprüft die externe Vorrichtung 200, 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 Speicher 222 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äß der 4 betrachtet. Falls ein Gegner den Aufruf an Applet 2 durch einen Aufruf an Applet 3 ersetzt, wird die externe Vorrichtung 200 Applet 3 nicht ausführen, weil der Nachfolger für Applet 1 nach dem Speicher 224 allein Applet 2 sein kann, und ebenso wenig, weil der Vorgänger von Applet 3 nach demselben Speicher 224 Applet 2 ist und nicht Applet 1, wie der Zustand t1 des Speichers 222 ergibt.
  • Die in den 3 und 4 erläuterten Ausführungsbeispiele haben jeweils ihre Vorteile: 3 ermöglicht das Speichern der Applets und der zugeordneten Vorgänger- und Nachfolgerdaten in dem Speicher 224 innerhalb der externen Vorrichtung 200. Dies reduziert die Kommunikation zwischen dem Host 100 und der externen Vorrichtung 200.
  • Zur Laufzeit werden allein der Appletbezeichner und die zugeordneten VO-Parameter zwischen der Hostanwendung 122 und der externen Vorrichtung 200 übertragen. Andererseits reduziert das Speichern der verschlüsselte Applets in dem Hostspeicher 110 und das Zulassen, dass diese während der Laufzeit in die externe Vorrichtung 200 geladen werden, den Speicherverbrauch in der externen Vorrichtung 200. Diese Ansätze können kombiniert werden.
  • Die Applets 1,2 und 3 in 3 und 4 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. In 5 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 Speicher 224, 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)

  1. 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.
  2. 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.
  3. Verfahren nach Anspruch 2, wobei der Applet-Identifier, die Sequenzdaten und der Appletcode jeweils in der manipulationssicheren Vorrichtung gespeichert (224) sind.
  4. 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.
  5. 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.
  6. 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.
  7. Verfahren nach Anspruch 1, wobei die Mehrzahl an unterschiedlichen Codeblöcken innerhalb des ersten Codeabschnitts verstreut ist.
  8. 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).
  9. Verfahren nach Anspruch 1, wobei die eine oder die mehreren manipulationssichere(n) Vorrichtung(en) (200) Smart-Karten sind.
  10. Verfahren nach Anspruch 1, wobei die eine oder die mehreren manipulationssichere(n) Vorrichtungen) (200) USB-Schlüssel sind.
  11. Verfahren nach Anspruch 1, wobei die eine oder die mehreren manipulationssichere(n) Vorrichtungen) (200) PCMCIA-Karten sind.
  12. Verfahren nach Anspruch 1, wobei die eine oder die mehreren manipulationssichere(n) Vorrichtungen) (200) in den Computer (100) integrierte Microcontroller sind.
  13. Verfahren nach Anspruch 1, wobei die Codeblöcke Applets sind.
  14. 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.
  15. 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.
  16. 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.
  17. Verfahren nach Anspruch 1, wobei der Softwarecode Teil eines Softwareanwendungsprogramms ist.
DE60100363T 2001-05-11 2001-05-11 Sequenznummerierungsmechanismus zur sicherung der ausführungsordnungs-integrietät von untereinander abhängigen smart-card anwendungen Expired - Fee Related DE60100363T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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