DE102021101697B3 - Datenverarbeitungsvorrichtung und verfahren zum verarbeiten geheimer daten - Google Patents

Datenverarbeitungsvorrichtung und verfahren zum verarbeiten geheimer daten Download PDF

Info

Publication number
DE102021101697B3
DE102021101697B3 DE102021101697.5A DE102021101697A DE102021101697B3 DE 102021101697 B3 DE102021101697 B3 DE 102021101697B3 DE 102021101697 A DE102021101697 A DE 102021101697A DE 102021101697 B3 DE102021101697 B3 DE 102021101697B3
Authority
DE
Germany
Prior art keywords
portions
operations
data
processing device
sequence
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.)
Active
Application number
DE102021101697.5A
Other languages
English (en)
Inventor
Martin Schlaeffer
Osama AMIN
Elif Bilge Kavun
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 DE102021101697.5A priority Critical patent/DE102021101697B3/de
Priority to US17/574,779 priority patent/US20220237304A1/en
Application granted granted Critical
Publication of DE102021101697B3 publication Critical patent/DE102021101697B3/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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
    • 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/75Protecting 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 by inhibiting the analysis of circuitry or operation
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1009Data masking during input/output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing

Abstract

Gemäß verschiedenen Ausführungsformen wird eine Datenverarbeitungsvorrichtung beschrieben, die einen Speicher, der so konfiguriert ist, dass er Datenwörter in Form von mindestens zwei jeweiligen Anteilen speichert, eine Logikschaltung, die so konfiguriert ist, dass sie die mindestens zwei Anteile von mindestens einem der Datenwörter empfängt und die Anteile verarbeitet, um mindestens zwei Anteile eines Ergebnisdatenworts zu erzeugen, eine Remaskierungs-Schaltung, die so konfiguriert ist, dass sie mindestens zwei Anteile von mindestens einem der Datenwörter empfängt und die Anteile auffrischt, und eine Ausgangsschaltung, die so konfiguriert ist, dass sie die mindestens zwei Anteile des Ergebnisdatenworts speichert oder die aufgefrischten mindestens zwei Anteile speichert in Abhängigkeit von einer Steuersequenz, die eine Sequenz von echten Operationen und Dummy-Operationen angibt.

