DE102018122278A1 - Ausführen einer kryptographischen Operation - Google Patents

Ausführen einer kryptographischen Operation Download PDF

Info

Publication number
DE102018122278A1
DE102018122278A1 DE102018122278.5A DE102018122278A DE102018122278A1 DE 102018122278 A1 DE102018122278 A1 DE 102018122278A1 DE 102018122278 A DE102018122278 A DE 102018122278A DE 102018122278 A1 DE102018122278 A1 DE 102018122278A1
Authority
DE
Germany
Prior art keywords
polynomial
coefficients
sampling
determined
cryptographic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018122278.5A
Other languages
English (en)
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 DE102018122278.5A priority Critical patent/DE102018122278A1/de
Priority to US16/568,758 priority patent/US11798435B2/en
Publication of DE102018122278A1 publication Critical patent/DE102018122278A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]

Abstract

Vorgeschlagen wird ein Verfahren zum Ausführen einer kryptographischen Operation, umfassend die folgenden Schritte: (i) Stichprobennahme eines ersten Polynoms, wobei alle Koeffizienten des ersten Polynoms bestimmt werden; (ii) Stichprobennahme eines zweiten Polynoms, wobei eine Auswahl von k Koeffizienten des zweiten Polynoms bestimmt wird; (iii) Multiplizieren des ersten Polynoms mit dem zweiten Polynom; und (iv) Verwenden des Multiplikationsergebnisses in der kryptographischen Operation. Ferner wird eine entsprechende Sicherheitsvorrichtung bereitgestellt.

