PatentDe  


Dokumentenidentifikation DE102006029986A1 03.01.2008
Titel Datenverarbeitungsvorrichtung und Verfahren zum Verarbeiten von Daten
Anmelder Infineon Technologies AG, 81669 München, DE
Erfinder Smola, Michael, 80636 München, DE;
Scheiblhofer, Dietmar, Kaindorf, AT
Vertreter Schoppe, Zimmermann, Stöckeler & Zinkler, 82049 Pullach
DE-Anmeldedatum 29.06.2006
DE-Aktenzeichen 102006029986
Offenlegungstag 03.01.2008
Veröffentlichungstag im Patentblatt 03.01.2008
IPC-Hauptklasse G06F 21/00(2006.01)A, F, I, 20060629, B, H, DE
Zusammenfassung Es wird eine Datenverarbeitungsvorrichtung (100) mit einer Prüfeinrichtung (120) beschrieben, wobei die Datenverarbeitungsvorrichtung (100) ausgebildet ist, um ein ausführbares Programm auszuführen, wobei das ausführbare Programm einen Bytecode für eine virtuelle Maschine und einen Interpretercode der virtuellen Maschine umfasst, wobei die Datenverarbeitungsvorrichtung (100) ausgebildet ist, um während einer Ausführung des ausführbaren Programms eine Teilsequenz des ausführbaren Programms wiederzugewinnen, wobei der Teilsequenz ein Prüfwert zugeordnet ist, basierend auf dem der Teilsequenz zugeordneten Prüfwert und der Teilsequenz durch die Prüfeinrichtung (120) nach der Ausführung der Teilsequenz zu überprüfen, ob der Prüfwert und die Teilsequenz zueinander passen, und eine Nachricht zu erzeugen, wenn der Prüfwert und die Teilsequenz nicht zueinander passen, wobei die Teilsequenz eine Befehlssequenz des Interpretercodes darstellt und wobei die Datenverarbeitungsvorrichtungsvorrichtung (100) ferner ausgebildet ist, um vor einer Ausführung einer Teilsequenz automatisch die Prüfeinrichtung (120) zu initialisieren.

Beschreibung[de]
Hintergrund der Erfindung

Die vorliegende Erfindung bezieht sich auf eine Datenverarbeitungsvorrichtung und ein Verfahren zum Verarbeiten von Daten, wie z.B. auf Datenverarbeitungsvorrichtungen, die gegen Codemanipulationen und Ablaufstörungen geschützt werden sollen, wie beispielsweise Chipkarten (Smartcards), Sicherheitscontroller und andere, die Sicherheit betreffende Datenverarbeitungsvorrichtungen.

Chipkarten und andere Sicherheitscontroller sind häufig schon aufgrund des Wertes, der durch sie geschützt wird, Angriffen ausgesetzt. So werden Chipkarten beispielsweise im Bereich der Zugangssicherung zu abgesperrten Bereichen, zur Zugangssicherung zu Computersystemen und anderen elektronischen Systemen, aber auch zum Schutz von persönlichen und anderen geheimen Daten eingesetzt.

Im Bereich von Chipkarten und Sicherheitscontrollern besteht so beispielsweise die Gefahr, dass durch Manipulationen physikalischer Umweltparameter, etwa durch Einstrahlen von Licht oder anderer Strahlung, durch Variation der Temperatur oder durch Eingriffe in die Energieversorgung der Chipkarte bzw. der Sicherheitscontroller die Funktion von integrierten elektronischen Schaltungen so beeinflusst wird, dass die Sicherheitsfunktionen der Chipkarte eingeschränkt oder vollständig ausgehebelt werden kann. Speziell beim Einsatz von Prozessoren, wie sie auf Chipkarten heute häufig anzutreffen sind, besteht das Risiko, dass durch geeignete Störungen der Programmablauf einer auf dem Prozessor ablaufenden Software verändert wird.

Um bei Chipkarten und anderen Sicherheitscontrollern eine möglichst einfache Programmierung derselben zu ermöglichen, werden Chipkarten und andere Sicherheitscontroller häufig mit sogenannten „Virtual Machine Betriebssystemen" ausgerüstet, wie z. B. Java. Diese Betriebssysteme bzw. Programmiersprachen werden als Virtual Machine Betriebssysteme oder Programmiersprachen bezeichnet, da sie dem Programmierer einen virtuellen Computer bzw. eine virtuelle Maschine (Virtual Machine) bereitstellen, die der Programmierer dann im Rahmen der Softwareentwicklung programmieren kann. Das Betriebssystem bzw. die Programmiersprache setzt dann die Befehle (Programmbefehls) des Programmierers an die virtuelle Maschine in Befehle bzw. Prozessorbefehle und Instruktionen um, die der Prozessor der Chipkarte bzw. des Sicherheitscontrollers verarbeiten kann. Diese Aufgabe wird von einem sogenannten Virtual Machine Interpreter durchgeführt, der seinerseits als Computerprogramm bzw. Interpretercode auf dem Prozessor ausgeführt wird.

Typischerweise wird der Code bzw. das Programm der Virtual Machine Interpreter mittels geeigneter Speicherverschlüsselungen bzw. Speichersignaturen gesichert, die Manipulationen an Speicherinhalten erkennbar machen bzw. diese verhindern können. Diese Verfahren erlauben jedoch keine Angriffserkennung zur Ausführungszeit der Virtual Machine Interpreter bzw. der auf diesen ablaufenden Programmen. Diese Art von Angriffen wird typischerweise durch aufwendige, meist analoge Sensoren für verschiedene physikalische Störgrößen bekämpft. Neben dem Aufwand für die Realisierung einer Vielzahl dieser Sensoren ist deren Einsatzbereich darüber hinaus dadurch beschränkt, dass der reguläre Betriebs des Chips bzw. der Chipkarte nicht negativ beeinflusst werden darf. Entsprechend schwierig ist eine Abwägung (Trade-Off) zwischen Empfindlichkeit einerseits und der Betriebssicherheit der Schaltung andererseits.

Die Abwägung zwischen Empfindlichkeit einerseits und Betriebssicherheit der Schaltung andererseits ist im höchsten Maße schwierig, da einerseits ein Angriff auf die Chipkarte sicher detektiert werden muss, um einen signifikanten Schaden von dem durch die Chipkarte gesicherten System abzuwenden, während andererseits beispielsweise ein Sicherheitsreset oder eventuell eine Selbstzerstörung der Karte aufgrund eines Fehlalarms für den Benutzer schwerwiegende Folgen haben kann. Im Falle einer Geldkarte könnte der rechtmäßige Benutzer in diesem Fall beispielsweise nicht mehr eine Rechnung bezahlen.

Zusammenfassung der Erfindung

Gemäß einem Ausführungsbeispiel umfasst die vorliegende Erfindung eine Datenverarbeitungsvorrichtung mit einer Prüfeinrichtung, wobei die Datenverarbeitungsvorrichtung ausgebildet ist, um ein ausführbares Programm auszuführen, wobei das ausführbare Programm einen Bytecode für eine virtuelle Maschine und einen Interpretercode der virtuellen Maschine umfasst, wobei die Datenverarbeitungsvorrichtung ausgebildet ist, um während einer Ausführung des ausführbaren Programms:

  • – eine Teilsequenz des ausführbaren Programms wiederzugewinnen, wobei der Teilsequenz ein Prüfwert zugeordnet ist,
  • – basierend auf dem der Teilsequenz zugeordneten Prüfwert und der Teilsequenz durch die Prüfeinrichtung nach der Ausführung der Teilsequenz zu überprüfen, ob der Prüfwert und die Teilsequenz zueinander passen, und
  • – eine Nachricht zu erzeugen, wenn der Prüfwert und die Teilsequenz nicht zueinander passen,
wobei die Teilsequenz eine Befehlssequenz des Interpretercodes darstellt und wobei die Datenverarbeitungsvorrichtung ferner ausgebildet ist, um vor einer Ausführung einer Teilsequenz automatisch die Prüfeinrichtung zu initialisieren.

Gemäß einem weiteren Ausführungsbeispiel umfasst die vorliegende Erfindung eine Datenverarbeitungsanlage zur Ausführung eines ausführbaren Programms, wobei die Datenverarbeitungsanlage eine Prüfschaltung und einen Programm-Zähler aufweist, und wobei das ausführbare Programm einen Bytecode für eine virtuelle Maschine und einen Interpretercode der virtuellen Maschine umfasst, wobei die Datenverarbeitungsanlage während einer Ausführung des ausführbaren Programms aktivierbar ist,

  • – eine Teilsequenz des ausführbaren Programms wiederzugewinnen, wobei der Teilsequenz ein Prüfwert zugeordnet ist,
  • – basierend auf dem der Teilsequenz zugeordneten Prüfwert und der Teilsequenz durch die Prüfschaltung nach der Ausführung der Teilsequenz zu überprüfen, ob der Prüfwert und die Teilsequenz zueinander passen, und
  • – ein Alarmsignal zu erzeugen, wenn der Prüfwert und die Teilsequenz nicht zueinander passen,
wobei die Teilsequenz eine Befehlssequenz des Interpretercodes darstellt, wobei die Datenverarbeitungsanlage ferner dadurch, dass der Programm-Zähler eine vorbestimmte Zählerbedingung erfüllt, aktivierbar ist, die Prüfschaltung mit einem Initialisierungswert automatisch zu initialisieren, der auf dem der Teilsequenz zugeordneten Prüfwert basiert oder einen vorbestimmten Wert aufweist.

