DE102018113475A1 - Rechenwerk zum rechnen mit maskierten daten - Google Patents

Rechenwerk zum rechnen mit maskierten daten Download PDF

Info

Publication number
DE102018113475A1
DE102018113475A1 DE102018113475.4A DE102018113475A DE102018113475A1 DE 102018113475 A1 DE102018113475 A1 DE 102018113475A1 DE 102018113475 A DE102018113475 A DE 102018113475A DE 102018113475 A1 DE102018113475 A1 DE 102018113475A1
Authority
DE
Germany
Prior art keywords
data
masked
operand
mask
unit according
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.)
Pending
Application number
DE102018113475.4A
Other languages
English (en)
Inventor
Bernd Meyer
Thomas Poeppelmann
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 DE102018113475.4A priority Critical patent/DE102018113475A1/de
Priority to US16/431,775 priority patent/US11190337B2/en
Publication of DE102018113475A1 publication Critical patent/DE102018113475A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7238Operand masking, i.e. message blinding, e.g. (A+r)**e mod n; k.(P+R)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Abstract

Gemäß einer Ausführungsform wird ein Rechenwerk beschrieben, das eine Maskenerzeugungsschaltung, die eingerichtet ist, eine Maske durch Multiplikation eines Maskenerzeugungsvektors mit Blöcken von Codewörtern mehrerer zyklischer Codes zu erzeugen, eine Maskierungsschaltung, die eingerichtet ist, zu verarbeitende Daten mittels der Maske zu maskieren, und eine arithmetisch-logische Einheit aufweist, die eingerichtet ist, die maskierten Daten mittels Additionen und Rotationen zu verarbeiten.