Description

  • Ausführungsformen der vorliegenden Erfindung beziehen sich auf einen Ansatz zum effizienten Durchführen einer kryptographischen Operation, insbesondere zum Verbessern der Robustheit solcher Operationen gegen Seitenkanalangriffe.
  • Die Aufgabe besteht darin, bestehende Lösungen zu verbessern und insbesondere eine effiziente Lösung zur Erhöhung der Robustheit gegen Seitenkanalangriffe bereitzustellen.
  • Dies wird durch die Merkmale der unabhängigen Ansprüche gelöst. Weitere Ausführungsformen ergeben sich aus den abhängigen Ansprüchen.
  • Die hier vorgeschlagenen Beispiele können insbesondere auf zumindest einer der folgenden Lösungen basieren. Kombinationen der nachstehenden Merkmale sind verwendbar, um ein gewünschtes Ergebnis zu erzielen. Die Merkmale des Verfahrens sind mit jeglichem (jeglichen) Merkmal(en) der Vorrichtung, des Geräts bzw. des Systems kombinierbar oder umgekehrt.
  • Bereitgestellt wird ein Verfahren zum Ausführen einer kryptographischen Gitteroperation, umfassend:
    • - Stichprobennahme (Sampling) eines ersten Polynoms, wobei alle Koeffizienten des ersten Polynoms bestimmt werden;
    • - Stichprobennahme eines zweiten Polynoms, wobei eine Auswahl von k Koeffizienten des zweiten Polynoms bestimmt wird;
    • - Multiplizieren des ersten Polynoms mit dem zweiten Polynom;
    • - Verwenden des Multiplikationsergebnisses in der kryptographischen Operation.
  • Das Polynom kann ein jegliches Array, eine jegliche Wertegruppe oder eine jegliche Sequenz (von Werten) sein.
  • Diese Lösung birgt den Vorteil, dass eine reduzierte Menge von Zufallszahlen erforderlich ist, um die kryptographische Operation durchzuführen.
  • Die k Koeffizienten des zweiten Polynoms werden bestimmt, die verbleibenden Koeffizienten des zweiten Polynoms sind 0.
  • Somit ist das Ergebnis eine Multiplikation, die auf dem ersten Polynom, bei dem alle seiner Koeffizienten festgelegt sind, und dem zweiten Polynom, bei dem nur einen Teil seiner Koeffizienten festgelegt ist, basiert. Dies ermöglicht, dass die Multiplikation in einer effizienten Weise ausgeführt wird.
  • Die Polynommultiplikation kann insbesondere im Ring ausgeführt werden, R q = Z q [ x ] x n + 1 ,
    Figure DE102018122278A1_0001
    d. h. es wird eine Standard-Polynommultiplikation ausgeführt, die eine Reduktion modulo eines Polynoms xn + 1 und eine Reduktion modulo einer Ganzzahl q umfasst.
  • Als eine Alternative kann die Polynommultiplikation im Ring R q = Z q [ x ] x n 1
    Figure DE102018122278A1_0002
    oder für jeglichen anderen Ring ausgeführt werden.
  • Aus Effizienzgründen kann die Polynommultiplikation unter Verwendung von Verfahren wie Schulbuchmultiplikation, Karazuba-Multiplikation oder NTT durchgeführt werden.
  • Außerdem kann ein Algorithmus zur dünnbesetzten (sparse) Polynommultiplikation verwendet werden, um die Eigenschaft zu nutzen, dass nur k Koeffizienten im zweiten Polynom festgelegt sind und dass k insbesondere im Hinblick auf n klein sein kann.
  • Nach einer Ausführungsform ist die kryptographische Operation eine Operation, die ein Geheimnis und/oder einen Fehler verwendet, wobei das Multiplikationsergebnis entweder das Geheimnis oder der Fehler in der kryptographischen Operation ist.
  • Die kryptographische Operation kann beispielsweise b = α · s + e sein, wobei b das Ergebnis der Operation ist, a ein einheitliches Polynom ist, s das geheime Polynom ist und e das Fehlerpolynom ist.
  • Nach einer Ausführungsform ist die kryptographische Operation eine Operation, die verwendet wird bei:
    • - einer Erzeugung eines öffentlichen Schlüssels,
    • - einer Erzeugung einer Signatur,
    • - einer Erzeugung eines privaten Schlüssels (Private Key) und/oder
    • - einer Verschlüsselung von Daten.
  • Nach einer Ausführungsform
    • - werden die Koeffizienten des ersten Polynoms gemäß einer ersten Verteilung bestimmt und
    • - werden die k Koeffizienten des zweiten Polynoms gemäß einer zweiten Verteilung bestimmt.
  • Die Koeffizienten des ersten Polynoms und/oder die Koeffizienten des zweiten Polynoms können derselben Verteilung folgen oder sie können unterschiedlichen Verteilungen folgen.
  • Nach einer Ausführungsform werden die Koeffizienten des ersten Polynoms und die Koeffizienten des zweiten Polynoms basierend auf Zufallszahlen bestimmt.
  • Zufallszahlen in dieser Hinsicht können jegliche der folgenden umfassen: echte Zufallszahlen, Pseudozufallszahlen oder deterministische Zahlen, die einer bestimmten Verteilung folgen.
  • Nach einer Ausführungsform werden die Koeffizienten des ersten Polynoms so bestimmt, dass
    • - ein Wert 0 mit einer Wahrscheinlichkeit von ζ auftritt,
    • - ein Wert -lim1 mit einer Wahrscheinlichkeit von α auftritt und
    • - ein Wert lim 1 mit einer Wahrscheinlichkeit von β auftritt,
    • - wobei ζ + α + β = 1.
  • Beispielsweise ζ = 0,5 und α = β = 0,25.
  • Nach einer Ausführungsform ist lim 1 eine Zahl im Bereich von 1 bis 16.
  • lim 1 kann beispielsweise +1 sein und -lim 1 kann -1 sein.
  • Nach einer Ausführungsform werden die k Koeffizienten des zweiten Polynoms so bestimmt, dass
    • - ein Wert -lim2 mit einer Wahrscheinlichkeit von 0,5 auftritt und
    • - ein Wert lim 2 mit einer Wahrscheinlichkeit von 0,5 auftritt.
  • Nach einer Ausführungsform ist lim2 eine Zahl im Bereich von 1 bis 5.
  • Nach einer Ausführungsform wird das Verfahren an einer Sicherheitsvorrichtung verwendet, die zumindest eine(s) der folgenden umfassen kann:
    • - eine integrierte Schaltung,
    • - ein Hardwaresicherheitsmodul,
    • - ein Trusted-Platform-Modul,
    • - eine Kryptoeinheit,
    • - ein FPGA,
    • - eine Verarbeitungseinheit,
    • - eine Steuerung,
    • - eine Smartkarte.
  • Nach einer Ausführungsform ist die kryptographische Operation eine kryptographische Gitteroperation.
  • Nach einer Ausführungsform können die Stichprobennahme des ersten Polynoms und/oder die Stichprobennahme des zweiten Polynoms zumindest zwei Schritte der Stichprobennahme und einen Schritt des Auswählens des tatsächlichen ersten und/oder zweiten Polynoms aus den zumindest zwei Stichprobennahmeschritten umfassen.
  • Außerdem wird eine Sicherheitsvorrichtung bereitgestellt, die dazu ausgelegt ist, die folgenden Schritte auszuführen:
    • - Stichprobennahme eines ersten Polynoms, wobei alle Koeffizienten des ersten Polynoms bestimmt werden;
    • - Stichprobennahme eines zweiten Polynoms, wobei eine Auswahl von k Koeffizienten des zweiten Polynoms bestimmt wird;
    • - Multiplizieren des ersten Polynoms mit dem zweiten Polynom;
    • - Verwenden des Multiplikationsergebnisses in der kryptographischen Operation.
  • Nach einer Ausführungsform ist die Sicherheitsvorrichtung eine(s) der folgenden oder umfasst zumindest eine(s) der folgenden:
    • - eine integrierte Schaltung,
    • - ein Hardwaresicherheitsmodul,
    • - ein Trusted-Platform-Modul,
    • - eine Kryptoeinheit,
    • - ein FPGA,
    • - eine Verarbeitungseinheit,
    • - eine Steuerung,
    • - eine Smartcarte.
  • Ferner wird ein Computerprogrammprodukt vorgeschlagen, das direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung geladen werden kann und Softwarecodeabschnitte zum Ausführen der Schritte des Verfahrens, wie es hier beschrieben ist, umfasst.
  • Zusätzlich wird eine Sicherheitsvorrichtung bereitgestellt, umfassend:
    • - Mittel zur Stichprobennahme eines ersten Polynoms, wobei alle Koeffizienten des ersten Polynoms bestimmt werden;
    • - Mittel zur Stichprobennahme eines zweiten Polynoms, wobei eine Auswahl von k Koeffizienten des zweiten Polynoms bestimmt wird;
    • - Mittel zum Multiplizieren des ersten Polynoms mit dem zweiten Polynom;
    • - Mittel zum Verwenden des Multiplikationsergebnisses in der kryptographischen Operation.
  • Ausführungsformen sind unter Bezugnahme auf die Zeichnungen gezeigt und dargestellt. Die Zeichnungen dienen der Illustration des Grundprinzips, sodass lediglich Aspekte dargestellt sind, die für das Verständnis des Grundprinzips erforderlich sind. Die Zeichnungen sind nicht maßstabsgerecht. In den Zeichnungen sind gleiche Merkmale durch dieselben Bezugszeichen gekennzeichnet. Es zeigen:
    • 1 einen Graphen, der eine beispielhafte Verteilung veranschaulicht;
    • 2 eine beispielhafte Anordnung einer Verarbeitungsvorrichtung, die eine CPU, einen RAM, einen nichtflüchtigen Speicher, ein Kryptomodul, ein analoges Modul, eine Eingangs-/Ausgangsschnittstelle und einen Hardware-Zufallszahlengenerator umfasst;
    • 3 eine alternative Anordnung mit einem Hardwaresicherheitsmodul (HSM);
    • 4 ein beispielhaftes Diagramm, das Schritte veranschaulicht, die durchzuführen sind, um eine kryptographische Gitteroperation effizient auszuführen.
  • Verschiedene Internet- und Industriestandards nutzen asymmetrische Kryptographie, die auf RSA oder Elliptische-Kurven-Kryptographie (Elliptic Curve Cryptography, ECC) basiert, um Datenkommunikation zwischen Smartkarten, Smartphones, Computern, Servern oder industriellen Steuersystemen zu schützen. Als ein Beispiel kann mit dem RSA-Algorithmus ein Schema einer Public-Key-Verschlüsselung (Public Key Encryption, PKE) umgesetzt werden, das es ermöglicht, eine verschlüsselte E-Mail (z. B. mit PGP/GPG oder S/MIME) an einen Empfänger zu versenden, ohne zunächst einen symmetrischen Schlüssel über einen sicheren Kanal austauschen zu müssen. Stattdessen ist der öffentliche Schlüssel des Empfängers ausreichend, um Vertraulichkeit zu erreichen.
  • Andere Anwendungen asymmetrischer Kryptographie sind digitale Signaturen, die ebenfalls auf RSA oder ECC basieren. Sie können verwendet werden, um Daten zu unterzeichnen und zu überprüfen; der öffentliche Schlüssel wird dazu verwendet, die Gültigkeit einer Signatur zu überprüfen.
  • Zusammen sind PKE und digitale Signaturen beide unverzichtbar im Transportschichtsicherheits(Transport Layer Security, TLS)-Protokoll, das das Rückgrat der gesicherten Kommunikation im Internet ist und von Browsern, Smartphones und Vorrichtungen des Internets der Dinge (Internet of Things, IoT) verwendet wird. TLS bildet einen gesicherten Kanal zwischen zwei Vorrichtungen, wo Kommunikation verschlüsselt wird, auf Manipulation überprüft wird und wo die Identität der Teilnehmer unter Verwendung eines digitalen Zertifikats, das durch eine Public-Key-Infrastruktur (Public Key Infrastructure, PKI) bereitgestellt wurde, verifiziert wird. Beim Verbinden mit einer Webseite, z. B. einer Bank, unter Verwendung von https statt http verwendet der Browser TLS. Üblicherweise können ein grünes Schloss und weitere Informationen angezeigt werden, um zu zeigen, dass die Kommunikation mit der Webseite der Bank läuft und dass Angriffe durch einen sogenannten Man-in-the-Middle verhindert werden. Ohne diese PKI-basierte Identitätsprüfung in Kombination mit starker Datenverschlüsselung wäre es für Angreifer möglich, die Kommunikation zu manipulieren und die aufgerufene Webseite zu imitieren.
  • Es ist jedoch bekannt, dass RSA- und ECC-basierte öffentliche Schlüssel erfolgreich angegriffen werden können.
  • Ein Quantencomputer lässt sich als ein Computer beschreiben, der sich quantenmechanische Erscheinungen unmittelbar zunutze macht, um die Verarbeitung zu beschleunigen. Wesentliche Konzepte beim Aufbau eines Quantencomputers sind sogenannte Quantenbits oder qubits, die einen Zustand in einem Quantenregister speichern. Diese Quantencomputer können verwendet werden, um kryptographische Konzepte zu zerstören, die als ausreichend sicher galten, bevor eine solche Verarbeitungsleistung verfügbar war.
  • Somit gibt es eine generelle Motivation, sich von klassischen asymmetrischen Kryptosystemen (RSA/ECC) weg zu bewegen, hin zu Schemata, die nicht von Quantencomputern erfolgreich angegriffen werden können. Folglich werden neue Lösungen für Signaturschemata, den Austausch von Schlüsseln und Public-Key-Verschlüsselung benötigt, die nicht auf denselben Grundlagen wie RSA und ECC (d. h. dem diskreten Logarithmusproblem oder Factoring) basieren. Dieser Bedarf an neuen technischen Lösungen wurde bereits durch Normungsorganisationen wie das NIST (National Institute of Standards and Technology), das alternative Kryptosysteme untersucht, bestätigt.
  • Ein Kryptosystem kann eine kryptographische Public-Key-Verschlüsselung, ein Schlüsselaustausch oder ein Signaturschema oder aber ein erweitertes Schema wie homomorphe Verschlüsselung oder attributbasierte Verschlüsselung sein. Bei der Public-Key-Verschlüsselung wird ein nicht geheimer öffentlicher Schlüssel verwendet, der sich nur mit dem zugeordneten geheimen Schlüssel entschlüsseln lässt. In Signaturschemata wird ein geheimer Schlüssel dazu verwendet, eine Nachricht zu unterzeichnen, und mit dem zugeordneten öffentlichen Schlüssel kann geprüft werden, dass der Unterzeichnende im Besitz des geheimen Schlüssels und somit zur Erzeugung der Signatur autorisiert war. Schlüsselaustausch oder Schlüsseleinrichtung ist ein interaktives Protokoll, bei dem zwei Parteien einen geheimen Schlüssel einrichten, der einem passiven oder bisweilen aktiven Gegner oder Mithörer nicht bekannt ist. Zudem sind verschiedene Optionen verwendbar, die Public-Key-Verschlüsselung, Schlüsselaustausch oder Signaturschemata zu Protokollen wie etwa Transport Layer Security (TLS) kombinieren.
  • Eine Klasse von Schemata oder, die Angriffen durch Quantencomputer widerstehen soll, sind gitterbasierte Kryptosysteme. Gitterbasierte Kryptosysteme könnten der Nachfolger von RSA und ECC werden und entweder mit großen Matrizen (Standardgitter) oder Polynomringen (Idealgitter) arbeiten. Zu gitterbasierter Kryptographie sei beispielsweise auf https://en.wikipedia.org/wiki/Latticebased_cryptography verwiesen.
  • Ein Gitter ist eine Struktur, die durch ganzzahlige lineare Kombinationen von Basisvektoren erzeugt wird. Somit lässt sich ein Gitter als eine regelmäßige Struktur in einem n-dimensionalen Raum beschreiben. Ein Gitter lässt sich auch als eine Anordnung von Punkten in einem euklidischen Raum mit einer regelmäßigen Struktur verstehen. Bei gegebenen n linear unabhängigen Vektoren b1, ..., bn ∈ ℝm ist ein durch diese erzeugtes Gitter L definiert als L ( b 1 , , b n ) = { x i b i | x i Z } ,
    Figure DE102018122278A1_0003
    wobei
    • - b1, ..., bn eine Basis des Gitters ist und
    • - ein Element von ℝm ein Vektor mit m Einträgen von ℝ ist.
  • Im Gitter L (d. h. einem n-dimensionalen Raum) gelten einige Grundprobleme, wie das Finden einer kurzen Basis oder eines kurzen Vektors, als rechnerisch schwierig oder zumindest komplex genug, um sie zur Kryptographie zu verwenden. Üblicherweise lässt sich die Härte, ein gitterbasiertes Kryptosystem aufzubrechen, auf die Härte der Lösung eines solchen Grundproblems reduzieren oder beziehen. Gitterbasierte Kryptographie bzw. ein gitterbasiertes Kryptosystem sind somit ein kryptographisches System, dessen Sicherheit auf der Härte basiert oder mit der Härte bestimmter mathematisch schwieriger Probleme in Gittern in Beziehung steht.
  • Gitter können verwendet werden, um Kryptosysteme aufzubauen. Gitterbasierte Kryptographie ist auch in Bezug auf das benutzerfreundliche Learning-with-Errors(LWE)-Problem und das Ring-LWE(RLWE)-Problem bekannt. In diesem Zusammenhang bezieht sich ein „Problem“ auf ein mathematisches Problem (d. h. das Ermitteln von etwas), das als schwer zu lösen gilt (d. h. es ist kein Polynomialzeitalgorithmus verfügbar), das aber auch die Bildung eines kryptographischen Schemas ermöglicht (z. B. ähnlich einem Faktorisierungsproblem für RSA oder einem diskreten Logarithmus für ECC).
  • Im Allgemeinen muss man zum Lösen eines LWE-Problems einen geheimen Vektor s in q n
    Figure DE102018122278A1_0004
    wiederherstellen, wenn ein gegebener Satz zufälliger linearer Näherungsgleichungen zum geheimen Vektor s gegeben ist. Damit wird der Satz linearer Gleichungen durch ein gewisses Maß an Zufälligkeit verzerrt, was bekannten Algorithmen die Lösung dieses Satzes von Gleichungen erschwert.
  • Die LWE- und RLWE-Probleme ermöglichen somit, Schemata aufzubauen, bei denen die tatsächliche Gitterstruktur für den Entwickler eines Schemas nicht wirklich sichtbar ist. Dabei werden beim Versuch, die LWE- oder RLWE-Probleme zu lösen, Gitteralgorithmen als das Problem verwendet, um den geheimen Vektor oder das Polynom s zu finden. Dies wird auch als das Lösen eines „Gitterproblems“ bezeichnet. Das RLWE-Problem funktioniert über Polynomringe und unterstützt eine Sicherheitsreduktion auf schwere Probleme an Idealgittern, während LWE Reduktionen auf Zufallsgitter ermöglicht. Folglich tragen Idealgitter mehr Struktur, da nicht alle Gitter Idealgitter sind, ermöglichen aber auch die Entwicklung von Schemata, die praktischere Public-Key-, Schlüsseltext- und Signaturlängen verwenden.
  • Bekannte Beispiele für gitterbasierte Kryptographie sind die sogenannten NTRU- und NTRU-Sign-Schemata sowie das sogenannte GGH(Goldreich-Goldwasser-Halevi, siehe z. B. https://en.wikipedia.org/wiki/GGH_encryption_scheme)-Schema. Bei den meisten Schemata ist die Umwandlung von Public-Key-Verschlüsselung zu Schlüsselaustausch trivial. Zudem können bei PKE verschiedene Sicherheitsstufen, wie semantische Sicherheit in Bezug auf Angriffe mit adaptiv gewähltem Klartext (Chosen Plaintext Attacks, CPA) oder semantische Sicherheit in Bezug auf Angriffe mit adaptiv gewähltem Schlüsseltext (Chosen Ciphertext Attacks, CCA) unter Verwendung von Standardumwandlungen erhalten werden.
  • Dies wurde beispielhaft für das NewHope-Schema gezeigt, das auch als eine CPAsichere oder CCA-sichere PKE instanziiert werden kann [NewHopeNist17]. Das NewHope-Simple- und andere Schemata sind eine direkte Anpassung eines Schemas, das als LPR10 bezeichnet wird (siehe [NewHopeSimplePaperEprint16]). Beispiele für gitterbasierte Signaturschemata sind Dilithium, BLISS, GLP12, und qTESLA (siehe z. B. https://csrc.nist.gov/Projects/Post-Quantum-Cryptography/Round-1-Submissions).
  • Technische Herausforderungen in Bezug auf gitterbasierte Kryptographie
  • Bei der Umsetzung von gitterbasierter Kryptographie und gitterbasierten Kryptosystemen auf einem Computer, einer Mikrosteuerung oder einer integrierten Schaltung gibt es zahlreiche technische Herausforderungen, wie etwa:
    • - Erreichen einer verbesserten Leistung durch Ausführen von Schritten eines Kryptosystems unter Verwendung einer speziell optimierten Sequenz von Operationen und durch Verwenden aller Merkmale der verfügbaren Zielhardware (spezielle Register oder Befehle)
    • - Ausführung der Schritte unter Nutzung einer minimalen Menge von flüchtigem oder nicht flüchtigem Speicher
    • - Effizienter und umfassender Schutz vor Implementierungsangriffen ist erforderlich, wenn Kryptosysteme auf einer sicheren Chipkartensteuerung oder in einer ungünstigen Umgebung (z. B. auf einem Hardwaresicherheitsmodul, HSM) ausgeführt werden. Mögliche Angriffe sind Seitenkanalangriffe, bei denen ein Angreifer versucht, an geheime Informationen zu gelangen, indem er ein physikalisches Verhalten einer Vorrichtung, wie etwa den Stromverbrauch, die elektrische Strahlung oder die Temperatur, beobachtet. Ferner sind Fehlerangriffe möglich, bei denen ein Angreifer versucht, Störungen in den Ausführungsfluss oder in Daten einzuspeisen (z. B. mit einem Laser), um an geheime Informationen zu gelangen oder das Verhalten einer Vorrichtung zu beeinflussen.
  • Notation und Abkürzungen
  • Die folgenden Notationen, Abkürzungen und Verweise werden verwendet:
  • q
    ist eine Ganzzahl,
    k
    ist eine Ganzzahl,
    n
    ist eine Ganzzahl,
    mod q
    ist die Modulo-Operation modulo q, definiert über die Ganzzahlen, wo das Ergebnis im Bereich [0,q-1] liegt,
    Z
    sind die Ganzzahlen (Zahlen, die ohne eine Bruchkomponente geschrieben werden); für eine Definition von „Zahl“ sei auf https://en.wikipedia.org/wiki/Number verwiesen; für eine Definition von „Bruchkomponente“ sei auf https://en.wikipedia.org/wiki/Fraction_(mathematics) verwiesen,
    sind die reellen Zahlen (diese Zahlen können eine Bruchkomponente aufweisen),
    Zq
    ist der Ring von Ganzzahlen modulo q, der der Quotientenring Z/ qZ von Äquivalenzklassen von Ganzzahlen modulo q ist,
    X
    ist eine Unbekannte,
    f
    ist ein Polynom maximalen Grades der Ganzzahl n,
    R = Z [X]/(f)
    ist ein Ring von ganzzahligen Polynomen modulo f; die Elemente v ∈ Z[X]/(f) können durch ganzzahlige Polynome eines geringeren Grades als der Ganzzahl n oder alternativ als ein Vektor von Koeffizienten ν ∈ Zn dargestellt sein,
    Rq = Zq [X]/(f)
    ist ein Ring von ganzzahligen Polynomen modulo sowohl des Polynoms f als auch der Ganzzahl q; die Elemente v ∈ Zq[X]/(f) können durch ganzzahlige Polynome eines geringeren Grades als n mit modulo q reduzierten Koeffizienten oder alternativ als ein Koeffizientenvektor v Z q n
    Figure DE102018122278A1_0005
    dargestellt sein,
    v ∈ Rq
    ist ein Polynom (in Fettdruck), das ein Element in Rq, ist,
    v[i]
    ist ein Koeffizient eines Vektors oder Polynoms v ∈ Rq an einer Position i,
    ϑ
    Fehlerverteilung, ←$
    $
    Zufallsstichprobennahme (random sampling) aus einem Satz oder einer Verteilung,
    DZ,σ
    diskrete Gauß-Verteilung über die Ganzzahlen mit Standardabweichung σ,
    ψk
    Binomialverteilung mit ganzzahligem Parameter k,
    U()
    gleichmäßige Verteilung,
    1001b
    eine Zahl in binärer Schreibweise, sodass 1001b = 9,
    U(Rq,k)
    einheitliche Zufallsstichprobennahme (random sampling) eines Polynoms in Rq, wobei alle Koeffizienten einheitlich zufällig in [-k, k] sind,
    FFT
    schnelle Fouriertransformation (Fast Fourier Transform),
    NTT
    zahlentheoretische Transformation (Number Theoretic Transform),
    DPA
    differenzielle Leistungsanalyse (Differential Power Analysis),
    SPA
    einfache Leistungsanalyse (Simple Power Analysis),
    ALU
    arithmetische Logikeinheit (Arithmetic Logic Unit).
  • Der Quotientenring ist eine Konstruktion in der abstrakten Algebra; für nähere Informationen sei beispielsweise auf https://en.wikipedia.org/wiki/Quotient_ring verwiesen.
  • Idealgitter und Polynomarithmetik
  • Aktuell gibt es zwei Richtungen gitterbasierter Kryptographie, d. h. die ideale gitterbasierte Kryptographie und die standardmäßige gitterbasierte Kryptographie. Ein Mittelweg ist eine sogenannte modulare gitterbasierte Kryptographie, die Konzepte der Idealgitter und der Standardgitter vermischt. Hier sei beispielsweise auf [NewHopeNist17] verwiesen.
  • Die grundlegenden Operationen bei der idealen gitterbasierten Kryptographie sind Polynommultiplikationen, -additionen oder -subtraktionen im Quotientenring, R q = Z q [ x ] / ( f ) ,
    Figure DE102018122278A1_0006
    wobei der Modulus q eine Ganzzahl ist und die Dimension (Anzahl an Koeffizienten) eine Ganzzahl n ist. Ein Polynom α ∈ Rq kann als ein Array von Werten dargestellt sein und auf einen einzelnen Wert a[i] kann an einer ganzzahligen Position i zugegriffen werden. Alle Hauptberechnungen in gitterbasierten Kryptosystemschemata können an Arrays von Werten modulo q durchgeführt werden.
  • Für den Quotientenring lassen sich Operationen wie Addition und Multiplikation definieren. Eine Addition c = a + b für a, b, c E Rq kann definiert sein als c = i = 0 n 1 ( a [ i ] + b [ i ] m o d   q ) X i
    Figure DE102018122278A1_0007
    wobei i eine Ganzzahl ist, q eine Ganzzahl ist, a[i] der i-te Koeffizient von a ist, b[i] der i-te Koeffizient von b ist und X die Unbekannte ist. Eine Subtraktion c = a - b funktioniert in gleicher Weise, wobei „+““ durch „-“ ersetzt wird.
  • Das Produkt c = α · b von Polynomen a, b, c E Rq kann ebenfalls berechnet werden. Es ist definiert als eine normale Polynommultiplikation (gelegentlich auch als Schulbuchmultiplikation bezeichnet), gefolgt durch eine Reduktion modulo des Polynoms f und eine Reduktion modulo der Ganzzahl q, d. h. c = ( i = 0 n 1 j = 0 n 1 a [ i ] b [ j ] x i + j m o d   q ) m o d   f .
    Figure DE102018122278A1_0008
  • Die Formel zur Polynommultiplikation lässt sich vereinfachen unter Berücksichtigung der Sonderregel, dass xn ≡ -1, wenn f = xn + 1, wobei ähnliche Polynome in entsprechender Weise verwendet werden können: c = i = 0 n 1 j = 0 n 1 ( 1 ) i + j n a [ i ] b [ j ] x i + j   m o d   n m o d   q
    Figure DE102018122278A1_0009
    wobei i und j Ganzzahlen sind, q eine Ganzzahl ist, a[i] der i-te Koeffizient von a ist, b[j] der j-te Koeffizient von b ist und x die Unbekannte ist.
  • Dünnbesetzte (sparse) Multiplikation
  • Eine gewisse Effizienzsteigerung bei der Polynomarithmetik lässt sich mit Algorithmen erreichen, die bestimmte Eigenschaften von Polynomen nutzen. Beispielsweise kann ein Polynom s ∈ Rq nur einige Koeffizienten aufweisen, die nicht null sind, es kann auch nur aus Koeffizienten bestehen, die entweder eins oder minus eins sind, oder es kann im Allgemeinen Koeffizienten aufweisen, die klein sind. Außerdem kann es eine Kombination dieser Eigenschaften aufweisen.
  • Zahlentheoretische Transformation (Number Theoretic Transform, NTT)
  • Eine Implementierung nach dieser Formel würde n2 modulare Multiplikationen erfordern und wäre somit recht teuer.
  • Ein weiterer Ansatz zur schnellen Polynommultiplikation ist die zahlentheoretische Transformation (Number Theoretic Transform, NTT). Die NTT ist im Wesentlichen eine schnelle Fouriertransformation (Fast Fourier Transformation, FFT), die über ein endliches Feld oder einen Ring definiert ist. Somit werden alle komplexen Einheitswurzeln der FFT gegen ganzzahlige Einheitswurzeln ausgetauscht, und Berechnungen werden im Ring von Ganzzahlen modulo einer Ganzzahl q ausgeführt. Eine Polynommultiplikation für a, b, c E Rq unter Verwendung von NTT lässt sich berechnen als c = a b = N T T 1 ( N T T ( a ) N T T ( b ) )
    Figure DE102018122278A1_0010
    wobei „o“ eine koeffizientenweise Multiplikation bezeichnet, â = NTT(a) die Transformation des Polynoms a ist, b̂ = NTT(b) die Transformation des Polynoms b ist und NTT-1() die inverse Transformation ist. Die koeffizientenweise Multiplikation ĉ = â ◦ b̂ für, â, b̂, ĉ ∈ Zq [x] lässt sich definieren als c ^ = i = 0 n 1 ( a ^ [ i ] b ^ [ i ] m o d   q ) X i .
    Figure DE102018122278A1_0011
  • Der Vorteil der NTT besteht darin, dass eine Polynommultiplikation nur etwa n log2 n modulare Multiplikationen erfordert, wenn ein effizienter Algorithmus verwendet wird, und dass eine Reduktion modulo f = x n + 1
    Figure DE102018122278A1_0012
    (die sogenannte Kreisfaltungseigenschaft) oder eine Reduktion modulo f = x n 1
    Figure DE102018122278A1_0013
    in den NTT-Algorithmus integriert werden können. Somit ist eine n-Punkte-NTT ausreichend, um mit Polynomen mit n-Koeffizienten zu arbeiten.
  • Um die NTT formal einzuführen, kann die Wahl von Parametern eingeschränkt werden; zudem kann Folgendes festgelegt werden, sodass die NTT existiert: f = x n + 1
    Figure DE102018122278A1_0014
    und q 1   m o d   2 n .
    Figure DE102018122278A1_0015
  • Ferner kann ein Polynom wie folgt definiert werden: g = i = 0 n 1 g [ i ] X i R q
    Figure DE102018122278A1_0016
    sodass N T T ( g ) = g ^ = i = 0 n 1 g ^ [ i ] X i
    Figure DE102018122278A1_0017
    mit g ^ [ i ] = j = 0 n 1 γ j g [ i ] ω i j m o d   q ,
    Figure DE102018122278A1_0018
    wobei die Ganzzahl ω eine 2n-te Primitiveinheitswurzel ist und die Ganzzahl γ = ω  mod  q .
    Figure DE102018122278A1_0019
    Somit ist γ eine Quadratwurzel von ω modulo q.
  • Die inverse Transformation funktioniert ähnlich. Für ein Polynom ĝ ∈ Rq lässt sie sich definieren als: N T T 1 ( g ^ ) = g = i = 0 n 1 g [ i ] X i
    Figure DE102018122278A1_0020
    mit g [ i ] = ( n 1 γ 1 j = 0 n 1 g j ω i j ) m o d   q .
    Figure DE102018122278A1_0021
  • Eine direkte Berechnung der NTT mit der vorstehenden Definition weist eine quadratische Komplexität auf und ist nicht effizienter als der Schulbuchansatz. Somit ist zur Realisierung von schneller Polynommultiplikation unter Verwendung des Faltungstheorems ein schneller Algorithmus zur Berechnung der NTT erforderlich. Dies lässt sich durch eine Implementierung der NTT mit O(n log n)-Operationen in Zq erreichen, z. B. durch den Cooley-Tukey-Radix-2-Decimation-in-Time (DIT)-Algorithmus (siehe z. B.
    https://en.wikipedia.org/wiki/Cooley%E2%80%93Tukey_FFT_algorithm) oder durch einen Decimation-in-Frequency (DIF)-Algorithmus. Der DIT-NTT-Algorithmus spaltet die Berechnung rekursiv in ein Unterproblem zu den geraden Eingaben und ein Unterproblem zu den ungeraden Eingaben der NTT auf.
  • Berechnung eines inversen Polynoms
  • Die Berechnung des inversen Polynoms kann in Signaturen erforderlich sein und zur Implementation von Sicherheitsmaßnahmen verwendet werden.
  • Einige der kryptographischen Algorithmen erfordern die Berechnung des Inversen eines Polynoms a-1 für a ∈ Rq, sodass a · a-1 = 1.
  • Es gibt einen als kleiner fermatscher Satz bekannten Ansatz zur Berechnung des multiplikativen Inversen von Ganzzahlen in Zq, der jedoch auch auf Rq angewandt werden kann. Das multiplikative Inverse a-1 eines Polynoms lässt sich berechnen als a-1 = aq-2. Dieser Prozess lässt sich unter Verwendung von NTT und bekannten Exponentiationsverfahren, wie binärer Exponentiation (von rechts nach links oder von links nach rechts) oder einer Additionskette, beschleunigen.
  • Wenn a in die NTT-Domäne übertragen wird, ist eine Multiplikation lediglich eine koeffizientenweise Multiplikation.
  • Als ein Beispiel lässt sich a3 basierend auf a' = NTT(a) folgendermaßen berechnen: a 3 = N T T 1 ( a ' a ' a ' ) ,
    Figure DE102018122278A1_0022
    was üblicherweise schneller ist als das Berechnen von a3 = a*a*a unter Verwendung von Algorithmen wie Schulbuch- oder Karatsuba-Multiplikation.
  • Mit einer Additionskette lässt sich die Anzahl von koeffizientenweisen Multiplikationen in Abhängigkeit von dem Anteil von q weiter reduzieren.
  • Zufälligkeit und Zufallssampling
  • a ←$ S zeigt einen Vorgang des unabhängigen und einheitlichen zufälligen Auswählens der Variable a aus einem Satz S oder einer spezifischen Verteilung S.
  • Es sei darauf hingewiesen, dass „zufällig“ oder „einheitlich“ in diesem Zusammenhang (z. B. zufälliges Auswählen oder ein zufälliger Wert) ein echter Zufalls-, ein Pseudozufalls- oder ein deterministischer Ansatz zum Erhalten eines Wertes sein kann. Somit kann die Eigenschaft dieser „Zufälligkeit“ oder jedes Zufallseffekts gemäß dem hier bereitgestellten Vorschlag darin bestehen, dass ein Angreifer keine Kenntnis des Wertes hat und dass Werte sich für zumindest einen Teil von Operationen unterscheiden. Die Zufälligkeit fügt insbesondere einen bestimmten Grad an Entropie zwischen Werte, die „zufällig“ bestimmt, z. B. erzeugt und/oder ausgewählt, werden, ein.
  • Für einen endlichen Satz S kann eine einheitliche Verteilung auf dem Satz S als U(S) bezeichnet werden. Die Notation a ←$ U(Rq,k) kann ein einheitliches Zufallssampling von a ∈ Rq anzeigen, wobei alle Koeffizienten von a gleich [-k, k] sind.
  • Für eine Wahrscheinlichkeitsverteilung χ auf R wird angenommen, dass eine effiziente Stichprobennahme machbar ist, und die Notation a ←$ χ dient dazu, die Zufallsstichprobennahme von a ∈ R aus der Wahrscheinlichkeitsverteilung χ zu bezeichnen.
  • Die Stichprobennahme von geheimen Rausch- oder Fehlervektoren ist eine Grundaufgabe bei der gitterbasierten Public-Key-Verschlüsselung (Public Key Encryption, PKE), beim Schlüsselaustausch- oder bei Signaturschemata. Ein bestimmtes Merkmal dieser Rausch- oder Fehlervektoren besteht darin, dass sie üblicherweise klein sind (d. h. mit Koeffizienten, die nahe null sind).
  • Eine diskrete Gauß-Verteilung DZ,σ mit einem Mittelwert von 0 und Standardabweichung σ > 0 über die Ganzzahlen ordnet eine Wahrscheinlichkeit ρσ(x)/ρσ(Z) bis x ∈ Z für ρ σ ( x ) = exp ( x 2 2 σ 2 )  und  ρ σ ( Z ) = 1 + i = 1 ρ σ ( i )
    Figure DE102018122278A1_0023
    zu.
  • Somit bezeichnet a ←$ DZ,σ einen Prozess der Zufallsstichprobennahme eines Werts d ∈ Z nach der diskreten Gauß-Verteilung DZ,σ, und a D $ Z , σ n
    Figure DE102018122278A1_0024
    kennzeichnet einen Prozess der Zufallsstichprobennahme eines Polynoms a ∈ Rq der Dimension n, wobei Koeffizienten unabhängig und nach der diskreten Gauß-Verteilung DZ,σ verteilt sind.
  • Ein Stichprobennehmer (sampler), der Werte nach einer diskreten Gauß-Verteilung erzeugt, kann anhand der kumulativen Verteilungsfunktion (Cumulative Distribution Function, CDF) oder einer kumulativen Verteilungstabelle (Cumulative Distribution Table, CDT) oder mit (z. B. hochpräzisen) Berechnungen gebildet werden.
  • Wie Gauß ist Stichprobennahme kostenintensiv. Die Ausführung eines kryptographischen Schemas erfordert üblicherweise 510 bis 4096 Stichproben (samples) aus der Rausch- oder Fehlerverteilung für jede kryptographische Operation.
  • Mathematische Probleme zu Gittern
  • Die Sicherheit von gitterbasierten Kryptosystemen kann auf bestimmten Problemen basieren oder mit diesen in Zusammenhang stehen. Diese spezifischen Probleme sind:
    • - das Learning-with-Errors(LWE)-Problem;
    • - das Ring-Learning-with-Errors(RLWE)-Problem;
    • - das Short-Integer-Solution(SIS)-Problem;
    • - das Ring-Short-Integer-Solution(RSIS)-Problem und
    • - das NTRU-Problem.
  • Für RLWE gilt das Folgende im Ring Rq=Zq[X]/(Xn+1), wobei n eine ganzzahlige Potenz von 2 ist und q eine Ganzzahl ist:
  • Der geheime Vektor s ∈ Rq basiert auf einer Verteilung ϑ1, der Fehlervektor e basiert auf einer Verteilung ϑ2, wobei die Verteilung ϑ1 dieselbe wie die Verteilung ϑ2 sein kann.
  • Der Vektor a ∈ Rq mit einheitlichen Koeffizienten in Zq basiert auf einer einheitlichen Verteilung (wird somit auch als „einheitlicher Vektor“ bezeichnet).
  • Ein Angreifer will den geheimen Vektor s extrahieren, wenn der einheitliche Vektor a sowie das Ergebnis b = α · s + e gegeben sind.
  • Dies ist schwierig, wenn der geheime Vektor s und/oder der Fehlervektor e einem vordefinierten Verteilungsdesign folgen, also wenn die Vektoren s und/oder e in einer effizienten Weise erzeugt werden. Außerdem kann die Erzeugung dieser Vektoren s und/oder e gegen physikalische Angriffe auf einer Chipkarte geschützt werden.
  • Eine Chipkarte (oder Smartkarte) kann eine jegliche physikalische Vorrichtung sein, die dazu ausgelegt ist, eine kryptographische Funktion auszuführen. Die Chipkarte kann somit insbesondere eine Halbleiterschaltung umfassen.
  • Eine Option besteht darin, dass der geheime Vektor s fest ist und einheitliche Vektoren a und Fehlervektoren e nach dem bestimmten Verteilungsdesign erzeugt werden. Weiterhin hat der Angreifer Schwierigkeiten, den festen geheimen Vektor s aus mehreren Stichproben der Vektoren a und b abzuleiten.
  • Das RLWE-Problem übersetzt das LWE-Problem in das Ring-Setting. Die Härte von RLWE basiert auf der Worst-Case-Härte von Kurzvektorproblemen an Idealgittern, die eine Unterklasse von Standardgittern sind. Das RLWE-Problem weist außerdem ein Entscheidungsproblem auf (entscheide, ob eine Stichprobe a, b aus der RLWE-Verteilung oder einheitlich ist), das äquivalent zur Suchversion ist.
  • Somit kann, wenn der Angreifer in der Lage ist festzustellen, dass die Stichprobe b einheitlich oder nach der RLWE-Verteilung erzeugt ist, die Sicherheit des Systems beeinträchtigt werden.
  • Es ist möglich, das geheime s ∈ Rq aus der einheitlichen Verteilung U(Rq) zu sampeln. Allerdings kann die Stichprobennahme vorteilhafterweise auf der Verteilung ϑ basieren.
  • Beispielhafte Lösungen
  • Operationen in standardmäßiger gitterbasierter Kryptographie umfassen Matrix-Matrix-Multiplikationen, Matrix-Vektor-Multiplikationen oder Vektoradditionen und - subtraktionen, wobei Koeffizienten Werte in dem Ring von Ganzzahlen modulo q sind.
  • Hier beschriebene Beispiele schlagen insbesondere die Verwendung von Polynomarithmetik vor, um einen effizienteren Sampler zu verwirklichen, der die in gitterbasierten Kryptosystemen zu verwendende Verteilung ϑ liefert.
  • Es wird insbesondere vorgeschlagen, n Stichproben aus der Verteilung ϑ durch Stichprobennahme von zwei Polynomen und anschließendes Ausführen einer Polynommultiplikation zu erzeugen.
  • Ein Polynom w1 ∈ Rq wird so gesampelt, dass alle Koeffizienten unabhängig sind und
    • - mit einer Wahrscheinlichkeit von 0,5 gleich 0 sind,
    • - mit einer Wahrscheinlichkeit von 0,25 gleich -1 sind und
    • - mit einer Wahrscheinlichkeit von einer Wahrscheinlichkeit von 0,25 gleich 1 sind.
  • Ein weiteres Polynom w2 wird in einer Weise gesampelt, dass Ganzzahl-k-Koeffizienten an zufälligen Positionen festgelegt sind, wobei die jeweiligen Koeffizienten
    • - mit einer Wahrscheinlichkeit von 0,5 gleich 1 sind und
    • - mit einer Wahrscheinlichkeit von 0,5 gleich -1 sind.
  • Anschließend wird eine Polynommultiplikation im Ring Rq = Zq [x]/(xn+1) durchgeführt. Das heißt, dass eine Standard-Polynommultiplikation ausgeführt wird, der eine Reduktion modulo eines Polynoms xn+1 und eine Reduktion modulo einer Ganzzahl q folgt.
  • Somit wird w3 = w1 · w2 für w1, w2, w3 ∈ Rq erhalten, wobei w3 entweder der geheime Vektor s oder der Fehlervektor e sein kann.
  • Aufgrund der Natur der Polynommultiplikation ist jeder Koeffizient von w3 die Summe von k Koeffizienten von w1, die durch die festgelegten k Positionen in w2 ausgewählt wurden. Auf diese Weise wird ein vollständiges Polynom mit Koeffizienten, die der Verteilung ϑ (annähernd oder genau) folgen, mit einer erheblich reduzierten Menge von Zufallszahlen erhalten.
  • Aus Effizienzgründen kann die Polynommultiplikation in effizienter Weise unter Verwendung von Verfahren wie Schulbuchmultiplikation, Karatsuba-Multiplikation oder NTT durchgeführt werden als w 3 = w 1 w 2 = N T T 1 ( N T T ( w 1 ) N T T ( w 2 ) ) .
    Figure DE102018122278A1_0025
  • Darüber hinaus kann ein Algorithmus zur dünnbesetzten (sparse) Polynommultiplikation verwendet werden, um die Eigenschaft zu nutzen, dass w2 nur k festgelegte Positionen aufweist und dass k im Hinblick auf n üblicherweise klein ist.
  • Die hier beschriebene Lösung kann in Kombination mit vorhandenen Lösungen, z. B. Frodo, Kyber oder NewHope (siehe Protokoll 3 [NewHopePaperEprint16]), verwendet werden. Dies gilt insbesondere dort, wo auf Stichproben aus der Verteilung ψk zugegriffen wird.
  • Die Notation w3$ ConvSample(k) zeigt an, dass ein Sampler den hier beschriebenen Ansatz verwendet und ein Polynom w3 ∈ Rq. ausgibt. Das Polynom w3 weist n Koeffizienten auf, die nach der Binomialverteilung ϑ verteilt sind.
  • Außerdem kann die Lösung unterschiedliche Verteilungen und Parameter für w1 und w2. nutzen. Das Polynom w3 = w1 · w2 kann einer Binomialverteilung oder einer jeglichen anderen Art der Verteilung folgen.
  • Beispielsweise kann das Polynom w1 in einer Weise gesampelt werden, dass alle Koeffizienten unabhängig sind und
    • - mit einer Wahrscheinlichkeit von ζ gleich 0 sind,
    • - mit einer Wahrscheinlichkeit von α gleich -1 sind und
    • - mit einer Wahrscheinlichkeit von β gleich 1 sind,
    • - wobei ζ + α + β = 1.
  • Zudem können bestimmte Positionen von w1 oder w2 mit Werten größer 1 festgelegt werden (z. B. können einige Koeffizienten auf -2,2 oder -3,3 gesetzt werden).
  • Es ist außerdem eine Option, einen gewissen Schutz gegen Beobachtungsangriffe (z. B. Seitenkanalangriffe) zu schaffen: Zunächst kann ein einheitliches zufälliges Polynom r ←$ U(Rq) gesampelt werden, bei dem jeder Koeffizient einheitlich zufällig zwischen 0 und q - 1 liegt. Anschließend können die Polynome w1 und w2 wie vorstehend beschrieben gesampelt werden. Um die Berechnung zu randomisieren, kann das zufällige Polynom r zum Polynom w1 addiert werden, sodass w 1 ' = w 1 + r .
    Figure DE102018122278A1_0026
    Anschließend werden die Berechnungen w 3 ' = w 1 ' w 2
    Figure DE102018122278A1_0027
    und w 3 " = r w 2
    Figure DE102018122278A1_0028
    für w 3 ' , w 1 ' , w 2 , w 3 " , r R q
    Figure DE102018122278A1_0029
    durchgeführt.
  • Dann gilt, dass w 3 = w 3 ' w 3 " = ( w 1 + r ) w 2 r w 2 = w 1 w 2 + r w 2 r w 2 = w 1 w 2 .
    Figure DE102018122278A1_0030
  • Da jedoch die beiden Polynome w 3 ' ,
    Figure DE102018122278A1_0031
    , w3" einen geheimen Wert tragen, kann es hilfreich sein, die Verarbeitung an zwei Anteilen fortzusetzen, sodass weitere Berechnungen ebenfalls geschützt sind.
  • 4 zeigt ein beispielhaftes Diagramm, das Schritte veranschaulicht, die durchzuführen sind, um eine kryptographische Gitteroperation effizient durchzuführen. In einem Schritt 401 wird ein erstes Polynom gesampelt, wobei alle Koeffizienten des ersten Polynoms basierend auf einer ersten Verteilung bestimmt werden. In einem Schritt 402 wird ein zweites Polynom gesampelt, wobei eine Auswahl von k Koeffizienten des zweiten Polynoms basierend auf einer zweiten Verteilung bestimmt wird, die dieselbe wie die erste Verteilung sein kann oder sich von dieser unterscheiden kann. Die verbleibenden Koeffizienten des zweiten Polynoms sind entweder 0 oder werden auf 0 gesetzt. In einem Schritt 403 wird das erste Polynom mit dem zweiten Polynom multipliziert. In einem Schritt 404 wird das Multiplikationsergebnis in der kryptographischen Gitteroperation verwendet.
  • Beispielhafte Implementierung
  • Im Folgenden zeigt ein beispielhaftes Codesegment unter Verwendung des frei verfügbaren SAGE-Softwaresystems eine beispielhafte Implementierung:
    • n = 1024
    • q = 7681
    • k = 16
    • R.<x> = PolynomialRing(ZZ)
    • Rq.<x> = PolynomialRing(GF(q))
    • f = x^n + 1
def set-positions(k, val = 1):

 # setpositions ermöglicht, k Positionen mit Wert k# festzulegen
 # Initialisiere mit zero#
 pos = n*[0]
 cnt = k
 while cnt > 0:
    # Wähle eine Position aus
    z = randint(0,n-1)
    # Prüfe, dass diese Position noch nicht besetzt ist
    if pos[z] == 0:
           cnt = cnt -1
           # Sample 1 oder -1
           if randint(0,1) == 0:
                  pos[z] = val
           else:
                  pos[z] = -val
                  return pos
def centred_list(c):

 # Konvertiere Polynom zu Liste und zentriere die Koeffizienten
 c = list(c)
 for i in range(len(c)):
    c[i] = int(c[i])
    if c[i] > int (q/2.0):
           c[i] = c[i] - q
           return c

 def ConvSample (k):
 # Initialisiere mit 0 oder {0,-1}
 a = R([((((-1)**randint(0,1)))*randint(0,1)) for_in range(n)])
 #print „a“, a
 # Initialisiere b mit k festgelegten Positionen
 b = R(setpositions(k))
 #print „b“, b
 # Führe die Polynommultiplikation aus
 c = (a*b) % f
 #print „c“, c
 # Konvertiere zu Liste und zentriere
 return centred_list(c) 




 c =[]
 for i in range(10):
    c.extend(ConvSample(k))
    #print die ersten 100 Werte
    print „Sampled values:“
    print c[0:100]
  • Die auf diesem Codesegment basierenden gesampelten Werte sind folgende:
    • [1, 3, 2, -1, 1, 4, 2, 2, 4, 2, 1, 2, -6, 2, 6, -4, -3, 1, -1, -2, 7, 3, 3, -2, 0, -3, -4, 0, 1, -2, -4, 2, -3, 1, -3, -3, 6, -1, -2, 2, 0, -1, 0, 7, 1, 4, 2, -2, 1, -1, -1, -1, 3, 2, 4, 2, 1, 0, -1, -4, -2, -1, -1, 0, 1, 1, -2, -1, -6, 0, 2, -5, -3, -2, -5, 1, 1, 1, -2, 3, -4, -3, 3, 1, 2, -1, 0, -5, 4, 4, -1, -1, -1, 0, 3, 0, -1, 3, 1, 1]
  • Das folgende hinzugefügte Codesegment
  • print „Standard deviation:“,
     RR(real(sage.stats.basic_stats.std(c)))
     print „Expected standard deviation“, sqrt(k/2.0)
     a,b,_ = pylab.hist(c,normed=True,bins=np.arange(-10,12)))
    führt zur folgenden Ausgabe:
    • Standard deviation: 2.83235152907955
    • Expected standard deviation 2.82842712474619
      • [(-10, 0.00048847205939820239), (-9, 0.00097694411879640478), (-8, 0.0020515826494724504), (-7, 0.0062524423602969914), (-6, 0.01397030089878859), (-5,0.034193044157874171), (-4, 0.052950371238765143), (-3, 0.079425556858147714), (-2, 0.11205549042594763), (-1, 0.13130128956623682), (0, 0.13481828839390386), (1, 0.1319851504493943), (2, 0.11088315748339195), (3, 0.08098866744822196), (4, 0.05490425947635795), (5, 0.027842907385697536), (6, 0.016021883548261038), (7, 0.005568581477139508), (8, 0.0027354435326299334), (9, 0.00029308323563892143), (10, 0.00029308323563892143)]
  • 1 zeigt einen Graph, der die Verteilung darstellt, die durch das vorstehende Codesegment erhalten wird.
  • Anwendung in LPR10
  • Das folgende Codesegment zeigt eine beispielhafte Anwendung in LPR10:
    • n = 512
    • q = 7681
    • k = 8
    • R.<x> = PolynomialRing(ZZ)
    • Rq.<x> = PolynomialRing(GF(q))
    • f = x^n + 1
    • def key_gen():
      • a = R([(randint(0,q-1)) for _ in range(n)])
      • r1 = R(ConvSample(k))
      • r2 = R(ConvSample(k))
      • p = r1-a*r2
      • sk = r2
      • return r2,a,p
    • def enc (a,p,m):
      • e0 = R(ConvSample(k))
      • e1 = R(ConvSample(k))
      • e2 = R(ConvSample(k))
      • c1 = (a*e0+e1) % f
      • c2 = (p*e0+e2+q//2*R(m)) % f
      • return c1,c2
    def dec(r2,c1,c2,m_len):
    
     x = (c1*r2+c2) %f
     print centred_list(x)
     m = []
     for i in range(m_len):
        if ((int(x[i])>=q/4.0) and (int(x[i])<=(3/4.0)*q)):
               m.append(1)
        else:
               m.append(0)
               return m
    • r2, a, p = key_gen()
    • m = [1, 0, 1, 0, 1, 1, 1, 1, 1, 0]
    • print „encrypted message“, m
    • c1, c2 = enc(a,p,m)
    • x = dec(r2,c1,c2,len(m))
    • print „decrypted message“, x
  • Die Ausgabe ist folgende:
    • encrypted message [1, 0, 1, 0, 1, 1, 1, 1, 1, 0]
      • [3704, -310, -3730, 64, 3718, 3697, 3694, -3691, -3825, 172, - 57, 58, 137, -46, 37, -201, 77, 183, 143, -138, 134, 13, -7, - 133, 164, -210, -58, -214, 11, 10, 307, -50, -33, 81, 102, -128, 54, -7, 96, 105, -51, -107, -228, 204, 102, 24, -36, 182, 183, - 103, 90, -109, 111, -324, -24, 168, 14, 36, -54, 12, 49, 55, 43, -37, -73, 34, 29, 122, 53, 192, -60, 109, -110, 35, -34, 240, - 152, 23, 32, -86, 29, 18, -166, -124, -28, 27, 73, 33, -242, - 101, 167, -45, 188, -104, -121, -6, 55, 95, -17, 89, -52, 166, - 7, 29, 33, 57, -74, -1, -39, -181, 191, 104, -10, 172, -119, - 231, 61, -86, 82, -140, 76, 31, 173, -41, -251, 54, 92, 34, 113, -54, 64, 54, -127, 218, 96, -23, 49, 201, 58, -42, -33, -93, 1, -196, -34, -156, 18, 0, -112, 10, -39, 83, 37, -11, -69, -141, 141, 181, 281, -63, 38, -243, -147, 253, -8, 63, -77, 80, 22, 80, 16, 51, -163, -24, 53, 25, -194, 106, -21, 82, 31, 160, 22, -97, -138, 36, 74, -50, -42, 19, -212, 89, 168, 78, 45, -19, - 65, 65, -64, 23, -128, 144, -32, -93, 44, 27, 194, -51, 0, -165, 176, 119, 147, -248, -29, 22, 169, 159, 142, 147, -4, -24, 3, 134, 66, -154, 265, -64, 81, -209, 202, -170, 4, -14, -214, - 115, 1, -10, 179, -144, -14, 64, 1, 179, -49, 62, -84, 181, -49, -86, -172, -162, -27, 103, -213, -69, -91, 121, -29, 242, -33, - 132, 22, 0, 30, 195, -71, 210, 56, 152, -197, 64, -91, -19, 17, -104, -2, -42, 65, -49, -124, -159, 79, -37, -132, -64, -108, - 140, -57, 183, -99, 29, -46, -29, 164, -10, 112, -130, 71, 44, 40, -120, -9, 53, 115, -3, 169, -77, 33, -37, 98, 313, 83, -141, -93, 83, 149, -6, 6, -140, 249, -31, -157, -37, -103, 30, 58, 109, -9, -128, 191, -162, 105, 52, 48, 26, 84, 248, -205, 55, 14, 115, -167, -214, -370, 10, 96, -56, -126, -60, -134, 63, - 37, 33, 139, 24, 147, 208, 12, -127, -179, 9, -130, -15, 124, 4, 120, 99, -3, -15, -137, -78, 103, -33, -337, -19, -101, 143, - 223, 159, -385, -63, 86, -96, 229, 37, -45, 72, 92, -168, -23, - 230, -177, 7, -37, -27, -19, -154, 86, 109, -64, -33, -80, -130, 163, 250, 12, 19, 279, 85, 17, 4, -3, 61, 106, -114, 61, -144, 136, 169, 67, -288, 6, -4, 244, 3, 9, -194, 226, 303, 8, -44, - 217, -147, -39, -3, -71, -139, -139, 119, -182, -142, -155, 9, - 84, 304, 62, 146, -178, 57, -40, -217, 102, 98, 89, 168, -91, 149, 32, -18, 201, -35, -144, -78, -250, 256, 87, 91, -368, 1, - 271, -80, -30, 145, -26, 79, 37, -28, 64, 23, -180, -114, -190, -71, -78, -250, 105, -142, 103, -189, 7, -55, 156, -71, -47, -5, 244, 198, 230, -180, -149, 85, 309, 11, 9, -71, 151, -188, 59, - 152, 57, -120]
    • decrypted message [1, 0, 1, 0, 1, 1, 1, 1, 1, 0]
  • Der folgende Codeauszug bezieht sich auf eine randomisierte Stichprobennahme. Randomisierte Berechnungen werden an zwei Anteilen durchgeführt, d. h. es werden Berechnungen c^'=a'·b und c^"=r·b für c^', a^', b, c^", r ∈ R_q durchgeführt. Das Endergebnis wird durch Kompilieren der beiden Anteile erhalten; es gilt: c = c^' - c^" = (a+r)b - r·b = ab + rb - rb = ab. Da jedoch die beiden Polynome c^', c" einen geheimen Wert tragen, ist es sinnvoll, die Verarbeitung an zwei Anteilen fortzusetzen, sodass weitere Berechnungen ebenfalls in einer geschützten Weise verarbeitet werden.
  • 
     n=16
     def get_shared binomial_poly(k):
     # Sample Zufallswert
     r = R([(randint(0,q-1)) for_in range(n)])
     # Speichere a in Anteilen
     a_x = r + R([((-1*randint(0,1))*randint(0,1)) for - in
     range(n)])
     a_xx =r 
    
    
    
    
     # Initialisiere b mit k festgelegten Positionen
     b = R(set_positions(k))
     # Führe die Polynommultiplikation aus
     c_x = a_x*b % f
     c_xx = a_xx*b % f
     # Konvertiere zu Liste und zentriere
     return centred_list(c_x),centred_list(c_xx)
     c_x,c_xx = get_shared_binomial_poly(k)
     print c_x
     print c_xx
  • Die Ausgabe ist folgende:
    • [-1018, 1062, -3445, -1587, 3545, 3793, -811, 863, 1339, 3045, - 3514, -3395, 3542, -2607, 621, -210, 215, -1637, -1820, 846, 227, -3235, 415, 606, -1902, 3212, 2328, 179, -904, 1697] [-1018, 1062, -3445, -1586, 3545, 3794, -810, 863, 1340, 3044, - 3512, -3396, 3544, -2608, 624, -211, 217, -1639, -1819, 845, 227, -3236, 415, 606, -1902, 3212, 2328, 179, -904, 1697]
    • x^21 + x^19 - x^18 + 2*x^17 - 2*x^16 + x^15 - 3*x^14 + x^13 - 2*x^12 + x^11 - 2*x^10 + x^9 - x^8 - x^6 - x^5 - x^3
  • Seitenkanalschutz von LPR10-Schlüsselerzeugung
  • Das folgende Codesegment bezieht sich auf Seitenkanalschutz einer LPR10-Schlüsselerzeugung unter Verwendung des hier beschriebenen Ansatzes:
    • n = 512
    • q = 7681
    • k = 8
    • R.<x> = PolynomialRing(ZZ)
    • Rq.<x> = PolynomialRing(GF(q))
    • f = x^n + 1
    • def key_gen():
      • a = R([(randint(0,q-1)) for in range(n)])
      • # Erhalte r1 in zwei Anteilen
      • r1_p,r1_pp = get_shared_binomial_poly(k)
      • # Erhalte r2 in zwei Anteilen
      • r2_p,r2_pp = get_shared_binomial_poly(k)
      • # Ändere Vorzeichen, sodass r1 = r1_p + r1_pp
      • r1_p = R(r1_p)
      • r1_pp = -R(r1_pp)
      • # Ändere Vorzeichen, sodass r2 = r2_p + r2_pp
      • r2_pp = R(r2 p)
      • r2_p = -R(r2 pp)
      • # Initialisiere p_p und p_pp mit Zufallsdaten
      • p_p = R([(randint(0,q-1)) for _in range(n)])
      • p_p = R([(randint(0,q-1)) for _in range(n)])
      • # Berechne in zwei Anteilen und speichere in p_p und p_pp
      • p_p = (r1_p - a*r2_p) % f
      • p_pp = (r1_pp - a*r2_pp) % f
      • # Addiere beide Anteile miteinander, um öffentlichen Schlüssel zu erhalten
      • p = p_p + p_pp
      • # Gib geheimen Schlüssel in zwei Anteilen aus
      • sk = (r2_p, r2_pp)
      • return sk,a,p
    • def enc (a, p, m) :
      • e0 = R(ConvSample(k))
      • e1 = R(ConvSample(k))
      • e2 = R(ConvSample(k))
      • c1 = (a*e0+e1) % f
      • c2 = (p*e0+e2+q//2*R(m)) % f
      • return c1,c2
    • def dec(r2,c1,c2,m_len):
    
     # Führe Anteile zusammen
     x = (c1*(r2[0]+r2[1]) + c2) %f
     print centred_list(x)
     m = []
     for i in range(m len):
        if ((int(x[i])>=q/4.0) and (int(x[i])<=(3/4.0)*q)):
               m.append(1)
        else:
               m.append(0)
               return m
    • r2, a, p = key_gen()
    • m = [1, 0, 1, 0, 1, 1, 1, 1, 1, 0]
    • print „encrypted message“, m
    • c1, c2 = enc(a,p,m)
    • x = dec(r2,c1,c2,len(m))
    • print „decrypted message“, x
  • Die Ausgabe ist folgende:
    • encrypted message [1, 0, 1, 0, 1, 1, 1, 1, 1, 0]
      • [3817, 40, 3682, -54, -3840, 3778, 3789, -3822, -3779, -9, 1, 64, -81, -10, -4, -42, -70, 33, -6, -8, -44, 25, 19, -24, 96, 10, -11, -17, 93, -125, -1, -30, 52, -7, 7, 63, -3, 54, 72, -38, 55, -31, 25, -110, 90, -43, 71, -54, -2, -1, 50, 55, 55, -37, 44, 41, -46, -45, 55, 64, 26, 28, -21, -5, 54, -11, -18, 69, - 11, 68, -65, 13, 30, 40, 21, 107, 44, -44, -19, 55, 26, 59, 22, -47, -1, 2, -13, -40, -54, 49, 47, 2, -2, 52, 15, 48, -16, 34, 9, -16, 85, -60, -4, 46, -56, 107, 56, -7, -61, 43, 4, -60, 97, 77, 56, 5, 38, -78, 101, 49, 130, -10, 54, -29, -37, -10, 36, 15, 7, 46, 72, -37, 22, -55, 69, -62, 150, -21, -9, 11, 16, -12, 93, 80, -20, -74, 34, 8, -17, -22, 58, 5, 18, 38, 19, -1, 3, 2, 46, -23, 43, 61, -12, 53, -7, 88, 22, 25, -1, -17, -26, -31, -9, -17, -8, 94, -63, 91, -13, 27, -7, 112, -33, 29, 24, 22, -20, 67, 50, -45, -35, 23, 45, 3, -24, 19, -51, -20, 5, 21, -83, 90, 101, -53, 61, -37, 16, -43, 90, -69, 34, 69, -75, -89, -37, 43, -34, -56, -10, -19, -13, 39, 28, 89, 11, -17, 42, -98, 4, -56, 6, -3, 20, -36, 59, -31, 41, -38, 20, 90, -44, -3, -39, -5, 49, -41, 49, 50, 76, 41, -15, -76, 50, 5, 21, -8, 20, 8, -165, 20, - 32, 99, 63, 57, 24, 1, -37, -66, -55, 91, -16, -17, -70, -38, - 62, -16, -32, 29, 68, 67, -78, -66, -66, 70, -25, 0, 5, -39, - 68, 137, -9, 39, 23, 29, -39, -74, -14, -78, -34, 28, 42, 13, 52, 20, 74, -11, -20, 87, 18, -1, -1, -90, 74, -28, 45, -67, 115, 32, -14, -29, 49, -130, 32, -43, 79, 0, 6, 36, 6, 67, 50, 38, 24, -57, 45, 2, -28, 56, -45, -9, -16, 79, -47, 49, -5, 38, 7, 20, 9, 3, 68, 45, -15, 46, -3, 79, -107, 47, 72, 59, -46, 83, 16, -11, 13, 66, 38, 19, -20, -26, 18, 76, 62, 0, 21, 150, -104, 57, -9, 33, 36, 0, 118, -27, 48, 29, 58, 7, 48, 81, 36, 16, 35, -15, -9, 93, 65, 50, 78, -43, 98, 22, -7, 12, 71, 35, 12, -70, 22, 1, 55, 46, 64, 44, 8, 10, 40, -44, 142, -3, 46, 21, -49, - 14, 5, 64, 75, 30, 31, 19, 23, 81, 55, 96, 70, 23, 81, 3, 25, 37, 80, 20, 20, 49, -15, 34, 39, 75, -36, 126, -4, 47, 45, 27, - 25, 68, -10, 34, 19, 6, 95, -91, 4, 67, -1, -80, 52, 22, -51, 13, -16, 21, 92, 149, 16, 3, 129, -38, 76, 22, 13, -50, -72, 22, -38, -16, 147, 23, 54, 10, -1, 55, -2, 7, 52, -77, 12, -9, 32, - 86, 113, 36, 50, -6, 15, -56, 6, -40, 13, -10, -13, -46]
    • decrypted message [1, 0, 1, 0, 1, 1, 1, 1, 1, 0]
  • Vorteile und weitere Ausführungsformen
  • Eine Option besteht darin, mehr Werte als gefordert zu generieren und nach dem Zufallsprinzip einige auszuwählen und andere zu verwerfen.
  • Beispielsweise können Werte, die durch c' ←$ ConvSample(k) erhalten wurden, umgeordnet werden. Der Fisher-Yates Algorithmus kann verwendet werden, um Koeffizienten in c' nach dem Zufallsprinzip zu mischen und eine Ausgabe c = Fisher-Yates(c') zu erhalten.
  • Wenn mehr als Polynom gefordert ist, wie in Protokoll 3 [NewHopePaperEprint16]: s', e', e" ←$ ψk. könnte ein Sicherheitsgewinn darin bestehen, Werte von unterschiedlichen Polynomen zu erhalten. Somit könnten drei Polynome gesampelt werden: c ' C $ onvSample ( k ) ,
    Figure DE102018122278A1_0032
    c " C $ onvSample ( k ) ,
    Figure DE102018122278A1_0033
    c " ' $ ConvSample ( k ) .
    Figure DE102018122278A1_0034
  • Dann wird das nächste Polynom s' generiert, indem die Koeffizienten von s' aus einem jeglichen der Polynome c', c", c'" ausgewählt werden. Die Koeffizienten, die bereits verwendet wurden, können markiert werden, um nicht erneut verwendet zu werden. Dasselbe kann angewandt werden, um die Polynome e' und e" erhalten.
  • Eine weitere Option besteht darin, eine Stichprobennahme unter Verwendung eines Parameters k', der kleiner als gefordert ist, durchzuführen und anschließend die Ausgabe zu kombinieren. Beispielsweise wird die Stichprobennahme zweimal mit k/2 durchgeführt, um die Polynome c' und c" zu erhalten. Dann werden die beiden gesampelten Polynome als c = c' + c" kombiniert. Ferner können die Koeffizienten von c', c" nach dem Zufallsprinzip zu c kombiniert werden.
  • Außerdem kann die Struktur innerhalb des Samplers durch Erhalten
    von c' ←$ ConvSample(k - 1) aufgebrochen werden. Dann kann ein Polynom e' ←$ U(Rq,1) hinzugefügt werden, wobei Koeffizienten entweder -1 (Wahrscheinlichkeit 0,5) oder 1 (Wahrscheinlichkeit 0,5) sind. Eine Ausgabe kann dann wie folgt bereitgestellt werden: c = c' + e'.
  • 2 zeigt eine Verarbeitungsvorrichtung 200, die eine CPU 201, einen RAM 202, einen nichtflüchtigen Speicher (Non-Volatile Memory, NVM) 203, ein Kryptomodul 204, ein analoges Modul 206, eine Eingangs-/Ausgangsschnittstelle 207 und einen Hardware-Zufallszahlengenerator 212 umfasst.
  • In diesem Beispiel hat die CPU 201 über einen gemeinsam genutzten Bus 205, mit dem jedes Kryptomodul 204 gekoppelt ist, Zugriff auf zumindest ein Kryptomodul 204. Jedes Kryptomodul 204 kann insbesondere einen oder mehrere Kryptokerne umfassen, um bestimmte kryptographische Operationen auszuführen. Beispielhafte Kryptokerne sind:
    • - ein AES-Kern 209,
    • - ein SHA-Kern 210,
    • - ein ECC-Kern 211 und
    • - ein gitterbasierter Krypto(Lattice Based Crypto, LBC)-Kern 208.
  • Der gitterbasierte Kryptokern 208 kann zur Beschleunigung von gitterbasierter Kryptographie bereitgestellt sein.
  • Die CPU 201, der Hardware-Zufallszahlgenerator 212, der NVM 203, das Kryptomodul 204, der RAM 202 und die Eingangs-/Ausgangsschnittstelle 207 sind mit dem Bus 205 verbunden. Die Eingangs-/Ausgangsschnittstelle 207 kann eine Verbindung 214 mit anderen Vorrichtungen aufweisen, die ähnlich der Verarbeitungsvorrichtung 200 sein können.
  • Das Kryptomodul 204 kann mit hardwarebasierten Sicherheitsmerkmalen ausgestattet sein oder nicht.
  • Das analoge Modul 206 wird über einen elektrischen Kontakt und/oder über ein elektromagnetisches Feld mit elektrischer Leistung 213 versorgt. Diese Leistung wird bereitgestellt, um die Schaltungsanordnung der Verarbeitungsvorrichtung 200 zu betreiben und kann insbesondere ermöglichen, dass die Eingangs-/Ausgangsschnittstelle Verbindungen zu anderen Vorrichtungen über die Verbindung 214 herstellt und/oder hält.
  • Der Bus 205 seinerseits kann maskiert oder einfach sein. Befehle zum Verarbeiten der hier beschriebenen Schritte können insbesondere im NVM 203 gespeichert und durch die CPU 205 verarbeitet werden. Die verarbeiteten Daten können im NVM 203 oder im RAM 202 gespeichert werden. Durch die Kryptomodule 204 können unterstützende Funktionen (z. B. Expansion von Pseudozufallsdaten) bereitgestellt werden. Zufallszahlen werden durch den Hardware-Zufallszahlengenerator 212 bereitgestellt.
  • Schritte des hier beschriebenen Verfahrens können ausschließlich oder zumindest teilweise am Kryptomodul 204, z. B. am gitterbasierten Kryptokern 208, ausgeführt werden. Beispielsweise können Befehle im gitterbasierten Kryptokern 208 gespeichert oder durch die CPU 201 über den Bus 205 oder bereitgestellt werden. Daten können beim gitterbasierten Kryptokern 208 lokal gespeichert werden. Es ist außerdem eine Option, dass die Daten temporär im RAM 202 oder im NVM 203 gespeichert werden. Der gitterbasierte Kryptokern 208 kann außerdem andere Kryptomodule nutzen, um unterstützende Funktionen (z. B. Expansion von Pseudozufallsdaten) bereitzustellen.
  • Der gitterbasierte Kryptokern 208 kann außerdem einen Hardware-Zufallszahlengenerator 212 oder ein Mittel zum Generieren von physikalischen und/oder Softwarezufallszahlen umfassen.
  • Die Verarbeitungsvorrichtung 200 kann eine Chipkarte sein, die durch direkten elektrischen Kontakt oder durch ein elektromagnetisches Feld versorgt wird. Die Verarbeitungsvorrichtung 200 kann eine feste Schaltung sein oder auf rekonfigurierbarer Hardware (z. B. einem feldprogrammierbaren Gatearray (Field Programmable Gate Array, FPGA)) basieren. Die Verarbeitungsvorrichtung 200 kann mit einem Personalcomputer, einer Mikrosteuerung, einem FPGA oder einem Smartphone gekoppelt sein.
  • 3 zeigt ein weiteres Beispiel einer Verarbeitungsvorrichtung 300. Die Verarbeitungsvorrichtung 300 umfasst ein Hardwaresicherheitsmodul 301, einen nichtflüchtigen Speicher (Non-Volatile Memory, NVM) 308, einen Anwendungsprozessor 307, einen Direktzugriffsspeicher (Random Access Memory, RAM) 309, eine Schnittstelle 310 zur Kommunikation mit anderen Vorrichtungen und einen Anwendungsprozessor 307, der mit dem Hardwaresicherheitsmodul (Hardware Security Module, HSM) 301, dem RAM 309 und der Schnittstelle 310 gekoppelt ist.
  • Das HSM 301 umfasst eine Steuerung 302, einen Hardware-Zufallszahlengenerator (Hardware-Random Number Generator, HRNG) 306 und zumindest ein Kryptomodul 303. Das Kryptomodul 303 umfasst beispielsweise einen AES-Kern 304 und einen gitterbasierten Krypto(Lattice Based Crypto, LBC)-Kern 305.
  • Nach einer Ausführungsform können das Hardwaresicherheitsmodul (Hardware Security Module, HSM) 301 und der Anwendungsprozessor 307 auf demselben physikalischen Chip mit einer engen Kopplung gefertigt sein. Das HSM 301 liefert kryptographische Dienste und gesicherte Schlüsselspeicherung, während der Anwendungsprozessor rechenintensive Aufgaben (z. B. Bilderkennung, Kommunikation, Motorsteuerung) ausführen kann. Das HSM 301 kann nur durch eine definierte Schnittstelle zugänglich sein und als vom Rest des Systems unabhängig betrachtet werden, sodass eine Sicherheitsbedrohung des Anwendungsprozessors 307 nur begrenzte Auswirkungen auf die Sicherheit des HSM 301 hat. Das HSM 301 kann alle Aufgaben oder eine Teilmenge von Aufgaben, die in Bezug auf die Verarbeitungsvorrichtung 300 beschrieben wurden, unter Verwendung der Steuerung 302, des LBC 305, unterstützt durch beispielsweise einen AES 304 und den HRNG 306, ausführen. Es kann die hier beschriebenen Vorgänge (zumindest teilweise) entweder gesteuert durch eine interne Steuerung oder als CMOS-Schaltung ausführen. Zudem kann auch der Anwendungsprozessor 307 die hier beschriebenen Vorgänge (zumindest teilweise, z. B. in Zusammenarbeit mit dem HSM 301) ausführen.
  • Die Verarbeitungsvorrichtung 300 mit dem Anwendungsprozessor und dem HSM 301 kann als ein zentraler Kommunikationsgateway oder eine (Elektro-) Motorsteuerungseinheit in Autos oder anderen Fahrzeugen verwendet werden.
  • In einem oder mehreren Beispielen können die hier beschriebenen Funktionen zumindest teilweise in Hardware, etwa in spezifischen Hardwarekomponenten oder einem Prozessor, implementiert sein. Allgemeiner können die Techniken in Hardware, Prozessoren, Software, Firmware oder einer beliebigen Kombination derselben implementiert sein. Wenn die Funktionen in Software implementiert sind, können sie auf einem computerlesbaren Medium gespeichert oder als ein oder mehrere Befehle oder Code übertragen und durch eine hardwarebasierte Verarbeitungseinheit ausgeführt werden. Computerlesbare Medien können computerlesbare Speichermedien beinhalten, die einem greifbaren Medium, wie etwa einem Datenspeichermedium, entsprechen, oder Kommunikationsmedien, die jegliches Medium einschließen, das die Übertragung eines Computerprogramms von einem Ort zu einem anderen, z. B. nach einem Kommunikationsprotokoll, ermöglicht. Auf diese Weise können computerlesbare Medien im Allgemeinen (1) greifbaren computerlesbaren Speichermedien, die nicht transitorisch sind, oder (2) einem Kommunikationsmedium, wie etwa einem Signal oder einer Trägerwelle, entsprechen. Datenspeichermedien können ein jegliches verfügbares Medium sein, auf das ein oder mehrere Computer oder ein oder mehrere Prozessoren zugreifen können, um Befehle, Code und/oder Datenstrukturen zur Implementierung der in dieser Offenbarung beschriebenen Techniken abzurufen. Ein Computerprogrammprodukt kann ein computerlesbares Medium beinhalten.
  • Beispielsweise können diese computerlesbaren Medien unter anderem RAM, ROM, EEPROM, CD-ROM oder anderen optischen Plattenspeicher, Magnetplattenspeicher oder andere Magnetspeichervorrichtungen, Flashspeicher oder ein jegliches anderes Medium, das dazu verwendbar ist, gewünschten Programmcode in Form von Befehlen oder Datenstrukturen zu speichern und auf das von einem Computer zugegriffen werden kann, umfassen. Außerdem wird jede Verbindung korrekterweise als ein computerlesbares Medium, d. h. ein computerlesbares Übertragungsmedium, bezeichnet. Wenn beispielsweise Befehle von einer Webseite, einem Server oder einer anderen entfernten Quelle unter Verwendung eines Koaxialkabels, eines faseroptischen Kabels, eines verdrillten Leitungspaars, einer digitalen Teilnehmerleitung (Digital Subscriber Line, DSL) oder drahtloser Technologien, wie etwa Infrarot, Funk und Mikrowellen, übertragen werden, so sind das Koaxialkabel, das faseroptische Kabel, das verdrillte Leitungspaar, die DSL bzw. die drahtlosen Technologien, wie etwa Infrarot, Funk und Mikrowellen, in die Definition von Medium eingeschlossen. Es sollte sich jedoch verstehen, dass computerlesbare Speichermedien und Datenspeichermedien keine Verbindungen, Trägerwellen, Signale oder andere transitorische Medien einschließen, sondern vielmehr auf nicht transitorische, greifbare Speichermedien gerichtet sind. Disks und Discs, wie hier verwendet, beinhalten Compact Discs (CD), Laserdiscs, optische Discs, Digital Versatile Discs (DVD), Disketten und Blu-ray-Discs, wobei Disks Daten üblicherweise in magnetischer Weise wiedergeben, während Discs Daten in optischer Weise mit Lasern wiedergeben. Kombinationen des Vorstehenden sollen ebenfalls in den Umfang von computerlesbaren Medien eingeschlossen sein.
  • Befehle können durch einen oder mehrere Prozessoren, wie etwa eine oder mehrere zentrale Verarbeitungseinheiten (Central Processing Unit, CPU), digitale Signalprozessoren (Digital Signal Processors, DSPs), Mehrzweck-Mikroprozessoren, anwendungsspezifische integrierte Schaltungen (Application Specific Integrated Circuits, ASICs), feldprogrammierbare Logikarrays (Field Programmable Logic Arrays, FPGAs) oder andere äquivalente integrierte oder diskrete logische Schaltanordnungen ausgeführt werden. Dementsprechend kann sich der Ausdruck „Prozessor“, wie er hier verwendet wird, auf jede der vorstehenden Strukturen oder eine jegliche andere Struktur, die zur Implementierung der hier beschriebenen Techniken geeignet ist, beziehen. Zusätzlich kann die hier beschriebene Funktionalität in einigen Aspekten innerhalb dedizierter Hardware- und/oder Softwaremodule bereitgestellt sein, die zum Codieren und Decodieren gestaltet sind, oder in einem kombinierten Codec integriert sein. Außerdem können die Techniken vollständig in einer oder mehreren Schaltungsanordnungen oder Logikelementen implementiert sein.
  • Die Techniken dieser Offenbarung können in einem breiten Spektrum von Vorrichtungen oder Geräten implementiert sein, unter anderem in einem drahtlosen Handgerät, einer integrierten Schaltung (Integrated Circuit, IC) oder einer Reihe von ICs (z. B. einem Chipsatz). Verschiedene Komponenten, Module oder Einheiten sind in dieser Offenbarung beschrieben, um funktionale Aspekte von Vorrichtungen hervorzuheben, die dazu gestaltet sind, die offenbarten Techniken auszuführen, erfordern jedoch nicht notwendigerweise die Realisierung durch verschiedene Hardwareeinheiten. Vielmehr können, wie vorstehend beschrieben, verschiedene Einheiten in einer einzigen Hardwareeinheit zusammengefasst sein oder durch eine Sammlung interoperativer Hardwareeinheiten, die einen oder mehrere Prozessoren beinhalten, wie vorstehend beschrieben, in Verbindung mit geeigneter Software und/oder Firmware bereitgestellt sein.
  • Wenngleich verschiedene beispielhafte Ausführungsformen der Erfindung offenbart wurden, wird der Fachmann erkennen, dass zahlreiche Änderungen und Modifikationen, die einige der Vorteile der Erfindung verwirklichen, vorgenommen werden können, ohne vom Geist und Umfang der Erfindung abzuweichen. Der einschlägige Fachmann wird erkennen, dass andere Komponenten, welche dieselben Funktionen ausführen, in geeigneter Weise austauschbar sind. Es sei darauf hingewiesen, dass Merkmale, die unter Bezugnahme auf eine bestimmte Figur erläutert wurden, mit Merkmalen anderer Figuren kombiniert werden können, selbst in den Fällen, in denen dies nicht ausdrücklich erwähnt wurde. Ferner lassen sich die erfindungsgemäßen Verfahren entweder in reinen Softwareimplementierungen, welche die geeigneten Prozessorbefehle verwenden, oder in hybriden Implementationen, die eine Kombination von Hardwarelogik und Softwarelogik nutzen, um dieselben Ergebnisse zu erzielen, realisieren. Diese Modifikationen des erfinderischen Konzepts sollen durch die beigefügten Ansprüche geschützt sein.
  • Literatur:
    • [NewHopeNist17] NewHope - Submission to the NIST post-quantum project. Erdem Alkim, Roberto Avanzi, Joppe Bos, Leo Ducas, Antonio de la Piedra, Thomas Pöppelmann, Peter Schwabe, Douglas Stebila. siehe: https://csrc.nist.gov/Proj ects/Post-Quantum-Cryptography/Round-1 - Submissions
    • [NewHopeSimplePaperEprint16] Erdem Alkim, Leo Ducas, Thomas Pöppelmann, Peter Schwabe: NewHope without reconciliation. IACR Cryptology ePrint Archive 2016: 1157 (2016).
    • [NewHopePaperEprint16] Erdem Alkim, Leo Ducas, Thomas Pöppelmann, Peter Schwabe: Post-quantum key exchange - a new hope. IACR Cryptology ePrint Archive 2015: 1092 (2015)
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • NewHope - Submission to the NIST post-quantum project. Erdem Alkim, Roberto Avanzi, Joppe Bos, Leo Ducas, Antonio de la Piedra, Thomas Pöppelmann, Peter Schwabe, Douglas Stebila. siehe: https://csrc.nist.gov/Proj ects/Post-Quantum-Cryptography/Round-1 - Submissions [0145]
    • Erdem Alkim, Leo Ducas, Thomas Pöppelmann, Peter Schwabe: NewHope without reconciliation. IACR Cryptology ePrint Archive 2016: 1157 (2016) [0145]
    • Erdem Alkim, Leo Ducas, Thomas Pöppelmann, Peter Schwabe: Post-quantum key exchange - a new hope. IACR Cryptology ePrint Archive 2015: 1092 (2015) [0145]

    Claims (16)

    1. Verfahren zum Ausführen einer kryptographischen Gitteroperation, umfassend: - Stichprobennahme eines ersten Polynoms, wobei alle Koeffizienten des ersten Polynoms bestimmt werden; - Stichprobennahme eines zweiten Polynoms, wobei eine Auswahl von k Koeffizienten des zweiten Polynoms bestimmt wird; - Multiplizieren des ersten Polynoms mit dem zweiten Polynom; - Verwenden des Multiplikationsergebnisses in der kryptographischen Operation.
    2. Verfahren nach Anspruch 1, bei dem die kryptographische Operation eine Operation ist, die ein Geheimnis und/oder einen Fehler verwendet, wobei das Ergebnis der Multiplikation entweder das Geheimnis oder der Fehler in der kryptographischen Operation ist.
    3. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die kryptographische Operation eine Operation ist, die verwendet wird bei: - einer Erzeugung eines öffentlichen Schlüssels, - einer Erzeugung einer Signatur, - einer Erzeugung eines privaten Schlüssels und/oder - einer Verschlüsselung von Daten.
    4. Verfahren nach einem der vorhergehenden Ansprüche, - bei dem die Koeffizienten des ersten Polynoms gemäß einer ersten Verteilung bestimmt werden und - bei dem die k Koeffizienten des zweiten Polynoms gemäß einer zweiten Verteilung bestimmt werden.
    5. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Koeffizienten des ersten Polynoms und die Koeffizienten des zweiten Polynoms basierend auf Zufallszahlen bestimmt werden.
    6. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Koeffizienten des ersten Polynoms so bestimmt werden, dass - ein Wert 0 mit einer Wahrscheinlichkeit von ζ auftritt, - ein Wert -lim1 mit einer Wahrscheinlichkeit von α auftritt und - ein Wert lim 1 mit einer Wahrscheinlichkeit von β auftritt, - wobei ζ + α + β = 1 gilt.
    7. Verfahren nach Anspruch 6, wobei lim1 eine Zahl in einem Bereich von 1 bis 16 ist.
    8. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die k Koeffizienten des zweiten Polynoms so bestimmt werden, dass - ein Wert -lim2 mit einer Wahrscheinlichkeit von 0,5 auftritt und - ein Wert lim 2 mit einer Wahrscheinlichkeit von 0,5 auftritt.
    9. Verfahren nach Anspruch 8, bei dem lim 2 eine Zahl in einem Bereich von 1 bis 5 ist.
    10. Verfahren nach einem der vorhergehenden Ansprüche, bei dem das Verfahren von einer Sicherheitsvorrichtung verwendet wird, die zumindest eine(s) der folgenden umfassen kann: - eine integrierte Schaltung, - ein Hardwaresicherheitsmodul, - ein Trusted-Platform-Modul, - eine Kryptoeinheit, - ein FPGA, - eine Verarbeitungseinheit, - eine Steuerung, - eine Smartkarte.
    11. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die kryptographische Operation eine kryptographische Gitteroperation ist.
    12. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die Stichprobennahme des ersten Polynoms und/oder die Stichprobennahme des zweiten Polynoms zumindest zwei Schritte der Stichprobennahme und einen Schritt des Auswählens des tatsächlichen ersten und/oder zweiten Polynoms aus den zumindest zwei Stichprobennahmeschritten umfassen kann.
    13. Sicherheitsvorrichtung, die dazu eingerichtet ist, die folgenden Schritte auszuführen: - Stichprobennahme eines ersten Polynoms, wobei alle Koeffizienten des ersten Polynoms bestimmt werden; - Stichprobennahme eines zweiten Polynoms, wobei eine Auswahl von k Koeffizienten des zweiten Polynoms bestimmt wird; - Multiplizieren des ersten Polynoms mit dem zweiten Polynom; - Verwenden des Multiplikationsergebnisses in der kryptographischen Operation.
    14. Vorrichtung nach Anspruch 13, bei der die Sicherheitsvorrichtung eine(s) der folgenden ist oder zumindest eine(s) der folgenden umfasst: - eine integrierte Schaltung, - ein Hardwaresicherheitsmodul, - ein Trusted-Platform-Modul, - eine Kryptoeinheit, - ein FPGA, - eine Verarbeitungseinheit, - eine Steuerung, - eine Smartkarte.
    15. Computerprogrammprodukt, das direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung geladen werden kann, umfassend Softwarecodeabschnitte zum Ausführen der Schritte des Verfahrens nach einem der Ansprüche 1 bis 12.
    16. Sicherheitsvorrichtung, umfassend: - Mittel zur Stichprobennahme eines ersten Polynoms, wobei alle Koeffizienten des ersten Polynoms bestimmt werden; - Mittel zur Stichprobennahme eines zweiten Polynoms, wobei eine Auswahl von k Koeffizienten des zweiten Polynoms bestimmt wird; - Mittel zum Multiplizieren des ersten Polynoms mit dem zweiten Polynom; - Mittel zum Verwenden des Multiplikationsergebnisses in der kryptographischen Operation.
    DE102018122278.5A 2018-09-12 2018-09-12 Ausführen einer kryptographischen Operation Pending DE102018122278A1 (de)

    Priority Applications (2)

    Application Number Priority Date Filing Date Title
    DE102018122278.5A DE102018122278A1 (de) 2018-09-12 2018-09-12 Ausführen einer kryptographischen Operation
    US16/568,758 US11798435B2 (en) 2018-09-12 2019-09-12 Executing a cryptographic operation

    Applications Claiming Priority (1)

    Application Number Priority Date Filing Date Title
    DE102018122278.5A DE102018122278A1 (de) 2018-09-12 2018-09-12 Ausführen einer kryptographischen Operation

    Publications (1)

    Publication Number Publication Date
    DE102018122278A1 true DE102018122278A1 (de) 2020-03-12

    Family

    ID=69621117

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102018122278.5A Pending DE102018122278A1 (de) 2018-09-12 2018-09-12 Ausführen einer kryptographischen Operation

    Country Status (2)

    Country Link
    US (1) US11798435B2 (de)
    DE (1) DE102018122278A1 (de)

    Families Citing this family (13)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    WO2019157503A1 (en) 2018-02-12 2019-08-15 Massachusetts Institute Of Technology Systems and methods for providing secure communications using a protocol engine
    US11080365B2 (en) * 2018-10-31 2021-08-03 Fujitsu Limited Solving lattice problems using annealing
    EP3903300A4 (de) * 2019-02-19 2022-09-07 Massachusetts Institute Of Technology Konfigurierbarer gitter-kryptografieprozessor für das quantensichere internet der dinge und zugehörige verfahren
    KR102280708B1 (ko) * 2020-10-23 2021-07-21 국민대학교산학협력단 NTRU LPRime 암호에 대한 부채널 분석 장치 및 방법
    KR20220055079A (ko) * 2020-10-26 2022-05-03 삼성에스디에스 주식회사 NTRU LPRime 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법
    US11716206B2 (en) * 2020-11-02 2023-08-01 International Business Machines Corporation Certificate based security using post quantum cryptography
    US11757659B2 (en) 2020-12-01 2023-09-12 International Business Machines Corporation Post-quantum certificate binding
    KR20220078155A (ko) 2020-12-03 2022-06-10 삼성전자주식회사 암호 프로세서, 암호 프로세서의 동작 방법 및 이를 포함한 전자 장치
    US11632246B2 (en) 2020-12-30 2023-04-18 International Business Machines Corporation Hybrid key derivation to secure data
    US11671453B2 (en) * 2021-06-17 2023-06-06 Richard Lamb Automated lightweight database access protocol secure/multipurpose internet mail extensions key server
    US11847938B2 (en) * 2021-08-03 2023-12-19 Nxp B.V. Combining regular and symbolic NTTs using co-processors
    WO2023055377A1 (en) * 2021-09-30 2023-04-06 Pqsecure Technologies, Llc An area efficient architecture for lattice based key encapsulation and digital signature generation
    US11750366B2 (en) * 2021-11-19 2023-09-05 Regents Of The University Of Minnesota Reduced complexity modular polynomial multiplication for R-LWE cryptosystems

    Citations (3)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US7363336B1 (en) * 2004-03-19 2008-04-22 Microsoft Corporation Six-term Karatsuba-variant calculator
    US20170324554A1 (en) * 2016-05-05 2017-11-09 Pq Solutions Limited Public Key Cryptosystem Based On Partitioning Of Galois Field Elements
    US20180109376A1 (en) * 2012-02-17 2018-04-19 International Business Machines Corporation Homomorphic evaluation including key switching, modulus switching, and dynamic noise management

    Family Cites Families (14)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US4949259A (en) * 1987-10-29 1990-08-14 Hewlett-Packard Company Delay coefficient generator for accumulators
    US6076163A (en) * 1997-10-20 2000-06-13 Rsa Security Inc. Secure user identification based on constrained polynomials
    EP1451967A1 (de) * 2001-12-07 2004-09-01 NTRU Cryptosystems, Inc. Verfahren und vorrichtung zur erzeugung von digitalsignaturen und zur authentifizierung
    US9503470B2 (en) * 2002-12-24 2016-11-22 Fred Herz Patents, LLC Distributed agent based model for security monitoring and response
    US8861716B2 (en) * 2010-03-30 2014-10-14 International Business Machines Corporation Efficient homomorphic encryption scheme for bilinear forms
    WO2013152725A1 (en) * 2012-04-12 2013-10-17 Jintai Ding New cryptographic systems using pairing with errors
    US9306738B2 (en) * 2012-12-21 2016-04-05 Microsoft Technology Licensing, Llc Managed secure computations on encrypted data
    US9571517B2 (en) * 2014-11-11 2017-02-14 Goldman, Sachs & Co. Synthetic cyber-risk model for vulnerability determination
    JP6413743B2 (ja) * 2014-12-16 2018-10-31 富士通株式会社 暗号処理装置、暗号処理方法、及び暗号処理プログラム
    JP6384314B2 (ja) * 2014-12-22 2018-09-05 富士通株式会社 情報処理方法、情報処理プログラムおよび情報処理装置
    US9673977B1 (en) * 2016-09-15 2017-06-06 ISARA Corporation Refreshing public parameters in lattice-based cryptographic protocols
    US10771237B2 (en) * 2017-01-20 2020-09-08 Enveil, Inc. Secure analytics using an encrypted analytics matrix
    EP3402118A1 (de) * 2017-05-10 2018-11-14 Koninklijke Philips N.V. Schlüsselvereinbarungsvorrichtungen und verfahren
    US11196539B2 (en) * 2017-06-22 2021-12-07 Microsoft Technology Licensing, Llc Multiplication operations on homomorphic encrypted data

    Patent Citations (3)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US7363336B1 (en) * 2004-03-19 2008-04-22 Microsoft Corporation Six-term Karatsuba-variant calculator
    US20180109376A1 (en) * 2012-02-17 2018-04-19 International Business Machines Corporation Homomorphic evaluation including key switching, modulus switching, and dynamic noise management
    US20170324554A1 (en) * 2016-05-05 2017-11-09 Pq Solutions Limited Public Key Cryptosystem Based On Partitioning Of Galois Field Elements

    Non-Patent Citations (3)

    * Cited by examiner, † Cited by third party
    Title
    Erdem Alkim, Léo Ducas, Thomas Pöppelmann, Peter Schwabe: NewHope without reconciliation. IACR Cryptology ePrint Archive 2016: 1157 (2016) *
    Erdem Alkim, Léo Ducas, Thomas Pöppelmann, Peter Schwabe: Post-quantum key exchange - a new hope. IACR Cryptology ePrint Archive 2015: 1092 (2015) *
    NewHope – Submission to the NIST post-quantum project. Erdem Alkim, Roberto Avanzi, Joppe Bos, Léo Ducas, Antonio de la Piedra, Thomas Pöppelmann, Peter Schwabe, Douglas Stebila. See https://csrc.nist.gov/Projects/Post-Quantum-Cryptography/Round-1-Submissions *

    Also Published As

    Publication number Publication date
    US20200082738A1 (en) 2020-03-12
    US11798435B2 (en) 2023-10-24

    Similar Documents

    Publication Publication Date Title
    DE102018122278A1 (de) Ausführen einer kryptographischen Operation
    DE102018108313A1 (de) Verfahren und Verarbeitungsvorrichtung zum Ausführen einer kryptografischen Operation auf Gitterbasis
    DE102019108095A1 (de) Ausführen einer kryptografischen Operation
    Garg et al. Secure obfuscation in a weak multilinear map model
    US11196539B2 (en) Multiplication operations on homomorphic encrypted data
    Garg et al. Breaking the sub-exponential barrier in obfustopia
    DE102017117907B4 (de) Durchführen einer kryptografischen Operation
    US8566601B1 (en) Systems and methods for functional encryption using a string of arbitrary length
    Scholl et al. Improved key generation for Gentry’s fully homomorphic encryption scheme
    EP2835932B1 (de) Verschlüsselungsvorrichtung, entschlüsselungsvorrichtung, verschlüsselungsverfahren, entschlüsselungsverfahren und programm
    Bogos et al. Cryptanalysis of a homomorphic encryption scheme
    KR20130085491A (ko) 인덱스 검증과 추적이 가능한 다자간 환경에서의 검색 가능 암호 시스템 및 방법
    Caminata et al. Solving multivariate polynomial systems and an invariant from commutative algebra
    DE102017117899A1 (de) Durchführen einer kryptografischen Operation
    DE102020119569B3 (de) Bereitstellen einer kryptografischen Information
    EP3096488A1 (de) Hypersphärenbasiertes multivariables system zur verschlüsselung/entschlüsselung öffentlicher schlüssel und verfahren
    Ishimaki et al. Private substring search on homomorphically encrypted data
    Battarbee et al. Cryptanalysis of semidirect product key exchange using matrices over non-commutative rings
    US10700870B2 (en) Signature generation and verification system
    DE102020113198A1 (de) Kryptografische Operation
    US20220382521A1 (en) System and method for encryption and decryption using logic synthesis
    US20220100889A1 (en) Method and system for determining an order of encrypted inputs
    US11368280B2 (en) Homomorphic encryption using discrete Galois transforms
    Trushechkin On the operational meaning and practical aspects of using the security parameter in quantum key distribution
    Kuang et al. Homomorphic polynomial public key encapsulation over two hidden rings for quantum-safe key encapsulation

    Legal Events

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