Gemäß einem weiteren Ausführungsbeispiel umfasst die vorliegende Erfindung eine Datenverarbeitungsanlage zur Ausführung eines ausführbaren Programms, wobei die Datenverarbeitungsanlage eine Prüfschaltung, einen Programm-Zähler, eine Initialisierungsschaltung und einen Prozessor aufweist, mit einem Speicher gekoppelt ist, und das ausführbare Programm einen Bytecode für eine virtuelle Maschine und einen Interpretercode der virtuellen Maschine umfasst, wobei die Datenverarbeitungsanlage während einer Ausführung des ausführbaren Programms aktivierbar ist, um

  • – eine Teilsequenz des ausführbaren Programms wiederzugewinnen, wobei der Teilsequenz ein Prüfwert zugeordnet ist;
  • – basierend auf dem der Teilsequenz zugeordneten Prüfwert und der Teilsequenz durch die Prüfschaltung nach der Ausführung der Teilsequenz zu überprüfen, ob der Prüfwert und die Teilsequenz zueinander passen; und
  • – ein Alarmsignal zu erzeugen, wenn der Prüfwert und die Teilsequenz nicht zueinander passen,
wobei die Teilsequenz eine Befehlssequenz des Interpretercodes darstellt, wobei die Initialisierungsschaltung mit dem Programm-Zähler gekoppelt ist, um dadurch, dass der Programmzähler eine vorbestimmte Zählerbedingung erfüllt, aktivierbar zu sein, die Prüfschaltung mit einem Initialisierungswert zu initialisieren, der auf dem der Teilsequenz zugeordneten Prüfwert basiert oder einen vorbestimmten Wert aufweist, wobei die Initialisierungsschaltung hart verdrahtet ist, wobei die Prüfschaltung aktivierbar ist, um aus der Teilsequenz einen Vergleichsprüfwert zu bilden und die Überprüfung, ob die Teilsequenz zu dem der Teilsequenz zugeordneten Prüfwert passt, derart durchzuführen, dass die Prüfschaltung überprüft, ob der Vergleichsprüfwert entweder eine vorbestimmte Bedingung erfüllt oder zu dem Prüfwert eine vorbestimmte Beziehung aufweist, und wobei der Speicher die Teilsequenz und den der Teilsequenz zugeordneten Prüfwert aufweist.

Gemäß einem weiteren Ausführungsbeispiel schafft die vorliegende Erfindung ein Verfahren zum Verarbeiten von Daten mit einer Prüfeinrichtung, wobei ein ausführbares Programm ausgeführt wird, wobei das ausführbare Programm einen Bytecode für eine virtuelle Maschine und einen Interpretercode der virtuellen Maschine umfasst, mit folgenden, während einer Ausführung des ausführbaren Programms durchgeführten Schritten:

Wiedergewinnen einer Teilsequenz des ausführbaren Programms, wobei der Teilsequenz ein Prüfwert zugeordnet ist;

basierend auf dem der Teilsequenz zugeordneten Prüfwert und der Teilsequenz durch die Prüfeinrichtung nach der Ausführung der Teilsequenz, Überprüfen, ob der Prüfwert und die Teilsequenz zueinander passen;

Erzeugen einer Nachricht, wenn der Prüfwert und die Teilsequenz nicht zueinander passen; und

automatisch die Prüfeinrichtung (120) vor einer Ausführung der Teilsequenz Initialisieren,

wobei die Teilsequenz eine Befehlssequenz des Interpretercodes darstellt.

Gemäß einem weiteren Ausführungsbeispiel schafft die vorliegende Erfindung ein Verfahren zum Verarbeiten von Daten mit einer Prüfeinrichtung, um ein ausführbares Programm auszuführen, wobei das ausführbare Programm einen Bytecode für eine virtuelle Maschine und einen Interpretercode der virtuellen Maschine umfasst, mit folgenden, während einer Ausführung des ausführbaren Programms durchgeführten Schritten:

Wiedergewinnen einer Teilsequenz des ausführbaren Programms, wobei der Teilsequenz ein Prüfwert zugeordnet ist;

basierend auf dem der Teilsequenz zugeordneten Prüfwert und der Teilsequenz durch die Prüfeinrichtung nach Ausführung der Teilsequenz, Überprüfen, ob der Prüfwert und die Teilsequenz zueinander passen;

Erzeugen einer Nachricht, wenn der Prüfwert und die Teilsequenz nicht zueinander passen; und

vor einer Ausführung der Teilsequenz automatisch die Prüfeinrichtung Initialisieren,

wobei die Teilsequenz eine Befehlssequenz des Interpretercodes darstellt; und

wobei die Initialisierung der Prüfeinrichtung automatisch hart verdrahtet eingeleitet wird, wenn ein Programm-Zähler eine vorbestimmte Bedingung erfüllt.

Gemäß einem weiteren Ausführungsbeispiel umfasst die vorliegende Erfindung ein Computer-Programm mit einem Programmcode zum Durchführen eines der Verfahren zum Verarbeiten von Daten oder zum Durchführen des Verfahrens zum Verarbeiten von Daten nach einem Anspruch oben, wenn das Computer-Programm auf einem Computer abläuft.

Ein Vorteil von Ausführungsbeispielen der vorliegenden Erfindung besteht darin, dass während einer Ausführung eines ausführbaren Programms eine Teilsequenz anhand eines der Teilsequenz zugeordneten Prüfwerts überprüft werden kann, so dass eine erhöhte Sicherheit gegenüber einer Codemanipulation des ausführbaren Programms während der Ausführung des Programms erzielt wird.

Ein weiterer Vorteil von Ausführungsbeispielen der vorliegenden Erfindung besteht darin, dass eine Erhöhung der Sicherheit während der Ausführung des Programms dadurch erreicht werden kann, dass eine Teilsequenz des Programms während der Ausführung des Programms bezüglich eines Prüfwerts, der der Teilsequenz zugeordnet ist, auf ein Zusammenpassen hin dieser mit dem Prüfwert überprüft wird. Besonders vorteilhaft kann dies im Rahmen eines Interpreters für eine virtuelle Maschine implementiert werden.

Ein weiterer Vorteil von Ausführungsbeispielen der vorliegenden Erfindung besteht darin, dass vor einer Ausführung einer Teilsequenz die Prüfeinrichtung automatisch, also ohne ein Zutun des Programmierers beispielsweise in Form eines Prozessorbefehls, initialisiert wird. Hierdurch ergibt sich der weitere wesentliche Vorteil der Ausführungsbeispiele der vorliegenden Erfindung, dass einerseits die Sicherheit gegenüber einer Manipulation einer Teilsequenz gegenüber erheblich verbessert werden kann, während ein Speicherplatzbedarf einer Teilsequenz nur unwesentlich, genauer gesagt nur um die Länge des Prüfwerts, ansteigt. Ein weiterer Vorteil der Ausführungsbeispiele besteht darin, dass der zusätzlich erreichte Schutz nicht nur während der Laufzeit des Programms überprüft werden kann, sondern dass dieser auch zu einer nur geringfügigen bzw. unmerklichen Verlangsamung des Ablaufs des Programms führt.

Kurzbeschreibung der Figuren

Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:

1 ein erstes Ausführungsbeispiel einer erfindungsgemäßen Datenverarbeitungsanlage mit einem Speicher und einem Cachespeicher;

2a ein Ausschnitt aus einem Programm für einen Virtual Machine Interpreter in mnemonischem Code und dem zugehörigen Speicherinhalt;

2b ein Ausschnitt von fünf nativen Befehlssequenzen eines Virtual Machine Interpreters; und

3 ein zweites Ausführungsbeispiel einer erfindungsgemäßen Datenverarbeitungsanlage mit einem Speicher.

Detaillierte Beschreibung der Erfindung

Bezug nehmend auf die 1 bis 3 wird nun ein erstes Ausführungsbeispiel einer erfindungsgemäßen Datenverarbeitungsanlage bzw. einer erfindungsgemäßen Datenverarbeitungsvorrichtung beschrieben.

1 zeigt ein Blockschaltbild einer erfindungsgemäßen Datenverarbeitungsanlage 100, die einen Prozessor bzw. eine CPU 110 (CPU = central processing unit = Zentralprozessor) und eine Signaturhardware 120 umfasst. Der Prozessor 110 und die Signaturhardware 120 sind hierbei miteinander gekoppelt. Die Signaturhardware 120 weist darüber hinaus einen Ausgang 130 auf, an dem die Signaturhardware 120 eine Nachricht bereitstellen kann. Die erfindungsgemäße Datenverarbeitungsanlage 100, genauer gesagt der Prozessor 110, ist darüber hinaus mit einem Speicher 140 über eine Datenleitung direkt verbunden. Der Speicher 140 ist darüber hinaus über einen Cachespeicher 150 auch mittelbar mit dem Prozessor 110 verbunden.

Ist die erfindungsgemäße Datenverarbeitungsanlage 100, der Cachespeicher 150 und der Speicher 140 Teil einer Chipkarte mit einem Virtual Machine Betriebssystem, wie beispielsweise Java, so wird auf dem Prozessor 110 der zu dem Virtual Machine Betriebssystem bzw. zu der Virtual Machine Programmiersprache gehörender Virtual Machine Interpreter (Interpretercode) als Programm ausgeführt. Über die direkte Verbindung des Prozessors 110 und des Speichers 140 kann der Prozessor 110 hierbei auf die zu dem Virtual Machine Interpreter gehörenden Befehlssequenzen, die in dem Speicher 140 abgespeichert sind, unter Umgehung des Cachespeichers 150 zugreifen. Der Virtual Machine Interpreter führt hierbei ein Programm aus, das einen oder mehrere Programmbefehle in Bytecode umfasst und beispielsweise in dem Speicher 140 abgespeichert sein kann. Optional kann das Programm auch in einem anderen Speicher, der in 1 nicht gezeigt ist, gespeichert sein und beispielsweise über eine externe Datenschnittstelle und ein in 1 nicht gezeigtes Bussystem dem Prozessor 110 bereitgestellt werden.

