DE102017117907B4 - Durchführen einer kryptografischen Operation - Google Patents

Durchführen einer kryptografischen Operation Download PDF

Info

Publication number
DE102017117907B4
DE102017117907B4 DE102017117907.0A DE102017117907A DE102017117907B4 DE 102017117907 B4 DE102017117907 B4 DE 102017117907B4 DE 102017117907 A DE102017117907 A DE 102017117907A DE 102017117907 B4 DE102017117907 B4 DE 102017117907B4
Authority
DE
Germany
Prior art keywords
modulo
lifted
value
coefficients
modulus
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
DE102017117907.0A
Other languages
English (en)
Other versions
DE102017117907A1 (de
Inventor
Thomas Pöppelmann
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 DE102017117907.0A priority Critical patent/DE102017117907B4/de
Priority to US16/040,971 priority patent/US10965462B2/en
Priority to CN201810891557.7A priority patent/CN109388955B/zh
Publication of DE102017117907A1 publication Critical patent/DE102017117907A1/de
Application granted granted Critical
Publication of DE102017117907B4 publication Critical patent/DE102017117907B4/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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • 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
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3026Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to polynomials generation, e.g. generation of irreducible polynomials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • 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/08Randomization, e.g. dummy operations or using noise

Landscapes

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

Abstract

Verfahren zum Durchführen einer kryptografischen gitterbasierten Operation in einer Sicherheitsvorrichtung, wobei sicherheitsrelevante Berechnungen in einer redundanten Darstellung in Kombination mit einer koeffizientenweisen Randomisierung vorgenommen werden, um zumindest einen teilweisen Schutz gegen Seitenkanalangriffe zu erzielen, wobei die Sicherheitsvorrichtung eine integrierte Schaltung, ein Hardware-Sicherheitsmodul oder ein Trusted Platform-Modul ist oder umfasst, wobei das Verfahren die folgenden Schritte umfasst:(a) Liften von Koeffizienten einer Datenstruktur von einer Repräsentation modulo q in eine Repräsentation modulo q', wobei die Datenstruktur Werte umfasst, die modulo q reduziert sind, wobei q und q' ganze Zahlen sind;(b) Randomisieren der Koeffizienten in modulo q', wobei für jeden Koeffizienten ein zufälliger Wert mit dem Wert von q multipliziert wird, und das Ergebnis dieser Multiplikation zu dem Koeffizienten addiert wird;(c) Durchführen einer Operation auf den gelifteten und randomisierten Koeffizienten;(d) Reduzieren der gelifteten und randomisierten Koeffizienten durch Durchführen einer Operation modulo q.

Description

  • Ausführungsformen der vorliegenden Erfindung betreffen einen Ansatz zur effizienten Durchführung einer kryptografischen Operation, insbesondere zur Verbesserung der Robustheit solcher Operationen gegen Seitenkanalangriffe.
  • In [D. Catalano u.a.: The Hardness ofHensel Lifting: The Case of RSA and Discrete Logarithm, Intl. Conference on the Theory and Application of Cryptology and Information Security, Springer 2002, Seiten 299 bis 310] wird ein verbesserter Beweis bezüglicher der Einweg-Eigenschaft von RSAPs vorgeschlagen, der auf niederdimensionalen Gittern basiert.
  • Aus [S. Srinivasan: Modulo Transforms - an Alternative to Lifting, Microsoft Digital Media Division, 2005] ist ein neues Paradigma bekannt für reversible Transformationen bekannt, um Integer auf Integer zu mappen.
  • EP 0 920 753 B1 betrifft ein Public-Key Kryptosystem und zeigt die Durchführung einer Operation mittels einer Sicherheitsvorrichtung.
  • WO 2014 / 037 657 A1 zeigt einen Ansatz zum Schutz eines elektronischen Geräts (SCARD), das eine kryptografischen Algorithmus (AES) umsetzt, vor Seitenkanal attacken.
  • WO 2017 / 008 043 A1 betrifft die homomorphe Verschlüsselung.
  • US 2017 / 0 134 157 A1 offenbart einen Ansatz für eine homomorphe Verschlüsselung mit optimierter Encodierung.
  • US 2013 / 0 216 044 A1 betrifft die homomorphe Evaluierung von Funktionen.
  • Die Aufgabe der hier beschriebenen Lösung zielt darauf, die Chancen erfolgreicher Seitenkanalangriffe zu reduzieren.
  • Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
  • Die hier vorgeschlagenen Beispiele können insbesondere auf mindestens einer der folgenden Lösungen basieren. In bestimmten Kombinationen könnten die folgenden Merkmale verwendet werden, um ein gewünschtes Ergebnis zu erzielen. Die Merkmale des Verfahrens könnten mit einem oder mehreren beliebigen Merkmalen der Vorrichtung, der Einrichtung oder des Systems kombiniert werden, oder umgekehrt.
  • Ein Verfahren zum Durchführen einer kryptografischen gitterbasierten Operation in einer Sicherheitsvorrichtung wird vorgeschlagen, wobei sicherheitsrelevante Berechnungen in einer redundanten Darstellung in Kombination mit einer koeffizientenweisen Randomisierung vorgenommen werden, um zumindest einen teilweisen Schutz gegen Seitenkanalangriffe zu erzielen, wobei die Sicherheitsvorrichtung eine integrierte Schaltung, ein Hardware-Sicherheitsmodul oder ein Trusted Platform-Modul ist oder umfasst, wobei das Verfahren umfasst:
    1. (a) Liften von Koeffizienten einer Datenstruktur von einer Repräsentation modulo q zu einer Repräsentation modulo q', wobei die Datenstruktur Werte umfasst, die modulo q reduziert sind, wobei q und q' ganze Zahlen sind;
    2. (b) Randomisieren der Koeffizienten in modulo q', wobei für jeden Koeffizienten ein zufälliger Wert mit dem Wert von q multipliziert wird, und das Ergebnis dieser Multiplikation zu dem Koeffizienten addiert wird;
    3. (c) Durchführen einer Operation an den gelifteten und randomisierten Koeffizienten;
    4. (d) Reduzieren der gelifteten und randomisierten Koeffizienten durch Durchführen einer Operation modulo q.
  • Die Operation unterliegt insbesondere der Geheimhaltung. Es kann insbesondere eine kryptografische Operation oder eine Operation sein, die ein Teil einer kryptografischen Operation ist.
  • Es wird angemerkt, dass (a) und (b) in einem einzelnen Lifting- und Randomisierungsschritt kombiniert werden können, d.h. Bestimmung der randomisierten Koeffizienten im gelifteten Raum q'.
  • Es wird auch angemerkt, dass die ganzen Zahlen q und q' voneinander verschieden sind, und dass q'>q.
  • Ferner wird angemerkt, dass in Schritt (b) das Ergebnis der Multiplikation zu dem Koeffizienten addiert wird, und das Ergebnis dieser Operation wird modulo q' bestimmt, was der Tatsache entspricht, dass die gelifteten Koeffizienten auf die Repräsentation modulo q' „geliftet“ werden.
  • In einer Ausführungsform ist der Wert von q' größer als der Wert von q.
  • Es ist insbesondere eine Option, dass q, multipliziert mit einer ganzen Zahl k, q' ergibt, d.h. q' = k - q.
  • In einer Ausführungsform umfasst die Datenstruktur mindestens eines der Folgenden: ein Polynom, eine Matrix oder einen Vektor.
  • Die Datenstruktur kann insbesondere ein Polynom f im Ring Zq [x]/(f) sein. Das Polynom f kann als Beispiel definiert werden als f = xn + 1 oder als f = xn - 1.
  • In einer Ausführungsform ist die Operation eine arithmetische Operation.
  • Die gitterbasierte Kryptografie ist ein kryptografisches System, dessen Sicherheit auf der Härte bestimmter mathematisch harter Probleme in Gittern basiert. Ein Gitter ist eine Struktur, die durch ganzzahlige lineare Kombinationen von Basisvektoren geschaffen wird. Somit kann ein Gitter als regelmäßige Struktur in einem n-dimensionalen Raum beschrieben werden. In diesem n-dimensionalen Raum sind bestimmte fundamentale Problem, wie das Finden einer kurzen Basis oder eines kurzen Vektors, mathematisch hart. Üblicherweise kann die Härte des Aufbrechens eines gitterbasierten Krypto-Systems reduziert werden oder mit der Härte des Lösens eines solchen fundamentalen Problems verbunden sein.
  • In einer Ausführungsform umfasst das Verfahren ferner nach Schritt (c):
    • (c1) Wiederholen der Schritte (b) und (c) mindestens einmal, bevor zu Schritt (d) abgezweigt wird.
  • Daher kann eine weitere Randomisierung gemäß Schritt (b) durchgeführt werden, wobei ein weiterer randomisierter Wert verwendet wird, um mit dem Wert von q multipliziert zu werden, und das Ergebnis dieser Multiplikation wird mit jedem der Koeffizienten addiert, die das Ergebnis der in Schritt (c) durchgeführten Operation sind; dann wird eine weitere Operation gemäß Schritt (c) durchgeführt, was zu noch einem weiteren Satz von Koeffizienten führt. Danach führt die Reduktion gemäß Schritt (d) zu (ungelifteten) Koeffizienten in der Repräsentation modulo q.
  • In einer Ausführungsform ist die Datenstruktur eine geheime Datenstruktur.
  • In einer Ausführungsform ist der Wert von q und/oder der Wert von q' eine Primzahl oder eine Zweierpotenz.
  • In einer Ausführungsform wird der Wert von q' so ausgewählt, dass er einer Breite einer integrierten Verarbeitungseinheit entspricht.
  • Die Breite der Verarbeitungseinheit kann eine Breite eines Busses sein. Die Breite kann insbesondere eine Anzahl von Bits definieren, die einer einzelnen Operation der integrierten Verarbeitungseinheit unterworfen werden.
  • Die integrierte Verarbeitungseinheit kann ein Prozessor, eine Steuereinheit, eine FPGA, ein digitaler Signalprozessor oder ein eingebetteter Addierer und/oder Multiplizierer sein.
  • In einer Ausführungsform variiert der Wert von q'.
  • Der Wert von q' kann aus mindestens zwei Werten in Abhängigkeit z.B. vom Sicherheitsgrad ausgewählt werden.
  • In einer Ausführungsform wird das Verfahren zum Betreiben einer Verarbeitungsvorrichtung verwendet, insbesondere einer der Folgenden:
    • - einer FPGA,
    • - einer Verarbeitungseinheit,
    • - einer Steuereinheit,
    • - einer Smartcard.
  • Ebenso wird eine Vorrichtung bereitgestellt, wobei die Vorrichtung umfasst:
    • - eine Verarbeitungseinheit,
    • - eine Krypto-Einheit,
    • - einen Bus, der die Verarbeitungseinheit mit der Krypto-Einheit koppelt,
    • - wobei die Krypto-Einheit eingerichtet ist:
      1. (a) Koeffizienten einer Datenstruktur von einer Repräsentation modulo q zu einer Repräsentation modulo q' zu liften, wobei die Datenstruktur Werte umfasst, die modulo q reduziert sind, wobei q und q' ganze Zahlen sind;
      2. (b) die Koeffizienten in modulo q' zu randomisieren, wobei für jeden Koeffizienten ein zufälliger Wert mit dem Wert von q multipliziert wird, und das Ergebnis dieser Multiplikation zu dem Koeffizienten addiert wird;
    • - wobei die Verarbeitungseinheit eingerichtet ist:
      • (c) eine Operation an den gelifteten und randomisierten Koeffizienten durchzuführen;
    • - und wobei die Krypto-Einheit eingerichtet ist:
      • (d) die gelifteten und randomisierten Koeffizienten durch Durchführen einer Operation modulo q zu reduzieren.
  • Es wird angemerkt, dass die Vorrichtung eine Sicherheitsvorrichtung sein kann, die insbesondere eine integrierte Schaltung (IC), ein Hardware-Sicherheitsmodul (HSM), ein Trusted Platform-Modul (TPM) sein oder umfassen kann.
  • Die Krypto-Einheit kann eines der Folgenden sein oder umfassen: ein Krypto-Prozessor, ein Krypto-Teil einer Sicherheitssteuereinheit oder eine Sicherheitssteuereinheit. Die Krypto-Einheit kann auch ein Krypto-Kern oder ein Krypto-Modul sein oder diese umfassen.
  • Die Vorrichtung kann eine Sicherheitssteuereinheit oder ein Dongle sein.
  • Die Vorrichtung kann insbesondere Hardware- und Software-Teile umfassen. Sie kann insbesondere eine Hardware-Vertrauenskette umfassen.
  • Ferner wird angemerkt, dass die Krypto-Einheit ein HSM oder ein TPM sein oder umfassen kann. Es ist auch eine Option, dass das TPM eine CPU, ein Krypto-Modul und einen Krypto-Kern umfasst.
  • In einer Ausführungsform ist die Vorrichtung eine FPGA, eine Verarbeitungseinheit, eine Steuereinheit, eine Smartcard-Integrationsschaltung (Smartcard-IC) oder eine Smartcard.
  • Ebenso wird ein Computerprogrammprodukt vorgeschlagen, welches direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung geladen werden kann, umfassend Software-Codeabschnitte als Anweisung an eine Datenverarbeitungsanlage zum Vornehmen der Schritte des Verfahrens, wie hier beschrieben.
  • Zusätzlich wird das oben angeführte Problem durch ein computerlesbares Medium gelöst, z.B. einen Speicher einer beliebigen Art, mit computerausführbaren Instruktionen, die geeignet sind zu bewirken, dass ein Computersystem das Verfahren vornimmt, wie hier beschrieben.
  • Ferner wird das oben angeführte Problem durch ein Kommunikationssystem gelöst, das mindestens eine Vorrichtung umfasst, wie hier beschrieben.
  • Ausführungsformen werden mit Bezugnahme auf die Zeichnungen gezeigt und veranschaulicht. Die Zeichnungen dienen der Veranschaulichung des Grundprinzips, so dass nur Aspekte veranschaulicht werden, die für das Verständnis des Grundprinzips notwendig sind. Die Zeichnungen sind nicht maßstabgetreu. In den Zeichnungen bezeichnen dieselben Bezugszahlen ähnliche Merkmale.
    • 1 zeigt ein Beispiel eines Diagramms, umfassend Schritte zum Erzielen eines Schutzes gegen Seitenkanalangriffe;
    • 2 zeigt ein Beispiel einer Anordnung einer Verarbeitungsvorrichtung, umfassend eine CPU, einen RAM, einen nicht-flüchtigen Speicher, ein Krypto-Modul, ein analoges Modul, eine Eingabe/Ausgabe-Schnittstelle und einen Hardware-Zufallszahlengenerator.
  • Es besteht ein allgemeiner Trend, sich von klassischen asymmetrischen Krypto-Systemen (RSA/ECC) zu Schemata zu bewegen, die von Quantencomputern nicht erfolgreich angegriffen werden können. Auch wenn derzeit Quantencomputer aufgrund der technischen Komplexität und technischer Herausforderungen nicht verfügbar sind, könnten sie in der Lage sein, RSA und ECC in polynominaler Zeit aufzubrechen. Beispielsweise untersuchen Standardisierungsgremien, wie NIST (National Institute of Standards and Technology), alternative Krypto-Systeme.
  • Eine Klasse von Schemata, von denen angenommen wird, dass sie Angriffen von Quantencomputern standhalten, sind gitterbasierte öffentliche Schlüsselverschlüsselungs-, Schlüsselaustausch- oder Signaturschemata. Sie könnten die Nachfolger von RSA und ECC werden und arbeiten entweder an großen Matrizen (Standardgitter) oder an Polynom-Ringen (Idealgitter). Für die gitterbasierte Kryptografie wird z.B. auf https://en.wikipedia.org/wiki/Lattice-based_cryptography verwiesen.
  • Es ist jedoch nicht viel hinsichtlich des Schutzes solcher Signaturschemata gegen Implementierungsangriffe bekannt. Insbesondere Gegenmaßnahmen gegen Seitenkanalangriffe sind erforderlich, wenn diese Signaturschemata auf einer sicheren Chipkarten-Steuereinheit oder in irgendeiner feindlichen Umgebung ausgeführt werden.
  • Die gitterbasierte (Lattice-based) Kryptografie ist ein kryptografisches System, dessen Sicherheit auf der Härte bestimmter mathematisch harter Probleme in Gittern basiert oder mit der Härte dieser verbunden ist. Ein Gitter ist eine Struktur, die durch ganzzahlige lineare Kombinationen von Basisvektoren geschaffen wird. Somit kann ein Gitter als regelmäßige Struktur in einem n-dimensionalen Raum beschrieben werden. In diesem n- dimensionalen Raum sind bestimmte fundamentale Probleme, wie das Finden einer kurzen Basis oder eines kurzen Vektors, mathematisch hart. Üblicherweise kann die Härte des Aufbrechens eines gitterbasierten Krypto-Systems reduziert werden oder mit der Härte des Lösens eines solchen fundamentalen Problems verbunden sein.
  • Hier werden die folgenden Abkürzungen und Referenzen verwendet:
  • q
    ist eine ganze Zahl,
    q'
    ist eine ganze Zahl,
    k
    ist eine ganze Zahl,
    r
    ist eine ganze Zahl (zufällig ausgewählt),
    vi
    ist ein Koeffizient eines Vektors oder Polynoms in einer Position i,
    ri
    ist ein zufälliger Wert für den Koeffizienten vi,
    Zq
    ist der Ring von ganzen Zahlen modulo q, welcher der Quotientenring Z/qZ von Äquivalenzklassen von ganzen Zahlen modulo q ist,
    Zq,
    ist ein Ring von ganzen Zahlen modulo q',
    Z[x]/(f)
    ist ein Ring von ganzzahligen Polynomen modulo f; Elemente v ∈ Z[x]/(f) können durch ganzzahlige Polynome mit einem Grad kleiner als die ganze Zahl n oder alternativ dazu als Vektor von Koeffizienten v ∈ Zn repräsentiert werden,
    Zq[x]/(f)
    ist ein Ring von ganzzahligen Polynomen modulo sowohl das Polynom f als auch die ganze Zahl q; die Elemente v ∈ Zq[x]/(f) können durch ganzzahlige Polynome mit einem Grad kleiner als n mit Koeffizienten reduziert modulo q oder alternativ dazu als Koeffizientenvektor v Z q n
    Figure DE102017117907B4_0001
    repräsentiert werden,
    x
    ist die Unbestimmte,
    f
    ist ein Polynom mit einem maximalen Grad der ganzen Zahl n,
    n
    ist eine ganze Zahl, die eine Dimension (Anzahl von Koeffizienten) anzeigt,
    a
    ist ein öffentliches Polynom,
    s
    ist ein geheimes Polynom,
    FFT
    schnelle Fourier-Transformation,
    NTT
    zahlentheoretische Transformation,
    DPA
    differentielle Leistungsanalyse,
    SPA
    einfache Leistungsanalyse,
    ALU
    arithmetische Logikeinheit.
  • Der Quotientenring ist eine Konstruktion in abstrakter Algebra; für Details wird z.B. auf https://en.wikipedia.org/wiki/Quotient_ring verwiesen.
  • Hier beschriebene Beispiele schlagen vor, dass sicherheitsrelevante Berechnungen in einer redundanten Darstellung in Kombination mit einer koeffizientenweisen Randomisierung vorgenommen werden, um insbesondere einen Schutz gegen Seitenkanalangriffe zu erzielen.
  • Alle Hauptberechnungen in der gitterbasierten Kryptografie können modulo q vorgenommen werden. In einigen Fällen kann die ganze Zahl q ausgewählt werden, um eine bestimmte Primzahl zu sein (z.B. um die NTT zu ermöglichen, da die NTT nur effizient arbeitet, falls Parameter als bestimmte Primzahlen ausgewählt werden), oder die ganze Zahl q kann als Zweierpotenz ausgewählt werden.
  • Die hier beschriebenen Lösungen schlagen insbesondere das Vornehmen von Berechnungen vor in dem Ring Zq, mit der ganzen Zahl q ' = k q
    Figure DE102017117907B4_0002
    für eine gegebene ganze Zahl k.
  • Wenn beispielsweise q=5 und k=3, q'=15. In einem solchen Fall ergibt x mod q' für x=10 0, auch x mod q' für x=15 ergibt 0. Daher existieren einige Werte x mod q', die zu demselben Wert modulo q führen, und als Folge kann der Wert x in redundanten Operationen existieren oder verarbeitet werden.
  • Auf diese Weise können Konstanten oder Zwischenwerte (Koeffizienten von Polynomen, Matrizen oder Vektoren) effizient randomisiert werden, indem zufällig eine ganze Zahl r ausgewählt wird, und indem r · q mit einem Wert im Ring Zq, addiert wird. Dann können (insbesondere sicherheitsrelevante) Berechnungen durchgeführt werden, die zu Zwischenwerten im Ring Zq, führen. In einem abschließenden Schritt wird eine Reduktion modulo q an den Zwischenwerten vorgenommen, um das Ergebnis zu erhalten und die Randomisierung zu entfernen.
  • Es wird angemerkt, dass „zufällig“ bzw. „randomisiert“ in dieser Hinsicht (z.B. zufällig auswählen oder irgendein zufälliger Wert) ein echt zufälliger, ein pseudo-zufälliger oder ein deterministischer Ansatz sein kann, um einen Wert zu erhalten. Daher kann die Eigenschaft einer solchen „Zufälligkeit“ oder irgendein zufälliger Effekt gemäß dem hiermit gemachten Vorschlag sein, dass ein Angreifer sich des Werts nicht bewusst ist, und dass Werte für mindestens einen Teil von Operationen verschieden sind. Die Zufälligkeit fügt insbesondere ein bestimmtes Ausmaß einer Entropie zwischen Werten ein, die „zufällig“ bestimmt werden, d.h. generiert oder ausgewählt werden.
  • Wenn eine Berechnung an randomisierten Werten ausgeführt wird, werden invasive und nicht-invasive Angriffe mit dem Ziel der Extraktion eines geheimen Schlüssels oder eines Zwischenwerts aus einer Vorrichtung schwieriger. Mögliche Angriffe werden auf die Überwachung des Energieverbrauchs (DPA/SPA) oder die elektromagnetische Strahlung einer Vorrichtung gerichtet.
  • Beispiel einer Implementierung:
  • Derzeit gibt es zwei Arten von gitterbasierter Kryptographie, d.h. die idealgitterbasierte Kryptographie und die standardgitterbasierte Kryptographie. Der hier präsentierte Ansatz ist auf alle Arten von gitterbasierter Kryptographie anwendbar, solange Werte modulo q verwendet werden.
  • Die Grundoperationen in der idealgitterbasierten Kryptographie sind polynominale Multiplikationen, Additionen oder Subtraktionen im Quotientenring Z q [ x ] / ( ƒ )
    Figure DE102017117907B4_0003
    wobei der Modulus q eine ganze Zahl ist, und die Dimension (Anzahl von Koeffizienten) eine ganze Zahl n ist.
  • Eine Reduktion des Polynoms könnte erzielt werden, indem „modulo Poynom f“ reduziert wird. Ein Beispiel eines Werts für f ist ƒ = x n + 1  oder  ƒ = x n 1,
    Figure DE102017117907B4_0004
    es können jedoch entsprechend andere Polynome verwendet werden.
  • Operationen in der standardgitterbasierten Kryptographie umfassen Matrix-Matrix-Multiplikationen, Matrix-Vektor-Multiplikationen oder Vektoradditionen und -subtraktionen, wobei Koeffizienten Werte im Ring von ganzen Zahlen modulo q sind.
  • Wenn der hier beschriebene Ansatz verwendet wird, hat jeder Koeffizient einer Matrix oder eines Polynoms im Ring Zq, einige Repräsentationen, die jeweils einer Repräsentation im Ring Zq entsprechen. Die Repräsentation im Ring Zq, sind von einem Angreifer schwer zu unterscheiden, falls eine geeignete Randomisierung angewendet wird.
  • 1 zeigt ein Beispiel eines Diagramms, das Schritte umfasst, um einen Schutz gegen Seitenkanalangriffe zu erzielen. Ein Modulus q wird angegeben. Die ganze Zahl k wird in Abhängigkeit vom erforderlichen Schutzgrad ausgewählt.
  • Ein Schritt 101 liefert ein geheimes Polynom s im Ring Zq[x]/(f), wobei das Polynom f als Beispiel definiert wird als f = xn + 1.
  • Ein Schritt 102 umfasst eine Lifting-Operation, die Koeffizienten eines Polynoms, einer Matrix oder eines Vektors von ihrer Repräsentation modulo q zu einer Repräsentation modulo q' bewegt. In diesem Beispiel wird das Lifting für das geheime Polynom s durchgeführt. Diese Lifting-Operation kann eine Zuordnung von Speicherraum für Koeffizienten aufgrund der Tatsache erfordern, dass die Repräsentation modulo q' mehr Speicher verglichen mit der Repräsentation modulo q erfordert.
  • Ein Schritt 103 umfasst eine Randomisierungsoperation: Für jeden Koeffizienten vi wird ein zufälliger Wert ri bestimmt. Der zufällige Wert ri wird mit der ganzen Zahl q multipliziert, und das Ergebnis ri · q wird zu dem Koeffizienten vi addiert. Der Koeffizient vi kann ein Koeffizient einer Matrix, eines Vektors oder eines Polynoms sein. Die Ausgabe dieses Schritts 103 ist ein randomisiertes geheimes Polynom.
  • Ein Schritt 104 umfasst eine Berechnung, die unter Verwendung von bekannter algebraischer, polynominaler, Matrix- und/oder Vektorarithmetik unter Verwendung von Modulus q' durchgeführt werden kann. Dieser Ansatz kann insbesondere für FFT- und NTT-Operationen anwendbar sein.
  • Vorteilhaft ist ein Angreifer, der die Berechnung beobachtet (Analyse, z.B. Energie, Zeit, elektromagnetische Emissionen), aufgrund der Randomisierungsoperation nicht in der Lage, ein Muster zu bestimmen.
  • Ein optionaler Schritt 105 umfasst eine Rerandomisierungsoperation, bei der die Randomisierungsoperation auf ein bereits randomisiertes Zwischenergebnis angewendet wird. Dies ermöglicht das Einführen einer zusätzlichen Randomisierungsschicht.
  • Ein optionaler Schritt 106 kann eine weitere Berechnung ähnlich dem oder verschieden von Schritt 104 durchführen.
  • Ein Schritt 107 umfasst einen Reduktionsschritt, der alle Werte im Ring Zq, zurück in den Ring Zq bewegt, indem eine Berechnung modulo q vorgenommen wird.
  • Im Gegensatz zu dem geheimen Polynom s könnte es ein öffentliches Polynom a im Ring Zq[x]/(f) geben, wobei f = xn + 1 (siehe Schritt 108). In einem Schritt 109 (ähnlich Schritt 102) kann eine Lifting-Operation an den Koeffizienten des öffentlichen Polynoms a durchgeführt werden. Die Ausgabe dieses Schritts 109 liefert ein geliftetes öffentliches Polynom im Ring Zq,. In einem Schritt 110 kann eine Berechnung durchgeführt werden, die ähnlich der oder verschieden von der Berechnung 104 ist. Anschließend an Schritt 110 werden der Schritt 106 und somit der Schritt 107 für (optionale) weitere Berechnungen und zum Rückführen der Werte des gelifteten öffentlichen Polynoms vom Ring Zq, zurück zum Ring Zq durchgeführt.
  • In diesem Beispiel zeigt der Weg, der die Schritte 108 bis 110 umfasst, an, dass öffentliche Informationen (hier das öffentlichen Polynom a) nicht geschützt worden sein können, indem die Randomisierung und die optionale Rerandomisierung durchgeführt werden. Dies ist wegen des reduzierten Verarbeitungsaufwands für Informationen, die nicht geheim gehalten werden müssen, vorteilhaft.
  • Weitere Aspekte:
  • Die Effizienz dieses Ansatzes kann durch die Wahl des Modulus q beeinflusst werden. Die Größe des Modulus in der gitterbasierten Kryptografie beeinflusst die Leistung, Sicherheit und Richtigkeit von Schemata, es kann jedoch auch ein gewisser Spielraum für den Designer bleiben (z.B. durch Ausgleichen der Größe des Modulus mit der Größe des Rauschens). Ein mögliches Auswahlkriterium ist, moduli q so auszuwählen, dass sie keine geringe Dichte aufweisen, d.h. ein großes Hamming-Gewicht oder eine unregelmäßige binäre Struktur aufweisen. Als Beispiel ist für q = 2 16 = 10000000000000000 2
    Figure DE102017117907B4_0005
    und k = 30
    Figure DE102017117907B4_0006
    der Wert 10 q = 10100000000000000000 2
    Figure DE102017117907B4_0007
    (d.h. r = 10) weiterhin erheblich regulär und beeinflusst die Bits niedrigerer Ordnung nicht, wenn er mit einem Koeffizienten addiert wird.
  • Somit ist die Verwendung einer redundanten Repräsentation signifikant effizienter für keine Potenz von zwei Moduli oder für Moduli mit hoher Dichte in einer binären Repräsentation.
  • Als Beispiel, wenn Moduli mit dichter Repräsentation ausgewählt werden, z.B. q = 87717 = 10101011010100101 2
    Figure DE102017117907B4_0008
    beeinflusst ein Randomisierungswert, z.B. 10 87717 = 11010110001001110010 2
    Figure DE102017117907B4_0009
    mehr Bits eines Koeffizienten, wodurch der Koeffizient für einen Angreifer weniger vorhersagbar wird.
  • Ein weiteres Kriterium für die Auswahl des Modulus q' ist, dass der Modulus q' kleiner ist, jedoch sehr nahe bei einer spezifischen Grenze liegt, die von einer Architektur oder einem Prozessor vorgegeben wird, z.B. 8, 16, 32 oder 64 Bits für Mikrosteuereinheiten/Mikroprozessoren, oder 18 oder 36 Bits für FPGAs (z.B. Xilinx). Der Modulus q' kann insbesondere so ausgewählt werden, dass er mit der Breite eines Prozessors (z.B. digitaler Signalprozessor, DSP) und/oder eingebetteter Multiplikatoren übereinstimmt.
  • Die ganze Zahl k und daher die ganze Zahl q' kann so ausgewählt werden, dass ungenutzte und ansonsten vergeudete Bits in einem Register für Randomisierungszwecke verwendet werden. In der gitterbasierten Kryptografie ist die ganze Zahl q (mit einem Betrag von z.B. 14 Bits) üblicherweise kleiner als die Größe eines Registers, das z.B. 32 Bits umfassen kann. In Hardware können die ALU (Multiplizierer, modulare Reduktion) und Register skaliert werden, ansonsten ist der Einfluss auf das Design jedoch gering. Durch das Wählen einer ausreichenden Größe für k kann die Stärke einer hinzugefügten Zufälligkeit mit dem erforderlichen Ressourcenverbrauch ausgeglichen werden.
  • In diesem Fall sind zusätzliche Kosten der redundanten Repräsentationstechnik niedrig.
  • Ferner kann der Modulus q' in einer solchen Weise gewählt werden (oder durch Brute Force gefunden werden), dass eine effiziente modulare Reduktion möglich ist, z.B. wenn der Modulus q' zu günstigen Konstanten bei der Barrett-Reduktion oder modularen Montgomery-Multiplikation führt.
  • Es ist auch möglich, zwischen verschiedenen Werten des Modulus q' auf der Basis des erforderlichen Schutzes zu wechseln, wobei große Werte des Modulus q' für heiklere Berechnungen verwendet werden können.
  • Aus Gründen der Effizienz kann es vorteilhaft sein, den Faktor k (in q' = kq) in einer solchen Weise zu wählen, dass zufällige Werte einfach zu bestimmen sind, z.B. die zufälligen Werte r zwischen 0 und k-1 zu wählen. Beispiel: Wenn der Faktor k auf 20 gesetzt wird, können die zufälligen Werte ri zwischen 0 und 19 gewählt werden.
  • Dies könnte jedoch eine kostspielige Ablehnungsabtastung oder andere Schritte erfordern, so dass die Wahl einer Zweierpotenz für k zweckmäßig ist. Als Alternative können zufällige Werte ri zwischen Null und einem Zweierpotenzwert kleiner als k abgetastet werden. Beispiel: für k = 64, kann das Abtasten von zufälligen Werten ri zwischen 0 und 63 einfach sein, da dies nur die Entfernung unerwünschter Bits höherer Ordnung aus einem Strom von zufälligen Bits, jedoch keine Ablehnungsabtastung erfordert.
  • Es wird angemerkt, dass die zufälligen Werte r aus einer Verteilung abgetastet werden können, die nahe bei der gleichmäßigen Verteilung liegt. In anderen Varianten könnten die Abtastwerte jedoch auch anderen Verteilungen entnommen werden, z.B. einer (kleinen) Gaußschen Verteilung oder einer geringfügig verzerrten Verteilung.
  • In einigen Instanziierungen gitterbasierter Kryptografie können Koeffizienten von geheimen Polynomen, Matrizen oder Vektoren klein sein (z.B. -1, 0,1) und eine geringe Dichte aufweisen (viele Null-Koeffizienten), und diese geringe Dichte könnte von einem Angreifer detektiert werden (z.B. da Multiplikationen mit 0 weniger Energie verbrauchen als Multiplikationen mit 1). Durch die Vornahme der Lifting-Operation und der Randomisierungsoperation an Polynomen, Matrizen oder Vektoren mit geringer Dichte wird diese geringe Dichte entfernt, und Angriffe, welche die spezifische Form ausnützen, werden schwieriger.
  • Die Lifting-Operation und die Randomisierungsoperation können auch in die Abtastung eines zufälligen Werts integriert werden und müssen nicht verschiedene oder getrennte Operationen sein. Als Beispiel könnte ein üblicher diskreter Gaußscher Rauschabtaster direkt in die redundante Repräsentation abtasten. Dies bedeutet im Allgemeinen, dass der Abtaster das Rauschen modulo die ganze Zahl q nicht ausgeben kann, jedoch modulo die ganze Zahl q', wobei die Randomisierung vom Abtaster bereits während des Abtastprozesses angewendet wurde. Als Beispiel einer Implementierung kann der Abtaster zuerst das Register randomisieren, das einen Rauschabtastwert enthalten wird, indem ein zufälliger Wert r ausgewählt wird, der mit der ganzen Zahl q multipliziert wird, und dann r · q im Register speichern. Der abgetastete Koeffizient kann dann direkt zu dem bereits randomisierten Register hinzugefügt werden. So wird der abgetastete Wert nicht in einer klaren oder nicht-randomisierten Weise gespeichert.
  • Der präsentierte Ansatz kann an ASICs, Mikrosteuereinheiten und/oder Mikroprozessoren implementiert werden. Er kann verwendet werden, um öffentliche Schlüsselverschlüsselungs- oder Signaturschemata auf der Basis von Gitterannahmen zu schützen. In [Tim Güneysu, Vadim Lyubashevsky, Thomas Pöppelmann: Practical Lattice-Based Cryptography: A Signature Scheme for Embedded Systems. CHES 2012: 530-547] wird ein Signaturschema beschrieben, das q = 838349 und n = 512 verwendet. Die am meisten kritische geheime Schlüsseloperation ist die Berechnung der Polynome z 1 = s 1 c + y 1
    Figure DE102017117907B4_0010
    und z 2 = s 2 c + y 2 ,
    Figure DE102017117907B4_0011
    wobei geheime temporäre (d.h. für jede Signatur abgetastete) Polynome y1 und y2 mit Koeffizienten sind, die zufällig zwischen -214 und 214 abgetastet werden, und wobei die „·“-Operation als polynominale Multiplikation im Ring Zq[x]/(f) zu interpretieren ist, und die „+“-Operation als polynominale Addition im Ring Zq[x]/(f) zu interpretieren ist.
  • Ein Polynom c ist ein kleines Polynom mit geringer Dichte, das aus der Ausgabe einer Hash-Funktion generiert wird (nur 32 Bits werden auf Eins gesetzt, der Rest wird auf Null gesetzt). Diese Hash-Funktion nimmt als Eingabe eine Nachricht und eine Kombination eines Polynoms a mit den Polynomen y1 and y2. Auf diese Weise ist die Nachricht an die Polynome y1 and y2 sowie a gebunden. Das Polynom c wird zum Benutzer als Teil der Signatur zusammen mit den Polynomen z1 and z2 zurückgeführt. Für Sicherheitszwecke werden die Polynome z1 and z2 jedoch verarbeitet, bevor sie ausgegeben werden, so dass der Wert von den geheimen Schlüsselpolynomen s1 and s2 unabhängig ist.
  • Die geheimen Schlüsselpolynome s1 and s2 können klein sein und können Koeffizienten umfassen, die insbesondere zufällig aus -1 oder 0 oder 1 ausgewählt werden. Um den geheimen Schlüssel zu schützen, könnten die Lifting-Operation und die Randomisierungsoperation vor jeder Operation, die geheime Schlüsselpolynome s1 and s2 oder geheime temporäre Polynome y1, y2 involviert, angewendet werden, so dass die „·“-Operation und „+“-Operation im Ring Zq,[x]/(f) angewendet werden. Ein Beispiel einer Wahl ist k = 29, so dass q' = 4292346368, d.h. q' < 232. Auf diese Weise passen Elemente, die modulo q' bestimmt werden, weiterhin in ein 32-Bit-Register.
  • Ein Beispiel einer Berechnung des Polynoms z1 könnte wie folgt sein: z 1 = R e d u c t i o n ( R a n d o m i z a t i o n ( L i f t i n g ( s 1 ) ) R a n d o m i z a t i o n ( L i f t i n g ( c ) ) + R a n d o m i z a t i o n ( L i f t i n g ( y 1 ) ) ) .
    Figure DE102017117907B4_0012
  • Für eine zusätzliche Sicherheit ist es auch möglich, die geheimen Schlüsselpolynome s1 and s2 (oder allgemein beliebige Werte) bereits in einer redundanten Repräsentation zu speichern (d.h. geliftet und randomisiert), und die Rerandomisierungsoperation vor jeder geheimen Schlüsseloperation vorzunehmen.
  • Der hier beschriebene Ansatz kann auch in Kombination mit maskierten Implementierungen verwendet werden, wo ein geheimer Schlüssel in zwei (vorzugsweise randomisierte) Teile geteilt wird (wie z.B. in [Oscar Reparaz, Sujoy Sinha Roy, Ruan de Clercq, Frederik Vercauteren, Ingrid Verbauwhede: Masking ring-LWE. J. Cryptographic Engineering 6(2): 139-153 (2016)] vorgeschlagen). Auf diese Weise kann die Sicherheit der Maskierung mit dem verstärkten Schutz erweitert werden, wie hier beschrieben.
  • Beispiel einer Ausführungsform:
  • Das Folgende beschreibt Details eines Beispiels einer Ausführungsform des hier präsentierten Ansatzes:
    • ganze Zahl Modulus q = 12289
    • ganze Zahl k = 100
    • ganze Zahl Modulus q' = k * q = 1228900
    • ganze Zahl n = 8
    • polynominaler Modulus f = xn-1
    • Eingabe v1 = [32, 4332, 41, 232, 4343, 5343, 3131, 222]
    • Eingabe v2 = [323, 121, 534, 532, 4343, 132, 332, 32]
    • Eingabe v3 = [0, 1, 2, 3, 1, 4, 1, 3]
  • Als Beispiel wird eine Berechnung v1·v3+v2 durchgeführt. Die „-“-Operation wird als polynominale Multiplikation im Ring Zq[x]/(f) interpretiert, umfassend die Reduktion q. Die „+“-Operation wird als polynominale Addition im Ring Zq[x]/(f) interpretiert, umfassend die Reduktion modulo q. Das Ergebnis dieser Berechnung ist [4277, 8482, 10560, 3584, 866, 6848, 8546, 7124], das geprüft werden muss (siehe unten).
  • Beispiele von Schritten des hier beschriebenen Ansatzes:
    • - Berechnung von v1·v3+v2 unter Verwendung von LIFTING und RANDOMIZATION in die andere Domäne,
    • - COMPUTATION in dieser Domäne,
    • - RE-RANDOMIZATION nach einer Berechnung, und
    • - REDUCTION, um das Endergebnis zu erhalten (gleich dem erwarteten).
  • LIFTING & RANDOMIZATION:
    • v1_lifted= [786528, 28910, 331844, 270590, 913729, 840995, 1109141, 98534]
  • Unter Berücksichtigung der ersten Komponente von v1_lifted und v1 führt das Lifting (und die Randomisierung) zu dem Wert 786528 auf der Basis des Werts 32. Dies wird erzielt, indem 32 + 64*12289 angewendet wird, wobei 64 der zufällige Wert r und 12289 der Modulus q ist.
  • In diesem Beispiel sind die zufälligen Werte ri, die der Operation vi+ri*q unterzogen werden, um v1 auf v1_lifted zu liften, [64, 2, 27, 22, 74, 68, 90, 8]. Die folgende Tabelle fasst diese Operation für die Komponenten von v1_lifted und v1 zusammen:
    i vi ri q vi + ri*q
    0 32 64 12289 786528
    1 4332 2 12289 28910
    2 41 27 12289 331844
    3 232 22 12289 270590
    4 4343 74 12289 913729
    5 5343 68 12289 840995
    6 3131 90 12289 1109141
    7 222 8 12289 98534
    v2_lifted und v3_lifted werden entsprechend bestimmt, was ergibt:
    • v2_lifted = [516461, 36988, 270892, 627271, 28921, 245912, 799117, 675927]
    • v3_lifted = [270358, 725052, 995411, 3, 995410, 860234, 417827, 184338]
  • Als Nächstes wird die COMPUTATION des Zwischenwerts el_lifted = v 1 _ lifted v3_lifted
    Figure DE102017117907B4_0013
    durchgeführt. Wenn Operationen „+“ oder „-“ an gelifteten Polynomen durchgeführt werden, impliziert dies, dass sie als polynominale Addition oder polynominale Multiplikation im Ring Zq, [x]/(f) zu interpretieren sind.
  • Dies ergibt:
    • e1_lifted = [348046, 1114371, 1128325, 728103, 660129, 842368, 1101935, 818166]
  • Die optionale RE-RANDOMIZATION des Zwischenergebnisses e1_lifted ergibt:
    • [298890, 291008, 10026, 838704, 475794, 350808, 868444, 486363]
  • Als Nächstes erfolgt die COMPUTATION eines zusätzlichen Zwischenwerts e2_lifted wie folgt:
    • e2_lifted = e1_lifted + v2_lifted
    • e2_lifted = [815351, 327996, 280918, 237075, 504715, 596720, 438661, 1162290]
  • Bei der REDUCTION wird die redundante Repräsentation aus e2_lifted entfernt, was ergibt:
    • res_final = [4277, 8482, 10560, 3584, 866, 6848, 8546, 7124].
  • Dies entspricht dem Ergebnis der Initialoperation v1·v3+v2, wie oben gezeigt.
  • Für Zwecke der Erläuterung: der erste Wert von res_final wird wie folgt erhalten:
    • 815351 modulo 12289 = 4277.
  • Die übrigen Werte von res_final werden entsprechend bestimmt.
  • Hier im Nachstehenden wird der Algorithmus gezeigt, der die obigen Ergebnisse liefert. Als Beispiel wird die Programmiersprache Python verwendet:
     import random

     #Common functions
     def mul(a,b,modulus):
         res = [0] * (n)

         for o1,i1 in enumerate(a):
              for o2, i2 in enumerate(b):
                    res[(o1+o2) % n] = (res[(o1+o2) % n] + i1*i2) %
     modulus 
         return res

     def add(res,a, modulus):
         for i in range(len(res)):
              res[i] = int ((res [i] + a [i]) % modulus)

     def to_mod(s1, modulus):
         res = [0]* (n)
         for i in range(len(res)):
              res[i] = s1[i] % modulus
         return res

     *Lifting
     def lifting(a, modulus q, modulus q prime, k):
         #The polynomial a has modulus modulus_q
         #We randomize and lift to modulus_q_prime
         #We add r*q for r<k to every coefficient of a
         res = [0]*(n)
         for i in ränge(len(res)):
              r = random.randint(0, k)
              res[i] = (a[i] + r*modulus_q) % modulus_qprime
         return res

     #Example

     #Rng is seeded with fixed value for reproducability
     random.seed(42)

     modulus q = 12289
     k = 100
     modulus q_prime = k * modulus_q
     n = 8

     print "integer modulus", modulus_q
     print "k = ", k
     print "integer modulus q' = k * q = ", k * modulus_q
     print "integer n =", n
     print "polynomial modulus f = x^n-1"

     v1 = [32, 4332, 41, 232 ,4343, 5343, 3131, 222]
     v2 = [323, 121, 534, 532 ,4343, 132, 332, 32]
     v3 = [0, 1, 2, 3, 1, 4, 1, 3]

     print "v1 =", v1
     print "v2 =", v2
     print "v3 =", v3
     print "Compute v1*v3+v2"

     e = mul(v1, v3, modulus q)
     add(e, v2, modulus q)
     print "Expected result (to check)" 
     print e

     print ""

     #Perfom the lifting. Thus randomization of the signals of
     v1,v2,v3

     v1_lifted = lifting(v1, modulus_q, modulus_q_prime, k)
     print "LIFTING & RANDOMIZATION: v1_lifted =", v1_lifted

     v2_lifted = lifting(v2, modulus_q, modulus_q_prime, k)
     print "LIFTING & RANDOMIZATION: v2_lifted =", v2_lifted

     v3_lifted = lifting(v3, modulus q, modulus q prime, k)
     print "LIFTING & RANDOMIZATION: v3_lifted =", v3_lifted

     #Nor perform computation on randomized signals
     print "COMPUTATION of intermediate value
     e1_lifted=v1_lifted*v3_lifted:"
     e_lifted = mul(v1_lifted, v3_lifted, modulus_q_prime)
     print e_lifted

     print "Optional: RE-RANDOMIZATION of intermediate result
     e1_lifted:"
     e_lifted = lifting(e_lifted, modulus_q, modulus_q_prime, k)
     print "Re-Randomized representation of e"
     print e_lifted


     print "COMPUTATION of additional intermediate value
     e2_lifted=e1_lifted+v2_lifted"
     add(e_lifted, v2_lifted, modulus_q_prime)
     print "e2_lifted =", e_lifted

     print "REDUCTION: remove redundant representation"
     print "The result of the computation (e2_lifted) with
     randomization removed"
     print "res_final =",to_mod(e_lifted,modulus_q)
  • Die hier beschriebenen Beispiele können als Instruktionen realisiert werden, die von einer Datenverarbeitungsvorrichtung, wie einem Personalcomputer, einer Mikrosteuereinheit oder einer Smartcard, verarbeitet werden.
  • 2 zeigt eine Verarbeitungsvorrichtung 200, die eine CPU 201, einen RAM 202, einen nicht-flüchtigen Speicher 203 (NVM), ein Krypto-Modul 204, ein analoges Modul 206, eine Eingabe/Ausgabe-Schnittstelle 207 und einen Hardware-Zufallszahlengenerator 212 umfasst.
  • In diesem Beispiel hat die CPU 201 Zugriff auf mindestens ein Krypto-Modul 204 über einen gemeinsam genutzten Bus 205, mit dem jedes Krypto-Modul 204 gekoppelt ist. Jedes Krypto-Modul 204 kann insbesondere einen oder mehrere Krypto-Kerne umfassen, um bestimmte kryptografische Operationen vorzunehmen. Beispiele von Krypto-Kernen sind:
    • - ein AES-Kern 209,
    • - ein SHA-Kern 210,
    • - ein ECC-Kern 211, und
    • - ein gitterbasierter Krypto- (LBC-) Kern 208.
  • Der gitterbasierte Krypto-Kern 208 kann vorgesehen sein, um die gitterbasierte Kryptographie zu beschleunigen.
  • Die CPU 201, der Hardware-Zufallszahlengenerator 212, der NVM 203, das Krypto-Modul 204, der RAM 202 und die Eingabe/Ausgabe-Schnittstelle 207 sind mit dem Bus 205 verbunden. Die Eingabe/Ausgabe-Schnittstelle 207 kann eine Verbindung 214 mit anderen Vorrichtungen aufweisen, die ähnlich der Verarbeitungsvorrichtung 200 sein können.
  • Das Krypto-Modul 204 kann oder kann nicht mit Hardware-basierten Sicherheitsmerkmalen ausgestattet sein.
  • Das analoge Modul 206 wird mit elektrischer Energie 213 über einen elektrischen Kontakt und/oder über ein elektromagnetisches Feld versorgt. Diese Energie wird zugeführt, um die Schaltungen der Verarbeitungsvorrichtung 200 anzusteuern, und kann insbesondere gestatten, dass die Eingabe/Ausgabe-Schnittstelle Verbindungen mit anderen Vorrichtungen über die Verbindung 214 initiiert und/oder aufrechterhält.
  • Der Bus 205 selbst kann maskiert oder nicht-maskiert sein. Instruktionen zur Verarbeitung der hier beschriebenen Schritte können insbesondere in dem NVM 203 gespeichert und von der CPU 205 verarbeitet werden. Die verarbeiteten Daten können in dem NVM 203 oder in dem RAM 202 gespeichert werden. Unterstützende Funktionen können von den Krypto-Modulen 204 vorgesehen werden (z.B. Expansion von pseudo-zufälligen Daten). Zufallszahlen werden von dem Hardware-Zufallszahlengenerator 212 geliefert.
  • Schritte des hier beschriebenen Verfahrens können ausschließlich oder mindestens teilweise auf dem Krypto-Modul 204 durchgeführt werden, z.B. auf dem gitterbasierten Krypto-Kern 208. Beispielsweise können Instruktionen in dem gitterbasierten Krypo-Kern 208 gespeichert werden, oder sie können von der CPU 201 über den Bus 205 geliefert werden. Daten können lokal mit dem gitterbasierten Krypto-Kern 208 gespeichert werden. Es ist auch eine Option, dass die Daten temporär in dem RAM 202 oder dem NVM 203 gespeichert werden. Der gitterbasierte Krypto-Kern 208 kann auch andere Krypto-Module verwenden, um unterstützende Funktionen vorzusehen (z.B. Expansion von pseudo-zufälligen Daten). Der gitterbasierte Krypto-Kern 208 kann auch einen Hardware-Zufallszahlengenerator 212 oder ein Mittel umfassen, um physikalische und/oder Software-Zufallszahlen zu generieren.
  • Die Verarbeitungsvorrichtung 200 kann eine Chipkarte sein, die von einem direkten elektrischen Kontakt oder durch ein elektromagnetisches Feld mit Energie versorgt wird. Die Verarbeitungsvorrichtung 200 kann eine feste Schaltung sein oder auf rekonfigurierbarer Hardware (z.B. feldprogrammierbare Gate-Anordnung, FPGA) basieren. Die Verarbeitungsvorrichtung 200 kann mit einem Personalcomputer, einer Mikrosteuereinheit, einer FPGA oder einem SmartPhone gekoppelt sein.
  • In einem oder mehreren Beispielen können die hier beschriebenen Funktionen mindestens teilweise in Hardware implementiert werden, wie spezifischen Hardware-Komponenten oder einem Prozessor. Allgemeiner können die Techniken in Hardware, Prozessoren, Software, Firmware oder einer beliebigen Kombination davon implementiert werden. Bei einer Implementierung in Software können die Funktionen gespeichert werden oder als eine oder mehrere Instruktionen oder Code auf einem computerlesbaren Medium übertragen und von einer Hardware-basierten Verarbeitungseinheit ausgeführt werden. Computerlesbare Medien können computerlesbare Speichermedien umfassen, die einem greifbaren Medium entsprechen, wie einem Datenspeichermedium, oder Kommunikationsmedien, die ein beliebiges Medium umfassen, das den Transfer eines Computerprogramms von einem Ort zu einem anderen erleichtert, z.B. gemäß einem Kommunikationsprotokoll. Auf diese Weise können computerlesbare Medien allgemein entsprechen: (1) greifbaren computerlesbaren Speichermedien, die nicht-transitorisch sind, oder (2) einem Kommunikationsmedium, wie einem Signal oder einer Trägerwelle. Datenspeichermedien können beliebige verfügbare Medien sein, auf die durch einen oder mehrere Computer oder einen oder mehrere Prozessoren zugegriffen werden kann, um Instruktionen, Code und/oder Datenstrukturen zur Implementierung der in dieser Offenbarung beschriebenen Techniken abzurufen. Ein Computerprogrammprodukt kann ein computerlesbares Medium umfassen.
  • Als Beispiel und nicht als Einschränkung können solche computerlesbaren Speichermedien umfassen: RAM, ROM, EEPROM, CD-ROM oder einen anderen optischen Plattenspeicher, Magnetplattenspeicher oder andere Magnetspeichervorrichtungen, Flash-Speicher oder irgendein anderes Medium, das verwendet werden kann, um einen gewünschten Programmcode in der Form von Instruktionen oder Datenstrukturen zu speichern, und auf das von einem Computer zugegriffen werden kann. Auch wird eine beliebige Verbindung geeignet als computerlesbares Medium bezeichnet, d.h. ein computerlesbares Übertragungsmedium. Wenn beispielsweise Instruktionen von einer Website, einem Server oder einer anderen entfernen Quelle unter Verwendung eines Koaxialkabels, eines Faseroptikkabels, eines verdrillten Paars, einer Digital Subscriber Line (DSL) oder drahtloser Technologien, wie Infrarot, Funk und Mikrowellen, übertragen werden, sind dann das Koaxialkabel, das Faseroptikkabel, das verdrillte Paar, die DSL oder die drahtlosen Technologien, wie Infrarot, Funk und Mikrowellen, in der Definition des Mediums eingeschlossen. Es ist jedoch klar, dass computerlesbare Speichermedien und Datenspeichermedien keine Verbindungen, Trägerwellen, Signale oder andere transiente Medien umfassen, sondern stattdessen auf nicht-transiente, greifbare Speichermedien gerichtet sind. Disk und Disc, wie hier verwendet, umfassen Compact Disc (CD), Laser Disc, Optical Disc, Digital Versatile Disc (DVD), Disketten und Blueray Disc, wobei Disks üblicherweise Daten magnetisch reproduzieren, während Discs Daten optisch mit Lasern reproduzieren. Kombinationen der obigen sollen auch im Umfang von computerlesbaren Medien eingeschlossen sein.
  • Instruktionen können durch einen oder mehrere Prozessoren ausgeführt werden, wie eine oder mehrere Zentraleinheiten (CPU), digitale Signalprozessoren (DSPs), Universal-Mikroprozessoren, anwendungsspezifische Integrationsschaltungen (ASICs), feldprogrammierbare Logikanordnungen (FPGAs) oder andere äquivalente integrierte oder diskrete Logikschaltungen. Demgemäß kann sich der Ausdruck „Prozessor“, wie hier verwendet, auf eine beliebige der vorhergehenden Strukturen oder irgendeine andere Struktur beziehen, die für die Implementierung der hier beschriebenen Techniken geeignet ist. Zusätzlich kann in einigen Aspekten die hier beschriebene Funktionalität innerhalb dedizierter Hardware und/oder Software-Module geliefert werden, die zum Codieren und Decodieren ausgelegt sind, oder in einem kombinierten Codec eingeschlossen sein. Die Techniken könnten auch vollständig in einer oder mehreren Schaltungen oder Logikelementen implementiert werden.
  • Die Techniken dieser Offenbarung können in verschiedensten Vorrichtungen oder Einrichtungen implementiert werden, umfassend ein drahtloses Handgerät, eine integrierte Schaltung (IC) oder einen Satz von ICs (z.B. einen Chipsatz). Verschiedene Komponenten, Module oder Einheiten werden in dieser Offenbarung beschrieben, um funktionelle Aspekte von Vorrichtungen hervorzuheben, die ausgelegt sind, die geoffenbarten Techniken vorzunehmen, erfordern jedoch nicht unbedingt die Realisierung durch verschiedene Hardware-Einheiten. Stattdessen können, wie oben beschrieben, verschiedene Einheiten in einer einzelnen Hardware-Einheit kombiniert werden oder durch eine Ansammlung von interoperativen Hardware-Einheiten vorgesehen werden, umfassend einen oder mehrere Prozessoren, wie oben beschrieben, in Verbindung mit geeigneter Software und/oder Firmware.
  • Claims (13)

    1. Verfahren zum Durchführen einer kryptografischen gitterbasierten Operation in einer Sicherheitsvorrichtung, wobei sicherheitsrelevante Berechnungen in einer redundanten Darstellung in Kombination mit einer koeffizientenweisen Randomisierung vorgenommen werden, um zumindest einen teilweisen Schutz gegen Seitenkanalangriffe zu erzielen, wobei die Sicherheitsvorrichtung eine integrierte Schaltung, ein Hardware-Sicherheitsmodul oder ein Trusted Platform-Modul ist oder umfasst, wobei das Verfahren die folgenden Schritte umfasst: (a) Liften von Koeffizienten einer Datenstruktur von einer Repräsentation modulo q in eine Repräsentation modulo q', wobei die Datenstruktur Werte umfasst, die modulo q reduziert sind, wobei q und q' ganze Zahlen sind; (b) Randomisieren der Koeffizienten in modulo q', wobei für jeden Koeffizienten ein zufälliger Wert mit dem Wert von q multipliziert wird, und das Ergebnis dieser Multiplikation zu dem Koeffizienten addiert wird; (c) Durchführen einer Operation auf den gelifteten und randomisierten Koeffizienten; (d) Reduzieren der gelifteten und randomisierten Koeffizienten durch Durchführen einer Operation modulo q.
    2. Verfahren nach Anspruch 1, bei dem der Wert von q' größer ist als der Wert von q.
    3. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Datenstruktur mindestens eines der Folgenden umfasst: ein Polynom, eine Matrix oder einen Vektor.
    4. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Operation eine arithmetische Operation ist.
    5. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend nach Schritt (c): (c1) Wiederholen der Schritte (b) und (c) mindestens einmal, bevor zu Schritt (d) verzweigt wird.
    6. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Datenstruktur eine geheime Datenstruktur ist.
    7. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Wert von q und/oder der Wert von q' eine Primzahl oder eine Zweierpotenz ist/sind.
    8. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Wert von q' derart ausgewählt wird, dass er einer Breite einer integrierten Verarbeitungseinheit entspricht.
    9. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Wert von q' variiert.
    10. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren zum Betreiben einer Verarbeitungsvorrichtung verwendet wird, insbesondere einer der Folgenden: - eines FPGA, - einer Verarbeitungseinheit, - einer Steuereinheit, - einer Smartcard.
    11. Vorrichtung, umfassend: - eine Verarbeitungseinheit, - eine Krypto-Einheit, - einen Bus, der die Verarbeitungseinheit mit der Krypto-Einheit koppelt, - wobei die Krypto-Einheit eingerichtet ist: (a) Koeffizienten einer Datenstruktur von einer Repräsentation modulo q in eine Repräsentation modulo q' zu liften, wobei die Datenstruktur Werte umfasst, die modulo q reduziert sind, wobei q und q' ganze Zahlen sind; (b) die Koeffizienten in modulo q' zu randomisieren, wobei für jeden Koeffizienten ein zufälliger Wert mit dem Wert von q multipliziert wird, und das Ergebnis dieser Multiplikation zu dem Koeffizienten addiert wird; - wobei die Verarbeitungseinheit eingerichtet ist: (c) eine Operation an den gelifteten und randomisierten Koeffizienten durchzuführen; - und wobei die Krypto-Einheit eingerichtet ist: (d) die gelifteten und randomisierten Koeffizienten durch Durchführen einer Operation modulo q zu reduzieren.
    12. Vorrichtung nach Anspruch 11, wobei die Vorrichtung ein FPGA, eine Verarbeitungseinheit, eine Steuereinheit oder eine Smartcard ist.
    13. Computerprogrammprodukt, welches direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung geladen werden kann, umfassend Software-Codeabschnitte als Anweisung an eine Datenverarbeitungsanlage zum Vornehmen der Schritte des Verfahrens nach einem der Ansprüche 1 bis 10.
    DE102017117907.0A 2017-08-07 2017-08-07 Durchführen einer kryptografischen Operation Active DE102017117907B4 (de)

    Priority Applications (3)

    Application Number Priority Date Filing Date Title
    DE102017117907.0A DE102017117907B4 (de) 2017-08-07 2017-08-07 Durchführen einer kryptografischen Operation
    US16/040,971 US10965462B2 (en) 2017-08-07 2018-07-20 Conducting a cryptographic operation
    CN201810891557.7A CN109388955B (zh) 2017-08-07 2018-08-07 用于实施加密运算的方法和设备及存储介质

    Applications Claiming Priority (1)

    Application Number Priority Date Filing Date Title
    DE102017117907.0A DE102017117907B4 (de) 2017-08-07 2017-08-07 Durchführen einer kryptografischen Operation

    Publications (2)

    Publication Number Publication Date
    DE102017117907A1 DE102017117907A1 (de) 2019-02-07
    DE102017117907B4 true DE102017117907B4 (de) 2023-04-27

    Family

    ID=65019813

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102017117907.0A Active DE102017117907B4 (de) 2017-08-07 2017-08-07 Durchführen einer kryptografischen Operation

    Country Status (3)

    Country Link
    US (1) US10965462B2 (de)
    CN (1) CN109388955B (de)
    DE (1) DE102017117907B4 (de)

    Families Citing this family (11)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    DE102017117899A1 (de) * 2017-08-07 2019-02-07 Infineon Technologies Ag Durchführen einer kryptografischen Operation
    US10778407B2 (en) * 2018-03-25 2020-09-15 Nuvoton Technology Corporation Multiplier protected against power analysis attacks
    DE102018108313A1 (de) 2018-04-09 2019-10-10 Infineon Technologies Ag Verfahren und Verarbeitungsvorrichtung zum Ausführen einer kryptografischen Operation auf Gitterbasis
    US11032061B2 (en) * 2018-04-27 2021-06-08 Microsoft Technology Licensing, Llc Enabling constant plaintext space in bootstrapping in fully homomorphic encryption
    EP3959840A4 (de) * 2019-04-23 2023-01-11 Quantropi Inc. Verbesserte zuverlässigkeit für digitale systeme
    KR20210081471A (ko) 2019-12-23 2021-07-02 삼성전자주식회사 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템
    JP7273753B2 (ja) * 2020-03-06 2023-05-15 株式会社東芝 数論変換処理装置、数論変換処理方法及びプログラム
    WO2021252294A1 (en) * 2020-06-08 2021-12-16 Cryptography Research, Inc. Protection of transformations by intermediate randomization in cryptographic operations
    DE102020121229B3 (de) * 2020-08-12 2022-01-27 Infineon Technologies Ag Verfahren zum Überprüfen einer GDFT-Operation und Sicherheitseinrichtung zur Durchführung des Verfahrens
    CN113253972A (zh) * 2021-05-13 2021-08-13 南京航空航天大学 一种lac中稀疏多项式乘法加速器的fpga实现方法
    EP4199410A1 (de) * 2021-12-17 2023-06-21 Thales Dis France SAS Gegen seitenkanalangriffe gesichertes verfahren zur durchführung eines kryptographischen algorithmus mit polynombetrieb

    Citations (5)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    EP0920753B1 (de) 1996-08-19 2006-12-13 NTRU Cryptosystems, Inc. Kryptographisches verfahren und vorrichtung mit öffentlichem schlüssel
    US20130216044A1 (en) 2012-02-17 2013-08-22 International Business Machines Corporation Homomorphic evaluation including key switching, modulus switching, and dynamic noise management
    WO2014037657A1 (fr) 2012-09-04 2014-03-13 Morpho Protection contre canaux auxiliaires
    WO2017008043A1 (en) 2015-07-08 2017-01-12 Brown University Homomorphic encryption
    US20170134157A1 (en) 2015-11-05 2017-05-11 Microsoft Technology Licensing, Llc Homomorphic Encryption with Optimized Encoding

    Family Cites Families (7)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    FR2824209B1 (fr) * 2001-04-30 2003-08-29 St Microelectronics Sa Brouillage d'un calcul mettant en oeuvre une fonction modulaire
    US8024391B2 (en) * 2006-11-06 2011-09-20 Atmel Rousset S.A.S. Modular multiplication method with precomputation using one known operand
    US8280041B2 (en) * 2007-03-12 2012-10-02 Inside Secure Chinese remainder theorem-based computation method for cryptosystems
    US7995765B2 (en) * 2008-08-28 2011-08-09 Red Hat, Inc. Sharing a secret using hyperplanes over GF(q)
    EP2667539A1 (de) * 2012-05-21 2013-11-27 Koninklijke Philips N.V. Verfahren und Vorrichtung zur gemeinsamen Schlüsselnutzung und System zu deren Konfiguration
    EP2873186B1 (de) * 2012-07-26 2018-03-07 NDS Limited Verfahren und system zur homomorphen randomisierung einer eingabe
    JP6016948B2 (ja) * 2013-01-17 2016-10-26 日本電信電話株式会社 秘匿計算システム、演算装置、秘匿計算方法、およびプログラム

    Patent Citations (5)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    EP0920753B1 (de) 1996-08-19 2006-12-13 NTRU Cryptosystems, Inc. Kryptographisches verfahren und vorrichtung mit öffentlichem schlüssel
    US20130216044A1 (en) 2012-02-17 2013-08-22 International Business Machines Corporation Homomorphic evaluation including key switching, modulus switching, and dynamic noise management
    WO2014037657A1 (fr) 2012-09-04 2014-03-13 Morpho Protection contre canaux auxiliaires
    WO2017008043A1 (en) 2015-07-08 2017-01-12 Brown University Homomorphic encryption
    US20170134157A1 (en) 2015-11-05 2017-05-11 Microsoft Technology Licensing, Llc Homomorphic Encryption with Optimized Encoding

    Non-Patent Citations (3)

    * Cited by examiner, † Cited by third party
    Title
    CATALANO, Dario; NGUYEN, Phong Q.; STERN, Jacques: The hardness of Hensel lifting: The case of RSA and discrete logarithm. In: International Conference on the Theory and Application of Cryptology and Information Security. Berlin, Heidelberg : Springer, 2002. S. 299–310. DOI: 10.1007/3-540-36178-2_19
    Oscar Reparaz, Sujoy Sinha Roy, Ruan de Clercq, Frederik Vercauteren, Ingrid Verbauwhede: Masking ring-LWE. J. Cryptographic Engineering 6(2): 139-153 (2016)
    SRINIVASAN, Sridhar: Modulo Transforms – an Alternative to Lifting. Microsoft Digital Media Division, 2005. URL: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-2004-130.pdf [abgerufen am 1. März 2018]

    Also Published As

    Publication number Publication date
    DE102017117907A1 (de) 2019-02-07
    CN109388955A (zh) 2019-02-26
    CN109388955B (zh) 2023-11-07
    US20190044720A1 (en) 2019-02-07
    US10965462B2 (en) 2021-03-30

    Similar Documents

    Publication Publication Date Title
    DE102017117907B4 (de) Durchführen einer kryptografischen Operation
    DE102018108313A1 (de) Verfahren und Verarbeitungsvorrichtung zum Ausführen einer kryptografischen Operation auf Gitterbasis
    DE102017117899A1 (de) Durchführen einer kryptografischen Operation
    DE102018122278A1 (de) Ausführen einer kryptographischen Operation
    DE102019108095A1 (de) Ausführen einer kryptografischen Operation
    EP2771782B1 (de) Effiziente primzahlprüfung
    DE102018115439A1 (de) Technologien zur fehlertoleranten Berechnung von Elliptische-Kurven-Digitalsignaturen
    DE102016120558A1 (de) Datenverarbeitungsvorrichtung und -verfahren für kryptographische verarbeitung von daten
    DE112009000154T5 (de) Änderung der Darstellung eines Punktes auf einer elliptischen Kurve
    DE112015006865T5 (de) Vorrichtung zum Erzeugen eines Nachrichten-Authenticators, Verfahren zum Erzeugen eines Nachrichten-Authenticators und Programm zum Erzeugen eines Nachrichten-Authenticators
    DE102020119569B3 (de) Bereitstellen einer kryptografischen Information
    DE112009000152B4 (de) Verfahren zur Datenübertragung über einen Datenkanal mit einem Elliptische-Kurven-Kryptographieverfahren und Vorrichtung hierfür
    DE112018002723B4 (de) System, verfahren und vorrichtung zur verschleierung von vorrichtungsoperationen
    EP2641241B1 (de) Verfahren zur langzahldivision oder modulare reduktion
    DE102020113198A1 (de) Kryptografische Operation
    DE102021120010B3 (de) Kryptografische verarbeitungsvorrichtung und verfahren zur durchführung einer gitterbasierten kryptografieoperation
    DE102021003275B3 (de) Verfahren zur Berechnung eines Übergangs von einer booleschen zu einer arithmetischen Maskierung
    DE10042234C2 (de) Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor
    DE102020134618A1 (de) Sicherheits-controller und verfahren zur verarbeitung von datenelementen eines datenfeldes
    EP1596527B1 (de) Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung
    DE102021106883A1 (de) Komprimierung in der gitterbasierten Kryptografie
    DE112020006160T5 (de) Kryptografische verschleierungsparameter, die bei der elliptische-kurven-kryptografie verwendet werden, und zugehörige systeme und vorrichtungen
    DE102020102796A1 (de) Datenverarbeitungsvorrichtung und verfahren zum verarbeiten von geheimen daten
    DE102022115195A1 (de) Verarbeitung von kryptografischen Daten
    DE10156708B4 (de) Verfahren und Vorrichtung zum Multiplizieren und Verfahren und Vorrichtung zum Addieren auf einer elliptischen Kurve

    Legal Events

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