Description

  • Ausführungsbeispiele betreffen allgemein Rechenwerke zum Rechnen mit maskierten Daten.
  • Im Rahmen von sicherheitsrelevanten Anwendungen führen Computerchips, wie beispielsweise auf einer Chipkarte oder in einer Steuervorrichtung in einem Fahrzeug typischerweise kryptographische Operationen zur Verschlüsselung, Entschlüsselung und Authentifizierung etc. durch. Dabei werden Daten verarbeitet, wie beispielsweise kryptographische Schlüssel, die vor einem Zugriff durch einen Angreifer geschützt werden sollen. Ein typischer Sicherheitsmechanismus ist die Maskierung von zu verarbeitenden Daten. Da die Maskierung und die Verarbeitung maskierter Daten aber zusätzlichen Rechenaufwand (und entsprechenden Hardwareaufwand) erfordert, sind Rechenwerke wünschenswert, die mit geringem zusätzlichen Hardwareaufwand das Rechnen mit maskierten Daten ermöglichen.
  • Gemäß einer Ausführungsform wird ein Rechenwerk bereitgestellt, das eine Maskenerzeugungsschaltung, die eingerichtet ist, eine Maske durch Multiplikation eines Maskenerzeugungsvektors mit Blöcken von Codewörtern mehrerer zyklischer Codes zu erzeugen, eine Maskierungsschaltung, die eingerichtet ist, zu verarbeitende Daten mittels der Maske zu maskieren, und eine arithmetisch-logische Einheit aufweist, die eingerichtet ist, die maskierten Daten mittels Additionen und Rotationen zu verarbeiten.
  • Die Figuren geben nicht die tatsächlichen Größenverhältnisse wieder sondern sollen dazu dienen, die Prinzipien der verschiedenen Ausführungsbeispiele zu illustrieren. Im Folgenden werden verschiedene Ausführungsbeispiele mit Bezug auf die folgenden Figuren beschrieben.
    • 1 zeigt ein Beispiel für eine Verarbeitungsvorrichtung zur Durchführung kryptographischer Operationen.
    • 2 veranschaulicht eine Realisierung einer Multiplikation in Hardware.
    • 3 zeigt eine maskierte ALU gemäß einer Ausführungsform.
    • 4 zeigt ein Gatter zum Implementieren einer maskierten UND-Verknüpfung.
    • 5 zeigt ein Rechenwerk gemäß einer Ausführungsform.
    • 6 zeigt ein Flussdiagram, das ein Verfahren zum Rechnen mit maskierten Daten gemäß einer Ausführungsform veranschaulicht.
  • Die folgende detaillierte Beschreibung bezieht sich auf die beiliegenden Figuren, die Details und Ausführungsbeispiele zeigen. Diese Ausführungsbeispiele sind so detailliert beschrieben, dass der Fachmann die Erfindung ausführen kann. Andere Ausführungsformen sind auch möglich und die Ausführungsbeispiele können in struktureller, logischer und elektrischer Hinsicht geändert werden, ohne vom Gegenstand der Erfindung abzuweichen. Die verschiedenen Ausführungsbeispiele schließen sich nicht notwendig gegenseitig aus sondern es können verschiedene Ausführungsformen miteinander kombiniert werden, so dass neue Ausführungsformen entstehen. Im Rahmen dieser Beschreibung werden die Begriffe „verbunden“, „angeschlossen“ sowie „gekoppelt“ verwendet zum Beschreiben sowohl einer direkten als auch einer indirekten Verbindung, eines direkten oder indirekten Anschlusses sowie einer direkten oder indirekten Kopplung.
  • 1 zeigt ein Beispiel für eine Verarbeitungsvorrichtung 100 mit einer CPU 101, einem RAM (Random Access Memory) 102, einem nichtflüchtigen Speicher 103 (NVM), einem Krypto-Modul 104, einem Analogmodul 106, einer Eingabe-/Ausgabeschnittstelle 107 und einem Hardware-Zufallszahlengenerator 112.
  • In diesem Beispiel hat die CPU 101 Zugriff auf mindestens ein Krypto-Modul 104 über einen gemeinsamen Bus 105, mit dem jedes Krypto-Modul 104 verbunden ist. Jedes Krypto-Modul 104 kann insbesondere einen oder mehrere Krypto-Kerne umfassen, um bestimmte kryptographische Operationen durchzuführen. Beispielhafte Kryptokerne sind:
    • - ein AES-Kern 109,
    • - ein SHA-Kern 110,
    • - ein ECC-Kern 111, und
    • - ein Gitter-basierter Krypto- (LBC) -Kern 108.
  • Der gitterbasierte Kryptokern 108 kann vorgesehen sein, um gitterbasierte Kryptographie zu beschleunigen.
  • Die CPU 101, der Hardware-Zufallszahlengenerator 112, das NVM 103, das Kryptomodul 104, das RAM 102 und die Eingabe/Ausgabe-Schnittstelle 107 sind mit dem Bus 105 verbunden. Die Eingabe-Ausgabeschnittstelle 107 kann eine Verbindung 114 zu anderen Vorrichtungen ähnlich der Verarbeitungsvorrichtung 100 haben.
  • 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 Schaltung der Verarbeitungsvorrichtung 100 anzutreiben, und kann insbesondere ermöglichen, dass die Eingabe/Ausgabe-Schnittstelle über die Verbindung 114 Verbindungen zu anderen Vorrichtungen einleitet und/oder aufrechterhält.
  • Der Bus 105 selbst kann maskiert oder einfach sein. Anweisungen zum Ausführen der Verarbeitung und der Algorithmen, die im Folgenden beschrieben werden, können insbesondere in dem NVM 103 gespeichert und von der CPU 101 verarbeitet werden. Die verarbeiteten Daten können in dem NVM 103 oder in dem RAM 102 gespeichert werden. Zufallszahlen werden von dem Hardware-Zufallszahlengenerator 112 geliefert.
  • Die Verarbeitung und die Algorithmen, die im Folgenden beschrieben werden, können ausschließlich oder zumindest teilweise auf dem Kryptomodul 104 ausgeführt werden. Ein Kryptomodul 104 kann mit hardwarebasierten Sicherheitsmechanismen ausgestattet werden. Solche hardwarebasierten Sicherheitsmechanismen können Schaltungen sein, die Gegenmaßnahmen gegen Seitenkanal-Leistungsanalyse oder Fehlerinjektion implementieren (z. B. unter Verwendung eines Lasers). Solche Gegenmaßnahmen könnten durch Verwendung von Randomisierung, redundanter Hardware oder redundanter Verarbeitung realisiert werden. Im Allgemeinen ist es das Ziel von Gegenmaßnahmen, die intern verarbeiteten Werte und Zwischenergebnisse vor einem Angreifer zu verbergen, der in der Lage ist, den physikalischen Effekt der Verarbeitung solcher Werte zu beobachten.
  • Die Komponenten der Verarbeitungsvorrichtung 100 können beispielsweise auf einem einzigen Chip implementiert sein. Die Verarbeitungsvorrichtung 100 kann eine Chipkarte (oder ein Chipkartenmodul) sein, die durch direkten elektrischen Kontakt oder durch ein elektromagnetisches Feld versorgt wird. Die Verarbeitungsvorrichtung 100 kann eine feste Schaltung sein oder auf rekonfigurierbarer Hardware basieren (z. B. Field Programmable Gate Array, FPGA). Die Verarbeitungsvorrichtung 100 kann mit einem Personal Computer, Mikrocontroller, FPGA oder einem Smartphone-System auf einem Chip (SoC) oder anderen Komponenten eines Smartphones verbunden sein. Die Verarbeitungsvorrichtung 100 kann ein Chip sein, der als Trusted Platform Module (TPM) fungiert und kryptografische Funktionalität gemäß einer standardisierten Schnittstelle zu einem Computer, Smartphone, Internet der Dinge (IoT) Gerät oder Fahrzeug bereitstellt.
  • Seriell-parallel Multiplizierer für Langzahlen sind eine Kernkomponente vieler kryptographischer Co-Prozessoren (wie der Krypto-Module 104) zur effizienten Berechnung von Public-Key Kryptoverfahren wie RSA oder Kryptographie mit elliptischen Kurven. Solche Multiplizierer werden beispielsweise in den Langzahlrechenwerken von Chipkarten oder in Authentisierungstoken verwendet.
  • Ein seriell-parallel arbeitender Multiplizierer für Langzahlen besteht aus einem Langzahl-Register (Accu), dem Akkumulator, zum Speichern von Zwischenergebnissen der Multiplikation, einer Addier-Einheit, einem Schieber (Shifter) und Komponenten zur Berechnung von Partialprodukten von Operanden und Reduktionswerten. Während einer Multiplikation wird einer der zu multiplizierenden Operanden parallel und der andere Operand seriell bezüglich der verwendeten Zahldarstellung (typischerweise Bit-seriell für Operanden in Binärdarstellung) verwendet. Zu Beginn einer Multiplikation wird der Accu normalerweise auf Null gesetzt. Dann wird in einer Schleife der aktuelle Inhalt des Accus um eine Stelle geschoben und es werden Partialprodukte des ersten Operanden (in Abhängigkeit von einer Stelle des zweiten Operanden) sowie Reduktionswerte (in Anhängigkeit vom aktuellen Inhalt des Accus) addiert. Dabei kann der seriell verwendete Operand beginnend bei der höchstwertigen oder beginnend bei der niedrigstwertigen Stelle verarbeitet werden. Insbesondere zur Implementierung von Protokollen für elliptische Kurven über endlichen Körpern GF(2n) der Charakteristik 2 ist die Verwendung solcher Multiplizierer auf Grund der einfachen Schaltungsanordnung, des geringen Flächenbedarfs und der hohen Ausführungsgeschwindigkeit vorteilhaft.
  • Durch die serielle Abarbeitung eines der Operanden sind solche Multiplizierer aber inhärent anfällig gegen Angriffe auf die Vertraulichkeit von Daten. Oft ist es ausreichend, wenn ein Angreifer lediglich ein einzelnes Signal der Schaltungsanordnung beispielsweise mittels einer Probing-Nadel beobachtet, um an den vollständigen Inhalt der im Multiplizierer verarbeiteten Operanden zu kommen, weil durch die serielle Datenverarbeitung der komplette Wert von Operanden und/oder berechneten Werten durch das beobachtete Register geschoben wird.
  • Ein Sicherheitsmechanismus gegen das Auslesen von Daten durch einen Angreifer ist die Maskierung von Daten. Typischerweise werden zur Maskierung von vertraulichen Daten und Operanden Secret-Sharing-Schemes verwendet. Bei einem d-aus-n Secret-Sharing-Scheme wird ein zu schützendes Bit b ∈ {0, 1} als Tupel (b1, ..., bn) ∈ {0, 1}n von n sogenannten Shares gespeichert, wobei gilt, dass
    • • aus der Kenntnis von beliebigen d Bits bi1, ..., bid des Tupels (b1, ..., bn) ∈ {0, 1}n mit 1 ≤ i1 < i2 < ... < id ≤ n der Wert des gespeicherten Bits b eindeutig rekonstruiert werden kann und
    • • die Kenntnis von weniger als d Bits des Tupels (b1, ..., bn) ∈ {0, 1}n keine Information (im informationstheoretischen Sinn) über das gespeicherte Bit liefert.
  • Ein d-aus-n Secret-Sharing-Scheme definiert eine Familie von Wahrscheinlichkeitsverteilungen mit den Eigenschaften, dass weniger als d Verteilungen statistisch unabhängig sind und d oder mehr Verteilungen voneinander abhängen, wobei die Abhängigkeit durch das zu schützende Bit b gegeben ist.
  • Bei einer einfachen Implementierung eines n-aus-n Secret-Sharing-Schemes werden n-1 identisch gleichverteilte und unabhängige Zufallsbits b1, ..., bn-1 erzeugt. Das Bit bn wird dann durch bn := b1 ⊕ ... ⊕ bn-1 ⊕ b definiert. Bei dieser Vorgehensweise wird die zu speichernde Information jedoch auf das n-fache vergrößert. Bei einem Langzahlrechenwerk ist die n-fache Berechnung und Speicherung der benötigten Langzahlen und Zwischenergebnisse typischerweise nicht praktikabel.
  • Alternativ kann die Prüfmatrix eines (n, k, d) linearen Codes mit Code-Wortlänge n, Dimension k und Minimaldistanz d zur Erzeugung geeigneter Maskierungen verwendet werden. Die Code-Wörter haben nach Konstruktion die Eigenschaft, dass keine Linearkombination aus weniger als d Code-Wörtern den Nullvektor ergeben kann. Wenn die Code-Wörter als die Spalten einer n × 2k Matrix M aufgefasst werden, so lassen sich durch Matrixmultiplikation r*M mit einem n-bit Zufallsvektor (Maskenerzeugungsvektor) r bis zu 2k Maskierungsbits erzeugen. Diese Maskierungsbits haben die Eigenschaft, dass bis zu d-1 maskierte Datenbits und Bits des Zufallsvektors keine Information über die maskierten Daten liefern. Mit Hilfe dieser Konstruktion ist es möglich, sehr kompakte d-aus-n Secret-Sharing-Schemes zu erzeugen, welche deutlich weniger Speicherplatz benötigen als das beschriebene einfache Maskierungsverfahren. Dabei werden lediglich die maskierten Daten und der Zufallsvektor r zur Erzeugung der Maskenbits gespeichert. Die zugehörigen Maskenbits können on-the-fly unter Verwendung der Matrix M zum Maskieren und Demaskieren von Daten berechnet werden und müssen daher nicht gespeichert werden.
  • Im Allgemeinen ist es bei d-aus-n Secret-Sharing-Schemes zur Maskierung vertraulicher Daten jedoch nicht möglich, alle zur Durchführung einer Multiplikation für Langzahlen benötigten Rechenoperationen direkt auf den maskierten Daten auszuführen. Um direkt mit maskierten Daten rechnen zu können, muss das verwendete Maskierungsverfahren geeignete Homomorphieeigenschaften aufweisen. Das bedeutet, dass die Schritte zur Datenmaskierung und die Rechenoperationen vertauscht werden können: Das Ergebnis darf sich nicht ändern, wenn zuerst die Daten bezüglich einer Rechenoperation verknüpft und anschließend maskiert werden oder wenn zuerst die Operanden maskiert und anschließend mit einer (dann möglicherweise unterschiedlichen) Rechenoperation verknüpft werden. Eine solche Homomorphie ermöglicht es, direkt mit maskierten Operanden zu rechnen.
  • Es ist möglich, effiziente Maskierungsschemata zu finden, welche mit einer der benötigten Rechenoperationen homomorph sind: So sind zum Beispiel lineare Codes über GF(2n) mit der bitweisen XOR(exklusives ODER)-Operation vertauschbar und Restklassencodes modulo Z/nZ mit der Integer-Addition vertauschbar. Es existieren aber häufig keine geeigneten Maskierungsverfahren, welche mit allen benötigten Rechenoperationen vertauschbar sind. Für den Fall eines Langzahlmultiplizierers für GF(2n) muss das Maskierungsverfahren mindestens mit der bitweisen XOR-Operation und Schiebe-Operationen vertauschbar sein. Das beschriebene einfache Maskierungsverfahren eines n-aus-n Secret-Sharing-Schemes besitzt zwar alle dafür benötigten Homomorphieeigenschaften, ist aber (wie auch andere zyklische lineare Codes) ineffizient bezüglich des notwendigen Speicherplatzes für die Shares der maskierten Daten.
  • Im Folgenden wird eine Vorgehensweise zur Konstruktion speicherplatzeffizienter Maskierungsschemata beschrieben, welche mit bitweiser XOR-Operation homomorph sind und nur wenige Bitfehler bezüglich der Homomorphie mit (zyklischen) Schiebe-Operationen aufweisen. Diese Eigenschaften sind ausreichend, um einen bezüglich Gatterkomplexität, Flächenbedarf und Leistungsaufnahme optimierten, vollständig maskiert rechnenden Langzahlmultiplizierer über GF(2n) implementieren zu können, wie er beispielsweise für kryptographische Protokolle basierend auf elliptischen Kurven über endlichen Körpern der Charakteristik 2 benötigt wird. Durch die Maskierungsschemata wird eine Randomisierung von internen Zuständen, welche von außen messbar sind, erreicht.
  • Gemäß verschiedenen Ausführungsformen besteht die Vorgehensweise darin, mehrere zyklische lineare (w, k, d) Codes über GF(2w) zu konkatenieren, so dass die Konkatenation der Maskierungsabbildungen, welche wie oben beschrieben aus den dualen Abbildungen der jeweiligen Teil-Code-Wörter gebildet werden, untereinander als Code verträglich ist und die Minimaldistanz der jeweils anderen Teil-Codes nicht reduziert. Nach Konstruktion ist das auf diese Weise gebildete Maskierungsschema direkt homomorph mit der XOR-Operation und bis zu d-1 maskierte Daten- und Zufallsbits verraten keine Information über die maskiert gespeicherten Daten.
  • Werden maskierte Daten zyklisch geschoben, so ist die Schiebe-Operation ebenfalls nach Konstruktion mit den jeweiligen, aus den zyklischen Code-Wörtern gebildeten Teilmasken bereits homomorph. Lediglich an den Übergangsstellen zwischen den Teilmasken (entsprechend den Übergangsstellen zwischen Blöcken von Codewörtern der konkatenierten Codes) können Fehler auftreten und die Maskierung des geschobenen Ergebnisses muss an diesen Übergangsstellen entsprechend korrigiert werden. Dazu ist aber nur ein Bruchteil des Aufwandes zur vollständigen Berechnung der Maskenbits des gesamten maskierten Datums notwendig. Und die benötigten Korrekturwerte sind vorab bekannte Funktionen der verwendeten Codes.
  • Diese Herangehensweise ermöglicht Folgendes:
    • • Die Masken zur Maskierung von Langzahlen können on-the-fly aus relativ kurzen Zufallsvektoren berechnet werden. Dadurch wird der Speicherbedarf zur Speicherung der maskierten Langzahlen im Vergleich zu der oben beschriebenen, einfachen Maskierungsmethode deutlich reduziert.
    • • Die zur Konstruktion der Maskierungsfunktionen verwendeten Teil-Codes sind nach Konstruktion homomorph mit der XOR-Operation und auf den jeweiligen Teil-Masken auch homomorph bezüglich Schiebe-Operationen.
    • • Die Konstruktion stellt sicher, dass das Maskierungsschema mit geringem Zusatzaufwand (an Flächenbedarf und Gatterkomplexität) zu einem bezüglich Schiebe-Operationen homomorphen Verfahren erweitert werden kann. Der zusätzliche Flächenbedarf und die zusätzliche Leistungsaufnahme der resultierenden Schaltung betragen nur einen Bruchteil des zur Berechnung des gesamten Maskierungsmusters notwendigen Aufwands.
  • Zur Verdeutlichung wird im Folgenden ein Beispiel eines Maskierungsschemas gemäß einem Ausführungsbeispiel angegeben, welches aus einem 20 Bit Zufallsstring eine 60 Bit Maske erzeugt. Dabei hat die Maske die Eigenschaft, dass ein Angreifer mindestens 5 Bits aus der Menge der maskierten Daten-Bits und/oder des verwendeten Zufallsstrings kennen muss, um ein einzelnes maskiertes Daten-Bit zu erlernen. (Das bedeutet, dass der zugehörige duale Code die Minimaldistanz 5 besitzt.)
  • Dazu wird die die folgende {0, 1} 20 × 60 Matrix M definiert:
    10000000000000010111 10000000000001100011 10000100000010000011
    11000000000000001011 11000000000000110001 11000010000001000001
    11100000000000000101 11100000000000011000 11100001000000100000
    11110000000000000010 01110000000000001100 01110000100000010000
    01111000000000000001 00111000000000000110 00111000010000001000
    10111100000000000000 00011100000000000011 00011100001000000100
    01011110000000000000 10001110000000000001 00001110000100000010
    00101111000000000000 11000111000000000000 00000111000010000001
    00010111100000000000 01100011100000000000 10000011100001000000
    00001011110000000000 00110001110000000000 01000001110000100000
    00000101111000000000 00011000111000000000 00100000111000010000
    00000010111100000000 00001100011100000000 00010000011100001000
    00000001011110000000 00000110001110000000 00001000001110000100
    00000000101111000000 00000011000111000000 00000100000111000010
    00000000010111100000 00000001100011100000 00000010000011100001
    00000000001011110000 00000000110001110000 10000001000001110000
    00000000000101111000 00000000011000111000 01000000100000111000
    00000000000010111100 00000000001100011100 00100000010000011100
    00000000000001011110 00000000000110001110 00010000001000001110
    00000000000000101111 00000000000011000111 00001000000100000111
  • Es ist erkennbar, dass M aus der Konkatenation von 3 Blöcken aus je 20 zyklischen Schiebeoperationen von Wörtern aus {0, 1}20 gebildet wurde. In jedem Teilblock bilden die Spalten der Matrix Code-Wörter eines Codes mit der Minimaldistanz 5. Außerdem wurden die Blöcke so gewählt, dass diese Eigenschaft für alle 60 Spalten der Matrix M erhalten bleibt. Daraus folgt insbesondere, dass jeweils bis zu 4 Spalten aus M über GF(2) linear unabhängig sind.
  • Zum Maskieren eines zu maskierenden Datenworts w ∈ {0, 1}60 wird folgendes durchgeführt:
    1. 1) Erzeugen eines 20 Bit-Zufallsstrings r ∈R {0, 1}20
    2. 2) Berechnen durch Matrixmultiplikation der 60 Bit-Maske m = r * M
    3. 3) Erzeugen des maskierten Datenworts f(w, r) := w' = w ⊕ m durch bitweise XOR-Verknüpfung mit der Maske.
  • Im Speicher werden lediglich das maskierte Datenwort und der Zufallsstring (w', r) ∈ {0, 1}80 abgespeichert.
  • Seien f(w1, r1), f(w2, r2) ∈ {0, 1}80 maskierte Datenwörter und bezeichne ROTL1(x) die zyklische Rotation eines Bit-Strings x um eine Stelle nach links. Dann gelten folgende Rechenregeln: f ( w 1 ,  r 1 ) f ( w 2 ,  r 2 ) = ( w 1 r 1 * M ) ( w 2 r 2 * M ) = w 1 w 2 ( r 1 r 2 ) * M = f ( ( w 1 w 2 ) , r 1 r 2 )  und 
    Figure DE102018113475A1_0001
    f ( ROTL1 ( w 1 ) , ROTL1 ( r 1 ) ) = ROTL1 ( f ( w 1 , r 1 ) ) + r 1 * E L ,
    Figure DE102018113475A1_0002
    wobei die Korrekturabbildung EL für das Rechenbeispiel durch die folgende {0, 1}20 × 60 Matrix gegeben ist:
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000001 00000000000000000000 00000000000000000001
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000001 00000000000000000000 00000000000000000001
    00000000000000000001 00000000000000000001 00000000000000000000
    00000000000000000001 00000000000000000001 00000000000000000000
    00000000000000000000 00000000000000000001 00000000000000000001
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000000 00000000000000000001 00000000000000000001
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000000 00000000000000000000 00000000000000000000
    00000000000000000000 00000000000000000000 00000000000000000000
  • Es folgt direkt aus der Konstruktion des Maskierungsverfahrens, dass die Matrix EL nur an den (rechten Rändern der) Übergangsstellen zwischen den Blöcken aus zyklischen Teil-Codes von 0 verschiedene Einträge haben kann.
  • Alle verwendeten Matrixmultiplikationen können durch kombinatorische Schaltungen mit geringer Tiefe aus XOR-Gattern realisiert werden.
  • Basierend auf den obigen Rechenregeln R1 und R2 kann ein vollständig maskiert arbeitender Multiplizierer für Langzahlen über einem endlichen Körper GF(260) konstruiert werden. Dazu werden gemäß einer Ausführungsform folgende weitere Hardware-Komponenten verwendet:
    • • Für eine sichere Implementierung eines GF(2n) Multiplizierers wird die Maskierung von Operanden und Zwischenergebnissen während verschiedener Arbeitsschritte mit neuen Zufallszahlen aufgefrischt. Dabei sollte die Vertraulichkeit der maskierten Daten natürlich nicht gefährdet werden. Um die Maskierung einer gespeicherten Langzahl (w1', r1) mit neuen Zufalls-Bits aufzufrischen, wird zunächst ein neuer Zufallsstring s erzeugt. Die maskiert gespeicherte Langzahl wird dann durch den Wert f(v1, r1 ⊕ s) = w1' ⊕ s * M ersetzt. Dabei werden zu keinem Zeitpunkt der Auffrischung nicht maskierte Bits der Langzahl berechnet oder verwendet.
    • • Wenn der Inhalt des Akkumulators während der Durchführung einer Multiplikation geschoben wird, werden neben der Rotation weitere Bits in Abhängigkeit vom aktuellen Wert des MSBs (höchstwertigen Bits) verändert. Dieser modulare Reduktionsschritt hängt bei einer Polynomialdarstellung der Körperelemente aus GF(2n) von einem irreduziblen Polynom p(x) ∈ GF(2)[x] vom Grad n ab, welches die konkrete Darstellung der Körperelemente als Koeffizientenvektoren eines Vektorraums der Dimension n über GF(2) festlegt. Durch die Rückkoppelung des maskierten Werts des höchstwertigen Bits an weitere Bit-Positionen gemäß p(x) werden die Maskierungen verschiedener Bits miteinander verknüpft und müssen anschließend durch geeignete Korrekturterme angepasst werden, um eine korrekt maskierte Darstellung des Ergebnisses zu erhalten. Eventuell kann durch diesen Schritt die Minimaldistanz des für die Konstruktion der Maskierungsmatrix M verwendeten dualen Codes reduziert werden. Um eine solche Reduktion der Minimaldistanz zu verhindern, kann das Zwischenergebnis der Rotation mit neuen Zufallszahlen aufgefrischt werden oder die Minimaldistanz des verwendeten dualen Codes geeignet erhöht werden.
    • • In Abhängigkeit von einem Bit des seriell verarbeiteten Operanden werden Partialprodukte des parallel verarbeiteten Operanden berechnet und zum aktuellen Inhalt des Akkumulators addiert. Um die Vertraulichkeit der Operanden nicht zu gefährden, werden diese maskiert gespeichert und auch die berechneten Partialprodukte müssen geeignet maskiert werden. Bei einem Multiplizierer über GF(2n) besteht die Berechnung der Partialprodukte aus einer bitweisen UND Verknüpfung des parallelen Operanden mit dem aktuell verarbeiteten Bit des seriellen Operanden. Zur sicheren Implementierung dieser UND Operationen können beispielsweise Threshold-Implementation Techniken verwendet werden, welche auch zur seitenkanalresistenten Implementierung von symmetrischen Verschlüsselungsfunktionen zum Einsatz kommen. Eine Schaltung analog zum Trichina-UND-Gatter ermöglicht eine vertrauliche Berechnung einer UND-Verknüpfung von in Shares vorliegenden booleschen Werten.
  • Analog zu dem oben beschriebenen Konstruktionsverfahren lässt sich eine Korrekturabbildung ER für die zyklische Rotation ROTR1(x) eines Bit-Strings x um eine Stelle nach rechts konstruieren. Auch für die Korrekturabbildung ER gilt, dass die zugehörige Matrix nur an den (linken Rändern der) Übergangsstellen zwischen den Blöcken aus zyklischen Teil-Codes von 0 verschiedene Einträge haben kann.
  • In einem Ausführungsbeispiel werden die Teilblöcke der Maskierungsmatrix M so gewählt, dass die Summe der Summanden in den Spalten der Korrekturabbildungen EL und/oder ER minimal ist. Das heißt, dass das Hamming-Gewicht der Matrizen der Korrekturabbildungen EL und/oder ER minimiert wird.
  • In einem weiteren Ausführungsbeispiel werden die Teilblöcke der Maskierungsmatrix M so gewählt, dass die maximale Anzahl der Summanden in den jeweiligen Spalten der Korrekturabbildungen EL und/oder ER minimal ist.
  • Im Folgenden wird ein Ausführungsbeispiel eines maskierten seriell-parallel Multiplizierers, beispielsweise zur Realisierung einer an ein Registerarray gekoppelten Recheneinheit zur Implementierung von kryptographischen Verfahren über binären elliptischen Kurven, beschrieben.
  • Eine elliptische Kurve kann über einem binären Erweiterungskörper GF(2n) = F2 n definiert werden (auch bekannt als binärer Körper oder Körper der Charakteristik 2), der durch ein Grad-n-Polynom f(x), das über GF(2) irreduzibel ist, als GF(2n) = F2[x]/(f(x)) definiert werden kann.
  • Ein Element a(z) ∈ GF(2n) kann als Polynom mit maximalem Grad n-1 mit binären Koeffizienten dargestellt werden. Addition von Körperelementen ist die Addition von binären Polynomen und Multiplikation erfolgt modulo f(x). Ein Körperelement a(x) = an-1xn-1 + ... + a1x + ao ∈ F2 n entspricht einem Vektor a = (an-1, ..., a1, a0). Die Addition in F2 n ist lediglich die XOR-Operation, die auf die entsprechenden zwei Vektoren angewendet wird (es findet keine Übertragspropagation statt, wie es bei elliptischen Kurven über GF(p) der Fall wäre). Für die Multiplikation kann die Schiebe- und-Addiere-Methode verwendet werden. Die Notation b(j) oder die alternative Notation bj wird verwendet, um den Zugriff auf das Bit j des n-Bit-Vektors b zu bezeichnen.
  • 2 veranschaulicht eine Realisierung einer Multiplikation in Hardware.
  • Sie weist eine ALU (Arithmetic Logic Unit) 200 auf, die Körperadditionen und Körpermultiplikationen ausführen kann. Die ALU 200 weist eine Steuerlogik 205 und ein Akkumulationsregister (Accu) 201 von n Bits auf, das mit einer Registerbank 202 verbunden ist, die eine bestimmte Anzahl von Operanden von n Bits in Operandenregistern 203, 204 und 206 enthält. Die Adresse, die an die Registerbank angelegt wird, wird so gewählt, dass auf zwei Operanden a, b ∈ GF(2n) von der ALU 200 zugegriffen werden kann. Der Einfachheit halber kann angenommen werden, dass die Registerbank 202 den Zugriff auf einen vollen n-Bit breiten Operanden a und auf ein Bit des n-Bit breiten Operanden b erlaubt. Die grundlegenden Operationen, die von der ALU ausgeführt werden, sind wie folgt:
    1. a) Laden eines Wertes in das Akkumulationsregister Accu 201 aus der Registerbank 202 und Zurückschreiben.
    2. b) Verschieben des Werts im Accu 201 nach links ohne modulare Reduktion durch f(x).
    3. c) Verschieben des Werts im Accu 201 nach links mit modularer Reduktion durch f (x). Dies entspricht einer Multiplikation mit der Unbestimmten x.
    4. d) Addition (d.h. XOR) eines Operanden zu dem Wert im Accu 201.
    5. e) Multiplikation von zwei Operanden a, b ∈ F2m so, dass Accu = ab mod f(x). Dies kann unter Verwendung des Links-nach-Rechts-Schiebe-und-Addiere-Algorithmus implementiert werden: Setze Accu = (Accu<<1) XOR bi*a mod f(x) für i von n-1 bis 0.
  • Um die Körpermultiplikation zu unterstützen, unterstützen die ALU 200 und die zugehörige Steuerlogik 205 eine Operation, die den Accu 201 mit Null initialisiert und dann für n Zyklen den Inhalt des Accus 201 nach links durch f (x) reduziert schiebt und abhängig von einem ausgewählten Bit bi des Operanden b der volle Operand a zum Inhalt des Accus 201 addiert wird. Dies ist eine Kombination der zuvor beschriebenen Grundoperationen.
  • Um Elliptische-Kurven-Kryptographie (ECC) durchzuführen, führt die Steuerlogik (Zustandsautomat) 205 eine gegebene Folge von Additionen und Multiplikationen aus und stellt die korrekten Adressen der Operanden der Registerbank 202 bereit (um die korrekten Operanden zu laden und zu speichern; beispielsweise Verwenden der richtigen Additionsformeln für den Verdopple-und-Addiere-Algorithmus oder den Montgomery-Ladder-Algorithmus) und schreibt das Endergebnis im Accu 201 an die richtige Position in die Registerbank 202. Dafür kann die Registerbank 202 auch zusätzliche temporäre Daten in einem oder mehreren weiteren Registern 206 enthalten, auf die während einer einzelnen Multiplikation nicht zugegriffen wird, die jedoch für die Implementierung der Additionsformeln der elliptischen Kurvenpunkte benötigt werden.
  • Ein typisches Problem ist, dass ein Angreifer, der in der Lage ist, Werte von einer Leitung, die zu dem Operandenregister 203 führt, das den Operanden b speichert, (z.B. hinter einem Multiplexer des Operandenregisters 203), zu lesen, den ganzen Wert von b auslesen kann, da bei der Multiplikation b normalerweise sequentiell (aufgrund des linksnach-rechts-Multiplikationsalgorithmus) abgerufen wird.
  • 3 zeigt eine maskierte ALU 300, die zur Maskierung einen Code mit Minimaldistanz d verwendet. Daher ist es für diese Implementierung erforderlich, dass ein Angreifer mindestens d Leitungen beobachtet, um eine sinnvolle Information über die verwendeten Operanden abzuleiten. Es wird jedoch angemerkt, dass die maskierte ALU keine Informationen des Steuerflusses schützt (z. B. Adressen von Operanden oder die Abfolge von mathematischen Operationen).
  • Wie die ALU 200 weist die ALU 300 einen Accu 301, eine Steuerlogik (nicht gezeigt) und eine Registerbank mit Operandenregistern 303, 304 auf.
  • Das Operandenregister 304 für den Wert b wird sequentiell ausgelesen (es wird zu jedem Zeitpunkt nur auf ein Bit zugegriffen).
  • Auf das Operandenregister 303 für den Wert n-Bit Wert a erfolgt voller (d.h. n-Bitbreiter) Zugriff.
  • In der obigen Notation wurde ein Zufallsvektor r εR {0, 1}1 der Länge 1 gewählt und r wurde zum Maskieren des Inhalts eines Registers der Länge n verwendet. Die zugehörige Matrix M besteht aus der Konkatenation von zyklischen Code-Matrizen der Dimension 1 x1.
  • Die Länge l eines Zufallswerts ist kürzer als die Länge eines Operanden (und Operandenregisters) der Länge n. Ein Wert wird unter Verwendung einer abgeleiteten Maske x' = r * M der Länge n maskiert.
  • Im Allgemeinen werden alle Variablen nur maskiert gespeichert (im Accu 301 und in der Registerbank) und auf maskierte Weise verarbeitet und Operationen werden auf eine solche Weise durchgeführt, dass der Wert nach einer Operation korrekt demaskiert werden kann.
  • Im Allgemeinen ist während einer Berechnung die Maskierung für jede Operation vorhanden und nur wenn ein Ergebnis und somit nicht sicherheitsrelevante Daten den Krypto-Kern verlassen wird die Maskierung entfernt.
  • Gegenüber der ALU 200 sind in der ALU 300 jedes Register 303, 304 in der Registerbank und das Akkumulationsregister Accu 301 durch Maskenregister 305, 306, 307 erweitert, um einen zusätzlichen 1-Bit-String zu speichern, der verwendet wird, um eine Maske für einen n-Bit-Datenwert abzuleiten.
  • Auf das Maskenregister 306 für die Maske am von a erfolgt voller (1-Bit breiter) Zugriff.
  • In dem Maskenregister 305 für die Maske bm von b wird auf das Bit der Maske bm*M zugegriffen, welches zu dem Bit des Operanden b gehört, auf das aktuell zugegriffen wird. Die Maskenregister 305, 306 für die Masken, die zu den Operandenregistern 303, 304 gehören, können auch Teil der Registerbank sein, die zusätzlichen Speicherplatz für Masken enthalten kann.
  • Um Register in der Registerbank zu bezeichnen, wird die Schreibweise r[i]* verwendet, um einen maskierten n-Bit-Wert zu bezeichnen, wobei i den Eintrag in der Registerbank spezifiziert (z. B. i ∈ 0..9 für eine Registerbank, die 10 maskierte Werte und ihre Masken speichern kann). Die 1-Bit-Maske, die r[i]* entspricht, wird als rm[i] bezeichnet. Der unmaskierte Wert r[i] kann somit durch Berechnen von rm[i] *M XOR r[i]* erhalten werden. Das Akkumulationsregister 301 wird ebenfalls erweitert: Die ALU 300 enthält ein n-Bit-Register Accu 301 für die maskierten Daten und ein zugehöriges 1-Bit-Maskenregister Accum 307 für die entsprechende Maske.
  • Die Operation (a), die Daten von der Registerbank an der Adresse i in das Akkumulationsregister Accu 301 lädt oder sie zurück in die Registerbank schreibt erfordert keine besonderen Maßnahmen: Ein maskierter Wert r[i]* und die entsprechende Maske rm[i] werden aus der Registerbank in das Register Accu 301 und Accum 307 kopiert. Speichern ist das Kopieren der Daten in Accu bzw. Accum zurück nach r[i]* bzw. rm[i].
  • Es wird eine zusätzliche Operation (a1) angewendet, um einen von einer externen Entität (z. B. einer Abfrage) erzeugten Wert in die Registerbank zu speichern und sie zu maskieren oder ein unmaskiertes (plain) Ergebnis (z. B. eine Koordinate einer berechneten Antwort) auszugeben. Dies ist möglich, da jede Operation (b, c, d, e) die Beziehung für einen Operanden a und seine maskierte Repräsentation a' und die Maske xa beibehält, für die gilt: a = a' XOR xa * M. Somit kann eine Einheit, die Zugriff auf den maskierten Wert und die Maske hat, die Lade- und Speicheroperationen an der Registerbank ausführen, wo unmaskierte Daten zum Ausgangsport der Einheit kopiert werden oder wo unmaskierte Daten in der Registerbank maskiert gespeichert werden.
  • Die Implementierung der XOR-Operation (d) ist aufgrund der Linearität unkompliziert. Zwei maskierte Werte a' = a XOR xa' und b' = b XOR x'b, die in der Registerbank als maskierte m-Bit-Werte a' = r[i]*, b' = r[j]* und 1-Bit-Maskenwerte xa = rm[i], xb = rm[j] gespeichert sind, werden durch Berechnung von Accu = c' = a' XOR b' (maskierter Wert) und Accum = xc = xa XOR xb (Masken) unabhängig verknüpft. Im Allgemeinen bedeutet dies, einen Operanden in Accu bzw. Accum zu laden und dann den anderen Operanden mittels XOR mit Accu bzw. Accum zu kombinieren und das Ergebnis zurück in die Registerbank zu schreiben. Die Maske x'c kann von c' entfernt werden durch: c '  XOR x x M = a XOR b = c .
    Figure DE102018113475A1_0003
  • Für die Ein-Position-Schiebevorgänge (b) ist nicht viel zusätzliche Logik erforderlich. Angenommen, ein maskierter Operand wurde in Accu 301 und seine Maske in Accum 307 geladen (wie für Operation (a) beschrieben). Ein nahezu korrektes Ergebnis kann erhalten werden, indem Accu 301 um eine Position nach links verschoben wird und Accum um eine Position nach links rotiert wird. Dies erfolgt in dem Maskenregister 307. An den Übergangsstellen zwischen den zyklischen Teil-Codes sind Korrekturen der verwendeten Masken notwendig.
  • Wenn eine Links-Schiebe-Operation zusammen mit einer Reduktion modulo f(x) (Operation (c)) berechnet wird, wird die Maskierung berücksichtigt. Eine effiziente Weise zum Implementieren der modularen Reduktion für nicht-maskierte Implementierungen, wenn f(x) = xn + xγ + xβ + xα + 1 und der n+1-Bit-Operand in dem Accu 301 gegeben ist, ist es, bedingt eine modulare Reduktion durchzuführen, wenn Accu(n) = 1 ist, indem die Bits in f(x) gesetzten Bits gesetzt bzw. XOR-verarbeitet werden: Accu(n) = 0, Accu(γ) = Accu(γ) XOR 1, Accu(β) = Accu(β) XOR 1, Accu(α) = Accu(α) XOR 1, Accu(0) = Accu(0) XOR 1.
  • Dies kann weiter vereinfacht werden, indem immer, bei jedem Nach-Links-Schieben, wobei Accu(n) nicht notwendigerweise gespeichert ist sondern auch on- the-fly beim Schieben erzeugt werden kann, berechnet wird: Accu(γ) = Accu(γ) XOR Accu(n), Accu(β) = Accu(β) XOR Accu(n), Accu(α) = Accu(α)XOR Accu(n), Accu(0) = Accu(0)XOR Accu(n), Accu(n) = 0.
  • Für die korrekte Funktionalität muss die Beziehung zwischen den maskierten Daten und der Maske beibehalten werden. Logisch muss eine Reduktion durchgeführt werden, wenn Accu(n) XOR Accum(n mod l) = 1, da dies der demaskierte logische Wert ist (es sollte beachtet werden, dass in diesem Zusammenhang die Variable n zwei unterschiedliche Bedeutungen hat).
  • Das Demaskieren kann jedoch zu einer Sicherheitslücke führen, da die Daten im Klartext (unmaskiert) verarbeitet werden. Deshalb kann auf der maskierten ALU 300 die modulare Reduktion modulo f(x) = xm + xγ + xβ + xα + 1 berechnet werden (integriert in das Verschieben nach links) als: Accu(γ) = Accu ( γ ) XOR Accu ( n ) XOR Accu m ( n mod l ) ,  Accu ( β ) = Accu ( β ) XOR Accu ( n ) XOR ALU m ( n mod l ) ,  ALU ( α ) = Accu ( α ) XOR Accu ( n ) XOR Accu m ( n mod l ) ,  Accu ( 0 ) = Accu ( 0 ) XOR Accu ( n ) XOR Accu m ( n mod l ) ,  Accu ( n ) = 0.
    Figure DE102018113475A1_0004
  • Idealerweise werden die beiden XORs bei Accu(n) und Accum(n mod l) auf eine Weise angeordnet, das kein Signal Klartext trägt, indem dazwischen ein frischer Zufallswert addiert wird.
  • Eine Multiplikation modulo f(x) im endlichen Körper (Operation (e)) verwendet die zuvor beschriebenen funktionalen Blöcke.
  • Die Linksverschiebung und die Reduktion in der Schleife von Operation (e) kann unter Verwendung der für Operation (c) beschriebenen Herangehensweise realisiert werden. Jedoch muss die bedingte parallele Addition des Operanden a abhängig von dem Wert des seriell ausgelesenen Operanden b(j) unter Berücksichtigung der Maskierung ausgeführt werden. Auf der Klartext- ALU 200 besteht diese Operation darin Accu(i) = Accu(i) XOR (b(j) AND a(i)) für i von 0 bis n-1 in jeder Iteration der Hauptschleife (d.h. der Schleife über die Stellen des Operanden b, j von n-1 bis 0) zu setzen, wobei das „falls“ als UND-Gatter 207 realisiert wird (Wert a wird nur XOR-verarbeitet falls b(j)=1).
  • Für die maskierte ALU 300 wird auf zwei maskierte Operanden zur Multiplikation a' = a XOR xa' und b' = b XOR x'b Bezug genommen, die in der Register-Datei als maskierte n-Bit-Werte a' = r[i]*, b' = r[j]* und 1-Bit-Maskenwerte xa = rm[i], xb = rm[j] gespeichert sind.
  • Eine Option ist es, b(j)plain = b'(j) XOR xb(j mod l) zu berechnen und dann die Addition auszuführen, falls b(j)plain = 1. Dies würde jedoch zu Operationen in Klartext führen.
  • Um eine sichere bedingte Addition von a', xa zu Accu bzw. Accum abhängige von dem Wert von b'(j) und xb(j mod l) in der Iteration j ∈ n - 1 to 0 zu erreichen, wird ein maskiertes und randomisiertes UND-Gatter für die parallele Addition kombiniert mit einer Maskenaktualisierung (bzw. Auffrischung) unter Verwendung von zufälligen oder pseudozufälligen Bits verwendet. Das maskierte UND-Gatter ähnelt einem maskierten Trichina-UND-Gatter. Die bedingte Addition von Operand a wird separat auf den maskierten Daten und auf der Maske durchgeführt. Dies erfolgt durch ein maskiertes UND (Operand) 308 und ein maskiertes UND (Maske) 309.
  • Das maskierte UND (Operand) 308 addiert abhängig von dem ausgelesenen Bit des Operands B und dem Maskenbit den Operanden a. Die Addition ist durch 1-Bits eines Zufallszahlengenerators 310 randomisiert. Die Auswahl von Partialprodukten ist damit geschützt.
  • Die Addition des Partialprodukts erfolgt durch ein erstes XOR 310 und die Addition der neu erzeugten Maske durch ein zweites XOR 311.
  • Zur Realisierung der Maskierten-UND-Operationen 308, 309 kann die in 4 dargestellte Schaltung verwendet werden.
  • 4 zeigt ein Gatter 400 zum Implementieren einer maskierten UND-Verknüpfung.
  • Die maskierte UND-Verknüpfung instanziiert für den Accu 301 n Instanzen eines einzelnen maskierten UND-Gatters für i von 0 bis n-1. Das Bit b (j) wird durch die Steuerlogik (Zustandsmaschine) für j von n-1 bis 0 ausgewählt. Zusätzlich wird das Gatter 400 für Accum 1-mal wiederholt, wobei Zugriffe auf b und a durch Zugriffe auf bm und am ersetzt werden.
  • Das Gatter 400 weist zwei UND-Gatter 401, 402 und zwei XOR-Gatter 403, 404 auf und berechnet u ( i ) = ( b ( j ) AND a ( i ) ) XOR ( ( b m ( j ) XOR a ( i ) ) XOR r ( i mod l ) ) = ( b ( j ) XOR b m ( j ) ) AND a ( i ) XOR r ( i mod l ) ,
    Figure DE102018113475A1_0005
    für die Eingänge des ersten UND-Gatters 401, das mit dem XOR 311 verbunden ist und u m ( i ) = ( b m ( j ) AND a m ( i ) ) XOR ( ( b m ( j ) XOR a m ( i ) ) XOR r ( i mod  l ) ) ,
    Figure DE102018113475A1_0006
    für die Eingänge des zweiten UND-Gatters 402, das mit ACCm(i) 307 verbunden ist.
  • Somit wird in der ALU 300 Accu ( i ) = Accu ( i ) XOR u ( i )  und Accu m ( i ) = Accu m ( i ) XOR u m ( i )
    Figure DE102018113475A1_0007
    berechnet. Das Gatter 400 führt die beabsichtigte Logik-Funktion für b(j) AND a(i) (für a, b in Klartext) auf geschützte Weise aus. Dabei sollte das maskierte UND-Gatter so gewählt werden, dass auch hier das Sicherheitslevel gegen Angriffe dem Sicherheitslevel der Maskierung angepasst ist.
  • Außerdem ist eine Korrekturschaltung 312 vorgesehen (vgl. Korrekturabbildung EL). Diese erhält l bits aus Accu_m 307. Die Ausgänge der Korrekturschaltung 312 sind mit XORs 313, 314, 315, 316 verbunden, an den die Korrekturschaltung 312 ein Korrekturbit liefert. Mittels seinen anderen Eingangs erhalten die XORs 313, 314, 315, 316 das zu korrigierende Bit des Accu 301. Das Ergebnis der XORs 313, 314, 315, 316 ist die durch die Korrekturschaltung 312 durchgeführten Korrektur und wird wieder dem Accu 301 zugeführt.
  • Eine zusätzliche Sicherheitsmaßnahme ist es, ein zufälliges Bit r zu dem seriell ausgelesenen Bit des maskierten Operanden b(j) und seiner Maske bm(j) zu addieren. Da das zufällige Bit zu beiden Shares addiert wird, beeinflusst es nicht die Korrektheit der Berechnung.
  • Die maskierte ALU (und ein entsprechendes Rechenwerk, das die maskierte ALU enthält) kann unabhängig und/oder ergänzend zu anderen Sicherheitsmechanismen in Kryptographieanwendungen, z.B. basierend auf elliptischen Kurven, angewendet werden. Insbesondere beeinflussen Randomisierungs- oder Blendungs-Gegenmaßnahmen wie eine randomisierte Darstellung elliptischer Kurvenpunkte in projektiven Koordinaten nicht die maskierte ALU.
  • Zusammenfassend wird gemäß verschiedenen Ausführungsformen ein Rechenwerk bereitgestellt, wie es in 5 dargestellt ist.
  • 5 zeigt ein Rechenwerk 500 gemäß einer Ausführungsform.
  • Das Rechenwerk 500 weist eine Maskenerzeugungsschaltung 501 auf, die eingerichtet ist, eine Maske durch Multiplikation eines Maskenerzeugungsvektors mit Blöcken von Codewörtern mehrerer zyklischer Codes zu erzeugen.
  • Das Rechenwerk 500 weist außerdem eine Maskierungsschaltung 502 auf, die eingerichtet ist, zu verarbeitende Daten mittels der Maske zu maskieren.
  • Ferner weist das Rechenwerk 500 eine arithmetisch-logische Einheit 503 auf, die eingerichtet ist, die maskierten Daten mittels Additionen und Rotationen zu verarbeiten.
  • In anderen Worten wird gemäß einer Ausführungsform ein Maskierungsvektor basierend auf einer Konkatenation von Codewort-Blöcken (Codewort-Matrizen) von zwei oder mehr unterschiedlichen zyklischen Codes erzeugt.
  • Die Codewörter der verschiedenen zyklischen Codes gehen durch Verschiebung auseinander hervor. In anderen Worten könnten für jeden der zyklischen Codes alle Codewörter erzeugt werden, indem ein beliebiges Codewort des Codes ausgewählt wird und zyklisch Bit für Bit verschoben wird, wobei nach jeder 1-Bit-Verschiebung ein neues Codewort entsteht.
  • Die Codes sind unterschiedlich insofern, dass sie sich in mindestens einem oder auch in mehreren oder allen Codewörtern unterscheiden.
  • Jeder der Codes hat mindestens eine vorgegebene minimale Hamming-Distanz und die Codes untereinander haben ebenfalls mindestens die vorgegebene minimale Hamming-Distanz.
  • Der Maskenerzeugungsvektor hat gemäß einer Ausführungsform die Länge eines Codeworts. Je mehr Blöcke von Codes verwendet werden, umso kleiner ist der Maskenerzeugungsvektor im Vergleich zum erzeugten Maskierungsvektor. Auf diese Weise ist der Speicherbedarf für die Maske (gegenüber der Verwendung eines vollen Maskierungsvektors) erheblich reduziert.
  • Insbesondere ermöglicht die Herangehensweise von 5 eine flächenoptimierte Implementierung eines vollständig maskiert arbeitenden Multiplizierers für Langzahlen über endlichen Körpern GF(2n).
  • Die Verarbeitung der Daten kann eine Multiplikation von zwei Operanden aufweisen, bei der die beiden Operanden mittels einer maskierten UND-Verknüpfung kombiniert werden. Dabei kann jeder UND-Verknüpfung die Maske (z.B. ein Maskenbit) aufgefrischt werden. In der Ausführungsform von 3 geht beispielsweise in die maskierten UND-Verknüpfungen 308, 309 Zufallsinformation aus dem RNG 310 ein. Dadurch werden die Inhalte von Accu 301 und Accu_m immer wieder neu basierend auf Zufallswerten maskiert.
  • Der Maskierungsmechanismus gemäß 5 erfordert gegenüber einem n-aus-n-Secret-Sharing-Scheme einen geringeren Hardwareaufwand, da keine n-fache Berechnung und Speicherung der benötigten Langzahlen und Zwischenergebnisse notwendig ist. Die Maskierung gemäß 5 kann mit deutlich weniger Hardwareaufwand (und dadurch mit reduziertem Energieverbrauch) oder bei einer Softwareimplementierung mit deutlich weniger Rechenoperationen und Speicherverbrauch realisiert werden. Somit kann effizient die Sicherheit von vertraulichen Daten gegen Angriffe gewährleistet werden. In diesem Zusammenhang ist anzumerken, dass anstelle einer Realisierung mittels dedizierter Hardwarekomponenten auch eine Realisierung in Software auf einem Mikrocontroller oder einer CPU (z.B. einer Chipkarte) möglich ist.
  • In Matrixform geschrieben wird der Maskierungsvektor durch Linksmultiplikation des Maskenerzeugungsvektors mit einer Matrix erzeugt, wobei die Matrix einer Konkatenation von Submatrizen entspricht, wobei jede Submatrix einem der Codes entspricht und aus Spalten besteht, wobei jede Spalte ein Codewort des Codes ist, wobei außerdem die Codewörter (d.h. Spalten) in der Submatrix derart angeordnet sind, dass zwei benachbarte Codewörter (Spalten) durch eine zyklische 1-Bit-Verschiebung auseinander hervorgehen. In anderen Worten sind in einer Submatrix die Codewörter des Codes in ihrer Reihenfolge aufgeschrieben, wie sie sich durch die Erzeugung der Codewörter durch zyklisches Verschieben eines der Codewörter nacheinander ergeben.
  • Die Daten werden beispielsweise im Rahmen einer kryptographischen Operation verarbeitet, beispielsweise für eine Entschlüsselung, Verschlüsselung, Signaturberechnung, Response-Berechnung für ein Challenge-Response-Verfahren etc.
  • 6 zeigt ein Flussdiagram 600, das ein Verfahren zum Rechnen mit maskierten Daten gemäß einer Ausführungsform veranschaulicht.
  • In 601 wird eine Maske durch Multiplikation eines Maskenerzeugungsvektors mit Blöcken von Codewörtern mehrerer zyklischer Codes erzeugt.
  • In 602 werden zu verarbeitender Daten mittels der Maske maskiert.
  • In 603 werden die maskierten Daten mittels Additionen und Rotationen verarbeitet.
  • Im Folgenden werden Ausführungsbeispiele angegeben.
  • Ausführungsbeispiel 1 ist ein Rechenwerk wie mit Bezug auf 5 beschrieben.
  • Ausführungsbeispiel 2 ist ein Rechenwerk gemäß Ausführungsbeispiel 1, wobei die arithmetisch-logische Einheit ein Akkumulationsschieberegister zum Verarbeiten der maskierten Daten aufweist.
  • Ausführungsbeispiel 3 ist ein Rechenwerk gemäß Ausführungsbeispiel 1 oder 2, wobei die Daten einen ersten Operanden und einen zweiten Operanden aufweisen und die arithmetisch-logische Einheit eingerichtet ist, den ersten Operanden und den zweiten Operanden zu rotieren, zu addieren oder beides.
  • Ausführungsbeispiel 4 ist ein Rechenwerk gemäß einem der Ausführungsbeispiele 1 bis 3, wobei die Daten einen ersten Operanden und einen zweiten Operanden aufweisen und die arithmetisch-logische Einheit eingerichtet ist, den ersten Operanden und den zweiten Operanden zu multiplizieren.
  • Ausführungsbeispiel 5 ist ein Rechenwerk gemäß Ausführungsbeispiel 4, aufweisend eine maskierte Auswahlschaltung, die zur Realisierung der Multiplikation eine maskierte UND-Verknüpfung des ersten Operanden und zweiten Operanden durchführt.
  • Ausführungsbeispiel 6 ist ein Rechenwerk gemäß Ausführungsbeispiel 5, wobei die maskierte Auswahlschaltung eingerichtet ist, die Maskierung der zu verarbeitenden Daten bei der maskierten UND-Verknüpfung aufzufrischen.
  • Ausführungsbeispiel 7 ist ein Rechenwerk gemäß einem der Ausführungsbeispiele 4 bis 6, wobei die Multiplikation eine Multiplikation über einem endlichen Körper GF(2n) ist.
  • Ausführungsbeispiel 8 ist ein Rechenwerk gemäß einem der Ausführungsbeispiele 1 bis 7, wobei jeder Block von Codewörtern aus den Codewörtern eines der zyklischen Codes besteht.
  • Ausführungsbeispiel 9 ist ein Rechenwerk gemäß einem der Ausführungsbeispiele 1 bis 8, aufweisend eine Korrekturschaltung die eingerichtet, durch Inhomogenität zwischen den Blöcken von Codewörtern entstehende Fehler zu korrigieren.
  • Ausführungsbeispiel 10 ist ein Rechenwerk gemäß Ausführungsbeispiel 9, wobei die Korrekturschaltung eingerichtet ist, die durch die Übergangsstellen zwischen den Blöcken von Codewörtern entstehenden Fehler zu korrigieren.
  • Ausführungsbeispiel 11 ist ein Rechenwerk gemäß Ausführungsbeispiel 9 oder 10, wobei die Korrekturschaltung eingerichtet ist, die durch die Übergangsstellen zwischen den Blöcken von Codewörtern entstehende mangelnde Homomorphie der Maskierung bezüglich der Verschiebung von Daten zu korrigieren.
  • Ausführungsbeispiel 12 ist ein Rechenwerk gemäß einem der Ausführungsbeispiele 1 bis 11, wobei alle Codes dieselbe Codewortlänge haben und die Codewortlänge gleich der Länge des Maskenerzeugungsvektors ist.
  • Ausführungsbeispiel 13 ist ein Rechenwerk gemäß einem der Ausführungsbeispiele 1 bis 12, wobei das Rechenwerk eingerichtet ist, die Daten zur Durchführung einer kryptographischen Operation zu verarbeiten.
  • Ausführungsbeispiel 14 ist ein Rechenwerk gemäß einem der Ausführungsbeispiele 1 bis 13, wobei die Daten eine Signatur, einen kryptographischen Schlüssel, zu verschlüsselnde Daten und/oder zu entschlüsselnde Daten repräsentieren.
  • Ausführungsbeispiel 15 ist ein Rechenwerk gemäß einem der Ausführungsbeispiele 1 bis 14, wobei der Maskenerzeugungsvektor ein zufällig erzeugter Vektor ist.
  • Ausführungsbeispiel 16 ist ein Rechenwerk gemäß einem der Ausführungsbeispiele 1 bis 15, wobei die mehreren zyklischen Codes unterschiedlich sind.
  • Ausführungsbeispiel 17 ist ein Verfahren zum Rechnen mit maskierten Daten wie mit Bezug auf 6 beschrieben.
  • Ausführungsbeispiel 18 ist ein Verfahren gemäß Ausführungsbeispiel 17, aufweisend das Verarbeiten der maskierten Daten mittels eines Akkumulationsregisters.
  • Ausführungsbeispiel 19 ist ein Verfahren gemäß Ausführungsbeispiel 17 oder 18, wobei die Daten einen ersten Operanden und einen zweiten Operanden aufweisen und der erste Operand und der zweite Operand rotiert, addiert oder beides werden.
  • Ausführungsbeispiel 20 ist ein Verfahren gemäß einem der Ausführungsbeispiele 17 bis 19, wobei die Daten einen ersten Operanden und einen zweiten Operanden aufweisen und die der erste Operand und der zweite Operand multipliziert werden.
  • Ausführungsbeispiel 21 ist ein Verfahren gemäß Ausführungsbeispiel 20, aufweisend Durchführen einer maskierten UND-Verknüpfung des ersten Operanden und zweiten Operanden die zur Realisierung der Multiplikation.
  • Ausführungsbeispiel 22 ist ein Verfahren gemäß Ausführungsbeispiel 21, aufweisend Auffrischen der Maskierung der zu verarbeitenden Daten bei der maskierten UND-Verknüpfung.
  • Ausführungsbeispiel 23 ist ein Verfahren gemäß einem der Ausführungsbeispiele 20 bis 22, wobei die Multiplikation eine Multiplikation über einem endlichen Körper GF(2n) ist.
  • Ausführungsbeispiel 24 ist ein Verfahren gemäß einem der Ausführungsbeispiele 17 bis 23, wobei jeder Block von Codewörtern aus den Codewörtern eines der zyklischen Codes besteht.
  • Ausführungsbeispiel 25 ist ein Verfahren gemäß einem der Ausführungsbeispiele 17 bis 24, aufweisend Korrigieren von durch Inhomogenität zwischen den Blöcken von Codewörtern entstehenden Fehlern.
  • Ausführungsbeispiel 26 ist ein Verfahren gemäß Ausführungsbeispiel 25, aufweisend Korrigieren von durch die Übergangsstellen zwischen den Blöcken von Codewörtern entstehenden Fehlern.
  • Ausführungsbeispiel 27 ist ein Verfahren gemäß Ausführungsbeispiel 25 oder 26, aufweisend Korrigieren von durch die Übergangsstellen zwischen den Blöcken von Codewörtern entstehende mangelnde Homomorphie der Maskierung bezüglich der Verschiebung von Daten.
  • Ausführungsbeispiel 28 ist ein Verfahren gemäß einem der Ausführungsbeispiele 17 bis 27, wobei alle Codes dieselbe Codewortlänge haben und die Codewortlänge gleich der Länge des Maskenerzeugungsvektors ist.
  • Ausführungsbeispiel 29 ist ein Verfahren gemäß einem der Ausführungsbeispiele 17 bis 28, wobei die Daten zur Durchführung einer kryptographischen Operation verarbeitet werden.
  • Ausführungsbeispiel 30 ist ein Verfahren gemäß einem der Ausführungsbeispiele 17 bis 29, wobei die Daten eine Signatur, einen kryptographischen Schlüssel, zu verschlüsselnde Daten und/oder zu entschlüsselnde Daten repräsentieren.
  • Ausführungsbeispiel 31 ist ein Verfahren gemäß einem der Ausführungsbeispiele 17 bis 30, wobei der Maskenerzeugungsvektor ein zufällig erzeugter Vektor ist.
  • Ausführungsbeispiel 32 ist ein Verfahren gemäß einem der Ausführungsbeispiele 17 bis 31, wobei die mehreren zyklischen Codes unterschiedlich sind.
  • Gemäß einem weiteren Ausführungsbeispiel wird ein Rechenwerk bereitgestellt aufweisend: Mittel zum Erzeugen einer Maske durch Multiplikation eines (beispielsweise zufällig erzeugten) Maskenerzeugungsvektors mit Blöcken von Codewörtern mehrerer zyklischer Codes, Mittel zum Maskieren zu verarbeitender Daten mittels der Maske, und Mittel zum Verarbeiten der maskierten Daten mittels Additionen und Rotationen.
  • Obwohl die Erfindung vor allem unter Bezugnahme auf bestimmte Ausführungsformen gezeigt und beschrieben wurde, sollte es von denjenigen, die mit dem Fachgebiet vertraut sind, verstanden werden, dass zahlreiche Änderungen bezüglich Ausgestaltung und Details daran vorgenommen werden können, ohne vom Wesen und Bereich der Erfindung, wie er durch die nachfolgenden Ansprüche definiert wird, abzuweichen. Der Bereich der Erfindung wird daher durch die angefügten Ansprüche bestimmt, und es ist beabsichtigt, dass sämtliche Änderungen, welche unter den Wortsinn oder den Äquivalenzbereich der Ansprüche fallen, umfasst werden.
  • Bezugszeichenliste
  • 100
    Verarbeitungsvorrichtung
    101
    CPU
    102
    RAM
    103
    nicht-flüchtiger Speicher
    104
    Kryptomodul
    105
    Bus
    106
    Analogmodul
    107
    Eingabe-/Ausgabeschnittstelle
    108-111
    Krypto-Kerne
    112
    Hardware-Zufallszahlengenerator
    200
    ALU
    201
    Akkumulator
    202
    Registerbank
    203, 204
    Operandenregister
    205
    Steuerlogik
    206
    weitere Register
    300
    maskierte ALU
    301
    Akkumulator
    303,304
    Operandenregister
    305-307
    Maskenregister
    308
    Maskiertes UND
    309
    Maskiertes UND
    310
    XOR
    311
    XOR
    312
    Korrekturschaltung
    313-316
    XORs
    400
    Gatter
    401,402
    UND
    403,404
    XOR
    500
    Rechenwerk
    501
    Maskenerzeugungsschaltung
    502
    Maskierungsschaltung
    503
    ALU
    600
    Flussdiagramm
    601-603
    Verarbeitungsschritte

Claims (17)

  1. Rechenwerk aufweisend: eine Maskenerzeugungsschaltung, die eingerichtet ist, eine Maske durch Multiplikation eines Maskenerzeugungsvektors mit Blöcken von Codewörtern mehrerer zyklischer Codes zu erzeugen, eine Maskierungsschaltung, die eingerichtet ist, zu verarbeitende Daten mittels der Maske zu maskieren, und eine arithmetisch-logische Einheit, die eingerichtet ist, die maskierten Daten mittels Additionen und Rotationen zu verarbeiten.
  2. Rechenwerk gemäß Anspruch 1, wobei die arithmetisch-logische Einheit ein Akkumulationsschieberegister zum Verarbeiten der maskierten Daten aufweist.
  3. Rechenwerk gemäß Anspruch 1 oder 2, wobei die Daten einen ersten Operanden und einen zweiten Operanden aufweisen und die arithmetisch-logische Einheit eingerichtet ist, den ersten Operanden und den zweiten Operanden zu rotieren, zu addieren oder beides.
  4. Rechenwerk gemäß einem der Ansprüche 1 bis 3, wobei die Daten einen ersten Operanden und einen zweiten Operanden aufweisen und die arithmetisch-logische Einheit eingerichtet ist, den ersten Operanden und den zweiten Operanden zu multiplizieren.
  5. Rechenwerk gemäß Anspruch 4, aufweisend eine maskierte Auswahlschaltung, die zur Realisierung der Multiplikation eine maskierte UND-Verknüpfung des ersten Operanden und zweiten Operanden durchführt.
  6. Rechenwerk gemäß Anspruch 5, wobei die maskierte Auswahlschaltung eingerichtet ist, die Maskierung der zu verarbeitenden Daten bei der maskierten UND-Verknüpfung aufzufrischen.
  7. Rechenwerk gemäß einem der Ansprüche 4 bis 6, wobei die Multiplikation eine Multiplikation über einem endlichen Körper GF(2n) ist.
  8. Rechenwerk gemäß einem der Ansprüche 1 bis 7, wobei jeder Block von Codewörtern aus den Codewörtern eines der nicht-systematischen zyklischen Codes besteht.
  9. Rechenwerk gemäß einem der Ansprüche 1 bis 8, aufweisend eine Korrekturschaltung die eingerichtet, durch Inhomogenität zwischen den Blöcken von Codewörtern entstehende Fehler zu korrigieren.
  10. Rechenwerk gemäß Anspruch 9, wobei die Korrekturschaltung eingerichtet ist, die durch die Übergangsstellen zwischen den Blöcken von Codewörtern entstehenden Fehler zu korrigieren.
  11. Rechenwerk gemäß Anspruch 9 oder 10, wobei die Korrekturschaltung eingerichtet ist, die durch die Übergangsstellen zwischen den Blöcken von Codewörtern entstehende mangelnde Homomorphie der Maskierung bezüglich der Verschiebung von Daten zu korrigieren.
  12. Rechenwerk gemäß einem der Ansprüche 1 bis 11, wobei alle Codes dieselbe Codewortlänge haben und die Codewortlänge gleich der Länge des Maskenerzeugungsvektors ist.
  13. Rechenwerk gemäß einem der Ansprüche 1 bis 12, wobei das Rechenwerk eingerichtet ist, die Daten zur Durchführung einer kryptographischen Operation zu verarbeiten.
  14. Rechenwerk gemäß einem der Ansprüche 1 bis 13, wobei die Daten eine Signatur, einen kryptographischen Schlüssel, zu verschlüsselnde Daten und/oder zu entschlüsselnde Daten repräsentieren.
  15. Rechenwerk gemäß einem der Ansprüche 1 bis 14, wobei der Maskenerzeugungsvektor ein zufällig erzeugter Vektor ist.
  16. Rechenwerk gemäß einem der Ansprüche 1 bis 15, wobei die mehreren zyklischen Codes unterschiedlich sind.
  17. Verfahren zum Rechnen mit maskierten Daten aufweisend: Erzeugen einer Maske durch Multiplikation eines Maskenerzeugungsvektors mit Blöcken von Codewörtern mehrerer zyklischer Codes, Maskieren zu verarbeitender Daten mittels der Maske, und Verarbeiten der maskierten Daten mittels Additionen und Rotationen.