Der Virtual Machine Interpreter selbst ist hierbei in Form von Prozessorbefehlen in dem Speicher 140 umfasst, die der Prozessor 110 direkt ausführen kann. Um dem Prozessor 110 einen möglichst schnellen und effektiven Zugriff auf Daten, beispielsweise Speicherstellen des Speichers 140, zu ermöglichen, die nicht Teil des (Bytecode-) Programms oder des Virtual Machine Interpreters sind, können diese Daten bzw. die zugehörigen Speicheradressen in dem Cachespeicher 150 zwischengespeichert werden.

Virtual Machine Interpreter weisen typischerweise eine größere Menge von relativ kurzen Sequenzen von Prozessorbefehlen, sogenannte Befehlssequenzen auf. Jede dieser Sequenzen bzw. Befehlssequenzen entspricht in seiner Funktion einem einzelnen Befehl einer durch den Virtual Machine Interpreter bereitgestellten virtuellen Maschine bzw. Computers, die auch als Virtual Machine bezeichnet wird. Das Programm, das auf der Virtual Machine abläuft, liegt als sogenannter Bytecode vor. Die Befehlssequenzen werden in dem Speicher 140 typischerweise so angeordnet, dass sie eine Startadresse aufweisen, die in einer eindeutigen Relation zu dem zugehörigen Bytecode, also dem Wert eines Programmbefehls, steht. Weisen beispielsweise alle Befehlssequenzen eine feste und gleiche Größe für alle Bytecodes auf, so kann die Startadresse address einer zu einem bestimmten Bytecode gehörenden Befehlssequenz bis auf eine für alle Befehlssequenzen geltende Startadresse durch die folgende Beziehung definiert werden: address = bytecode·max_size_of_sequence

Hierbei bezeichnet bytecode den Wert des Programmbefehls, also den Bytecode selbst, und die Größe max_size_of_sequence die feste und gleiche Größe der Befehlssequenzen aller Bytecodes. Da im Dualsystem Multiplikationen mit einer Zahl 2n, wobei n eine natürliche Zahl ist, besonders leicht durchzuführen ist, kann die Berechnung der Startadresse address besonders leicht durch den Prozessor 110 durchgeführt werden, wenn die Befehlssequenzen eine Größe aufweisen, die einer Zahl von 2n Bytes oder Datenworten entspricht. Hierdurch wird der Virtual Machine Interpreter in native Befehlssequenzen gegliedert, die einen definierten Startpunkt und einen definierten Endpunkt aufweisen. Im Rahmen dieses Ausführungsbeispiels wird eine solche Sequenz mit einer Signatur markiert, wobei die Signatur im Code der Befehlssequenz selber, also in den Prozessorbefehlen der entsprechenden Teilsequenz verankert werden kann.

Die CPU 110 führt somit insgesamt ein Programm aus, das durch das in Bytecode vorliegende Programm für den Virtual Machine Interpreter sowie durch die Befehlssequenzen des Virtual Machine Interpreters gegeben ist. Die Befehlssequenzen des Virtual Machine Interpreters stellen aufgrund der oben beschriebenen Funktionalität des Virtual Machine Interpreters somit jeweils einzelne Teilsequenzen des ausführbaren Programms dar, die durch den Virtual Machine Interpreter bzw. durch die erfindungsgemäße Datenverarbeitungsanlage 100 während der Laufzeit bzw. während der Ausführung des Programms wiedergewonnen wird.

Zur Überwachung der Signatur wird die spezielle Signaturhardware 120, die mit dem Prozessor 110 gekoppelt ist und die beispielsweise ein LFSR (LFSR = linear feedback shift register = lineares Rückkopplungsschieberegister) umfassen kann, verwendet. Zu Beginn einer Befehlssequenz bzw. Sequenz wird die Prüfeinrichtung bzw. Überwachungshardware automatisch in Form der Signaturhardware 120 in einen definierten Zustand versetzt. Die Signaturhardware wird also automatisch initialisiert. Eine Möglichkeit, eine entsprechende Sicherung zu implementieren, besteht nun darin, während der Abarbeitung der Prozessorbefehle einer Befehlssequenz durch den Prozessor 110 die Abarbeitung der Prozessorbefehle durch die Signaturhardware 120 überwachen zu lassen. Die Signaturhardware 120 ermittelt also auf Basis der Befehlssequenz einen Vergleichsprüfwert, der beispielsweise einer Checksumme vergleichbar ist. Am Ende der Befehlssequenz bzw. der Bytecodesequenz wird der von der Signaturhardware 120 ermittelte Vergleichsprüfwert mit der Signatur bzw. Referenzsignatur bzw. einem Prüfwert, der der betreffenden Befehlssequenz zugeordnet ist, verglichen.

Alternativ kann beispielsweise die Signaturhardware 120 auch mit der Referenzsignatur vorinitialisiert werden, so dass am Ende der Sequenz beispielsweise eine konstante, von der jeweilig ablaufenden Befehlssequenz unabhängige Signatur vorliegt. So kann beispielsweise in diesem Fall die Referenzsignatur so ausgelegt sein, dass unabhängig von der jeweils ablaufenden Befehlssequenz im Falle einer korrekten Abarbeitung der Befehlssequenz und im Falle einer nichtmanipulierten Befehlssequenz die Signatur bzw. der Vergleichsprüfwert 0x00 oder 0xFF vorliegt. Hierbei bezeichnet im Rahmen der vorliegenden Anmeldung eine Zahl, die mit „0x" beginnt, eine Zahl im Hexadezimalsystem. Die Zahl 0x00 entspricht somit im Dezimalsystem der Zahl 0 und die Zahl 0xFF entsprechend der Zahl 255. Stellt im Rahmen der Überprüfung die Signaturhardware 120 fest, dass die Befehlssequenz bzw. die Teilsequenz nicht zu dem ihr zugeordneten Prüfwert passt, dass also beispielsweise der von der Signaturhardware 120 berechnete Vergleichsprüfwert nicht mit dem Prüfwert übereinstimmt oder der Prüfwert nicht nach dem Abschluss der Befehlssequenz den vorbestimmten Wert aufweist, so gibt die Signaturhardware 120 an dem Ausgang 130 eine Nachricht beispielsweise in Form eines Alarmsignals aus, das eine (mögliche) Codemanipulation der Befehlssequenz anzeigt.

Um die Funktionsweise der erfindungsgemäßen Datenverarbeitungsanlage 100 und des erfindungsgemäßen Verfahrens zum Verarbeiten von Daten näher zu erläutern, ist in 2a ein Ausschnitt eines Programms mit einem Programmbefehl und in 2b ein Beispiel eines Ausschnitts aus einem Virtual Machine Interpreter einer JavaCard Virtual Machine dargestellt. Genauer gesagt zeigt 2a eine Gegenüberstellung eines Befehls mit einem Parameter in einer für Menschen angenehmer zu lesenden Form, dem sogenannten mnemonischen Code, und dem zugehörigen Bytecode, wie er beispielsweise in dem Speicher 140 oder einem anderen Speicher abgelegt ist. Genauer gesagt zeigt 2a die Befehlszeile „iload 0x02", der der Bytecode „0x17 0x02" entspricht.

Bei dem in 2b gezeigten Ausschnitt aus dem Virtual Machine Interpreter ist genauer gesagt die Implementierung der Befehlssequenzen 200-15 bis 200-19 der Bytecodes 0x15 bis 0x19 dargestellt, die auch als Native-Sequenzen bezeichnet werden. In 2b sind die Befehlssequenzen 200-15 bis 200-19 in mnemonischen Code so dargestellt, dass die einzelnen Prozessorbefehle der jeweiligen Befehlssequenz in für Menschen besser lesbarer Form dargestellt sind. Hierbei ist in 2b eine Darstellung bzw. Auflistung des Rumpfes der entsprechenden Befehlssequenzen 200-15 bis 200-19 nicht wiedergegeben, da die genaue Implementierung des Rumpfes der Befehlssequenzen 200-15 bis 200-19 nicht erfindungsrelevant ist. Anstelle des Rumpfes der Implementierung ist in 2b vielmehr jeweils eine Auslassmarkierung 210 in Form dreier Punkte wiedergegeben.

Jede Befehlssequenz hat eine feste Adresse bzw. Startadresse, die sich nach dem Schema jc_interpreter_base + bytecode·STEPSIZE errechnet. 2b zeigt dies beispielhaft für die Befehlssequenz 200-17 die Markierung 220-17.

Führt nun der Virtual Machine Interpreter den in 2a gezeigten Befehl aus, so lädt der Prozessor 110 aus dem Speicher 140 die Prozessorbefehle, die der Befehlssequenz 200-17 angehören, indem beginnend von der Startadresse 220-17 ausgehend die Befehle von dem Speicher 140 in den Prozessor 110 übertragen und dort abgearbeitet werden. Nachdem der Prozessor 110 den letzten Prozessorbefehl, der zu dem Rumpf der Befehlssequenz 200-17 gehört, abgearbeitet hat, veranlasst der abschließende NEXT-Befehl 230-17 die Interpreter-Hardware, also den Prozessor 110, dazu, den nächsten Bytecode aus dem in 2A dargestellten Programm für die Virtual Machine zu decodieren und die entsprechende native Sequenz bzw. Befehlssequenz anzuspringen. Hierbei weist der NEXT-Befehl 230-17 den zusätzlichen, in Klammern gesetzten Parameter 2 auf, der den Prozessor 110 anweist, die Speicheradresse, in der der Programmbefehl abgelegt ist, um 2 zu erhöhen, da der iload-Befehl einen Parameter erfordert, so dass der nächste Programmbefehl bezogen auf die Speicheradresse des aktuellen Programmbefehls des Bytecodes um 2 erhöht werden muss.

