DE102021120010B3 - Kryptografische verarbeitungsvorrichtung und verfahren zur durchführung einer gitterbasierten kryptografieoperation - Google Patents

Kryptografische verarbeitungsvorrichtung und verfahren zur durchführung einer gitterbasierten kryptografieoperation Download PDF

Info

Publication number
DE102021120010B3
DE102021120010B3 DE102021120010.5A DE102021120010A DE102021120010B3 DE 102021120010 B3 DE102021120010 B3 DE 102021120010B3 DE 102021120010 A DE102021120010 A DE 102021120010A DE 102021120010 B3 DE102021120010 B3 DE 102021120010B3
Authority
DE
Germany
Prior art keywords
secret
product
masking
masking component
processing device
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
DE102021120010.5A
Other languages
English (en)
Inventor
Peter Pessl
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 DE102021120010.5A priority Critical patent/DE102021120010B3/de
Priority to US17/878,085 priority patent/US11870901B2/en
Application granted granted Critical
Publication of DE102021120010B3 publication Critical patent/DE102021120010B3/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
    • 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • 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
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Storage Device Security (AREA)

Abstract

Gemäß verschiedenen Ausführungsformen wird eine kryptografische Verarbeitungsvorrichtung beschrieben, die Folgendes aufweist: einen Prozessor, der so eingerichtet ist, dass er eine Maskierungskomponente ermittelt, eine maskierte Version eines geheimen ersten Elements durch Maskieren mehrerer Komponenten des geheimen ersten Elements mit der Maskierungskomponente erzeugt, einen ersten Anteil des Produkts aus dem geheimen ersten Element und einem zweiten Element durch Multiplizieren des zweiten Elements mit der maskierten Version des geheimen ersten Elements ermittelt, Ermitteln eines zweiten Anteils des Produkts aus dem geheimen ersten Element und dem zweiten Element durch Multiplizieren des zweiten Elements mit der Differenz aus dem geheimen ersten Element und der maskierten Version des geheimen ersten Elements und Fortfahren mit einer gitterbasierten Kryptografieoperation unter Verwendung des ersten Anteils und des zweiten Anteils des Produkts.

Description

  • Die vorliegende Offenbarung betrifft kryptografische Verarbeitungsvorrichtungen und Verfahren zur Durchführung einer gitterbasierten Kryptografieoperation.
  • Mit der Entwicklung von Quantencomputern werden Alternativen zu klassischen asymmetrischen Kryptosystemen wie RSA (Rivest Shamir Adleman) und ECC (Elliptic Curve Cryptography) untersucht, die von Quantencomputern nicht angegriffen werden können. Derzeit sind Quantencomputer, die ausreichend leistungsfähig sind, aufgrund der technischen Komplexität und der technischen Herausforderungen noch nicht verfügbar, aber sobald sie gebaut sind, werden sie in der Lage sein, RSA und ECC in polynomialer Zeit zu brechen. Daher untersuchen Normungsgremien wie das NIST (National Institute of Standards and Technology) nun aktiv alternative Kryptosysteme.
  • Schemata, die Angriffen von Quantencomputern widerstehen sollen, sind unter anderem gitterbasierte Verschlüsselungs-, Schlüsselaustausch- oder Signaturschemata für öffentliche Schlüssel. Sie könnten die Nachfolger von RSA und ECC werden und arbeiten typischerweise auf großen Matrizen (Standardgitter) oder Polynomringen (ideale Gitter). Dementsprechend beinhaltet die Ausführung der meisten gitterbasierten kryptografischen Verfahren irgendeine Form der Multiplikation von großen Matrizen, Vektoren oder Polynomen. Dies führt bereits zu einem hohen Speicherbedarf, der durch weitere Schutzmaßnahmen noch erhöht wird, die in der Regel erforderlich sind, um die Implementierung der Kryptosysteme sicher zu machen, beispielsweise Maskierung zum Schutz vor Seitenkanalangriffen. Dies kann zu einem Speicherbedarf führen, der von Sicherheitscontrollern (z.B. auf einer Chipkarte) möglicherweise nicht erfüllt werden kann, was zu Sicherheitsproblemen für Sicherheitscontroller führt, zumindest wenn große Quantencomputer verfügbar werden. Daher sind Ansätze wünschenswert, die eine sichere Implementierung von Post-Quantum-Kryptosystemen, insbesondere von gitterbasierten kryptografischen Verfahren, auf Sicherheitscontrollern ermöglichen.
  • Verfahren zum Schutz vor Seitenkanalangriffen sind bekannt aus REPARAZ, O. [et al.]: A Masked Ring-LWE Implementation. In: 17th International Workshop on Cryptographic Hardware and Embedded Systems (CHES 2015), LNCS 9293, 2015, S. 683-702. DOI: 10.1007/978-3-662-48324-4_34; und ODER, T. [et al.]: Practical CCA2-Secure and Masked Ring-LWE Implementation. In: IACR Transactions on Cryptographic Hardware and Embedded Systems, Vol. 2018, 2018, No.1, S. 142-174. DOI: 10.13154/tches.v2018.i1.142-174.
  • Gemäß verschiedenen Ausführungsformen wird eine kryptografische Verarbeitungsvorrichtung bereitgestellt, die einen Prozessor aufweist, der so eingerichtet ist, dass er eine Maskierungskomponente ermittelt, eine maskierte Version eines geheimen ersten Elements durch Maskieren mehrerer Komponenten des geheimen ersten Elements mit der Maskierungskomponente erzeugt, einen ersten Anteil des Produkts aus dem geheimen ersten Element und einem zweiten Element durch Multiplizieren des zweiten Elements mit der maskierten Version des geheimen ersten Elements ermittelt, einen zweiten Anteil des Produkts aus dem geheimen ersten Element und dem zweiten Element durch Multiplizieren des zweiten Elements mit der Differenz aus dem geheimen ersten Element und der maskierten Version des geheimen ersten Elements ermittelt und mit einer gitterbasierten Kryptografieoperation unter Verwendung des ersten Anteils und des zweiten Anteils des Produkts fortfährt. Das geheime erste Element kann ein Vektor aus Polynomen sein, das zweite Element kann eine Matrix aus Polynomen sein und die Maskierungskomponente kann ein Polynom sein. Alternativ kann das geheime erste Element ein Polynom sein und die Maskierungskomponente kann ein Koeffizient für ein Polynom sein.
  • Gemäß einer weiteren Ausführungsform wird ein Verfahren zur Durchführung einer gitterbasierten Kryptografieoperation gemäß der obigen kryptografischen Verarbeitungsvorrichtung bereitgestellt.
  • In den Zeichnungen beziehen sich ähnliche Bezugszeichen im Allgemeinen auf die gleichen 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 ein Beispiel für eine Verarbeitungsvorrichtung zeigt, die gitterbasierte Kryptografie unterstützt.
    • 2 ein Diagramm zeigt, das die Verarbeitung einer kryptografischen Verarbeitungsvorrichtung gemäß einer Ausführungsform veranschaulicht.
    • 3 ein Verfahren zur Durchführung einer gitterbasierten Kryptografieoperation veranschaulicht.
  • Die folgende detaillierte Beschreibung bezieht sich auf die beigefügten Zeichnungen, die zur Veranschaulichung spezifische 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 Schutzbereich 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 hierin beschriebenen Beispiele können als Anweisungen realisiert werden, die von einem Prozessor einer Verarbeitungsvorrichtung verarbeitet werden, beispielsweise einem Personal Computer, einem Mikrocontroller, einer Chipkarte, einem sicheren Mikrocontroller, einer Hardware-Vertrauensbasis, einem (eingebetteten) sicheren Element (ESE), einem Trusted Platform Module (TPM) oder einem Hardware-Sicherheitsmodul (HSM).
  • 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 (die z.B. ein Anwendungsprozessor sein kann) durch einen gemeinsamen Bus 105, an den jedes Kryptomodul 104 angeschlossen ist, Zugriff auf mindestens ein Kryptomodul 104 (das Teil eines Hardware-Sicherheitsmoduls sein kann). Der gemeinsame Bus ist nur ein Beispiel, und es kann individuelle Schnittstellen zwischen den verschiedenen Komponenten geben. Jedes Kryptomodul 104 kann insbesondere einen oder mehrere Kryptokerne umfassen, um ermittelte kryptografische Operationen durchzuführen.
  • Beispielhafte Kryptokerne 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 vorgesehen sein.
  • Die CPU 101, der Hardware-Zufallszahlengenerator 112, der NVM 103, das Kryptomodul 104, der RAM 102 und die Eingabe-/Ausgabeschnittstelle 107 sind mit dem Bus 105 verbunden. Die Eingabe-/Ausgabeschnittstelle 107 kann eine Verbindung 114 zu anderen Vorrichtungen haben, die 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 zur Steuerung der Schaltkreise der Verarbeitungsvorrichtung 100 verwendet und kann es insbesondere der Eingabe-/Ausgabeschnittstelle ermöglichen, Verbindungen zu anderen Vorrichtungen über die Verbindung 114 herzustellen und/oder aufrechtzuerhalten.
  • Der Bus 105 selbst kann maskiert oder 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. Erweiterung von Pseudozufallsdaten). Zufallszahlen (z.B. für Masken) werden vom Hardware-Zufallszahlengenerator 112 zugeführt.
  • Die im Folgenden beschriebenen Verarbeitungen und Algorithmen können ausschließlich oder zumindest teilweise auf dem Kryptomodul 104 durchgeführt werden, z.B. auf dem gitterbasierten Kryptokern 108 (obwohl sie auch auf der CPU 101 ausgeführt werden können, falls kein entsprechendes Kryptomodul auf der Verarbeitungsvorrichtung 100 vorhanden ist). Ein Kryptomodul 104 kann mit hardwarebasierten Sicherheitsmerkmalen ausgestattet sein, muss es aber nicht. Bei solchen hardwarebasierten Sicherheitsmerkmalen könnte es sich um Schaltungen handeln, die Gegenmaßnahmen gegen Seitenkanal-Leistungsanalyse oder Fehlerinjektion (z.B. mit einem Laser) implementieren. Dazu gehört insbesondere die Maskierung, d.h. die Aufteilung der geheimen Daten in mehrere Anteile. Solche Gegenmaßnahmen können durch den Einsatz 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.
  • Zur Durchführung der im Folgenden beschriebenen Verfahren können Anweisungen im gitterbasierten Kryptokern 108 gespeichert sein oder von der CPU 101 über den Bus 105 bereitgestellt werden. Die Daten können lokal im gitterbasierten Kryptokern 108 gespeichert werden. Es besteht auch die Möglichkeit, dass die Daten im RAM 102 oder im NVM 103 zwischengespeichert werden. Der gitterbasierte Kryptokern 108 kann auch andere Kryptomodule verwenden, um unterstützende Funktionen bereitzustellen (z.B. die Erweiterung von Pseudozufallsdaten). Der gitterbasierte Kryptokern 108 kann auch einen Hardware-Zufallszahlengenerator 112 oder ein Mittel zum Erzeugen physikalischer und/oder Software-Zufallszahlen (z.B. für Masken) aufweisen.
  • Der gitterbasierte Kryptokern 108 kann Operationen wie Polynomaddition oder Polynommultiplikation auf Datenstrukturen wie Arrays von Koeffizienten oder das Sampling von Zufallspolynomen unterstützen.
  • In einem anderen Fall können die hier beschriebenen Verfahren zumindest teilweise als fixierter CMOS-Schaltkreis im gitterbasierten Kryptokern 108 realisiert sein, der nicht direkt von der CPU 101 gesteuert wird und bei dem keine Zwischenwerte außerhalb des Kryptokerns 108 verfügbar sind. Darüber hinaus kann der Beschleuniger spezielle, in der Literatur beschriebene Verfahren wie NewHope-Schlüsselaustausch, Kyber-Kapselung öffentlicher Schlüssel, Dilithium-Signaturverfahren oder Frodo-Verschlüsselung öffentlicher Schlüssel implementieren. In diesem Fall stehen der CPU 101 nur High-Level Funktionalität zur Verfügung. Beispielsweise kann eine Signatur erzeugt werden, indem eine Nachricht und ein privater Schlüssel an den gitterbasierten Kryptokern 108 über den Bus 105 übertragen werden und dann wird eine Dilithium-Signatur berechnet, die von der CPU 101 über den Bus 105 zur weiteren Verarbeitung abgerufen wird.
  • 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 mit Strom 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, einem Mikrocontroller, einem FPGA oder einem System-auf-Chip (SoC) eines Smartphones oder anderen Komponenten eines Smartphones gekoppelt sein. Die Verarbeitungseinheit 100 kann ein Chip sein, der als Trusted Platform Module (TPM) fungiert und kryptografische Funktionen (sichere Speicherung, sichere Zeit, Signaturerstellung und -validierung, Beglaubigung) gemäß einer standardisierten Schnittstelle einem Computer, einem Smartphone, einer Internet-of-Things-Vorrichtung (IoT) oder einem Auto anbietet.
  • Die Ausführung der meisten gitterbasierten kryptografischen Verfahren beinhaltet eine Form der Multiplikation großer Matrizen, Vektoren oder Polynomen, die jeweils aus vielen Werten bestehen, die in der Regel kleiner als 32 Bit sind. Im gitterbasierten digitalen Signaturverfahren Dilithium müssen beispielsweise Operationen der Form b=A·s durchgeführt werden, wobei A eine öffentliche (k×k)Matrix ist und b,s geheime Vektoren der Länge k sind. Jedes Element in b,A,s ist ein Polynom der Länge n = 256, wobei jeder Polynomkoeffizient modulo einer 23-Bit-Primzahl q genommen wird. Dieser Matrix-Vektor und die damit verbundenen Polynom-Multiplikationen sind teuer bezogen auf die Laufzeit, und die Speicherung der Eingaben/Ausgaben erfordert viel Speicher. Für den kleinsten Dilithium-Parametersatz (k=4) benötigen s und b jeweils 4kB Speicherplatz.
  • Der Vektor s ist normalerweise geheim und muss gegen Seitenkanalangriffe geschützt werden. Dies kann durch die Verwendung von Maskierung geschehen. Dabei wird s durch zwei (oder mehr) Vektoren (Anteile) s',s" so dargestellt, dass s = s'+ s" ist, aber die beiden Anteile für sich genommen statistisch unabhängig von s sind. Dies wird typischerweise durch eine zufällige Stichprobe von s" und anschließende Berechnung von s'=s-s" erreicht. Der Vektor s" kann als eine Maske für den Vektor s und der Vektor s'' als die maskierte Version von s angesehen werden.
  • Eine maskierte Matrix-Vektor-Multiplikation wird dann mittels A ·s = (A ·s') + (A · s") = (b') + (b") durchgeführt. Die Klammern bedeuten, dass die Anteile getrennt berechnet werden und dass die beiden Ergebnisanteile auch maskiert verwendet und nicht direkt rekombiniert werden müssen.
  • Eine einfache Umsetzung dieses Maskierungsansatzes erfordert die Berechnung von zwei (statt einer) Matrix-Vektor-Multiplikationen. Da eine solche Multiplikation in der Regel sehr kostspielig ist, kann ihre Verdoppelung die Gesamtberechnungszeit erheblich erhöhen. Auch der Speicherbedarf verdoppelt sich, da beide Anteile von s und b gespeichert werden müssen. Dies ist problematisch für ressourcenbeschränkte Verarbeitungsvorrichtungen, z.B. Sicherheitscontroller in Chipkarten.
  • In Anbetracht dessen wird gemäß verschiedenen Ausführungsformen ein Ansatz bereitgestellt, der die Durchführung einer maskierten Multiplikation mit deutlich weniger Ressourcen ermöglicht. Sowohl die Laufzeit als auch der Speicher-Overhead werden reduziert, und zwar von ursprünglich einem Faktor zwei auf einen konstanten Anstieg (unabhängig von z.B. k).
  • Gemäß einer Ausführungsform ist eine Grundidee des vorgestellten Ansatzes darin zu sehen, dass einer der beiden Anteile aus mehreren Kopien eines kleineren Elements (das als Maskierungskomponente bezeichnet wird) zusammengesetzt ist, d.h. Maskierungskomponenten (bei der Bildung eines Anteils) wiederzuverwenden. Da mehrere Einträge von A dann mit demselben Wert multipliziert werden, kann man die Multiplikation mit diesem komprimierten Anteil beschleunigen, indem man die Zeilensummen von A vorberechnet und dann das wiederverwendete Element mit den Zeilensummen multipliziert (wie unten näher beschrieben wird). Darüber hinaus kann eine unabhängige Abtastung einer Ausgabemaske (ebenfalls in komprimierter Form) verwendet werden, um eine versehentliche Demaskierung zu verhindern, und ermöglicht außerdem die Speicherung eines Anteils des Produkts in komprimierter Form.
  • Im Folgenden werden nähere Erläuterungen und Beispiele gegeben. Zum leichteren Verständnis dieser Beispiele können Vektor- und Matrixelemente als Skalare betrachtet werden. In Wirklichkeit (z.B. bei der Verwendung von Dilithium) handelt es sich jedoch um Polynome, was gewisse Anpassungen erforderlich machen kann.
  • Für den Fall, dass k = 3 ist, kann man b = A · s schreiben als ( b 0 b 1 b 2 ) = ( a 00 a 01 a 02 a 10 a 11 a 12 a 20 a 21 a 22 ) ( s 0 s 1 s 2 ) ,
    Figure DE102021120010B3_0001
    wobei jedes Element von A, s, und b ein Polynom im Ring Rq = ℤq[x]/(xn + 1) ist, mit n = 256 und q einer kleinen, z.B. 23 Bit, Primzahl.
  • Wie oben beschrieben, würde man unter Verwendung einer einfachen Maskierung s aufteilen, indem man eine Zufallsstichprobe s" zieht, und dann die Anteile wie folgt definiert ( s 0 s 1 s 2 ) = ( s 0 ' s 1 ' s 2 ' ) + ( s 0 ' ' s 1 ' ' s 2 ' ' ) = ( s 0 s 0 ' ' s 1 s 1 ' ' s 2 s 2 ' ' ) + ( s 0 ' ' s 1 ' ' s 2 ' ' )
    Figure DE102021120010B3_0002
    und schließlich b' = A · s' und b" = A · s" getrennt berechnet. Dieser Ansatz verdoppelt in etwa die Speicher- und Laufzeitanforderungen der Multiplikation.
  • Gemäß einer Ausführungsform wird s stattdessen wie folgt maskiert. ( s 0 s 1 s 2 ) = ( s 0 ' s 1 ' s 2 ' ) + ( m m m ) = ( s 0 m s 1 m s 2 m ) + ( m m m )
    Figure DE102021120010B3_0003
  • Das heißt, das Maskenpolynom m (allgemein als Maskierungskomponente bezeichnet) wird k=3 Mal wiederverwendet. Da nur eine Kopie von m gespeichert werden muss (anstelle des vollständigen Vektors s"), verringert sich der Speicherbedarf für die Speicherung der gemeinsamen Version von s von 2k = 6 Polynomen auf k + 1 = 4 Polynome.
  • Da s mit einer Matrix multipliziert wird, kann durch die mehrfache Verwendung eines Maskenpolynoms auch die Laufzeit der maskierten Multiplikation verringert werden.
  • Betrachten wir die Multiplikation der ersten Zeile von A mit s". Dies kann wie folgt vereinfacht werden: ( a 00 a 01 a 02 ) ( m m m ) = a 00 m + a 01 m + a 02 m = ( i a 01 m )
    Figure DE102021120010B3_0004
  • Die Zeilensumme ∑ia0i kann entweder vorberechnet werden (falls A statisch ist, z.B. Teil des öffentlichen Schlüssels) oder im laufenden Betrieb mit deutlich verringerter Laufzeit berechnet werden (im Vergleich zur Verwendung von k Polynommultiplikationen). Die gesamte maskierte Multiplikation von A·s kann also wie folgt geschrieben werden: A s = ( ( a 00 a 01 a 02 a 10 a 11 a 12 a 20 a 21 a 22 ) ( s 0 ' s 1 ' s 2 ' ) ) + ( ( i a 0 i i a 1 i i a 2 i ) m )
    Figure DE102021120010B3_0005
  • Die direkte Durchführung der Multiplikation wie oben beschrieben kann zu zwei Problemen führen. Erstens muss die maskierte Ausgabe der Multiplikation unter Verwendung von 2k Polynomen gespeichert werden, wodurch die Einsparungen durch die Wiederverwendung von Masken möglicherweise zunichte gemacht werden.
  • Zweitens könnte die Ausgabe der Multiplikation versehentlich unmaskiert werden. Betrachten wir das mögliche Szenario, dass Σia0i = 0 und folglich (Σia0i) · m = 0. Dann muss die erste Zeile von A · s' gleich A · s sein. Mit anderen Worten, ein Teil des maskierten Produkts wird demaskiert. Die Matrix Aist in der Regel entweder dem Angreifer bekannt oder er kann sie sogar selbst wählen. Der Angreifer kann also auf das Eintreten dieses Szenarios testen oder es sogar erzwingen.
  • Beide Probleme lassen sich vermeiden, indem zunächst eine Ausgangsmaskierungskomponente u abgetastet und dann das Produkt unter Verwendung der genannten Maske berechnet wird, die aus Kopien der Ausgangsmaskierungskomponente u besteht (so dass die Ausgangsmaske wiederum komprimiert gespeichert werden kann). Dann wird die Multiplikation zu: A s = ( ( u u u ) ) + ( ( u u u ) + ( a 00 a 01 a 02 a 10 a 11 a 12 a 20 a 21 a 22 ) ( s 0 ' s 1 ' s 2 ' ) + ( i a 0 i i a 1 i i a 2 i ) m )
    Figure DE102021120010B3_0006
  • Dabei kann ( u u u )
    Figure DE102021120010B3_0007
    als Ausgabemaske betrachtet werden, die aus der Ausgabemaskierungskomponente u gebildet wird.
  • Mit der obigen Formulierung können sowohl die Eingabe als auch die Ausgabe der Multiplikation komprimiert gespeichert werden (d.h. jedes Mal k + 1 anstelle von 2k Polynomen). Für den rechten Teil von Gleichung (6) ist es wichtig, die Summation mit -u zu initialisieren, um das Risiko einer Demaskierung zu vermeiden. Dies bedeutet, dass es vermieden werden sollte, die obigen Berechnungen in der Reihenfolge zu berechnen von z.B. ( a 00 s 0 ' + a 01 s 1 ' + a 02 s 2 ' + ( i a 0 i ) m ) u ,
    Figure DE102021120010B3_0008
    da der Zwischenwert in den Klammern dem unmaskierten Ergebnis entspricht.
  • Stattdessen kann man z.B. berechnen ( ( ( ( u + a 00 s 0 ' ) + a 01 s 1 ' ) + a 02 s 2 ' ) + ( i a 0 i ) m ) .
    Figure DE102021120010B3_0009
  • Die genaue Reihenfolge ist nicht wichtig, aber es muss sichergestellt sein, dass u in der innersten Klammer enthalten ist.
  • In Kyber, Dilithium und bestimmten anderen Verfahren wird die Polynom-Multiplikation üblicherweise mit der Zahlentheoretischen Transformation (NTT) durchgeführt, die als zahlentheoretisches Analogon zur Diskreten FourierTransformation betrachtet werden kann. Mit Hilfe des Faltungstheorems können Polynommultiplikationen wie folgt berechnet werden a b = INTT ( NTT ( a ) NTT ( b ) ) = INTT ( a _ b _ )
    Figure DE102021120010B3_0010
    wobei ⊙ eine punktweise Multiplikation und a die NTT-Transformierte des Polynoms a bezeichnet. Dies reduziert die Laufzeit von n2 auf n log n. Da die NTT eine lineare Transformation ist, kann man eine Summe von Produkten berechnen, indem man die punktweisen Multiplikationen aufsummiert und dann nur eine einzige inverse NTT (INTT) auf das Ergebnis durchführt. Dies bedeutet, dass eine Multiplikation gemäß (6) mit den folgenden Operationen durchgeführt werden kann:
    1. 1. Ziehe ein zufälliges m direkt im NTT-Bereich
    2. 2. Ziehe ein zufälliges u und berechne u
    3. 3. Berechne INTT ( ( ( ( u _ + a 00 s 0 ' _ ) + a 01 _ s 1 ' _ ) + a 02 _ s 2 ' _ ) + ( ( i a 0 i _ ) m _ ) .
      Figure DE102021120010B3_0011
  • Die Matrix A und der geheime Vektor s sind häufig bereits in ihrer NTT-Form gegeben.
  • Auf den ersten Blick reduziert die Durchführung einer maskierten Multiplikation mit dem obigen Verfahren die Anzahl der Polynommultiplikationen von 2k2 auf k2 + k. In der Praxis kann die Einsparung von der konkreten Situation abhängen. Bei der Multiplikation mit der NTT mit Gleichung (6) wird die Anzahl der punktweisen Produkte tatsächlich von 2k2 auf k2+k reduziert, während die Anzahl der inversen NTTs von 2k auf k +1 sinkt. Bei Verfahren, die eine andere Multiplikationsmethode verwenden, sind die Laufzeiteinsparungen unterschiedlich. Andere Faktoren, wie die Wahl des modularen Reduktionsalgorithmus, können sich ebenfalls auf die konkreten Laufzeiteinsparungen auswirken.
  • Es sei darauf hingewiesen, dass Maßnahmen ergriffen werden können, um ein versehentliches Demaskieren durch mikroarchitektonische Effekte zu vermeiden. Wird beispielsweise zuerst s 0 ' = ( s 0 m )
    Figure DE102021120010B3_0012
    geladen, unmittelbar gefolgt von s 1 ' = ( s 1 m ) ,
    Figure DE102021120010B3_0013
    könnten mikroarchitektonische Effekte, wie z.B. Glitches in der Registerdatei, zu Leckagen führen, die in etwa der Differenz der beiden nachfolgenden Operanden entsprechen. In dem beschriebenen Szenario ist diese Differenz (s0 - m) - (s1 - m) = s0 - s1, d.h. eine unmaskierte Größe. Solche Effekte brauchen normalerweise nur bei der gleichzeitigen Verarbeitung beider Anteile berücksichtigt werden, während sie hier auch bei der Verarbeitung eines einzelnen Anteils s' berücksichtigt werden müssen.
  • Der oben beschriebene Ansatz kann mit verschiedenen Granularitäten verwendet und mit anderen Gegenmaßnahmen kombiniert werden. Einige davon werden nun beschrieben.
  • Der oben beschriebene Ansatz kann verwendet werden, um eine billige Maskierung höherer Ordnung zu erreichen, bei der Schlüssel und andere sensible Zwischenprodukte auf mehr als zwei Anteile aufgeteilt werden. Man kann mehrere komprimierte Anteile verwenden oder z.B. zwei vollständige Anteile mit einem zusätzlichen komprimierten Anteil kombinieren.
  • Es sei darauf hingewiesen, dass die Verwendung mehrerer komprimierter Anteile ohne weitere Gegenmaßnahmen niemals mehr als Sicherheit erster Ordnung bietet. Dies liegt daran, dass die Differenz zwischen den vollständigen Anteilen geheime Werte preisgibt, z.B. die Differenz zwischen s 0 ' = ( s 0 m ' m ' ' )
    Figure DE102021120010B3_0014
    und s 1 ' = ( s 1 m ' m ' ' )
    Figure DE102021120010B3_0015
    den Wert von s0 - s1 enthüllt.
  • Der oben beschriebene Ansatz kann mit anderen Gegenmaßnahmen kombiniert werden, um das erreichte Sicherheitsniveau zu verbessern. Anstatt beispielsweise dieselbe exakte Maske mehrfach zu verwenden, kann man mehrere Masken aus der abgetasteten Maske ableiten.
  • So können beispielsweise für jede Verwendung der Maske unterschiedliche skalare Faktoren ci verwendet werden. Konkret würde die maskierte Darstellung von s dann lauten: s = ( s 0 s 1 s 2 ) = ( ( s 0 c 0 m s 1 c 1 m s 2 c 2 m ) ) + ( ( c 0 m c 1 m c 2 m ) )
    Figure DE102021120010B3_0016
  • Diese Darstellung kann immer noch eine schnellere maskierte Implementierung ermöglichen, da ( a 00 a 01 a 02 ) ( c 0 m c 1 m c 2 m ) = ( i a 0 i c i ) m
    Figure DE102021120010B3_0017
  • In ähnlicher Weise ist es auch möglich, das Polynom m(x) (die Polynomvariable x wird hier explizit geschrieben) mit verschiedenen Faktoren xi zu multiplizieren. Bei Kyber und Dilithium entspricht dies einer negazyklischen Drehung der Polynomkoeffizienten und kann somit leichter berechnet werden.
  • In den obigen Beispielen wird die Wiederverwendung von Maskierungskomponenten auf die Granularität von Polynomen angewandt. Das heißt, ein Polynom m wird k-mal wiederverwendet, um eine Maske zu bilden. Der Ansatz eignet sich gut für Verfahren, die eine Modulstruktur verwenden, d.h. Verfahren, die mit aus Polynomen zusammengesetzten Matrizen und Vektoren arbeiten. Beispiele für solche Verfahren sind das digitale Signaturverfahren Dilithium und die Schlüsselkapselungsverfahren Kyber und Saber.
  • Es gibt jedoch auch gitterbasierte Verfahren, die nicht mit Polynomen arbeiten und große Matrizen und Vektoren von Skalaren direkt verwenden (wie FrodoKEM). Das gitterbasierte KEM (Key Encapsulation Mechanism) NewHope verzichtet gänzlich auf Matrizen und Vektoren und arbeitet stattdessen mit größeren Polynomen. Der Ansatz kann immer noch auf solche Schemata angewandt werden, aber es müssen andere Granularitäten verwendet werden, z.B. kann man einen Block von l zufälligen Einträgen abtasten und dann diese n l mal
    Figure DE102021120010B3_0018
    verwenden, um den gesamten Vektor bzw. das Polynom aufzufüllen.
  • Bei Verfahren, die Matrizen/Vektoren von Polynomen verwenden, wie Kyber und Dilithium, können auch andere Granularitäten verwendet werden. Man kann z.B. m aus mehreren Kopien eines noch kleineren Polynoms zusammensetzen, um weiteren Speicherplatz zu sparen. Theoretisch ist dies bis auf die Ebene von Skalaren möglich, d.h. m besteht aus n Kopien eines einzigen Wertes. Man kann den Wiederverwendungsgrad auch verringern, indem man z.B. mehrere m abtastet und dann jeden Wert nur einmal wiederverwendet. So kann beispielsweise bei k = 4 ein (m0,m1) abgetastet und der zweite Anteil s' als (m0,m1,m0,m1) zusammengesetzt werden. Dies kann dazu beitragen, die Robustheit von Seitenkanälen auf Kosten eines höheren Speicherverbrauchs zu erhöhen.
  • Zusammenfassend lässt sich sagen, dass gemäß verschiedenen Ausführungsformen eine kryptografische Verarbeitungsvorrichtung bereitgestellt wird, wie im Folgenden unter Bezugnahme auf 2 beschrieben.
  • 2 zeigt ein Diagramm 200, das die Verarbeitung einer kryptografischen Verarbeitungsvorrichtung gemäß einer Ausführungsform veranschaulicht.
  • In 2 stellen die gestrichelten Linien Komponenten und die vollen Linien volle Elemente (Vektor oder Matrix) dar. Der Block 201 mit den drei Addierern stellt die Bildung eines Vektors dar, wobei jeder Addierer eine Komponente liefert.
  • Die kryptografische Verarbeitungsvorrichtung umfasst einen Prozessor, der eingerichtet ist zum
    • • Ermitteln einer Maskierungskomponente (m);
    • • Erzeugen einer maskierten Version (s' im obigen Beispiel) eines geheimen ersten Elements s ' = ( s 0 m s 1 m s 2 m )
      Figure DE102021120010B3_0019
      im obigen Beispiel) durch Maskierung mehrerer Komponenten (s0, s1, s2 im obigen Beispiel) des geheimen ersten Elements mit der (gleichen) Maskierungskomponente (-m im obigen Beispiel)
    • • Ermitteln des Produkts eines zweiten Elements (A im obigen Beispiel) mit der maskierten Version des geheimen ersten Elements (s' im obigen Beispiel), um einen ersten Anteil des Produkts zwischen dem geheimen ersten Element und dem zweiten Element zu ermitteln (erster Anteil von b=A·s im obigen Beispiel);
    • • Ermitteln des Produkts des zweiten Elements (A im obigen Beispiel) mit der Differenz (s' - s, d.h. ( m m m )
      Figure DE102021120010B3_0020
      im obigen Beispiel) des geheimen ersten Elements und der maskierten Version des geheimen ersten Elements (A A ( m m m )
      Figure DE102021120010B3_0021
      im obigen Beispiel, um einen zweiten Anteil des Produkts zwischen dem geheimen ersten Element und dem zweiten Element (zweiter Anteil von b=A·s im obigen Beispiel) zu ermitteln.
    • • Durchführen der gitterbasierten Kryptografieoperation unter Verwendung des ersten Anteils und des zweiten Anteils des Produkts.
  • Gemäß verschiedenen Ausführungsformen wird mit anderen Worten eine Maskierungskomponente zur Maskierung mehrerer Komponenten eines geheimen ersten Elements, das mit einem anderen Element multipliziert wird, wiederverwendet. Die Wiederverwendung der Maskierungskomponente spart Speicherbedarf und kann auch den Rechenaufwand verringern. Somit ermöglicht der Ansatz von 2 die Implementierung von gitterbasierter Kryptografie mit Maskierung auf Vorrichtungen mit geringem Speicherbedarf, wie z.B. Sicherheitscontrollern, und gewährleistet somit deren Sicherheit, selbst wenn Quantencomputer verfügbar geworden sind.
  • Der Ansatz von 2 ermöglicht eine effiziente Maskierung von gitterbasierten kryptografischen Verfahren. Er kann zum Beispiel auf Kyber, Saber, NTRU, Dilithium und Falcon angewendet werden.
  • Der kryptografische Prozessor kann beispielsweise Teil einer Verarbeitungsvorrichtung sein, wie sie in 1 beschrieben ist, und kann insbesondere einem Kryptomodul (z.B. einem gitterbasierten Krypto (LBC)-Kern 108, einer CPU, einem Anwendungsprozessor usw.) entsprechen.
  • Der Prozessor kann insbesondere eine Schaltung sein, die als jede Art von logischer Implementierungseinheit verstanden werden kann, die aus Hardware, Software, Firmware oder einer Kombination davon bestehen kann. So kann eine „Schaltung“ in einer Ausführungsform eine fest verdrahtete Logik-Schaltung oder eine programmierbare Logik-Schaltung 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 Funktionen, die hier beschrieben werden, kann auch als „Schaltung“ gemäß einer alternativen Ausführungsform verstanden werden.
  • 3 veranschaulicht ein Verfahren zur Durchführung einer gitterbasierten Kryptografieoperation.
  • In 301 wird eine Maskierungskomponente ermittelt.
  • In 302 wird eine maskierte Version eines geheimen ersten Elements durch Maskierung mehrerer Komponenten des geheimen ersten Elements mit der Maskierungskomponente ermittelt.
  • In 303 wird das Produkt eines zweiten Elements mit der maskierten Version des geheimen ersten Elements ermittelt, um einen ersten Anteil des Produkts zwischen dem geheimen ersten Element und dem zweiten Element zu ermitteln.
  • In 304 wird das Produkt des zweiten Elements mit der Differenz des geheimen ersten Elements und der maskierten Version des geheimen ersten Elements ermittelt, um einen zweiten Anteil des Produkts zwischen dem geheimen ersten Element und dem zweiten Element zu ermitteln.
  • In 305 wird eine gitterbasierte Kryptografieoperation unter Verwendung des ersten Anteils und des zweiten Anteils des Produkts fortgesetzt.
  • Das geheime erste Element kann ein Vektor aus Polynomen sein, das zweite Element kann eine Matrix aus Polynomen sein und die Maskierungskomponente kann ein Polynom sein. Alternativ kann das geheime erste Element ein Polynom sein und die Maskierungskomponente kann ein Koeffizient für ein Polynom sein.
  • Im Folgenden werden verschiedene Beispiele beschrieben:
    • Beispiel 1 ist eine kryptografische Verarbeitungsvorrichtung, die einen Prozessor aufweist, der eingerichtet ist, zum Ermitteln einer Maskierungskomponente, Erzeugen einer maskierten Version eines geheimen ersten Elements durch Maskieren mehrerer Komponenten des geheimen ersten Elements mit der Maskierungskomponente, Ermitteln eines ersten Anteils des Produkts aus dem geheimen ersten Element und einem zweiten Element durch Multiplizieren des zweiten Elements mit der maskierten Version des geheimen ersten Elements, Ermitteln eines zweiten Anteils des Produkts aus dem geheimen ersten Element und dem zweiten Element durch Multiplizieren des zweiten Elements mit der Differenz aus dem geheimen ersten Element und der maskierten Version des geheimen ersten Elements; und Fortfahren mit einer gitterbasierten Kryptografieoperation unter Verwendung des ersten Anteils und des zweiten Anteils des Produkts. Das geheime erste Element kann ein Vektor aus Polynomen sein, das zweite Element kann eine Matrix aus Polynomen sein und die Maskierungskomponente kann ein Polynom sein. Alternativ kann das geheime erste Element ein Polynom sein und die Maskierungskomponente kann ein Koeffizient für ein Polynom sein.
  • Beispiel 2 ist die kryptografische Verarbeitungsvorrichtung von Beispiel 1, wobei der Prozessor ferner eingerichtet ist, eine weitere Maskierungskomponente zu ermitteln, mehrere Komponenten der Summe des ersten Anteils des Produkts und des zweiten Anteils des Produkts unter Verwendung der weiteren Maskierungskomponente zu maskieren, um eine maskierte Version des Produkts zu erzeugen, und die gitterbasierte Kryptografieoperation unter Verwendung der maskierten Version des Produkts durchzuführen.
  • Beispiel 3 ist die kryptografische Verarbeitungsvorrichtung von Beispiel 1 oder 2, wobei das Maskieren der mehreren Komponenten durch die Maskierungskomponente das Hinzufügen der Maskierungskomponente oder eines skalaren Vielfachen der Maskierungskomponente zu jeder der mehreren Komponenten aufweist.
  • Beispiel 4 ist die kryptografische Verarbeitungsvorrichtung aus einem der Beispiele 1 bis 3, wobei der Prozessor ferner so eingerichtet ist, dass er eine weitere Maskierungskomponente ermittelt, wobei das Erzeugen der maskierten Version des geheimen ersten Elements das Maskieren eines ersten Satzes von Komponenten des geheimen ersten Elements durch die Maskierungskomponente und eines zweiten Satzes von Komponenten des geheimen ersten Elements durch die weitere Maskierungskomponente aufweist.
  • Beispiel 5 ist die kryptografische Verarbeitungsvorrichtung von Beispiel 4, wobei der erste Satz und der zweite Satz disjunkt sind.
  • Beispiel 6 ist die kryptografische Verarbeitungsvorrichtung nach einem der Beispiele 1 bis 5, wobei das geheime erste Element zumindest teilweise einen kryptografischen Schlüssel darstellt.
  • Beispiel 7 ist die kryptografische Verarbeitungsvorrichtung aus einem der Beispiele 1 bis 6, wobei die kryptografische Verarbeitungsvorrichtung ein Sicherheitscontroller ist.
  • Beispiel 8 ist die kryptografische Verarbeitungsvorrichtung aus einem der Beispiele 1 bis 7, die einen Zufallszahlengenerator aufweist, wobei der Prozessor so eingerichtet ist, dass er die Maskierungskomponente unter Verwendung einer Ausgabe des Zufallszahlengenerators ermittelt.
  • Beispiel 9 ist die kryptografische Verarbeitungsvorrichtung nach einem der Beispiele 1 bis 8, wobei der Prozessor so eingerichtet ist, dass er die gitterbasierte Kryptografieoperation in einer Signatur- oder öffentlicher Schlüssel-Kryptoverarbeitung durchführt.
  • Beispiel 10 ist ein Verfahren zur Durchführung einer gitterbasierten Kryptografie-Operation, wie unter Bezugnahme auf 3 beschrieben.
  • Beispiel 11 ist das Verfahren von Beispiel 10, das ferner das Ermitteln einer weiteren Maskierungskomponente, das Maskieren mehrerer Komponenten der Summe des ersten Anteils des Produkts und des zweiten Anteils des Produkts unter Verwendung der weiteren Maskierungskomponente, um eine maskierte Version des Produkts zu erzeugen, und das Durchführen der gitterbasierten Kryptografieoperation unter Verwendung der maskierten Version des Produkts aufweist.
  • Beispiel 12 ist das Verfahren von Beispiel 10 oder 11,
    wobei das Maskieren der mehreren Komponenten durch die Maskierungskomponente das Hinzufügen der Maskierungskomponente oder eines skalaren Vielfachen der Maskierungskomponente zu jeder der mehreren Komponenten aufweist.
  • Beispiel 13 ist das Verfahren nach einem der Beispiele 10 bis 12, ferner aufweisend das Ermitteln einer weiteren Maskierungskomponente, wobei das Erzeugen der maskierten Version des geheimen ersten Elements das Maskieren eines ersten Satzes von Komponenten des geheimen ersten Elements durch die Maskierungskomponente und eines zweiten Satzes von Komponenten des geheimen ersten Elements durch die weitere Maskierungskomponente aufweist.
  • Beispiel 14 ist das Verfahren von Beispiel 13, wobei der erste Satz und der zweite Satz disjunkt sind.
  • Beispiel 15 ist das Verfahren nach einem der Beispiele 10 bis 14, wobei das geheime erste Element zumindest teilweise einen kryptografischen Schlüssel darstellt.
  • Beispiel 16 ist das Verfahren nach einem der Beispiele 10 bis 15, das von einem Sicherheitscontroller durchgeführt wird.
  • Beispiel 17 ist das Verfahren nach einem der Beispiele 10 bis 16, das das Ermitteln der Maskierungskomponente unter Verwendung einer Ausgabe eines Zufallszahlengenerators aufweist.
  • Beispiel 18 ist das Verfahren nach einem der Beispiele 10 bis 17, das die Durchführung der gitterbasierten Kryptografieoperation in einer Signatur- oder öffentlicher Schlüssel-Kryptoverarbeitung aufweist.
  • Obwohl hierin spezifische Ausführungsformen dargestellt und beschrieben wurden, werden Fachleute erkennen, dass die gezeigten und beschriebenen spezifischen Ausführungsformen durch eine Vielzahl alternativer und/oder gleichwertiger Implementierungen ersetzt werden können, ohne den Anwendungsbereich der vorliegenden Erfindung zu verlassen. Die vorliegende Anmeldung soll alle Anpassungen oder Variationen der hierin beschriebenen spezifischen Ausführungsformen abdecken. Daher soll die vorliegende Erfindung nur durch die Ansprüche und deren Äquivalente eingeschränkt sein.
  • Bezugszeichenliste
  • 100
    Verarbeitungsvorrichtung
    101
    CPU
    102
    RAM
    103
    NVM
    104
    Kryptomodul
    105
    Bus
    106
    Analog-Modul
    107
    E/A-Schnittstelle
    108
    LBC-Kern
    109
    AES-Kern
    110
    SHA-Kern
    111
    ECC-Kern
    112
    HRNG
    200
    Verarbeitungsdiagramm
    300
    Ablaufdiagramm
    301
    Verarbeitungsvorgänge

Claims (10)

  1. Kryptografische Verarbeitungsvorrichtung (100), aufweisend: einen Prozessor (101), der so eingerichtet ist, dass er: eine Maskierungskomponente ermittelt (301); eine maskierte Version eines geheimen ersten Elements durch Maskieren mehrerer Komponenten des geheimen ersten Elements mit der Maskierungskomponente erzeugt (302); einen ersten Anteil des Produkts aus dem geheimen ersten Element und einem zweiten Element durch Multiplizieren des zweiten Elements mit der maskierten Version des geheimen ersten Elements ermittelt (303); einen zweiten Anteil des Produkts aus dem geheimen ersten Element und dem zweiten Element durch Multiplizieren des zweiten Elements mit der Differenz aus dem geheimen ersten Element und der maskierten Version des geheimen ersten Elements ermittelt (304); und mit einer gitterbasierten Kryptografieoperation unter Verwendung des ersten Anteils und des zweiten Anteils des Produkts fortfährt (305); und wobei das geheime erste Element ein Vektor von Polynomen ist, wobei das zweite Element eine Matrix von Polynomen ist und die Maskierungskomponente ein Polynom ist und/oder wobei das geheime erste Element ein Polynom und die Maskierungskomponente ein Koeffizient für ein Polynom ist.
  2. Kryptografische Verarbeitungsvorrichtung (100) nach Anspruch 1, wobei der Prozessor ferner eingerichtet ist, eine weitere Maskierungskomponente zu ermitteln, mehrere Komponenten der Summe des ersten Anteils des Produkts und des zweiten Anteils des Produkts unter Verwendung der weiteren Maskierungskomponente zu maskieren, um eine maskierte Version des Produkts zu erzeugen, und die gitterbasierte Kryptografieoperation unter Verwendung der maskierten Version des Produkts durchzuführen.
  3. Kryptografische Verarbeitungsvorrichtung (100) nach Anspruch 1 oder 2, wobei das Maskieren der mehreren Komponenten durch die Maskierungskomponente das Addieren der Maskierungskomponente oder eines skalaren Vielfachen der Maskierungskomponente zu jeder der mehreren Komponenten aufweist.
  4. Kryptografische Verarbeitungsvorrichtung (100) nach einem der Ansprüche 1 bis 3, wobei der Prozessor (101) ferner eingerichtet ist, eine weitere Maskierungskomponente zu ermitteln, wobei das Erzeugen der maskierten Version des geheimen ersten Elements das Maskieren eines ersten Satzes von Komponenten des geheimen ersten Elements durch die Maskierungskomponente und eines zweiten Satzes von Komponenten des geheimen ersten Elements durch die weitere Maskierungskomponente aufweist.
  5. Kryptografische Verarbeitungsvorrichtung (100) nach Anspruch 4, wobei der erste Satz und der zweite Satz disjunkt sind.
  6. Kryptografische Verarbeitungsvorrichtung (100) nach einem der Ansprüche 1 bis 5, wobei das geheime erste Element zumindest teilweise einen kryptografischen Schlüssel darstellt.
  7. Kryptografische Verarbeitungsvorrichtung nach einem der Ansprüche 1 bis 6, wobei die kryptografische Verarbeitungsvorrichtung ein Sicherheitscontroller ist.
  8. Kryptografische Verarbeitungsvorrichtung (100) nach einem der Ansprüche 1 bis 7, die einen Zufallszahlengenerator aufweist, wobei der Prozessor so eingerichtet ist, dass er die Maskierungskomponente unter Verwendung einer Ausgabe des Zufallszahlengenerators ermittelt.
  9. Kryptografische Verarbeitungsvorrichtung (100) nach einem der Ansprüche 1 bis 8, wobei der Prozessor so eingerichtet ist, dass er die gitterbasierte Kryptografieoperation in einer Signatur- oder öffentlicher Schlüssel-Kryptoverarbeitung durchführt.
  10. Verfahren (300) zum Durchführen einer gitterbasierten Kryptografieoperation, aufweisend: • Ermitteln (301) einer Maskierungskomponente; • Erzeugen (302) einer maskierten Version eines geheimen ersten Elements durch Maskieren mehrerer Komponenten des geheimen ersten Elements mit der Maskierungskomponente; • Ermitteln (303) des Produkts eines zweiten Elements mit der maskierten Version des geheimen ersten Elements, um einen ersten Anteil des Produkts zwischen dem geheimen ersten Element und dem zweiten Element zu ermitteln; • Ermitteln (304) des Produkts des zweiten Elements mit der Differenz des geheimen ersten Elements und der maskierten Version des geheimen ersten Elements, um einen zweiten Anteil des Produkts zwischen dem geheimen ersten Element und dem zweiten Element zu ermitteln; • Fortfahren (305) mit einer gitterbasierten Kryptografieoperation unter Verwendung des ersten Anteils und des zweiten Anteils des Produkts; und • wobei das geheime erste Element ein Vektor von Polynomen ist, wobei das zweite Element eine Matrix von Polynomen ist und die Maskierungskomponente ein Polynom ist und/oder wobei das geheime erste Element ein Polynom und die Maskierungskomponente ein Koeffizient für ein Polynom ist.
DE102021120010.5A 2021-08-02 2021-08-02 Kryptografische verarbeitungsvorrichtung und verfahren zur durchführung einer gitterbasierten kryptografieoperation Active DE102021120010B3 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102021120010.5A DE102021120010B3 (de) 2021-08-02 2021-08-02 Kryptografische verarbeitungsvorrichtung und verfahren zur durchführung einer gitterbasierten kryptografieoperation
US17/878,085 US11870901B2 (en) 2021-08-02 2022-08-01 Cryptographic processing device and method for performing a lattice-based cryptography operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102021120010.5A DE102021120010B3 (de) 2021-08-02 2021-08-02 Kryptografische verarbeitungsvorrichtung und verfahren zur durchführung einer gitterbasierten kryptografieoperation

Publications (1)

Publication Number Publication Date
DE102021120010B3 true DE102021120010B3 (de) 2022-10-13

Family

ID=83361517

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021120010.5A Active DE102021120010B3 (de) 2021-08-02 2021-08-02 Kryptografische verarbeitungsvorrichtung und verfahren zur durchführung einer gitterbasierten kryptografieoperation

Country Status (2)

Country Link
US (1) US11870901B2 (de)
DE (1) DE102021120010B3 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220014363A1 (en) * 2021-09-24 2022-01-13 Intel Corporation Combined post-quantum security utilizing redefined polynomial calculation

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10097351B1 (en) * 2016-09-15 2018-10-09 ISARA Corporation Generating a lattice basis for lattice-based cryptography
US9673977B1 (en) * 2016-09-15 2017-06-06 ISARA Corporation Refreshing public parameters in lattice-based cryptographic protocols
US10581604B2 (en) * 2017-10-17 2020-03-03 Comsats Institute Of Information Technology Post-quantum cryptographic communication protocol
US11528124B2 (en) * 2021-04-07 2022-12-13 Nxp B.V. Masked comparison circumventing compression in post-quantum schemes
US11595195B2 (en) * 2021-04-09 2023-02-28 Nxp B.V. Masked decoding of polynomials

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ODER, T. [et al.]: Practical CCA2-Secure and Masked Ring-LWE Implementation. In: IACR Transactions on Cryptographic Hardware and Embedded Systems, Vol. 2018, 2018, No. 1, S. 142-174. DOI: 10.13154/tches.v2018.i1.142-174
REPARAZ, O. [et al.]: A Masked Ring-LWE Implementation. In: 17th International Workshop on Cryptographic Hardware and Embedded Systems (CHES 2015), LNCS 9293, 2015, S. 683-702. DOI: 10.1007/978-3-662-48324-4_34

Also Published As

Publication number Publication date
US20230030316A1 (en) 2023-02-02
US11870901B2 (en) 2024-01-09

Similar Documents

Publication Publication Date Title
DE102017117907B4 (de) Durchführen einer kryptografischen Operation
EP2742643B1 (de) Vorrichtung und verfahren zum entschlüsseln von daten
EP3593483B1 (de) Übergang von einer booleschen maskierung zu einer arithmetischen maskierung
DE102020102453A1 (de) Integrierte Schaltung zum modularen Multiplizieren von zwei ganzen Zahlen für ein kryptographisches Verfahren und Verfahren zur kryptographischen Verarbeitung von Daten basierend auf modularer Multiplikation
DE102016120558A1 (de) Datenverarbeitungsvorrichtung und -verfahren für kryptographische verarbeitung von daten
EP3686871A1 (de) Verfahren zum härten von softwareapplikationen
DE102017117899A1 (de) Durchführen einer kryptografischen Operation
EP2771782A1 (de) Effiziente primzahlprüfung
DE10304451B3 (de) Modulare Exponentiation mit randomisiertem Exponenten
DE102021120010B3 (de) Kryptografische verarbeitungsvorrichtung und verfahren zur durchführung einer gitterbasierten kryptografieoperation
EP1664979B1 (de) Übergang zwischen maskierten repräsentationen eines wertes bei kryptographischen berechnungen
DE112018002723B4 (de) System, verfahren und vorrichtung zur verschleierung von vorrichtungsoperationen
DE10219158A1 (de) Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
EP1596527B1 (de) Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung
EP1478999B1 (de) Vorrichtung und verfahren zum umrechnen eines terms
DE102021101697B3 (de) Datenverarbeitungsvorrichtung und verfahren zum verarbeiten geheimer daten
DE102020134618A1 (de) Sicherheits-controller und verfahren zur verarbeitung von datenelementen eines datenfeldes
DE10042234C2 (de) Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor
DE102020102796A1 (de) Datenverarbeitungsvorrichtung und verfahren zum verarbeiten von geheimen daten
DE10156708B4 (de) Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve
DE112019007858T5 (de) Vorrichtung zur berechnung einer finalen exponentiation,paarungsoperationsvorrichtung, kryptographische verarbeitungsvorrichtung,verfahren zur berechnung einer finalen exponentiation und programm zurberechnung einer finalen exponentiation
DE102022131526A1 (de) Verarbeitungsschaltung
DE102023106166B3 (de) Sicherheits-controller und verfahren zur durchführung einer auswahlfunktion
DE102022125835A1 (de) Datenverarbeitungsvorrichtung und verfahren zum erzeugen einer zufallszahl
EP3504616B1 (de) Modul und verfahren zur abgesicherten berechnung von mathematischen operationen

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