Die
vorliegende Erfindung bezieht sich auf Controller im allgemeinen
und insbesondere auf Sicherheitscontroller, wie sie beispielsweise
in Chipkarten oder Smartcards eingesetzt werden, und wiederum insbesondere
auf eine Steigerung der Leistungsfähigkeit solcher Sicherheitscontroller.The
The present invention relates to controllers in general
and in particular to security controllers, as for example
used in smart cards or smart cards, and again in particular
on increasing the performance of such security controllers.
Bei
existierenden Sicherheits- bzw. Security-Mikrocontrollern ist es
erforderlich, zu verhindern, dass es potentiellen Angreifern bei
Anlegen verschiedener zu verarbeitender Daten mittels Auswertung
bzw. Analyse der Laufzeit, die der Mikrocontroller zur programmgemäßen Verarbeitung
der zu verarbeitenden Daten benötigt,
möglich
ist, Rückschlüsse auf
gegebenenfalls geheime Daten zu ziehen, wie z.B. auf den zur Verschlüsselung
der angelegten Daten verwendeten Schlüssel. Zu diesem Zweck werden
Befehle, wie z.B. Schiebebefehle (SHIFT) oder Multiplikationsbefehle
(MUL), die bei Geschwindigkeitsoptimierter Implementierung eine datenabhängige Laufzeit
bzw. Befehlsdauer hätten,
in den Mikrocontrollern so implementiert, dass die Befehle unabhängig von
den zu verarbeitenden Daten eine konstante Laufzeit aufweisen. Dies
bedeutet freilich, dass bei einer solchen Implementierung eines
Befehls die Befehlsdauer mindestens der maximalen Laufzeit unter den
Laufzeiten entsprechen muss, die dieser Befehl bei geschwindigkeitsoptimierter
Implementierung benötigen
würde.
Im Ergebnis wird hiermit die Rechenleistung zugunsten der Sicherheit
gegenüber
ihrem theoretisch möglichen
Optimum reduziert.at
It is existing security or security microcontrollers
required to prevent it from potential attackers
Creation of various data to be processed by means of evaluation
or analysis of the runtime, the microcontroller for program processing
the data to be processed requires
possible
is, conclusions on
optionally collecting secret data, e.g. on the encryption
key used for the created data. For this purpose will be
Commands, such as Shift commands (SHIFT) or multiplication commands
(MUL), which is a data-dependent runtime with speed-optimized implementation
or command duration,
implemented in the microcontrollers so that the commands are independent of
the data to be processed have a constant duration. This
Of course, that means in such an implementation of a
Command the instruction duration at least the maximum runtime among the
Maturities must match this command at speed-optimized
Need implementation
would.
The result is hereby the computing power in favor of security
across from
their theoretically possible
Optimum reduced.
Dieses
Problem findet insbesondere deshalb bei Sicherheitsmikrocontrollern
so große
Bedeutung, weil es die immer größer werdenden
Anforderungen an die Sicherheit erforderlich gemacht haben, dass
die Coprozessoren bzw. Rechenwerke innerhalb dieser Mikrocontroller
Operanden mit großen
Operanden längen, wie
z.B. von üblicherweise
1.024, 2.048 oder teilweise noch mehr Bits, verarbeiten müssen. Entsprechend
den großen
Operandenlängen
ist also hier der Unterschied zwischen der minimalen und der maximalen
Laufzeit bzw. Befehlsdauer eines Befehls bei geschwindigkeitsoptimierter
Implementierung besonders groß.
So benötigt
ein Shift-Befehl bei einer Implementierung, bei der unabhängig vom
Schiebe-Offset bzw. Versatz die Laufzeit so lang ist, wie sie bei
geschwindigkeitsoptimierter Implementierung erforderlich wäre, um einen
Operanden um die maximale Anzahl an Stellen zu schieben, in dem
Fall, dass das den Schiebebefehl implementierende Schieberegister
1.024 Bit lang ist, im Mittel 512 mal mehr Zeit als bei geschwindigkeitsoptimierter
Implementierung. Ähnlich
ist die Situation bei arithmetischen Operationen, wie z.B. Multiplikationen
und Divisionen. Bei einigen Multiplikationsimplementierungen ist
beispielsweise die Anzahl der „Einsen" im Multiplikator bestimmend
für die
Anzahl der erforderlichen, oft sequentiell durchzuführenden
Additionen. Würden
diese Implementierungen für
die Multiplikation in einem Sicherheitscontroller verwendet werden,
könnte
ein potentieller Angreifer anhand der Laufzeit dieser auf hohe Geschwindigkeit
ausgerichteten Implementierung auf die zu verarbeitenden und gegebenenfalls
zu schützenden
Daten rückschließen. Wird
stattdessen die Multiplikation unabhängig von einer Auswertung der
Einsen im Multiplikator durchgeführt,
beträgt
die Befehlsdauer auf jeden Fall maximal lang.This
A particular problem therefore lies with safety microcontrollers
so big
Meaning, because it is the ever-growing
Safety requirements have made that necessary
the coprocessors or arithmetic units within these microcontrollers
Operands with big ones
Operands length, like
e.g. from usually
1,024, 2,048 or sometimes even more bits have to process. Corresponding
the big one
Operand lengths
So here is the difference between the minimum and the maximum
Runtime or command duration of a command at speed-optimized
Implementation especially big.
So needed
a shift command in an implementation that does not depend on
Shift offset or offset the runtime is as long as they are at
speed optimized implementation would be required to run a
Operands to push the maximum number of digits in the
Case, that the shift register implementing shift register
1,024 bits long, on average 512 times more time than speed-optimized
Implementation. Similar
is the situation with arithmetic operations, such as multiplications
and divisions. For some multiplication implementations
For example, determining the number of "ones" in the multiplier
for the
Number of required, often sequential
Additions. would
these implementations for
the multiplication can be used in a security controller
could
a potential attacker based on the runtime of these at high speed
oriented implementation to be processed and, where appropriate
to be protected
Infer data. Becomes
instead the multiplication independent of an evaluation of the
Ones performed in the multiplier,
is
the command duration in any case maximally long.
Zu
dem Zeitnachteil, mit dem die erhöhte Sicherheit erkauft wird,
kommt hinzu, dass die Abgleichung der Befehlsdauer zur Abarbeitung
eines Befehls unabhängig
vom zu verarbeitenden Datum zumeist auch inhärent mit einer entsprechenden
Erhöhung
des Stromverbrauchs des Mikrocontrollers einhergeht, was insbesondere
bei Kontaktloschipkarten oder Anwendungen von Sicherheitscontrollern
in tragbaren und beispielsweise batteriebetriebenen Geräten, wie
z.B. Handys, von Nachteil ist.To
the time disadvantage with which the increased security is bought
Added to that is the alignment of the command duration for execution
a command independently
Of the date to be processed usually also inherent with a corresponding
increase
the power consumption of the microcontroller is accompanied, in particular
for contactless chip cards or security controller applications
in portable and, for example, battery-powered devices, such as
e.g. Cell phones are at a disadvantage.
Ein
großer
Nachteil an bestehenden Sicherheitsmikrocontrollern besteht nun
darin, dass die Befehle in den Befehlszeilen eines Programms immer
unter vorbeschriebenem Abgleich der Laufzeiten, die die einzelnen
Befehle für
unterschiedliche zu verarbeitende Daten benötigen, stattfindet, ohne dabei
zwischen sicherheitsrelevanter einerseits und geschwindigkeitskritischer,
nicht-sicherheitskritischer Software andererseits zu unterscheiden,
so dass auch im letztgenannten Fall unnötigerweise Leistungsverluste
hingenommen werden müssen.One
greater
Disadvantage of existing safety microcontrollers is now
in that the commands in the command lines of a program always
under the above-mentioned adjustment of the maturities, which the individual
Commands for
Different data to be processed takes place without doing so
between safety-relevant on the one hand and speed-critical,
non-safety-critical software on the other hand,
so that even in the latter case unnecessarily power losses
must be accepted.
Die
Aufgabe der vorliegenden Erfindung besteht darin, einen Controller
mit einem Rechenwerk zu schaffen, der im wesentlichen dieselbe Sicherheit
vor Ausspähung
sicherheitsrelevanter Informationen wie herkömmliche Controller und gleichzeitig
eine höhere
Effizienz bzw. Leistungsfähigkeit
in Hinblick auf sowohl Arbeitsgeschwindigkeit als auch Stromverbrauch
ermöglicht.The
The object of the present invention is a controller
with an arithmetic unit that provides essentially the same security
before spying
safety-related information like conventional controllers and at the same time
a higher one
Efficiency and performance
in terms of both work speed and power consumption
allows.
Diese
Aufgabe wird durch einen Controller gemäß Anspruch 1 gelöst.These
The object is achieved by a controller according to claim 1.
Ein
erfindungsgemäßer Controller
umfasst ein Rechenwerk zur Verarbeitung eines zu verarbeitenden Datums
in einem Leistungsmodus oder einem Sicherheitsmodus, das ausgebildet
ist, um in dem Leistungsmodus das zu verarbeitende Datum zwar mit
einer höheren
Abhängigkeit
zwischen Stromverbrauch oder Laufzeitverhalten einerseits und dem
zu verarbeitenden Datum andererseits dafür aber schneller oder unter
weniger Stromverbrauch zu verarbeiten als in dem Sicherheitsmodus,
und eine Einrichtung zum gesteuerten Umschalten des Rechenwerks
zwischen dem Leistungsmodus und dem Sicherheitsmodus.A controller according to the invention comprises an arithmetic unit for processing a data to be processed in a power mode or a safety mode, which is designed to operate in the power mode Although the date to be processed, with a higher dependency between power consumption or runtime behavior on the one hand and the date to be processed on the other hand to process faster or with less power consumption than in the security mode, and a means for controlled switching of the calculator between the power mode and the safety mode.
Die
vorliegende Erfindung beruht auf der Erkenntnis, dass unter zum
Teil nur geringem zusätzlichen Hardwareaufwand
eine Erhöhung
der Gesamtleistungsfähigkeit
eines Controllers unter im wesentlichen keinen Einbußen bei
der Sicherheit vor Ausspähung
von sicherheitsrelevanten, von dem Controller zu verarbeitenden
Daten erzielt werden kann, wenn das Rechenwerk eines Controllers
mit der Fähigkeit
ausgestattet wird, die Verarbeitung, wie z.B. eine bestimmte Rechenoperation,
an einem zu verarbeitenden Datum in entweder einem Leistungsmodus
oder einem Sicherheitsmodus durchführen zu können, wobei beim Leistungsmodus das
zu verarbeitende Datum mit einer höheren Abhängigkeit zwischen Stromverbrauch
oder Laufzeitverhalten einerseits und dem zu verarbeitenden Datum
andererseits, aber dafür
schneller oder mit weniger Stromverbrauch als im Sicherheitsmodus
verarbeitet wird. Durch einfaches gesteuertes Umschalten des Rechenwerks zwischen
dem Leistungsmodus und dem Sicherheitsmodus kann dann der Umstand
berücksichtigt
werden, dass manche Befehle in dem durch den Controller abzuarbeitenden
Programm nicht-sicherheitskritische Daten betreffen und somit herkömmlicher
Weise unnötigerweise
durch das Rechenwerk im Sicherheitsmodus verarbeitet werden würden.The
The present invention is based on the finding that under
Part only small additional hardware expenditure
an increase
the total efficiency
a controller with essentially no loss
the security against spying
of security-related, to be processed by the controller
Data can be obtained if the calculator of a controller
with the ability
is equipped, the processing, such. a certain arithmetic operation,
on a date to be processed in either a power mode
or a security mode to be able to perform
Date to be processed with a higher dependency between power consumption
or runtime behavior on the one hand and the date to be processed
on the other hand, but for that
faster or with less power consumption than in safety mode
is processed. By simply controlled switching of the calculator between
The power mode and security mode may then be the circumstance
considered
will do that some commands in the to be processed by the controller
Program non-safety-critical data and thus more conventional
Way unnecessarily
would be processed by the calculator in safety mode.
Gemäß Ausführungsbeispielen
der vorliegenden Erfindung sind zur Implementierung der vorliegenden
Erfindung in der CPU (central processing unit = zentrale Verarbeitungseinheit)
eines Controllers in dessen Befehlssatz spezielle Befehle enthalten.
Gemäß einem
ersten Ausführungsbeispiel
sind dies Befehle, die eigens vorgesehen sind, um zwischen dem Sicherheits-
und Leistungsmodus hin- und herzuschalten. Nach einem weiteren Ausführungsbeispiel
sind Befehle für
Rechenoperationen doppelt vorgesehen, nämlich sowohl Befehle, die von
dem Rechenwerk in dem Leistungsmodus durchgeführt werden, als auch solche,
die dieselben Rechenoperationen betreffen, aber von dem Rechenwerk
im Sicherheitsmodus durchgeführt
werden. Nach einem wiederum weiteren Ausführungsbeispiel enthält der CPU-Befehlssatz
Befehle, die Rechenoperationen betreffen, die durch das Rechenwerk
durchgeführt
werden sollen, und zudem einen Operanden enthalten, der anzeigt,
ob das mit dem Befehl zu verarbeitende Datum durch das Rechenwerk
im Leistungs- oder Sicherheitsmodus durchgeführt werden soll.According to embodiments
The present invention is intended to implement the present invention
Invention in the CPU (central processing unit)
a controller whose command set contains special commands.
According to one
first embodiment
these are commands that are specifically designed to move between the security
and power mode switch back and forth. According to another embodiment
are commands for
Arithmetic operations are provided in duplicate, namely both commands issued by
the arithmetic unit in the power mode, as well as those
which concern the same operations, but from the calculator
performed in safety mode
become. In yet another embodiment, the CPU instruction set includes
Commands that relate to arithmetic operations performed by the calculator
carried out
and also contain an operand indicating
whether the date to be processed with the command is calculated by the calculator
to be performed in power or safety mode.
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:preferred
embodiments
The present invention will be described below with reference to FIG
the enclosed drawings closer
explained.
Show it:
1 ein Blockschaltbild eines
Controllers gemäß einem
ersten Ausführungsbeispiel
der vorliegenden Erfindung; 1 a block diagram of a controller according to a first embodiment of the present invention;
2 eine schematische Zeichnung
eines exemplarischen Aufbaus eines Befehls einer Befehlszeile eines
Programms; und 2 a schematic drawing of an exemplary structure of a command line command of a program; and
3 ein Blockschaltbild eines
Controllers gemäß einem
weiteren Ausführungsbeispiel
der vorliegenden Erfindung. 3 a block diagram of a controller according to another embodiment of the present invention.
1 zeigt einen Controller 10 mit
einer CPU 12 und einem Rechenwerk 14. Gemäß dem vorliegenden
Ausführungsbeispiel
ist der Controller 10 beispielsweise ein Kryptomikrocontroller
einer Multiapplikationschipkarte, die neben der CPU 12 und
dem Rechenwerk 14 weitere Komponenten aufweist, wie z.B.
eine Sende/Empfangsschnittstelle zum Datentransfer mit einem Terminal,
wie z.B. ein UART-Modul (universal asynchronous receiver-transmitter
= universeller asynchroner Sender/Empfänger), einen Oszillator zum
Erzeugen eines internen Takts, ein Interrupt-Modul zum hardwaremäßigen Generieren
von Interrupt-Signalen, einen Zufallsgenerator oder dergleichen,
wobei dieselben durch einen Adress-Daten-Bus mit der CPU 12 verbunden sind,
wobei jedoch solche Komponenten in 1 der Übersichtlichkeit
halber nicht gezeigt sind. 1 shows a controller 10 with a CPU 12 and an arithmetic unit 14 , According to the present embodiment, the controller 10 For example, a crypto microcontroller of a multi-application chip card next to the CPU 12 and the calculator 14 has further components, such as a transmitting / receiving interface for data transfer with a terminal, such as a universal asynchronous receiver-transmitter (UART) module, an oscillator for generating an internal clock, an interrupt module for hardware Generating interrupt signals, a random number generator or the like, passing through an address data bus to the CPU 12 However, such components are in 1 for the sake of clarity are not shown.
Der
Controller 10 ist zur Abarbeitung eines Programms bzw.
einer Applikation 16 vorgesehen, das in einem Speicher 18 gespeichert
ist, wie z.B. einem EEPROM oder ROM.The controller 10 is for processing a program or an application 16 provided in a memory 18 is stored, such as an EEPROM or ROM.
Die
CPU 12 ist mit dem Speicher 18 verbunden, um die
das Programm 16 betreffenden Programmdaten zu erhalten,
und mit dem Rechenwerk 14, um in dem Fall von Befehlen
in den Programmdaten, die eine Verarbeitung durch das Rechenwerk 14 erfordern,
an dasselbe eine bestimmte Eingangsvariable mit der Aufforderung
weiterzuleiten, an dieser eine dem Befehl entsprechende Rechenoperation
durchzuführen,
und um nach der Verarbeitung das Ergebnis von dem Rechenwerk 14 zu
erhalten.The CPU 12 is with the store 18 connected to the the program 16 program data and with the calculator 14 in order, in the case of commands in the program data, to be processed by the calculator 14 require forwarding to it a particular input variable requesting to perform on it an arithmetic operation corresponding to the command and, after processing, the result from the arithmetic unit 14 to obtain.
Genauer
ausgedrückt,
liegt das Programm 16 entweder im physikalischen Adressraum
des Speichers 18 oder im virtuellen Adressraum als linear
angeordnete Abfolge von Befehlen vor, die von der CPU 12,
abgesehen von dem Auftreten von Sprungbefehlen, nacheinander abgearbeitet
werden. Hierzu umfasst die CPU 12 einen Programmzähler (nicht
gezeigt), der – von
Sprungbefehl einmal abgesehen, vor jedem befehl inkrementiert wird
und auf den nächsten
zu verarbeitenden Befehl in dem Speicher 18 zeigt. Basierend
auf dem Programmzähler 12 erhält die CPU 12 von
dem Speicher 18 in Form der Programmdaten bzw. eines Befehlsstromes
nacheinander die Befehle der Befehlszeilen des Programms 16.More specifically, the program lies 16 either in the physical address space of the memory 18 or in the virtual address space as a linear sequence of instructions provided by the CPU 12 , apart from the occurrence of jump instructions, be processed one after the other. This includes the CPU 12 a program counter (not shown) that is incremented prior to each instruction, apart from the jump instruction, and to the next instruction to be processed in the memory 18 shows. Based on the program counter 12 gets the CPU 12 from the store 18 in the form of the program data or a command stream successively the commands of the command lines of the program 16 ,
Die
CPU 12 umfasst einen Befehlsdecodierer 20, der
vorgesehen ist, um den Befehlsstrom zu empfangen und die in demselben
ankommenden Befehle zu interpretieren bzw. zu identifizieren, indem
derselbe die ankommenden Befehle einer von mehreren Befehlsarten
zuordnet, zu deren Abarbeitung die CPU 12 in der Lage ist,
und die den sogenannten Befehlssatz der CPU 12 bilden.The CPU 12 includes an instruction decoder 20 which is provided to receive the instruction stream and to interpret the incoming instructions in the same by assigning the incoming instructions to one of several types of instructions, for the execution of which the CPU 12 is capable of, and the so-called instruction set of the CPU 12 form.
Um
den allgemeinen Aufbau der die Befehlszeilen des Programms 16 bildenden
Befehle zu veranschaulichen – Befehlszeile
und Befehl werden im folgenden synonym verwendet –, zeigt 2 exemplarisch einen Befehl
bestehend aus einem Operationscodefeld 22 und drei Operandenfeldern 24, 26 und 28.
In dem Operationscodefeld 22 ist ein Operationscode Opcode
enthalten, der eindeutig einer Befehlsart in dem Befehlssatz der CPU 12 zugeordnet
ist. Nach dem vorliegenden exemplarischen Beispiel erfordert der
Operationscode Opcode drei Operanden, nämlich die Operanden Operand1,
Operand2 und Operand3, in den Operandenfeldern 24 – 28.
Die Bitlänge
von Opcode und Operand1 – Operand3
beträgt
beispielsweise jeweils 8, und die Bytes sind linear im physikalischen
oder logischen Adressraum angeordnet, wie es durch einen die Abarbeitungs-
bzw. Befehlsstromrichtung anzeigenden Pfeil 30 angedeutet
ist.To the general structure of the command lines of the program 16 pictorial commands to illustrate - command line and command are used synonymously in the following - shows 2 an example of an instruction consisting of an operation code field 22 and three operand fields 24 . 26 and 28 , In the operation code field 22 is an opcode opcode that is unique to a type of instruction in the instruction set of the CPU 12 assigned. According to the present exemplary example, the opcode Opcode requires three operands, operands Operand1, Operand2, and Operand3, in the operand fields 24 - 28 , For example, the bit length of Opcode and Operand1 - Operand3 is 8, respectively, and the bytes are linearly arranged in the physical or logical address space as indicated by an arrow indicating the execution direction 30 is indicated.
Der
in 2 gezeigte Befehl 22 – 28 stellt
nur eine Befehlszeile des Programms 16 dar und ihm gehen in
dem Programm 16 bzw. im logischen oder Physikalischen Adressraum
weitere Befehle voran bzw. ihm folgen weitere Befehle, wie es in 2 durch Punkte angedeutet
ist.The in 2 shown command 22 - 28 represents only one command line of the program 16 and go in the program 16 or in the logical or physical address space further commands ahead or follow him more commands, as in 2 is indicated by dots.
Unter
den Operationscodes 22 des Befehlssatzes der CPU 12 befinden
sich einige, die sich auf das Rechenwerk 14 beziehen bzw.
solche, die Instruktionen betreffen, die die Durchführung einer
Rechenoperation durch das Rechenwerk 14 an einem zu verarbeitenden
Datum fordern. Das zu verarbeitende Datum kann entweder an einer
aus dem Operationscode oder dem bzw. den Operanden 24 – 28 ableitbaren
Position in dem Speicher 18, in einem aus dem Operationscode 22 oder
dem bzw. den Operanden 24 – 28 ableitbaren internen
Register (nicht gezeigt) der CPU 12 oder in dem bzw. den
Operandenfeldern 24 – 28 des
den Operationscode 22 enthaltenden Befehls selbst enthalten
sein, oder abschnittweise an einer Kombination dieser möglichen
Orte. Die Herleitung des zu verarbeitenden Datums aus dem ankommenden
Befehl übernimmt ebenfalls
der Befehlsdekodierer 20.Under the operation codes 22 of the instruction set of the CPU 12 There are some who are on the calculator 14 relate or those that relate to instructions that carry out an arithmetic operation by the arithmetic unit 14 on a date to be processed. The data to be processed can be either at one of the opcode or the operand (s) 24 - 28 derivable position in the memory 18 in one of the operation code 22 or the operand (s) 24 - 28 derivable internal register (not shown) of the CPU 12 or in the operand field (s) 24 - 28 of the operation code 22 containing the command itself, or sections of a combination of these possible locations. The derivation of the data to be processed from the incoming instruction is also undertaken by the instruction decoder 20 ,
Das
besondere an dem Mikrocontroller 10 des vorliegenden Ausführungsbeispiels
ist nun, dass die CPU 12 mit dem Befehlsdecodierer 20 und
das Rechenwerk 14 gegenüber
dem Aufbau von herkömmlichen Sicherheitsmikrocontrollern
modifiziert sind, um bei der Verarbeitung der auf eine Verarbeitung
von zu verarbeitenden Daten durch das Rechenwerk 14 abzielenden Befehle
dafür zu
sorgen, dass die zu verarbeitenden Daten durch das Rechenwerk 14 eben
nicht nur auf eine bestimmte Art und Weise, bei Sicherheitscontrollern eben
typischerweise eine leistungstechnisch gesehen unvorteilhafte, aber
DPA-sichere oder
gegen sonstige Angriffe Weise, durchgeführt werden, sondern dass die
Art und Weise der Verarbeitung in dem Rechenwerk 14 an
die Art der zu verarbeitenden Daten bzw. die Sicherheitsanforderung
der dem Programm 16 entsprechenden Applikation angepasst
werden kann.The special thing about the microcontroller 10 of the present embodiment is now that the CPU 12 with the command decoder 20 and the calculator 14 are modified from the structure of conventional security microcontrollers, in order to process the processing of data to be processed by the calculator 14 targeted commands to ensure that the data to be processed by the calculator 14 just not in a certain way, with security controllers just typically a performance-related unfavorable, but DPA-safe or against other attacks manner, be carried out, but that the way of processing in the calculator 14 the type of data to be processed or the security requirement of the program 16 appropriate application can be adapted.
Um
dies zu ermöglichen,
ist das Rechenwerk 14 derart ausgeführt, dass es in der Lage ist,
alle Rechenoperationen, die auf dem Rechenwerk 14 durchgeführt werden
sollen, auf zwei Weisen durchzuführen, nämlich einmal
in einem Leistungsmodus und einmal in einem Sicherheitsmodus. Eine
Rechenoperation im Leistungsmodus ist beispielsweise derart im Rechenwerk 14 implementiert,
dass die Durchführung
der Rechenoperation schnell und/oder mit geringem Stromverbrauch
verbunden ist. Demgegenüber
ist dieselbe Rechenoperation im Sicherheitsmodus derart implementiert,
dass die Durchführung
der Rechenoperation zwar langsamer ist und/oder mit weniger Stromverbrauch
einhergeht, dass aber dafür
bei der Durchführung
der Rechenoperation in dem Rechenwerk 14 die Abhängigkeit
zwischen Stromverbrauch oder dem Laufzeitverhalten einerseits und
dem zu verarbeitenden Datum andererseits geringer ist als bei der
Implementierung der Rechenoperation im Leistungsmodus.To make this possible, the calculator is 14 executed in such a way that it is capable of performing all arithmetic operations on the calculator 14 be performed in two ways, namely once in a power mode and once in a security mode. An arithmetic operation in the power mode is for example such in the calculator 14 implements that the performance of the arithmetic operation is fast and / or low power consumption. In contrast, the same arithmetic operation is implemented in the security mode such that the performance of the arithmetic operation is slower and / or associated with less power consumption, but that in carrying out the arithmetic operation in the arithmetic unit 14 on the other hand, the dependence between power consumption or the runtime behavior on the one hand and the date to be processed on the other hand is lower than in the implementation of the arithmetic operation in the power mode.
Die
Art und Weisen, auf die diese Fähigkeit,
Rechenoperationen auf zwei verschiedene Weisen durchzuführen, im
Rechenwerk 14 implementiert werden kann, hängt insbesondere
von der jeweiligen Rechenoperation ab und reicht von dem Vorsehen
eines Schaltungsteils zur Implementierung der Rechenoperation im Leistungsmodus
und eines weiteren, hiervon getrennten Schaltungsteils zur Implementierung
der Rechenoperation im Sicherheitsmodus bis hin zu einem einzigen
Schaltungsteil, der durch einen oder mehrere Schalter bzw. Deaktivieren
von einigen Schaltungszweigen und aktiviert Lassen von einem gemeinsamen
Schaltungsteil verändert
werden kann, um entweder die Rechenoperation im Leistungsmodus oder
die Rechenoperation im Sicherheitsmodus durchzuführen.The ways in which this ability to perform arithmetic operations in two different ways, in the calculator 14 can be implemented depends in particular on the particular Rechenope ration and ranging from the provision of a circuit part for implementing the arithmetic operation in the power mode and another, separate circuit part for implementing the operation in safety mode up to a single circuit part, by one or more switches or deactivating some circuit branches and activated can be changed by a common circuit part to perform either the arithmetic operation in the power mode or the arithmetic operation in the safety mode.
Insbesondere
kann lediglich ein Schaltungsteil im Rechenwerk 14 zur
Durchführung
der Rechenoperation vorgesehen sein, und zwar zur Durchführung der
Rechenoperation im Leistungsmodus, während ein weiterer, durch einen
Schalter bzw. einen Umschaltmechanismus aktivierbarer Schaltungsteil
aktiviert werden kann, zur Durchführung der Rechenoperation im
Sicherheitsmodus im Anschluss an die Durchführung der Rechenoperation durch
den Schaltungsteil, der die Rechenoparation im Leistungsmodus implementiert,
solange Dummy-Operationen bzw. Leerlauf-Operationen durchzuführen, bis
eine maximale Laufzeit erreicht wird, die der die Rechenoparation
im Leistungsmodus implementierende Schaltungsteil höchstens
zur Durchführung der
Rechenoperation benötigt.In particular, only a circuit part in the calculator 14 be provided for performing the arithmetic operation, namely for performing the arithmetic operation in the power mode, while another, activatable by a switch or a switching mechanism circuit part can be activated to perform the arithmetic operation in the safety mode following the execution of the arithmetic operation by the circuit part, implementing the computational parsing in the power mode to perform dummy or idle operations until a maximum run time is reached, which the circuit part implementing the computational parsing in the power mode requires at most to perform the arithmetic operation.
Umgekehrt
könnte
das Rechenwerk 14 neben einem einzigen für die Durchführung der
Rechenoperation vorgesehenen Schaltungsteil, und zwar zur Durchführung der
Rechenoperation im Leistungsmodus, einen durch einen Schalter bzw.
einen Umschaltmechanismus zuschaltbaren Schaltungsteil aufweisen,
der nicht nach sondern während
der Laufzeit der Verarbeitung des zu verarbeitenden Datums durch
den die Rechenoperation im Leistungsmodus durchführenden Schaltungsteil eine
Dummy-Operation durchführt,
um dem Stromprofil des die zu verarbeitenden Daten eigentlich verarbeitenden
Schaltungsteils ein weiteres, zufällig generiertes oder quasi-zufällig generiertes
Stromprofil überlagert.
Somit wird zwar nicht die Laufzeit der Rechenoperation für alle zu
verarbeitenden Daten vereinheitlicht, aber die Korrelation zwischen
dem Stromprofil und den zu verarbeitenden Daten bei Durchführung der
Rechenoperation verringert sich, wodurch DPA-Angriffe erschwert
werden.Conversely, the calculator could 14 in addition to a single provided for carrying out the arithmetic operation circuit portion, and indeed for performing the arithmetic operation in the power mode, a switchable by a switch or a switching mechanism circuit part, not after but during the term of the processing of the date to be processed by the arithmetic operation in Power mode performing circuit part performs a dummy operation to the current profile of the data to be processed actually processing circuit part superimposed on another, randomly generated or quasi-randomly generated current profile. Thus, while the run time of the arithmetic operation is unified for all the data to be processed, the correlation between the current profile and the data to be processed in performing the arithmetic operation is reduced, thereby making DPA attacks more difficult.
Um
diese Funktionsfähigkeit
des Rechenwerks zumindest anzudeuten, ist in 1 in dem Rechenwerk 14 ein Schaltungsteil A 14a,
ein Schaltungsteil B 14b und ein Schalter 14c angedeutet,
wobei der Schalter 14c, je nach obigem Ausführungsbeispiel,
entweder einen der Schaltungsteile je nach Leistungs- oder Sicherheitsmodus
aktiviert oder deaktiviert oder je nach Leistungsmodus oder Sicherheitsmodus
einen der beiden Schaltungsteile zur Durchführung der Rechenoperation im
gesamten auswählt.In order to at least indicate this functionality of the arithmetic unit, is in 1 in the calculator 14 a circuit part A 14a , a circuit part B 14b and a switch 14c indicated, the switch 14c depending on the above embodiment, either one of the circuit parts activated or deactivated depending on the power or safety mode or selects depending on the power mode or safety mode one of the two circuit parts for performing the arithmetic operation throughout.
Beispiele
für Rechenoperationen
im Rechenwerk 14 sind vielfältig und umfassen als nichtabschließende Liste
von Beispielen eine Addition, Subtraktion, Multiplikation, Division,
eine Schiebeoperation und dergleichen.Examples of arithmetic operations in the calculator 14 are various and include, as a non-exhaustive list of examples, addition, subtraction, multiplication, division, a shift operation, and the like.
Als
konkrete Ausführungsform
könnte
das Rechenwerk 14 beispielsweise einen Schaltungsteil zur Durchführung einer
Multiplikation im Leistungsmodus, die nach dem Booth-Look-Ahead-Algorithmus
arbeitet, und einen Schaltungsteil zur Durchführung der Multiplikation im
Sicherheitsmodus, die die Multiplikation auf gewöhnliche Weise mit einer Anzahl
an Additionen durchführt,
die der Anzahl an Bits des Multiplikators entspricht, sowie einen
Schalter, der zwischen den beiden Schaltunsteilen umschaltet, um
die Eingangsvariable von der CPU 12 an den ausgewählten Schaltungsteil
weiterzuleiten, aufweisen.As a concrete embodiment, the calculator 14 For example, a circuit part for performing a multiplication in the power mode, which operates according to the Booth-look-ahead algorithm, and a circuit part for performing the multiplication in the safety mode, which performs the multiplication in a usual manner with a number of additions, the number of bits of the multiplier and a switch that switches between the two switching parts to the input variable from the CPU 12 to forward to the selected circuit part, have.
Nach
dem Ausführungsbeispiel
von 1 ist das Rechenwerk 14 zwischen
dem Leistungs- und dem Sicherheitsmodus über eine mit einem Steuereingang
des Rechwerks 14 verbundenen Steuer- bzw. Bitleitung zwischen CPU 12 und
Rechenwerk 14 durch die CPU 12 umschaltbar. Die
CPU 12 legt hierzu ein Signal mit entweder einem logisch
hohen oder einem logisch niedrigen Zustand an die in 1 mit Modus überschriebene
Bitleitung an, wobei im folgenden exemplarisch davon ausgegangen
wird, dass der logisch hohe Zustand dem Leistungs- und der logisch
niedrige Zustand dem Sicherheitsmodus zugeordnet ist.According to the embodiment of 1 is the calculator 14 between the power and safety modes via one with a control input of the controller 14 connected control or bit line between CPU 12 and calculator 14 through the CPU 12 switchable. The CPU 12 sets a signal with either a logic high or a logic low state to the in 1 mode overwritten bit line, wherein it is assumed in the following example, that the logic high state of the power and the logic low state is assigned to the safety mode.
Nachdem
im Vorhergehenden der Aufbau des Controllers 10 beschrieben
worden ist sowie die Funktionsweisen der einzelnen Komponenten,
wird im folgenden die gesamte Funktionsweise bzw. das Wechselspiel
zwischen den Komponenten beschrieben.After the above, the structure of the controller 10 has been described and the functioning of the individual components, the following is the entire operation or the interplay between the components described.
Es
werde zunächst
angenommen, der Befehlsdecodierer 20 erhalte aus dem Speicher 18 einen nächsten zu
verarbeitenden Befehl des Programms 16, der sich auf eine
durch das Rechenwerk 14 durchzuführende Rechenoperation bezieht.
Der Befehlsdecodierer 20 decodiert den Befehl, indem er
ihn anhand des Operationscodes 22 der entsprechenden Rechenoperation
zuordnet. Den Operand oder die Operanden bzw. die Eingangsvariable(n)
der Rechenoperation ermittelt der Befehlsdecodierer 20 je
nach Befehl entweder unmittelbar aus den Operanden 24 – 28 innerhalb
des Befehls oder aus Speicherplätzen,
die aus dem Operationscodes 22 oder den Operanden 24 – 28 hervorgehen.
Die Operanden für
die Rechenoperation leitet die CPU 12 dann als Eingangsvariablen
an das Rechenwerk 14 über
eine geeignete Datenleitung weiter. Auf den Eingang der Eingangsvariable
bzw. Eingangsvariablen hin führt
das Rechenwerk 14 die Rechenoperation aus. Gleichzeitig
zur Übertragung
der Eingangsvariable(n) zu dem Rechenwerk 14 teilt die
CPU 12 dem Rechenwerk 14 über die Modus-Leitung den Modus
mit, in welchem die Rechenoperation durchzuführen ist. Das von dem Rechenwerk 14 zurückgesendete
Ergebnis speichert die CPU 12 an einem entweder aus dem
Operationscode oder aus einem der Operanden 24 – 28 ableitbaren
Speicherplatz, woraufhin der nächste
zu verarbeitende Befehl aus dem Speicher 18 an der durch
den Programmzähler
angezeigten Adresse angefordert wird.Let us first assume the instruction decoder 20 get out of the store 18 a next command of the program to be processed 16 who is on one by the calculator 14 to be performed arithmetic operation. The command decoder 20 decodes the command by calling it using the opcode 22 assigns to the corresponding arithmetic operation. The operand or the operands or the input variable (s) of the arithmetic operation is determined by the instruction decoder 20 depending on the command either un indirectly from the operands 24 - 28 within the command or from memory locations resulting from the opcodes 22 or the operands 24 - 28 emerge. The operands for the arithmetic operation are passed by the CPU 12 then as input variables to the calculator 14 via a suitable data line on. The arithmetic unit leads to the input of the input variable or input variable 14 the arithmetic operation. Simultaneously with the transmission of the input variable (s) to the calculator 14 shares the CPU 12 the calculator 14 via the mode line the mode in which the arithmetic operation is to be performed. That of the calculator 14 The returned result is saved by the CPU 12 at either one of the opcode or one of the operands 24 - 28 derivable memory space, whereupon the next instruction to be processed from memory 18 is requested at the address indicated by the program counter.
Die
Entscheidung, in welchem Modus eine Rechenoperation durchzuführen ist,
entscheidet die CPU 12 programmgesteuert. Hierzu können beispielsweise
im Befehlsatz der CPU 12 ein und derselben Rechenoperation
jeweils zwei verschiedene Operationscodes 22 zugeordnet
sein, so dass der Befehlsdecodierer 20 der CPU 12 bereits
anhand des Operationscodes 22 erkennt, auf welchen logischen
Zustand das Signal auf der Modus-Leitung zum Rechenwerk 14 hin
umzuschalten ist. Ein Beispiel für
einen Ausschnitt von Programmzeilen in dem Programm 16 unter
Ausnutzung dieser doppelt im Befehlssatz vorhandenen Befehle für ein und dieselbe
Rechenoperation könnte
beispielsweise folgendermaßen
aussehen: The decision in which mode to perform an arithmetic operation is decided by the CPU 12 programmatically. For this purpose, for example, in the instruction set of the CPU 12 one and the same arithmetic operation in each case two different operation codes 22 be assigned so that the command decoder 20 the CPU 12 already based on the operation code 22 recognizes to which logical state the signal on the mode line to the calculator 14 is to switch. An example of a section of program lines in the program 16 For example, taking advantage of these double commands in the instruction set for one and the same operation might look like this:
Bei
diesem Beispiel für
die befehlsbezogene Umschaltung zwischen Sicherheits- und Leistungs-
(Performance-) Modus sollen die in eckigen Klammern und nach den
Strichpunkten beschriebenen Ausdrücke lediglich Bemerkungen darstellen,
während
mul_perf, sh_perf, div_sec und mul_sec die an die übliche Maschinenbefehlsschreibweise
angelehnten Befehlsnamen andeuten sollen, die jeweils einem unterschiedlichen möglichen
Operationscode des Befehlssatzes der CPU 12 zugeordnet
sind. Die Endung „_perf" bedeutet, dass der
jeweilige Befehl durch den Befehlsdecodierer 20 als eine
im Leistungsmodus durchzuführende
Rechenoperation erkannt wird, d.h. dass beim Senden der Eingangsvariable
an das Rechenwerk die Modusleitung durch die CPU 12 auf
einen logisch hohen Zustand einzustellen ist. Die Endung „_sec" bedeutet, dass die
jeweilige Rechenoperation von dem Befehlsdecodierer 20 als
eine im Sicherheitsmodus durchzuführende Rechenoperation interpretiert
wird. Die Präfixe „mul", „sh" und „div" sind Beispiele für Multiplikation,
Schiebeoperation und Division. Die Infor mation, welche von mehreren
Rechoperationen, zu denen das Rechwerk 14 in der Lage ist,
das Rechwerk 14 ausführen
soll, wird dem Rechwerk beispielsweise ebenfalls durch die CPU 12 mitgeteilt.
Die dem Befehlsnamen angefügten
Variablen stellen die Operanden des jeweiligen Befehls dar. Möglich wäre beispielsweise,
dass der erste Rechenoperand d0 bzw. d1 jeweils den Speicherplatz
angibt, an dem der erste Rechenoperand, d.h. der Multiplikand, das
zu schiebende Datum bzw. der Dividend, gespeichert ist, der zweite
Operand den Speicherplatz angibt, an dem der zweite Rechenoperand
angeordnet ist, d.h. der Multiplikator, der Versatz in Anzahl von
Bits bzw. der Divisor, und der letzte Operand den Speicherort angibt,
an dem das Ergebnis der Rechenoperation zu speichern ist.In this example of command switching between security and performance (performance) modes, the terms described in square brackets and semicolons are intended to represent only remarks, while mul_perf, sh_perf, div_sec, and mul_sec are intended to signify command names that are similar to standard machine-notation each of a different possible operation code of the instruction set of the CPU 12 assigned. The suffix "_perf" means that the respective instruction is executed by the instruction decoder 20 is recognized as an arithmetic operation to be performed in the power mode, that is, when the input variable is sent to the arithmetic unit, the mode line is through the CPU 12 is to be set to a logical high state. The suffix "_sec" means that the respective arithmetic operation of the instruction decoder 20 is interpreted as an arithmetic operation to be performed in the safety mode. The prefixes "mul", "sh", and "div" are examples of multiplication, shift operation, and division, the information of which is a number of computations, such as the law 14 is capable of the raking 14 For example, the rule is also executed by the CPU 12 communicated. The variables appended to the command name represent the operands of the respective command. It would be possible, for example, for the first arithmetic operand d0 or d1 to indicate the memory location at which the first arithmetic operand, ie the multiplicand, the data to be shifted or the dividend, is stored , the second operand indicates the memory location at which the second arithmetic operand is located, ie the multiplier, the offset in number of bits or the divisor, and the last operand indicates the memory location at which the result of the arithmetic operation is to be stored.
Wie
es aus dem obigen Beispiel zu erkennen ist, ist es dem Programmierer
bzw. dem Kompilierer möglich,
durch geeignete Auswahl von Befehlen Einfluss darauf zu nehmen,
wie die einzelnen Rechenoperationen durch das Rechenwerk 14 durchgeführt werden,
indem die CPU 12 programmgesteuert den Modus einstellt,
in welchem das Rechenwerk 14 arbeitet. Für alle Multiplikations-,
Schiebe- und Divisionsbefehle innerhalb desjenigen Programmteils,
der die Handhabung nicht-sicherheitskritische
Daten betrifft und in obigem Beispiel mit <nicht-sicherheitskritischer_Code:> überschrieben ist, werden diejenigen
Opcodes verwendet, die eine Durchführung der Rechoperationen im
Leistungsmodus ergeben („_perf"), während für alle Multiplikations-,
Schiebe- und Divisionsbefehle innerhalb desjenigen Programmteils,
der die Handhabung sicherheitskritische Daten betrifft und in obigem
Beispiel mit <sicherheitskritischer_Code:> überschrieben ist, diejenigen
Opcodes verwendet werden, die eine Durchführung der Rechoperationen im
Sicherheitsmodus ergeben („_sec")As can be seen from the above example, it is possible for the programmer or the compiler to influence by suitable selection of commands, such as the individual arithmetic operations by the arithmetic unit 14 be done by the CPU 12 programmatically sets the mode in which the calculator 14 is working. For all multiplication, shift and division commands inside half of that part of the program which concerns the handling of non-safety-critical data and is overwritten in the above example with <non-safety-critical code:>, those opcodes are used which result in performing the computation operations in the power mode ("_perf"), while for all multiplication , Shift and divide commands within that part of the program which concerns the handling of safety-critical data and which in the above example is overwritten with <safety-critical_code:>, those opcodes are used which result in the execution of the safety-mode computations ("_sec")
Operationscodes 22 einer
CPU 12 sind zumeist nur äußerst begrenzt verfügbar. Ein
weiteres Ausführungsbeispiel
für die
Programmsteuerung der Entscheidung, auf welchen Modus die CPU 12 das
Rechenwerk 14 umschaltet, sieht deshalb lediglich einen
Operationscode im Befehlssatz für
eine bestimmte Rechenoperation vor, wobei jedoch der Befehlsdecodierer 20 beim
Decodieren jedes Befehls, der sich auf eine Rechenoperation des
Rechenwerks 14 bezieht, einen zusätzlichen Operanden erwartet,
der angibt, in welchem Modus die Rechenoperation durchzuführen ist.opcodes 22 a CPU 12 are usually only very limited available. Another embodiment for program control of the decision on which mode the CPU 12 the calculator 14 Therefore, only one operation code is provided in the instruction set for a particular arithmetic operation, but the instruction decoder 20 when decoding each instruction that relates to an arithmetic operation of the calculator 14 expects an additional operand indicating in which mode the arithmetic operation is to be performed.
Um
dies zu veranschaulichen, wird im folgenden noch einmal derjenige
Programmausschnitt, der im Vorhergehenden Bezug nehmend auf das
Ausführungsbeispiel
mit befehlsbezogener Umschaltung erörtert worden ist, im Folgenden
noch einmal in der Form aufgelistet, wie er sich bei dem vorliegenden
Ausführungsbeispiel
mit Umschaltung zwischen Sicherheits- und Leistungsmodus durch einen
zusätzlichen
Operanden in ansonsten gleichen Rechenoparationsbefehlen ergäbe: In order to illustrate this, the section of program that was discussed above with reference to the embodiment with command-related switching will be listed again below in the form as it turns in the present embodiment with switching between security and Power mode by an additional operand in otherwise identical computational instructions:
Beide
Beispiele, also sowohl das vorliegende als auch das vorhergehende,
für denselben
Programmausschnitt wirken auf dieselbe Art und Weise. Bei dem vorliegenden
Ausführungsbeispiel
mit operandenbezogener Umschaltung erkennt der Befehlsdecodierer 20 anhand
des Operationscodes für
mul, sh und div, dass es sich bei diesen Befehlen um eine Multiplikation,
Schiebeoperation bzw. Division handelt. Für all diese Befehle existiert
im Befehlssatz der CPU 12 auch nur jeweils ein gesonderter
Opcode, so dass aus demselben noch nicht auf den für die betreffende
Rechenoperation zu verwenden Modus geschlossen werden kann. Im Gegensatz
zum Ausführungsbeispiel
mit befehlsbezogener Umschaltung erwartet jedoch der Befehlsdecodierer 20 zusätzlich zu
den die Speicherorte für
den Rechenoperanden bzw. das Ergebnis angebenden Befehlsoperanden
d0, d1 bzw. d2 einen weiteren Operanden, der je nach Wert, hier
nämlich „PERF" für Performance- bzw.
Leistungs-Modus und „SEC" Security- bzw. Sicherheitsmodus,
die fehlende Information betreffend den zu verwendenden Modus liefert.Both examples, both the present and the preceding, for the same program section act in the same way. In the present embodiment, with operand related switching, the instruction decoder recognizes 20 Using the opcodes for mul, sh, and div, these commands are a multiplication, shift operation, or division. For all these commands exists in the instruction set of the CPU 12 also only a separate opcode in each case, so that the same can not yet be deduced from the mode to be used for the relevant arithmetic operation. However, unlike the command-related switch embodiment, the command decoder expects 20 In addition to the memory locations for the arithmetic operand or the result indicating instruction operands d0, d1 and d2 another operand, depending on the value, namely here "PERF" for performance or performance mode and "SEC" Security- or Security mode that provides missing information regarding the mode to use.
Gemäß letztem
Ausführungsbeispiel
musste der Befehlssatz der CPU 12 praktisch nicht erweitert
werden, um die Fähigkeit
des Rechenwerks 14 auszunutzen, ein und dieselbe Rechenoperationen
in zwei unterschiedlichen Modi durchführen zu können. Der Befehlsdecodierer 20 erwartet
bei diesem Ausführungsbeispiel lediglich
einen zusätzlichen
Operanden zur Angabe des zu verwendenden Modus, falls es sich bei
dem Befehl um einen eine Rechenoperation des Rechenwerks 14 betreffenden
Befehl handelt.According to the last embodiment, the instruction set of the CPU 12 practically can not be extended to the ability of the calculator 14 to exploit one and the same arithmetic operation in two different modes. The command decoder 20 in this embodiment only expects an additional operand to indicate the mode to be used, if the instruction is an arithmetic operation of the arithmetic unit 14 concerned command.
Bei
den vorhergehenden Ausführungsbeispielen
Bezug nehmend auf 1 wurde
die Entscheidung des zu verwendenden Modus durch die CPU 12 für jede durch
das Rechenwerk 14 durchzuführende Rechenoperation neu
durchgeführt.
Dies erfordert im Programmcode im Speicher 18 gegenüber herkömmlichem Programmcode,
der nur Operationscodes für
Befehle in einem Modus kennt, und bei dem diese Operationscodes
keine zusätzlichen
Operanden zur Angabe eines von zwei Moden erforderlich machen, zusätzlichen Speicher,
und zwar um so mehr je größer die
Anzahl an Rechenoperationsbefehlen im Programmcode ist, die die
Durchführung
einer Rechenoperation durch das Rechenwerk 14 erfordern.In the previous embodiments, referring to FIG 1 became the decision of the mode to be used by the CPU 12 for each through the calculator 14 to be performed new arithmetic operation. This requires in the program code in memory 18 to conventional program code which only knows operation codes for instructions in one mode, and to which those operations Codes require no additional operands to specify one of two modes, additional memory, and more so the greater the number of arithmetic operation commands in the program code, which is the execution of an arithmetic operation by the calculator 14 require.
Bezug
nehmend auf 3 wird deshalb
ein weiteres Ausführungsbeispiel
für einen
Controller 10' beschrieben,
der gegenüber
dem Controller 10 von 1 nur
geringfügig
modi fiziert ist, weshalb die in den 1 und 3 gleichen Elemente mit gleichen
Bezugszeichen versehen sind und eine wiederholte Beschreibung dieser Elemente
im folgenden weggelassen wird.Referring to 3 therefore becomes another embodiment of a controller 10 ' described to the controller 10 from 1 is only slightly modi fied, which is why in the 1 and 3 the same elements are provided with the same reference numerals and a repeated description of these elements is omitted below.
Der
Controller 10' von 3 unterscheidet sich von
demjenigen von 1 lediglich
dadurch, dass ein Prozessor-Flag 40 zusätzlich vorgesehen wurde, um
eine Angabe, die angibt, in welchem der beiden Modi das Rechenwerk 14 nachfolgend
durchzuführende
Rechenoperationen durchzuführen
hat, gespeichert wird, d.h. ein Bit, das sich entweder in einem
logisch hohen oder einem logisch niedrigen Zustand befindet, wobei
im folgenden exemplarisch wieder davon ausgegangen wird, dass der
logisch hohe Zustand den Leistungsmodus anzeigt, während der
logisch niedrige Zustand den Sicherheitsmodus anzeigt. Auf das Prozessorflag 14 haben CPU 12 und
Rechenwerk 14 Zugriff, und zwar die CPU 12, um
das Flag 40 wie nachfolgend noch erörtert programmgesteuert einzustellen,
und das Rechenwerk 14, um den aktuellen Zustand des Flags 40 zu
erfahren.The controller 10 ' from 3 is different from that of 1 merely by having a processor flag 40 was additionally provided to provide an indication indicating in which of the two modes the calculator 14 is stored, that is, a bit that is either in a logic high or a logic low state, wherein the following is assumed by way of example again that the logic high state indicates the power mode, while the logic low state indicates the security mode. On the processor flag 14 have CPU 12 and calculator 14 Access, the CPU 12 to the flag 40 as discussed below programmatically set, and the calculator 14 to the current state of the flag 40 to experience.
Ansonsten
unterscheidet sich der Controller 10' von demjenigen von 1 lediglich durch einen
veränderten
Befehlssatz für
die CPU 12 bzw. einen dementsprechenden modifizierten Befehlsdecodierer 20.Otherwise, the controller is different 10 ' from that of 1 only by changing the instruction set for the CPU 12 or a corresponding modified instruction decoder 20 ,
Nachdem
im Vorhergehenden der Aufbau des Controllers 10' beschrieben
worden ist, wird im folgenden dessen veränderte Funktionsweise beschrieben.After the above, the structure of the controller 10 ' has been described, its changed operation will be described below.
Dem
Befehlssatz der CPU 12 sind gegenüber dem normalen je einen Opcode
für jede
Rechenoperation enthaltenden Befehlssatz zwei Befehle bzw. Operationscodes
zur Flageinstellung hinzugefügt,
die eigens dafür
vorgesehen sind, das Prozessor-Flag 40 umzustellen.
Erkennt der Befehlsdecodierer 20 in einem ankommenden Befehl
des Programms 16 einen ersten dieser Flageinstellungsoperationscodes,
stellt die CPU 12 über
eine geeignete Verbindung zu dem Prozessorflag 40 beispielsweise den
Zustand des darin gespeicherten Bits auf einen logisch hohen Zustand
ein, um dafür
zu sorgen, dass nachfolgende Rechenoperationen im Rechenwerk 14 im
Leistungsmodus durchgeführt
werden. Erhält
der Befehlsdecodierer 20 von da an unter den nachfolgenden
Befehlen des Programms 16 solche, die sich auf Rechenoperationen
des Rechenwerks 14 beziehen, leitet die CPU 12 die
entsprechenden Rechenoperanden als Eingangsvariablen an das Rechenwerk 14 weiter,
das seinerseits daraufhin vor der Verarbeitung der Eingangsvariablen
in dem Prozessor-Flag 40 den logischen
Zustand des darin gespeicherten Bits nachschlägt bzw. überprüft und diese Rechenoperationen
dem Zustand des Flag-Bits entsprechend, hier also einem logisch
hohen Zustand, im Leistungsmodus durchführt.The instruction set of the CPU 12 For example, in comparison with the normal instruction set containing one opcode for each arithmetic operation, two flag set operation codes are provided, which are dedicated to the processor flag 40 convert. Detects the command decoder 20 in an incoming command of the program 16 a first of these flag adjustment operation codes, represents the CPU 12 via an appropriate connection to the processor flag 40 For example, the state of the bit stored therein to a logic high state to ensure that subsequent arithmetic operations in the calculator 14 be performed in power mode. Receives the command decoder 20 from then on under the subsequent commands of the program 16 such, based on arithmetic operations of the calculator 14 refer, directs the CPU 12 the corresponding arithmetic operands as input variables to the arithmetic unit 14 then, in turn, before processing the input variables in the processor flag 40 the logic state of the stored therein bits checked or checked and performs these arithmetic operations according to the state of the flag bit, in this case a logical high state, in the power mode.
Erhält der Befehlsdecodierer 20 daraufhin
irgendwann einen durchzuführenden
Befehl aus dem Programm 16, der sich auf den zweiten der
hinzugefügten
Flageinstellungsoperationscodes bezieht, ändert die CPU 12 den
logischen Zustand in dem Prozessor-Flag 40 auf den niedrigen
logischen Zustand, der anzeigt, dass nachfolgende Rechenoperationen
im Sicherheitsmodus durchzuführen
sind. Von nun an eingehende, sich auf Rechenoperationen des Rechenwerks 14 beziehende
Befehle werden nun von dem Befehlsdecodierer 20 zwar wieder
gleichbleibend verarbeitet, d.h. die Rechenoperanden werden ermittelt
und als Eingangsvariablen an das Rechenwerk 14 weitergeleitet,
jedoch erkennt das Rechenwerk 14 beim Überprüfen des Flags 40 vor
dem Durchführen
der durchzuführenden
Rechenoperationen anhand des logisch niedrigen Zustands des Bits
in dem Prozessor-Flag 40, dass diese Rechenoperationen
im Sicherheitsmodus durchzuführen
sind. Dies ändert
sich erst wieder, wenn ein Befehl des ersten Flageinstellungsoperationscodes
anzeigt, dass das Flag 40 auf einen logisch hohen zustand
einzustellen ist, woraufhin, wenn dies geschehen ist, das Rechwerk 14 alle
Rechenoperationen wieder im Leistungsmodus durchführt usw.Receives the command decoder 20 then at some point a command to be executed from the program 16 which refers to the second of the added flag setting operation codes changes the CPU 12 the logic state in the processor flag 40 to the low logic state, indicating that subsequent arithmetic operations are to be performed in safety mode. From now on in detail, on arithmetic operations of the calculator 14 Commands are now issued by the instruction decoder 20 Although processed again consistently, ie the arithmetic operands are determined and as input variables to the calculator 14 Forwarded, however, recognizes the calculator 14 when checking the flag 40 before performing the arithmetic operations to be performed based on the logic low state of the bit in the processor flag 40 in that these arithmetic operations are to be performed in security mode. This changes only when a command of the first flag adjustment operation code indicates that the flag 40 is set to a logical high state, whereupon, when this is done, the Rake 14 performs all arithmetic operations again in the power mode, etc.
Um
dies zu veranschaulichen, ist im folgenden noch einmal ein Programmausschnitt
des Programms 16 exemplarisch aufgelistet, der demjenigen
der vorhergehenden zwei erläuterten
entspricht, sich von den obigen jedoch um die nunmehr flaggesteuerte
Umschaltung zwischen Sicherheits- und Leistungsmodus unterscheidet: To illustrate this, the following is again a program section of the program 16 listed by way of example, which corresponds to that of the previous two explained, but differs from the above to the now flag-controlled switching between safety and power mode:
Der
hier gezeigte Programmteil erzielt im Enddefekt dieselben Wirkungen
wie die im Vorhergehenden beschrieben Programmteile, verwendet jedoch
hierzu lediglich normale und im Befehlssatz nur einmal vorkommende
Rechenoperations-Befehle mul, sh und div unter Angabe der Rechenoperanden
und Zielorte bzw. ihrer Speicherorte. Der Modus, in welchem eine
Rechenoperation in dem Programm durchgeführt wird, bestimmt sich nicht
mehr aus der Befehlszeile selbst, in welcher der Befehl für diese
Rechenoperation steht, sondern lediglich daraus, in welchem Zustand
sich gerade das Bit in der Prozessor-Flag 40 des Controllers 10' bei Abarbeitung
dieser Befehlszeile bzw. dieses Befehls gerade befindet. So kann
es durch Sprungbefehle tatsächlich
auch vorkommen, dass ein und dieselbe Befehlszeile in dem Programm 16,
die einen sich auf eine Rechenope ration des Rechenwerks 14 beziehenden
Befehl enthält,
während
der Abarbeitung des Programms 16 mehrmals durchlaufen wird
und dabei gegebenenfalls der darin enthaltende Befehl einmal im
Leistungs- und einmal im Sicherheitsmodus durchgeführt wird,
weil beispielsweise zwischenzeitlich durch einen der Flageinstellungsbefehle
das Flag 40 umgestellt wurde. Die beiden Flageinstellungsbefehle
sind in obigem Ausführungsbeispiel
exemplarisch mit Lösche_Sicherheitsflag
und Setze_Sicherheitsflag angezeigt. Wird bei obigem Programmausschnitt
eine lineare Programmabarbeitung ohne Sprungbefehle vorausgesetzt,
so bewirkt der erste Befehl in dem Programmabschnitt <nicht-sicherheitskritischer_Code:>, d.h. Lösche_Sicherheitsflag,
dafür,
dass die Befehle bis zum Auftauchen des Befehls Setze_Sicherheitsflag,
d.h. hier mul, sh usw., im Leistungsmodus durchgeführt werden,
während
die sich an den Befehl Setze_Sicherheitsflag am Beginn des Programmabschnitts <nicht-sicherheitskritischer_Code:> anschließenden Befehle,
hier div, mul usw., im Sicherheitsmodus durchgeführt werden, bis wieder am Beginn
des Abschnitts <Ende_des_sicherheitskritichen_Codes> der Befehl Lösche_Sicherheitsflag
auftaucht.The part of the program shown here achieves the same effects in the final defect as the program parts described above, but uses only normal arithmetic operation commands mul, sh and div which occur only once in the instruction set, indicating the arithmetic and destination locations or their memory locations. The mode in which an arithmetic operation is performed in the program is no longer determined from the command line itself, in which the command stands for this arithmetic operation, but only in which state is the bit in the processor flag 40 of the controller 10 ' when executing this command line or this command is currently located. So it can happen by jump commands actually also that one and the same command line in the program 16 , which rely on a Rechenope ration of the calculator 14 during the execution of the program 16 If necessary, the command contained therein is executed once in the power mode and once in the security mode, because, for example, in the meantime by one of the flag setting commands the flag 40 was converted. The two flag setting commands are shown in the above exemplary embodiment as an example with deletion_safety_flag and set_security_flag. If a linear program execution without jump instructions is assumed in the above program excerpt, then the first instruction in the program section <non-safety-critical_code:>, ie delete_security_flag, causes the instructions to escape until the instruction set_security_flag, ie here mul, sh, etc., occurs Performance mode, while at the start of the <non-safety-critical_code>> section of the <safety-critical-code>> command, in this case div, mul etc., the safety mode is executed until the deletion_security_flag command reappears at the beginning of the <end_of_the_certain_coded> section.
Alle
drei im Vorhergehenden beschriebenen Ausführungsbeispiele ermöglichen
es dem Programmierer von beispielsweise der von dem Kartenherausgeber
engagierten Softwarefirma zur Erstellung des Applikationscodes für eine Chipkartenanwendung
Programmteile des Applikationscodes mit weniger Sicherheit, aber dafür schneller
und/oder unter geringerem Stromverbrauch durchzuführen zu
lassen, während
andere Programmteile desselben Applikationscodes so programmiert
werden könne,
dass sie mit ansonst bei Chipkarten üblicher hoher Sicherheit ausgeführt werden
können.All
allow three embodiments described above
the programmer of, for example, the card issuer
dedicated software company to create the application code for a smart card application
Program parts of the application code with less security, but faster
and / or lower power consumption
leave while
other program parts of the same application code are programmed in this way
could be
that they are otherwise executed with chip cards usual high security
can.
Anwendungen
dieser Art werden in der Zukunft vermehrt Anwendung finden, da es
mehr und mehr üblich
wird, mehrere Applikationen auf einem Controller ablaufen zu lassen,
so dass es vermehrt vorkommen wird, dass auf ein und derselben Chipkarte Applikationen
laufen, die ein unterschiedliches Maß an Sicherheit erfordern.applications
This type will be used more frequently in the future, as it is
more and more common
is to run multiple applications on a controller,
so that it will increasingly occur that on the same chip card applications
run, which require a different level of security.
In
bezug auf die Variante von 3,
bei der ein Prozessor-Flag
global zwischen dem Sicherheitsmodus und dem Performance-Modus umgeschaltet
wurde, wird darauf hingewiesen, dass es unerheblich ist, wo sich
das Prozessor-Flag 40 genau befindet, d.h. ob innerhalb
oder außerhalb
der CPU 12. Das Flag könnte ferner
im Rechenwerk 14 selbst angeordnet sein. Das Ausführungsbeispiel
von 3 mit dem speziellen
Befehlspaar zur Umschaltung des Prozessor-Flags ist insbesondere
für eine
Pipline-Implementierung günstig.With respect to the variant of 3 in which a processor flag has been switched globally between the security mode and the performance mode, it is noted that it does not matter where the processor flag 40 is exactly, ie whether inside or outside the CPU 12 , The flag could also be in the calculator 14 be arranged by yourself. The embodiment of 3 with the special Be mismatch for switching the processor flag is particularly favorable for a pipline implementation.
Es
sei darauf hingewiesen, dass die verschiedenen Ausführungsbeispiele
von 1 und 3 miteinander kombiniert
werden könnten.It should be noted that the various embodiments of 1 and 3 could be combined with each other.
Die
vorhergehende Beschreibung bezog sich auf Ausführungsbeispiele, bei denen
entweder zusätzliche
Befehle mit bisher ungenutztem Operationscode eingeführt worden
sind oder Befehlsdefinitionen umgeändert worden sind, um zusätzliche
Operanden zur Anzeige eines Sicherheits- oder Leistungsmodus zu
beinhalten. Welcher Modus von dem Rechenwerk zu verwenden war, wurde
von der CPU als "programmgesteuert" mitgeteilt, insofern,
als dass die Befehle in dem Programm selbst spezielle Befehle waren,
die anzeigten, welcher Modus für
die jeweilige Rechenoperation zu verwenden war. Eine hiervon verschiedene
Möglichkeit
der Steuerung des Umschaltens zwischen dem Leistungsmodus und dem
Sicherheitsmodus gemäß einem
weiteren Ausführungsbeispiel
der vorliegenden Erfindung sieht vor, die Information darüber, ob
eine bestimmte Rechenoperation im Leistungs- oder Sicherheitsmodus
durchzuführen
ist, nicht in die in dem auszuführendem Programm
enthaltenen Rechenbefehle gesteckt wird, sondern dass diese Information
in die durch das Programm zu verarbeitenden Daten, d.h. in die Rechenoperanden,
selbst verlagert wird. Der Modussteuerung ist dann freilich immer
noch programmgesteuert, jedoch nur noch insofern, als dass der Programmierer
bzw. der Compiler dafür
sorgen muss, dass die sicherheitskritische Daten auch als solche
erkannt werden und sicherheitsunkritische eben als sicherheitsunkritische.The
The previous description referred to embodiments in which
either additional
Commands have been introduced with previously unused operation code
or command definitions have been changed to additional
Operands for displaying a security or performance mode
include. Which mode of the calculator was to be used was
communicated by the CPU as "programmatically", insofar as
as the commands in the program itself were special commands,
which indicated which mode for
the respective arithmetic operation was to be used. One of them different
possibility
the control of switching between the power mode and the
Security mode according to a
another embodiment
The present invention provides the information about whether
a particular arithmetic operation in power or safety mode
perform
is not in the program to be executed
contained computational commands, but that this information
into the data to be processed by the program, i. into the arithmetic operands,
is relocated. The mode control is then always
still programmatically, but only insofar as the programmer
or the compiler for it
must ensure that the safety-critical data as such
be recognized and safety-critical just as safety-critical.
Ein
Controller, der diese Art der Leistungs- und Sicherheitsmodus-Umschaltung
verwendet, könnte wie
derjenige von 1 aufgebaut
sein. Um zu garantieren, dass die durch die CPU 12 gemäß dem Programm verarbeiteten
Variablen bzw. Daten immer eine Information darüber enthalten, ob sie sicherheitskritisch
oder sicherheitsunkritisch sind, d.h. im Sicherheits- oder Leistungsmodus
zu verarbeiten sind, kann entweder jeder Speicherplatz für ein Datum
bzw. für
eine Rechenvariable in einen Datenteil und einen Modusflag-Teil
auf gespalten werden, bzw. jedem individuell adressierbaren Speicherelement
bzw. Wort in dem Speicher 18 ein Flag zugeordnet werden,
das angibt, ob dieses Wort sicherheitskritische Informationen enthält oder
nicht. Die Flags können
dann beispielsweise durch spezielle Befehle umschaltbar sein, oder
es gebe spezielle Schreibbefehle, die gleichzeitig einen Operanden
enthielten, der angibt, ob das Flag des betreffenden Speicherplatzes
auf „sicherheitskritisch" oder „sicherheitsunkritisch" zu setzen ist. Oder
es kann per Definition der Speicher 18 derart unterteilt
sein, dass per Definition Daten, die in einer bestimmten Hälfte bzw.
einem bestimmten Abschnitt des Speichers 18 gespeichert
sind, wie z.B. die unteren 2 kByte des Adressraumes, sicherheitskritisch
sind bzw. als sicherheitskritisch zu betrachten sind, und dass Daten,
die in der anderen Hälfte
gespeichert sind, nicht sicherheitskritisch sind. In diesem Fall
könnte
die Zuordnung fest sein. Der Programmierer bzw. der Compiler selbst
müssten
vorab dafür
sorgen, dass sicherheitskritische Daten immer in der richtigen Speicherhälfte abgelegt
werden. In dem Fall der Zuordnung von Modusflags zu den einzelnen
Speichereinheiten könnte
freilich auch eine andere Granularität gewählt werden, als die Wort-Granularität, wie z.B.
eine Seitengranularität,
wobei jede Seite mehrere Wörter
enthält,
so dass der Flagein stellungsaufwand verringert werden könnte. In
dem Fall der Aufteilung des Speichers 18 in zwei Hälften, einen
für sicherheitskritische
Daten, deren Verarbeitung auf jeden Fall den Sicherheitsmodus verlangt,
und einen anderen Teil, in dem Daten enthalten sind, die eine Verarbeitung
im Leistungsmodus erlauben, muss die Aufteilung nicht dazu führen dass
die Daten auch physikalisch an einem Ort oder in einem zusammenhängenden
Gebiet gespeichert sind. In dem Fall der virtuellen Adressierung
beispielsweise führte
die Einteilung, dass die unteren zwei kByte des logischen Adressraumes eines
128 kByte großen
Speichers 18 sicherheitskritische Daten betreffen, während die
anderen sicherheitsunkritische sind, nicht dazu, dass dieselben
unbedingt auch physikalisch in einem 2 kByte-Block beieinander liegen, da ja die
Abbildung zwischen den logischen Adressraum und dem physikalischen
Adressraum beliebige Formen annehmen kann.A controller using this type of power and safety mode switching could be like that of 1 be constructed. To guarantee that through the CPU 12 According to the program variables or data processed always contain information as to whether they are safety-critical or safety-critical, ie to be processed in safety or power mode, either each storage space for a date or for a computational variable in a data part and a Modusflag- Part to be split, or each individually addressable memory element or word in the memory 18 be assigned a flag indicating whether or not this word contains safety-critical information. The flags may then be switchable by special commands, for example, or there may be special write commands that concurrently contain an operand indicating whether the flag of the particular memory location is to be set to "security-critical" or "security-non-critical". Or it can by definition the memory 18 be subdivided such that, by definition, data stored in a particular half or section of the memory 18 are stored, such as the lower 2 kbytes of the address space, are safety-critical or are considered critical to safety, and that data stored in the other half, are not critical to security. In this case, the assignment could be fixed. The programmer or the compiler itself would have to ensure in advance that safety-critical data is always stored in the correct memory half. Of course, in the case of assigning mode flags to the individual memory units, a different granularity than the word granularity, such as page granularity, where each page contains multiple words, could be used, so that the flagging effort could be reduced. In the case of the division of the memory 18 in two halves, one for safety-critical data, the processing of which definitely requires the safety mode, and another part, which contains data that allow processing in the power mode, the division does not have to result in the data being physically in one place or stored in a contiguous area. For example, in the case of virtual addressing, the scheduling resulted in the lower two kbytes of the logical address space of a 128 kbyte memory 18 Safety-critical data, while the others are security-critical, does not necessarily mean that they are physically adjacent to one another in a 2 kbyte block, since the mapping between the logical address space and the physical address space can take any form.
Wenn
nun bei diesem Ausführungsbeispiel
ein Rechenbefehl, wie z.B. eine Addition, zur CPU 12 gelangt,
dann handelt es sich um einen ganz normalen Rechenbefehl, der der
CPU 12 noch keine Auskunft darüber gibt, ob es sich um eine
Rechenoperation handelt, die im Leistungs- oder Sicherheitsmodus
durchzuführen
ist. Der Befehlsdecodierer 20 liest nun entsprechend dem
Befehl oder darin enthaltenen Befehlsoperanden, wie z.B. entsprechenden
Adressangaben, die zu verarbeitenden Rechenvariablen aus dem Speicher 18 oder
aus Registerinhalten der CPU 12. Dies macht er zumindest
für eine
der Rechenvariablen.Now, in this embodiment, a calculation command, such as an addition, to the CPU 12 then it is a normal calculation command, that of the CPU 12 no information yet as to whether it is an arithmetic operation to be performed in power or safety mode. The command decoder 20 Now reads according to the command or contained command operands, such as corresponding address information, the processing variables to be processed from the memory 18 or from register contents of the CPU 12 , At least that's what he does for one of the computational variables.
Gibt
es mehrere könne
je nach Befehlscode andere Rechenvariablen auch in dem Befehl selbst
als Operanden enthalten sein. Je nach dem, wo die Rechenvariable
in dem Speicher 18 gespeichert ist, nämlich in der sicherheitskritischen
oder sicherheitsunkritischen Hälfte
des Speichers 18, oder ob die Rechenvariable in einem Speicherelement
des Speichers 18 gespeichert ist, der einem Modusflag zugeordnet
ist, das einen Sicherheitsmodus oder Leistungsmodus zur Verarbeitung
der darin enthalten Daten vorschreit, weiß die CPU 12, ob die
Rechenoperation durch das Rechenwerk 14 im Leistungs- oder
im Sicherheitsmodus durchzuführen ist.
Wenn nur für
eine Rechenvariable angegeben ist, dass es sich bei ihr um eine
sicherheitskritische Information handelt, bei der der Sicherheitsmodus
zu verwenden ist, schreibt die CPU 12 dem Rechenwerk 14 über die
Modusleitung vor, die durch den Rechenbefehl vorgeschriebene Rechenoperation
im Sicherheitsmodus durchzuführen.
Die Rechenvariablen, die die CPU 12 aus ihren internen
Registern holt, sind in diese Register durch vorhergehende Befehle
geladen worden und ihnen sind deshalb beispielsweise Flagregister
zugeordnet, die für
spätere
Rechenoperationen an den darin enthaltenen Rechenvariablen eine
Information darüber
speichern, ob es sich bei den in den internen Registern der CPU 12 gespeicherten
Rechenvariablen um solche handelt, die aus dem sicherheitskritischen
Teil de Speichers 18 stammen oder nicht, oder, was gleichbedeutend
ist, aus einer Rechenoperation im Sicherheitsmodus oder im Leistungsmodus
erhalten wurden. Wenn beispielsweise die CPU 12 von dem
Rechenwerk 14 eine im sicherheitskritischen Modus berechnete
Ergebnisvariable der Rechenoperation erhält und diese dem Rechenbefehl
gemäß in einem
internen Register der CPU speichern soll, wie z.B. dem Akkumulator,
dann kann sie in einem dem Akkumulator zugeordneten Register bzw.
Flag-Register speichern, dass es sich bei dem Akkumulatorinhalt
um einen sicherheitskritischen Inhalt handelt. Dementsprechend setzt
die CPU 12 das Akkumulatorregister auf einen Wert zur Angabe
eines sicherheitsunkritischen Inhalts, wenn das Rechenergebnis durch
Rechenoperation im Leistungsmodus erhalten worden ist. Bei direkten
interne-Register-Ladebefehlen kann die CPU 12 entsprechend
verfahren wie bei Rechenbefehlen, nämlich entsprechende Register-Flags
so setzen, wie sie bei Rechenbefehlen die Modusleitung steuert.If there are several other arithmetic variables can also be contained in the instruction itself as operands, depending on the instruction code. Depending on where the computational variable in the memory 18 is stored, namely in the safety-critical or safety-critical half of the memory 18 , or whether the computational variable in a memory element of the memory 18 The CPU knows that it is associated with a mode flag that prompts a security mode or power mode to process the data contained therein 12 , whether the arithmetic operation by the calculator 14 in power or safety mode. If only one computational variable is stated to be safety-critical information using the safety mode, the CPU writes 12 the calculator 14 via the mode line, to perform the arithmetic operation prescribed by the arithmetic operation in the safety mode. The computational variables that the CPU 12 from their internal registers, have been loaded into these registers by previous instructions, and are therefore assigned, for example, flag registers which, for later computations on the arithmetic variables contained therein, store information as to whether they are in the internal registers of the CPU 12 stored arithmetic variables are those that come from the safety-critical part de memory 18 or not, or what is equivalent, obtained from a computational operation in secure mode or in performance mode. For example, if the CPU 12 from the calculator 14 receives a calculated in safety-critical mode result variable of the arithmetic operation and this according to the computational command to save in an internal register of the CPU, such as the accumulator, then it can store in a accumulator associated with the register or flag register that it is the accumulator content is a safety-critical content. Accordingly, the CPU continues 12 the accumulator register to a value for indicating a safety-critical content when the calculation result has been obtained by arithmetic operation in the power mode. For direct internal register load instructions, the CPU can 12 proceed as in arithmetic instructions, namely set corresponding register flags as they control the mode line in arithmetic instructions.
Bei
diesem Ausführungsbeispiel
sind folglich keine zusätzlichen
Opcodes bzw. Operationscodes in einer existierenden CPU notwendig.
Die Implementierung ist bei Existenz einer MMU (Memory Management
unit = Speicherverwaltungseinheit) mit virtueller Speicheradressierung
auch einfach. Letzteres Ausführungsbeispiel
lässt sich
freilich auch beliebig variieren. Bei einer MMU kann das Attribut „sicherheitskritisch" und „nicht sicherheitskritisch" freilich auch pro
Segment vergeben werden, also je nach MMU-Prinzip seitenweise bzw. page-granular,
nämlich
in dem Fall einer paged bzw. seitenweise arbeitenden MMU, oder beliebig
granular, also in Segmenten, nämlich
in dem Fall einer segmented bzw. segmentweise arbeitenden MMU. Diese
Aufteilung ist ebenfalls nicht nur im physikalischen Adressraum
sondern auch im virtuellen Adressraum so realisierbar, was dem Compiler
entgegenkommt, der ja normalerweise nicht von physikalischen Adressen
weiß und daher
Attribute normalerweise anhand virtueller Adressen vergeben bzw.
bezüglich
virtueller Adressen verwalten wird.at
this embodiment
are therefore not additional
Opcodes or opcodes in an existing CPU necessary.
The implementation is in existence of an MMU (Memory Management
unit = memory management unit) with virtual memory addressing
also easy. The latter embodiment
let yourself
Of course, they vary as well. In the case of an MMU, the attribute "safety-critical" and "not safety-critical" can of course also be pro
Segment, ie according to the MMU principle, page by page or
namely
in the case of a paged MMU, or arbitrary
granular, ie in segments, namely
in the case of a segmented MMU. These
Division is also not just in the physical address space
but also in the virtual address space so realizable what the compiler
which usually does not come from physical addresses
white and therefore
Attributes are usually assigned based on virtual addresses or
in terms of
manage virtual addresses.
-
1010
-
Controllercontroller
-
1212
-
CPUCPU
-
1414
-
Rechenwerkcalculator
-
14a14a
-
Schaltungsteilcircuit part
-
14b14b
-
Schaltungsteilcircuit part
-
14c14c
-
Schalterswitch
-
1616
-
Programmprogram
-
1818
-
SpeicherStorage
-
2020
-
BefehlsdecodiererInstruction decoder
-
2222
-
Operationscodeopcode
-
2424
-
Operandoperand
-
2626
-
Operandoperand
-
2828
-
Operandoperand
-
3030
-
BefehlsanordnungsrichtungCommand arrangement direction
-
4040
-
Prozessor-FlagProcessor Flag