Mit anderen Worten ausgedrückt wird ein als Programm-Zähler bezeichnetes Register der Virtual Machine durch den NEXT-Befehl 230-17 um 2 erhöht. Die Befehlssequenz 200-18, der der Programmbefehl „aload_0" entspricht, erfordert keinen Parameter, so dass der NEXT-Befehl 230-18 dieser Befehlssequenz als zusätzlichen Parameter die Zahl 1 enthält, so dass der Programm-Zähler nach" einem Abarbeiten des aload_0-Befehls um 1 erhöht wird. In 2b werden darüber hinaus erläuternde Kommentare durch ein Semikolon eingeleitet. Insbesondere zeigen so die Befehlssequenzen 200-15 bis 200-19 als Kommentar den zugehörigen mnemonischen Programmbefehl.

Gleichzeitig dient die NEXT-Instruktion bzw. der NEXT-Befehl 230-17 als Auslöser (Trigger) für die Signaturprüfung. Hierbei wird zuerst die aktuell errechnete Signatur, also der Vergleichsprüfwert, den die Signaturhardware 120 während des Abarbeitens der Prozessorbefehle des Rumpfs der Befehlssequenz 200-17 und des Abarbeitens des NEXT-Befehls 230-17 bestimmt hat, mit der im Programmflow gespeicherten Signatur bzw. einem in der Befehlssequenz 200-17 im Rahmen eines (optionalen) SIGNATURE-Befehls 240-17 gespeicherten Prüfwert 250-17 verglichen. Bei dem in 2b gezeigten Beispiel einer Implementierung der Interpreter-Tabellen wird die Überprüfung, ob die von der Signaturhardware 120 errechnete Signatur mit der gespeicherten Signatur 250-17 übereinstimmt, durch den Prozessorbefehl 240-17, genauer gesagt den SIGNATURE-Befehl 240-17, ausgelöst.

Ist die Überprüfung erfolgreich gewesen, stimmen also die errechnete Signatur (Vergleichsprüfwert) und die gespeicherte Signatur (Prüfwert) überein oder erfüllen eine andere vorbestimmte Beziehung, wird die Signaturhardware 120 wieder auf einen Ausgangswert zurückgesetzt, also automatisch initialisiert, und der Überwachungszyklus beginnt von Neuem. Der SIGNATURE-Befehl 240-17 kann hierbei auch entfallen, wenn beispielsweise im Rahmen des NEXT-Befehls 230-17 die Überprüfung gestartet wird.

Optional kann beispielsweise auch zu Beginn einer Befehlssequenz, beispielsweise der Befehlssequenz 200-17, mit der in der Befehlssequenz 200-17 gespeicherten bzw. dieser zugeordneten Signatur 250-17 initialisiert werden, woraufhin die Signaturhardware 120 nach Abschluss der Befehlssequenz, also beispielsweise durch den SIGNATURE-Befehl 240-17 oder den NEXT-Befehl 230-17, überprüfen kann, ob der basierend auf der gespeicherten Signatur bestimmte Vergleichsprüfwert eine vorbestimmte Bedingung erfüllt, also beispielsweise einen vorbestimmten Wert annimmt.

Sollte eine Abweichung der gespeicherten Signatur 250-17 von der errechneten Signatur festgestellt werden, oder sollte die vorbestimmte Beziehung der gespeicherten Signatur 250-17 und der berechneten Signatur nicht erfüllt sein, oder sollte die errechnete Signatur nicht die vorbestimmte Bedingung erfüllen, so erzeugt die Sicherheitshardware 120 eine Nachricht an dem Ausgang 130, löst also eine Ausnahmebehandlung (Trap) aus. Ein Sicherheitssystem der Chipkarte, auf der die erfindungsgemäße Datenverarbeitungsanlage 100 implementiert ist, entscheidet dann über die notwendigen Gegenmaßnahmen gegen den detektierten Angriff, den die Nachricht anzeigt.

Als Quelle für die Signaturberechnung durch die Signaturhardware 120 können verschiedene Eingangsdaten verwendet werden. Eine naheliegende Variante ist die Berechnung der Signatur anhand der Assemblercodes der Prozessorbefehle, also anhand der Werte der Prozessorbefehle, die von dem Prozessor 110 ausgeführt werden. Eine weitere Möglichkeit besteht darin, zusätzlich oder alternativ eine bestimmte Reihenfolge von Programm-Zähler-Ständen einzurechnen bzw. zu berücksichtigen, wobei der zugehörige Programm-Zähler auch als Virtual Program Counter bezeichnet wird.

Hierbei kann die erzielte Schutzhöhe und damit sowohl der Aufwand im Bereich der Programmierung als auch im Bereich der Überprüfung der Signatur durch die Signaturhardware 120 in einem weiten Bereich durch die Art und die Qualität des verwendeten Signaturalgorithmus variiert werden. Neben den bereits beschriebenen Varianten, bei denen beispielsweise die Werte der Prozessorbefehle (Assemblercodes) aufsummiert oder durch eine andere Verknüpfung miteinander in Beziehung gesetzt werden, können auch als kryptographisch sicher eingestufte Signaturalgorithmen, die beispielsweise Public-Key-Verfahren ausnutzen, implementiert werden. Beispiele hierfür stellen unter anderem der SHA-Algorithmus oder eine Kombination eines Hash-Algorithmus (z. B. MD5, RIPEMD-160) und eines geeigneten Public-Key-Algorithmus (z. B. RSA oder ElGamal) dar.

Eine besondere Eigenschaft der erfindungsgemäßen Datenverarbeitungsanlage, wie sie beispielsweise das Ausführungsbeispiel in 1 zeigt, ist, dass die Größe der Befehlssequenzen bzw. die Größe der Virtual Machine Interpreter-Tabellen nur unwesentlich vergrößert und die Ausführungsgeschwindigkeit des ursprünglichen Programms für die Virtual Machine nicht verringert oder herabgesetzt wird.

Auch bezüglich der Speicherung der Signaturen bzw. Prüfwerte können verschiedene Varianten angewendet werden. So können die Signaturen im Rahmen der Interpreter-Tabelle im Rahmen des Virtual Machine Interpreters nahe den Code-Sequenzen bzw. Befehlssequenzen gespeichert werden, wie dies auch 2b zeigt. Alternativ können die Signaturen auch in speziellen, nicht unmittelbar zugänglichen Speicherbereichen, also beispielsweise in sogenannten SFRs (SFR = special function register = Register für spezielle Funktionen) abgelegt werden, wodurch eine signifikante Erhöhung der Sicherheit möglich ist, da diese Speicherbereiche beispielsweise durch konstruktive Maßnahmen besonders geschützt werden können. Entsprechende Speicher können so in unmittelbarer räumlicher Nähe von für den Betrieb der Chipkarte wesentlichen Bereichen angeordnet werden, so dass ein physischer Angriff, beispielsweise durch Rückätzen, mit hoher Wahrscheinlichkeit zu einer Zerstörung der Chipkarte führen würde.

Prinzipiell ist auch eine periodische Umschlüsselung möglich, wobei in diesem Fall die Signaturen in nichtflüchtigen Speichern gespeichert werden können. Darüber hinaus ist auch eine chipindividuelle Signierung beispielsweise unter Verwendung einer Seriennummer des Chips der Chipkarte möglich, die auf chipspezifischen Schlüsseln basiert.

Wie dieses Ausführungsbeispiel zeigt, kann eine Erhöhung der Sicherheit während des Ausführens des Programms dadurch erreicht werden, indem eine Teilsequenz des Programms während der Ausführung des Programms bezüglich eines Prüfwerts, der der Teilsequenz zugeordnet ist, auf ein Zusammenpassen hin mit dieser überprüft wird. Besonders vorteilhaft kann dies im Rahmen eines Virtual Machine Interpreters implementiert und durchgeführt werden, da sich hierbei die erfindungsgemäße Datenverarbeitungsanlage 100 eine typische Eigenschaft eines Virtual Machine Interpreters zunutze machen kann, um eine effiziente und kostengünstige Absicherung des Interpretercodes bzw. des Programms des Interpreters zu realisieren. Genauer gesagt handelt es sich bei dieser Eigenschaft um den Tabellencharakter, den der Programmcode eines Virtual Machine Interpreters aufweist. Die hohe Regularität dieser Interpreter-Tabellen erlaubt es, an definierten Stellen eine Überprüfung des Programms, also Codecheck-Startpunkte und Codecheck-Endpunkte zu setzen. Hierbei bieten sich insbesondere der Beginn und/oder das Ende einer einen Bytecode bzw. Programmbefehl der Interpretersprache der Virtual Machine repräsentierenden Befehlssequenz bzw. Teilsequenz an.

