DE10338435A1 - Schaltung zur Durchführung eines Algorithmus - Google Patents

Schaltung zur Durchführung eines Algorithmus Download PDF

Info

Publication number
DE10338435A1
DE10338435A1 DE10338435A DE10338435A DE10338435A1 DE 10338435 A1 DE10338435 A1 DE 10338435A1 DE 10338435 A DE10338435 A DE 10338435A DE 10338435 A DE10338435 A DE 10338435A DE 10338435 A1 DE10338435 A1 DE 10338435A1
Authority
DE
Germany
Prior art keywords
algorithm
processing
operations
result
selection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE10338435A
Other languages
English (en)
Other versions
DE10338435B4 (de
Inventor
Michael Smola
Gerd Dirscherl
Berndt Gammel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE10338435A priority Critical patent/DE10338435B4/de
Publication of DE10338435A1 publication Critical patent/DE10338435A1/de
Application granted granted Critical
Publication of DE10338435B4 publication Critical patent/DE10338435B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

Eine Schaltung zur Durchführung eines Algorithmus, der zumindest zwei aufeinanderfolgende Algorithmusoperationen aufweist, wobei ein Ergebnis einer Algorithmusoperation einen Eingangswert (38) darstellt, mit dem die gemäß dem Algorithmus nachfolgende Algorithmusoperation durchzuführen ist, umfasst eine erste Verarbeitungseinrichtung (32a), die in der Lage ist, eine vorbestimmte Algorithmusoperationen durchzuführen, eine zweite Verarbeitungseinrichtung (32b), die in der Lage ist, die vorbestimmte Algorithmusoperation durchzuführen, eine Einrichtung (36) zum Auswählen einer Verarbeitungseinrichtung unter der ersten und der zweiten Verarbeitungseinrichtung (32a, 32b), und eine Einrichtung (34) zum Zuführen des Eingangswertes (38) an die ausgewählte Verarbeitungseinrichtung zur Durchführung der vorbestimmten Algorithmusoperation mit dem Eingangswert, um eine Ergebnis (40) für die vorbestimmte Algorithmusoperation zu erhalten. Durch die für einen Angreifer nicht nachvollziehbare Auswahl einer Verarbeitungseinrichtung unter mehreren Verarbeitungseinrichtungen werden Angriffe insbesondere durch Sonden etc. auf die Schaltung erschwert.

Description

  • 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 26 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 32a32c 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 32a32c 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 32a32c 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 32a32c 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 32a32c 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 32a32c in der Lage ist.
  • Die Auswahlsteuerung 36 wählt nun unter den Verarbeitungseinrichtungen 32a32c 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 32A32C 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 32a32c. 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 32a32c 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 32a32c 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 32a32c 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 32a32c 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 32a32c 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 32a32c 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. 50a52c sowie eine Steuereinrichtung 50. In diesem Ausführungsbeispiel sind die Recheneinheiten 50a52c 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 50a52c durchgeführt werden könnte.
  • Die Recheneinheiten 50a52c 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 50a52c 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 50a52c 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 50a52c ausgibt. In der Realisierung der Schaltung von 4 steuern beispielsweise die Steuersignale si ausgangsseitig angeordnete Multiplexer in den Einheiten 50a52c.
  • Die Steuereinrichtung 50 gibt ferner ein Signal INfirst aus, mit welchem die Steuereinrichtung 50 in der Lage ist, diejenige Einheit unter den Einheiten 50a52c 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 50a52c aus, entlang welchem die Durchführung des Algorithmus durchgeführt werden soll. In 4 ist mit den Pfeilen zwischen den Recheneinheiten 50a52c 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 50a52c 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 50a52c 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 50a52c ist. Umgekehrt könnte bei obigen Ausführungsbeispiel das Steuersignal INfirst weggelassen werden, wenn lediglich eine Recheneinheit unter den Recheneinheiten 50a52c 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 50a52c. 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 50a52c 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 50a52c 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 50a52c 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 50a52c 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 50a52c, 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 50a52c 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 50a52c 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 50a52c 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 50a52c 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 50a52c einer Recheneinheit nicht zwei Algorithmusoperationsdurchführungen zugewiesen werden. Die Entscheidungseinrichtung 60 verhindert somit Verklemmungen in der Anordnung von Recheneinheiten 50a52c. 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 50a52c 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 50a52c 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
    Figure 00210001
    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

Claims (11)

  1. Schaltung zur Durchführung eines Algorithmus, der zumindest zwei aufeinanderfolgende Algorithmusoperationen aufweist, wobei ein Ergebnis einer Algorithmusoperation einen Eingangswert (38) darstellt, mit dem die gemäß dem Algorithmus nachfolgende Algorithmusoperation durchzuführen ist, mit einer ersten Verarbeitungseinrichtung (32a), die in der Lage ist, eine vorbestimmte der Algorithmusoperationen durchzuführen; einer zweiten Verarbeitungseinrichtung (32b), die in der Lage ist, die vorbestimmte Algorithmusoperation durchzuführen; eine Einrichtung (36) zum Auswählen einer Verarbeitungseinrichtung unter der ersten und der zweiten Verarbeitungseinrichtung (32a, 32b); und einer Einrichtung (34) zum Zuführen des Eingangswertes (38) an die ausgewählte Verarbeitungseinrichtung zur Durchführung der vorbestimmten Algorithmusoperation mit dem Eingangswert, um ein Ergebnis (40) für die vorbestimmte Algorithmusoperation zu erhalten.
  2. Schaltung gemäß Anspruch 1, bei der die Einrichtung zum Auswählen ausgebildet ist, um die Auswahl für jede Durchführung des Algorithmus neu durchzuführen.
  3. Schaltung gemäß Anspruch 1 oder 2, bei der die Einrichtung zum Auswählen ausgebildet ist, um die Auswahl unter der ersten und der zweiten Verarbeitungseinrichtung zufällig zu treffen.
  4. Schaltung gemäß einem der Ansprüche 1 bis 3, bei der die Einrichtung zum Auswählen so ausgebildet ist, um die Auswahl unter einer Mehrzahl von Verarbeitungseinrichtungen zu tref fen, derart, dass die Auswahl nur unter denjenigen Verarbeitungseinrichtungen getroffen wird, die gerade inaktiv sind.
  5. Schaltung gemäß einem der vorhergehenden Ansprüche, bei der die Schaltung in einem Chip integriert ist und die Verarbeitungseinrichtungen über die Fläche des Chips verteilt angeordnet sind.
  6. Schaltung gemäß einem der vorhergehenden Ansprüche, bei der jede Verarbeitungseinrichtung zur Durchführung jeder der Algorithmusoperationen in der Lage ist, und wobei die Einrichtung zum Auswählen ausgebildet ist, um für die Durchführung jeder Algorithmusoperation des Algorithmus unter Verwendung des Ergebnisses einer Verarbeitungseinrichtung für eine vorhergehende Algorithmusoperation des Algorithmus eine Auswahl unter den Verarbeitungseinrichtungen zu treffen.
  7. Schaltung gemäß Anspruch 6, die ferner ein Bussystem aufweist, das jede der Verarbeitungseinrichtungen mit jeweils einem Teil der übrigen Verarbeitungseinrichtungen zur Zuführung des Ergebnisses von demselben als Eingangswert verbindet, wobei die Einrichtung zum Auswählen ausgebildet ist, um die Auswahl unter den Verarbeitungseinrichtungen nur unter denjenigen zu treffen, die mit der Verarbeitungseinrichtung, die das Ergebnis für die vorhergehende Algorithmusoperation aufweist, verbunden sind.
  8. Schaltung gemäß Anspruch 6 oder 7, bei der die Einrichtung zum Auswählen ausgebildet ist, um die Auswahl unmittelbar vor jeder nachfolgenden Algorithmusoperation neu durchzuführen.
  9. Schaltung gemäß Anspruch 6, bei der die Einrichtung zum Auswählen ausgebildet ist, um die Auswahl vor der Durchführung des Algorithmus für alle Algorithmusoperationen durchzuführen.
  10. Verfahren zur Durchführung eines Algorithmus, der zumindest zwei aufeinanderfolgende Algorithmusoperationen aufweist, wobei ein Ergebnis einer Algorithmusoperation einen Eingangswert darstellt, mit dem gemäß dem Algorithmus die nachfolgende Algorithmusoperation durchzuführen ist, unter Verwendung einer ersten Verarbeitungseinrichtung (32a), die in der Lage ist, eine vorbestimmte der Algorithmusoperationen durchzuführen, und einer zweiten Verarbeitungseinrichtung (32b), die in der Lage ist, die vorbestimmte Algorithmusoperation durchzuführen, mit folgenden Schritten: Auswählen (36) einer Verarbeitungseinrichtung unter der ersten und der zweiten Verarbeitungseinrichtung; und Zuführen (34) eines Eingangswertes (38) an die ausgewählte Verarbeitungseinrichtung zur Durchführung der vorbestimmten Algorithmusoperation mit dem Eingangswert, um ein Ergebnis (40) für die vorbestimmte Algorithmusoperation zu erhalten.
  11. Computer-Programm mit einem Programmcode zum Durchführen des Verfahrens nach Anspruch 11, wenn das Programm auf einem Computer abläuft.
DE10338435A 2003-08-18 2003-08-18 Schaltung zur Durchführung eines Algorithmus Expired - Fee Related DE10338435B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE10338435A DE10338435B4 (de) 2003-08-18 2003-08-18 Schaltung zur Durchführung eines Algorithmus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10338435A DE10338435B4 (de) 2003-08-18 2003-08-18 Schaltung zur Durchführung eines Algorithmus

Publications (2)

Publication Number Publication Date
DE10338435A1 true DE10338435A1 (de) 2005-04-14
DE10338435B4 DE10338435B4 (de) 2008-12-11

Family

ID=34305547

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10338435A Expired - Fee Related DE10338435B4 (de) 2003-08-18 2003-08-18 Schaltung zur Durchführung eines Algorithmus

Country Status (1)

Country Link
DE (1) DE10338435B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2624296A1 (de) * 2012-02-06 2013-08-07 Altis Semiconductor Schutz eines integrierten Schaltkreises gegen invasive Angriffe

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3950638B2 (ja) * 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Das Herz", Motorola 1990, S. 105-110 *
IBM-Bulletin, Vol. 13, No. 5, Okt. 1976, S. 1818-1820 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2624296A1 (de) * 2012-02-06 2013-08-07 Altis Semiconductor Schutz eines integrierten Schaltkreises gegen invasive Angriffe
FR2986632A1 (fr) * 2012-02-06 2013-08-09 Altis Semiconductor Snc Protection d'un circuit integre contre des attaques invasives

Also Published As

Publication number Publication date
DE10338435B4 (de) 2008-12-11

Similar Documents

Publication Publication Date Title
DE10339999B4 (de) Pseudozufallszahlengenerator
DE60217260T2 (de) Datenverarbeitungs- und Verschlüsselungseinheit
DE102005010779B4 (de) Schlüsseldispositionsvorrichtung und System zur Ver-/Entschlüsselung von Daten
WO2006092448A2 (de) Verfahren und vorrichtung zum berechnen einer polynom-multiplikation, insbesondere für die elliptische kurven-kryptographie
DE102007007699A1 (de) Reduktion von Seiten-Kanal-Informationen durch interagierende Krypto-Blocks
EP0981115B1 (de) Verfahren zur Ausführung eines Verschlüsselungsprogramms zur Verschlüsselung von Daten in einem mikroprozessorgestützten, tragbaren Datenträger
DE102004042826B4 (de) Verfahren und Vorrichtung zur Datenverschlüsselung
DE10347455B4 (de) Pseudozufallszahlengenerator für einen Stream Cipher
EP2790078A1 (de) Manipulationssicheres Regeln einer Prozess- und/oder Fertigungs- und/oder Stellanlage
DE102004013480B4 (de) Zufallszahlengenerator und Verfahren zum Erzeugen von Zufallszahlen
EP1324188A2 (de) Verfahren zum Multiplizieren zweier Faktoren aus dem Galois-Feld sowie Multiplizierer zum Durchführen des Verfahrens
WO2016071523A1 (de) Vorrichtung und verfahren zur multiplikation zur erschwerung von seitenkanalangriffen
DE10338435B4 (de) Schaltung zur Durchführung eines Algorithmus
DE102006037016B4 (de) Pseudo-Zufallszahlengenerator für eine Chipkarte
DE69909118T9 (de) Vorrichtung und verfahren zur sicherung einer integrierten schaltung
DE102004010666A1 (de) Schlüsselbitstromerzeugung
DE102004037814A1 (de) Vorrichtung und Verfahren zum Erzeugen einer Folge von Zahlen
EP3734486B1 (de) Computerimplementiertes verfahren zum ersetzen eines datenstrings
DE10129241B4 (de) Multifunktionaler Rechner
DE10201443B4 (de) Carry-Save-Multiplizierer für verschlüsselte Daten
DE10303723A1 (de) Vorrichtung und Verfahren zum Berechnen von verschlüsselten Daten aus unverschlüsselten Daten oder von unverschlüsselten Daten aus verschlüsselten Daten
DE102004042756B3 (de) Verfahren und Anordnung zur Erzeugung von Pseudozufallszahlen
EP1294143A2 (de) Gekennzeichneter Prioritätwarteschlangescheduler
EP1510034B1 (de) Vorrichtung und Verfahren zum Durchführen eines Kryptoalgorithmus
DE102004023902A1 (de) Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee