-
Die
vorliegende Erfindung befasst sich mit einer Compiliervorrichtung
und einem Verfahren zum Compilieren, wie sie insbesondere für Sicherheits-relevante
Bereiche eingesetzt werden können.
-
Durch
Fehler in der Hardware oder mittels verschiedenster Angriffsverfahren
ist es möglich,
die Funktion eines Prozessors zu stören. Solche Angriffsverfahren
können
beispielsweise unter Verwendung von Licht oder durch Probing realisiert
werden. In Software oder in Hardware sind eine Menge an Schutzmechanismen
vorgesehen, die verhindern sollen, dass Angreifer oder Fehler einen
falschen Ablauf von Programmen entstehen lassen.
-
Es
ist die Aufgabe der vorliegenden Erfindung, eine Compiliervorrichtung,
ein Verfahren zum Compilieren sowie einen Prozessor zu schaffen,
die einen verbesserten Schutz eines Programmablaufs ermöglichen.
-
Diese
Aufgabe wird durch eine Compiliervorrichtung gemäß Anspruch 1, ein Compilierverfahren gemäß Anspruch
14 sowie einen Prozessor gemäß Anspruch
16 gelöst.
-
Die
vorliegende Erfindung schafft eine Compiliervorrichtung zum Erzeugen
einer zweiten Programmsequenz aus einer ersten Programmsequenz, wobei
die erste Programmsequenz einen ersten Teilbereich mit einer ersten
Sicherheitsstufe und einen von dem ersten Teilbereich, durch zumindest
einen Indikator, unterscheidbaren zweiten Teilbereich mit einer
zweiten Sicherheitsstufe aufweist, mit folgenden Merkmalen:
einer
Erkennungseinrichtung (102) zum Erkennen des ersten Teilbereichs
der ersten Programmsequenz und des zweiten Teilbereichs anhand des
zumindest einen Indikators;
einer Auswahleinrichtung zum Auswählen von
Befehlen aus einem Befehlssatz der zweiten Programmsequenz, um eine
Funktionalität
der ersten Programmsequenz auf die zweite Programmsequenz abzubilden,
wobei der Befehlssatz Befehle einer ersten Sicherheitskategorie
und Befehle einer zweiten Sicherheitskategorie aufweist, und wobei
die Auswahleinrichtung ausgebildet ist, um zur Abbildung einer Funktionalität des ersten
Teilbereichs nur Befehle der ersten Sicherheitskategorie und zur
Abbildung einer Funktionalität
des zweiten Teilbereichs Befehle der zweiten Sicherheitskategorie
oder der ersten und der zweiten Sicherheitskategorie auszuwählen; und
eine
Erzeugereinrichtung zum Erzeugen der zweiten Programmsequenz aus
dem von der Auswahleinrichtung ausgewählten Befehlen.
-
Die
vorliegende Erfindung schafft ferner ein Verfahren zum Erzeugen
einer zweiten Programmsequenz aus einer ersten Programmsequenz,
das folgende Schritte umfasst:
Bereitstellen der ersten Programmsequenz,
wobei die erste Programmsequenz einen ersten Teilbereich mit einer
ersten Sicherheitsstufe und einen von dem ersten Teilbereich, durch
zumindest einen Indikator, unterscheidbaren zweiten Teilbereich
mit einer zweiten Sicherheitsstufe aufweist;
Erkennen des ersten
Teilbereichs der ersten Programmsequenz und des zweiten Teilbereichs
anhand des zumindest einen Indikators;
Auswählen von Befehlen aus einem
Befehlssatz der zweiten Programmsequenz, um eine Funktionalität der ersten
Programmsequenz auf die zweite Programmsequenz abzubilden, wobei
der Befehlssatz Befehle einer ersten Sicherheitskategorie und Befehle
einer zweiten Sicherheitskategorie aufweist, und wobei zur Abbildung
einer Funktionalität
des ersten Teilbereichs nur Befehle der ersten Sicherheitskategorie
und zur Abbildung einer Funktionalität des zweiten Teilbereichs
Befehle der zweiten Sicherheitskategorie oder der ersten und der
zweiten Sicherheitskategorie ausgewählt werden; und
Erzeugen
der zweiten Programmsequenz aus dem von der Auswahleinrichtung ausgewählten Befehlen.
-
Der
vorliegenden Erfindung liegt die Erkenntnis zugrunde, dass es in
einem Programm Bereiche gibt, die Sicherheitskritischer sind als
andere Bereiche. Die sicherheitstechnische Einstufung kann aufgrund
Sicherheits-technischer Gesichtspunkte und aufgrund von Überlegungen über eine
effiziente Durchführung
von Angriffen auf einen Programmablauf erfolgen. Beispielsweise
kann gemäß der vorliegenden
Erfindung die erste Sicherheitsstufe einem Bereich der ersten Programmsequenz
zugeordnet sein, der aufgrund einer kritischen Funktionalität eine hohe
Sicherheitsanforderung erforderlich macht und die zweite Sicherheitsstufe
einem Teilbereich zugeordnet sein, der aufgrund einer unkritischen
Funktionalität
eine weniger hohe Sicherheitsanforderung erforderlich macht.
-
Bei
der zweiten Programmsequenz kann es sich beispielsweise um eine
Sequenz von Assembler-Befehlen handeln. Aus Sicherheitstechnischen Gesichtspunkten
sind auch die Befehle des zweiten Programmcodes, also beispielsweise
die Assembler-Befehle,
selbst nicht gleich Sicherheits-kritisch. Obwohl prinzipiell jeder
Befehl beliebig störbar
ist, beispielsweise durch Spiking oder Strahlung, wird sich ein
Angreifer solange vielmehr mit deterministischen Angriffsszenarien
auseinandersetzen, wie diese effizient durchführbar sind, da dadurch eine
einfache Reproduzierbarkeit gegeben ist. Dies ist vor allem bei
Attacken, die ein bestimmtes Ergebnis erzielen möchten, ein wesentlich sinnvollerer
Weg. Typischerweise sind solche deterministische Angriffe durch
Licht, beispielsweise lokales Licht, gut gesteuert auslösbar. In
erster Linie stellen reguläre
Strukturen, beispielsweise ein Register-File RAM, Ziele eines lokalen
Angriffs dar. Werden zwei unterschiedliche Sprungbefehle, beispielsweise
ein relativer Sprung, wie PC = PC + 20 und ein indirekter Sprung, wie
PC = REGISTER betrachtet, dann ergibt sich folgende Situation. Bei
einem relativen Sprung, bei dem das Sprungziel durch den OP-Code
bestimmt ist, ist ein erfolgreicher deterministischer Angriff, beispielsweise
durch lokales Licht, wesentlich weniger kritisch als bei einem indirekter
Sprung. Dies resultiert daraus, dass die Manipulation eines Registers
mittels Licht viel einfacher ist, als das gezielte Abändern eines
OP-Codes einer Instruktion. Im Sinne der vorliegenden Erfindung
wird also beispielsweise ein relativer Sprungbefehl als unkritischer
Befehl der ersten Sicherheitskategorie und ein indirekter Sprung
als kritischer Befehl der zweiten Sicherheitskategorie eingeordnet.
-
Der
Erfindung liegt somit die Erkenntnis zugrunde, dass es vorteilhaft
ist, sowohl eine Programmsequenz als auch ein Instruktions-Set nach Sicherheits-technischen
Gesichtspunkten zu clustern. Eine solche Clusterung kann beispielsweise durchgeführt werden,
indem zum einen die Programmsequenzen in kritischen Code und unkritischen
Code eingeteilt und zum anderen das Instruktions-Set in kritische
Befehle und unkritische Befehle eingeteilt wird:
Programmsequenz:
kritischer Code – unkritischer Code
Instruktions-Set:
kritischer Befehl – unkritischer
Befehl
-
Nach
dem erfindungsgemäßen Ansatz
wird die Verwendung von kritischen Befehlen auf jene Code-Bereiche
beschränkt,
die als unkritisch erachtet werden. Somit wird beispielsweise Tool-unterstützt verhindert,
dass kritische Befehle in kritischen Code-Bereichen verwendet werden,
wodurch sich der all gemeine Schutz gegen Angreifer für diesen
Bereich erhöht.
Es wird also von dem bisherigen Ansatz abgewichen, bei dem es keine
Sicherheits-technische Unterscheidung der Instruktionen eines Mikro-Controllers
gab.
-
Das
erfindungsgemäße Verfahren
ermöglicht
eine selektive, vom Kunden steuerbare Abstufung von Teilen des Programm-Codes
und der Daten. Die erfindungsgemäße Maßnahme wird
keinen absoluten Schutz gegen Angriffe auf Programm-Codes bzw. einzelne
Befehle darstellen. Durch die Verwendung unkritischer Befehle wird
jedoch die Hürde
für einen
Angriff auf eine kritische Routine erhöht. Durch die erfindungsgemäße Einschränkung der
Funktionalität
gewinnt der Kunde an Sicherheit gegen lokale Angriffe.
-
Vorteilhafterweise
kann das erfindungsgemäße Verfahren
mit anderen Maßnahmen,
beispielsweise EDC kombiniert werden, um einen zusätzlichen
Schutz vor globalen und deterministischen Angriffen zu bieten. Solche
Angriffe können
beispielsweise durch Spikes hervorgerufen werden.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 eine
Compiliervorrichtung gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
2 ein
Ablaufdiagramm eines Verfahrens zum Compilieren gemäß einem
Ausführungsbeispiel der
vorliegenden Erfindung;
-
3a,
b Mengendarstellungen von Befehlssätzen gemäß Ausführungsbeispielen der vorliegenden
Erfindung; und
-
4 Blockschaltbild
eines Prozessors gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung.
-
1 zeigt
eine Compiliervorrichtung 100 gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung. Die Compiliervorrichtung 100 weist
eine Erkennungseinrichtung 102, eine Auswahleinrichtung 104 und
eine Erzeugungseinrichtung 106 auf. Die Compiliervorrichtung 100 ist
ausgebildet, um eine erste Programmsequenz 112 zu empfangen
und eine zweite Programmsequenz 114 auszugeben.
-
Bei
der ersten Programmsequenz 112 kann es sich um ein Hochsprachenprogramm,
wie beispielsweise ein C-Programm handeln. Die erste Programmsequenz 112 beinhaltet
die Beschreibung einer bestimmten Funktionalität. Bei der zweiten Programmsequenz 114 kann
es sich um ein Maschinenprogramm handeln, das von einem Prozessor
ausgeführt
werden kann. Beispielsweise kann die zweite Programmsequenz 114 ein
Assembler-Programm darstellen. Die Compiliervorrichtung 100 ist
ausgebildet, um aus der ersten Programmsequenz 112 die zweite
Programmsequenz 114 zu erzeugen. Dabei wird die erste Programmsequenz 112 so
auf die zweite Programmsequenz 114 abgebildet, dass die
zweite Programmsequenz 114 die gleiche Funktionalität enthält, die
in der ersten Programmsequenz 112 beschrieben ist.
-
Gemäß dem erfindungsgemäßen Ansatz kann
die erste Programmsequenz 112 in Teilbereiche unterteilt
werden, denen unterschiedliche Sicherheitsanforderungen zugeordnet
sind. Beispielsweise kann es sich bei einem ersten Teilbereich mit
einer ersten Sicherheitsstufe um einen Verschlüsselungs-Algorithmus bzw. einen Entschlüsselungs-Algorithmus
handeln und bei einem zweiten Teilbereich mit einer zweiten Sicherheitsstufe
um einen Teilbereich handeln, der eine Datenempfangsroutine, beispielsweise
von einem UART definiert. In diesem Fall ist die Ausführung des
Ver-/Entschlüsselungs-Algorithmus Sicherheits-kritischer
als die Ausführung
der Datenempfangs-Routine. Demgemäß weist der erste Teilbereich
eine kritische Funktionalität
mit einer hohen Sicherheitsanforderung und der zweite Teilbereich
eine unkritische Funktiona lität
mit einer niedrigen Sicherheitsanforderung auf. Zur Kennzeichnung der
Teilbereiche bzw. der den Teilbereichen zugeordneten Sicherheitsstufen
kann die erste Programmsequenz 112 Indikatoren aufweisen.
Beispielsweise kann ein erster Indikator der ersten Sicherheitsstufe und
ein zweiter Indikator der zweiten Sicherheitsstufe zugeordnet sein.
Bei dem Indikator kann es sich um eine Markierung, beispielsweise
in Form eines Wortes, eines Befehls oder einzelne Bits handeln,
die beispielsweise am Beginn eines Teilbereichs angeordnet ist und
der von der Compiliervorrichtung 100 ausgewertet wird.
Alternativ kann auch jeder einzelne Befehl eines Teilbereichs der
ersten Programmsequenz durch einen entsprechenden Indikator markiert
sein oder es wird jeweils nur ein besonderer Teilbereich, beispielsweise
der erste Teilbereich markiert und ein anderer Teilbereich nicht.
Die erste Programmsequenz 112 kann eine Vielzahl von Teilbereichen
aufweisen, bei denen es sich um erste Teilbereiche mit einer ersten
Sicherheitsstufe, zweite Teilbereiche mit einer zweiten Sicherheitsstufe
oder auch weitere Teilbereiche mit weiteren, definierbaren Sicherheitsstufen
handeln kann.
-
Gemäß diesem
Ausführungsbeispiel
wird die erste Programmsequenz 112 sowohl an die Erkennungseinrichtung 102 als
auch an die Auswahleinrichtung 104 bereitgestellt. Die
Erkennungseinrichtung 102 ist ausgebildet, um die Sicherheitsstufen der
jeweiligen Teilbereiche zu erkennen. Dies kann anhand der Indikatoren
erfolgen. Gemäß diesem Ausführungsbeispiel
stellt die Erkennungseinrichtung 102 ein Auswahlsignal
an die Auswahleinrichtung 104 bereit, das der Auswahleinrichtung
anzeigt, ob ein empfangener Teilbereich in der ersten Programmsequenz 112 ein
erster Teilbereich mit der ersten Sicherheitsstufe oder ein zweiter
Teilbereich mit der zweiten Sicherheitsstufe ist.
-
Die
Auswahleinrichtung 104 ist ausgebildet, um Befehle aus
einem Befehlssatz auszuwählen. Der
Befehlssatz ist dabei ein Befehlssatz der, der zweiten Programmsequenz 114 zugrunde liegt.
Handelt es sich bei der zweiten Programmsequenz 114 um
einen Maschinencode, der auf einem Prozessor ablaufen kann, so handelt
es sich bei dem Befehlssatz um den Befehlssatz dieses Prozessors.
Die ausgewählten
Befehle bilden die Funktionalität
der ersten Programmsequenz 112 auf die zweite Programmsequenz 114 ab.
-
Gemäß dem erfindungsgemäßen Ansatz sind
die Befehle des Befehlssatzes in unterschiedliche Sicherheitskategorien
eingeteilt. Gemäß diesem Ausführungsbeispiel
weist der Befehlssatz Befehle einer ersten Sicherheitskategorie
und Befehle einer zweiten Sicherheitskategorie auf. Bei den Befehlen der
ersten Sicherheitskategorie kann es sich um sichere Befehle handeln,
die beispielsweise für
deterministische Angriffe unanfälliger
sind als die Befehle der zweiten Sicherheitskategorie. Abhängig davon, ob
es sich bei dem Teilbereich der ersten Programmsequenz 112 um
einen ersten Teilbereich mit der ersten Sicherheitsstufe oder um
einen zweiten Teilbereich mit der zweiten Sicherheitsstufe handelt,
wählt die
Auswahleinrichtung 104 entweder Befehle der ersten Sicherheitskategorie
oder Befehle der zweiten Sicherheitskategorie aus. Zur Abbildung
einer Funktionalität
des ersten Teilbereichs mit der ersten Sicherheitsstufe werden von
der Auswahleinrichtung 104 gemäß dem erfindungsgemäßen Ansatz
ausschließlich
Befehle der ersten Sicherheitskategorie ausgewählt. Zur Abbildung einer Funktionalität des zweiten
Teilbereichs mit der zweiten Sicherheitsstufe können entweder nur Befehle der
zweiten Sicherheitskategorie oder aber Befehle der ersten und der zweiten
Sicherheitskategorie ausgewählt
werden.
-
Die
zur Abbildung der ersten Programmsequenz 112 ausgewählten Befehle
werden von der Auswahleinrichtung 104 an die Erzeugungseinrichtung 106 bereitgestellt.
Die Erzeugungseinrichtung 106 ist ausgebildet, um aus den
ausgewählten
Befehlen die zweite Programmsequenz 114 zu erzeugen. Beispielsweise
kann die Erzeugungseinrichtung 106 ausgebildet sein, um
die empfangenen ausgewählten
Befehle in der empfangenen Reihen folge als zweite Programmsequenz 114 auszugeben.
Alternativ können
die ausgewählten
Befehle von der Erzeugungseinrichtung 106 noch in ein für die zweite
Programmsequenz 114 erforderliches Format gebracht werden.
-
Die
in 1 gezeigte Compiliervorrichtung basiert auf dem
erfindungsgemäßen Ansatz
einer Einteilung der Befehle, beispielsweise der Assembler-Instruktionen
eines Mikro-Controllers,
in unterschiedliche Risiko- bzw. Sicherheitsklassen. Die Compiliervorrichtung 100 stellt
sicher, dass bei besonders schützenswerten
Code-Bereichen nur jene Instruktionen zugelassen werden, die dem
geforderten Sicherheitslevel entsprechen. Bei den Code-Bereichen
kann es sich beispielsweise um Funktionsblöcke oder Funktionen handeln.
Die entsprechenden Sicherheitslevel können von einem Programmierer
der ersten Programmsequenz 112 festgelegt werden oder alternativ
von Anwendern der Software. Dies ist vorteilhaft, da sich die Sicherheitslevel
je nach Anwendungsgebiet der Programmsequenzen unterscheiden können.
-
Ferner
ermöglicht
die Benutzung der Sicherheitslevel eine implizite, für den Kunden
transparente Veränderung
des Verhaltens eines Bausteins mittels Tool-Support zu erreichen,
um das Sicherheitsniveau zu erhöhen.
Dadurch ist ein impliziter Support von Hardware-Features möglich. Beinhaltet
das Hardware-System, auf dem die zweite Programmsequenz 114 ausgeführt wird,
beispielsweise einen Cache, der nur unzureichend gegen lokale Angriffe
schützbar
ist, aber einen Write-Through-Mechanismus
unterstützt, kann
die Verwendung von Schlüsselwörtern oder
Indikatoren dazu genutzt werden, für dieses Modul implizit ein
sicheres Verhalten auszulösen.
Im Falle eines Caches könnte
das darin bestehen, dass keine kritischen Daten in dem Cache eingelagert
werden, sondern diese Daten direkt in die CPU gelangen und dort
verarbeitet werden. Diese implizite Sicherung mittels Schlüsselwort
würde z.B.
in einer speziellen Steuerung des Cache mittels SFR-Befehlen (SFR; SFR
= SPECIAL FUNCTION REGISTER) enden. Dies wäre je doch für einen Anwender transparent, der
dadurch Plattformunabhängiger
ist. Damit einhergehend ist lediglich ein Verlust an Performance
bzw. eine Steigerung des Gesamtenergieverbrauchs der Applikation
verbunden, wenn häufig
auf solche, sich nicht im Cache befindlichen Daten, zugegriffen
wird.
-
In
der Programmiersprache C könnte
der zu schützende
Code-Bereich durch
ein spezielles Schlüsselwort
gekennzeichnet werden.
-
Zum
Beispiel Void _secure ENCRYPT (char *data).
-
Das
Schlüsselwort
_secure stellt sicher, dass beim Kompilieren dieser Funktion nur
Assembler-Instruktionen verwendet werden, die als sicher erachtet werden.
Auch denkbar wäre,
dass die Assembler-Instruktionen in mehrere Sicherheitsklassen eingeteilt werden.
Dies entspricht einer feineren Clusterung sowohl der Programmsequenz
als auch des Instruktions-Sets.
Dann könnte
beispielsweise ein Sicherheitslevel für eine bestimmte Funktion gefordert
werden.
-
Zum
Beispiel Void _secure-level(3) ENCRYPT (char *data).
-
Um
eine Unterstützung
spezieller Hardware-Funktionen zu ermöglichen, kann beispielsweise
die in 1 gezeigte Compilier-Vorrichtung eine zusätzliche
Einfügevorrichtung
(nicht gezeigt in den Figuren) aufweisen, die ausgebildet ist, um
beim Erkennen des ersten Indikators einen Zusatzbefehl in die zweite
Programmsequenz einzufügen.
Der Zusatzbefehl kann eine Aktivierung der besonderen Art der Funktion
ermöglichen.
Dabei kann es sich beispielsweise um die Aktivierung oder Deaktivierung eines
Zwischenspeichers wie ein Cache handeln. Allgemein ausgedrückt kann
der Zusatzbefehl in einer Ausführeinrichtung,
die zum Ausführen
der zweiten Programmsequenz geeignet ist einen sicheren Modus aktivieren,
der gewährleistet,
dass eine Ausführung
eines Teilbereichs der zweiten Pro grammsequenz, der dem Teilbereich
der ersten Programmsequenz entspricht, vor Angriffen weitmöglichst
geschützt
ist.
-
2 zeigt
ein Flussdiagramm, das einzelne Verfahrensschritte eines Verfahrens
zum Compilieren darstellt. In einem ersten Schritt 202 wird
die erste Programmsequenz bereitgestellt. Bei der ersten Programmsequenz
kann es sich um die in Fig. gezeigte Programmsequenz 112 handeln,
die einen ersten Teilbereich, dem eine hohe Sicherheitsstufe zugewiesen
ist und einen zweiten Teilbereich, dem eine niedrigere Sicherheitsstufe
zugewiesen ist, aufweist.
-
In
einem zweiten Verfahrensschritt 204 wird ein Erkennen der
Teilbereiche der ersten Programmsequenz durchgeführt. Wird ein erster Teilbereich
erkannt, so erfolgt in einem dritten Schritt 206 ein Auswählen von
Befehlen der ersten Sicherheitskategorie, um eine Funktionalität des ersten
Teilbereichs darzustellen. Handelt es sich jedoch um einen zweiten
Teilbereich, so erfolgt in einem parallelen dritten Schritt 208 ein
Auswählen
von Befehlen der zweiten Sicherheitskategorie oder der ersten und
zweiten Sicherheitskategorie, um die Funktionalität des zweiten Teilbereichs
zu realisieren.
-
In
einem vierten Schritt 210 erfolgt ein Erzeugen der zweiten
Programmsequenz aus den Befehlen, die in den Schritten 206, 208 ausgewählt wurden. Das
in 2 gezeigte Verfahren kann beispielsweise von der
in 1 gezeigten Compiliervorrichtung 100 durchgeführt werden.
-
Die 3a und 3b zeigen
Ausführungsbeispiele
von Befehlssätzen
gemäß der vorliegenden Erfindung.
Gemäß dem in 3a gezeigten
Ausführungsbeispiel
weist ein Befehlssatz 300a eine erste Teilmenge mit Befehlen
der ersten Sicherheitskategorie 302a und eine zweite Teilmenge
mit Befehlen der zweiten Sicherheitskategorie 304a auf.
Beide Teilmengen überschneiden
sich nicht. Nach Möglichkeit
kann jeder zu realisierenden Funktionalität entweder ein Befehl der ersten
Si cherheitskategorie oder ein Befehl der zweiten Sicherheitskategorie
zugeordnet werden. Kann einer Funktionalität kein Befehl der ersten Sicherheitskategorie
zugeordnet werden, so kann diese Funktionalität von der erfindungsgemäßen Compiliervorrichtung
entweder nicht realisiert werden oder es wird auf einen Befehl der
zweiten Sicherheitskategorie zurückgegriffen.
Dies hätte jedoch
den Nachteil, dass die Sicherheit des auszuführenden Programms gesenkt wird,
da für
einen kritischen Code-Bereich ein kritischer Befehl der zweiten
Sicherheitskategorie eingesetzt werden muss. Zur Realisierung unkritischer
Code-Bereiche können sowohl
Befehle der ersten Sicherheitskategorie als auch Befehle der zweiten
Sicherheitskategorie verwendet werden. Vorteilhafterweise wird zur
Realisierung unkritischer Code-Bereiche derjenige Befehl ausgewählt, der
die einfachste Realisierung, den schnellsten Programmablauf oder
den geringsten Energieverbrauch gewährleistet.
-
Alternativ
kann der gezeigte Befehlssatz auch in weitere Teilmengen unterteilt
sein. Dies ermöglicht
eine feinere Abstufung der Sicherheitskategorien. In einem solchen
Fall kann die erste Programmsequenz weitere Teilbereiche mit, durch
weitere Indikatoren gekennzeichneten weiteren Sicherheitsstufen
aufweisen. Ferner kann die in 1 gezeigte
Erkennungseinrichtung zum Erkennen der weiteren Teilbereiche anhand
der weiteren Indikatoren ausgebildet sein und die Auswahleinrichtung ausgebildet
sein, um zur Abbildung einer Funktionalität der weiteren Teilbereiche
Befehle der weiteren Sicherheitskategorien auszuwählen.
-
Gemäß dem in 3b gezeigten
Ausführungsbeispiel
weist ein Befehlssatz 300b Teilmengen von Befehlen der
ersten Sicherheitskategorie 302b sowie Befehle der zweiten
Sicherheitskategorie 304b auf, die sich in einem Überschneidungsbereich 306 überschneiden.
Befehle für
die es keinen Alternativbefehl in der jeweils anderen Sicherheitskategorie gibt,
sind in der Überschneidungszone 306 angeordnet.
Greift die erfindungsge mäße Compiliervorrichtung
auf solche Befehle in der Überschneidungsmenge 306 zurück, so ist
dies nachteilhaft, da es sich bei solchen Befehlen um kritische
Befehle handeln kann, die eigentlich nicht zur Realisierung von
kritischen Code-Bereichen
verwendet werden sollten.
-
Abhängig von
den Gegebenheiten kann das erfindungsgemäße Verfahren zum Erzeugen einer zweiten
Programmsequenz aus einer ersten Programmsequenz in Hardware oder
in Software implementiert werden. Die Implementierung kann auf einem
digitalen Speichermedium, insbesondere einer Diskette oder CD mit
elektronisch auslesbaren Steuersignalen erfolgen, die so mit einem
programmierbaren Computersystem zusammenwirken können, dass das entsprechende
Verfahren ausgeführt
wird. Allgemein besteht die Erfindung somit auch in einem Computerprogrammprodukt
mit einem auf einem maschinenlesbaren Träger gespeicherten Programmcode
zur Durchführung
des erfindungsgemäßen Verfahrens,
wenn das Computerprogrammprodukt auf einem Rechner abläuft. Mit
anderen Worten ausgedrückt,
kann die Erfindung somit als ein Computerprogramm mit einem Programmcode
zur Durchführung
des Verfahrens realisiert werden, wenn das Computerprogramm auf
einem Computer abläuft.
-
Gemäß einem
Ausführungsbeispiel
kann die in 1 gezeigte Compiliereinrichtung 100 direkt
in einem Prozessor implementiert sein. 4 zeigt
einen solchen Prozessor oder Mikro-Controller mit einer Empfangseinrichtung 402 in
der Compiliereinrichtung 100 sowie eine Recheneinrichtung 404.
Die Empfangseinrichtung 402 ist ausgebildet, um die erste
Programmsequenz 112 zu empfangen und an die Compiliereinrichtung 100 bereitzustellen.
Die Compiliereinrichtung 100 ist ausgebildet, um die zweite
Programmsequenz 114 aus der ersten Programmsequenz 112 zu
erzeugen und an die Recheneinrichtung 404 bereitzustellen.
Die Recheneinrichtung 404 ist ausgebildet, um die Befehle
der zweiten Programmsequenz 114 auszuführen. Gemäß diesem Ausführungsbeispiel
handelt es sich bei dem Befehlssatz, der von der Auswahleinrichtung
der Compilierein richtung 100 verwendet wird, um einen Maschinenbefehlsatz,
der der Recheneinrichtung 404 zugrunde liegt.
-
- 100
- Compiliereinrichtung
- 102
- Erkennungseinrichtung
- 104
- Auswahleinrichtung
- 106
- Erzeugungseinrichtung
- 112
- erste
Programmsequenz
- 114
- zweite
Programmsequenz
- 202
- Bereitstellen
der ersten Programmsequenz
- 204
- Erkennen
der Teilbereiche
- 206
- Auswählen von
Befehlen
- 208
- Auswählen von
Befehlen
- 210
- Erzeugen
der zweiten Programmsequenz
- 300a
- Befehlssatz
- 300b
- Befehlssatz
- 302a
- Befehle
der ersten Sicherheitskategorie
- 302b
- Befehle
der ersten Sicherheitskategorie
- 304a
- Befehle
der zweiten Sicherheitskategorie
- 304b
- Befehle
der zweiten Sicherheitskategorie
- 400
- Prozessor
- 402
- Empfangseinrichtung
- 404
- Recheneinrichtung