Vorteilhaft ist in diesem Zusammenhang auch, dass die erfindungsgemäße Datenverarbeitungsanlage 100 und das erfindungsgemäße Verfahren zum Verarbeiten von Daten unabhängig von einem Einsatz eines Cachespeichers verwendet werden kann. Ein weiterer Aspekt dieser Sicherungsmaßnahme ist daher, dass die hier beschriebenen Codesegmente bzw. Befehlssequenzen des Virtual Machine Interpreters Probleme in Prozessoren mit Cachespeichern bereiten können, da der Tabellencharakter der Interpreter-Tabellen in kleinen Cachespeichern, wie sie in Chipkarten häufig zu finden sind, zu einer schlechten „Hit-Rate" führen und somit die Energieeffizienz und die Rechenperformance bzw. Rechenleistung der Chipkarte somit insgesamt negativ beeinflussen. Der Grund für die schlechte Hit-Rate bzw. Trefferrate des Cachespeichers im Falle der Interpreter-Tabellen liegt im Wesentlichen an der geringen Größe des Cachespeichers, der geringen Größe der Befehlssequenzen und der damit verbundenen häufigen Aufrufe verschiedener Befehlssequenzen durch den Virtual Machine Interpreter. Auch wenn einzelne Befehlssequenzen, also einzelne Teilsequenzen, häufiger im Rahmen der Ausführung des als Bytecode vorliegenden Programms verwendet werden, ist es jedoch aufgrund der Vielzahl verschiedener Befehlssequenzen häufig ratsam, direkt auf einen Speicher 140 mit den Befehlssequenzen zurückzugreifen, als zuvor den kleinen Cachespeicher 150 des Prozessors 110 zu durchsuchen. Insbesondere kann so der Cachespeicher 150 des Prozessors 110 darauf beschränkt bleiben, Daten zwischenzuspeichern, die von dem im Bytecode vorliegenden Programm verarbeitet werden.

Entsprechend kann es ratsam sein, den Code des Interpreters nicht in einen Cachespeicher einzulagern, sondern mittels spezieller Datenpfade, wie dies das in 1 gezeigte Ausführungsbeispiel auch illustriert, direkt aus dem Speicher 140 in den Prozessor 110 zu transportieren. Oft sind jedoch im Rahmen von Sicherheitscontrollern gerade die Cachespeicher 150 eng mit einer Funktion von Speicherverschlüsselungseinheiten verknüpft. Durch das Verlagern des Codes des Virtual Machine Interpreters in nicht-gecachte Speicherbereiche, die also nicht durch den Einsatz des Cachespeichers 150 zwischengespeichert werden, müssten zusätzlich spezielle und zum Teil sehr aufwendige Sicherungsverfahren für den Interpretercode der Virtual Machine vorgesehen werden.

Die erfindungsgemäße Datenverarbeitungsanlage 100 und das erfindungsgemäße Verfahren zum Verarbeiten von Daten ermöglichen nun eine entscheidende Verbesserung der Sicherheit der von Virtual Machine Interpretern, ohne dass solche aufwändigen Sicherungsschamata implementiert werden müssen. Sie eignen sich somit besonders gut zur Sicherung und zum Schutz von Virtual Machine Interpretern gegen Codemanipulation und Ablaufstörungen im Rahmen dieser Art von Einsatzszenarien.

Durch die Ausnutzung der Struktur des Virtual Machine Interpreters in Kombination mit bekannten Code-Signaturverfahren oder anderen sichernden Signaturmaßnahmen, die während des allgemeinen Codeablaufs des Virtual Machine Interpreters ausgeführt werden können, kann so ein effizienter Code-Manipulationsschutz in den Bytecode-Sequenzen bzw. den Befehlssequenzen des Virtual Machine Interpreters realisiert werden. Somit kann eine Manipulation des Codes eines Virtual Machine Interpreters zur Laufzeit erkannt und durch geeignete Gegenmaßnahmen, beispielsweise durch Auslösen eines Sicherheitsresets oder einer gezielten Zerstörung der Chipkarte, die die erfindungsgemäße Datenverarbeitungsanlage 100 umfasst, verhindert werden. Insgesamt wird so das Risiko, dass durch geeignete Störungen der Programmablauf auf dem Prozessor 110 durch Veränderung des Verhaltens einzelner Programmbefehle durch Modifikation der Befehlssequenzen bzw. Teilsequenzen verändert wird, ausgeschlossen.

Wie bereits erläutert wurde, besteht ein weiterer Vorteil dieser Ausführungsbeispiele darin, dass der Manipulationsschutz nicht nur während der Laufzeit des Programms überprüft werden kann, sondern dass dieser auch zu einer nur geringfügigen bzw. unmerklichen Verlangsamung des Ablaufs des Programms führt. Dies kann beispielsweise dadurch erzielt werden, dass eine entsprechende Auslösung der Initialisierung der Prüfeinrichtung 120 unter Umgehung der CPU 110 realisiert werden kann, so dass keine Rechenzeit hierfür benötigt wird. Gegenüber einer softwaremäßigen, nicht hart verdrahteten Initialisierung tritt weiterhin der Vorteil auf, dass für die Initialisierung kein zusätzlicher Speicherplatzbedarf, beispielsweise für einen Prozessorbefehl, verwendet werden muss, was den zusätzlichen Speicherplatzbedarf deutlich reduziert. Darüber hinaus kann prinzipiell auch der durch die erfindungsgemäße Datenverarbeitungsanlage 100 implementierte Schutz durch nur einen sehr geringen zusätzlichen Speicherplatzbedarf implementiert werden, da der gegenüber einer ungeschützten Implementierung benötigte Speicherplatz nur unwesentlich, genauer gesagt nur um die Länge des Signaturwertes ansteigt. Gerade im Bereich von Chipkarten bzw. Smartcards stellt dies einen signifikanten Vorteil dar, da der zur Verfügung stehende Speicherplatz gerade für Chipkarten einen häufig sehr einschränkenden Faktor, auch bezüglich der Kosten der Chipkarte, darstellt.

3 zeigt ein weiteres Ausführungsbeispiel einer erfindungsgemäßen Datenverarbeitungsanlage 100'. Die Datenverarbeitungsanlage 100' weist wiederum einen Prozessor bzw. eine CPU 110 und eine Signaturhardware 120 mit einem Ausgang 130 auf. Die Datenverarbeitungsanlage 100' ist auch bei dem in 3 gezeigten Ausführungsbeispiel mit einem Speicher 140 gekoppelt, der eine Interpreter-Tabelle einer virtuellen Maschine bzw. eines Virtual Machine Interpreters umfasst. Die Datenverarbeitungsanlage 100' umfasst weiterhin einen Programm-Zähler 160, der auf eine native Adresse (native address) der Interpreter-Tabelle zeigt und somit eine logische oder physikalische Adresse eines als Nächstes von dem Prozessor bzw. der CPU 110 abzuarbeitenden Prozessorbefehls anzeigt. In 3 ist der Programm-Zähler 160 auch als „Native Program Counter (PC)" bezeichnet. Der Programm-Zähler 160 ist mit einer Adress-Vergleichseinrichtung 165 verbunden, die einerseits mit einem Demultiplexer 167 und der Signaturhardware 120 verbunden ist. Der Demultiplexer 167 ist darüber hinaus mit dem Speicher 140 derart gekoppelt, dass dieser von dem Speicher 140 einen Prozessorbefehl empfangen kann, auf den der Programm-Zähler 160 verweist. Bei dem in 3 gezeigten Ausführungsbeispiel zeigt beispielsweise der Programm-Zähler 160 auf die native Adresse 0x0000. Unter dieser nativen Adresse ist in dem Speicher 140 beispielsweise ein Prozessorbefehl (gegebenenfalls mit einem entsprechenden Parameter) Instrcode#17 gespeichert.

Der Demultiplexer 167 ist mit der CPU 110 derart gekoppelt, dass der Demultiplexer 167 den empfangenen Prozessorbefehl an eine Empfangseinheit 170 (fetch unit) übermittelt. Die Empfangseinheit 170 ist weiter im Inneren der CPU 110 mit einer Decoder-Einheit 173 (decoder) gekoppelt, die den Prozessorbefehl auswertet und an eine Ausführungseinheit 175 (execution unit) zur weiteren Verwertung weiterleitet. Die Ausführungseinheit 175 kann beispielsweise eine arithmetisch-logische Einheit (ALU = arithmetic logic unit) oder andere spezielle Schaltungen und integrierte Schaltkreise umfassen.

Der Demultiplexer 167 ist darüber hinaus mit einer Berechnungseinheit 177 gekoppelt, die ebenfalls, wie die Empfangseinheit 170 der CPU 110, den Prozessorbefehl empfängt. Die Berechnungseinheit 177 ist weiter mit einem Register 180 derart gekoppelt, dass einerseits ein Ergebnis der Berechnungseinheit 177, das an einem Ausgang der Berechnungseinheit 177 von dieser ausgegeben wird, in dem Register 180 gespeichert wird und andererseits der Inhalt des Registers 180 der Berechnungseinheit 177 an einem Eingang der Berechnungseinheit 177 bereitsteht. Die Berechnungseinheit 177 und das Register 180 bilden somit zusammen eine Registerschaltung, bei der es sich beispielsweise um ein lineares Rückkopplungs-Schiebe-Register (LFSR = linear feedback shift register) handeln kann. Der Ausgang des Registers 180 ist darüber hinaus mit einem ersten Eingang einer Vergleichsschaltung 185 der Signaturhardware 120 verbunden. Der Demultiplexer 167 ist mit einem zweiten Eingang der Vergleichsschaltung 185 gekoppelt. Ein Ausgang der Vergleichsschaltung 185 ist mit dem Ausgang 130 der Signaturhardware 120 verbunden, der wiederum mit einer Alarmschaltung 190 (alarm unit) verbunden ist. Die Alarmschaltung 190 ist darüber hinaus mit der CPU 110 verbunden, um im Falle eines Empfangs eines Alarmsignals, das die Signaturhardware 120 an dem Ausgang 130 der Alarmschaltung 190 bereitgestellt hat, ein eine Ausnahmesituation anzeigendes Signal der CPU 110 (trap) zu übermitteln.

In 3 ist darüber hinaus ein Beispiel einer Interpreter-Tabelle eines Virtual Machine Interpreters dargestellt. Bei dem in 3 dargestellten Beispiel ist folgendes Modell zugrundegelegt, das jedoch nicht als einschränkend zu verstehen ist, sondern vielmehr nur ein mögliches Beispiel darstellt. Jedem Bytecode der Virtual Machine (VM Bytecode) sind jeweils drei Befehlsworte bzw. Prozessorbefehle und ein Signaturwort bzw. Prüfwert zugeordnet, wobei jedes Befehlswort und Signaturwort jeweils durch eine 16-Bit-Zahl repräsentiert wird. Jedem der in 3 dargestellten Bytecodewerte 0x00, 0x01, 0x02, 0x03 und 0x04 sind also in dem Speicher 140 jeweils vier Worte bzw. Zahlen mit einer Länge von 16 Bits, also 8 Bytes, zugeordnet, von denen die ersten drei Worte bzw. die ersten 6 Bytes jeweils einen Prozessorbefehl in Form einer 16-Bit-Zahl umfasst. Das vierte Wort bzw. das 7. und 8. Byte, das einem jeden Bytecode zugeordnet ist, umfasst den Prüfwert bzw. das Signaturwort ebenfalls in Form einer 16-Bit-Zahl. Wie bereits in den vorangegangenen Abschnitten der vorliegenden Anmeldung erläutert wurde, ist hierbei jeweils einer Befehlssequenz eines Bytecodes bzw. einer Teilsequenz des später auszuführenden Programms ein bezüglich der nativen Speicheradressen bzw. nativen Adressen zusammenhängendes Speichersegment zugeordnet. Bei dem in 3 gezeigten Ausführungsbeispiel einer Interpreter-Tabelle ist so beispielsweise dem Bytecode 0x00 der Speicherbereich beginnend bei der nativen Adresse 0x0000 bis 0x0007, dem Bytecode 0x01 der Speicherbereich beginnend bei 0x0008 bis 0x000F und dem Bytecode 0x03 der Speicherbereich beginnend bei der nativen Adresse 0x0018 bis 0x001F zugeordnet.

Bei der Ausführung des Programms werden aus dem Programmspeicher bzw. dem Speicher 140 jeweils in 16-Bit-Einheiten Befehlsworte oder Signaturworte aus der jeweiligen Speicherstelle ausgelesen, auf die der Programm-Zähler 160 zeigt. Zeigt der Programm-Zähler 160 auf eine native Adresse, die ein Vielfaches von 8 ist, also beispielsweise 0x0000, 0x0008, 0x0010, 0x0018 oder auch 0x0020, so beginnt jeweils eine Bytecode-Sequenz bzw. eine Befehlssequenz. Dieses Ereignis wird gleichzeitig dazu benutzt, den Inhalt des Registers 180, das auch als Signaturregister bezeichnet wird, auf einen Startwert, beispielsweise den Wert 0, zurückzusetzen, also zu initialisieren. Zu diesem Zweck ist das Register 180 zusätzlich mit der Adress-Vergleichseinheit 165 derart gekoppelt, dass, wenn bei dem in 3 gezeigten Ausführungsbeispiel die jeweils unteren drei Bit des Programm-Zählers 160 gleichzeitig den Wert 0 aufweisen, ein Initialisierungssignal an das Register 180 übermittelt wird, das das Register 180 dazu veranlasst, den Speicherinhalt auf einen vorbestimmten Wert (beispielsweise 0) zu setzen.

Die Adress-Vergleichseinheit 165 stellt also eine Initialisierungseinrichtung dar, die die Signaturhardware 120 automatisch initialisiert, wenn der Programm-Zähler 160 eine vorbestimmte Bedingung erfüllt. Hierbei kann die Adress-Vergleichseinheit 165 beispielsweise in hart verdrahteter Form ausgeführt sein, die beispielsweise über entsprechende logische Bausteine die drei untersten Bit des Programmzählers 160 miteinander in Beziehung setzt, und das Initialisierungssignal an das Register 180 sendet, wenn die vorbestimmte Bedingung erfüllt ist. Hierbei ist die vorbestimmte Bedingung nicht darauf beschränkt, dass die unteren drei Bits des Wertes des Programm-Zählers 160 gleichzeitig den Wert 0 aufweisen. Vielmehr kann grundsätzlich jede Bedingung an den Wert des Programm-Zählers 160 als vorbestimmte Bedingung zum Auslösen der automatischen Initialisierung der Signaturhardware 120 herangezogen werden. In diesem Zusammenhang ist es jedoch aufgrund der binären Adressierung des Speichers 140 besonders vorteilhaft, eine Überprüfung auf ein Vorliegen des Wertes des Programm-Zählers 160 auf ein Vielfaches einer Zweier-Potenz zu überprüfen, wie dies bereits in den vorangegangenen Abschnitten der vorliegenden Erfindung erläutert wurde.

Zeigt der Programm-Zähler 160 auf eine Adresse bzw. eine native Adresse, die einer Summe eines ganzzahligen Vielfachen von 8 und der Zahl 7 entspricht, also beispielsweise den nativen Adressen 0x0007, 0x000F, 0x0017, 0x001F oder 0x0027, bei der also die unteren drei Bits des Wertes des Programmzählers 160 einen Wert aufweisen, der einem Wert 7 entspricht, so dass also der Programm-Zähler 160 auf eine Adresse mit einem Vielfachen von 8 abzüglich 1 zeigt, so wird in Signaturhardware 120 eine Signaturprüfung durchgeführt. Genauer gesagt übermittelt die Adress-Vergleichseinheit 165 in diesem Fall an den Demultiplexer 167 ein Signal, so dass an den zweiten Anschluss der Vergleichsschaltung 185 der in der betreffenden Speicherzelle des Speichers abgelegten Signaturwert an die Vergleichsschaltung 185 übermittelt wird. In diesem Fall wird also das vierte Codewort der entsprechenden Befehlssequenz, das den Referenzwert der entsprechenden Befehlssequenz als Signatur aufweist, an die Vergleichschaltung 185 übermittelt, die bei Erreichen des vierten Codeworts den Inhalt des Signaturregisters 180 automatisch mit dem vierten Codewort, also dem Signaturwert bzw. Prüfwert der entsprechenden Befehlssequenz, vergleicht.

Ist das in dem Speicher 140 abgelegte Signatur-Codewort bzw. der in dem Speicher 140 abgelegte Prüfwert nicht identisch mit dem Inhalt des Signaturregisters 180, so erzeugt die Vergleichsschaltung 185 ein Alarmsignal, das an den Ausgang 130 der Signaturhardware 120 weitergeleitet wird. Bei dem in 3 gezeigten Ausführungsbeispiel wird das Alarmsignal an die Alarmschaltung 190 (alarm unit) weitergereicht, die dann eine entsprechende Gegenmaßnahme gegen den möglicherweise erfolgten Angriff auslöst. Bei dem in 3 gezeigten Ausführungsbeispiel wird ein eine Ausnahmesituation anzeigendes Signal, das auch als Trap-Signal bezeichnet wird, an die CPU 110 gesendet, wodurch das laufende Programm, also insbesondere die Virtual Machine, gestoppt und ein entsprechendes Alarmprogramm aufgerufen und ausgeführt wird. Im Rahmen eines solchen Alarmprogramms kann beispielsweise die erfindungsgemäße Datenverarbeitungsanlage 100' einem Sicherheitsreset oder einer anderen Gegenmaßnahme unterworfen werden.

Der Vergleichsprüfwert, der durch die Berechnungseinheit 177 und das Register 180 gebildet wird, wird hierbei parallel zu der Ausführung der ersten drei Codeworte einer Befehlssequenz, die Prozessorbefehle darstellen, durchgeführt. Genauer gesagt werden die ersten drei Codeworte einer Befehlssequenz nacheinander der CPU 110 bzw. der Empfangseinheit 170 der CPU 110 zur Ausführung zugeführt. Parallel hierzu werden die ersten drei Codeworte der betreffenden Befehlssequenz seriell der Signatureinheit bzw. der Signaturhardware 120 (signature check unit) zugeführt. Die Signatureinheit 120 akkumuliert hierbei einen Signaturwert über die Codeworte beispielsweise im Rahmen einer einfachen Checksummen-Bildung oder eines komplizierteren Verfahrens, wie es weiter oben diskutiert wurde, indem die entsprechenden Bytecodes der Berechnungseinheit 177 bereitgestellt werden. Nach dem Empfang des dritten Codeworts einer Befehlssequenz weist somit das Register 180 den Vergleichsprüfwert auf, der der Vergleichsschaltung 185 bereitgestellt wird.

Die Datenverarbeitungsanlage 100' stellt somit ein Ausführungsbeispiel der vorliegenden Erfindung dar, bei dem sowohl die Initialisierung der Prüfeinrichtung bzw. der Signaturhardware 120 als auch die Überprüfung, ob die jeweilige Teilsequenz bzw. Befehlssequenz und der zugeordnete Prüfwert zueinander passen, automatisch durchgeführt wird. Bei der in 3 gezeigten Datenverarbeitungsanlage 100' wird also unter vollständiger Umgehung des Prozessors 110 die Absicherung gegenüber Code-Manipulationen durchgeführt, so dass die Ausführungsgeschwindigkeit des ausführbaren Programms kaum gegenüber einer Ausführung ohne den erfindungsgemäßen Schutz reduziert wird. Darüber hinaus ist auch bei dem in 3 gezeigten Ausführungsbeispiel nur ein unwesentlicher Zuwachs der Implementierung des Interpretercodes zu verzeichnen, da der Speicherplatzbedarf nur um die Länge der Prüfwerte anwächst.

Auch wenn gerade bei dem zuletzt diskutierten Ausführungsbeispiel jede Befehlssequenz eine Länge von 8 Byte bzw. vier 16-Bit-Worten aufweist, wobei der Signaturwert bzw. Prüfwert jeweils mit berücksichtigt wurde, stellt dies keine Einschränkung der vorliegenden Erfindung dar. Vielmehr können grundsätzlich beliebige Längen von Befehlssequenzen bzw. Teilsequenzen realisiert werden. Wie bereits zuvor diskutiert wurde, ist aufgrund der binären Adressierung des Speichers 140 und der Verwendung eines Programm-Zählers 160 im Rahmen einer Virtual Machine bzw. virtuellen Maschine eine Verwendung einer festen Befehlssequenzlänge für alle Befehlssequenzen, die ein Vielfaches einer Zweier-Potenz darstellt, besonders vorteilhaft.

Um die Bezeichnung im Folgenden möglichst zu vereinfachen, wird im weiteren Verlauf der vorliegenden Anmeldung für Objekte mit funktionsgleichen oder funktionsähnlichen Eigenschaften bzw. Merkmalen, für die im Rahmen der vorliegenden Anmeldung gleiche oder ähnliche Bezugszeichen verwendet wurden, im Folgenden gleiche Bezugszeichen verwendet. So bezeichnet insbesondere eine Datenverarbeitungsanlage 100 nicht nur die Datenverarbeitungsanlage 100 aus 1, sondern auch die Datenverarbeitungsanlage 100' aus 3.

Abhängig von den Gegebenheiten können die erfindungsgemäßen Verfahren zum Verarbeiten von Daten in Hardware oder in Software implementiert werden. Die Implementierung eines der erfindungsgemäßen Verfahren kann auf einem digitalen Speichermedium, insbesondere einer Diskette, CD oder DVD mit elektronisch auslesbaren Steuersignalen erfolgen, die so mit einem programmierbaren Computersystem zusammenwirken können, dass eines der erfindungsgemäßen Verfahren zum Verarbeiten von Daten ausgeführt wird. Allgemein besteht die Erfindung somit auch in einem Software-Programm-Produkt bzw. einem Computer-Programm-Produkt bzw. einem Programm-Produkt mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode zur Durchführung eines der erfindungsgemäßen Verfahren, wenn das Software-Programm-Produkt auf einem Rechner oder einem Prozessor abläuft. In anderen Worten ausgedrückt kann die Erfindung somit als ein Computer-Programm bzw. Software-Programm bzw. Programm mit einem Programmcode zur Durchführung eines der Verfahren realisiert werden, wenn das Programm auf einem Prozessor abläuft. Der Prozessor kann hierbei von einem Computer, einer Chipkarte (Smartcard) oder einem anderen integrierten Schaltkreis gebildet sein.

100, 100'
Datenverarbeitungsanlage
110
CPU
120
Signaturhardware
130
Ausgang
140
Speicher
150
Cachespeicher
200-15
Befehlssequenz
200-16
Befehlssequenz
200-17
Befehlssequenz
200-18
Befehlssequenz
200-19
Befehlssequenz
210
Auslassmarkierung
220-17
Adresse
230-17
NEXT-Befehl
230-18
NEXT-Befehl
240-17
SIGNATURE-Befehl
250-17
Signatur
160
Programm-Zähler
165
Adress-Vergleichseinheit
167
Demultiplexer
170
Empfangseinheit
173
Decoder-Einheit
175
Ausführungseinheit
177
Berechnungseinheit
180
Register
185
Vergleichsschaltung
190
Alarmschaltung


Anspruch[de]
Datenverarbeitungsvorrichtung (100) mit einer Prüfeinrichtung (120),

wobei die Datenverarbeitungsvorrichtung (100) ausgebildet ist, um ein ausführbares Programm auszuführen;

wobei das ausführbare Programm einen Bytecode für eine virtuelle Maschine und einen Interpretercode der virtuellen Maschine umfasst;

wobei die Datenverarbeitungsvorrichtung (100) ausgebildet ist, um während einer Ausführung des ausführbaren Programms:

– eine Teilsequenz des ausführbaren Programms wiederzugewinnen, wobei der Teilsequenz ein Prüfwert zugeordnet ist;

– basierend auf dem der Teilsequenz zugeordneten Prüfwert und der Teilsequenz durch die Prüfeinrichtung (120) nach der Ausführung der Teilsequenz zu überprüfen, ob der Prüfwert und die Teilsequenz zueinander passen; und

– eine Nachricht zu erzeugen, wenn der Prüfwert und die Teilsequenz nicht zueinander passen,

wobei die Teilsequenz eine Befehlssequenz des Interpretercodes darstellt; und

wobei die Datenverarbeitungsvorrichtungsvorrichtung (100) ferner ausgebildet ist, um vor einer Ausführung einer Teilsequenz automatisch die Prüfeinrichtung (120) zu initialisieren.
Datenverarbeitungsvorrichtung (100) nach Anspruch 1, bei der die Initialisierung zu einer Initialisierung der Prüfeinrichtung (120) mit einem Initialisierungswert führt, der entweder auf dem der Teilsequenz zugeordneten Prüfwert basiert oder einen vorbestimmten Wert aufweist. Datenverarbeitungsvorrichtung (100) nach einem der vorhergehenden Ansprüche, bei der die Datenverarbeitungsvorrichtung (100) eine Programm-Zählereinrichtung (160) aufweist und aktivierbar ist, die Prüfeinrichtung (120) automatisch zu initialisieren, wenn die Programm-Zählereinrichtung (160) eine vorbestimmte Zählerbedingung erfüllt. Datenverarbeitungsvorrichtung (100) nach Anspruch 3, bei der die Datenverarbeitungsvorrichtung (100) eine hart verdrahtete Initialisierungseinrichtung (165) aufweist, die mit der Programm-Zählereinrichtung (160) gekoppelt ist, um durch ein Vorliegen der vorbestimmten Zählerbedingung aktivierbar zu sein, die Prüfeinrichtung (120) zu initialisieren. Datenverarbeitungsvorrichtung (100) nach einem der vorhergehenden Ansprüche, bei der die Prüfeinrichtung (120) auf die Initialisierung hin aktivierbar ist, um aus der Teilsequenz einen Vergleichsprüfwert zu bilden und die Überprüfung, ob die Teilsequenz zu dem der Teilsequenz zugeordneten Prüfwert passt, derart durchzuführen, dass die Prüfeinrichtung (120) überprüft, ob der Vergleichsprüfwert entweder eine vorbestimmte Bedingung erfüllt oder zu dem Prüfwert eine vorbestimmte Beziehung aufweist. Datenverarbeitungsvorrichtung (100) nach Anspruch 5, bei der die Bestimmung des Vergleichsprüfwerts, die Überprüfung auf das Erfülltsein der vorbestimmten Bedingung oder die Überprüfung auf ein Vorliegen der vorbestimmten Beziehung ein Signaturverfahren, ein Public-Key-Verschlüsselungsverfahren und/oder ein Public-Key-Entschlüsselungsverfahren umfasst. Datenverarbeitungsvorrichtung (100) nach einem der vorhergehenden Ansprüche, bei der die Prüfeinrichtung (120) durch einen Überprüfungsbefehl, der in dem ausführbaren Programm umfasst ist, aktivierbar ist, die Überprüfung, ob die Teilsequenz und der der Teilsequenz zugeordnete Prüfwert zueinander passen, durchzuführen. Datenverarbeitungsvorrichtung (100) nach einem der vorhergehenden Ansprüche, bei der die Prüfeinrichtung (120) dadurch, dass ein Wert einer Programm-Zählereinrichtung (160) eine vorbestimmte Überprüfungsbedingung erfüllt, aktivierbar ist, die Überprüfung, ob die Teilsequenz und der der Teilsequenz zugeordnete Prüfwert zueinander passen, durchzuführen. Datenverarbeitungsanlage (100) zur Ausführung eines ausführbaren Programms,

wobei die Datenverarbeitungsanlage (100) eine Prüfschaltung (120) und einen Programm-Zähler (160) aufweist; und

wobei das ausführbare Programm einen Bytecode für eine virtuelle Maschine und einen Interpretercode der virtuellen Maschine umfasst,

wobei die Datenverarbeitungsanlage (100) während einer Ausführung des ausführbaren Programms aktivierbar ist,

– eine Teilsequenz des ausführbaren Programms wiederzugewinnen, wobei der Teilsequenz ein Prüfwert zugeordnet ist;

– basierend auf dem der Teilsequenz zugeordneten Prüfwert und der Teilsequenz durch die Prüfschaltung (120) nach der Ausführung der Teilsequenz zu überprüfen, ob der Prüfwert und die Teilsequenz zueinander passen; und

– ein Alarmsignal zu erzeugen, wenn der Prüfwert und die Teilsequenz nicht zueinander passen,

wobei die Teilsequenz eine Befehlssequenz des Interpretercodes darstellt;

wobei die Datenverarbeitungsanlage (100) ferner dadurch, dass der Programm-Zähler (160) eine vorbestimmte Zählerbedingung erfüllt, aktivierbar ist, die Prüfschaltung (120) mit einem Initialisierungswert automatisch zu initialisieren, der auf dem der Teilsequenz zugeordneten Prüfwert basiert oder einen vorbestimmten Wert aufweist.
Datenverarbeitungsanlage (100) nach Anspruch 9, bei der die Datenverarbeitungsanlage (100) ferner eine hart verdrahtete Auslöseschaltung (165) aufweist, die mit dem Programmzähler (160) gekoppelt ist, um durch ein Vorliegen der vorbestimmten Zählerbedingung aktivierbar zu sein, die Prüfeinrichtung (120) zu initialisieren. Datenverarbeitungsanlage (100) nach einem der Ansprüche 9 oder 10, bei der die Prüfschaltung (120) eine Registerschaltung (177, 180) zum Berechnen eines Vergleichsprüfwerts auf Basis eines Wertes der Teilsequenz und eine Vergleichsschaltung (185), die mit der Registerschaltung (177, 180) gekoppelt ist, um den Vergleichsprüfwert zu empfangen, zu überprüfen, ob der Vergleichsprüfwert und der Prüfwert eine vorbestimmte Beziehung zueinander aufweisen, und um das Alarmsignal zu erzeugen, wenn der Vergleichsprüfwert und der Prüfwert die vorbestimmte Beziehung zueinander nicht aufweisen. Datenverarbeitungsanlage (100) nach einem der Ansprüche 9 bis 11, bei der die Datenverarbeitungsanlage (100) ferner eine Alarmschaltung (190) zum Empfangen des Alarmsignals aufweist und um die Datenverarbeitungsanlage in einen Ausnahmezustand zu versetzen, wenn die Alarmschaltung (190) das Alarmsignal empfängt. Datenverarbeitungsanlage (100) nach einem der Ansprüche 9 bis 12, bei der die Datenverarbeitungsanlage (100) mit einem Speicher (140) gekoppelt ist, wobei in dem Speicher (140) die Teilsequenz und der der Teilsequenz zugeordnete Prüfwert gespeichert sind. Datenverarbeitungsanlage (100) nach einem der Ansprüche 9 bis 13, bei der die Überprüfung, ob die Teilsequenz und der Prüfwert zueinander passen, durch die Vergleichsschaltung (185) auf einen Überprüfungsbefehl hin ausgeführt wird, wobei das ausführbare Programm den Überprüfungsbefehl umfasst, oder bei der die Überprüfung, ob der Prüfwert und die Teilsequenz zueinander passen, durch die Vergleichsschaltung (185) ausgeführt wird, wenn der Programm-Zähler (160) eine vorbestimmte Überprüfungsbedingung erfüllt. Datenverarbeitungsanlage (100) zur Ausführung eines ausführbaren Programms,

wobei die Datenverarbeitungsanlage (100) eine Prüfschaltung (120), einen Programm-Zähler (160), eine Initialisierungsschaltung (165) und einen Prozessor (110) aufweist, mit einem Speicher (140) gekoppelt ist, und das ausführbare Programm einen Bytecode für eine virtuelle Maschine und einen Interpretercode der virtuellen Maschine umfasst;

wobei die Datenverarbeitungsanlage (100) während einer Ausführung des ausführbaren Programms aktivierbar ist, um

– eine Teilsequenz des ausführbaren Programms wiederzugewinnen, wobei der Teilsequenz ein Prüfwert zugeordnet ist;

– basierend auf dem der Teilsequenz zugeordneten Prüfwert und der Teilsequenz durch die Prüfschaltung (120) nach der Ausführung der Teilsequenz zu überprüfen, ob der Prüfwert und die Teilsequenz zueinander passen; und

– ein Alarmsignal zu erzeugen, wenn der Prüfwert und die Teilsequenz nicht zueinander passen,

wobei die Teilsequenz eine Befehlssequenz des Interpretercodes darstellt;

wobei die Initialisierungsschaltung (165) mit dem Programmwähler (160) gekoppelt ist, um dadurch, dass der Programmwähler (160) eine vorbestimmte Zählerbedingung erfüllt, aktivierbar zu sein, die Prüfschaltung (120) mit einem Initialisierungswert zu initialisieren, der auf dem der Teilsequenz zugeordneten Prüfwert basiert oder einen vorbestimmten Wert aufweist,

wobei die Initialisierungsschaltung (165) hart verdrahtet ist;

wobei die Prüfschaltung (120) aktivierbar ist, um aus der Teilsequenz einen Vergleichsprüfwert zu bilden und die Überprüfung, ob die Teilsequenz zu dem der Teilsequenz zugeordneten Prüfwert passt, derart durchzuführen, dass die Prüfschaltung (120) überprüft, ob der Vergleichsprüfwert entweder eine vorbestimmte Bedingung erfüllt oder zu dem Prüfwert eine vorbestimmte Beziehung aufweist; und

wobei der Speicher (140) die Teilsequenz und den der Teilsequenz zugeordneten Prüfwert aufweist.
Datenverarbeitungsanlage (100) nach Anspruch 15, bei der die Registerschaltung (177, 180) ein Register (180) und eine Berechnungsschaltung (177) umfasst, wobei das Register (180) und die Berechnungsschaltung (177) derart miteinander verbunden sind, dass die Berechnungsschaltung (177) eine Berechnung auf Basis eines in dem Register (180) gespeicherten Wertes durchführt und ein Ergebnis der Berechnung wieder in dem Register (180) speichert. Datenverarbeitungsanlage (100) nach einem der Ansprüche 15 oder 16, bei der die Datenverarbeitungsanlage (100) ferner eine Alarmschaltung (190) zum Empfangen des Alarmsignals aufweist, wobei die Alarmschaltung (190) nach dem Empfang des Alarmsignals an den Prozessor (110) ein Ausnahmezustandssignal ausgibt, um den Prozessor (110) in einen Ausnahmezustand zu versetzen. Datenverarbeitungsanlage (100) nach einem der Ansprüche 15 bis 17, bei der der Speicher (140) den Bytecode mit einem Programmbefehl und den Interpretercode mit einem Prozessorbefehl umfasst, wobei der Interpretercode die Teilsequenz umfasst und die Teilsequenz den Prüfwert aufweist. Datenverarbeitungsanlage (100) nach einem der Ansprüche 15 bis 18, bei der die Registerschaltung (177, 180) und/oder die Vergleichsschaltung (185) ein Signaturverfahren, ein Public-Key-Verschlüsselungsverfahren und/oder ein Public-Key-Entschlüsselungsverfahren verwenden. Verfahren zum Verarbeiten von Daten mit einer Prüfeinrichtung (120), wobei ein ausführbares Programm ausgeführt wird, wobei das ausführbare Programm einen Bytecode für eine virtuelle Maschine und einen Interpretercode der virtuellen Maschine umfasst, mit folgenden, während einer Ausführung des ausführbaren Programms durchgeführten Schritten:

Wiedergewinnen einer Teilsequenz des ausführbaren Programms, wobei der Teilsequenz ein Prüfwert zugeordnet ist;

basierend auf dem der Teilsequenz zugeordneten Prüfwert und der Teilsequenz durch die Prüfeinrichtung (120) nach der Ausführung der Teilsequenz, Überprüfen, ob der Prüfwert und die Teilsequenz zueinander passen;

Erzeugen einer Nachricht, wenn der Prüfwert und die Teilsequenz nicht zueinander passen; und

automatisch die Prüfeinrichtung (120) vor einer Ausführung der Teilsequenz Initialisieren,

wobei die Teilsequenz eine Befehlssequenz des Interpretercodes darstellt.
Verfahren zum Verarbeiten von Daten nach Anspruch 21, wobei der Schritt der Initialisierung automatisch hart verdrahtet eingeleitet wird, wenn ein Programm-Zähler (160) eine vorbestimmte Bedingung erfüllt. Verfahren zum Verarbeiten von Daten mit einer Prüfeinrichtung (120), um ein ausführbares Programm auszuführen, wobei das ausführbare Programm einen Bytecode für eine virtuelle Maschine und einen Interpretercode der virtuellen Maschine umfasst, mit folgenden, während einer Ausführung des ausführbaren Programms durchgeführten Schritten:

Wiedergewinnen einer Teilsequenz des ausführbaren Programms, wobei der Teilsequenz ein Prüfwert zugeordnet ist;

basierend auf dem der Teilsequenz zugeordneten Prüfwert und der Teilsequenz durch die Prüfeinrichtung (120) nach Ausführung der Teilsequenz, Überprüfen, ob der Prüfwert und die Teilsequenz zueinander passen;

Erzeugen einer Nachricht, wenn der Prüfwert und die Teilsequenz nicht zueinander passen; und

vor einer Ausführung der Teilsequenz automatisch die Prüfeinrichtung (120) Initialisieren,

wobei die Teilsequenz eine Befehlssequenz des Interpretercodes darstellt; und

wobei die Initialisierung der Prüfeinrichtung (120) automatisch hart verdrahtet eingeleitet wird, wenn ein Programmzähler (160) eine vorbestimmte Bedingung erfüllt.
Computer-Programm mit einem Programmcode zum Durchführen des Verfahrens zum Verarbeiten von Daten nach Anspruch 20 oder zum Durchführen des Verfahrens zum Verarbeiten von Daten nach Anspruch 22, wenn das Computer-Programm auf einem Computer abläuft.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com