Description

  • Die vorliegende Offenlegung bezieht sich auf Datenverarbeitungsvorrichtungen und Verfahren zum Verarbeiten geheimer Daten.
  • Elektronische Vorrichtungen, die sichere Daten, wie z. B. kryptografische Schlüssel, verarbeiten, sollten gegen Angriffe wie Fehlerangriffe und Seitenkanalanalysen geschützt werden. Ein Ansatz zur Abwehr von Angriffen ist die Einführung von Dummy-Berechnungen, die in einen Verarbeitungsablauf eingefügt werden. Die Implementierung von Dummy-Berechnungen ist jedoch mit mehreren Herausforderungen verbunden: Sie müssen sich genauso verhalten wie echte Operationen (d. h. Nicht-Dummy-Operationen), es müssen Dummy-Daten bereitgestellt werden, die in Dummy-Operationen verarbeitet werden sollen, und die Speicherung der Ergebnisse von Dummy-Operationen führt zu zusätzlichem Speicher-Overhead.
  • In der Veröffentlichung „A Tale of Two Shares: Why Two-Share Threshold Implementation Seems Worthwhile - and Why it is Not.“ von Chen, C. et al, in International Conference on the Theory and Application of Cryptology and Information Security, in Cheon, J., Takagi, T. (eds), Advances in Cryptology - ASIACRYPT 2016, Lecture Notes in Computer Science, Vol. 10031, S. 819-843, Springer, Berlin, Heidelberg diskutiert den Seitenkanalschutz mittels Zerlegung von Daten in zwei Anteile (Shares).
  • Die Druckschrift US 2011 / 0 261 958 A1 beschreibt die Verwendung von aufgeteilten maskierten Substitutionstabellen gegen kryptographische Angriffe.
  • Die Veröffentlichungen US 2002 / 0 002 671 A1 und GB 2 362 731 A beschreiben eine parallele Verarbeitung von mehreren Datenwerten innerhalb eines Datenworts.
  • Der Erfindung liegt die Aufgabe zu Grunde, Dummy-Operationen in einem Sicherheitskontext zum Schutz gegen Angriffe mit geringem Speicher-Overhead zu implementieren.
  • Die Aufgabe wird durch die Gegenstände der unabhängigen Patentansprüche gelöst.
  • In den Zeichnungen beziehen sich ähnliche Bezugszeichen im Allgemeinen auf dieselben Teile in den verschiedenen Ansichten. Die Zeichnungen sind nicht notwendigerweise maßstabsgetreu, wobei der Schwerpunkt im Allgemeinen auf der Veranschaulichung der Prinzipien der Erfindung liegt. In der folgenden Beschreibung werden verschiedene Aspekte unter Bezugnahme auf die folgenden Zeichnungen beschrieben, in denen:
    • 1 zeigt ein Beispiel für eine Verarbeitungsvorrichtung.
    • 2 zeigt eine Verarbeitungsschaltung gemäß einer Ausführungsform.
    • 3 zeigt eine Datenverarbeitungsvorrichtung gemäß einer Ausführungsform.
    • 4 zeigt ein Flussdiagramm, das ein Verfahren zum Verarbeiten von (zumindest teilweise geheimen) Daten gemäß einer Ausführungsform veranschaulicht.
  • Die folgende detaillierte Beschreibung bezieht sich auf die beigefügten Zeichnungen, die zur Veranschaulichung bestimmte Details und Aspekte dieser Offenbarung zeigen, in denen die Erfindung ausgeführt werden kann. Andere Aspekte können verwendet werden, und strukturelle, logische und elektrische Änderungen können vorgenommen werden, ohne vom Anwendungsbereich der Erfindung abzuweichen. Die verschiedenen Aspekte dieser Offenbarung schließen sich nicht unbedingt gegenseitig aus, da einige Aspekte dieser Offenbarung mit einem oder mehreren anderen Aspekten dieser Offenbarung kombiniert werden können, um neue Aspekte zu bilden.
  • Die hier beschriebenen Ausführungsformen können durch eine Verarbeitungsvorrichtung wie einen Personalcomputer, einen Mikrocontroller, eine Smartcard (mit beliebigem Formfaktor), einen sicheren Mikrocontroller, einen Hardware Root of Trust, ein (eingebettetes) sicheres Element (ESE), ein Trusted Platform Module (TPM) oder ein Hardware-Sicherheitsmodul (HSM) realisiert werden.
  • 1 zeigt ein Beispiel für eine Verarbeitungsvorrichtung 100 mit einer CPU 101, einem RAM 102, einem nichtflüchtigen Speicher 103 (NVM), einem Kryptomodul 104, einem Analogmodul 106, einer Eingabe-/Ausgabeschnittstelle 107 und einem Hardware-Zufallszahlengenerator 112.
  • In diesem Beispiel hat die CPU 101 über einen gemeinsamen Bus 105, an den jedes Kryptomodul 104 angeschlossen ist, Zugriff auf mindestens ein Kryptomodul 104. Jedes Kryptomodul 104 kann insbesondere einen oder mehrere Kryptokerne enthalten, um bestimmte kryptografische Operationen durchzuführen. Beispielhafte Krypto-Kerne sind:
    • - ein AES-Kern 109,
    • - ein SHA-Kern 110,
    • - ein ECC-Kern 111, und
    • - ein gitterbasierter Kryptokern (LBC) 108.
  • Der gitterbasierte Kryptokern 108 kann zur Beschleunigung der gitterbasierten Kryptografie bereitgestellt werden.
  • Die CPU 101, der Hardware-Zufallszahlengenerator 112, das NVM 103, das Kryptomodul 104, das RAM 102 und die Eingangs-/Ausgangsschnittstelle 107 sind mit dem Bus 105 verbunden. Die Eingangs-/Ausgangsschnittstelle 107 kann eine Verbindung 113 zu anderen Vorrichtungen haben, die dem der Verarbeitungsvorrichtung 100 ähnlich sein können.
  • Das Analogmodul 106 wird über einen elektrischen Kontakt und/oder über ein elektromagnetisches Feld mit elektrischer Energie versorgt. Diese Energie wird zugeführt, um die Schaltungen der Verarbeitungsvorrichtung 100 zu versorgen und kann es insbesondere der Eingabe-/Ausgabeschnittstelle ermöglichen, Verbindungen zu anderen Vorrichtungen über den Anschluss 113 herzustellen und/oder aufrechtzuerhalten.
  • Der Bus 105 selbst kann maskiert oder in Klartext sein. Anweisungen zur Durchführung der im Folgenden beschriebenen Verarbeitungen und Algorithmen können insbesondere im NVM 103 gespeichert und von der CPU 105 verarbeitet werden. Die verarbeiteten Daten können im NVM 103 oder im RAM 102 gespeichert sein. Unterstützende Funktionen können von den Kryptomodulen 104 bereitgestellt werden (z. B. Expansion von Pseudozufallsdaten). Zufallszahlen werden durch den Hardware-Zufallszahlengenerator 112 bereitgestellt.
  • Zur Durchführung der im Folgenden beschriebenen Verfahren können Anweisungen im Kryptomodul 104 gespeichert sein oder von der CPU 101 über den Bus 105 bereitgestellt werden. Daten können lokal im Kryptomodul 104 gespeichert werden. Es ist auch möglich, dass die Daten im RAM 102 oder im NVM 103 zwischengespeichert werden.
  • Die im Folgenden beschriebenen Verarbeitungen und Algorithmen können ausschließlich oder zumindest teilweise auf dem Kryptomodul 104 oder auf der CPU 101 durchgeführt werden. Eine Verarbeitungsschaltung (wie das Kryptomodul 104 oder die CPU 101) kann mit hardwarebasierten Sicherheitsmerkmalen ausgestattet sein oder nicht. Bei solchen hardwarebasierten Sicherheitsmerkmalen kann es sich um Schaltungen handeln, die Gegenmaßnahmen gegen Seitenkanalleistungsanalyse oder Fehlerinjektion (z. B. mit einem Laser) implementieren, um zu verhindern, dass ein Angreifer Informationen über geheime Daten (wie kryptographische Schlüssel oder geheime Benutzerdaten) erhält. Solche Gegenmaßnahmen können durch die Verwendung von Zufälligkeit, redundanter Hardware oder redundanter Verarbeitung realisiert werden. Im Allgemeinen besteht das Ziel von Gegenmaßnahmen darin, die intern verarbeiteten Werte vor einem Angreifer zu verbergen, der in der Lage ist, die physikalische Wirkung der Verarbeitung solcher Werte zu beobachten.
  • Typische Konzepte zum Schutz der Berechnung geheimer Daten sind die zufällige Reihenfolge der Ausführung von Operationen (Verstecken), die Durchführung von Dummy-Operationen auf Dummy-Daten (Verstecken) und die Maskierung von Daten zur Durchführung zufälliger Berechnungen.
  • Um zu verhindern, dass ein Angreifer Dummy-Operationen von echten (d.h. nicht-dummy) Operationen unterscheiden kann, müssen sie das gleiche Verhalten wie echte Operationen haben (in Bezug auf das, was ein Angreifer überwachen kann). Daher kann es beispielsweise nicht ausreichen, dass Dummy-Ergebnisse zwar berechnet, aber nicht verwendet, d. h. insbesondere nicht gespeichert werden, da ein Angreifer die Speicherzugriffe überwachen kann. Die Bereitstellung von Dummy-Speicher (d. h. Speicher, der für die Speicherung von Dummy-Operationsergebnissen verwendet wird) führt jedoch zu zusätzlichem Chipflächen-Overhead. Darüber hinaus könnte ein Angreifer sogar in der Lage sein, Überwachungsspeicherplätze zu identifizieren, auf denen Verarbeitungsergebnisse gespeichert sind, so dass es möglicherweise nicht ausreicht, Dummy-Ergebnisse in separaten Speicherplätzen zu speichern, da ein Angreifer dann wiederum Dummy-Operationen identifizieren könnte. Vielmehr ist es wünschenswert, den Dummy-Speicher inmitten des echten Speichers (d. h. dem von echten Operationen verwendeten Speicher) zu verstecken. Darüber hinaus ist es wünschenswert, dass die Verarbeitungsvorrichtung Fehler in Dummy-Operationen erkennt. Dies ist, weil ein Angreifer Fehler in eine Operation einschleusen kann und, wenn ein eingeschleuster Fehler keinen Einfluss auf die Gesamtverarbeitung hat, zu dem Schluss kommen kann, dass es sich um eine Dummy-Operation handelt.
  • Die im Folgenden beschriebene Verarbeitung kann von einer Verarbeitungsschaltung wie der CPU 101 oder dem Kryptomodul 104 (z. B. einem Kryptokern) durchgeführt werden. Wenn auf einen Speicher Bezug genommen wird, kann es sich beispielsweise um RAM 102, aber auch um ein NVM 103 oder Prozessorregister (oder eine Kombination davon) handeln. Der Speicher kann ein Programm (z. B. zur Durchführung eines kryptografischen Verfahrens) mit Anweisungen zur Durchführung kryptografischer Operationen (z. B. Berechnungen) speichern und speichert Daten in Form von zu verarbeitenden Datenwörtern.
  • Gemäß verschiedenen Ausführungsformen sind die Operationen (z. B. alle Operationen) maskiert. Das bedeutet, dass die ein oder mehreren Datenwörter, die von einer Operation verarbeitet werden, jeweils in Anteile aufgeteilt werden.
  • Beispielsweise operiert eine Operation zum Berechnen einer Funktion F auf einem Datenwort a. Das Eingabewort a wird gemäß einer XOR-Verknüpfung in zwei Anteile a0 und a1 aufgeteilt, d. h. a = a0 ^ a1 (wobei ^ für XOR steht). Die Aufspaltung in Anteile ist nicht auf XOR beschränkt. XOR ist nur ein Beispiel, und beispielsweise ist auch eine auf Arithmetik (Addition) basierende Maskierung möglich. Außerdem führt die Verarbeitungsschaltung die Operation so aus, dass das Ausgangswort b = F(a) ebenfalls maskiert ist, d. h. b = b0 ^ b1. Die Datenwörter werden z. B. in maskierter Form im Speicher abgelegt, d. h. die Anteile werden gespeichert (z. B. a wird als Paar von Datenwörtern a0, a1 gespeichert). Ein Datenwort kann remaskiert werden. Dies bedeutet, dass die Anteile neu berechnet werden. Zum Beispiel wird das Paar a0, a1 in a0', a1' geändert, wobei a0 ^ a1 = a0' ^ a1'. Dies wird als Remaskierungsoperation (oder Berechnung) bezeichnet und kann durch XOR-Verknüpfung von a0 und a1 mit einem Zufallswert (dem so genannten Maskenauffrischungswert) r erfolgen, d. h. a0' = a0 ^ r und a1' = a1 ^ r.
  • In verschiedenen Ausführungsformen verwendet die Verarbeitungsschaltung außerdem eine zufällige Ausführungsreihenfolge für die Operation (soweit dies möglich ist). Außerdem führt die Verarbeitungsschaltung zwischen den Phasen, in denen sie echte Operationen (R) ausführt, Dummy-Phasen ein, in denen sie Dummy-Operationen (D) durchführt. Eine Sequenz von Operationen kann zum Beispiel D-D-R-R-D-D sein.
  • Gemäß verschiedenen Ausführungsformen führt die Verarbeitungsschaltung sowohl eine echte Operation als auch eine Remaskierungsoperation (für ein in der echten Operation verarbeitetes Datenwort) parallel durch (z. B. zumindest teilweise während desselben oder mehrerer Prozessor-Taktzyklen). Die Remaskierungsoperation dient als Dummy-Operation, und ein Multiplexer wählt zwischen der Remaskierungsoperation und der echten Operation aus, d. h. er wählt aus, welches Verarbeitungsergebnis ausgegeben (und im Speicher abgelegt) wird. Zum Beispiel: (b0[i]^b1[i]) = MUX((a0[i]^r, a1[i]^r), F(a0[i]^r, a1[i]^r)) Hier kann i eine zufällige positive ganze Zahl sein, um die Reihenfolge der Ausführung zu randomisieren.
  • Ein Beispiel wird im Folgenden näher beschrieben.
  • 2 zeigt eine Verarbeitungsschaltung 200 gemäß einer Ausführungsform.
  • Die Verarbeitungsschaltung 200 umfasst einige (in diesem Beispiel zwei) parallele Verarbeitungsblöcke (z. B. Schaltungen) 201, 202 zur Berechnung des Ausgangswertes einer Funktion F eines Eingangswertes.
  • Wie oben wird das Eingabewort als a bezeichnet, das (zufällig) in Anteile a0 und a1 aufgeteilt wird, und das Ausgabewort wird als b bezeichnet, das (zufällig) in Anteile b0 und b1 aufgeteilt wird.
  • Die Verarbeitungsblöcke 201 und 202 berechnen F(a0) bzw. F(a1).
  • Die Verarbeitungsschaltung 200 umfasst außerdem Maskenauffrischungsschaltungen 203, 204. Die Maskenauffrischungsschaltungen 203, 204 empfangen einen Maskenauffrischungswert r und berechnen a0' = a0 ^ r bzw. a1' = a1 ^ r.
  • Ein erster Multiplexer 205 empfängt die Ausgaben des ersten Verarbeitungsblocks 201 und der ersten Maskierungsschaltung 203. Er empfängt einen Steuerwert, der angibt, ob eine echte Operation durchgeführt werden soll (d. h. F(a0) ausgegeben werden soll) oder eine Dummy-Operation durchgeführt werden soll (d. h. a0' ausgegeben werden soll). Entsprechend gibt der erste Multiplexer 205 je nach Steuerwert b0 = F(a0) oder b0 = a0' aus.
  • In ähnlicher Weise empfängt ein zweiter Multiplexer 206 die Ausgaben des zweiten Verarbeitungsblocks 202 und der zweiten Maskierungsschaltung 204. Er empfängt den Steuerwert, der angibt, ob eine echte Operation ausgeführt werden soll (d.h. F(a1) soll ausgegeben werden) oder eine Dummy-Operation (d.h. a1' soll ausgegeben werden). Dementsprechend gibt der zweite Multiplexer 206 je nach dem Steuerwert b1 = F(a1) oder b1 = a1' aus.
  • Der Steuerwert kann ein Steuerwert einer (zufälligen) Sequenz von Steuerwerten (d. h. einer Steuersequenz) sein. Die Steuersequenz spezifiziert somit eine Sequenz von echten Operationen und Dummy-Operationen. Zusammen mit dem Wert i gibt die Steuersequenz also eine Sequenz von Operationen an. Eine resultierende Sequenz von Operationen kann zum Beispiel sein D [ 2 ] D [ 3 ] D [ 0 ] R [ 3 ] R [ 0 ] R [ 1 ] R [ 2 ] D [ 1 ]
    Figure DE102021101697B3_0001
  • Die Verarbeitungsschaltung 200 speichert die Ausgangsanteile b0, b1 im Speicher. Für eine echte Operation b = F(a) = b0 ^ b1 = F(a0) ^ F(a1) = F(a0 ^ a1).
  • Für eine Dummy-Operation b = a0' ^ a1'.
  • Die Ausgangsanteile b0, b1 können zum Beispiel an der Stelle der Eingangsanteile a0, a1 gespeichert werden. So kann im Falle einer Dummy-Operation die Verarbeitung wie gewohnt fortgesetzt werden, da die Dummy-Operation nur eine Remaskierung durchgeführt hat. Außerdem wird ein Angriff auf die Dummy-Operation wahrscheinlich das Programmverhalten ändern, da es wahrscheinlich einen Fehler im Datenwort gibt.
  • Die Ausgangsanteile b0, b1 können auch an einem anderen Speicherplatz abgelegt werden. Dazu kann die Verarbeitungsschaltung den Speicherplatz verfolgen, um sicherzustellen, dass der Operand a aus dem Speicher gelesen wird, wenn es sich bei der Operation um eine Dummy-Operation handelt und der Operand a in einer späteren Operation verarbeitet werden soll.
  • Es sei darauf hingewiesen, dass F (optional) eine Remaskierung beinhalten kann, d. h. die Verarbeitungsblöcke 201, 202 können jeweils den Maskenauffrischungswert erhalten, und die Funktion F kann von dem Maskenauffrischungswert abhängen.
  • Eine Funktion F kann auch zwei Eingangsoperanden haben. In diesem Fall operieren die Remaskierungs-Schaltungen 203, 204 auf dem Operanden an dem Speicherplatz, an dem das Ergebnis gespeichert ist. Wenn beispielsweise b = F (a, c) und b an der Speicherstelle von a gespeichert ist, führt die Remaskierungs-Schaltungen 203, 204 eine Remaskierung von a durch und c bleibt unverändert. Eine Operation kann auch mehrere Datenwörter gleichzeitig verarbeiten, so dass (b, d) = (F(a), F(c)). Dies kann durch zwei parallele Verarbeitungsschaltungen realisiert werden, wie in 2 dargestellt.
  • Eine andere Möglichkeit ist, dass ein erstes Datenwort a zu einem Ergebnisdatenwort verarbeitet wird, z. B. b = F(a) für eine echte Berechnung, ein zweites Datenwort c wird remaskiert, d. h. b = remask(c) für eine Dummy-Berechnung. Für die echte Berechnung kann b an der Speicherstelle von a gespeichert werden, und für die Dummy-Berechnung wird b an der Speicherstelle von c gespeichert.
  • Ferner können mehrere Operationen verkettet werden, um beispielsweise mehrere Datenwörter zu verarbeiten (z. B. wenn ein Schlüssel verarbeitet werden muss, der mehrere Datenwörter enthält). Für eine solche Sequenz von Operationen kann dann durch die Steuersequenz gesteuert werden, ob echte Operationen oder Dummy-Operationen durchgeführt werden (für die gesamte Sequenz). Auf diese Weise können die Daten im Speicher konsistent gehalten werden.
  • Die Verarbeitungsvorrichtung kann die tatsächlich ausgeführten echten Operationen verfolgen, um sicherzustellen, dass das gesamte Programm korrekt ausgeführt wird. Außerdem kann sie die Reihenfolge der echten Operationen einschränken, um sicherzustellen, dass das Programm korrekt ausgeführt wird.
  • Die Operation F kann z. B. eine Operation einer AES (Advanced Encryption Standard) SubBytes-Schicht sein. Eine echte Operation ist z. B. die Berechnung einer maskierten S-Box (1 Byte) und die Dummy-Operation ist die Remaskierung von 1 Byte. Wie oben erläutert, wird in beiden Fällen das Ergebnis in den Speicher geschrieben.
  • Gemäß verschiedenen Ausführungsformen werden mehrere verschiedene echte Operationen in der oben beschriebenen Weise verwendet, so dass zusätzlich ein Verstecken mittels verschiedener echter Operationen erfolgt.
  • In der AES-SubBytes- und MixBytes-Schicht kann beispielsweise eine erste echte Operation die Berechnung einer maskierten S-Box (1 Byte) und eine zweite Operation die Berechnung maskierter MixColumns (4 Bytes) sein, und die entsprechenden Dummy-Operationen sind die Remaskierung von 1 Byte und die Remaskierung einer 4-Byte-Spalte.
  • Zusammenfassend wird gemäß verschiedenen Ausführungsformen eine Datenverarbeitungsvorrichtung bereitgestellt, wie in 3 dargestellt.
  • 3 zeigt eine Datenverarbeitungsvorrichtung 300.
  • Die Datenverarbeitungsvorrichtung 300 umfasst einen Speicher 301, der so konfiguriert ist, dass er jedes Datenwort einer Mehrzahl von Datenwörtern in Form von mindestens zwei jeweiligen Anteilen speichert.
  • Ferner enthält die Datenverarbeitungsvorrichtung 300 eine Logikschaltung 302, die so konfiguriert ist, dass sie die mindestens zwei Anteile von mindestens einem der Datenwörter empfängt und die mindestens zwei Anteile (d. h. die, die sie empfangen hat) verarbeitet, um mindestens zwei Anteile eines Ergebnisdatenworts zu erzeugen.
  • Die Datenverarbeitungsvorrichtung 300 umfasst ferner eine Remaskierungs-Schaltung 303, die so konfiguriert ist, dass sie die mindestens zwei Anteile von mindestens einem der Datenwörter empfängt und die mindestens zwei Anteile (d. h. die, die sie empfangen hat) auffrischt.
  • Die Datenverarbeitungsvorrichtung 300 enthält ferner eine Ausgangsschaltung, die so konfiguriert ist, dass sie die mindestens zwei Anteile des Ergebnisdatenworts speichert oder die aufgefrischten mindestens zwei Anteile in Abhängigkeit von einer Steuersequenz speichert, die eine Sequenz von echten Operationen und Dummy-Operationen angibt.
  • Die Steuersequenz kann vorgegeben sein oder auch nicht, insbesondere kann die Reihenfolge der echten und der Dummy-Operationen zur Laufzeit randomisiert werden (d.h. die Steuersequenz kann zur Laufzeit bestimmt werden).
  • Die Logikschaltung und die Remaskierungs-Schaltung können dieselben Anteile erhalten, d. h. die Anteile desselben Datenworts (oder desselben oder mehrerer Datenwörter), und diese Anteile verarbeiten/auffrischen. Die Logikschaltung kann auch die Anteile von mehr Datenwörtern erhalten als die Remaskierungs-Schaltung (z. B. führt die Logikschaltung eine Operation mit zwei Operanden durch, während die Remaskierungs-Schaltung nur die Anteile eines Operanden auffrischt).
  • Gemäß verschiedenen Ausführungsformen führt eine Verarbeitungsvorrichtung sowohl eine Dummy-Operation als auch eine echte Operation an jedem Datenwort durch und verwendet (und speichert daher) nur das Ergebnis einer der beiden Operationen in Abhängigkeit von einer zufälligen Steuersequenz (d. h. entweder wird das Ergebnis einer Dummy-Operation oder das Ergebnis einer echten Operation gespeichert). Die Dummy-Operation ist eine Remaskierung des jeweiligen (echten) Datenworts, und das Remaskierungs-Ergebnis wird in den Speicher zurückgeschrieben. Die Dummy-Operationen operieren also auf den echten Daten, und die Ergebnisse der Dummy-Operationen werden in den Speicher zurückgeschrieben und verändern die echten (d. h. nicht-dummy) Daten. Dummy-Operationen sind also in Bezug auf die Speicherzugriffe nicht von echten Operationen zu unterscheiden.
  • Somit ermöglicht der Ansatz von 3 den Schutz durch Dummy-Operationen mit geringem Flächenaufwand (da keine zusätzlichen Dummy-Daten gespeichert werden müssen) und ohne die Notwendigkeit, Dummy-Speicher zwischen dem echten Speicher einzubauen.
  • 4 zeigt ein Flussdiagramm 400, das ein Verfahren zum Verarbeiten von (zumindest teilweise geheimen) Daten veranschaulicht.
  • In 401 wird jedes Datenwort einer Mehrzahl von Datenwörtern in Form von mindestens zwei jeweiligen Anteilen gespeichert.
  • In 402 werden die mindestens zwei Anteile von mindestens einem der Datenwörter verarbeitet, um mindestens zwei Anteile eines Ergebnisdatenworts zu erzeugen, und die mindestens zwei Anteile von mindestens einem der Datenwörter werden aufgefrischt (d. h. das mindestens eine der Datenwörter wird neu maskiert).
  • In 403 werden (entweder) die mindestens zwei Anteile des Ergebnisdatenworts oder die aufgefrischten mindestens zwei Anteile gespeichert, abhängig von einer Steuersequenz, die eine Sequenz von echten Operationen und Dummy-Operationen festlegt.
  • Im Folgenden werden verschiedene Beispiele beschrieben:
    • Beispiel 1 ist eine Datenverarbeitungsvorrichtung wie in 3 dargestellt.
    • Beispiel 2 ist die Datenverarbeitungsvorrichtung von Beispiel 1, wobei die Logikschaltung so konfiguriert ist, dass sie für jede Operation einer Sequenz von Operationen die mindestens zwei Anteile von mindestens einem der Datenwörter empfängt und die mindestens zwei Anteile entsprechend der Operation verarbeitet, um mindestens zwei Anteile eines Ergebnisdatenworts zu erzeugen, die Remaskierungs-Schaltung so konfiguriert ist, dass sie die mindestens zwei Anteile von mindestens einem der Datenwörter empfängt und die mindestens zwei Anteile auffrischt, und die Ausgangsschaltung so konfiguriert ist, dass sie die mindestens zwei Anteile des Ergebnisdatenworts speichert oder die aufgefrischten mindestens zwei Anteile in Abhängigkeit von der Steuersequenz speichert.
    • Beispiel 3 ist die Datenverarbeitungsvorrichtung von Beispiel 2, bei der zumindest manche Operationen der Sequenz von Operationen Nicht-Dummy-Operationen sind.
    • Beispiel 4 ist die Datenverarbeitungsvorrichtung von Beispiel 2 oder 3, wobei die Steuersequenz für jede Operation der Sequenz von Operationen angibt, ob eine echte Operation oder eine Dummy-Operation ausgeführt werden soll.
    • Beispiel 5 ist die Datenverarbeitungsvorrichtung von Beispiel 4, wobei die Operationen, für die die Steuersequenz angibt, dass eine echte Operation auszuführen ist, Nicht-Dummy-Operationen sind.
    • Beispiel 6 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 2 bis 5, die eine Steuerschaltung enthält, die so konfiguriert ist, dass sie eine Reihenfolge der Sequenz von Operationen festlegt.
    • Beispiel 7 ist die Datenverarbeitungsvorrichtung von Beispiel 6, die einen Zufallszahlengenerator enthält, wobei die Steuerschaltung so konfiguriert ist, dass sie die Reihenfolge der Sequenz von Operationen auf der Grundlage einer oder mehrerer Zufallszahlen festlegt, die von dem Zufallszahlengenerator bereitgestellt werden.
    • Beispiel 8 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 7, wobei die Steuersequenz einen Steuerwert für jede Operation einer Sequenz von Operationen enthält und die Ausgangsschaltung so konfiguriert ist, dass sie die mindestens zwei Anteile des Ergebnisdatenworts speichert oder die aufgefrischten mindestens zwei Anteile speichert, abhängig von dem Steuerwert, den die Steuersequenz für eine Operation enthält, nach der die Logikschaltung die mindestens zwei Anteile verarbeitet hat.
    • Beispiel 9 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 8, wobei die Datenverarbeitungsvorrichtung so konfiguriert ist, dass sie die mindestens zwei Anteile des Ergebnisdatenworts verwirft, falls die Steuersequenz für die Operation angibt, dass eine Dummy-Operation durchgeführt werden soll.
    • Beispiel 10 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 9, wobei die Datenverarbeitungsvorrichtung so konfiguriert ist, dass sie die mindestens zwei aufgefrischten Anteile verwirft, falls die Steuersequenz für die Operation angibt, dass eine echte Operation ausgeführt werden soll.
    • Beispiel 11 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 10, wobei die Sequenz von Operationen, für die die Steuersequenz angibt, dass eine echte Operation auszuführen ist, eine kryptographische Verarbeitung von Daten implementiert, die durch die Mehrzahl von Datenwörtern dargestellt werden.
    • Beispiel 12 ist die Datenverarbeitungsvorrichtung von Beispiel 11, wobei die kryptographische Verarbeitung eine Entschlüsselung, eine Verschlüsselung, eine Signierung oder eine Schlüsselerzeugung ist.
    • Beispiel 13 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 12, die einen Zufallszahlengenerator und eine Schaltung zur Erzeugung von Steuersequenzen enthält, die so konfiguriert ist, dass sie die Steuersequenz auf der Grundlage einer oder mehrerer Zufallszahlen erzeugt, die vom Zufallszahlengenerator bereitgestellt werden.
    • Beispiel 14 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 13, wobei die Remaskierungs-Schaltung so konfiguriert ist, dass sie einen Maskenauffrischungswert empfängt und so konfiguriert ist, dass sie die mindestens zwei Anteile in Abhängigkeit von dem Maskenauffrischungswert auffrischt.
    • Beispiel 15 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 14, wobei die Logikschaltung so konfiguriert ist, dass sie einen Maskenauffrischungswert empfängt und so konfiguriert ist, dass sie die Verarbeitung der mindestens zwei Anteile in Abhängigkeit von dem Maskenauffrischungswert durchführt.
    • Beispiel 16 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 15, wobei die Logikschaltung so konfiguriert ist, dass sie die mindestens zwei Anteile gemäß einer Nicht-Dummy-Operation verarbeitet, um die mindestens zwei Anteile des Ergebnisdatenworts zu erzeugen.
    • Beispiel 17 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 16, wobei die Logikschaltung so konfiguriert ist, dass sie die mindestens zwei Anteile verarbeitet, um die mindestens zwei Anteile des Ergebnisdatenworts gemäß einer Operation zu erzeugen, die über eine Remaskierung hinausgeht oder sich davon unterscheidet.
    • Beispiel 18 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 17, wobei die Daten geheime Daten enthalten.
    • Beispiel 19 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 18, wobei die Daten einen oder mehrere kryptographische Schlüssel enthalten.
    • Beispiel 20 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 19, die eine Eingangsschnittstelle enthält, die so konfiguriert ist, dass sie die Mehrzahl von Datenwörtern empfängt, und die eine Maskierungsschaltung enthält, die so konfiguriert ist, dass sie jedes Datenwort der Mehrzahl von Datenwörtern in mindestens zwei jeweilige Anteile aufteilt und die Anteile im Speicher speichert.
    • Beispiel 21 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 20, wobei der Speicher einen Direktzugriffsspeicher, ein oder mehrere Prozessorregister, einen nichtflüchtigen Speicher oder eine Kombination davon enthält.
    • Beispiel 22 ist die Datenverarbeitungsvorrichtung eines der Beispiele 1 bis 21, wobei die Ausgangsschaltung eine Mehrzahl von Multiplexern enthält, wobei jeder Multiplexer so konfiguriert ist, dass er einen der mindestens zwei Anteile des Ergebnisdatenworts empfängt und einen aufgefrischten Anteil empfängt und den Anteil des Ergebnisdatenworts oder den aufgefrischten Anteil in Abhängigkeit von der Steuersequenz ausgibt.
    • Beispiel 23 ist die Datenverarbeitungsvorrichtung eines der Beispiele 1 bis 22, wobei die mindestens zwei Anteile zwei Anteile sind und das Auffrischen der zwei Anteile eines oder der mindestens einen Datenwörter die XOR-Verknüpfung der zwei Anteile mit demselben Maskenauffrischungswort umfasst.
    • Beispiel 24 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 23, wobei jedes Datenwort in die mindestens zwei jeweiligen Anteile aufgeteilt wird, so dass eine XOR-Kombination der mindestens zwei Anteile das Datenwort ergibt.
    • Beispiel 25 ist die Datenverarbeitungsvorrichtung nach einem der Beispiele 1 bis 24, wobei die Ausgangsschaltung so konfiguriert ist, dass sie in Abhängigkeit von der Steuersequenz die mindestens zwei Anteile des Ergebnisdatenwortes in einem dem Ergebnisdatenwort zugeordneten Speicherwort des Speichers speichert oder die aufgefrischten mindestens zwei Anteile in dem dem Ergebnisdatenwort zugeordneten Speicherwort speichert.
    • Beispiel 26 ist die Datenverarbeitungsvorrichtung von Beispiel 25, wobei das Speicherwort das Speicherwort ist, das die mindestens zwei verarbeiteten und/oder aufgefrischten Anteile speichert.
    • Beispiel 27 ist ein Verfahren zum Verarbeiten von Daten, wie in 4 dargestellt.
    • Beispiel 28 ist das Verfahren von Beispiel 27, das für jede Operation einer Sequenz von Operationen die Verarbeitung der mindestens zwei Anteile entsprechend der Operation aufweist, um mindestens zwei Anteile eines Ergebnisdatenwortes zu erzeugen, die mindestens zwei Anteile aufzufrischen und die mindestens zwei Anteile des Ergebnisdatenwortes zu speichern oder die aufgefrischten mindestens zwei Anteile abhängig von der Steuersequenz zu speichern.
    • Beispiel 29 ist das Verfahren aus Beispiel 28, wobei zumindest manche Operationen der Operationssequenz Nicht-Dummy-Operationen sind.
    • Beispiel 30 ist das Verfahren aus Beispiel 28 oder 29, wobei die Steuersequenz für jede Operation der Sequenz von Operationen angibt, ob eine echte Operation oder eine Dummy-Operation auszuführen ist.
    • Beispiel 31 ist das Verfahren von Beispiel 30, wobei die Operationen, für die die Steuersequenz angibt, dass eine echte Operation auszuführen ist, Nicht-Dummy-Operationen sind.
    • Beispiel 32 ist das Verfahren nach einem der Beispiele 28 bis 31, aufweisend das Festlegen einer Reihenfolge für die Sequenz von Operationen.
    • Beispiel 33 ist das Verfahren von Beispiel 32, aufweisend das Festlegen der Reihenfolge der Sequenz von Operationen auf der Grundlage einer oder mehrerer Zufallszahlen, die von einem Zufallszahlengenerator bereitgestellt werden.
    • Beispiel 34 ist das Verfahren nach einem der Beispiele 27 bis 33, wobei die Steuersequenz einen Steuerwert für jede Operation einer Sequenz von Operationen enthält und das Verfahren das Speichern der mindestens zwei Anteile des Ergebnisdatenworts oder das Speichern der aufgefrischten mindestens zwei Anteile in Abhängigkeit von dem Steuerwert enthält, den die Steuersequenz für eine Operation enthält, gemäß der die Logikschaltung die mindestens zwei Anteile verarbeitet hat.
    • Beispiel 35 ist das Verfahren nach einem der Beispiele 27 bis 34, aufweisend das Verwerfen der mindestens zwei Anteile des Ergebnisdatenworts, falls die Steuersequenz für die Operation angibt, dass eine Dummy-Operation auszuführen ist.
    • Beispiel 36 ist das Verfahren nach einem der Beispiele 27 bis 35, aufweisend das Verwerfen der mindestens zwei aufgefrischten Anteile, falls die Steuersequenz für die Operation angibt, dass eine echte Operation ausgeführt werden soll.
    • Beispiel 37 ist das Verfahren nach einem der Beispiele 27 bis 36, wobei die Sequenz von Operationen, für die die Steuersequenz angibt, dass eine echte Operation auszuführen ist, eine kryptographische Verarbeitung von Daten implementiert, die durch die Mehrzahl von Datenwörtern dargestellt werden.
    • Beispiel 38 ist das Verfahren nach Beispiel 37, wobei die kryptographische Verarbeitung eine Entschlüsselung, eine Verschlüsselung, eine Signierung oder eine Schlüsselerzeugung ist.
    • Beispiel 39 ist das Verfahren nach einem der Beispiele 27 bis 38, aufweisend die Erzeugung der Steuersequenz auf der Grundlage einer oder mehrerer Zufallszahlen, die von einem Zufallszahlengenerator bereitgestellt werden.
    • Beispiel 40 ist das Verfahren nach einem der Beispiele 27 bis 39, aufweisend die Auffrischung der mindestens zwei Anteile in Abhängigkeit von einem Maskenauffrischungswert.
    • Beispiel 41 ist das Verfahren nach einem der Beispiele 27 bis 40, aufweisend die Durchführung der Verarbeitung der mindestens zwei Anteile in Abhängigkeit von einem Maskenauffrischungswert.
    • Beispiel 42 ist das Verfahren nach einem der Beispiele 27 bis 41, aufweisend die Verarbeitung der mindestens zwei Anteile gemäß einer Nicht-Dummy-Operation, um die mindestens zwei Anteile des Ergebnisdatenworts zu erzeugen.
    • Beispiel 43 ist das Verfahren nach einem der Beispiele 27 bis 42, aufweisend die Verarbeitung der mindestens zwei Anteile, um die mindestens zwei Anteile des Ergebnisdatenworts gemäß einer Operation zu erzeugen, die über eine Remaskierung hinausgeht oder sich von davon unterscheidet.
    • Beispiel 44 ist das Verfahren nach einem der Beispiele 27 bis 43, wobei die Daten geheime Daten enthalten.
    • Beispiel 45 ist das Verfahren nach einem der Beispiele 27 bis 44, wobei die Daten einen oder mehrere kryptographische Schlüssel enthalten.
    • Beispiel 46 ist das Verfahren nach einem der Beispiele 27 bis 45, aufweisend die Aufteilung jedes Datenworts der Mehrzahl von Datenwörtern in mindestens zwei entsprechende Anteile und der Speicherung der Anteile im Speicher.
    • Beispiel 47 ist das Verfahren nach einem der Beispiele 27 bis 46, aufweisend die Speicherung der Anteile in einem Speicher mit wahlfreiem Zugriff, einem oder mehreren Prozessorregistern, einem nichtflüchtigen Speicher oder einer Kombination davon.
    • Beispiel 48 ist das Verfahren nach einem der Beispiele 27 bis 47, mit einem Multiplexer, der einen der mindestens zwei Anteile des Ergebnisdatenworts und einen aufgefrischten Anteil empfängt und den Anteil des Ergebnisdatenworts oder den aufgefrischten Anteil in Abhängigkeit von der Steuersequenz ausgibt.
    • Beispiel 49 ist das Verfahren nach einem der Beispiele 27 bis 48, wobei die mindestens zwei Anteile zwei Anteile sind und das Auffrischen der zwei Anteile eines oder der mindestens einen Datenwörter die XOR-Verknüpfung der zwei Anteile mit demselben Maskenauffrischungswort umfasst.
    • Beispiel 50 ist das Verfahren nach einem der Beispiele 27 bis 49, wobei jedes Datenwort in die mindestens zwei jeweiligen Anteile aufgeteilt wird, so dass eine XOR-Kombination der mindestens zwei Anteile das Datenwort ergibt.
    • Beispiel 51 ist das Verfahren nach einem der Beispiele 27 bis 50, bei dem in Abhängigkeit von der Steuersequenz die mindestens zwei Anteile des Ergebnisdatenwortes in einem dem Ergebnisdatenwort des Speichers zugeordneten Speicherwort gespeichert werden oder die aufgefrischten mindestens zwei Anteile in dem dem Ergebnisdatenwort zugeordneten Speicherwort gespeichert werden.
    • Beispiel 52 ist das Verfahren von Beispiel 51, wobei das Speicherwort das Speicherwort ist, das die mindestens zwei verarbeiteten und/oder aufgefrischten Anteile speichert.
  • Gemäß einem weiteren Beispiel wird eine Verarbeitungsvorrichtung bereitgestellt, die Speichermittel zum Speichern jedes Datenworts einer Mehrzahl von Datenwörtern in Form von mindestens zwei jeweiligen Anteilen; Verarbeitungsmittel zum Verarbeiten der mindestens zwei Anteile von mindestens einem der Datenwörter, um mindestens zwei Anteile eines Ergebnisdatenworts zu erzeugen, Auffrischungsmittel zum Auffrischen der mindestens zwei Anteile von mindestens einem der Datenwörter und Ausgabemittel zum Speichern der mindestens zwei Anteile des Ergebnisdatenworts oder zum Speichern der aufgefrischten mindestens zwei Anteile in Abhängigkeit von einer Steuersequenz, die eine Sequenz von echten Operationen und Dummy-Operationen angibt, enthält.
  • In einer Ausführungsform kann eine „Schaltung“ als jede Art von logischer Implementierungseinheit verstanden werden, die aus Hardware, Software, Firmware oder einer Kombination davon bestehen kann. So kann eine „Schaltung“ in einer Ausführungsform eine fest verdrahtete Logikschaltung oder eine programmierbare Logikschaltung wie ein programmierbarer Prozessor sein, z. B. ein Mikroprozessor (z. B. ein CISC-Prozessor (Complex Instruction Set Computer) oder ein RISC-Prozessor (Reduced Instruction Set Computer)). Eine „Schaltung“ kann auch Software sein, die von einem Prozessor implementiert oder ausgeführt wird, z. B. jede Art von Computerprogramm, z. B. ein Computerprogramm, das einen virtuellen Maschinencode wie z. B. Java verwendet. Jede andere Art der Implementierung der jeweiligen hier beschriebenen Funktionen kann gemäß einer alternativen Ausführungsform ebenfalls als „Schaltung“ verstanden werden.
  • Insbesondere kann eine „Schaltung“ gemäß verschiedenen Ausführungsformen eine fest verdrahtete Schaltung mit einer festen Funktionalität sein (d. h. so konfiguriert, dass sie eine feste boolesche Funktion berechnet). Beispielsweise können die Remaskierungs-Schaltungen durch eine Anordnung von XOR-Gattern implementiert werden.
  • Bezugszeichenliste
  • 100
    Verarbeitungsvorrichtung
    101
    CPU
    102
    RAM
    103
    NVM
    104
    Krypto-Modul
    105
    Bus
    106
    Analogmodul
    107
    E/A-Schnittstelle
    108-111
    Krypto-Kerne
    112
    Zufallszahlengenerator
    113
    Kommunikationsverbindung
    200
    Verarbeitungsschaltung
    201, 202
    Verarbeitungsblöcke
    203, 204
    Remaskierungs-Schaltungen
    205, 206
    Multiplexer
    300
    Verarbeitungsvorrichtung
    301
    Speicher
    302
    Logikschaltung
    303
    Remaskierungsschaltung
    304
    Ausgangsschaltung
    400
    Flussdiagramm
    401-403
    Verarbeitung

Claims (16)

  1. Eine Datenverarbeitungsvorrichtung (300), aufweisend: Einen Speicher (301), der so konfiguriert ist, dass er jedes Datenwort einer Mehrzahl von Datenwörtern in Form von mindestens zwei jeweiligen Anteilen speichert; Eine Logikschaltung (302), die so konfiguriert ist, dass sie für jede Operation einer Sequenz von Operationen die mindestens zwei Anteile von mindestens einem der Datenwörter empfängt und die mindestens zwei Anteile entsprechend der Operation verarbeitet, um mindestens zwei Anteile eines Ergebnisdatenworts zu erzeugen, wobei zumindest manche Operationen der Sequenz von Operationen Nicht-Dummy-Operationen sind; Eine Remaskierungs-Schaltung (303), die so konfiguriert ist, dass sie die mindestens zwei Anteile von mindestens einem der Datenwörter empfängt und die mindestens zwei Anteile auffrischt; und Eine Ausgangsschaltung (304), die so konfiguriert ist, dass sie die mindestens zwei Anteile des Ergebnisdatenworts speichert oder die aufgefrischten mindestens zwei Anteile in Abhängigkeit von einer Steuersequenz speichert, die eine Sequenz von echten Operationen und Dummy-Operationen angibt, wobei die Steuersequenz für jede Operation der Sequenz von Operationen angibt, ob eine echte Operation oder eine Dummy-Operation auszuführen ist, wobei die Operationen, für die die Steuersequenz angibt, dass eine echte Operation auszuführen ist, Nicht-Dummy-Operationen sind, wobei die Ausgangsschaltung (304) so konfiguriert ist, dass sie die mindestens zwei Anteile des Ergebnisdatenworts speichert, falls die Steuersequenz für die Operation angibt, dass eine echte Operation ausgeführt werden soll; und und wobei die Ausgangsschaltung (304) so konfiguriert ist, dass sie die aufgefrischten mindestens zwei Anteile speichert, falls die Steuersequenz für die Operation angibt, dass eine Dummy-Operation durchgeführt werden soll.
  2. Die Datenverarbeitungsvorrichtung (300) nach Anspruch 1, die eine Steuerschaltung umfasst, die so konfiguriert ist, dass sie eine Reihenfolge der Sequenz von Operationen festlegt.
  3. Die Datenverarbeitungsvorrichtung (300) nach Anspruch 2, die einen Zufallszahlengenerator umfasst, wobei die Steuerschaltung so konfiguriert ist, dass sie die Reihenfolge der Sequenz von Operationen auf der Grundlage einer oder mehrerer Zufallszahlen festlegt, die von dem Zufallszahlengenerator bereitgestellt werden.
  4. Die Datenverarbeitungsvorrichtung (300) nach einem der Ansprüche 1 bis 3, wobei die Steuersequenz einen Steuerwert für jede Operation einer Sequenz von Operationen umfasst und die Ausgangsschaltung (304) so konfiguriert ist, dass sie die mindestens zwei Anteile des Ergebnisdatenworts speichert oder die aufgefrischten mindestens zwei Anteile speichert, abhängig von dem Steuerwert, den die Steuersequenz für eine Operation umfasst, gemäß der die Logikschaltung die mindestens zwei Anteile verarbeitet hat.
  5. Die Datenverarbeitungsvorrichtung (300) nach einem der Ansprüche 1 bis 4, wobei die Datenverarbeitungsvorrichtung (300) so konfiguriert ist, dass sie die mindestens zwei Anteile des Ergebnisdatenwortes verwirft, falls die Steuersequenz für die Operation angibt, dass eine Dummy-Operation durchgeführt werden soll.
  6. Die Datenverarbeitungsvorrichtung (300) nach einem der Ansprüche 1 bis 5, wobei die Datenverarbeitungsvorrichtung (300) so konfiguriert ist, dass sie die mindestens zwei aufgefrischten Anteile verwirft, falls die Steuersequenz für die Operation angibt, dass eine echte Operation ausgeführt werden soll.
  7. Die Datenverarbeitungsvorrichtung (300) nach einem der Ansprüche 1 bis 6, wobei die Sequenz von Operationen, für die die Steuersequenz angibt, dass eine echte Operation auszuführen ist, eine kryptographische Verarbeitung von Daten implementiert, die durch die Mehrzahl von Datenwörtern dargestellt werden.
  8. Die Datenverarbeitungsvorrichtung (300) nach Anspruch 7, wobei die kryptografische Verarbeitung eine Entschlüsselung, eine Verschlüsselung, eine Signierung oder eine Schlüsselerzeugung ist.
  9. Die Datenverarbeitungsvorrichtung (300) nach einem der Ansprüche 1 bis 8, aufweisend einen Zufallszahlengenerator und eine Schaltung zur Erzeugung einer Steuersequenz, die so konfiguriert ist, dass sie die Steuersequenz auf der Grundlage einer oder mehrerer Zufallszahlen erzeugt, die vom Zufallszahlengenerator bereitgestellt werden.
  10. Die Datenverarbeitungsvorrichtung (300) nach einem der Ansprüche 1 bis 9, wobei die Remaskierungs-Schaltung (303) so konfiguriert ist, dass sie einen Maskenauffrischungswert empfängt und so konfiguriert ist, dass sie die mindestens zwei Anteile in Abhängigkeit von dem Maskenauffrischungswert auffrischt.
  11. Die Datenverarbeitungsvorrichtung (300) nach einem der Ansprüche 1 bis 10, wobei die Logikschaltung so konfiguriert ist, dass sie einen Maskenauffrischungswert empfängt und so konfiguriert ist, dass sie die Verarbeitung der mindestens zwei Anteile in Abhängigkeit von dem Maskenauffrischungswert durchführt.
  12. Die Datenverarbeitungsvorrichtung (300) nach einem der Ansprüche 1 bis 11, wobei die Logikschaltung so konfiguriert ist, dass sie die mindestens zwei Anteile gemäß einer Nicht-Dummy-Operation verarbeitet, um die mindestens zwei Anteile des Ergebnisdatenworts zu erzeugen.
  13. Die Datenverarbeitungsvorrichtung (300) nach einem der Ansprüche 1 bis 12, wobei die Logikschaltung so konfiguriert ist, dass sie die mindestens zwei Anteile verarbeitet, um die mindestens zwei Anteile des Ergebnisdatenworts gemäß einer Operation zu erzeugen, die über eine Remaskierung hinausgeht oder sich davon unterscheidet.
  14. Die Datenverarbeitungsvorrichtung (300) nach einem der Ansprüche 1 bis 13, wobei die Daten geheime Daten umfassen.
  15. Die Datenverarbeitungsvorrichtung (300) nach einem der Ansprüche 1 bis 14, wobei die Daten einen oder mehrere kryptographische Schlüssel umfassen.
  16. Ein Verfahren zur Datenverarbeitung, aufweisend: Speichern jedes Datenworts einer Mehrzahl von Datenwörtern in Form von mindestens zwei jeweiligen Anteilen; Verarbeiten, für jede Operation einer Sequenz von Operationen, der mindestens zwei Anteile von mindestens einem der Datenwörter entsprechend der Operation, um mindestens zwei Anteile eines Ergebnisdatenworts zu erzeugen, wobei zumindest manche Operationen der Sequenz von Operationen Nicht-Dummy-Operationen sind; Auffrischen der mindestens zwei Anteile von mindestens einem der Datenwörter; Speichern der mindestens zwei Anteile des Ergebnisdatenworts oder Speichern der aufgefrischten mindestens zwei Anteile in Abhängigkeit von einer Steuersequenz, die eine Sequenz von echten Operationen und Dummy-Operationen angibt, wobei die Steuersequenz für jede Operation der Sequenz von Operationen angibt, ob eine echte Operation oder eine Dummy-Operation auszuführen ist, wobei die Operationen, für die die Steuersequenz angibt, dass eine echte Operation auszuführen ist, Nicht-Dummy-Operationen sind, wobei die mindestens zwei Anteile des Ergebnisdatenworts gespeichert werden, falls die Steuersequenz für die Operation angibt, dass eine echte Operation ausgeführt werden soll; und wobei die aufgefrischten mindestens zwei Anteile gespeichert werden, falls die Steuersequenz für die Operation angibt, dass eine Dummy-Operation durchgeführt werden soll.
DE102021101697.5A 2021-01-26 2021-01-26 Datenverarbeitungsvorrichtung und verfahren zum verarbeiten geheimer daten Active DE102021101697B3 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102021101697.5A DE102021101697B3 (de) 2021-01-26 2021-01-26 Datenverarbeitungsvorrichtung und verfahren zum verarbeiten geheimer daten
US17/574,779 US20220237304A1 (en) 2021-01-26 2022-01-13 Data Processing Device and Method for Processing Secret Data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102021101697.5A DE102021101697B3 (de) 2021-01-26 2021-01-26 Datenverarbeitungsvorrichtung und verfahren zum verarbeiten geheimer daten

Publications (1)

Publication Number Publication Date
DE102021101697B3 true DE102021101697B3 (de) 2022-02-17

Family

ID=80000768

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021101697.5A Active DE102021101697B3 (de) 2021-01-26 2021-01-26 Datenverarbeitungsvorrichtung und verfahren zum verarbeiten geheimer daten

Country Status (2)

Country Link
US (1) US20220237304A1 (de)
DE (1) DE102021101697B3 (de)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2362731A (en) 2000-05-23 2001-11-28 Advanced Risc Mach Ltd Parallel processing of multiple operands in a packed data word format
US20110261958A1 (en) 2010-04-27 2011-10-27 Research In Motion Limited Table splitting for cryptographic processes

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018208851A1 (de) * 2018-06-05 2019-12-05 Infineon Technologies Ag Vorrichtung und Verfahren zum Umwandeln von Eingangsbitfolgen
EP3664359A1 (de) * 2018-12-07 2020-06-10 Koninklijke Philips N.V. Berechnungsvorrichtung mit verwendung gemeinsamer shares
US11777715B2 (en) * 2019-05-15 2023-10-03 Amir Keyvan Khandani Method and apparatus for generating shared secrets
FR3097348B1 (fr) * 2019-06-17 2021-07-16 St Microelectronics Rousset Protection d’exécution d’algorithmes de chiffrement
DE102020102796A1 (de) * 2020-02-04 2021-08-05 Infineon Technologies Ag Datenverarbeitungsvorrichtung und verfahren zum verarbeiten von geheimen daten

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2362731A (en) 2000-05-23 2001-11-28 Advanced Risc Mach Ltd Parallel processing of multiple operands in a packed data word format
US20020002671A1 (en) 2000-05-23 2002-01-03 Symes Dominic Hugo Parallel processing of multiple data values within a data word
US20110261958A1 (en) 2010-04-27 2011-10-27 Research In Motion Limited Table splitting for cryptographic processes

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CHEN, C. [et al.]: A Tale of Two Shares: Why Two-Share Threshold Implementation Seems Worthwhile – and Why it is Not. In: International Conference on the Theory and Application of Cryptology and Information Security. In: CHEON, J.; TAKAGI, T. (eds): Advances in Cryptology – ASIACRYPT 2016. Lecture Notes in Computer Science, Vol. 10031, S. 819–843. Berlin, Heidelberg : Springer. DOI: 10.1007/978-3-662-53887-6_30

Also Published As

Publication number Publication date
US20220237304A1 (en) 2022-07-28

Similar Documents

Publication Publication Date Title
DE69936024T2 (de) Vorrichtung zur Verschlüsselung/Entschlüsselung
EP2742643B1 (de) Vorrichtung und verfahren zum entschlüsseln von daten
DE60217260T2 (de) Datenverarbeitungs- und Verschlüsselungseinheit
DE102016120558A1 (de) Datenverarbeitungsvorrichtung und -verfahren für kryptographische verarbeitung von daten
DE60302512T2 (de) Feistel-Verschlüsselungsverfahren und -vorrichtung mit Schutz gegen DPA-Angriffe
DE112007003061T5 (de) Mechanismus zum Schützen eines Schlüssels
DE112008000668T5 (de) Kryptografisches Verfahren und System
EP1540880B1 (de) Geschützte kryptographische berechnung
DE60320016T2 (de) Verfahren zur ganzzahldivision gegen angriffe an versteckten kanälen
EP1664979B1 (de) Übergang zwischen maskierten repräsentationen eines wertes bei kryptographischen berechnungen
DE112009000152T5 (de) Modulare Reduktion unter Verwendung einer speziellen Form des Modulo
DE112018002723B4 (de) System, verfahren und vorrichtung zur verschleierung von vorrichtungsoperationen
DE60022840T2 (de) Verfahren zum sichern einer oder mehrerer elektronischer baugruppen, unter zuhilfenahme eines privatschlüssel-krypto-algorithmus, sowie elektronische baugruppe
DE102021101697B3 (de) Datenverarbeitungsvorrichtung und verfahren zum verarbeiten geheimer daten
EP1442391B1 (de) Verfahren und vorrichtung zum absichern einer berechnung in einem kryptographischen algorithmus
DE102004018874B4 (de) Verfahren und Vorrichtung zum Bestimmen eines Ergebnisses
DE102010045580A1 (de) Schaltungsanordnung und Verfahren zum Betreiben einer Schaltungsanordnung
DE10328860A1 (de) Vorrichtung und Verfahren zum Verschlüsseln von Daten
EP1596527B1 (de) Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung
DE102020102796A1 (de) Datenverarbeitungsvorrichtung und verfahren zum verarbeiten von geheimen daten
EP1615098A2 (de) Ausspähungsgeschütztes Berechnen eines maskierten Ergebniswertes
DE102020134618A1 (de) Sicherheits-controller und verfahren zur verarbeitung von datenelementen eines datenfeldes
DE10042234A1 (de) Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor
DE102018006313A1 (de) Verfahren mit Safe-Error-Abwehrmaßnahme
DE102022125835A1 (de) Datenverarbeitungsvorrichtung und verfahren zum erzeugen einer zufallszahl

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative