DE102009041176B9 - Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode - Google Patents

Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode Download PDF

Info

Publication number
DE102009041176B9
DE102009041176B9 DE102009041176.3A DE102009041176A DE102009041176B9 DE 102009041176 B9 DE102009041176 B9 DE 102009041176B9 DE 102009041176 A DE102009041176 A DE 102009041176A DE 102009041176 B9 DE102009041176 B9 DE 102009041176B9
Authority
DE
Germany
Prior art keywords
machine language
language code
processing unit
memory
encrypted
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.)
Active
Application number
DE102009041176.3A
Other languages
English (en)
Other versions
DE102009041176B4 (de
DE102009041176A1 (de
Inventor
Marcus Janke
Joachim Velten
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE102009041176A1 publication Critical patent/DE102009041176A1/de
Publication of DE102009041176B4 publication Critical patent/DE102009041176B4/de
Application granted granted Critical
Publication of DE102009041176B9 publication Critical patent/DE102009041176B9/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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
    • 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/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Abstract

Verarbeitungseinheit (20) zum Ausführen eines Maschinensprachcodes (15), die folgende Merkmale aufweist: ein Register für einen Programmzähler (70); eine Ausführungsschaltungsanordnung (75); eine Abrufeinrichtung (60), die konfiguriert ist, ein Wort von einer Adresse eines mit der Verarbeitungseinheit (20) verbindbaren Programmspeichers (30) abzurufen, wobei die Adresse einem aktuellen Zustand des Programmzählers (70) entspricht und der Programmzähler (70) konfiguriert ist, auf ein Abrufen hin inkrementiert zu werden; eine Entschlüsselungseinheit (40), die konfiguriert ist, eine von dem Programmspeicher (30) abgerufene und empfangene verschlüsselte Anweisung des Maschinensprachcodes durch eine Entschlüsselungsfunktion, die von dem Wert des Programmzählers abhängt, zu entschlüsseln, wobei der entschlüsselte Maschinensprachcode Nutzdaten, die bei der Ausführung ein Verhalten der Verarbeitungseinheit beeinflussen, und Fehlererfassungsdaten umfassen, die ein Prüfen einer Integrität der Nutzdaten ermöglichen und bedeutungslos bezüglich des Verhaltens der Verarbeitungseinheit sind; eine Fehlererfassungseinheit (99), die konfiguriert ist, die Fehlererfassungsdaten des entschlüsselten ...

Description

  • Die vorliegende Erfindung bezieht sich auf ein Compiler-System zum Kompilieren eines Quellencodes zu einem Maschinensprachcode, so dass der Maschinensprachcode auf einer Verarbeitungseinheit ausführbar ist.
  • Aus verschiedenen Gründen müssen Programme von Mikrosteuerungen oder allgemein Verarbeitungseinheiten oder elektronischen Vorrichtungen manchmal vor einem Ausspionieren oder Kopieren geschützt werden. Beispielsweise kann eine Sicherheitsmikrosteuerung für spezielle Sicherheitsanwendungen wie persönliche Identifikation, Geldkarten, Pay-TV oder Zugriffsrechte auf bestimmte Bereiche oder Gebäude bestimmt sein, und diese Programme sollten geheim gehalten werden, um zu verhindern, dass Unbefugte die jeweiligen Einrichtungen gefährden, oder um zu verhindern, dass Dritte die jeweiligen Sicherheitsprodukte auf abnormale Weise handhaben.
  • Gemäß dem Stand der Technik kommen hier verschiedenen Verschlüsselungen zum Einsatz:
    Die Druckschrift WO 2009/040207 A1 zeigt ein System zum Schutz eines Zugriffs auf einen Maschinencode eines Geräts, wobei der Maschinencode mittels eine gerätespezifischen Schlüssels verschlüsselt ist.
  • Die Druckschrift WO 01/054083 A1 zeigt eine Mikroprozessoranordnung, die unter anderem eine zentrale Verarbeitungseinrichtung und eine Speichereinheit aufweist, wobei der zentralen Verarbeitungseinrichtung und der Speichereinheit jeweils eine Verschlüsselungseinheit zugeordnet ist.
  • Die Patentschrift US 6,675,298 bezieht sich auf einen Ansatz zum Bereitstellen von Instruktionen in einer verschlüsselten Weise, wobei die Ausführung des verschlüsselten Programms bei digitaler Logikhardware durchgeführt wird.
  • Die Patentanmeldung US 2003/0084308 A1 beschreibt einen Verschlüsseler und Entschlüsseler und ein Verfahren zur Entschlüsselung von Daten, gesteuert über die Speicheradresse.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, ein Compiler-System, Verarbeitungseinheiten sowie Verfahren mit verbesserten Charakteristika zu liefern.
  • Die Aufgabe wird durch die Merkmale der unabhängigen Ansprüche gelöst. Weiterbildungen finden sich in den abhängigen Ansprüchen.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein schematisches Diagramm eines Compiler-Systems zum Kompilieren eines Quellencodes zu einem Maschinensprachcode für eine Verarbeitungseinheit gemäß einem Ausführungsbeispiel der Erfindung;
  • 2 ein weiteres schematisches Diagramm eines Compiler-Systems zum Kompilieren eines Quellencodes zu einem Maschinensprachcode, wobei der Compiler-verschlüsselte Maschinensprachcode auf einen Nur-Lese-Speicher gebrannt wird, der mit der Verarbeitungseinheit gemäß einem Ausführungsbeispiel der Erfindung verbunden ist;
  • 3 ein weiteres schematisches Diagramm eines Compiler-Systems mit einer Verarbeitungseinheit, wobei die Verarbeitungseinheit eine Speicherverschlüsselungseinheit und eine Speicherentschlüsselungseinheit sowie einen Programmspeicher und ein internes Register gemäß einem Ausführungsbeispiel der Erfindung umfasst;
  • 4 ein schematisches Diagramm einer Verarbeitungseinheit zum Ausführen eines Maschinensprachcodes gemäß einem anderen Ausführungsbeispiel der Erfindung;
  • 5 ein Flussdiagramm eines Verfahrens zum Verschlüsseln eines Quellencodes zu einem verschlüsselten Maschinensprachcode, wobei der verschlüsselte Maschinensprachcode durch einen Anweisungsdecodierer der Verarbeitungseinheit gemäß einem weiteren Ausführungsbeispiel der Erfindung entschlüsselt wird;
  • 6 ein Flussdiagramm eines Verfahrens zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode gemäß einem Ausführungsbeispiel der Erfindung; und
  • 7 ein Flussdiagramm eines Verfahrens zum Verschlüsseln eines Quellencodes zu einem verschlüsselten Maschinensprachcode gemäß einem Ausführungsbeispiel der Erfindung.
  • In 1 ist ein schematisches Diagramm eines Compiler-Systems 100 zum Kompilieren eines Quellencodes 5 zu einem Maschinensprachcode 15 gemäß einem Ausführungsbeispiel der Erfindung gezeigt. Das Compiler-System 100 umfasst einen Compiler 10. Der Compiler 10 ist in der Lage, einen Quellencode 5 zu einem Maschinensprachcode zu kompilieren, so dass der Maschinensprachcode auf einer Verarbeitungseinheit 20 ausführbar ist. Der Quellencode kann beispielsweise ein Java-, C-, C++- oder ein Visual-Basic-Code sein. Der Maschinensprachcode ist beispielsweise ein Binärcode, der eine Sequenz des Maschinencodes umfasst, der direkt auf der Verarbeitungseinheit 20 ausführbar ist, die wiederum beispielsweise auf einer 8051-, 8031- oder 8751-Architektur beruhen kann. Die Verarbeitungseinheit 20 umfasst ein internes Register 25, das ansprechend auf eine Ausführung des Maschinensprachcodes 15 seinen Zustand ändert. Der Compiler 10 ist ferner dahin gehend konfiguriert, den Maschinensprachcode auf der Basis einer Verschlüsselungsfunktion 18, die von dem Zustand des internen Registers 25 der Verarbeitungseinheit 20 abhängt, zu verschlüsseln.
  • Die gestrichelte Linie zwischen der Verarbeitungseinheit 20 und dem Compiler 10 und dem Compiler-verschlüsselten Maschinensprachcode 15 soll angeben, dass zwischen der Verarbeitungseinheit und dem Compiler eventuell keine direkte Verbindung vorliegt. Die Kompilierung mit dem Compiler 10 kann beispielsweise am Ort eines Kunden durchgeführt werden, und somit kann die Verschlüsselungsfunktion über das Internet, über ein beliebiges anderes digitales Speichermedium wie beispielsweise eine CD oder DVD übermittelt werden. Dies bezieht sich auf die Übermittlung oder die Speicherung des Compiler-verschlüsselten Maschinensprachcodes, der beispielsweise zu dem Ort des Herstellers der Verarbeitungseinheit zurück übermittelt wird. Der Quellencode 5 für die Verarbeitungseinheit kann seitens des Kunden erzeugt werden, und eine Verschlüsselungsfunktion kann seitens eines Herstellers der Verarbeitungseinheit erzeugt werden.
  • Der Quellencode 5 kann beispielsweise ein Programm oder eine Firmware für eine elektronische Vorrichtung, eine Mikrosteuerung, eine Verarbeitungseinheit, eine Sicherheitssteuerung oder eine Zentralverarbeitungseinheit (CPU – central processing unit) sein. Der Compiler 10 kann dahin gehend konfiguriert sein, den bereitgestellten Quellencode 5 zu einem Maschinensprachcode zu kompilieren und damit zu verbinden. Dieser kompilierte Maschinensprachcode kann durch den Compiler oder ein Verschlüsselungswerkzeug des Compiler-Systems 100 (in 1 nicht gezeigt) mit einer Verschlüsselungsfunktion verschlüsselt werden. Diese Verschlüsselungsfunktion kann von dem Zustand eines internen Registers der Verarbeitungseinheit 20, auf der der Maschinensprachcode laufen soll, und insbesondere von dem Zustand des internen Registers 25 zu dem Zeitpunkt, zu dem die Verarbeitungseinheit 20 das Programm 15 ausführt, abhängen, wobei der Zustand während der Ausführung gemäß einem Ausführungsbeispiel der Erfindung variiert. Mit anderen Worten ist das interne Register 25 dahin gehend konfiguriert, seinen Zustand ansprechend auf eine Ausführung des Maschinensprachcodes auf der Verarbeitungseinheit zu ändern.
  • Das interne Register 25 kann beispielsweise ein Programmzähler (PZ) der Verarbeitungseinheit sein, und die Verschlüsselungsfunktion, die seitens des Compilers dazu verwendet wird, den Quellencode des Programms für die Verarbeitungseinheit zu verschlüsseln, kann dahin gehend entworfen sein, einen erwarteten Zustand des PZ zum Zeitpunkt eines Abrufens einer jeweiligen Anweisung des Maschinensprachcodes oder eines Wortes derselben von dem Speicher mit der jeweiligen Anweisung oder einem Wort derselben zu kombinieren. Das heißt beispielsweise, dass eine erwartete Adresse für eine Anweisung oder ein Wort einer Anweisung des Maschinensprachcodes in dem Programmzähler dazu verwendet werden kann, eine Verschlüsselungsfunktion bzw. ihren Schlüssel zu definieren, um den Quellencode in dem Compiler 10 zu einem Compiler-verschlüsselten Quellencode zu verschlüsseln.
  • Ein Hersteller der Verarbeitungseinheit kann beispielsweise die Definition der Verschlüsselungsfunktion an einen Kunden liefern, der sich um das Programm der jeweiligen Verarbeitungseinheit kümmert. Die Verschlüsselungsfunktion kann in dem Compiler 10 oder, gemäß einem anderen Ausführungsbeispiel der Erfindung, in einem separaten Verschlüsselungswerkzeug implementiert sein, das zusammen mit dem Compiler 10 eine Werkzeugkette bildet, so dass ein Operationscode oder -programm für die Verarbeitungseinheit bereits an dem Ort eines Kunden während der Erzeugung des Operationscodes (opcode) – des Maschinensprachcodes für die Verarbeitungseinheit – verschlüsselt werden kann. Dadurch kann die Sicherheit weiter erhöht werden, da nach der Kompilierung des Quellencodes und der Verschlüsselung mit der Verschlüsselungsfunktion ein Compiler-verschlüsselter Maschinensprachcode zur Verfügung steht. Ein Kunde kann diesen Compiler-verschlüsselten Maschinensprachcode an den Hersteller der Verarbeitungseinheit liefern. Dann kann der Compiler-verschlüsselte Maschinensprachcode in einem mit der Verarbeitungseinheit 20 verbundenen Programmspeicher 30 (siehe 2) gespeichert werden. Das heißt, dass die Anweisungen des Programms, das in den Programmspeicher der Verarbeitungseinheit gespeichert oder gebrannt werden soll, gleichzeitig bereits Computer-verschlüsselt sein kann und von dem Kunden an den Hersteller weitergeleitet wird. Dies kann einen zusätzlichen Schutz vor einem Ausspionieren durch mögliche Angreifer bieten.
  • Gemäß einem anderen Ausführungsbeispiel der Erfindung (2) kann das Compiler-System 10 einen Speicher, z. B. einen Nur-Lese-Speicher (ROM – read-only memory) umfassen, wobei der Speicher 30 mit der Verarbeitungseinheit verbunden ist. Der Compiler 10 kann dahin gehend konfiguriert sein, den Compiler-verschlüsselten Maschinensprachcode in den Speicher 30 zu speichern. Der Speicher 30 kann beispielsweise ein Nur-Lese-Speicher, z. B. ein elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM – electrically erasable program read-only memory), ein Masken-ROM, ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM – erasable programmable read-only memory), ein programmierbarer Nur-Lese-Speicher (PROM – programmable read-only memory) oder ein sonstiger Nur-Lese-Speicher, sein. Jedoch kann der Speicher 30 eine beliebige Art von Speicher sein, der in der Lage ist, den Compiler-verschlüsselten Maschinensprachcode zu speichern. Ein derartiger Speicher kann beispielsweise ein Direktzugriffsspeicher (RAM – random-access memory), z. B. ein dynamischer Direktzugriffsspeicher (DRAM – dynamic random-access memory), ein statischer RAM (SRAM – static RAM), ein Phasenänderungs-RAM (PCRAM – phase change RAM), ein magnetoresistiver RAM (MRAM – magnetoresistive RAM) oder ein ferroelektrischer RAM (FRAM – ferroelectric RAM), sein. Der Speicher kann auch ein ferromagnetischer Speicher wie z. B. ein Festplattenlaufwerk (HDD – hard disc drive), ein optischer Speicher wie z. B. eine CD, eine DVD, eine Blue-Ray-Disc usw. sein.
  • Gemäß einem Ausführungsbeispiel der Erfindung kann die Kompilierung und die Verschlüsselung des Quellencodes an einer ersten Örtlichkeit an einem Personal-Computer oder einem Computersystem durchgeführt werden. Die Verarbeitungseinheit 20 kann sich auf einem unabhängigen Chip an einer zweiten Örtlichkeit befinden. Der Compiler-verschlüsselte Maschinensprachcode kann deshalb beispielsweise über das Internet oder auch über andere digitale Speichermedien an die zweite Örtlichkeit übermittelt werden.
  • Der Nur-Lese-Speicher 30 kann ein externer Nur-Lese-Speicher oder allgemein ein externer Programmspeicher sein, oder er kann in die Verarbeitungseinheit integriert sein. Der Programmspeicher 30 kann mit der Verarbeitungseinheit verbindbar oder gekoppelt sein.
  • Wie bei dem schematischen Diagramm in 3 gezeigt ist, kann das Compiler-System 100 zum Kompilieren eines Quellencodes zu einem Maschinensprachcode eine Verarbeitungseinheit 20 umfassen, wobei die Verarbeitungseinheit einen Programmspeicher 30 aufweist oder damit verbunden ist. Die Verarbeitungseinheit umfasst ferner eine Speicherentschlüsselungseinheit 35 und eine Speicherverschlüsselungseinheit 40. Der Compiler 10 kann dahin gehend konfiguriert sein, den Compiler-verschlüsselten Maschinensprachcode 15 über die Speicherverschlüsselungseinheit 40 in den Programmspeicher 30 zu speichern. Gemäß diesem Ausführungsbeispiel kann die Speicherverschlüsselungseinheit dahin gehend konfiguriert sein, den Compiler-verschlüsselten Maschinensprachcode 15 in Abhängigkeit von einer Speicheradresse, an der der Maschinensprachcode in dem Programmspeicher 30 gespeichert werden soll, ein zweites Mal zu verschlüsseln. Mit anderen Worten kann die Speicherverschlüsselungseinheit 40 in Abhängigkeit von einer Speicheradresse, an der der Compiler-verschlüsselte Maschinensprachcode in der Verarbeitungseinheit 20 gespeichert werden soll, eine zweite Verschlüsselung des Compiler-verschlüsselten Maschinensprachcodes durchführen. Auf Grund dieser zweiten Verschlüsselung kann der Schutz der Verarbeitungseinheit vor einem feindlichen Angriff weiter erhöht werden. Die Verarbeitungseinheit 20 kann ferner eine Speicherentschlüsselungseinheit 35 umfassen, die dahin gehend konfiguriert ist, den aus dem Programmspeicher ausgelesenen, zweifach verschlüsselten Maschinensprachcode zu entschlüsseln, um den Compiler-verschlüsselten Maschinensprachcode zu erhalten, und bei einem weiteren Entschlüsselungsschritt auf der Basis einer Entschlüsselungsfunktion, die auf dem Zustand des internen Registers 25 beruht, zu entschlüsseln, um Anweisungen zu erhalten, die auf der Verarbeitungseinheit 20 ablaufen können. Die Verschlüsselungsfunktion, die der Maschinenverschlüsselungseinheit 40 zu Grunde liegt, kann komplizierter sein als die Verschlüsselungsfunktion 18.
  • Gemäß einem weiteren Ausführungsbeispiel der Erfindung umfasst die Verarbeitungseinheit 20 einen Programmspeicher 30 und eine Speicherentschlüsselungseinheit 35 zum Entschlüsseln von aus dem Programmspeicher ausgelesenen Anweisungsdaten. Das Compiler-System kann dahin gehend konfiguriert sein, den Compiler-verschlüsselten Maschinensprachcode auf eine weitere verschlüsselte Weise in den Programmspeicher zu speichern, was dann, wenn er durch die Speicherentschlüsselungseinheit 35 entschlüsselt wird, zu dem Compiler-verschlüsselten Maschinensprachcode führt.
  • Während des Betriebs der Verarbeitungseinheit kann die Verarbeitungseinheit Anweisungen aus dem Programmspeicher 30 auslesen bzw. Anweisungen in denselben schreiben. Die Anweisungen können wiederum von einer Speicheradresse der Anweisung abhängen, die in dem Programmspeicher gespeichert werden soll und die die Speicherverschlüsselungseinheit verschlüsselt.
  • Wie in 3 gezeigt ist, kann die Verschlüsselungsfunktion 18 von einer bitweisen Exklusiv-ODER(XOR)- oder einer Exklusiv-NICHT-ODER(NXOR)-Logikverknüpfung zwischen dem Zustand des internen Registers 25 und dem Maschinensprachcode abhängen. Gemäß einem Ausführungsbeispiel wird diese logische Verknüpfung durch eine XOR-Logikverknüpfung zwischen der Anweisung oder dem generischen Operationscode und dem tatsächlichen Wert des Programmzählers durchgeführt. Das interne Register kann der Programmzähler der Verarbeitungseinheit gemäß Ausführungsbeispielen der Erfindung sein. Eine Anweisung für die Verarbeitungseinheit kann Nutzdaten, wobei der Zustand dieser Nutzdaten ein Verhalten der Verarbeitungseinheit beeinflussen kann, und Fehlererfassungsdaten umfassen, die ein Prüfen einer Integrität der Nutzdaten ermöglichen und Bedeutungslos-Daten bezüglich des Verhaltens der Verarbeitungseinheit darstellen. Gemäß Ausführungsbeispielen der Erfindung kann die Anweisung des Maschinensprachcodes beispielsweise Prüfbits in dem Operationscode umfassen. Derartige Prüfbits können beispielsweise Paritätsbits oder sonstige Codesegmente mit höher entwickelten Algorithmen sein, um einen Fehler zu detektieren oder einen erzwungenen Angriff von einem feindlichen Angreifer auf die Verarbeitungseinheit zu entdecken.
  • In 4 ist ein schematisches Diagramm einer Verarbeitungseinheit 20 zum Ausführen eines Maschinensprachcodes gezeigt. Die Verarbeitungseinheit 20 umfasst ein Register für einen Programmzähler 70, eine Ausführungsschaltungsanordnung 75, eine Abrufeinrichtung 60, eine Entschlüsselungseinheit 40 und einen Anweisungsdecodierer 65. Der Programmzähler 70 kann das interne Register 25 sein. Die Abrufeinrichtung 60 ist dahin gehend konfiguriert, ein Wort von einer Adresse eines Programmspeichers 30, der mit der Verarbeitungseinheit 20 verbindbar ist, abzurufen. Gemäß einem Ausführungsbeispiel der Erfindung kann die Adresse des Wortes einem aktuellen Zustand des Programmzählers 70 entsprechen, und der Programmzähler 70 kann dahin gehend konfiguriert sein, auf ein Abrufen hin inkrementiert zu werden. Eine Anweisung für die Verarbeitungseinheit kann aus zumindest einem Wort bestehen. Ein Wort kann beispielsweise ein Byte oder zwei Bytes an Informationen umfassen, es kann als der kleinste zusammenhängende Block einer Anweisung für die Verarbeitungseinheit angesehen werden. Eine Anweisung für eine Verarbeitungseinheit kann beispielsweise in einen Operationscode, der eine Zahl sein kann, die auf eine bestimmte Maschinenanweisung bezogen ist, z. B. eine Multiplikation, eine Inkrementierung oder einen Befehl, ein Register zu laden, und einen Operanden, d. h. einen Parameter, der seitens des Operationscodes bearbeitet wird, unterteilt werden. Ein Operand kann z. B. eine Adresse oder ein Register sein.
  • Eine Anweisung für die Verarbeitungseinheit 20 kann ein oder mehrere Wörter umfassen. Die Abrufeinrichtung kann dahin gehend konfiguriert sein, an Stellen, auf die der PZ zeigt, Wörter von dem Programmspeicher Wort für Wort abzurufen. Die Entschlüsselungseinheit 40 ist dahin gehend konfiguriert, das von dem Programmspeicher 30 abgerufene Wort zu entschlüsseln, und der Anweisungsdecodierer 65 ist dahin gehend konfiguriert, das entschlüsselte Wort zu analysieren. Der Anweisungsdecodierer 65 entscheidet, ob das entschlüsselte Wort zu einer Anweisung gehört, die ein weiteres Wort einschließt. Das heißt, der Anweisungsdecodierer kann unterscheiden, ob das abgerufene Wort von dem Programmspeicher bereits eine vollständige Anweisung ist, die seitens der Ausführungsschaltungsanordnung 75 der Verarbeitungseinheit 20 ausgeführt werden kann, oder ob beispielsweise immer noch ein Operand der aktuellen Anweisung fehlt. Falls die Anweisung keine weiteren Wörter einschließt, wird die Ausführungsschaltungsanordnung 75 gemäß der Anweisung gesteuert. In jedem Fall fährt die Abrufeinrichtung 60 fort, an Stellen, die durch den Programmzähler (PZ) indexiert werden, Wörter von dem Programmspeicher 30 abzurufen, beispielsweise das fehlende Wort der Anweisungen oder das Wort bzw. die Wörter der nächsten Anweisung. Gemäß diesem Ausführungsbeispiel gehört jedes Wort der Anweisung zu einer bestimmten Adresse in dem Programmspeicher. Der Programmzähler 70 kann nach jedem Abrufen eines Wortes der Anweisung inkrementiert werden. Bei einem anderen Ausführungsbeispiel der Erfindung wird der Programmzähler 70 nicht nach jedem Abruf inkrementiert. Selbstverständlich können manche der Anweisungen den Programmzähler manipulieren, wenn sie als Sprunganweisungen ausgeführt werden.
  • Gemäß einem anderen Ausführungsbeispiel der Erfindung kann die Verarbeitungseinheit 20 einen Programmspeicher 30, ein internes Register 25, das ansprechend auf eine Ausführung des Maschinensprachcodes seinen Zustand ändert, umfassen. Die Verarbeitungseinheit kann ferner eine Entschlüsselungseinheit 40 umfassen, die dahin gehend konfiguriert ist, einen von dem Programmspeicher empfangenen verschlüsselten Maschinensprachcode auf der Basis einer Entschlüsselungsfunktion zu entschlüsseln. Die Entschlüsselungsfunktion kann von dem Zustand des internen Registers 25 abhängen. Der entschlüsselte Maschinensprachcode ist auf der Verarbeitungseinheit 20 ausführbar. Der entschlüsselte Maschinensprachcode kann durch einen Anweisungsdecodierer 65 interpretiert oder analysiert werden. Der Maschinensprachcode kann Anweisungen umfassen, die auf der Verarbeitungseinheit auszuführen sind. Das interne Register 25 kann beispielsweise der Programmzähler 70 sein. Gemäß Ausführungsbeispielen der Erfindung kann die Entschlüsselungseinheit 40 beispielsweise den Compiler-verschlüsselten Maschinensprachcode oder den zweifach verschlüsselten Maschinensprachcode entschlüsseln, so dass der Maschinensprachcode nach der Entschlüsselung ausführbar ist oder eine Ausführungsschaltungsanordnung 75 der Verarbeitungseinheit 20 steuern kann. Gemäß Ausführungsbeispielen der Erfindung kann der Maschinensprachcode Nutzdaten, wobei diese Daten ein Verhalten der Verarbeitungseinheit beeinflussen können, und Fehlererfassungsdaten umfassen, die ein Prüfen einer Integrität der Nutzdaten ermöglichen und Bedeutungslos-Daten bezüglich des Verhaltens der Verarbeitungseinheit darstellen. Die Verarbeitungseinheit 20 kann ferner eine Fehlererfassungseinheit 99 umfassen. Die Entschlüsselungseinheit kann dahin gehend konfiguriert sein, einen von dem Programmspeicher empfangenen verschlüsselten Maschinensprachcode zu entschlüsseln, und die Fehlererfassungseinheit kann dahin gehend konfiguriert sein, die Fehlererfassungsdaten des entschlüsselten Maschinensprachcodes mit den erwarteten Fehlererfassungsdaten zu vergleichen. Die Fehlererfassungseinheit kann ferner ein Rückkopplungssignal bezüglich dessen liefern, ob sich die Fehlererfassungsdaten des Maschinensprachcodes von den erwarteten Fehlererfassungsdaten unterscheiden. Auf diese Weise kann die Integrität des Maschinensprachcodes überprüft werden, und ein möglicher Angriff auf die Verarbeitungseinheit oder auf den Maschinensprachcode kann entdeckt werden. Bei einem alternativen Ausführungsbeispiel der Erfindung kann die Fehlererfassungseinheit dahin gehend konfiguriert sein, ein Rückkopplungssignal zu unterbrechen, falls sich die Fehlererfassungsdaten des entschlüsselten Maschinensprachcodes von den erwarteten Fehlererfassungsdaten unterscheiden.
  • Gemäß einem anderen Ausführungsbeispiel der Erfindung (siehe 4) kann die Verarbeitungseinheit 20 ein programmierbares Register 80 umfassen. Bei diesem Ausführungsbeispiel kann die Entschlüsselungseinheit 40 dahin gehend konfiguriert sein, das seitens der Abrufeinrichtung 60 von dem Programmspeicher 30 abgerufene Wort auf der Basis einer Entschlüsselungsfunktion zu entschlüsseln, die einerseits von dem Zustand des internen Registers 25, beispielsweise des Programmzählers 70, und dem Zustand des programmierbaren Registers 80 abhängt. Der entschlüsselte Maschinensprachcode kann auf der Verarbeitungseinheit ausführbar sein, und die jeweilige Anweisung kann die Ausführungsschaltungsanordnung 75 steuern. Das programmierbare Register 80 kann beispielsweise ein Pseudozufallsrückkopplungsschieberegister sein, dem ein vorbestimmter Startparameter zugeführt wird. Das programmierbare Register 80 kann dahin gehend konfiguriert sein, mit einer bestimmten Software betrieben und programmiert zu werden. Das programmierbare Register kann ein Zustandsregister sein.
  • Bei anderen Ausführungsbeispielen der Erfindung kann die Komplexität der Verschlüsselungsfunktion und der jeweiligen Entschlüsselungsfunktion erhöht werden. Beispielsweise können zusätzliche Logikverknüpfungen enthalten sein, oder es können komplexere Algorithmen dazu verwendet werden, den Maschinensprachcode zu verschlüsseln und zu entschlüsseln. Dies kann genutzt werden, um die Stärke des Sicherheitsalgorithmus zu erhöhen und/oder um eine Fehlermultiplikation zu erzielen.
  • Gemäß einem anderen Ausführungsbeispiel der Erfindung kann die Verarbeitungseinheit 20 wiederum ein Register für einen Programmzähler 70, eine Ausführungsschaltungsanordnung 75, eine Abrufeinrichtung 60, eine Entschlüsselungseinheit 40 und einen Anweisungsdecodierer 65 umfassen. Die Abrufeinrichtung 60 kann dahin gehend konfiguriert sein, Wort für Wort den Maschinensprachcode von einer Adresse des Programmspeichers 30 abzurufen, die dem aktuellen Zustand des Programmzählers 70 entspricht. Die Entschlüsselungseinheit kann dahin gehend konfiguriert sein, den von dem Programmspeicher 30 abgerufenen Wort-Für-Wort-Maschinensprachcode zu entschlüsseln und das entschlüsselte Wort zu analysieren und zu entscheiden, ob das entschlüsselte Wort zu einer Anweisung des Maschinensprachcodes, die weitere Wörter einschließt, gehört, und falls die Anweisung keine weiteren Wörter einschließt, eine Ausführungsschaltungsanordnung 75 der Verarbeitungseinheit gemäß der Anweisung des Maschinensprachcodes zu steuern. Bei einem alternativen Ausführungsbeispiel der Erfindung kann die Abrufeinrichtung dahin gehend konfiguriert sein, eine vollständige Anweisung, die mehr als ein Wort einschließen kann, von dem Programmspeicher 30 abzurufen. Ein Wort kann beispielsweise ein oder mehrere Bytes umfassen. In diesem Fall kann die Entschlüsselungseinheit 40 dahin gehend konfiguriert sein, unter Verwendung einer Entschlüsselungsfunktion, die von einem Zustand eines internen Registers abhängt, eine vollständige Anweisung für die Ausführungsschaltungsanordnung 35 zu entschlüsseln. Bei Ausführungsbeispielen der Erfindung kann eine verschlüsselte Maschinensprachcodeanweisung Anweisung um Anweisung in dem Programmspeicher 30 gespeichert werden. Eine Anweisung kann gemäß manchen Ausführungsbeispielen der Erfindung beispielsweise ein Byte, zwei Bytes, drei Bytes, vier Bytes oder 64 Bytes umfassen.
  • In 5 ist gemäß einem anderen Ausführungsbeispiel der Erfindung ein schematisches Diagramm einer Verarbeitungseinheit 20 gezeigt. Die Verarbeitungseinheit 20 umfasst ein Register für einen Programmzähler 70, eine Ausführungsschaltungsanordnung 75, eine Speicherentschlüsselungseinheit 40a, eine Entschlüsselungseinheit 40b und einen Anweisungsdecodierer 65. Ein Programmspeicher (PS) 30 kann in die Verarbeitungseinheit 20 integriert sein oder kann mit der Verarbeitungseinheit 20 verbindbar sein. Die Speicherentschlüsselungseinheit 40a kann dahin gehend konfiguriert sein, von dem Programmspeicher 30 empfangene Anweisungen in Abhängigkeit von einer Speicheradresse, die auf einen Speicherplatz zeigt, an dem die Anweisung in dem Programmspeicher gespeichert ist, zu entschlüsseln. Die Anweisungsentschlüsselungseinheit 40b kann dahin gehend konfiguriert sein, die abhängig von der Speicheradresse entschlüsselten Anweisungen von der Speicherentschlüsselungseinheit 40a in Abhängigkeit von einem aktuellen Zustand des Programmzählers 70, 25 zu entschlüsseln. Mit anderen Worten entschlüsselt die Speicherentschlüsselungseinheit 40a den speicheradressabhängigen Teil, und die Anweisungsentschlüsselungseinheit 40b entschlüsselt beispielsweise den Compiler-verschlüsselten Maschinensprachcode, wie im Zusammenhang mit anderen Ausführungsbeispielen der Erfindung beschrieben ist. Der Anweisungsdecodierer 65 kann dann dahin gehend konfiguriert sein, die abhängig von dem Programmzähler entschlüsselten Anweisungen von der Anweisungsentschlüsselungseinheit 40b zu decodieren. Der Anweisungsdecodierer 65 kann auch dahin gehend konfiguriert sein, die Ausführungsschaltungsanordnung 75 gemäß den decodierten Anweisungen zu steuern. Bei diesem Ausführungsbeispiel kann der Anweisungsdecodierer dahin gehend konfiguriert sein, die verschlüsselte Anweisung zu interpretieren und eine Ausführungsschaltungsanordnung der Verarbeitungseinheit gemäß den interpretierten Anweisungen zu steuern.
  • Die Speicherentschlüsselungseinheit 40a kann alternativ dazu dahin gehend konfiguriert sein, ein Wort einer in dem Programmspeicher gespeicherten Anweisung zu entschlüsseln, wobei eine Anweisung zumindest ein Wort umfasst.
  • Gemäß manchen Ausführungsbeispielen der Erfindung kann der Programmspeicher 30 eine Mehrzahl von Speicherblöcken umfassen, wobei der Programmspeicher dahin gehend konfiguriert ist, eine Mehrzahl von Anweisungen in dem Speicherblock zu speichern. Mit anderen Worten kann der Programmspeicher 30 in eine Mehrzahl von Unterteilungen, die so genannten Speicherblöcke, unterteilt sein, wobei in einem Speicherblock eine Mehrzahl von Anweisungen gespeichert sein können. Eine Anweisung selbst kann in ein oder mehrere Wörter getrennt sein, wobei beispielsweise ein Wort den Operationscode umfassen kann und andere Wörter der Anweisung Operanden der Anweisung umfassen können. Eine Adresse für eine Anweisung in einem Programmspeicher kann von einer Speicherblockadresse in dem Programmspeicher abhängen.
  • 6 zeigt ein Flussdiagramm und ein Beispiel eines Compiler-Systems und eines Verfahrens zum Verschlüsseln einer Quelle zu einem verschlüsselten Maschinensprachcode, sowie ein schematisches Diagramm einer Verarbeitungseinheit zum Ausführen eines entschlüsselten Maschinensprachcodes.
  • Wie in 6 gezeigt ist, kann ein Quellencode 5 beispielsweise in der C-Computersprache oder in einer beliebigen anderen hierfür geeigneten Computersprache geschrieben sein. Der Quellencode 5 kann seitens eines Compilers 10 kompiliert und verbunden werden, so dass nach der Kompilierung ein Maschinensprachcode erzeugt wird, der auf einer Verarbeitungseinheit ausgeführt werden kann. Der Deutlichkeit halber ist in dem Kästchen 80 ein Beispiel eines derartigen Teils eines Maschinensprachcodes gezeigt. Eine Anweisung des Maschinensprachcodes kann einen Operationscode, beispielsweise mov A, und einen Operanden Nr. 0 umfassen. In diesem Fall kann die Anweisung zwei Wörter umfassen, ein Wort kann beispielsweise mov A sein, und das andere Wort kann Nr. 0 sein. Diese Art von Anweisungscode kann ein Assembler-Code sein. Jedes Wort des Assembler-Codes kann einer bestimmten erwarteten Adresse in einem Programmzähler der Verarbeitungseinheit entsprechen, beispielsweise beginnend mit einer Adresse 0 für den Assembler-Code mov A. Der Compiler 10 kann direkt aus dem Quellencode 5 eine hexadezimale Form der Anweisung erzeugen, die zum Steuern der Verarbeitungseinheit verwendet werden kann. Bei dem in dem Kästchen 80 gezeigten Beispiel kann die Assembler-Anweisung mov A an der Adresse 0 in einer hexadezimalen Form dem Ausdruck 0xAA entsprechen. Der Operand Nr. 0 kann an der Adresse 1 gespeichert werden und kann in hexadezimaler Form dem Wert 0x00 entsprechen. Die anderen Anweisungen in dem Kästchen 80 können auf dieselbe Weise interpretiert werden.
  • Das Verfahren zum Kompilieren einer Quelle kann ferner beispielsweise ein Verschlüsseln des Maschinensprachcodes, wie er in dem Kästchen 80 gezeigt ist, auf der Basis einer Verschlüsselungsfunktion umfassen. Bei diesem Ausführungsbeispiel kann die Verschlüsselungsfunktion (Kästchen 82, 6) als Funktion des Operationscodebytes, die von einem um 1 inkrementierten Programmzählerwert abhängt, definiert sein. Mit anderen Worten kann der Compiler 10 oder ein Verschlüsselungswerkzeug, das in den Compiler integriert sein kann oder das eine separate Software sein kann, eine Verschlüsselungsfunktion anwenden, die von dem Zustand eines internen Registers, beispielsweise des Programmzählers, abhängt. Bei diesem Ausführungsbeispiel wird die Komplexität der Verschlüsselungsfunktion erhöht, indem zu dem Programmzählerwert 1 hinzu addiert wird. Das Kompilieren des Quellencodes und das Verschlüsseln des Maschinensprachcodes auf der Basis einer Verschlüsselungsfunktion kann beispielsweise an einem Ort eines Kunden der Verarbeitungseinheit durchgeführt werden. Das Speichern und Brennen des verschlüsselten Maschinensprachcodes kann am Ort eines Herstellers der Verarbeitungseinheit durchgeführt werden.
  • Nach dem Verschlüsseln des Maschinensprachcodes auf der Basis der oben erwähnten Verschlüsselungsfunktion wird ein verschlüsselter Maschinensprachcode erzeugt (siehe Kästchen 85). Der hexadezimale Maschinensprachcode 0xAA an der Adresse 0 in dem Kästchen 80 hat sich nun zu dem verschlüsselten Maschinensprachcode 0xAB geändert. Gemäß der Verschlüsselungsfunktion 82 wird das erste Operationscodebyte 0xAA durch den um 1 inkrementierten Programmzählerwert verschlüsselt, was bedeutet Adresse 0 plus 1, und deshalb wird der Compiler-verschlüsselte Maschinensprachcode 0xAB. An der Adresse 1 ist der hexadezimale Code 0x00 (siehe Kästchen 80), der durch den Compiler 10 oder ein separates Verschlüsselungswerkzeug verschlüsselt ist, so dass der Compiler-verschlüsselte Maschinensprachcode 0x02 ist. Die Programmzähleradresse ist bei diesem Beispiel 1 (Adresse 1) plus 1, so dass der Compiler-verschlüsselte Maschinensprachcode nun 0x02 ist. Der restliche Maschinensprachcode kann auf dieselbe Weise verschlüsselt werden. Der Compiler-verschlüsselte Maschinensprachcode kann anschließend in einen bzw. auf einen Programmspeicher oder Speicher, z. B. einen Nur-Lese-Speicher (ROM-Maske), gespeichert oder gebrannt werden.
  • Der verschlüsselte Maschinensprachcode kann beispielsweise in einer Reihenfolge aufsteigender Adressen in dem Programmspeicher 30 einer Verarbeitungseinheit 20 gespeichert werden. Wie oben beschrieben wurde, kann der Maschinensprachcode bei diesem Ausführungsbeispiel über einen Mikrosteuerungsprogrammbus Wort für Wort an die Entschlüsselungseinheit 40 übermittelt werden. Die Entschlüsselungseinheit 40 kann in der Lage sein, in Abhängigkeit von einer Entschlüsselungsfunktion zu entschlüsseln, die bei diesem Beispiel das Operationscodebyte sein kann, das von dem Programmzählerwert minus 1 abhängt. Die Entschlüsselungsfunktion kann die umgekehrte Verschlüsselungsfunktion sein. Nach dem Entschlüsseln des Compiler-verschlüsselten Maschinensprachcodes kann ein Anweisungsdecodierer den entschlüsselten Maschinensprachcode analysieren und die Verarbeitungseinheit gemäß den Maschinensprachcodeanweisungen steuern. Die Entschlüsselungsfunktion kann von einem internen Zustand eines internen Registers, beispielsweise des Programmzählers, abhängen.
  • Durch Verwendung einer Verschlüsselungsfunktion und einer Entschlüsselungsfunktion, die von einem internen Register einer Verarbeitungseinheit abhängen, wobei das interne Register ansprechend auf eine Ausführung des Maschinensprachcodes seinen Zustand ändert, ist es schwieriger für einen potentiellen Angreifer, die Firmware oder das Programm der Verarbeitungseinheit zu entschlüsseln. Beispielsweise kann die Verwendung statistischer Verfahren, um einen verschlüsselten Maschinensprachcode zu entziffern, schwieriger sein als ohne eine Verschlüsselung, die von einem internen Zustand eines Registers abhängt. Die Maschinenanweisung jmp (engl. jump, Sprungbefehl) in dem Kästchen 85 wird einmal durch den hexadezimalen Ausdruck 0xBE und das zweite Mal durch den hexadezimalen Ausdruck 0x0C verschlüsselt.
  • In 7 ist ein Flussdiagramm des Verfahrens zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode gezeigt. Der Maschinensprachcode ist auf einer Verarbeitungseinheit ausführbar, wobei die Verarbeitungseinheit ein internes Register umfasst, das ansprechend auf eine Ausführung des Maschinensprachcodes seinen Zustand ändert, wie oben gezeigt ist. Das Verfahren umfasst ein Kompilieren 110 des Quellencodes zu einem Maschinensprachcode und ein Verschlüsseln 120 des Maschinensprachcodes auf der Basis einer Verschlüsselungsfunktion, die von dem Zustand des internen Registers abhängt. Die Verschlüsselungsfunktion kann komplexer sein, wie dies bei dem Ausführungsbeispiel der 6 gezeigt ist.
  • Gemäß einem anderen Ausführungsbeispiel des Verfahrens zum Kompilieren eines Quellencodes kann die Verarbeitungseinheit ein programmierbares Register umfassen, und das Verschlüsseln 120 des Maschinensprachcodes kann zusätzlich auf einer Verschlüsselungsfunktion beruhen, die von dem Zustand des programmierbaren Registers abhängt. Mit anderen Worten kann die Verschlüsselungsfunktion komplexer sein, indem sie beispielsweise ein zusätzliches programmierbares Zustandsregister verwendet. Eine jeweilige Bedienperson kann das Zustandsregister programmieren. Es kann unter Verwendung eines bestimmten Computerprogramms oder einer bestimmten Software programmiert werden.
  • In 8 ist ein Flussdiagramm des Verfahrens zum Verschlüsseln eines Quellencodes zu einem verschlüsselten Maschinensprachcode gezeigt. Das Verfahren wird so durchgeführt, dass ein entschlüsselter Maschinensprachcode des verschlüsselten Maschinensprachcodes auf einer Verarbeitungseinheit ausführbar ist, wobei die Verarbeitungseinheit ein internes Register, das ansprechend auf eine Ausführung des Maschinensprachcodes seinen Zustand ändert, einen Programmspeicher und eine Entschlüsselungseinheit umfasst.
  • Das Verfahren wird durchgeführt, indem ein Quellencode zu einem Maschinensprachcode für die Verarbeitungseinheit kompiliert wird 110, indem der Maschinensprachcode auf der Basis einer Verschlüsselungsfunktion, die von dem Zustand des internen Registers der Verarbeitungseinheit abhängt, verschlüsselt wird 120. Ferner umfasst das Verschlüsselungsverfahren ein Sichern 130 des Compiler-verschlüsselten Maschinensprachcodes auf einem Programmspeicher und ein Entschlüsseln 140 des Compiler-verschlüsselten Maschinensprachcodes, der von dem Programmspeicher ausgelesen wird, mit einer Entschlüsselungsfunktion, die von dem Zustand des internen Registers der Verarbeitungseinheit abhängt, so dass der entschlüsselte Maschinensprachcode auf der Verarbeitungseinheit ausführbar ist.
  • Das Verfahren kann ferner ein Brennen des Compiler-verschlüsselten Maschinensprachcodes auf einen Nur-Lese-Speicher (ROM) umfassen. Gemäß einem anderen Ausführungsbeispiel des Verfahrens kann der Compiler-verschlüsselte Maschinensprachcode vor dem Sichern 130 des Compiler-verschlüsselten Maschinensprachcodes ein zweites Mal verschlüsselt werden. Die zweite Verschlüsselung kann in Abhängigkeit von einer Speicheradresse durchgeführt werden, an der der Maschinensprachcode in dem Programmspeicher gespeichert werden soll.
  • Gemäß einem weiteren Ausführungsbeispiel des Verfahrens kann ein Adressentschlüsseln des abhängig von der Speicheradresse verschlüsselten Maschinensprachcodes mit einer Entschlüsselungsfunktion durchgeführt werden, die von der Speicheradresse abhängt, an der der Maschinensprachcode in dem Programmspeicher gespeichert wurde. Das Entschlüsseln 140 kann durchgeführt werden, indem der Maschinensprachcode Wort für Wort aus einem Programmspeicher ausgelesen und entschlüsselt wird und indem das entschlüsselte Wort analysiert wird, indem entschieden wird, ob das entschlüsselte Wort zu einer Anweisung des Maschinensprachcodes gehört, die weitere Wörter einschließt, und falls die Anweisung keine weiteren Wörter einschließt, indem die Anweisung auf der Verarbeitungseinheit ausgeführt wird.
  • Gemäß manchen Ausführungsbeispielen der Erfindung kann das Verfahren zum Verschlüsseln eines Quellencodes während der Erzeugung des Maschinensprachcodes durchgeführt werden. Das bedeutet, dass die Operationscodes bereits während der Erzeugung des Maschinensprachcodes durch eine Werkzeugkette verschlüsselt werden können.
  • Gemäß Ausführungsbeispielen der Erfindung kann der verschlüsselte Maschinensprachcode, der in dem Programmspeicher der Verarbeitungseinheit oder des Systems gespeichert ist, ausgehend von dem generischen CPU-Opcode(-Operationscode) und einem erwarteten internen Zustand der CPU gefolgert werden. Bei einem Ausführungsbeispiel der Erfindung kann zum Verschlüsseln des Maschinensprachcodes eine Exklusiv-ODER-Logikverknüpfung (XOR) zwischen dem generischen Operationscode und dem tatsächlichen Wert des Programmzählers durchgeführt werden. Ein jeweiliger Anweisungsdecodierer 65 der CPU muss dies berücksichtigen, um den Maschinensprachcode richtig zu interpretieren und einen richtigen generischen Operationscode auf der Verarbeitungseinheit auszuführen.
  • Gemäß Ausführungsbeispielen der Erfindung kann das Verfahren beispielsweise auch eine Sicherheitsmikrosteuerung, eine Verarbeitungseinheit oder eine Zentralverarbeitungseinheit vor einem erzwungenen Angriff auf die Adressleitungen eines Programmspeichers schützen. Ein erzwungener Angriff auf eine Adressleitung eines Programmspeichers kann verschlüsselte Operationscodes ändern, die danach nicht mehr korrekt entschlüsselt werden können. Folglich kann eine hohe Wahrscheinlichkeit bestehen, dass in der Zentralverarbeitungseinheit eine „illegale Opcode-Operationsausnahme” auftritt. Eine Voraussetzung für eine derartige „illegale Opcode-Operationsausnahme” besteht darin, dass der Anweisungssatz eine jeweilige Struktur für eine „illegale Opcode-Operationsausnahme” umfasst.
  • Gemäß Ausführungsbeispielen der Erfindung können effektivere Maßnahmen gegen ein Springen auf Grund erzwungener Adress-, Daten- oder Befehlsleitungen in einer Verarbeitungseinheit ergriffen werden. Gemäß Ausführungsbeispielen der Erfindung kann der jeweilige Maschinensprachcode Prüfbits umfassen, so dass die Integrität einer Anweisung oder eines Wortes einer Anweisung überprüft werden kann. Gemäß anderen Ausführungsbeispielen der Erfindung können die Verschlüsselungsfunktion und die jeweilige Entschlüsselungsfunktion eine höhere Komplexität aufweisen, wie hierin beschrieben ist. Bei manchen Ausführungsbeispielen der Erfindung kann die Verarbeitungseinheit zusätzliche Hardwarekomponenten, z. B. Register, programmierbare Register, Logikgatter oder Logikschaltungen zum Erzeugen einer komplexeren Verschlüsselungsfunktion und einer jeweiligen Entschlüsselungsfunktion umfassen. Gemäß einem Ausführungsbeispiel der Erfindung kann ein zusätzliches programmierbares Register verwendet werden, um eine Verschlüsselungsfunktion zu erzeugen. Das programmierbare Register kann mit einer bestimmten Software programmiert werden.
  • Gemäß weiteren Ausführungsbeispielen der Erfindung können zusätzliche Maßnahmen zum Erhöhen der Sicherheit für Sicherheitsanwendungen gegen beispielsweise eine äußerliche Störung, ein äußerliches Erzwingen eines bestimmten Zustandes der Sicherheitsanwendung oder ein erzwungenes Springen in dem Programm oder der Firmware der Sicherheitsanwendung vorgesehen sein. Um die Sicherheit der Funktion und des Programms von Mikrosteuerungen zu bewahren, können anwendereigene Anweisungen verwendet werden, oder der Programmspeicher und/oder die Bussysteme auf der Mikrosteuerung können verschlüsselt werden.
  • Gemäß einem weiteren Ausführungsbeispiel der Erfindung kann zum Definieren einer Verschlüsselungsfunktion, die durch das Compiler-System verwendet werden kann, statt eines internen Zustands eines Programmzählerregisters ein beliebiges anderes Zustandsregister in der Verarbeitungseinheit, z. B. ein separates Verbindungsregister, verwendet werden. In diesem Fall muss der Compiler beispielsweise gewährleisten, dass sich das jeweilige Zustandsregister zu Beginn der Ausführung des Compiler-verschlüsselten Maschinensprachcodes in einem vorbestimmten Zustand befinden muss.
  • Obwohl die vorliegende Erfindung anhand mehrerer Ausführungsbeispiele beschrieben wurde, gibt es Abänderungen, Permutationen und Äquivalente, die innerhalb des Schutzumfangs der vorliegenden Erfindung liegen. Auch sollte man beachten, dass es viele alternative Möglichkeiten zum Implementieren der Verschlüsselungsfunktion, der Entschlüsselungsfunktion und des Verfahrens und der Zusammensetzungen der vorliegenden Erfindung gibt. Deshalb ist beabsichtigt, dass die folgenden angehängten Patentansprüche dahin gehend interpretiert werden, dass sie alle derartigen Abänderungen, Permutationen und Äquivalente, die in der wahren Wesensart und dem wahren Schutzumfang der vorliegenden Erfindung enthalten sind, umfassen.

Claims (16)

  1. Verarbeitungseinheit (20) zum Ausführen eines Maschinensprachcodes (15), die folgende Merkmale aufweist: ein Register für einen Programmzähler (70); eine Ausführungsschaltungsanordnung (75); eine Abrufeinrichtung (60), die konfiguriert ist, ein Wort von einer Adresse eines mit der Verarbeitungseinheit (20) verbindbaren Programmspeichers (30) abzurufen, wobei die Adresse einem aktuellen Zustand des Programmzählers (70) entspricht und der Programmzähler (70) konfiguriert ist, auf ein Abrufen hin inkrementiert zu werden; eine Entschlüsselungseinheit (40), die konfiguriert ist, eine von dem Programmspeicher (30) abgerufene und empfangene verschlüsselte Anweisung des Maschinensprachcodes durch eine Entschlüsselungsfunktion, die von dem Wert des Programmzählers abhängt, zu entschlüsseln, wobei der entschlüsselte Maschinensprachcode Nutzdaten, die bei der Ausführung ein Verhalten der Verarbeitungseinheit beeinflussen, und Fehlererfassungsdaten umfassen, die ein Prüfen einer Integrität der Nutzdaten ermöglichen und bedeutungslos bezüglich des Verhaltens der Verarbeitungseinheit sind; eine Fehlererfassungseinheit (99), die konfiguriert ist, die Fehlererfassungsdaten des entschlüsselten Maschinensprachcodes mit den erwarteten Fehlererfassungsdaten zu vergleichen, um einen Fehler zu detektieren oder einen erzwungenen Angriff von einem feindlichen Angreifer auf die Verarbeitungseinheit zu entdecken.
  2. Verarbeitungseinheit (20) gemäß Anspruch 1, bei der die Abrufeinrichtung (60) dahin gehend konfiguriert ist, entsprechend dem aktuellen Zustand des Programmzählers (70) den Maschinensprachcode Wort für Wort von einer Adresse des Programmspeichers (30) abzurufen, wobei die Entschlüsselungseinheit (40) dahin gehend konfiguriert ist, den von dem Programmspeicher (30) abgerufenen Wort-Für-Wort-Maschinensprachcode zu entschlüsseln und das entschlüsselte Wort zu analysieren und zu entscheiden, ob das entschlüsselte Wort zu einer Anweisung des Maschinensprachcodes, die weitere Wörter einschließt, gehört, und falls die Anweisung keine weiteren Wörter einschließt, eine Ausführungsschaltungsanordnung (75) der Verarbeitungseinheit gemäß der Anweisung des Maschinensprachcodes zu steuern.
  3. Verarbeitungseinheit (20) gemäß einem der Ansprüche 1 bis 2, wobei die Entschlüsselungseinheit (40) eine Speicherentschlüsselungseinheit (40a) und eine Anweisungsentschlüsselungseinheit (40b) umfasst; wobei die Speicherentschlüsselungseinheit (40a) konfiguriert ist, zweifach verschlüsselte Anweisungen, die von einem Programmspeicher (30) empfangen werden, der mit der Verarbeitungseinheit (20) verbindbar ist, in Abhängigkeit von einer Speicheradresse, die auf einen Speicherplatz zeigt, an dem die zweifach verschlüsselten Anweisung gespeichert ist, zu entschlüsseln; wobei die Anweisungsentschlüsselungseinheit (40b) konfiguriert ist, die abhängig von der Speicheradresse verschlüsselten Anweisungen in Abhängigkeit von einem aktuellen Zustand des Programmzählers (70) zu entschlüsseln.
  4. Verarbeitungseinheit (20) gemäß Anspruch 3, bei der die Speicherentschlüsselungseinheit ferner dahin gehend konfiguriert ist, ein Wort der Anweisung zu entschlüsseln, und bei der eine Anweisung zumindest ein Wort umfasst.
  5. Verarbeitungseinheit (20) gemäß Anspruch 4, bei der der Programmspeicher (30) eine Mehrzahl von Speicherblöcken umfasst und bei der der Programmspeicher (30) dahin gehend konfiguriert ist, eine Mehrzahl von Anweisungen in einem Speicherblock zu speichern.
  6. Compiler-System (100), das einen Compiler (10) umfasst, der konfiguriert ist, einen Quellencode (5) zu einem Maschinensprachcode (15) zu kompilieren, so dass der Maschinensprachcode (15) auf einer Verarbeitungseinheit (20) ausführbar ist, wobei die Verarbeitungseinheit (20) ein Programmzählerregister (70) umfasst, das ansprechend auf eine Ausführung des Maschinensprachcodes (15) seinen Zustand ändert, wobei der Compiler (10) konfiguriert ist, den Maschinensprachcode (15) auf der Basis einer Verschlüsselungsfunktion (18), die von dem Zustand des Programmzählerregisters (70) abhängt, zu verschlüsseln; bei dem eine Anweisung des Maschinensprachcodes (15) Nutzdaten, die bei der Ausführung ein Verhalten der Verarbeitungseinheit beeinflussen, und Fehlererfassungsdaten umfasst, die ein Prüfen einer Integrität der Nutzdaten ermöglichen und bedeutungslos bezüglich des Verhaltens der Verarbeitungseinheit sind, sodass für die Verarbeitungseinheit (20) durch Vergleich der Fehlererfassungsdaten des entschlüsselten Maschinensprachcodes mit den erwarteten Fehlererfassungsdaten einen Fehler detektierbar ist oder einen erzwungenen Angriff von einem feindlichen Angreifer auf die Verarbeitungseinheit entdeckbar ist.
  7. Compiler-System (100) gemäß Anspruch 6, das ferner einen Speicher umfasst, der mit der Verarbeitungseinheit (20) gekoppelt ist und dahin gehend konfiguriert ist, den Compiler-verschlüsselten Maschinensprachcode zu speichern.
  8. Compiler-System (100) gemäß Anspruch 6 oder 7, bei dem die Verarbeitungseinheit (20) einen Programmspeicher (30), eine Speicherentschlüsselungseinheit (35) und eine Speicherverschlüsselungseinheit (40) umfasst, wobei der Compiler (10) dahin gehend konfiguriert ist, den Compiler-verschlüsselten Maschinensprachcode über die Speicherverschlüsselungseinheit (40) in den Programmspeicher (30) zu speichern, wobei die Speicherverschlüsselungseinheit (40) dahin gehend konfiguriert ist, den Compiler-verschlüsselten Maschinensprachcode je nach einer Speicheradresse, an der der Maschinensprachcode in dem Programmspeicher (30) gespeichert werden soll, ein zweites Mal zu verschlüsseln, und wobei die Speicherentschlüsselungseinheit (35) dahin gehend konfiguriert ist, den aus dem Programmspeicher (30) ausgelesenen, zweifach verschlüsselten Maschinensprachcode zu entschlüsseln, um den Compiler-verschlüsselten Maschinensprachcode zu erhalten.
  9. Compiler-System (100) gemäß einem der Ansprüche 6 bis 8, bei dem die Verarbeitungseinheit (20) einen Programmspeicher (30) und eine Speicherentschlüsselungseinheit (35) umfasst, die dahin gehend konfiguriert ist, aus dem Programmspeicher (30) ausgelesene Anweisungsdaten zu entschlüsseln, und wobei das Compiler-System (100) dahin gehend konfiguriert ist, den Compiler-verschlüsselten Maschinensprachcode auf eine weitere verschlüsselte Weise zu speichern, die, wenn sie durch die Speicherentschlüsselungseinheit (35) entschlüsselt wird, zu dem Compiler-verschlüsselten Maschinensprachcode in dem Programmspeicher (30) führt.
  10. Compiler-System (100) gemäß einem der Ansprüche 6 bis 9, bei dem die Verschlüsselungsfunktion (18) von einer logischen bitweisen XOR- oder NXOR-Kombination zwischen dem Zustand des Programmzählerregisters (70) und dem Maschinensprachcode (15) abhängt.
  11. Verfahren zum Verschlüsseln eines Quellencodes (5) zu einem verschlüsselten Maschinensprachcode (15), so dass ein entschlüsselter Maschinensprachcode des verschlüsselten Maschinensprachcodes auf einer Verarbeitungseinheit (20) ausführbar ist, wobei die Verarbeitungseinheit (20) ein Programmzählerregister (70), das ansprechend auf eine Ausführung des Maschinensprachcodes seinen Zustand ändert, einen Programmspeicher (30) und eine Entschlüsselungseinheit (40) umfasst, wobei das Verfahren folgende Schritte umfasst: Kompilieren (110) des Quellencodes (5) zu einem Maschinensprachcode; und Verschlüsseln (120) des Maschinensprachcodes auf der Basis einer Verschlüsselungsfunktion, die von dem Zustand des Programmzählerregisters (70) abhängt. Sichern (130) des Compiler-verschlüsselten Maschinensprachcodes in dem Programmspeicher (30); und Entschlüsseln (140) des aus dem Programmspeicher ausgelesenen Compiler-verschlüsselten Maschinensprachcodes mit einer Entschlüsselungsfunktion, die von dem Zustand des Programmzählerregisters (70) abhängt, so dass der entschlüsselte Maschinensprachcode auf der Verarbeitungseinheit (20) ausführbar ist; wobei bei dem eine Anweisung des Maschinensprachcodes (15) Nutzdaten, die bei der Ausführung ein Verhalten der Verarbeitungseinheit beeinflussen, und Fehlererfassungsdaten umfasst, die ein Prüfen einer Integrität der Nutzdaten ermöglichen und bedeutungslos bezüglich des Verhaltens der Verarbeitungseinheit sind, sodass für die Verarbeitungseinheit (20) durch Vergleich der Fehlererfassungsdaten des entschlüsselten Maschinensprachcodes mit den erwarteten Fehlererfassungsdaten einen Fehler detektierbar ist oder einen erzwungenen Angriff von einem feindlichen Angreifer auf die Verarbeitungseinheit entdeckbar ist.
  12. Verfahren gemäß Anspruch 11, wobei das Verfahren ferner ein Brennen des Compiler-verschlüsselten Maschinensprachcodes auf einen Nur-Lese-Speicher umfasst.
  13. Verfahren gemäß Anspruch 11 oder 12, das vor dem Sichern (130) des Compiler-verschlüsselten Maschinensprachcodes ein zweitmaliges Verschlüsseln des Compiler-verschlüsselten Maschinensprachcodes umfasst.
  14. Verfahren gemäß Anspruch 13, das ferner ein Adressentschlüsseln des abhängig von der Speicheradresse verschlüsselten Maschinensprachcodes mit einer Entschlüsselungsfunktion umfasst, die von der Speicheradresse abhängt, an der der Maschinensprachcode in dem Programmspeicher gespeichert wurde.
  15. Verfahren gemäß Anspruch 13 oder 14, bei dem das Entschlüsseln (140) durchgeführt wird, indem der Maschinensprachcode Wort für Wort aus dem Programmspeicher ausgelesen und entschlüsselt wird und indem das entschlüsselte Wort analysiert wird, indem entschieden wird, ob das entschlüsselte Wort zu einer Anweisung des Maschinensprachcodes gehört, die weitere Wörter einschließt, und falls die Anweisung keine weiteren Wörter einschließt, indem die Anweisung auf der Verarbeitungseinheit ausgeführt wird.
  16. Verfahren zum Kompilieren eines Quellencodes (5) zu einem verschlüsselten Maschinensprachcode (15), so dass der Maschinensprachcode auf einer Verarbeitungseinheit (20) ausführbar ist, wobei die Verarbeitungseinheit (20) ein Programmzählerregister (70) umfasst, das ansprechend auf eine Ausführung des Maschinensprachcodes seinen Zustand ändert, wobei das Verfahren folgende Schritte umfasst: Kompilieren (110) des Quellencodes (5) zu einem Maschinensprachcode; und Verschlüsseln (120) des Maschinensprachcodes auf der Basis einer Verschlüsselungsfunktion, die von dem Zustand des Programmzählerregister (70) abhängt; wobei eine Anweisung des Maschinensprachcodes (15) Nutzdaten, die bei der Ausführung ein Verhalten der Verarbeitungseinheit beeinflussen, und Fehlererfassungsdaten umfasst, die ein Prüfen einer Integrität der Nutzdaten ermöglichen und bedeutungslos bezüglich des Verhaltens der Verarbeitungseinheit sind, sodass für die Verarbeitungseinheit (20) durch Vergleich der Fehlererfassungsdaten des entschlüsselten Maschinensprachcodes mit den erwarteten Fehlererfassungsdaten einen Fehler detektierbar ist oder einen erzwungenen Angriff von einem feindlichen Angreifer auf die Verarbeitungseinheit entdeckbar ist.