DE102018113475.4A 2018-06-06 2018-06-06 Rechenwerk zum rechnen mit maskierten daten Pending DE102018113475A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102018113475.4A DE102018113475A1 (de) 2018-06-06 2018-06-06 Rechenwerk zum rechnen mit maskierten daten
US16/431,775 US11190337B2 (en) 2018-06-06 2019-06-05 Execution unit for calculations with masked data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102018113475.4A DE102018113475A1 (de) 2018-06-06 2018-06-06 Rechenwerk zum rechnen mit maskierten daten

Publications (1)

Publication Number Publication Date
DE102018113475A1 true DE102018113475A1 (de) 2019-12-12

Family

ID=68651280

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018113475.4A Pending DE102018113475A1 (de) 2018-06-06 2018-06-06 Rechenwerk zum rechnen mit maskierten daten

Country Status (2)

Country Link
US (1) US11190337B2 (de)
DE (1) DE102018113475A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021100538A1 (de) 2021-01-13 2022-07-14 Infineon Technologies Ag Schaltung und verfahren zur rotationsinvarianten ausführung einer oder mehrerer operationen mit mindestens einem operanden

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3101980B1 (fr) * 2019-10-11 2021-12-10 St Microelectronics Grenoble 2 Processeur
FR3101982B1 (fr) 2019-10-11 2024-03-08 St Microelectronics Grenoble 2 Détermination d'un bit indicateur
FR3101983B1 (fr) 2019-10-11 2021-11-12 St Microelectronics Grenoble 2 Détermination d'un bit indicateur
WO2021118816A1 (en) * 2019-12-10 2021-06-17 Cryptography Research, Inc. Share domain arrangements for masked hardware implementations
IT201900025567A1 (it) * 2019-12-24 2021-06-24 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
IT202000000886A1 (it) 2020-01-17 2021-07-17 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia su dati in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
IT202000006475A1 (it) * 2020-03-27 2021-09-27 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia su dati in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
US11500680B2 (en) * 2020-04-24 2022-11-15 Alibaba Group Holding Limited Systolic array-friendly data placement and control based on masked write
CN112181354B (zh) * 2020-10-12 2021-08-10 上海芯旺微电子技术有限公司 一种移位饱和同步处理的方法及其应用
CN112181355B (zh) * 2020-10-12 2021-08-06 上海芯旺微电子技术有限公司 一种移位饱和处理方法及其应用
AU2021468486A1 (en) * 2021-10-11 2024-03-14 Lexmark International, Inc Methods and systems for determining the authenticity of a component using elliptic-curve cryptography
CN114063973B (zh) * 2022-01-14 2022-04-22 苏州浪潮智能科技有限公司 伽罗华域乘法器及纠删编解码系统
US11924346B2 (en) * 2022-04-28 2024-03-05 Nxp B.V. Efficient and masked sampling of polynomials for lattice-based cryptography

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011012328A1 (de) * 2011-02-24 2012-08-30 Gottfried Wilhelm Leibniz Universität Hannover Verschlüsseltes Rechnen
US20140241522A1 (en) * 2013-02-25 2014-08-28 Peter Breuer Encrypted data processing
US20170244553A1 (en) * 2016-02-24 2017-08-24 Commissariat A L'energie Atomique Et Aux Energies Alternatives Method for confidential execution of a program operating on data encrypted by a homomorphic encryption
US9760737B2 (en) * 2015-06-12 2017-09-12 Qualcomm Incorporated Techniques for integrated circuit data path confidentiality and extensions thereof

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BE756180A (fr) * 1969-09-19 1971-02-15 Western Electric Co Central de commutation de communications
BE757040A (fr) * 1969-10-06 1971-03-16 Western Electric Co Procede pour actionner un systeme de traitement de donnees
US3818442A (en) * 1972-11-08 1974-06-18 Trw Inc Error-correcting decoder for group codes
FR2533091A1 (fr) * 1982-09-13 1984-03-16 Cii Honeywell Bull Systeme de detection et de correction d'erreurs de transmission d'un message binaire utilisant un code cyclique detecteur et correcteur d'erreurs de type reed-solomon entrelace
US6441810B1 (en) * 1995-10-31 2002-08-27 Lsi Logic Corporation Telemetry encoding technique for smart stylus
JP3327818B2 (ja) * 1997-08-29 2002-09-24 松下電器産業株式会社 プログラム変換装置及び記録媒体
US6025821A (en) * 1998-02-10 2000-02-15 Prince Corporation Drive system for vacuum fluorescent display and method therefor
FR2885711B1 (fr) * 2005-05-12 2007-07-06 Atmel Corp Procede et materiel modulaire et aleatoire pour la reduction polynomiale
US7802166B2 (en) * 2006-09-27 2010-09-21 Qimonda Ag Memory controller, memory circuit and memory system with a memory controller and a memory circuit
US8162222B2 (en) * 2008-01-25 2012-04-24 Intermec Ip Corp. System and method for identifying erasures in a 2D symbol
GB0809192D0 (en) * 2008-05-20 2008-06-25 Aspex Semiconductor Ltd Improvements to data compression engines
US8681569B2 (en) * 2012-02-22 2014-03-25 Silicon Motion, Inc. Method for reading data stored in a flash memory according to a threshold voltage distribution and memory controller and system thereof
EP2816496A1 (de) * 2013-06-19 2014-12-24 Sophia Genetics S.A. Verfahren zur Verwaltung von genomischen Rohdaten in einer Genbank mit Datenschutzvorkehrungen
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US9569616B2 (en) * 2013-12-12 2017-02-14 Cryptography Research, Inc. Gate-level masking
US9569405B2 (en) * 2014-04-30 2017-02-14 Google Inc. Generating correlation scores
WO2016015105A1 (en) * 2014-08-01 2016-02-04 National Ict Australia Limited Generating shares of secret data
CN107533623A (zh) * 2015-09-14 2018-01-02 慧与发展有限责任合伙企业 安全存储器系统
EP3437248A4 (de) * 2016-03-30 2019-11-06 The Athena Group, Inc. Schlüsselaktualisierung für maskierte schlüssel
US11418334B2 (en) * 2017-10-18 2022-08-16 Cryptography Research, Inc. Protecting modular inversion operation from external monitoring attacks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011012328A1 (de) * 2011-02-24 2012-08-30 Gottfried Wilhelm Leibniz Universität Hannover Verschlüsseltes Rechnen
US20140241522A1 (en) * 2013-02-25 2014-08-28 Peter Breuer Encrypted data processing
US9760737B2 (en) * 2015-06-12 2017-09-12 Qualcomm Incorporated Techniques for integrated circuit data path confidentiality and extensions thereof
US20170244553A1 (en) * 2016-02-24 2017-08-24 Commissariat A L'energie Atomique Et Aux Energies Alternatives Method for confidential execution of a program operating on data encrypted by a homomorphic encryption

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
BRINGER, J. et al.: Orthogonal direct sum masking. In: IFIP International Workshop on Information Security Theory and Practice. Springer, Berlin, Heidelberg, 2014. S. 40-56. *
GOLIC, Jovan Dj. Techniques for random masking in hardware. IEEE Transactions on Circuits and Systems I: Regular Papers, 2007, 54. Jg., Nr. 2, S. 291-300. *
Moradi, A.: Masking as a Side-Channel Countermeasure in Hardware. ISCISC 2016 Tutorial, Tehran, Sept. 2016. *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021100538A1 (de) 2021-01-13 2022-07-14 Infineon Technologies Ag Schaltung und verfahren zur rotationsinvarianten ausführung einer oder mehrerer operationen mit mindestens einem operanden
US11755321B2 (en) 2021-01-13 2023-09-12 Infineon Technologies Ag Circuit and method for the rotation-invariant execution of one or more operations with at least one operand

