-
Diese
Erfindung bezieht sich auf Schaltungen zur Durchführung eines
Algorithmus, wie z. B. eines kryptographischen Algorithmus, und
insbesondere auf eine geeignete Maßnahme gegen das Ausspionieren solcher
Schaltungen durch physikalische Angriffe.
-
Im
Bereich der sicherheitsrelevanten Applikationen, wie z. B. der Geldkarte
oder der Smartcard, spielt die physikalische Sicherheit von Schaltungen
eine entscheidende Rolle. Zum Ausspähen sicherheitsrelevanter Daten,
die von der Schaltung verarbeitet oder in der Schaltung gespeichert
sind, oder zum Manipulieren von sicherheitsrelevanten Daten stehen
heutzutage eine Vielzahl von Angriffen zur Verfügung, die in eindringende und
nicht-eindringende Angriffe (invasive and non-invasive attacks) unterteilt werden
können.
Nicht-eindringende
Angriffe umfassen keine physische Manipulation der betreffenden
Schaltung sondern eruieren sicherheitsrelevante Daten allein aufgrund
Korrelationen zwischen Eingangsdaten, Ausgangsdaten und/oder dem Leistungsprofil
bzw. Stromverbrauch der Schaltung. Angriffe dieser Art können durch
einen ausreichend sicheren Kryptoalgorithmus in Verbindung mit ausreichend
langen Operanden, wie z. B. einer Schlüssellänge von 2048 Bits bei einem
RSA-Algorithmus, im wesentlichen unmöglich gemacht werden.
-
Bei
eindringenden Angriffen wird die Schaltung physischen Manipulationen
unterzogen. Diese Manipulationen werden durchgeführt, um entweder sicherheitsrelevante
Daten zu manipulieren, wie z. B. gespeicherte Geldbeträge, den
Aufbau der integrierten Schaltung herauszufinden (reverse engeneering)
oder durch Freilegen von Schaltungsteilen Teile des Speicher auszulesen
oder Teile der Schaltung zu rekonstruieren, indem durch Sonden freigelegte
Kontakte angezapft werden, oder um durch die Beeinflussung die Schaltung
in fehlerhafte Zustände
bzw. einen fehlerhaft arbeitenden Betrieb zu versetzen. Damit kann
unter Umständen
aus den sich bei dem fehlerhaften Betrieb ergebenden Ergebnissen
der Schaltung auf sicherheitsrelevante Daten rückgeschlossen werden. Zu den
manipulativen Angriffen gehört
somit beispielsweise das Probing, nämlich das Anzapfen freigelegter
Anschlüsse,
FIB-Angriffe (FIB = focused ion beam = fokussierter Ionenstrahl),
die das Vordringen in tiefer liegendere Schichten der integrierten
Schaltung sowie das Kontaktieren einzelner Transistoren ermöglichen.
Bisherige Maßnahmen
gegen nicht-eindringende Angriffe umfassten beispielsweise das Vorsehen
einer Metallschicht mit mäanderförmigen Leiterbahnen
als oberste Schicht, um anhand derselben manipulative Angriffe anhand
der Unterbrechung der Leiterbahnen oder sonstiger Veränderungen
der elektrischen Eigenschaften der Leiterbahnen zu erkennen.
-
Nachteilhaft
an dieser Vorgehensweise ist, dass durch das Vorsehen der Metalllage
eine Metallschicht für
die reguläre „Verdrahtung" verloren geht. Zudem
muss eine Einrichtung zur aktiven Überwachung der Metalllage und
zur Ausgabe eines elektrischen Alarmsignals bei Manipulation vorgesehen
werden, welches letzteres von der zu schützenden Schaltung ausgewertet
wird, so dass beispielsweise sensitive Daten im Fall einer Manipulation
gelöscht
werden. Ist jedoch einmal eine physische Manipulation bei einem
eindringenden Angriff gelungen, so bietet die Sicherheitsvorkehrung
durch die Metalllage keine Gegenmaßnahmen mehr.
-
Es
ist die Aufgabe der vorliegenden Erfindung eine Schaltung zur Durchführung eines
Algorithmus sowie ein Verfahren zur Durchführung eines Algorithmus zu
schaffen, so dass eine erhöhte
Sicherheit gegen Angriffe erzielt wird.
-
Diese
Aufgabe wird durch eine Schaltung gemäß Anspruch 1, ein Verfahren
gemäß Anspruch
10 oder ein Computer-Programm nach Anspruch 11 gelöst.
-
Die
Erkenntnis der vorliegenden Erfindung besteht darin, dass die Sicherheit
vor Probing- und Forcing-Angriffen erhöht werden kann, wenn in einer
Schaltung zur Durchführung
eines Algorithmus aus zumindest zwei aufeinanderfolgenden Algorithmusoperationen
mehr als nur eine Verarbeitungseinrichtung vorgesehen wird, die
in der Lage ist, eine vorbestimmte der Algorithmusoperationen durchzuführen, wobei
ferner unter den Verarbeitungseinrichtungen eine ausgewählt wird,
welcher ein Eingangswert zur Durchführung der vorbestimmten Algorithmusoperation
zugeführt
werden soll, um ein Ergebnis für
die vorbestimmte Algorithmusoperation zu erhalten. Der Angreifer
weiß somit
nicht im voraus, welche Teile der Schaltung bei der Durchführung eines
Algorithmus verwendet werden, sondern vielmehr ändert sich der Pfad, den die
Daten über
die Schaltung örtlich
und zeitlich zurücklegen,
von Algorithmus zu Algorithmus.
-
Kommt
in dem durchzuführenden
Algorithmus eine Algorithmusoperation mehrmals vor, so kann sogar,
wenn für
jede dieser Algorithmusoperationen die Verarbeitungseinrichtung,
die diese Algorithmusoperation durchführen soll, innerhalb eines
durchzuführenden
Algorithmus erneut ausgewählt
wird, der Pfad, dem der mit der Durchführung des Algorithmus beanspruchte
Teil der Schaltung folgt, bezüglich
des Orts der Durchführung
der mehrmals vorkommenden Algorithmusoperation innerhalb der Durchführung eines
Algorithmus variieren, wodurch auch in diesem Fall ein weiteres
Erschwernis bei eindringenden Angriffen erzielt wird bzw. diese
Angriffe im wesentlichen vereitelt werden.
-
Ein
Vorteil der vorliegenden Erfindung besteht folglich in der erhöhten Sicherheit
gegen das Ausspionieren und Manipulieren sicherheitsrelevanter Daten
der Schaltung vor Angriffen, insbesondere vor invasiven Angriffen.
-
Der
Nachteil des Vorsehens mehrerer Verarbeitungseinrichtungen, die
zur Durchführung
derselben Algorithmusoperation in der Lage sind, kann dadurch wieder
ausgeglichen werden, dass die jeweils nicht-ausgewählten Verarbeitungseinrichtungen
zur Durchführung
der Algorithmusoperation für
andere Algorithmen eingesetzt werden können. In diesem Fall könnte zur
Vermeidung von Kollisionen bei der Auswahl der die Verarbeitung
der vorbestimmten Algorithmusoperation durchzuführenden Verarbeitungseinrichtung
berücksichtigt werden,
welche der in Frage stehenden Verarbeitungseinrichtungen inaktiv
und demnach zur Auswahl und welche aktiv und demnach nicht zur Auswahl
stehen.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 schematisch den Aufbau
eines Algorithmus aus mehreren aufeinanderfolgenden Algorithmusoperationen;
-
2 ein Blockschaltbild eines
vereinfachten Ausführungsbeispiels
einer Schaltung zur Durchführung eines
Algorithmus;
-
3 ein Blockschaltbild eines
weiteren Ausführungsbeispiels
für eine
Schaltung zur Durchführung eines
Algorithmus;
-
4 ein Blockschaltbild für ein spezielles
Ausführungsbeispiel
für eine
Schaltung zur Durchführung eines
Algorithmus;
-
5a ein Blockschaltbild eines
zu 4 abgewandelten Ausführungsbeispiels
für eine
Schaltung zur Durchführung
eines Algorithmus;
-
5b in schematischer Weise
die Abfolge der ausgewählten
Verarbeitungseinrichtungen für
den in 5a exemplarisch
eingezeichneten Fall;
-
6 ein weiteres spezielles
Ausführungsbeispiel
für eine
Schaltung zur Durchführung
eines Algorithmus.
-
Bevor
Bezug nehmend auf die Zeichnungen die vorliegende Erfindung näher erläutert wird,
wird darauf hingewiesen, dass in den Figuren gleiche oder ähnliche
Elemente mit gleichen oder ähnlichen
Bezugszeichen versehen sind, und dass eine wiederholte Beschreibung
dieser Elemente vermieden wird.
-
1 zeigt grundsätzlich den
Aufbau eines Algorithmus. Ein Algorithmus ist eine Vorschrift, die
festlegt, auf welche Weise Eingangsdaten zu verarbeiten sind, um
erwünschte
Ausgangsdaten zu erhalten. Jeder Algorithmus kann hierbei in mehr
oder wenige Algorithmusoperationen untergliedert werden, je nach
dem, wie umfangreich die einzelnen Algorithmusoperationen sind.
In 1 ist exemplarisch
der Algorithmus, der allgemein mit 10 angezeigt ist, in n Algorithmusoperationen
AOp untergliedert. Die Untergliederung in einzelne Algorithmusoperationen
AOp besitzt den Vorteil, dass in einer den Algorithmus implementierenden
Schaltung diejenigen Module, die zu der Durchführung einer jeweiligen Algorithmusoperation
AOp in der Lage sind, auch bei anderen Algorithmen und einer anderen
Abfolge von Algorithmusoperationen verwendet werden können, falls
diese unter ihrer Abfolge von Algorithmusoperationen eine Algorithmusoperation
mit dem jeweiligen Algorithmus gemeinsam haben.
-
Als
ein Beispiel für
einen Algorithmus 10 kann beispielsweise ein DES-Algorithmus
genannt werden. Die einzelnen Algorithmusoperationen AOp1-AOpn könnten dann
beispielsweise die 16 DES-Runden des DES-Algorithmus sein. Der Algorithmus 10 von 1 könnte jedoch auch lediglich
eine DES-Runde darstellen, bei der die einzelnen Algorithmusoperationen
die einzel nen Teilschritte innerhalb einer DES-Runde sind: Eingangspermutation
eines 64-Bit-Eingangsdatenblockes, Abbildung der rechten 32-Bit-Hälfte auf
die linke, Unterziehen der rechten Hälfte einer Expansions-Operation
auf einen 48-Bit-Block; XOR-Verknüpfung des 48-Bit-Blockes mit
einem Runden-Schlüssel; Abbilden
des verschlüsselten
48-Bit-Datenblockes jeweils 6-Bit-weise durch 6-auf-4-S-Boxen auf
einen 32-Bit-Datenblock;
Permutieren des 32-Bit-Datenblockes; XOR-Verknüpfung des 32-Bit-Datenblockes
mit der noch nicht überschriebenen
linken Hälfte
des permutierten 64-Bit-Eingangsdatenblockes
und Schreiben des Ergebnisses in die rechte Hälfte. (Die ersten beiden Schritte gehören nicht
zu einer „inneren" DES-Runde).
-
In
dem Fall, dass beispielsweise ein Chipkarten-Mikrocontroller lediglich ein DES-Modul
aufweist, werden alle DES-Runden an ein und demselben Ort innerhalb
des Mikrocontrollerchips durchgeführt. Einem Angreifer fällt es deshalb
leichter, eindringende Angriffe auf den Mikrocontrollerchip gezielt
auszuführen.
Dem steht auch nicht entgegen, dass innerhalb der Chipfläche, die
durch das DES-Modul innerhalb des Mikrocontrollerchips eingenommen
wird, die Verarbeitung des DES-Algorithmus „wandert", da innerhalb des DES-Moduls verschiedene
Einheiten bzw. Verarbeitungseinrichtungen für unterschiedliche Teilschritte
innerhalb einer DES-Runde zuständig
sind, wie z. B. für
die S-Box-Abbildung oder die XOR-Verknüpfung mit
dem Rundenschlüssel.
Wesentlich ist hier, dass innerhalb des DES-Moduls der Weg der Verarbeitung
für jede
DES-Verschlüsselung
immer derselbe ist, vorherbestimmt durch den DES-Standard, der in
dem integrierten DES-Modul fest implementiert ist.
-
Die
nachfolgend Bezug nehmend auf die 2–6 beschriebenen Ausführungsbeispiele
versuchen invasive Angriffe dadurch zu vereiteln, dass der Verarbeitungsweg „auf dem
Chip" zur Verarbeitung
eines Algorithmus von einer Ausführung
des Algo rithmus zu einer späteren
Ausführung
des Algorithmus variiert wird.
-
2 stellt diesen Umstand
vereinfacht an einem einfachen Ausführungsbeispiel für eine Schaltung zur
Durchführung
eines Algorithmus dar. Die Schaltung von 2, die allgemein mit 20 angezeigt
ist, umfasst eine Allzweck-Verarbeitungs-Einrichtung 22 und zwei Verarbeitungseinrichtungen 24a und 24b.
Die Allzweckverarbeitungseinrichtung 22 kann beispielsweise
ein Allzweckmikroprozessor sein. Allgemein ist jedoch die Allzweckverarbeitungseinrichtung 22 in
der Lage, alle Algorithmusoperationen des Algorithmus durchführen zu können, der
von der Schaltung 20 durchgeführt werden soll, ausgenommen
z. B. der Algorithmusoperation, zu deren Durchführung die Verarbeitungseinrichtungen 24a und 24b in
der Lage sind.
-
Bei
Abarbeitung der aufeinanderfolgenden Algorithmusoperationen während der
Durchführung
des Algorithmus übergibt
nun die Allzweckverarbeitungseinrichtung 22 an entsprechender
Stelle das Zwischenergebnis einer Algorithmusoperation als Eingangsvariable
an eine der Verarbeitungseinrichtungen 24a bzw. 24b weiter,
damit die ausgewählte
Verarbeitungseinrichtung unter ihnen die nachfolgende Algorithmusoperation mit
dem Zwischenergebnis durchführt.
Nach der Durchführung
gibt die ausgewählte
Verarbeitungseinrichtung 24a bzw. 24b das Ergebnis
wieder an die Allzweckverarbeitungseinrichtung 22 zurück, die
daraufhin mit der Abarbeitung der nachfolgenden Algorithmusoperationen
auf der Basis des von der ausgewählten
Verarbeitungseinrichtung 24a bzw. 24b gelieferten
Ergebnisses durchführt.
-
Die
Entscheidung, wo die vorbestimmte Algorithmusoperation ausgeführt wird,
zu deren Durchführung die
Verarbeitungseinrichtungen 24a und 24b gleichermaßen in der
Lage sind, wird von Algorithmus zu Algorithmus neu getroffen, wobei
die Auswahl beispielsweise auf einer zufälligen oder quasizufälligen Weise
stattfindet. Damit basiert die Auswahl auf Daten, die für den Angreifer
nur schwer oder nicht bestimmbar sind. Zur zufälligen Auswahl kann ein ohnehin
meistens vorhandener Zufallszahlengenerator verwendet werden, der
z. B. echte Zufallszahlen basierend auf beispielsweise einem Rauschprozess
liefert. Auf diese Weise läuft
der Verarbeitungspfad in der Schaltung 20 von Algorithmus
zu Algorithmus auf unterschiedlichen Verarbeitungswegen, nämlich einmal
zwischen der Allzweckverarbeitungseinrichtung 22 und der
Verarbeitungseinrichtung 24a und das andere Mal zwischen
der Allzweckverarbeitungseinrichtung 22 und der Verarbeitungseinrichtung 24b.
Einem Angreifer wird es deshalb bereits erschwert, Angriffe auf
die Schaltung 20 innerhalb der Durchführung derjenigen Algorithmusoperation
durchzuführen,
für deren
Durchführung
die Verarbeitungseinrichtungen 24a und 24b zuständig sind.
-
3 zeigt etwas detaillierter,
auf welche Weise eine vorbestimmte Algorithmusoperation einen von drei
zur Durchführung
dieser Algorithmusoperation fähigen
Verarbeitungseinrichtungen zugewiesen werden kann. Im Unterschied
zu dem Ausführungsbeispiel
von 2 wurden bei der
Schaltung von 3 diejenigen Teile
weggelassen, die nicht von der Zuweisung auf eine von mehreren Verarbeitungseinrichtungen
betroffen sind.
-
Die
Schaltung von 3, die
allgemein mit 30 angezeigt ist, umfasst drei Verarbeitungseinrichtungen 32a, 32b und 32c,
die alle in der Lage sind, ein und dieselbe Algorithmusoperation
durchzuführen.
Die Verarbeitungseinrichtungen 32a–32c sind beispielsweise
6-auf-4-S-Boxen zur Abbildung eines 6-Bit-Eingangswertes auf einen 4-Bit-Ausgangswert
gemäß einer
Abbildungsvorschrift, die z. B. für alle Verarbeitungseinrichtungen 32a–32c dieselbe
ist. Die Schaltung 30 umfasst ferner einen Multiplexer 34 sowie
eine Auswahlsteuerung 36. Der Multiplexer 34 umfasst
einen Eingang und drei Ausgänge.
An dem Eingang des Multiplexers 34 wird das Zwischenergebnis
einer vorhergehenden Algorithmusoperation des durchzuführenden
Al gorithmus empfangen, wie z. B. sechs Bits eines verschlüsselten
expandierten 48-Bit-Datenblockes innerhalb einer DES-Runde. Jeder Ausgang
des Multiplexers 34 ist mit dem Dateneingang einer unterschiedlichen
der Verarbeitungseinrichtungen 32a–32c verbunden. Der
Multiplexer 34 umfasst ferner einen Steuereingang, der
mit der Auswahlsteuerung 36 verbunden ist. Die Auswahlsteuerung 36 steuert über ein
Steuersignal an dem Steuereingang des Multiplexers 34 den
Dateneingang, über
den das Zwischenergebnis weitergeleitet wird. Die Verarbeitungseinrichtungen 32a–32c verarbeiten
das zugeführte
Zwischenergebnis auf die durch die vorbestimmte Algorithmusoperation
vorbestimmte Art und Weise, um für
die vorbestimmte Algorithmusoperation ein Ergebnis an ihren Datenausgängen auszugeben,
wobei die Datenausgänge
der Verarbeitungseinrichtungen 32a–32c zu einem gemeinsamen
Datenausgang zusammengefasst sind.
-
Nachdem
im vorhergehenden der Aufbau der Schaltung 30 beschrieben
worden ist, wird im folgenden die Funktionsweise derselben beschrieben.
Die Schaltung 30 ist vorgesehen, um einen vorbestimmten
Algorithmus durchzuführen,
wie z. B. einen DES-Algorithmus. Im Laufe der Durchführen des
Algorithmus entsteht ein Zwischenergebnis, das in 3 mit 38 angezeigt ist. An dieser
Stelle wird durch den zu verarbeitenden Algorithmus die Verarbeitung
des Zwischenergebnisses 38 durch eine vorbestimmte Algorithmusoperation vorgeschrieben,
zu deren Durchführung
jede der Verarbeitungseinrichtungen 32a–32c in der Lage ist.
-
Die
Auswahlsteuerung 36 wählt
nun unter den Verarbeitungseinrichtungen 32a–32c eine
aus, die die vorbestimmte Algorithmusoperation mit dem Zwischenergebnis 38 durchführen soll,
und sendet hierzu ein geeignetes Steuersignal an den Multiplexer 34,
damit derselbe das Zwischenergebnis 38 an diese Verarbeitungseinrichtung
weiterleitet. Die ausgewählte
Verarbeitungseinrichtung gibt das Ergebnis der vorbestimmten Algorithmusoperation
mit dem Zwischenergebnis 38 dann aus, wobei das Ergebnis
in 3 mit 40 angezeigt
ist. Das Ergebnis kann das Ergebnis des gesamten Algorithmus sein,
falls die Algorithmusoperation die letzte Algorithmusoperation innerhalb
des Algorithmus ist, oder aber das Ergebnis 40 wird weiteren
Algorithmusoperationen innerhalb der Schaltung 30 unterzogen.
Insbesondere kann es als neues Zwischenergebnis wieder einer der
Einrichtungen 32A–32C zugeführt werden,
wie es durch einen gestrichelten Pfeil 42 angedeutet ist.
-
Die
Auswahlsteuerung 36 kann die Auswahl entweder vor der Durchführung des
Algorithmus, d. h. vor der Durchführung der ersten Algorithmusoperation
des Algorithmus, durchführen
oder aber unmittelbar vor Durchführung
der vorbestimmten Algorithmusoperation durch eine der Verarbeitungseinrichtungen 32a–32c. Die
Auswahl kann, wie im vorhergehenden beschrieben, zufällig oder
quasi-zufällig
sein. Ein Beispiel für
eine quasi-zufällige Abhängigkeit
wäre beispielsweise,
dass die Auswahlsteuerung ihre Auswahl davon abhängig macht, ob in dem Fall
einer Kontaktlos-Chipkarte ein zur Verfügung stehender quantisierte
Empfangsfeldstärkewert
gerade oder ungerade ist.
-
Wie
bereits Bezug nehmend auf 2 beschrieben,
verändert
sich auch bei der Schaltung von 3 von
Algorithmusdurchführung
zu Algorithmusdurchführung
der Ort, an dem die vorbestimmte Algorithmusoperation durch eine
der Verarbeitungseinrichtungen 32a–32c durchgeführt wird.
-
Ohne
bei der Beschreibung von 3 bisher
näher darauf
eingegangen zu sein, wird klar, dass nach der bisher beschriebenen
Vorgehensweise zu jedem Zeitpunkt höchstens eine Verarbeitungseinrichtung
unter den Verarbeitungseinrichtungen 32a–32c aktiv
ist, während
die anderen inaktiv sind. Dies bedeutet einen erhöhten Platzbedarf
zur Integration der Schaltung 30. Um diesen Nachteil zu
beheben, ist es möglich,
innerhalb jedes Verarbeitungszyklus drei verschiedene Zwischenergebnisse
den drei Verarbeitungseinrichtungen 32a–32c zur Verarbeitung
zuzuführen.
Eine Möglichkeit,
dies durchzuführen,
ist in
-
3 mit gepunkteten Linien
gezeichnet. Neben den bisher beschriebenen Elementen, umfasste in diesem
Fall die Schaltung 30 weitere zwei Multiplexer 34' und 34'', deren jeweiligem Eingang ein
jeweiliges Zwischenergebnis 38' bzw. 38'' zugeführt wurde,
und deren drei Eingänge
jeweils wieder mit einer unterschiedlichen der Verarbeitungseinrichtungen 32a–32c verbunden
wären.
Die Steuereingänge
der Multiplexer 34' und 34'' wären ebenfalls mit der Auswahlsteuerung 36 verbunden.
-
In
diesem Fall lägen
also für
jeden Verarbeitungszyklus jeweils drei Zwischenergebnisse 38, 38' und 38'' an den Eingängen der Multiplexer 34, 34' und 34'' an. Die Auswahlsteuerung 36 sorgte
durch geeignete Steuersignale an den Steuereingängen der Multiplexer 34, 34' und 34'' dafür, dass jedes Zwischenergebnis
an eine unterschiedliche der Verarbeitungseinrichtungen 32a–32c weitergeleitet
würde,
wobei die Auswahl, welches Zwischenergebnis an welche Verarbeitungseinrichtung
weitergeleitet wird, jedes Mal neu durchgeführt würde. Die Zwischenergebnisse 38, 38' und 38'' könnten beispielsweise jeweils
drei unterschiedliche aufeinanderfolgende sechs Bits innerhalb eines
verschlüsselten,
expandierten 48-Bit-Datenblockes
in einer DES-Runde darstellen, die dann durch die Auswahlsteuerung 36 auf
eine zufällig
oder quasi-zufällig
ausgewählte
von sechs möglichen
Art und Weisen an die Verarbeitungseinrichtungen 32a–32c verteilt
würden.
Gemäß den mit
gepunkteten Linien dargestellten Ausführungsbeispiel von 3 wird folglich der vorbeschriebene
Nachteil an Verdreifachung des Aufwands für die Durchführung einer
vorbestimmten Algorithmusoperation durch eine Erhöhung der
Durchsatzrate ausgeglichen, da pro Verarbeitungszyklus anstelle
von einer Algorithmusoperation drei Algorithmusoperationen gleichzeitig
durchgeführt
werden können.
Die drei Operationen können
auch von drei parallel auszuführenden
voneinander unabhängigen
Algorithmen stammen.
-
Die
vorhergehend Bezug nehmend auf die 2 und 3 beschriebenen Ausführungsbeispiele
bezogen sich im wesentlichen auf die Zuweisung lediglich einer vorbestimmten
Algorithmusoperation unter mehreren Algorithmusoperationen eines
durchzuführenden
Algorithmus an eine von mehreren Verarbeitungseinrichtungen. Die
im folgenden Bezug nehmend auf die 4 bzw. 5a und 5b beschriebenen Ausführungsbeispiele erweitert die
Zuweisung an eine von mehreren Verarbeitungseinrichtungen auf mehrere
aufeinanderfolgende Algorithmusoperationen eines Algorithmus.
-
4 zeigt den Aufbau einer
Schaltung zur Durchführung
eines Algorithmus bestehend aus mehreren Algorithmusoperationen,
die gemäß dem Algorithmus
in einer vorbestimmten Reihenfolge abgearbeitet werden. Die Vorrichtung
umfasst neun Verarbeitungseinrichtungen bzw. Recheneinheiten Unit1–Unit9 bzw. 50a–52c sowie
eine Steuereinrichtung 50. In diesem Ausführungsbeispiel
sind die Recheneinheiten 50a–52c derart ausgebildet,
dass sie zur Durchführung
einer Algorithmusoperation des Algorithmus in der Lage sind, so
dass jede Algorithmusoperation des Algorithmus z. B. an jeder Recheneinheit 50a–52c durchgeführt werden
könnte.
-
Die
Recheneinheiten 50a–52c sind über bidirektionale
Datenleitungen miteinander verbunden, allerdings nicht jede mit
jeder sondern nur jeweils die nächsten
Nachbarn zueinander. Genauer ausgedrückt sind die Recheneinheiten 50a–52c in
einem zweidimensionalen 3 × 3-Feld
angeordnet, in welchem lediglich unmittelbare Nachbarn, d. h. in
einer Zeile oder Spalte nebeneinander angeordnete Recheneinheiten, über bidirektionale
Leitungen miteinander verbunden sind, so dass dieselben Zwischenergebnisse
austauschen können. Diese
bidirektionalen Datenleitungen sind in 4 durch Pfeile bzw. durch gepunktete
Linien zwischen den Einheiten 50a–52c angezeigt.
-
An
welche Nachbareinheit ein Zwischenergebnis einer Einheit weitergeleitet
wird, bestimmt die Steuereinrichtung 50 über Steuersignale
si mit i = 1–9, die die Steuereinrichtung 50 an
jede Recheneinheit 50a–52c ausgibt.
In der Realisierung der Schaltung von 4 steuern
beispielsweise die Steuersignale si ausgangsseitig
angeordnete Multiplexer in den Einheiten 50a–52c.
-
Die
Steuereinrichtung 50 gibt ferner ein Signal INfirst aus,
mit welchem die Steuereinrichtung 50 in der Lage ist, diejenige
Einheit unter den Einheiten 50a–52c zu bestimmen,
welche zur Durchführung
der ersten Algorithmusoperation des durchzuführenden Algorithmus die Eingangsvariable
erhält,
mit der der Algorithmus durchgeführt
werden soll.
-
Nachdem
im vorhergehenden der Aufbau der Vorrichtung von 4 beschrieben worden ist, wird im folgenden
deren Funktionsweise gemäß zweier
verschiedener Ausführungsbeispiele
beschrieben. Gemäß einem
ersten Ausführungsbeispiel
wählt die
Steuereinrichtung 50 zu Beginn einer geforderten Durchführung eines
Algorithmus einen linearen Pfad über
die Recheneinheiten 50a–52c aus, entlang
welchem die Durchführung
des Algorithmus durchgeführt
werden soll. In 4 ist
mit den Pfeilen zwischen den Recheneinheiten 50a–52c ein
exemplarischer Fall für
einen Algorithmus mit neun aufeinanderfolgenden Algorithmusoperationen
gezeigt. In dem hier gezeigten Fall hat sich die Steuereinrichtung 50 dazu
entschieden, den bevorstehenden durchzuführenden Algorithmus derart
durchzuführen,
dass die erste Algorithmusoperation von der Recheneinheit 50a,
die zweite Algorithmusoperation von der Recheneinheit 51a,
die dritte Algorithmusoperation von der Recheneinheit 52a,
die vierte Algorithmusoperation von der Recheneinheit 52b,
die fünfte
Algorithmusoperation von der Recheneinheit 51b usw. durchgeführt wird,
wie es durch die durchgezogenen Pfeile zwischen den Recheneinheiten 50a–52c angezeigt
wird. Gemäß dieser
Entscheidung wird zunächst
die Eingangsvariable für
den Algorithmus an die Einheit 50a ausgegeben. Diese leitet
ihr aus der Eingangsvariablen gemäß der ersten Algorithmusoperation
berechnetes Zwischenergebnis als Eingangsvariable an die Recheneinheit 51a weiter,
die ihr Zwischenergebnis wiederum an die Recheneinheit 52a weiterleitet
usw.
-
Diese
Vorgehensweise legt die Steuereinrichtung 50 vorab noch
vor Durchführung
des Algorithmus durch geeignete Einstellung der Steuersignale si bzw. INfirst sicher.
Insbesondere stellt die Steuereinrichtung 50 das Signal
INfirst derart ein, dass die Eingangsvariable
für den
Algorithmus an die Einheit 50a erfolgt. Das Steuersignal
si stellt sie derart ein, dass die Einheit 50a ihr
Zwischenergebnis an die Einheit 51a ausgibt. Das Steuersignal
s2 für
die Einheit 51a stellt die Steuereinrichtung 50 derart
ein, dass dieselbe ihr Zwischenergebnis an die Recheneinheit 52a weiterleitet.
Für jeden
neuen aus neun Algorithmusoperationen bestehenden Algorithmus wählt die
Steuereinrichtung 50 einen neuen Datenpfad über die
Recheneinheiten 50a–52c aus.
Auf diese Weise wird es einem Angreifer nahezu unmöglich gemacht,
einen Probing- oder FIB-Angriff erfolgreich durchzuführen, da
während
der Durchführung
des Algorithmus sich die Sicherheitsdaten an einem sich während der Durchführung des
Algorithmus wechselndem Ort befinden, nämlich bei der vorliegenden
exemplarisch gewählten
Topologie an einem der Orte eines zweidimensionalen 3 × 3-Feldes.
-
Die
Auswahl des linearen Datenpfades für jeden Algorithmus kann die
Steuereinrichtung 50 wiederum zufällig oder quasi-zufällig treffen.
Insbesondere kann die Auswahl des linearen Datenpfades durch Auswahl eines
Datenpfades aus einer vorbestimmten Anzahl von festgelegten Datenpfaden
bestehen, so dass die Steuereinrichtung 50 lediglich aus
einer Mehrzahl festgelegter Kombinationen von Steuersignalen si bzw. INfirst auszuwählen hätte, oder
die Steuereinrichtung 50 könnte den Datenpfad durch einen
geeigneten Algorithmus bestimmen, bei dem für jede Algorithmusoperation
die nächste
Nachbareinheit zur Durchführung
der nächsten Algorithmusoperation
auf zufällige
oder quasi-zufällige
Weise bestimmt wird.
-
Nach
vorhergehender Beschreibung hängt
die Recheneinheit, die die letzte Algorithmusoperation des Algorithmus
durchführt,
auf zufällige
bzw. quasi-zufällige
Weise von dem ausgewählten Datenpfad
ab. Die Steuereinrichtung 50 könnte jedoch auch bei ihrer
Auswahl derart ausgelegt sein, dass sie lediglich Datenpfade auswählt bzw.
bestimmt, deren letzte Recheneinheit eine vorbestimmte Recheneinheit
unter den Recheneinheiten 50a–52c ist. Umgekehrt
könnte
bei obigen Ausführungsbeispiel
das Steuersignal INfirst weggelassen werden,
wenn lediglich eine Recheneinheit unter den Recheneinheiten 50a–52c als
zur Durchführung
der ersten Algorithmusoperation eines Algorithmus vorgesehen sein
würde.
-
Das
vorhergehende Ausführungsbeispiel
für einen
Algorithmus mit neun Algorithmusoperationen war lediglich exemplarischer
Natur. Es können
auch Algorithmen bei der Vorrichtung von 4 durchgeführt werden, die mehr oder weniger
Algorithmusoperationen aufweisen als die Anzahl von Recheneinheiten 50a–52c. Für den Fall,
dass mehr Algorithmusoperationen als Recheneinheiten notwendig sind,
könnten
die Recheneinheiten auch in einer Ringanordnung geschaltet werden.
Ferner soll darauf hingewiesen werden, dass 4 sowohl die Fälle umfasst, dass die einzelnen
Algorithmusoperationen des durchzuführenden Algorithmus alle zueinander
identische Algorithmusoperationen sind, als auch den Fall, dass
die Algorithmusoperationen des Algorithmus unterschiedlich sind.
-
Die
vorhergehende Beschreibung der Funktionsweise der Vorrichtung von 4 ging davon aus, dass diese
Vorrichtung aufeinanderfolgende Algorithmen nacheinander, d. h.
sequentiell, abarbeitet, so dass zu einem Zeitpunkt lediglich eine
Recheneinheit unter den Recheneinheiten 50a–52c aktiv
ist und die Steuersignale si bzw. INfirst nur zu Beginn des Algorithmus eingestellt
und von da an während
der Durchführung
des Algorithmus konstant bleiben. Wie Bezug nehmend auf 3 bereits erläutert, führt dies
zu einer nur geringen Auslastung der Recheneinheiten 50a–52c und
damit zu einem relativ hohen Aufwand an Rechenelementen bzw. Recheneinheiten.
Dieser aus Sicherheitsgründen
erfindungsgemäß eingeführte Nachteil
wird bei einem Ausführungsbeispiel
dadurch kompensiert, dass die Steuereinrichtung 50 die
Durchführung
von neun identischen Algorithmen gleichzeitig auf den Recheneinheiten 50a–52c handhabt,
indem dieselbe für
jeden der neuen Algorithmen den linearen Datenpfad bestimmt. Genau
ausgedrückt
könnte
die Steuereinrichtung 50 bis zu neun Anfragen zur Durchführung desselben
Algorithmus an verschiedenen Eingangsvariablen handhaben, indem sie
für jeden
von ihnen zu Beginn einen Datenpfad bestimmt, so dass zu jedem Zeitpunkt
eine Recheneinheit nur die Algorithmusoperation eines Algorithmus
durchführen
soll. Die Steuereinrichtung 50 würde in diesem Fall die Steuersignale
si bzw. INfirst nach
der Durchführung
jeder Algorithmusoperation in den Einheiten 50a–52c gemäß den vorab
bestimmten Datenpfaden für
die einzelnen Algorithmusanfragen umstellen, d. h. nach jedem Algorithmusoperationszyklus.
-
Das
Ausführungsbeispiel
von 4 ging davon aus,
dass der bzw. die Datenpfade vorab, d. h. vor Durchführung des
Algorithmus, bestimmt werden. Die nachfolgend beschriebene in 5a gezeigte Vorrichtung
weicht hierin von der in 4a gezeigten
Vorrichtung ab und verwenden einen sich dynamisch entwickelnden
Datenpfad über
die Recheneinheiten.
-
Die
Vorrichtung von 5a umfasst
die Anordnung von Recheneinheiten 50a–52c, wie sie Bezug nehmend
auf 4 beschrieben worden
ist, nämlich
in der zweidimensionalen Anordnung, bei der jeweils die horizontal
und vertikal unmittelbar benachbarten Einheiten miteinander durch
bidirektionale Datenleitungen miteinander verbunden sind, wobei
diese bidirektionalen Datenleitungen in 5a mit durchgezogenen Linien dargestellt
sind. Anstelle der Steuereinrichtung von 4 umfasst die Vorrichtung von 5a einen Arbiter bzw. eine
Entscheidungseinrichtung 60, die über entsprechende Signale von
den Recheneinheiten 50a–52c darüber informiert
ist, welche der Recheneinheiten augenblicklich aktiv oder inaktiv
ist, bzw. gerade mit einer Rechenoperation bzw. Algorithmusoperation
beschäftigt
ist oder nicht, und über
Steuersignale si mit i = 1–9 ähnlich wie
die Steuereinrichtung von 4 darauf
Einfluss nehmen kann, an welche Nachbareinheit jede Recheneinheit 50a–52c ihr
Zwischenergebnis weitergeben soll, oder ob sie es selbst behalten
soll. Die Entscheidungseinrichtung 60 gibt ferner j Steuersignale
INfirst,j mit j = 1 ... M aus. M ist die
maximal erlaubte Anzahl von Anfragen zur Durchführung eines Algorithmus im
selben Algorithmusoperationszyklus. Beispielsweise könnte die
Anzahl gleichzeitig eingehender Algorithmusanfragen auf drei pro
Algorithmusoperationszyklus begrenzt sein, also dem Zyklus, da die
Recheneinheiten 50a–52c eine
Algorithmusoperation durchführen.
-
Nachdem
im vorhergehenden der Aufbau der Vorrichtung von 5a beschrieben worden ist, wird im folgenden
die Funktionsweise beschrieben. Die Vorrichtung von 5a ist dazu ausgelegt, maximal neun Algorithmen
gleichzeitig auszuführen.
Ist die Vorrichtung von 5a zunächst inaktiv,
so hat sie bei der ersten Algorithmusanfrage durch geeignete zufällige oder
quasi-zufällige
Entscheidung lediglich diejenige Recheneinheit auszuwählen, die
die Eingangsvariable für
den ersten Algorithmus erhält.
Diese Recheneinheit, es sei beispielsweise die Recheneinheit 50a,
führt dann
die Rechenoperationen der Eingangsvariablen des Algorithmus durch,
wonach der erste Rechenoperationszyklus beendet ist. Beim nächsten Rechenoperationszyklus erhält die Entscheidungseinrichtung 60 beispielsweise
eine weitere Anfrage zur Durchführung
eines weiteren Algorithmus an einer anderen Eingangsvariablen. Die
Entscheidungseinrichtung 60 hat also in diesem Algorithmusoperationszyklus
zu entscheiden, an welchen der nächsten
Nachbarn die Recheneinheit 50a ihr Zwischenergebnis weitergeben
soll, nämlich
an die Recheneinheit 50b oder die Recheneinheit 51a,
oder ob sie ihr Zwischenergebnis behalten soll, und an welche Recheneinheit
die Eingangsvariable für
den zweiten Algorithmus ausgegeben werden soll.
-
Exemplarisch
entscheide sich die Entscheidungseinrichtung 60 dazu, dass
die Recheneinheit 50a ihr Zwischenergebnis an die Recheneinheit 50b weitergebe,
und die Recheneinheit 50c die Eingangsvariable des zweiten
durchzuführenden
Algorithmus erhalte. Für
den nachfolgenden Algorithmusoperationszyklus, da also die Recheneinheiten 50b und 50c ihr
Zwischenergebnis bereits berechnet haben, hat die Entscheidungseinrichtung 60,
wenn sie wiederum eine erneute Anfrage zur Durchführung eines
Algorithmus erhält,
bereits drei Algorithmusoperationen an die Recheneinheiten 50a–52c zu
verteilen, nämlich
die dritte Algorithmusoperation des ersten Algorithmus, die mit
dem Zwischenergebnis der Recheneinheit 50b durchzuführen ist,
die zweite Algorithmusoperation des zweiten Algorithmus, die mit
dem Zwischenergebnis der Recheneinheit 50c durchzuführen ist,
und die erste Algorithmusoperation des dritten Algorithmus, die
an der Eingangsvariable des dritten Algorithmus durchzuführen ist.
Bei dieser Entscheidung hat die Entscheidungseinrichtung 60 bereits
zu berücksichtigen,
dass die benachbarten Recheneinheiten 50b und 50c beide
Zwischenergebnisse bereithalten, und dass ein einander gegenseitiges
Weiterleiten ihrer Zwischenergebnisse zueinander nur bei geeigneter Auslegung
der Datenleitung zwischen ihnen möglich ist. Ist eine Weiterleitung
nur an einer Richtung möglich, z.
B. nur des Zwischenergebnisse von der Recheneinheit 50b an
die Recheneinheit 50c oder umgekehrt, so hat dies die Entscheidungseinrichtung 60 bei
ihrer Entscheidung zu berücksichtigen.
Ansonsten hat die Entscheidungseinrichtung 60 bei ihrer
Entscheidung lediglich zu berücksichtigen,
dass bei der Verteilung der Algorithmusoperationen an die Recheneinheiten 50a–52c einer
Recheneinheit nicht zwei Algorithmusoperationsdurchführungen
zugewiesen werden. Die Entscheidungseinrichtung 60 verhindert
somit Verklemmungen in der Anordnung von Recheneinheiten 50a–52c.
Hierzu können
zusätzlich
Prioritäten
unter den gleichzeitig oder zeitlich überlappend auszuführenden
Algorithmen definiert sein.
-
Bei
der vorhergehenden Beschreibung der Funktionsweise der Vorrichtung
von 5a wurde davon ausgegangen,
dass die Recheneinheiten 50a–52c ihre Algorithmusoperationen
in einem gemeinsamen Taktzyklus durchführen, nämlich in Algorithmus operationszyklen.
Es ist jedoch ferner möglich
und bei stark variierendem Zeitaufwand für die einzelnen Algorithmusoperationen
auch vorteilhaft, wenn die Recheneinheiten 50a–52c der
Entscheidungseinrichtung 60 die Beendigung ihrer Algorithmusoperation
melden, sobald sie die Algorithmusoperation ausgeführt haben.
In diesem Fall ist es möglich,
dass die Entscheidungseinrichtung 60 unmittelbar, d. h.
unabhängig
von einem Erreichen eines nächsten
Algorithmusoperationszyklus, entscheidet, an welchen nächsten Nachbarn
diese Recheneinheit ihr Zwischenergebnis weiterleiten soll, oder
ob sie es selber behalten soll, und zwar unter Berücksichtigung,
welche der benachbarten Recheneinheiten inaktiv ist.
-
In 5a ist mit einer geschlängelten
Linie 62 ein exemplarischer Verlauf bzw. Datenpfad gezeigt,
wie er sich für
einen Algorithmus durch die Entscheidungen durch die Entscheidungseinrichtung 60 ergibt.
Die Reihenfolge der zur Durchführung
der Algorithmusoperationen dieses Algorithmus vorgesehenen Recheneinheiten
ist auch noch mal in 5b schematisch
angezeigt, indem dieselben von links nach rechts der Reihe nach angeordnet
wurden.
-
Nachdem
im vorhergehenden Bezug nehmend auf die 4 und 5a bzw. 5b Ausführungsbeispiele beschrieben
wurden, die sich eher allgemein auf die Ausführung von Algorithmen bestehend
aus einer Abfolge von Algorithmusoperationen bezogen, bezieht sich
das nachfolgend Bezug nehmend auf 6 beschriebene Ausführungsbeispiel
in spezieller Weise auf eine MAC (Multiplay-Accumulate Unit) bzw.
eine Multiplikations-Akkumulations-Einheit
mit Verteilung von Algorithmusoperationen auf zufällige Weise
an eine von mehreren möglichen
Recheneinheiten.
-
Wie
auch die Ausführungsbeispiele
von 4 und 5a bzw. 5b umfasst die MAC von 6, die allgemein mit 100 angezeigt
ist, neun Recheneinheiten, nämlich
drei Multiplizierer MUL1, MUL2 und MUL3, drei Addierer ADD1, ADD2
und ADD3 sowie drei Register bzw. Akkumulatoren REG1, REG2 und REG3.
Die Recheneinheiten sind wie bei den Ausführungsbeispielen von 4 und 5a bzw. 5b exemplarisch
in einem 3 × 3-...
in Spalten und Zeilen angeordnet, wobei sich in der ersten Zeile
von der linken zur rechten Spalte die Recheneinheiten MUL1, ADD1
und REG1, in der zweiten Zeile die Recheneinheiten ADD2, REG2 und
MUL2 und in der dritten Zeile die Recheneinheiten REG3, MUL3 und
ADD3 befinden, so dass also die Akkumulatoren REG1–REG3 entlang
einer Diagonalen angeordnet sind, während jeweils einer der Multiplizierer
MUL1 und einer der Addierer ADD3 an einer der verbleibenden Ecken
angeordnet und dabei nur zu Recheneinheiten des anderen Typs benachbart
ist.
-
Die
Recheneinheiten der Vorrichtung 100 sind über Interlink- bzw. Zwischenverbindungsleitungen
miteinander verbunden. Multiplizierer sind durch eine mit einem
mit durchgezogener Linie dargestellten Einfachpfeil mit horizontal,
vertikal oder diagonal benachbarten Addierern verbunden, um an dieselben
ein Multiplikationsergebnis auszugeben. Jeder Addierer ist mit den
bzw. dem horizontal, vertikal oder diagonal benachbarten Akkumulator
durch eine mit einem durchgezogenem Doppelpfeil dargestellte Datenverbindung
verbunden, um einen Summand zu erhalten oder ein Additionsergebnis
bzw. eine Summe an den Akkumulator auszugeben. Die Akkumulatoren
sind untereinander durch mit gepunkteten Doppelpfeilen dargestellte
Datenleitungen miteinander verbunden, um einander gegenseitig ihre
Registerinhalte weitergeben zu können.
Die Multiplizierer sind über
mit einer Strich-Punkt-Linie dargestellte Datenleitungen ferner
in der Lage, ihr Multiplikationsergebnis bzw. Produkt an den bzw.
die vertikal, horizontal oder diagonal benachbarten Akkumulator
auszugeben. Die beiden benachbarten Addierer ADD1 und ADD2 sind über eine
mit einem Strich-Punkt-Punkt-Doppelpfeil dargestellte Datenleitung
miteinander verbunden, um ihre Summe an den jeweils anderen Addierer
auszugeben, so dass der andere Addierer diese Summe als Summand
erhält.
-
Über externe
Leitungen sind zwei Dateneingänge
der Multiplizierer mit einem Multiplexer 102 verbunden.
Der Multiplexer 102 weist, genauer ausgedrückt, drei
Paare von Ausgängen
auf, von denen jedes mit zwei Dateneingängen eines der Multiplizierer
MUL1–MUL3
verbunden ist, wobei die Datenausgänge des Multiplexers 102 in 6 mit INA1, INB1, INA2,
INB2, INA3 und INB3 angezeigt sind. Der Multiplexer 102 umfasst ferner
zwei Dateneingänge
INB und INA die die Dateneingänge
der Vorrichtung 100 darstellen. Die Vorrichtung 100 umfasst
ferner eine Steuereinrichtung 104, die mit einem Steuereingang
des Multiplexers 102 verbunden ist, und die Steuersignale
Si mit i = 1–9 an die Recheneinheiten ausgibt,
um, wie im folgenden beschrieben, die Recheneinheiten bei der Weitergabe
ihrer Ergebnisse an benachbarte Recheneinheiten geeignet zu steuern.
-
Nachdem
im vorhergehenden der Aufbau der Vorrichtung von
6 beschrieben worden ist, wird im folgenden
ihre Funktionsweise beschrieben. Die Vorrichtung
100 von
6 ist dazu vorgesehen, Rechnungen bzw.
Algorithmen derart
durchzuführen, wobei n eine natürliche Zahl
ist und exemplarisch zunächst
3 betragen soll.
-
Die
Vorrichtung 100 arbeitet in Rechenzyklen. Pro Rechenzyklus
liegt an den Eingängen
INB und INA ein neues Paar von Eingangsvariablen ai und
bi an. (Die Entscheidungseinrichtung 60 kann
auch selbst die Aktivitäten
der Recheneinheiten protokollieren.) Jedes Paar von Eingangsvariablen
ai und bi leitet
die Steuereinrichtung 104 durch geeignete Steuerung des
Multiplexers 102 an die Dateneingänge eines Multiplizierers der
Multiplizierer MUL1–MUL3
weiter. Der jeweilige Multiplizierer multipliziert die beiden Eingangsvariablen
ai und bi miteinander,
und gibt das Produkt an einen seiner Nachbarn aus, der entweder
ein Addierer oder ein Akkumulator ist. Wel cher der Nachbarn der
Empfänger
des Produktes ist, bestimmt die Steuereinrichtung 104 durch
das jeweilige Steuersignal si. Hat der Multiplizierer
das Produkt an einen Addierer weitergegeben, so berechnet dieser
die Summe des zugeführten
Multiplikationsergebnisses und eines Registerinhaltes des bzw. eines
der benachbarten Akkumulatoren, wie er durch die Steuereinrichtung 104 angezeigt
wird. Die Summe gibt der Summierer dann an einen der oder den benachbarten
Akkumulator aus, wie es ebenfalls durch die Steuereinrichtung 104 angezeigt
wird. Addition und Multiplikation durch die Multiplizierer und Addierer
sind in einem Rechenzyklus durchführbar. Der Steuereinrichtung 104 steht
ferner noch die Möglichkeit
zur Verfügung,
binnen eines Rechenzyklus die Registerinhalte zweier Register an
einen Addierer weiterzuleiten, wie z. B. die Registerinhalte der
Akkumulatoren REG1 und REG2 an den Addierer 1, dessen Summenergebnis
an den anderen Addierer weiterzuleiten, diesen wiederum die Summe
aus dem Summenergebnis und dem Registerinhalt des verbleibenden
Akkumulators berechnen zu lassen, und letzteres Summenergebnis an
einen benachbarten Akkumulator auszugeben. Die Ausgänge der
Vorrichtung 100 sind mit OUT1, OUT2 und OUT3 bezeichnet
und sind mit Datenausgängen
der Akkumulatoren REG1, REG2 und REG3 bezeichnet.
-
Basierend
auf dem oben beschriebenen Aufbau ist es der Steuereinrichtung 104 möglich, die
Summe von Gleichung 1 so zu berechnen, dass die einzelnen Multiplikationen
bzw. Additionen an für
einen Angreifer unvorhersehbaren Orten durchgeführt werden. Zudem ist auch
die Vorrichtung 100 dazu geeignet, die Berechnung zu parallelisieren.
Dies veranschauliche folgendes Beispiel, bei dem die Summe von Gleichung
1 mit m = 6 berechnet werden soll und die Datenweitergabe in der
Vorrichtung 100 jeweils durch Pfeile angedeutet ist, die
entweder von den Eingangsvariablen zu einem der Multiplikatoren
oder von einer Recheneinheit zu einer anderen zeigen, bis schließlich zum
Schluss eine Weitergabe an einen der Ausgänge erfolgt. Insbesondere bedeute „{Mu1#,
Add#, Reg#} → {...}" die Weitergabe des
Inhalts bzw. des Ergebnisses von {Mu1#, Add#, Reg#} an {...} und „{a#} → {...}" die Weitergabe von
a# an {...}.
- 1. Zyklus: a0,
b0 → mul1 → Reg2; a3, b3 → Reg2;
- 2. Zyklus: a1, b1 → mul2 → Add3; Reg2 → Add3; Add3 → Reg2; a4, b4 → mul1 → Add2; Reg3 → Add2; Add2 → Reg3
- 3. Zyklus: a2, b2 → mul3 → Add1; Reg2 → Add1; Add1 → Reg1, a5, b5 → mul1 → Add2; Reg3 → Add2; Add2 → Reg2;
- 4. Zyklus: Reg1 → OUT1;
Reg2 → add1;
Reg → Add1;
Add1 → Reg1;
- 5. Zyklus: Reg1 → OUT1
wobei
bei vorhergehendem Beispiel angenommen wurde, dass neben dem Multiplexer 102 ein
weiterer Multiplexer existiert, der gleichzeitig zu dem Multiplexer 102 ein
weiteres Paar von Eingangsvariablen an ein weiteres Paar von Dateneingängen eines
anderes Multiplizierers anlegen kann.
-
Obiges
Beispiel kann natürlich
erweitert werden. So könnte
die Vorrichtung 100 natürlich
getrennte Berechnungen gleichzeitig an den Recheneinheiten durchführen, indem
er die Zwischenergebnisse dieser Berechnungen zeitgleich durch die
Recheneinheiten schleust, von denen je immer nur eine für eine Berechung aktiv
ist und die jeweils anderen damit für andere Berechnungen frei
sind.
-
Es
ist folglich auch bei dem Ausführungsbeispiel
von 6 möglich, nicht
nur ein Algorithmus auf einmal durchzuführen, sondern mehrere Berechungen
des gleichen Algorithmus oder sogar verschiedene Algorithmen zeitgleich
parallel auszuführen,
wenn berücksichtigt
wird, dass ein Zwischenergebnis einer Recheneinheit nur an eine
freie, d.h. inaktive, Recheinheit weitergeleitet werden kann, und
dass ein und dieselbe Recheneinheit bei einem folgenden Rechenzyklus
nur eine Berechnung und nicht mehrere verschiedene Berechnungen
in einem Algorithmus oder verschiedenen Algorithmen ausführen kann.
Die Zuordnung von einem Rechenschritt zu einer einzelnen Berech nung
wird für
einen Unberechtigten damit erschwert. Im Gegensatz zu dem in 1 dargestellten einzelnen
sequentiellen Ablauf, sind also mehrere parallel laufende Berechnungen sogar
noch sicherer, da sie die Zuordnung erschweren.
-
Es
wird darauf hingewiesen, dass inaktive Komponenten unter den Verarbeitungseinrichtungen,
also die die keine Operation im Rahmen einer oder mehrerer auf der
Vorrichtung laufenden Algorithmen, auch Dummy-Operationen ausführen kann,
um die Verfolgbarkeit des oder der Datenpfade der laufenden Algorithmen zu
erschweren.
-
Abhängig von
den insgesamten Gegebenheiten kann das erfindungsgemäße Verfahren
zur Durchführung
eines Algorithmus in Hardware oder in Software implementiert werden.
Die Implementierung kann auf einem digitalen Speichermedium, insbesondere
einer Diskette oder CD mit elektronisch auslesbaren Steuersignalen,
erfolgen, die so mit einem programmierbaren Computersystem zusammenwirken
können,
dass das Verfahren ausgeführt
wird. Allgemein besteht die Erfindung somit auch in einem Computer-Programm-Produkt mit
einem auf einem maschinenlesbaren Träger gespeicherten Programmcode
zur Durchführung
des erfindungsgemäßen Verfahrens,
wenn das Computer-Programm-Produkt
auf einem Rechner abläuft.
In anderen Worten ausgedrückt
kann die Erfindung somit als ein Computer-Programm mit einem Programmcode
zur Durchführung
des Verfahrens realisiert werden, wenn das Computer-Programm auf
einem Computer abläuft.
-
- 10
- Algorithmus
- 20
- Algorithmusdurchführungsvorrichtung
- 22
- Allzweckverarbeitungseinrichtung
- 24a
- Verarbeitungseinrichtung
- 24b
- Verarbeitungseinrichtung
- 30
- Algorithmusdurchführungsvorrichtung
- 32a
- Verarbeitungseinrichtung
- 32b
- Verarbeitungseinrichtung
- 32c
- Verarbeitungseinrichtung
- 34
- Multiplexer
- 36
- Auswahlsteuerung
- 38
- Zwischenergebnis
- 40
- Ergebnis
- 50a–52c
- Recheneinheit
- 50
- Steuereinrichtung
- 60
- Entscheidungseinrichtung
- 100
- MAC
- 102
- Multiplexer
- 104
- Steuereinrichtung
- MUL1–MUL3
- Multiplizierer
- ADD1–ADD3
- Addierer
- REG1–REG3
- Akkumulator