DE102009041176.3A 2008-09-18 2009-09-11 Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode Active DE102009041176B9 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/233,207 US8402448B2 (en) 2008-09-18 2008-09-18 Compiler system and a method of compiling a source code into an encrypted machine language code
US12/233,207 2008-09-18

Publications (3)

Publication Number Publication Date
DE102009041176A1 DE102009041176A1 (de) 2010-04-08
DE102009041176B4 DE102009041176B4 (de) 2017-02-09
DE102009041176B9 true DE102009041176B9 (de) 2017-05-04

Family

ID=41795264

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009041176.3A Active DE102009041176B9 (de) 2008-09-18 2009-09-11 Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode

Country Status (2)

Country Link
US (1) US8402448B2 (de)
DE (1) DE102009041176B9 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914648B1 (en) * 2009-08-17 2014-12-16 Sandia Corporation Stateless and stateful implementations of faithful execution
US8464232B2 (en) * 2010-12-27 2013-06-11 Aleksandr F. Urakhchin Compiler compiler system with syntax-controlled runtime and binary application programming interfaces
US8832672B2 (en) 2011-01-28 2014-09-09 International Business Machines Corporation Ensuring register availability for dynamic binary optimization
JP5776927B2 (ja) * 2011-03-28 2015-09-09 ソニー株式会社 情報処理装置及び方法、並びにプログラム
US9043906B2 (en) * 2012-11-28 2015-05-26 William Christopher Hardy System and method for preventing operation of undetected malware loaded onto a computing device
DE102014101008A1 (de) * 2014-01-28 2015-07-30 Weber Maschinenbau Gmbh Breidenbach Bilden von Gesamtportionen
CN107026741A (zh) * 2017-03-31 2017-08-08 科世达(上海)管理有限公司 一种基于网络安全的加密刷写方法及装置
FR3094512A1 (fr) 2019-03-29 2020-10-02 Stmicroelectronics (Rousset) Sas Procédé d'authentification d'un processeur
FR3094513B1 (fr) 2019-03-29 2023-07-14 Proton World Int Nv Procédé d'authentification d'un processeur
CN111079098B (zh) * 2019-12-20 2023-07-14 无锡矽杰微电子有限公司 一种mcu程序加密解密方法
US11409846B2 (en) 2021-01-14 2022-08-09 Safelishare, Inc. User controlled trusted and isolated computing environments
FR3122746A1 (fr) * 2021-05-10 2022-11-11 Commissariat à l'Energie Atomique et aux Energies Alternatives Procédé d'exécution d'un code machine par un microprocesseur

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001054083A1 (de) * 2000-01-18 2001-07-26 Infineon Technologies Ag Mikroprozessoranordnung mit verschlüsselung
US20030084308A1 (en) * 2001-10-03 2003-05-01 Van Rijnswou Sander Matthijs Memory encryption
US6675298B1 (en) * 1999-08-18 2004-01-06 Sun Microsystems, Inc. Execution of instructions using op code lengths longer than standard op code lengths to encode data
WO2009040207A1 (de) * 2007-09-25 2009-04-02 Siemens Aktiengesellschaft Verfahren und system zum schutz gegen einen zugriff auf einen maschinencode eines gerätes

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2665089B2 (ja) * 1991-09-26 1997-10-22 三菱電機株式会社 分散環境下におけるコンパイル方式
US5386469A (en) * 1993-08-05 1995-01-31 Zilog, Inc. Firmware encryption for microprocessor/microcomputer
DE19612439C2 (de) * 1996-03-28 2001-02-01 Siemens Ag Halbleiterspeichervorrichtung
US6643775B1 (en) * 1997-12-05 2003-11-04 Jamama, Llc Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications
US7076651B2 (en) * 2000-05-01 2006-07-11 Safenet, Inc. System and method for highly secure data communications
US6678837B1 (en) * 2000-06-30 2004-01-13 Intel Corporation Processor control flow monitoring using a signature table for soft error detection
US20030131345A1 (en) * 2002-01-09 2003-07-10 Chris Wilkerson Employing value prediction with the compiler

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675298B1 (en) * 1999-08-18 2004-01-06 Sun Microsystems, Inc. Execution of instructions using op code lengths longer than standard op code lengths to encode data
WO2001054083A1 (de) * 2000-01-18 2001-07-26 Infineon Technologies Ag Mikroprozessoranordnung mit verschlüsselung
US20030084308A1 (en) * 2001-10-03 2003-05-01 Van Rijnswou Sander Matthijs Memory encryption
WO2009040207A1 (de) * 2007-09-25 2009-04-02 Siemens Aktiengesellschaft Verfahren und system zum schutz gegen einen zugriff auf einen maschinencode eines gerätes

Also Published As

Publication number Publication date
DE102009041176B4 (de) 2017-02-09
US8402448B2 (en) 2013-03-19
US20100070953A1 (en) 2010-03-18
DE102009041176A1 (de) 2010-04-08

Similar Documents

Publication Publication Date Title
DE102009041176B9 (de) Compiler-System und Verfahren zum Kompilieren eines Quellencodes zu einem verschlüsselten Maschinensprachcode
EP3274825B1 (de) Verfahren und ausführungsumgebung zum gesicherten ausführen von programmbefehlen
EP3259698B1 (de) Autonom bootendes system mit einem sicherheitsmodul
DE602004005025T2 (de) Instruktionen zur verarbeitung einer verschlusselten nachricht
DE102012205689A1 (de) Anweisungsverschlüsselungs-/-entschlüsselungsanordnung und -verfahren mit iterativer Verschlüsselungs-/Entschlüsselungsaktualisierung
DE112017004843T5 (de) Technologien für deterministischen Codeflussintegritätsschutz
DE60127310T2 (de) Vorrichtung zum schutz digitaler daten
DE102009013384A1 (de) System und Verfahren zur Bereitstellung einer sicheren Anwendungsfragmentierungsumgebung
WO2009040207A1 (de) Verfahren und system zum schutz gegen einen zugriff auf einen maschinencode eines gerätes
DE102014208855A1 (de) Verfahren zum Durchführen einer Kommunikation zwischen Steuergeräten
DE102009024179A1 (de) Schaltung mit einer Mehrzahl von Funktionsweisen
DE602004004079T2 (de) Befehl zur berechnung eines sicherheits-nachricht-authentifizierungskodes
EP1158384A1 (de) Sicherheits-Datenverarbeitungseinheit sowie dazugehöriges Verfahren
DE102014214792A1 (de) Vorrichtung und Verfahren zum Zugreifen auf einen verschlüsselten Speicherabschnitt
DE102015113468A1 (de) Datenverarbeitungsvorrichtung und verfahren zum sichern einer datenverarbeitungsvorrichtung gegen angriffe
EP2510475B1 (de) Hardware-einrichtung
EP1439446A1 (de) Verfahren zum Erweitern eines Programms um eine Kopierschutzfunktion
EP1636700A1 (de) Verfahren zum nachladen einer software in den bootsektor eines programmierbaren lesespeicher
DE102005046696B4 (de) Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt
DE102013108073B4 (de) Datenverarbeitungsanordnung und verfahren zur datenverarbeitung
EP3798873B1 (de) Verfahren zum schützen einer computer-implementierten anwendung vor manipulation
EP1643405A1 (de) Manipulationsgeschütztes Mikroprozessorsystem und Betriebsverfahren dafür
DE69833947T2 (de) Speicherzellenanordnung zur erzeugung einer geheimen nicht dauerhaften speicherung
EP3251281B1 (de) Intrinsische authentifizierung von programcode
DE102014113441A1 (de) Schutz vor Software-Komponenten mittels Verschlüsselung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009450000

Ipc: G06F0011080000