-
Die
vorliegende Erfindung befaßt
sich mit einem Controller mit einer Decodiereinrichtung sowie mit
einem Verfahren zum Decodieren, wie es bei Controllern, beispielsweise
Mikroprozessoren, eingesetzt wird.
-
Mikroprozessoren
oder allgemein Controller werden über Befehle angesteuert, die
in einem Befehlssatz oder Instruktionsset zusammengefaßt sind. Ein
Programm, das von einem Controller ausgeführt wird, besteht aus solchen
Befehlen. Der Controller ist ausgebildet, um Befehle zu verarbeiten
und die durch einen jeweiligen Befehl spezifizierte Funktion auszuführen. Dazu
weist der Controller eine Decodiereinrichtung auf, die die auszuführenden
Befehle in Steuersignale umwandelt. Die Steuersignale veranlassen eine
Recheneinheit des Controllers, die von dem auszuführenden
Befehl definierte Funktion auszuüben.
Bekannte Mikroprozessoren verwenden heute in aller Regel ein starr
vorgegebenes Instruktionsset, mit dem eine bestimmte Funktionalität vorgegeben wird.
Dieses Instruktionsset ist nur ein Ausschnitt aller möglichen
Operationen, welche auf einer Hardware, also einem Controller, theoretisch
ausführbar wäre. Wird
nun von einem Programmierer ein bestimmter Algorithmus implementiert,
kann er nur auf dieses Set an Instruktionen zurückgreifen.
-
Diese
Reglementierung hat insbesondere für Programmierer, die sehr spezielle
Algorithmen programmieren, erhebliche Nachteile. Als Beispiel dafür sei hier
die im folgenden erläuterte
und als Pseudo-Maschinecode dargestellte XTIME-Operation in einer
AES-Softwareimplementierung, einer Software, die den symmetrischen
kryptografischen Algorithmus AES ausführt, aufgezeigt.
-
-
and |
D8,
r1, D14 |
sh |
D8,
-7 |
mul.u |
r2,
D8, 0x1b |
and |
D8,
r1, D15 |
sh |
D8,
1 |
xor |
r2,
D8 |
.endm |
|
-
In
das XTIME genannte Makro werden zwei Variablen r1, r2 übergeben.
Das Makro greift auf die mit D8, D14, D15 bezeichneten Register
einer 88er CPU zu. In einer ersten mit „and" bezeichneten UND-Verknüpfung wird
der Wert r1 mit dem Registerwert D14 UND-verknüpft und das Ergebnis in das
Register D8 geschrieben. Anschließend wird eine mit „sh" bezeichnete Schiebeoperation
ausgeführt,
die den Wert des Registers D8 um sieben Stellen nach rechts verschiebt.
In einer folgenden mit „mul.u" bezeichneten Multiplikationsoperation
wird der Wert des Registers D8 mit einem, an einer mit 0x1b bezeichneten
Speicherstelle stehenden Wert multipliziert und das Ergebnis in
die Variable r2 geschrieben. Anschließend wird die mit „and" bezeichnete UND-Operation
ausgeführt,
die eine UND-Verknüpfung des
Wertes r1 mit dem Wert des Registers D15 durchführt und das Ergebnis in das
Register D8 schreibt. Anschließend
wird die Schiebeoperation „sh" durchgeführt, die
den Wert des Registers D8 um eins nach links verschiebt. Als letzte
Operation in dem Makro wird eine mit „xor" bezeichnete XOR-Operation ausgeführt, die
eine XOR-Verknüpfung
zwischen dem Wert r2 und dem Registerwert D8 ausführt und
das Ergebnis in die Variable r2 schreibt. Das Makro XTIME wird abgeschlossen
durch eine Rücksprungfunktion
.endm.
-
Diese
Sequenz beinhaltet eine Folge aus einer UND-Operation „and" und einer darauffolgenden Schiebe-Operation „sh". Diese Folge wird
im Makro zweimal ausgeführt.
Solche sich wiederholenden Befehlsabläufe haben den Nachteil, daß sie eine
Programmausführung
unnötigerweise
verlangsamen und zudem einen Speicherbedarf des Programms unnötigerweise
erhöhen.
Um diese Nachteile zu vermeiden, werden häufig wiederkehrende Befehlsabfolgen
in eine Architektur eines Controllers aufgenommen. Dies resultiert
in einer Erweiterung des Befehlssatzes mit komplexen Befehlen, die
einer Kombination mehrerer ursprünglicher
Befehle entsprechen. Eine Erweiterung des Befehlssatzes ist jedoch mit
einem großen
Aufwand verbunden. Dies beinhaltet insbesondere eine Neuentwicklung
von Teilen des als CORE bezeichneten Controllerkerns mit der dazugehörigen Verifikation,
Layoutmaßnahmen
und einem zusätzlichen
Flächenoverhead,
der für
die Implementierung der komplexen Befehlserweiterungen benötigt wird.
Eine solche Befehlssatzerweiterung wird deshalb nicht für nur selten
benötigte,
spezielle Befehlskombinationen eingeführt.
-
Rekonfigurierbare
CPUs existieren lediglich ansatzweise bei FPGA-Lösungen, die jedoch nicht für fest in
Hardware vergossene Controller einsetzbar sind.
-
Bekannte
Controller-Architekturen erlauben lediglich die Erweiterung eines
Befehlssatzes mit einem Makrobefehlssatz über einen zugefügten Decodier-ROM.
Bei Verwendung eines Decoder-ROM sind die zusätzlichen Makrobefehle in Hardware
gegossen und somit bereits bei der Entwicklung eines Controllers
festgelegt. Solche zusätzlichen
Makrobefehle unterscheiden sich somit hinsichtlich ihrer Flexibilität in keiner
Weise von dem ursprünglichen
Befehlssatz eines Controllers.
-
Es
ist die Aufgabe der vorliegenden Erfindung, einen Controller mit
einer Decodiereinrichtung sowie ein Verfahren zum Decodieren und
ein Computer-Programm zum Ausführen
des Verfahrens zu schaffen, die eine höhere Flexibilität aufweisen.
-
Diese
Aufgabe wird durch einen Controller gemäß Anspruch 1, ein Verfahren
gemäß Anspruch 7
sowie ein Computerprogramm gemäß Anspruch
8 gelöst.
-
Die
vorliegende Erfindung schafft einen Controller mit folgenden Merkmalen:
einer
Empfangseinrichtung zum Empfangen eines Befehls, wobei der Befehl
ein ausführbarer
Befehl oder ein Platzhalterbefehl ist;
einer Decodiereinrichtung,
die ausgebildet ist, um ansprechend darauf, dass der empfangene
Befehl ein ausführbarer
Befehl ist, ein dem Befehl entsprechendes Steuersignal auszugeben
und, um ansprechend darauf, dass der empfangene Befehl ein Platzhalterbefehl
ist, ein Umschaltsignal auszugeben; und
einer Einrichtung zum
Bereitstellen eines vorbestimmten Ersatzsteuersignals, die ausgebildet
ist, um abhängig
von dem Umschaltsignal das vorbestimmte Ersatzsteuersignal auszugeben.
-
Der
vorliegenden Erfindung liegt die Erkenntnis zugrunde, daß sich unter
Nutzung vorhandener Ressourcen eine verbesserte Nutzung der theoretischen
Möglichkeiten
eines Mikrocontrollersystems ermöglichen
läßt. Eine
zusätzlich
benötigte
Einrichtung zum Bereitstellen ist unter Hinzufügen einer geringen zusätzlichen
Fläche
realisierbar und ein Platzhalterbefehl benötigt lediglich einen im bisherigen Befehlssatz
reservierten Opcode.
-
Der
erfindungsgemäße Ansatz
basiert auf einer neuartigen Möglichkeit,
auf einem Mikroprozessor eine Erweiterung des vorhandenen Instruktionssets
zu realisieren, ohne für
jeden zusätzlichen
Befehl spezifische Hardware zu implementieren und zu testen. Ein
Programmierer kann so seine persönlich benötigten Erweiterungen
innerhalb der Möglichkeiten
des Systems vornehmen. Dies ist vor allem für Programmierer wertvoll, die
spezielle, in aller Regel sehr seltene Instruktionen benötigen, welche
im Gesamtsystem keine Bedeutung haben und so in der Architektur
des Controllers nicht implementiert sind. Diese Erweiterungen ermöglichen
eine Reduzierung des Speicherplatzes eines Systems sowie eine Performancesteigerung
einer Programmausführung.
-
Gemäß der vorliegenden
Erfindung wird ein Decodierer in die Lage versetzt, Befehle zu wechseln.
Dadurch kann ein rekonfigurierbarer Befehl programmiert werden.
Besonders nachladbare Programme können so noch nachträglich selbstdefinierte
Instruktionen verwenden, die davor nicht bekannt waren. Dadurch
wird zum einen die Flexibilität
des CORE erhöht
und zum anderen kann dadurch eine neue Art von Sicherheit erzeugt
werden, da ein Programmierer seine eigenen Instruktionen erzeugen kann.
Wird der erfindungsgemäße Ansatz
für sicherheitsrelevante
Anwendungen eingesetzt, so kann ein Angreifer nicht am Opcode erkennen,
welche Instruktion der Programmierer ausführen will.
-
Ein
wesentlicher Security-Aspekt in diesem Zusammenhang ist die Möglichkeit,
einen oder mehrere private Instruktionssets zu entwickeln und so
einen möglichen
Angreifer besser abzublocken. Gemäß einem weiteren Ausführungsbeispiel
werden dabei vorbestimmte Ersatzsteuersignale in einem Speicher
abgelegt. Dadurch nutzt einem Angreifer selbst ein geknackter Opcode
nichts, um festzustellen, was ein Programm ausführt.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 eine
schematische Darstellung eines Controllers gemäß der vorliegenden Erfindung;
-
2 eine
detaillierte schematische Darstellung eines weiteren Ausführungsbeispiels
eines Controllers gemäß der vorliegenden
Erfindung; und
-
3 eine
schematische Darstellung eines weiteren Ausführungsbeispiels eines Controllers
gemäß der vorliegenden
Erfindung.
-
In
der nachfolgenden Beschreibung der bevorzugten Ausführungsbeispiele
der vorliegenden Erfindung werden für die in den verschiedenen
Zeichnungen dargestellten und ähnlich
wirkenden Elemente gleiche oder ähnliche
Bezugszeichen verwendet, wobei eine wiederholte Beschreibung dieser
Elemente weggelassen wird.
-
1 zeigt
eine schematische Darstellung eines Controllers gemäß der vorliegenden
Erfindung. Der Controller weist eine Empfangseinrichtung 102, eine
Decodiereinrichtung 104 und eine Einrichtung 106 zum
Bereitstellen auf. Die Empfangseinrichtung 102 ist ausgebildet
zum Empfangen eines Befehls 112. Ein empfangener Befehle 114 wird
von der Empfangseinrichtung 102 an die Decodiereinrichtung 104 bereitgestellt.
Der empfangene Befehl 114 ist entweder ein durch den Controller
ausführbarer
Befehl oder ein Platzhalterbefehl. Ein ausführbarer Befehl wird von der
Decodiereinrichtung 104 in ein Steuersignal 116 umgewandelt,
wobei das Steuersignal 116 von der Decodiereinrichtung 104 ausgegeben
wird. Das Steuersignal 116 steuert eine Recheneinheit (nicht gezeigt
in 1) des Controllers und veranlaßt die Recheneinheit dazu,
eine durch den ausführbaren Befehl
definierte Funktion auszuführen.
Ist der empfangene Befehl 114 ein Platzhalterbefehl, so
gibt die Decodiereinrichtung 104 ein Umschaltsignal 118 aus, das
von der Einrichtung 106 zum Bereitstellen empfangen wird.
Das Umschaltsignal 118 zeigt der Einrichtung 106 zum
Bereitstellen an, daß ein
Platzhalterbefehl empfangen wurde.
-
Ansprechend
auf einen Platzhalterbefehl gibt die Einrichtung 106 zum
Bereitstellen ein vorbestimmtes Ersatzsteuersignal 120 aus.
Das Ersatzsteuersignal 120 steuert ebenfalls die Recheneinheit des
Controllers und veranlaßt
diese, eine zusätzliche Funktion
auszuführen.
Bevorzugterweise ist die zusätzliche
Funktion eine Funktion, die nicht bereits schon durch ein Steuersignal 116 hervorgerufen
werden kann. Somit entspricht die zusätzliche Funktion einer Funktion,
die nicht bereits durch einen Befehl 112 eines Befehlssatzes
des Controllers definiert ist, sondern entspricht einer Funktion,
die den für
den Controller definierten Befehlssatz erweitert. Der Befehlssatz
weist üblicherweise
eine Mehrzahl ausführbarer
Befehle sowie den Platzhalterbefehl auf.
-
Alternativ
kann der Platzhalterbefehl ein ausführbarer Befehl sein, der jedoch
in der Dekodiereinrichtung 104 erkannt wird und nicht dekodiert
wird. Ebenso kann das Ersatz-Steuersignal ein Steuersignal sein,
dass einem Befehl des Befehlssatzes entspricht.
-
Vorteilhafterweise
entspricht die zusätzliche Funktion
einer Funktion, die die Recheneinheit ohnehin bereitstellt, um die
Befehle des Befehlssatzes ausführen
zu können.
Jedoch ist die zusätzliche Funktion
nicht über
einen Befehl des Befehlssatzes ausführbar. Beispielsweise entspricht
die zusätzliche Funktion
einer Kombination aus Funktionen, die durch Befehle 112 des
Befehlssatzes hervorgerufen werden. Gemäß der vorliegenden Erfindung
wird die zusätzliche
Funktion durch das Ersatzsteuersignal 120 ausgelöst. Die
zusätzliche
Funktion ist dadurch durchführbar,
obwohl kein dazu entsprechender Befehl 112 im Befehlssatz
des Controllers bereitsteht und die Decodiereinrichtung 104 auch
nicht ausgebildet ist, um einen solchen Befehl in ein entsprechendes
Steuersignal umzuwandeln.
-
Der
Platzhalterbefehl, der die Einrichtung 106 zum Bereitstellen
veranlaßt,
das Ersatzsteuersignal 120 auszugeben, kann ein zusätzlicher
Befehl 112 des Befehlssatzes sein oder ein bisher als reserviert
bezeichneter Befehl 112 des Befehlssatzes sein. Im Fall
des reservierten Befehls ist keine Änderung an einem Befehlssatz
gemäß dem Stand
der Technik erforderlich.
-
Vorteilhafterweise
ist das Ersatzsteuersignal 120, das von der Einrichtung 106 zum
Bereitstellen ausgegeben wird, austauschbar. Dies ermöglicht es, unter
Verwendung eines einzigen Platzhalterbefehls unterschiedliche Ersatzsteuersignale 120 auszugeben
und damit unterschiedliche zusätzliche
Funktionen von dem Controller ausführen zu lassen.
-
Anhand
der bereits beschriebenen XTIME-Operation wird nachfolgend das erfindungsgemäße Verfahren
erläutert.
Wie bereits erwähnt,
weist die Sequenz zweimal eine Schiebeoperation „sh" auf, die auf eine UND-Operation „and" folgt. In der bereits erwähnten 88er
CPU ließe
sich ein Befehl konstruieren, welcher diese beiden Operationen in
einem einzigen Instruktionszyklus ausführen könnte. Das bedeutet, daß die Recheneinheit
der CPU von ihrer Architektur her dafür ausgelegt ist. Solch eine UND-Schiebeoperation „andsh" wird es jedoch nicht geben,
da dieser Befehl sehr spezifisch für diesen Algorithmus ist. Nun
kommt das XTIME-Makro aber so häufig
in der AES-Implementierung
vor, daß sich durch
einen entsprechenden optimierten Befehl „andsh" die Performance des Algorithmus um
ca. 10 % erhöhen
ließe.
Durch ein der „andsh"-Operation entsprechendes
Ersatzsteuersignal 120, das von der Einrichtung 106 zum
Bereitstellen ansprechend auf einen Platzhalterbefehl ausgegeben
wird, ließen
sich im XTIME-Makro 16 Byte Opcode durch 2 Byte ersetzen. Insgesamt
ergäbe
sich eine Ersparnis von ca. 220 Byte Opcode für den AES mit solch einer Lösung. Da
der Algorithmus des AES ca. 2 KByte Codesize hat, ergibt sich daraus
eine Codesize-Reduktion von ca. 10 %.
-
Die
vorliegende Erfindung ermöglicht
es somit, zusätzliche
Funktionen auszuführen,
die durch keinen Befehl 112 des Befehlssatzes hervorrufbar sind.
-
Das
Steuersignal 116 und das Ersatzsteuersignal 120 stellen
Steuersignalwerte an die Recheneinheit des Controllers zur Verfügung. Typischerweise
werden die Steuersignalwerte nicht seriell, sondern parallel über mehrere
Leitungen (nicht gezeigt) an die Recheneinheit übergeben. Die Befehle 112 sind üblicherweise
16-Bit- oder 32-Bit-Befehle, können
aber auch jede andere Bitbreite aufweisen. Vorteilhafterweise weist
der Platzhalterbefehl eine geringe Bitbreite auf, um möglichst
wenig Speicherplatz zu belegen. Ein Befehl ist typischerweise ein
maschinenlesbarer Befehl, der einen Opcode und einen Operanden aufweist.
Der Opcode definiert eine von dem Befehl auszuführende Operation. Opcodes sind üblicherweise
knapp und durch den Befehlssatz begrenzt. Ein Operand definiert
durch den Opcode zu verarbeitende Werte, die direkt übergeben
werden oder in Registern oder Speichern vorhanden sind. Operanden
sind lediglich durch eine Systemarchitektur begrenzt.
-
Die
Empfangseinrichtung 102 ist üblicherweise als Eingangsbuffer
des Controllers realisiert. In diesem Fall werden die Befehle 112 durch
die Empfangseinrichtung 102 eingetaktet und als empfangene
Befehle 114 ausgegeben. Alternativ kann die Empfangseinrichtung 102 aber
auch als einfache Durchgangsleitung oder als Verstärkereinrichtung realisiert
sein. Die Decodiereinrichtung 104 ist um die Funktionalität erweitert,
daß Umschaltsignal 118 ansprechend
auf den Platzhalterbefehl auszugeben. Die Decodiereinrichtung 104 weist
dazu eine Vergleichseinrichtung (nicht gezeigt in den Figuren) auf, die
ausgebildet ist, um den Platzhalterbefehl zu erkennen.
-
2 zeigt
eine detaillierte schematische Darstellung eines Controllers gemäß der vorliegenden
Erfindung. Der in 2 gezeigte Controller weist eine
Empfangseinrichtung 202, die in diesem Ausführungsbeispiel
als Durchgangsleitung realisiert ist, und eine Decodiereinrichtung 204 auf.
Eine Einrichtung 206 zum Bereitstellen ist durch eine Speichereinrichtung 206a,
die mit einer Umschalteinrichtung 206b verbunden ist realisiert.
Da die Empfangseinrichtung 202 eine Durchgangsleitung ist,
entspricht ein empfangener Befehl 214 einem Befehl oder
Opcode, wie er in 1 von der Empfang seinrichtung empfangen
wird. Die Decodiereinrichtung 204 führt eine Decoding-Funktion
aus und gibt, wie bereits in 1 beschrieben,
ein Steuersignal 216 und ein Umschaltsignal 218 aus.
Ein gespeichertes Ersatzsteuersignal 220 wird von der Speichereinrichtung 206a bereitgestellt.
Die Speichereinrichtung 206a ist in diesem Ausführungsbeispiel
ein Register und im speziellen ein CSFR-Register (CSFR; CSFR = Core
Special Function Register). Unter den Sammelbegriff CSFR fallen
alle general purpose Register. CSFR-Register werden benötigt, um
den Zustand eines Prozessors genau zu beschreiben und zu steuern. Die
Speichereinrichtung 206a stellt das Ersatzsteuersignal 220 an
die Umschalteinrichtung 206b bereit. Die Umschalteinrichtung 206b ist
ein Multiplexer.
-
Der
Multiplexer 206b empfängt
das Steuersignal 216 sowie das Ersatzsteuersignal 220.
Der Multiplexer 206b ist ebenfalls mit dem Umschaltsignal 218 verbunden.
Das Umschaltsignal 218 zeigt wiederum an, ob der empfangene
Befehl 214 ein ausführbarer
Befehl ist, der von der Decodiereinrichtung 204 in da Steuersignal 216 umgewandelt
wird, oder ein Platzhalterbefehl ist. Zeigt das Umschaltsignal 218 einen
ausführbaren
Befehl an, so schaltet der Multiplexer 206b das Steuersignal 216 auf
den Multiplexerausgang durch. Der Multiplexer 206b gibt
ein effektives Steuersignal 222 aus. In dem Fall, daß das Umschaltsignal 218 einen
ausführbaren
Befehl anzeigt, entspricht das effektive Steuersignal 222 dem Steuersignal 216.
In dem Fall, daß das
Umschaltsignal 218 einen Platzhalterbefehl anzeigt, schaltet
der Multiplexer 206b das Ersatzsteuersignal 220 durch und
das effektive Steuersignal 222 entspricht somit dem Ersatzsteuersignal 220.
Der Multiplexer 206b gibt somit in Abhängigkeit davon, ob der empfangene Befehl 214 ein
ausführbarer
Befehl oder ein Platzhalterbefehl ist, entweder das Steuersignal 216 oder
das Ersatzsteuersignal 220 aus.
-
Die
in 2 gezeigten Elemente des Controllers entsprechen
den Elementen eines Decoders eines Controllers. Der Decoder wird
durch Multiplexen eines Opcode-Stream, der einer Sequenz empfangener
Befehle 214 entspricht, sowie einem Inhalt des CSFR-Registers 206a,
das dem Ersatzsteuersignal 220 entspricht, in die Lage
versetzt, Befehle zu wechseln. Dadurch kann ein rekonfigurierbarer
Befehl programmiert werden. Durch eine Programmierung des CSFR-Registers 206a sowie
durch eine Benutzung eines zusätzlichen
Opcodes in Form des Platzhalterbefehls kann ein neuer Befehl in
den Controller oder eine CPU gemultiplext werden. Durch Beschreiben
des zusätzlichen
CSFR kann mittels einer MTCR-Operation (MTCR; MTCR = Move To Core Register)
im 88er-Prozessor ein neuer Befehl definiert werden. Die MTCR-Operation
verschiebt explizit Daten von der CPU in ein CSFR-Register. In diesem
Fall wird ein zusätzlicher
16-Bit-Opcode, der dem Platzhalterbefehl entspricht, vom Decoder
so interpretiert, daß nun
der zusätzliche
Multiplexer 206b umgeschaltet wird und statt eines decodierten
Befehls in Form des Steuersignals 216 ein neu definierter
Befehl in Form des Ersatzsteuersignals 220 ausgeführt wird.
Der neue Befehl wird durch das so entstandene effektive Steuersignal 222,
das dem Ersatzsteuersignal 220 entspricht, ausgeführt. Das
CSFR-Register 206a wird
somit zur Steuerung der CPU (nicht gezeigt) unter Verwendung eines
einzigen vordefinierten Opcodes verwendet.
-
3 zeigt
eine schematische Darstellung eines weiteren Ausführungsbeispiels
der vorliegenden Erfindung. Neben den bereits in den vorangegangenen
Figuren erläuterten
Elementen in Form einer Empfangseinrichtung 102 und einer
Decodiereinrichtung 104 weist das in 3 gezeigte
Ausführungsbeispiel
eine Speichereinrichtung 306a sowie eine Umschalteinrichtung 306b auf.
Die Umschalteinrichtung 306b entspricht dabei der in 2 gezeigten
Umschaltsignal und ist ausgebildet, um ein effektives Steuersignal 322 auszugeben,
das abhängig
von dem Umschalteinrichtung 118 entweder dem Steuersignal 116 oder
einem gespeicherten Ersatzsteuersignal 320 entspricht.
Das effektive Steuersignal 322 wird von einer Recheneinrichtung 332 empfangen.
Die Recheneinrichtung ist mit einem Speicher 334 sowie
einer Schreibeinrichtung 336 verbunden. Die Recheneinrichtung 332 ist über ein
Schreibsignal 342 mit dem Speicher 343 und über ein
Austauschsignal 344 mit der Schreibeinrichtung 336.
-
Die
Recheneinrichtung 332 ist ausgebildet, um gesteuert durch
das effektive Steuersignal 322 eine Funktion auszuführen. Die
auszuführende
Funktion entspricht dabei einer durch einen ausführbaren Befehl definierten
Funktion, wenn das effektive Steuersignal 322 dem Steuersignal 116 entspricht.
In dem Fall, daß das
effektive Steuersignal 322 dem Ersatzsteuersignal 320 entspricht,
entspricht die von der Recheneinrichtung 332 ausgeführte Funktion
einer zusätzlichen
Funktion. Es können
implementierte Befehle auf den Platzhalterbefehl abgebildet werden. Ein
Angreifer weiß welche
logische Operation ein Opcode ausführt, der Platzhaltebefehl ist
für den
Angreifer nicht definiert.
-
Vorteilhafterweise
wird das Ersatzsteuersignal 320 programmgesteuert definiert.
Dazu weist der Befehlssatz üblicherweise
einen Schreibbefehl auf, der die Recheneinrichtung 332 veranlaßt, über die Schreibeinrichtung 336 ein
Schreibsignal 346 an die Speichereinrichtung 306a bereitzustellen. Über das Schreibsignal 346 wird
ein Wert des Ersatzsteuersignals 320 festgelegt. Dieser
Wert des Ersatzsteuersignals 320 wird in der Speichereinrichtung 306a solange
gespeichert, bis er durch einen neuen Wert des Schreibsignals 346 überschrieben
wird. Der Wert des Ersatzsteuersignals 320, der über das
Schreibsignal 346 in die Speichereinrichtung 306a geschrieben wird,
ist entweder in dem Schreibbefehl enthalten oder er wird aus dem
Speicher 334 ausgelesen und über die Schreibeinrichtung 336 an
die Speichereinrichtung 306a bereitgestellt. Die Werte
des Ersatzsteuersignals 320 oder einer Mehrzahl unterschiedlicher
Ersatzsteuersignale können
dabei fest in dem Speicher 334 gespeichert sein oder durch
weitere programmgesteuerte Schreibbefehle in Speicherzellen des
Speicher 334 hineingeschrieben werden.
-
Dieses
Ausführungsbeispiel
ermöglicht
es, Instruktionen in Form von Ersatzsteuersignalwerten in einen
Speicher, beispielsweise in Form eines NVM-Memorys (NVM; NVM = Non
Volatile Memory) als Sammelbegriff für alle nicht flüchtigen
Speicher, wie beispielsweise ein EEPROM, abzulegen, diese in ein
Registerfile (nicht gezeigt in 3) zu laden
und mittels einer MTCR-Operation in die Speichereinrichtung 306a in
Form eines CSFR-Registers zu schreiben und dann mit einem Opcode
in Form des Platzhalterbefehls, welcher keinerlei Information über die im
CSFR gespeichert Operation und die dabei verwendeten Register enthält, auszuführen. Dadurch nutzt
einem Angreifer selbst der geknackte Opcode nichts, um festzustellen,
was das Programm ausführt.
Dies ist ein wesentlicher Sicherheitsaspekt bei sicherheitsrelevanten
Anwendungen.
-
Dadurch,
daß das
Ersatzsteuersignal 320 frei programmierbar ist, ist eine
Summe von verwendbaren Instruktionen lediglich durch die Architektur
der Recheneinrichtung begrenzt. Die Architektur der Recheneinrichtung 332 bzw.
die Ersatzsteuersignalwerte, die die Recheneinrichtung 332 veranlassen,
zusätzliche
Funktionen auszuführen,
müssen
einem Programmierer bzw. einer Compilersoftware, die einen Programmcode
in maschinenlesbare Befehle 112 umwandelt, bekannt sein.
-
Der
erfindungsgemäße Ansatz
ist nicht auf die beschriebenen Ausführungsbeispiele begrenzt, sondern
kann insbesondere bei allen Vorrichtungen, die programmgesteuerte
Befehle ausführen,
eingesetzt werden. Insbesondere können die Befehle auch eine
einfachere Struktur aufweisen als die in dem Ausführungsbeispiel
gezeigten Befehle einer Programmiersprache. Die Speichereinrichtung
zum Speichern und Bereitstellen des Ersatzsteuersignals kann ein
beliebiger Speicher und insbesondere auch ein bereits in einer Controllerstruktur
vorhandenes Register sein.
-
Gemäß einem
bevorzugten Ausführungsbeispiel
weist ein Controller eine Mehrzahl von Speichereinrichtungen zum
Speichern von Ersatzsteuersignalwerten auf. Dies ermöglicht es
durch einen einzigen Platzhalterbefehl eine Mehrzahl von Ersatzsteuersignalen
bereitzustellen und somit eine komplexe zusätzliche Funktion von dem Controller
ausführen zu
lassen. Wird die Speichereinrichtung in Form eines CSFR-Registers
implementiert, so können
beispielsweise mehrere CSFR-Register implementiert werden und durch
einen reservierten Opcode angesprochen werden.
-
Gemäß einem
weiteren Ausführungsbeispiel können einzelne
der mehreren Speichereinrichtungen, die unterschiedliche Ersatzsteuersignale 320 speichern,
durch unterschiedliche Platzhalterbefehle angesprochen werden. In
diesem Fall stellt die Decodiereinrichtung ein komplexes Steuersignal
bereit, das eine Ansteuerung der einzelnen Speichereinrichtungen
ansprechend auf den jeweiligen Platzhalterbefehl ermöglicht.
-
Abhängig von
den Gegebenheiten kann das erfindungsgemäße Verfahren zum Decodieren
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, daß 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. In
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.
-
- 102
- Empfangseinrichtung
- 104
- Decodiereinrichtung
- 106
- Einrichtung
zum Bereitstellen
- 112
- Befehl
- 114
- empfangener
Befehl
- 116
- Steuersignal
- 118
- Umschaltsignal
- 120
- Ersatzsteuersignal
- 202
- Empfangseinrichtung
- 204
- Decodiereinrichtung
- 206
- Einrichtung
zum Bereitstellen
- 206a
- Speichereinrichtung
- 206b
- Umschalteinrichtung
- 214
- empfangener
Befehl
- 216
- Steuersignal
- 218
- Umschaltsignal
- 220
- gespeichertes
Ersatzsteuersignal
- 222
- effektives
Steuersignal
- 306
- Einrichtung
zum Bereitstellen
- 306a
- Speichereinrichtung
- 306b
- Umschalteinrichtung
- 320
- gespeichertes
Ersatzsteuersignal
- 322
- effektives
Steuersignal
- 332
- Recheneinrichtung
- 334
- Speicher
- 336
- Schreibeinrichtung
- 342
- Speichersignal
- 344
- Austauschsignal
- 346
- Schreibsignal