Also Published As

Publication number Publication date
US20190379529A1 (en) 2019-12-12
US11190337B2 (en) 2021-11-30

Similar Documents

Publication Publication Date Title
DE102018113475A1 (de) Rechenwerk zum rechnen mit maskierten daten
EP1472587B1 (de) Rechenwerk und verfahren zum ausfuehren einer arithmetischen operation mit verschluesselten operanden
US6578061B1 (en) Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon
EP1668515B1 (de) Wortindividuelle schlüsselerzeugung
DE102005028221B4 (de) Vorrichtung und Verfahren zum Schutz der Integrität von Daten
DE102011054410B4 (de) Vorrichtung und Verfahren zur Erzeugung einer Bitfolge
DE102018103408B3 (de) Integrierte schaltung und verfahren zum verarbeiten eines codierten nachrichtenworts
US11700111B2 (en) Platform neutral data encryption standard (DES) cryptographic operation
DE102017215331A1 (de) Kostengünstiger Kryptografiebeschleuniger
DE102017117899A1 (de) Durchführen einer kryptografischen Operation
DE102016120558A1 (de) Datenverarbeitungsvorrichtung und -verfahren für kryptographische verarbeitung von daten
WO2013060467A1 (de) Effiziente primzahlprüfung
EP1664979B1 (de) Übergang zwischen maskierten repräsentationen eines wertes bei kryptographischen berechnungen
Zheng et al. Constructing new APN functions through relative trace functions
Beierle et al. A further study of quadratic APN permutations in dimension nine
EP1999571B1 (de) Verfahren und vorrichtung zur reduktion eines polynoms in einem binären finiten feld, insbesondere im rahmen einer kryptographischen anwendung
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts
Liu et al. Quantum security of Grain-128/Grain-128a stream cipher against HHL algorithm
DE102004018874B4 (de) Verfahren und Vorrichtung zum Bestimmen eines Ergebnisses
DE102020134618A1 (de) Sicherheits-controller und verfahren zur verarbeitung von datenelementen eines datenfeldes
DE102020102796A1 (de) Datenverarbeitungsvorrichtung und verfahren zum verarbeiten von geheimen daten
DE102019121286B3 (de) Verarbeitung von aus einem Speicher gelesenen Daten
DE102021100538A1 (de) Schaltung und verfahren zur rotationsinvarianten ausführung einer oder mehrerer operationen mit mindestens einem operanden
DE102015121646A1 (de) Fehlerkorrektur
DE102020001148A1 (de) Nicht lineare selbst-inverse Permutationen für die Generierung von klonresistenten Geräten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication