-
Ausführungsformen der vorliegenden Erfindung beziehen sich auf einen Ansatz zur effizienten Durchführung einer kryptografischen Operation, insbesondere zur effizienten Durchführung einer Formbarkeitsprüfung während einer kryptografischen Operation.
-
Das Ziel ist es, bestehende Lösungen zu verbessern, und insbesondere eine effiziente Lösung zur Durchführung einer Formbarkeitsprüfung bereitzustellen.
-
Dies wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Weitere Ausführungsformen ergeben sich von den abhängigen Ansprüchen.
-
Die hierin vorgeschlagenen Beispiele können insbesondere auf mindestens einer der folgenden Lösungen basieren. Kombinationen der folgenden Merkmale können verwendet werden, um ein angestrebtes Ergebnis zu erreichen. Die Merkmale des Verfahrens könnten mit jeglichem (jeglichen) Merkmal(en) des Geräts, der Vorrichtung oder des Systems oder umgekehrt kombiniert werden.
-
Es wird ein Verfahren zur Verarbeitung eines Chiffretextes vorgeschlagen,
- - wobei ein geheimer Schlüssel und der Chiffretext verwendet werden, um einen Startwert (auch bezeichnet als „seed“) zu bestimmen,
- - wobei ein Kandidat für einen öffentlichen Schlüssel von dem Chiffretext unter Verwendung des Startwerts extrahiert wird,
- - wobei ein Prüfwertkandidat basierend auf dem Kandidaten für einen öffentlichen Schlüssel bestimmt wird,
- - wobei der Prüfwertkandidat mit einem Prüfwert verglichen wird,
- - wobei der Chiffretext weiter verarbeitet wird, falls der Vergleich anzeigt, dass der Prüfwertkandidat dem Prüfwert entspricht.
-
Es wird darauf hingewiesen, dass der Chiffretext oder ein Abschnitt des Chiffretextes weiter verarbeitet werden kann, falls der Vergleich anzeigt, dass der Prüfwertkandidat dem Prüfwert entspricht.
-
Der Chiffretext kann mehrere Abschnitte umfassen; mindestens ein solcher Abschnitt kann verwendet werden, um die Nutzlast (Daten oder Informationen) zu bestimmen, die weiter verarbeitet werden müssen, falls es bestätigt werden kann, dass der Chiffretext nicht manipuliert wurde.
-
Es ist eine Option, mindestens eine Hash-Funktion bei mindestens einer Gelegenheit zu verwenden, um eine Bit-Folge zu erzeugen, die ein unterschiedliches Erscheinungsbild zu den Daten hat, die in die Hash-Funktion eingegeben werden.
-
Der Prüfwertkandidat kann insbesondere dem Prüfwert entsprechen, falls beide identisch sind oder einer eindeutig in den anderen umgewandelt werden kann.
-
Der Chiffretext kann durch einen Empfänger erhalten werden, der insbesondere eine kryptografische Einheit ist.
-
Daher ermöglicht die Lösung eine Formbarkeitsprüfung während einer kryptografischen Operation, bei der der öffentliche Schlüssel von dem Chiffretext extrahiert und mit dem Prüfwert als ein Referenzwert verglichen wird.
-
Gemäß einer Ausführungsform werden der geheime Schlüssel und der Prüfwert mit einem Decodierer gespeichert oder sind für den Decodierer zugänglich.
-
Der Decodierer kann eine kryptografische Einheit sein, die das Verfahren ausführt (auch bezeichnet als Empfänger).
-
Gemäß einer Ausführungsform wird ein Fehler bestimmt, falls der Vergleich anzeigt, dass der Prüfwertkandidat nicht dem Prüfwert entspricht.
-
Der Fehler kann zu einer Beendigung des Verfahrens oder zu einer Benachrichtigung führen, die anzeigt, dass der Fehler ausgegeben werden kann.
-
Gemäß einer Ausführungsform wird der Prüfwert basierend auf einer Hash-Funktion des öffentlichen Schlüssels bestimmt.
-
Daher kann der öffentliche Schlüssel in die Hash-Funktion eingegeben werden, um den Prüfwert zu bestimmen. Als eine Option kann mindestens ein zusätzlicher Wert zusammen mit dem öffentlichen Schlüssel eingegeben werden, um den Prüfwert zu bestimmen.
-
Gemäß einer Ausführungsform wird der Prüfwert basierend auf einer Hash-Funktion von zwei verketteten Polynomen a und p bestimmt, wobei das Polynom a Teil des öffentlichen Schlüssels ist und das Polynom p der öffentliche Schlüssel p = r1 - a · r2 ist, wobei r1 und r2 zufällig erzeugte Polynome sind.
-
Gemäß einer Ausführungsform werden Wertkomponenten von Kandidaten für öffentliche Schlüssel a' und p' von dem Chiffretext c
1, c
2 extrahiert, durch Berechnen von
und
wobei e
1, e
2 und e
3 Rauschpolynome sind, v' ein entschlüsselter Chiffretext ist, und RLWEencode ( ) eine Codierungsfunktion ist.
-
Gemäß einer Ausführungsform wird das Rauschpolynom e1 so erzeugt, dass es invertierbar ist.
-
Gemäß einer Ausführungsform umfasst das Verfahren ferner:
- - Empfangen des Chiffretextes,
- - wobei der geheime Schlüssel und der Chiffretext verwendet werden, um den Startwert unter Verwendung einer Entschlüsselungsoperation zu bestimmen;
- - wobei der Prüfwertkandidat basierend auf dem Kandidaten für einen öffentlichen Schlüssel bestimmt wird, indem der Kandidat für einen öffentlichen Schlüssel in eine Erzeugungsfunktion eingegeben wird.
-
Gemäß einer Ausführungsform wird eine Nutznachricht basierend auf dem Startwert entschlüsselt.
-
Gemäß einer Ausführungsform wird eine Nutznachricht basierend auf der Entschlüsselungsoperation bestimmt.
-
Gemäß einer Ausführungsform wird eine Integritätsprüfung der Nutznachricht durch Verwenden des Startwerts, eines anderen Abschnitts des Chiffretextes und mindestens einer Hash-Funktion durchgeführt.
-
Gemäß einer Ausführungsform verwendet eine solche Verarbeitung die zahlentheoretische Transformation.
-
Gemäß einer Ausführungsform wird das Verfahren an einem Sicherheitsgerät oder zum Betreiben eines Sicherheitsgeräts verwendet, wobei ein solches Sicherheitsgerät mindestens eines der Folgenden umfasst:
- - einen integrierten Schaltkreis,
- - ein Hardware-Sicherheitsmodul,
- - ein vertrauenswürdiges Plattformmodul,
- - eine Kryptoeinheit,
- - ein FPGA,
- - eine Verarbeitungseinheit,
- - eine Steuerung,
- - eine Smartcard.
-
Gemäß einer Ausführungsform verwendet die Verarbeitung des Chiffretextes mindestens eine kryptografische Gitteroperation (Lattice-Operation).
-
Ferner wird ein Sicherheitsgerät bereitgestellt, das angeordnet ist, um die folgenden Schritte auszuführen:
- - Empfangen eines Chiffretextes;
- - Bestimmen eines Startwerts basierend auf einem geheimen Schlüssel und dem Chiffretext;
- - Extrahieren eines Kandidaten für einen öffentlichen Schlüssel von dem Chiffretext unter Verwendung des Startwerts;
- - Bestimmen eines Prüfwertkandidaten basierend auf dem Kandidaten für einen öffentlichen Schlüssel;
- - Vergleichen des Prüfwertkandidaten mit einem Prüfwert;
- - Weiterverarbeiten des Chiffretextes, falls der Vergleich anzeigt, dass der Prüfwertkandidat dem Prüfwert entspricht.
-
Gemäß einer Ausführungsform ist das Sicherheitsgerät eines der Folgenden oder umfasst mindestens eines der Folgenden:
- - einen integrierten Schaltkreis,
- - ein Hardware-Sicherheitsmodul,
- - ein vertrauenswürdiges Plattformmodul,
- - eine Kryptoeinheit,
- - ein FPGA,
- - eine Verarbeitungseinheit,
- - eine Steuerung,
- - eine Smartcard.
-
Zusätzlich wird ein Computerprogrammprodukt vorgeschlagen, das direkt in einen Speicher eines digitalen Verarbeitungsgeräts geladen werden kann, das Software-Codeabschnitte zum Ausführen der Schritte des Verfahrens wie hierin beschrieben umfasst.
-
Es wird jedoch ein Sicherheitsgerät vorgeschlagen, das Folgendes umfasst:
- - Mittel zum Empfangen eines Chiffretextes;
- - Mittel zum Bestimmen eines Startwerts basierend auf einem geheimen Schlüssel und dem Chiffretext;
- - Mittel zum Extrahieren eines Kandidaten für einen öffentlichen Schlüssel von dem Chiffretext unter Verwendung des Startwerts;
- - Mittel zum Bestimmen eines Prüfwertkandidaten basierend auf dem Kandidaten für einen öffentlichen Schlüssel;
- - Mittel zum Vergleichen des Prüfwertkandidaten mit einem Prüfwert;
- - Mittel zum Weiterverarbeiten des Chiffretextes, falls der Vergleich anzeigt, dass der Prüfwertkandidat dem Prüfwert entspricht.
-
Ausführungsformen werden unter Bezugnahme auf die Zeichnungen gezeigt und veranschaulicht. Die Zeichnungen dienen zur Veranschaulichung des Grundprinzips, sodass nur zum Verstehen des Grundprinzips notwendige Aspekte veranschaulicht werden. Die Zeichnungen sind nicht maßstabsgetreu. In den Zeichnungen bezeichnen dieselben Referenzzeichen gleiche Merkmale.
- 1 zeigt einen bekannten Ansatz zum Transformieren einer CPA-sicheren PKE oder eines KEM in CCA-sichere Varianten unter Verwendung einer Fujisaki-Okamoto (FO) -Transformation;
- 2 zeigt ein beispielhaftes Blockdiagramm, um diesen Ansatz durch Verwenden eines privaten Schlüssels (geheimer Schlüssel) und eines Prüfwerts für Entschlüsselungszwecke in einer kryptografischen Einheit (auch bezeichnet als Empfänger) zu visualisieren;
- 3 zeigt ein schematisches Flussdiagramm, das Schritte umfasst, die die Verwendung des Prüfwerts β auf eine effiziente Weise zusammenfassen;
- 4 zeigt ein beispielhaftes Blockdiagramm, das einen Puffer umfasst, der mit einem Systembus und mehreren funktionalen (Software und/oder Hardware) Komponenten gekoppelt ist;
- 5 zeigt eine beispielhafte Anordnung eines Verarbeitungsgeräts, das eine CPU, einen RAM, einen nichtflüchtigen Speicher, ein Kryptomodul, ein Analogmodul, eine Eingabe/Ausgabe-Schnittstelle und einen Hardware-Zufallszahlengenerator umfasst;
- 6 zeigt eine alternative Anordnung mit einem Hardware-Sicherheitsmodul (Hardware-Security-Module - HSM).
-
Verschiedene Internet- und Industriestandards verwenden asymmetrische Kryptografie basierend auf RSA oder Elliptic-Curve-Cryptography (ECC), um die Datenkommunikation zwischen Smartcards, Smartphones, Computern, Servern oder industriellen Steuerungssystemen zu schützen. Als ein Beispiel kann mit dem RSA-Algorithmus ein Schema zum Verschlüsseln mit öffentlichem Schlüssel (Public-Key-Encryption (PKE) scheme) realisiert werden, das das Senden einer verschlüsselten E-Mail (zum Beispiel mit PGP/GPG oder S/MIME) an einen Empfänger ermöglicht, ohne dass zuvor ein symmetrischer Schlüssel über einen sicheren Kanal ausgetauscht werden muss. Stattdessen ist der öffentliche Schlüssel des Empfängers ausreichend, um Vertraulichkeit zu erreichen.
-
Andere Anwendungen der asymmetrischen Kryptografie sind digitale Signaturen, die ebenfalls auf RSA oder ECC basieren. Sie können zum Signieren und Überprüfen von Daten verwendet werden, und der öffentliche Schlüssel wird zum Überprüfen der Gültigkeit einer Signatur verwendet.
-
Zusammen sind PKE und digitale Signaturen in dem Transport-Layer-Security (TLS) - Protokoll entscheidend, das das Rückgrat der gesicherten Kommunikation im Internet ist und durch Browser, Smartphones und Internet-of-Things (IoT) -Geräte verwendet wird. TLS richtet einen gesicherten Kanal zwischen zwei Geräten ein, auf dem die Kommunikation verschlüsselt, auf Manipulationen überprüft und die Identität der Teilnehmer durch Verwenden eines digitalen Zertifikats überprüft wird, das durch eine Public-Key-Infrastructure (PKI) bereitgestellt wird. Beim Verbinden mit einer Website, zum Beispiel einer Bank, durch Verwenden von https anstelle von 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 Website der Bank läuft und dass Angriffe durch einen sogenannten Man-in-the-Middle verhindert werden. Ohne eine solche PKI-basierte Identitätsprüfung in Kombination mit einer starken Datenverschlüsselung wäre es für Angreifer möglich, die Kommunikation zu manipulieren und sich als die Website auszugeben, auf die zugegriffen wird.
-
Es ist jedoch bekannt, dass auf RSA und ECC basierende öffentliche Schlüssel einem erfolgreichen Angriff durch Verwenden von zum Beispiel Quantencomputern ausgesetzt sein können.
-
Ein Quantencomputer kann als ein Computer beschrieben werden, der quantenmechanische Phänomene direkt nutzt, um die Verarbeitung zu beschleunigen. Entscheidende Konzepte zum Aufbau eines Quantencomputers sind sogenannte Quanten-Bits oder Qu-Bits, die einen Zustand in einem Quantenregister speichern. Solche Quantencomputer können verwendet werden, um kryptografische Konzepte erfolgreich zu brechen, die als ausreichend sicher angesehen wurden, bevor eine solche Verarbeitungsleistung verfügbar war.
-
Daher gibt es eine allgemeine Motivation, von klassischen asymmetrischen Kryptosystemen (RSA/ECC) zu Schemata überzugehen, die durch Quantencomputer nicht erfolgreich angegriffen werden können. Infolgedessen sind neue Lösungen für Signaturschemata, Schlüsselaustausch und Verschlüsselung mit öffentlichem Schlüssel erforderlich, die nicht auf denselben Grundlagen wie RSA und ECC (das heißt dem diskreten Logarithmusproblem/Factoring) basieren. Dieser Bedarf an neuen technischen Lösungen wurde bereits durch Normungsgremien wie dem NIST (National Institute of Standards and Technology), die alternative Kryptosysteme untersuchen, anerkannt.
-
Ein Kryptosystem kann eine kryptografische Verschlüsselung mit öffentlichem Schlüssel, ein Schlüsselaustausch oder ein Signaturschema oder ein erweitertes Schema wie eine homomorphe Verschlüsselung oder eine auf Attributen basierende Verschlüsselung sein. Bei der Verschlüsselung mit öffentlichem Schlüssel wird ein nicht geheimer öffentlicher Schlüssel verwendet, um Daten zu verschlüsseln, die nur mit dem zugehörigen geheimen Schlüssel entschlüsselt werden können. In Signaturschemata wird ein geheimer Schlüssel zum Signieren einer Nachricht verwendet, und mit dem zugehörigen öffentlichen Schlüssel kann überprüft werden, ob der Unterzeichner im Besitz des geheimen Schlüssels und somit zur Herstellung der Signatur berechtigt war. Der Schlüsselaustausch oder die Schlüsseleinrichtung ist ein interaktives Protokoll, bei dem zwei Parteien einen geheimen Schlüssel einrichten, der einem passiven oder manchmal aktiven Gegner oder Lauscher unbekannt ist. Es können auch unterschiedliche Optionen verwendet werden, die Verschlüsselung mit öffentlichem Schlüssel, Schlüsselaustausch oder Signaturschemata in Protokolle, wie zum Beispiel Transport-Layer-Security (TLS), kombinieren.
-
Eine Klasse von Schemata, die Angriffen durch Quantencomputer widerstehen soll, sind gitterbasierte Kryptosysteme. Gitterbasierte Kryptosysteme könnten der Nachfolger von RSA und ECC werden, und entweder auf großen Matrizen (Standardgitter) oder auf Polynomringen (ideale Gitter) arbeiten. Für die gitterbasierte Kryptografie wird zum Beispiel auf https://en.wikipedia.org/wiki/Latticebased_cryptography verwiesen.
-
Ein Gitter ist eine Struktur, die durch ganzzahlige lineare Kombinationen von Basisvektoren erzeugt wird. Somit kann ein Gitter als eine regelmäßige Struktur in einem n-dimensionalen Raum beschrieben werden. Ein Gitter kann auch als eine Anordnung von Punkten in einem euklidischen Raum mit einer regelmäßigen Struktur wahrgenommen werden. Bei n linear unabhängigen Vektoren b
1, ... , b
n, ∈ ℝ
m ist ein durch sie erzeugtes Gitter
definiert als
wobei
- - b1, ... , bn eine Basis des Gitters ist, und
- - ein Element von ℝm ein Vektor mit m Einträgen von ℝ ist.
-
In dem Gitter
(das heißt einem n-dimensionalen Raum) wird vermutet, dass bestimmte grundsätzliche Probleme, wie das Finden einer kurzen Basis oder eines kurzen Vektors, rechnerisch schwierig oder zumindest komplex genug sind, um sie für die Kryptografie zu verwenden. Gewöhnlich kann die Schwierigkeit des Brechens eines gitterbasierten Kryptosystems verringert werden, oder mit der Schwierigkeit des Lösens eines solchen grundsätzlichen Problems zusammenhängen. Die gitterbasierte Kryptografie oder ein gitterbasiertes Kryptosystem ist ein kryptografisches System, dessen Sicherheit auf der Schwierigkeit bestimmter mathematisch schwieriger Probleme in Gittern basiert oder damit zusammenhängt.
-
Gitter können verwendet werden, um Kryptosysteme aufzubauen. Die gitterbasierte Kryptografie ist auch unter Bezugnahme auf das Problem des benutzerfreundlichen Learning-With-Errors (LWE) -Problems und des Ring-LWE (RLWE) -Problems bekannt. In diesem Zusammenhang bezieht sich ein „Problem“ auf ein mathematisches Problem (zum Beispiel das Finden von etwas), von dem vermutet wird, dass es schwierig zu lösen ist (das heißt es ist kein Polynomzeitalgorithmus verfügbar), das jedoch auch den Aufbau eines kryptografischen Schemas ermöglicht (wie zum Beispiel Factoring-Problem für RSA oder diskreter Logarithmus für ECC).
-
Um ein LWE-Problem zu lösen, muss im Allgemeinen ein geheimer Vektor s über dem Ring des ganzzahligen Modulos q wiederhergestellt werden, wenn ein Satz von ungefähren zufälligen linearen Gleichungen auf dem geheimen Vektor s gegeben ist. Daher wird der Satz linearer Gleichungen durch ein gewisses Maß an Zufälligkeit verfälscht, was es für bekannte Algorithmen schwierig macht, diesen Satz von Gleichungen zu lösen.
-
Die LWE- und RLWE-Probleme ermöglichen es daher, Schemata zu konstruieren, bei denen die tatsächliche Gitterstruktur für den Designer eines Schemas nicht wirklich sichtbar ist. Wenn jedoch die Sicherheit von LWE/RLWE-basierten Schemata bewiesen wird, wird die Gitterstruktur auch verwendet, wenn versucht wird, die LWE- oder RLWE-Probleme zu lösen, da Gitteralgorithmen ein effizienter Weg sind, den geheimen Vektor oder das Polynom s zu finden. Dies wird auch als Lösen eines „Gitterproblems“ beschrieben. Das RLWE-Problem arbeitet über Polynomringe und unterstützt eine Sicherheitsreduzierung auf schwierige Probleme bei idealen Gittern, während LWE die Reduzierung auf willkürliche Gitter ermöglicht. Ideale Gitter tragen mehr Struktur, da nicht alle Gitter ideale Gitter sind, sondern auch das Design von Schemata ermöglichen, die praktischere Längen für öffentliche Schlüssel, Chiffretext und Signaturen verwenden.
-
Prominente Beispiele für gitterbasierte Kryptografie sind die sogenannten NTRU- und NTRU-Vorzeichen-Schemata, sowie das sogenannte GGH (Goldreich-Goldwasser-Halevi, siehe zum Beispiel https://en.wikipedia.org/wiki/GGH_encryption_scheme)-Schema. Für die meisten Schemata ist die Konvertierung von der Verschlüsselung mit öffentlichem Schlüssel zum Schlüsselaustausch trivial. Zusätzlich können für PKE verschiedene Sicherheitsstufen wie semantische Sicherheit in Bezug auf Adaptive-Chosen-Plaintext (CPA) oder semantische Sicherheit in Bezug auf Adaptive-Chosen-Ciphertext-Attacks (CCA) durch Verwenden von Standardkonvertierungen erreicht werden.
-
Dies wurde beispielhaft für das NewHope-Schema gezeigt, das auch als CPA-sichere oder CCA-sichere PKE instanziiert werden kann [NewHopeNistl7]. Das NewHope-Simple-Schema und andere Schemata sind eine unkomplizierte Anpassung eines Schemas namens LPR10 (siehe [NewHopeSimplePaperEprint16]). Beispiele für gitterbasierte Signaturschemata sind Dilithium, BLISS, GLP12 und qTESLA (siehe zum Beispiel https://csrc.nist.gov/Projects/Post-Quantum-Cryptography/Round-1-Submissions).
-
Technische Herausforderungen bezüglich gitterbasierter Kryptografie
-
Bei der Realisierung von gitterbasierter Kryptografie und gitterbasierten Kryptosystemen auf einem Computer, einem Mikrocontroller, einer integrierten Schaltung, in einem Hardware-Software-Co-Design oder als feste Schaltung treten bei der Ausführung kryptografischer Operationen (zum Beispiel Signieren, Verschlüsselung, Entschlüsselung, Überprüfung, Schlüsselerzeugung) mehrere technische Herausforderungen auf. Beispiele für solche technischen Herausforderungen, die auf diesem Gebiet auftreten, sind:
- - Erreichen einer verbesserten Leistung, indem Schritte eines Kryptosystems durch Verwenden einer spezifisch optimierten Abfolge von Operationen ausgeführt werden, und durch Verwenden aller Merkmale der verfügbaren Ziel-Hardware (spezielle Register oder Anweisungen).
- - Ausführen einer kryptografischen Operation durch Verwenden einer minimalen Menge von flüchtigem oder nichtflüchtigem Speicher.
- - Realisieren einer kryptografischen Operation oder von Teilen davon mit einer minimalen Menge von Logikschaltungen und Speicherzellen (zum Beispiel gebildet durch einen CMOS-Prozess) bei einem gegebenem Leistungsziel.
- - Effizienter und umfangreicher Schutz gegen Implementierungsangriffe (auch bezeichnet als physikalische Angriffe, Beobachtungsangriffe, invasive und semi-invasive Angriffe).
-
Es wird darauf hingewiesen, dass der Schutz gegen Implementierungsangriffe und/oder physikalische Angriffe insbesondere für Kryptosysteme vorteilhaft ist, die auf einem Sicherheitscontroller oder in jeglicher ungünstigen Umgebung (zum Beispiel einem Hardware-Security-Module, HSM) ausgeführt werden.
-
Mögliche Angriffe sind Seitenkanalangriffe, bei denen ein Angreifer versucht, geheime Informationen zu erhalten, indem er das physikalische Verhalten eines Geräts wie den Stromverbrauch (zum Beispiel einfache oder differenzielle Leistungsanalyse (Simple-Power-Analysis - SPA / Differential-Power-Analysis - DPA)), die elektrische Ausstrahlung oder die Temperatur beobachtet. Darüber hinaus sind Fehlerangriffe möglich, wenn ein Angreifer versucht, Störungen (zum Beispiel mit einem Laser) in den Ausführungsfluss oder in die Daten einzubringen, um geheime Informationen zu erhalten oder das Verhalten des Geräts zu beeinflussen.
-
Es ist ein Merkmal eines Implementierungsangriffs, dass ein solcher Angriff keine Schwachstelle in der mathematischen Beschreibung eines Schemas ausnutzt (was als Kryptoanalyse angesehen werden würde), sondern die Art und Weise, wie das Schema auf einem spezifischen Gerät realisiert wird. Im Allgemeinen wird davon ausgegangen, dass der Gegner Zugriff auf das Gerät hat, wenn er einen Implementierungsangriff ausführt.
-
Gewöhnlich ist ein Gerät wie eine Smartcard auf eine Weise aufgebaut, dass physikalische Effekte (zum Beispiel Stromverbrauch oder Strahlung) verschleiert werden, um es schwierig zu machen, sicherheitskritische Werte zu erhalten. Ein üblicher Ansatz, um physikalischen Angriffen entgegenzutreten, ist die Ausführung randomisierter Werte, um invasive und nicht-invasive Angriffe zu verhindern, die das Ziel verfolgen, einen geheimen Schlüssel oder einen Zwischenwert von dem Gerät zu extrahieren. Es ist jedoch eine technische Herausforderung, solche Randomisierungen oder Redundanzen auf eine effizient Weise und ohne das Öffnen weiterer Angriffsgelegenheiten zu realisieren.
-
Schreibweise und Abkürzungen
-
Insbesondere werden die folgenden Schreibweisen, Abkürzungen und Bezüge verwendet:
- q
- ist eine ganze Zahl,
- k
- ist eine ganze Zahl,
- n
- ist eine ganze Zahl,
- mod q
- ist die Modulo-Operation modulo q, die über die ganzen Zahlen definiert ist, wobei das Ergebnis in dem Bereich [0, q-1] liegt.
- Z
- sind die ganzen Zahlen (Zahl geschrieben ohne eine Bruchteilkomponente); für eine Definition von „Zahl“ wird auf https://en.wikipedia.org/wiki/Number verwiesen; für eine Definition von „Bruchteilkomponente“ wird auf https://en.wikipedia.org/wiki/Fraction_(mathematics) verwiesen.
- ℝ
- sind die reellen Zahlen (ein Wert einer kontinuierlichen Größe, die einen Abstand entlang einer Linie darstellen kann),
- Zq ist
- der Ring von Ganzzahlen-Modulo q, der der Quotientenring Z/qZ von Äquivalenzklassen von Ganzzahlen-Modulo q ist
- X ist
- eine Unbestimmte,
- f ist
- ein Polynom von maximalem Grad von 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 mit einem Grad kleiner als die ganze Zahl n oder alternativ als ein Vektor von Koeffizienten v ∈ Zn dargestellt werden,
- Rq = 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 koeffizientenreduziertem Modulo q oder alternativ als ein Koeffizientenvektor
dargestellt werden,
- v ∈ Rq ist
- ein Polynom (fett geschrieben), das ein Element in Rq ist,
- v[i] ist
- ein Koeffizient eines Vektors oder Polynoms v E Rq an einer Position i,
- ϑ ist
- eine Fehlerverteilung,
- ←$
- Zufalls-Sampling von einer Menge oder Verteilung,
- DZ,σ
- diskrete Gaußsche Verteilung über die ganzen Zahlen 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)
- gleichmäßig zufälliges Sampling eines Polynoms in Rq, bei dem alle Koeffizienten gleichmäßig zufällig in [-k,k] sind,
- FFT
- Fast Fourier Transformation,
- NTT
- Number Theoretic Transform (zahlentheoretische Transformation),
- DPA
- Differential Power Analysis (differenzielle Leistungsanalyse)
- SPA
- Simple Power Analysis (einfache Leistungsanalyse),
- ALU
- Arithmetic Logic Unit (arithmetische Logikeinheit),
- PKE
- Public Key Encryption (asymmetrische Verschlüsselung),
- KEM
- Key Encapsulation Mechanism (Mechanismus zur Kapselung von Schlüsseln),
- CCA
- Chosen Ciphertext Attack (gewählter Angriff auf den Geheimtext (Chiffretext)),
- CPA
- Chosen Plaintext Attack (gewählter Angriff auf den Klartext),
- IND
- Indistinguishability (Ununterscheidbarkeit).
-
Der Quotientenring ist eine Konstruktion in der abstrakten Algebra; für Einzelheiten wird zum Beispiel auf https://en.wikipedia.org/wiki/Quotient_ring verwiesen.
-
Ideale Gitter und Polynom-Arithmetik
-
Gegenwärtig existieren zwei Richtungen der gitterbasierten Kryptografie, das heißt die ideale gitterbasierte Kryptografie und die standardmäßige gitterbasierte Kryptografie. Ein Mittelweg ist eine sogenannte modulare gitterbasierte Kryptografie, die Konzepte von idealen und standardmäßigen Gittern vermischt. Es wird zum Beispiel auf [NewHopeNist17] verwiesen.
-
Die Basisoperationen bei der idealen gitterbasierten Kryptografie sind Polynom-Multiplikationen, Additionen, oder Subtraktionen in dem Quotientenring
wobei der Modul q eine ganze Zahl ist und die Dimension (Anzahl der Koeffizienten) eine ganze Zahl n ist. Ein Polynom a ∈ R
q kann als ein Array von Werten dargestellt werden, und auf einen einzelnen Wert a [i] an einer ganzzahligen Position i kann zugegriffen werden. Alle Hauptberechnungen in gitterbasierten Kryptosystemschemata können an Arrays von Werten modulo q ausgeführt werden.
-
Für den Quotientenring können Operationen wie Addition und Multiplikation definiert werden. Eine Addition c = a + b für a, b, c ∈ R
q kann definiert werden als
wobei i eine ganze Zahl ist, q eine ganze Zahl ist, a[i] der i-te Koeffizient von a ist, b[i] der i-te Koeffizient von b ist und X die Unbestimmte ist. Eine Subtraktion c = a - b arbeitet auf die gleiche Weise, wobei „+“ durch „-“ ersetzt wird.
-
Das Produkt c = a · b von Polynomen a, b, c E R
q kann ebenfalls berechnet werden. Es ist definiert als eine normale Polynom-Multiplikation (manchmal auch „Schulbuch“-Multiplikation genannt), gefolgt von einem Reduktions-Modulo des Polynoms f und einem Reduktions-Modulo der ganzen Zahl q, das heißt
-
Die Formel für die Polynom-Multiplikation kann vereinfacht werden, indem die Sonderregel berücksichtigt wird, dass x
n = -1, wenn f = x
n + 1, es können aber ähnliche Polynome entsprechend verwendet werden:
wobei i and j ganze Zahlen sind, q eine ganze Zahl ist, a[i] der i-te Koeffizient von a ist, b [j] der j-te Koeffizient von b ist und x die Unbestimmte ist.
-
Spärliche Multiplikation
-
Einige Effizienz für die Polynom-Arithmetik kann mit Algorithmen erzielt werden, die spezifische Eigenschaften von Polynomen ausnutzen. Zum Beispiel kann ein Polynom s ∈ Rq nur wenige Koeffizienten haben, die nicht Null sind, es kann auch nur aus Koeffizienten bestehen, die entweder eins oder minus eins sind, oder es kann im Allgemeinen Koeffizienten haben, die klein sind. Es kann auch eine Kombination solcher Eigenschaften aufweisen.
-
Die Number-Theoretic-Transform (NTT)
-
Eine Implementierung dieser Formel folgend würde n2 modulare Multiplikationen erfordern und wäre somit ziemlich teuer.
-
Ein anderer Ansatz zur schnellen Polynom-Multiplikation ist die Number-Theoretic-Transform (NTT). Die NTT ist grundsätzlich eine Fast-Fourier-Transformation (FFT), die über ein endliches Feld oder einen Ring definiert ist. Somit werden alle komplexen Wurzeln der Einheit der FFT gegen ganzzahlige Wurzeln der Einheit ausgetauscht und Berechnungen werden in dem Ring von Ganzzahlen-Modulo einer ganzen Zahl q ausgeführt. Eine Polynom-Multiplikation für a, b, c E R
q durch Verwenden von NTT kann berechnet werden als
wobei „◦“ 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̂, ĉ ∈ Z
q [x] kann definiert werden als
-
Der Vorteil der NTT ist, dass eine Polynom-Multiplikationsoperation nur ungefähr n log
2 n modulare Multiplikationen erfordert, wenn ein effizienter Algorithmus verwendet wird, und dass ein Reduktions-Modulo
(die sogenannte kreisförmige Faltungseigenschaft) oder ein Reduktions-Modulo in den NTT-Algorithmus integriert werden kann.
-
Somit reicht eine n-Punkt-NTT aus, um mit Polynomen mit n-Koeffizienten zu arbeiten.
-
Zur formellen Einführung der NTT kann die Auswahl der Parameter eingeschränkt werden; außerdem kann das Folgende so eingestellt werden, dass die NTT existiert:
und
-
Ferner kann ein Polynom wie folgt definiert werden
sodass
mit
wobei die ganze Zahl ω eine 2n-te primitive Wurzel der Einheit Modulo q und Ganzzahl
mod q ist. Also ist γ eine Quadratwurzel von ω Modulo q.
-
Die inverse Transformation arbeitet ähnlich. Für ein Polynom ĝ ∈ R
q kann sie definiert werden als:
mit
-
Eine unkomplizierte Berechnung der NTT mit der zuvor gegebenen Definition ist quadratisch komplex und nicht effizienter als der Schulbuchansatz. Daher ist, um eine schnelle Polynom-Multiplikation durch Verwenden des Faltungssatzes zu realisieren, ein schneller Algorithmus zur Berechnung der NTT erforderlich. Dies kann über eine Implementierung der NTT mit O(n log n) -Operationen in Zq zum Beispiel durch den Cooley-Tukey-Radix-2 Decimation-In-Time (DIT) -Algorithmus (siehe zum Beispiel https://en.wikipedia.org/wiki/Cooley%E2%80%93Tukey_FFT_algorithm), oder durch einen Decimation-In-Frequency (DIF) -Algorithmus erreicht werden. Der DIT-NTT-Algorithmus teilt die Berechnung rekursiv in ein Unterproblem an den geraden Eingaben und ein Unterproblem an den ungeraden Eingaben der NTT auf.
-
Berechnung einer Polynom-Inversen
-
Die Berechnung der Polynom-Inversen kann in Signaturen erforderlich sein und kann zur Implementierung von Sicherheitsmaßnahmen verwendet werden.
-
Einige der kryptografischen Algorithmen erfordern die Berechnung der Inversen eines Polynoms a-1 für a ∈ Rq, sodass a · a-1 = 1.
-
Es gibt einen Ansatz, der als Fermats kleiner Satz bekannt ist, um die multiplikative Inverse von ganzen Zahlen in Zq zu berechnen, aber er kann auch angewendet werden auf Rq. Die Polynom-multiplikative Inverse a-1 kann berechnet werden als a-1 = aq-2,, wenn a invertierbar ist. Dieser Prozess kann durch Verwenden der NTT und bekannter Potenzierungsverfahren wie Quadrat-und-Multiplikation (von rechts nach links oder von links nach rechts) oder einer Additionskette beschleunigt werden.
-
Bei der Transformation von a in die NTT-Domäne ist eine Multiplikation nur eine koeffizientenweise Multiplikation.
-
Als ein Beispiel kann a
3 basierend auf a' = NTT(a) wie folgt berechnet werden:
was gewöhnlich schneller ist als das Berechnen von a
3 = a ∗ a ∗ a durch Verwenden von Algorithmen wie Schulbuch- oder Karatsuba-Multiplikation.
-
Mit einer Additionskette kann die Anzahl der koeffizientenweisen Multiplikationen abhängig von dem Anteil von q weiter reduziert werden.
-
Zufälligkeit und Zufalls-Sampling
-
a ←$ S zeigt eine Aktion an, bei der die Variable a unabhängig und gleichmäßig zufällig aus einer Menge S oder einer spezifischen Verteilung S ausgewählt wird.
-
Es wird darauf hingewiesen, dass „zufällig“ oder „gleichmäßig“ in dieser Hinsicht (zum Beispiel zufällige Auswahl oder jeglicher zufällige Wert) ein wahrer zufälliger, ein pseudozufälliger oder ein deterministischer Ansatz sein kann, um einen Wert zu erhalten. Daher kann die Eigenschaft einer solchen „Zufälligkeit“ oder jeglichen zufälligen Effekts gemäß dem hiermit bereitgestellten Vorschlag sein, dass ein Angreifer den Wert nicht kennt und dass die Werte für mindestens einen Abschnitt der Operationen unterschiedlich sind. Die Zufälligkeit fügt insbesondere ein bestimmtes Maß an Entropie zwischen Werten hinzu, die „zufällig“ bestimmt, zum Beispiel erzeugt und/oder ausgewählt werden.
-
Für eine endliche Menge S kann eine gleichmäßige Verteilung auf der Menge S als U(S). bezeichnet werden. Die Schreibweise a ←$ U(Rq,k) kann ein gleichmäßig zufälliges Sampling von a ∈ Rq anzeigen, wo alle Koeffizienten von a [- k,k]sind.
-
Für eine Wahrscheinlichkeitsverteilung X auf R wird angenommen, dass ein effizientes Sampling möglich ist, und die Schreibweise a ←$ X wird verwendet, um das Zufalls-Sampling von a ∈ R von der Wahrscheinlichkeitsverteilung X zu bezeichnen.
-
Das Sampling von geheimen Rausch- oder Fehlervektoren ist eine grundlegende Aufgabe bei gitterbasierter Verschlüsselung mit öffentlichem Schlüssel (PKE), Schlüsselaustausch oder Signaturschemata. Ein besonderes Attribut solcher Rausch- oder Fehlervektoren ist, dass sie gewöhnlich klein sind (das heißt mit Koeffizienten, die nahe Null sind).
-
Eine diskrete Gaußsche Verteilung D
Z,σ mit Mittelwert 0 und Standardabweichung σ > 0 über die ganzen Zahlen assoziiert eine Wahrscheinlichkeit p
σ(x)/ ρ
σ(Z) zu x ∈ Z für
-
Somit bezeichnet a ←
$ D
Z,σ einen Prozess des zufälligen Sampling eines Werts d E Z gemäß der diskreten Gaußschen Verteilung D
Z,σ, und
zeigt einen Prozess des zufälligen Sampling eines Polynoms a ∈ R
q der Dimension n an, bei dem die Koeffizienten unabhängig und gemäß der diskreten Gaußschen Verteilung D
Z,σ verteilt sind.
-
Ein Sampling-Gerät, das Werte gemäß einer diskreten Gaußschen Verteilung erzeugt, kann durch Verwenden der Cumulative-Distribution-Function (CDF) oder einer Cumulative-Distribution-Table (CDT) oder mit (zum Beispiel hochpräzisen) Berechnungen realisiert werden.
-
Die Ausführung eines kryptografischen Schemas erfordert gewöhnlich 512 bis 4096 Samples von der Rausch- oder Fehlerverteilung für jede kryptografische Operation.
-
Eine beispielhafte Verteilung, die für Sampling-Zwecke verwendet werden kann, ist die Binomialverteilung ψ
k. Ein Sample von dieser Binomialverteilung ψ
k kann erzeugt werden durch Berechnung
worin
zufällige Bits sind.
-
Somit bezeichnet a ←$ ψk einen Prozess des zufälligen Sampling eines Wertes d E Z gemäß der Binomialverteilung ψk.
-
Ferner bezeichnet
einen Prozess des zufälligen Sampling eines Polynoms a ∈
-
Rq einer Dimension n, wobei die Koeffizienten unabhängig und gemäß der Binomialverteilung ψk verteilt sind.
-
Die Standardabweichung der Binomialverteilung ist
und die Varianz beträgt k/2. Ein alternativer Ansatz zum Sampling von der Binomialverteilung ψ
k ist das Berechnen
wobei b
i ∈ {0,1} zufällige Bits sind.
-
Mathematische Probleme an Gittern
-
Die Sicherheit von gitterbasierten Kryptosystemen kann auf bestimmten Problemen basieren oder damit zusammenhängen. Solche spezifischen Probleme sind:
- - die Learning-With-Errors (LWE) -Probleme;
- - 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 in dem Ring Rq = Zq [X] / (Xn+1) für n als eine ganzzahlige Potenz von 2 und q als eine ganze Zahl Folgendes:
- Der geheime Vektor s ∈ Rq basiert auf einer Verteilung ϑ1, der Fehlervektor e basiert auf einer Verteilung ϑ2, wobei die Verteilung ϑ1 dieselbe sein kann wie die Verteilung ϑ2
-
Der Vektor a ∈ Rq mit gleichmäßigen Koeffizienten in Zq basiert auf einer gleichmäßigen Verteilung (daher wird er auch bezeichnet als „gleichmäßiger Vektor“).
-
Ein Angreifer möchte den geheimen Vektor s extrahieren, wenn der gleichmäßige Vektor a sowie das Ergebnis b = a · s + e gegeben ist.
-
Dies ist schwierig, wenn der geheime Vektor s und/oder der Fehlervektor e einem vordefinierten Verteilungsdesign folgen und daher, wenn die Vektoren s und/oder e auf eine effiziente Weise erzeugt werden. Auch kann die Erzeugung dieser Vektoren s und/oder e gegen physikalische Angriffe auf eine Chipkarte abgehärtet werden.
-
Eine Chipkarte (oder Smartcard) kann jegliches physikalische Gerät sein, das zur Durchführung einer kryptografischen Funktion angeordnet ist. Die Chipkarte kann daher insbesondere eine Halbleiterschaltung umfassen.
-
Es ist eine Option, dass der geheime Vektor s fest ist, wodurch gleichmäßige Vektoren a und Fehlervektoren e gemäß dem bestimmten Verteilungsdesign erzeugt werden.
-
Dennoch hat der Angreifer Schwierigkeiten, den festen geheimen Vektor s von mehreren Samples von Vektoren a und b abzuleiten.
-
Das RLWE-Problem übersetzt das LWE-Problem in die Ringeinstellung. Die Schwierigkeit von RLWE basiert auf der Worst-Case-Schwierigkeit von Kurzvektorproblemen auf idealen Gittern, die eine Unterklasse von Standardgittern sind. Das RLWE-Problem hat auch ein Entscheidungsproblem (entscheiden, ob ein Sample a, b von der RLWE-Verteilung oder der Gleichmäßigkeit stammt), das der Suchversion entspricht.
-
Somit kann, wenn der Angreifer bestimmen kann, dass das Sample b gleichmäßig oder gemäß der RLWE-Verteilung erzeugt ist, die Sicherheit des Systems beeinträchtigt werden.
-
Ein Sampling des Geheimnisses s ∈ Rq von der gleichmäßigen Verteilung U(Rq) ist möglich. Vorteilhafterweise kann das Sampling jedoch auf der Verteilung ϑ basieren.
-
Operationen in der standardmäßigen gitterbasierten Kryptografie umfassen Matrix-Matrix-Multiplikationen, Matrix-Vektor-Multiplikationen oder Vektoradditionen und - Subtraktionen, wobei Koeffizienten Werte in dem Ring von Ganzzahlen modulo q sind.
-
Verfahren zur Formbarkeitsprüfung in der gitterbasierten Kryptografie Technische Sicherheitseigenschaften von Public-Key-Encryption (PKE) und Key-Encapsulation-Mechanisms (KEM) sind Ununterscheidbarkeit bei ausgewähltem Klartextangriff (IND-CPA) oder Ununterscheidbarkeit bei adaptiv ausgewähltem Chiffretextangriff (IND-CCA2). Der IND-CPA-Sicherheitsbegriff ist ein grundlegender Sicherheitsbegriff.
-
Dies bedeutet jedoch, dass das IND-CPA-Angriffsmodell die Interaktion des Angreifers mit einem Entschlüsselungsorakel nicht berücksichtigt. Mit anderen Worten, dieses IND-CPA-Angriffsmodell arbeitet nur, wenn ein Angreifer keinen Zugriff auf das Entschlüsselungsorakel hat, was unglücklicherweise nicht immer der Fall ist. Zum Beispiel kann in Szenarien, in denen Chipkarten verwendet werden, in denen der private Schlüssel auf der Chipkarte gespeichert ist, die Chipkarte als ein Entschlüsselungsorakel betrachtet werden, und eine solche Chipkarte kann für den Angreifer zugänglich sein. Es sollte jedoch sichergestellt werden, dass ein geheimer Schlüssel, der auf der Chipkarte gespeichert und für Verarbeitungszwecke verwendet wird, für den Angreifer nicht zugänglich ist.
-
1 zeigt einen bekannten Ansatz zum Transformieren einer CPA-sicheren PKE oder eines KEM in CCA-sichere Varianten unter Verwendung einer Fujisaki-Okamoto (FO) -Transformation (siehe [OSPG18]).
-
1 umfasst kryptografische Einheit 101 (auch bezeichnet als Empfänger) für Entschlüsselungszwecke. Die kryptografische Einheit 101 umfasst Vergleichsfunktion 106, Neuverschlüsselungsfunktion 107 und Entschlüsselungsfunktion 108. Die kryptografische Einheit 101 hat auch Zugriff auf geheimen Schlüssel 104, der öffentlichen Schlüssel 105 umfasst. Chiffretext 102 wird der kryptografischen Einheit 101 zugeführt und (im Falle einer erfolgreichen Entschlüsselung) in Nachricht 103 transformiert.
-
Die Idee der FO-Transformation besteht darin, das grundlegende CPA-sichere Verschlüsselungsschema mit öffentlichem Schlüssel deterministisch zu machen, wobei alle Operationen Zufälligkeit erfordern. Eine solche Zufälligkeit wird von einem Startwert abgeleitet. Während der CCA-sicheren Verschlüsselung mit öffentlichem Schlüssel wird der zufällige Startwert auch als Nachricht verschlüsselt oder kann von der Nachricht des CPA-sicheren Verschlüsselungsschemas mit öffentlichem Schlüssel abgeleitet und an den Empfänger gesendet werden.
-
Der Empfänger, das heißt die kryptografische Einheit 101, kann dann den privaten Schlüssel (das heißt den geheimen Schlüssel 104) verwenden, um den Startwert zu entschlüsseln. Um eine Manipulation des Chiffretextes 102 (das heißt einen ausgewählten Chiffretextangriff) zu verhindern, verwendet der Empfänger 101 den Startwert, um eine Neuverschlüsselung über die Neuverschlüsselungsfunktion 107 auszuführen. Die Ausgabe der Neuverschlüsselung wird durch die Vergleichsfunktion 106 mit dem empfangenen Chiffretext 102 verglichen. Dies stellt sicher, dass nur nicht manipulierte Chiffretexte 102 akzeptiert werden.
-
Die Kontrolle des Angreifers über den Startwert und andere Werte wird durch die Verwendung von Hash-Funktionen (modelliert als zufällige Orakel) beschränkt, und eine Ausgabe solcher Hash-Funktionen wird auch verwendet, um die tatsächliche Nutzlast (normalerweise eine kurze Nachricht oder ein Schlüssel von 128 bis 256-bit Länge) zu maskieren.
-
Der Nachteil der FO-Transformation ist jedoch, dass sie das Berechnen der Neuverschlüsselung erfordert. Dies bedeutet, dass der geheime Schlüssel 104 den öffentlichen Schlüssel 105 oder jegliche anderen Informationen enthalten muss, die ausreichen, um den öffentlichen Schlüssel neu zu berechnen. Dies erfordert zusätzliche Berechnungen und erhöht die Größe des geheimen Schlüssels 104. Zusätzlich ist die Neuverschlüsselung 107 eine kostspielige Operation und schwer gegen Seitenkanalangriffe zu schützen (siehe [OSPG18]).
-
Hierin beschriebene Beispiele stellen einen anderen Weg bereit, die Integrität des Chiffretextes sicherzustellen, insbesondere bei gitterbasierten PKE oder KEM auf RLWE-, MLWE- oder LWE-Basis. Während der Schlüsselerzeugung wird ein geheimer Schlüssel der CCA-sicheren PKE auf eine Weise erzeugt, dass er den geheimen Schlüssel der CPA-sicheren PKE und einen Prüfwert umfasst, der als ein Hash von Komponenten des öffentlichen Schlüssels betrachtet werden kann.
-
2 zeigt ein beispielhaftes Blockdiagramm, um diesen Ansatz durch Verwenden von privatem Schlüssel (geheimem Schlüssel 204) und von Prüfwert 205 für Entschlüsselungszwecke in kryptografischer Einheit 201 (auch bezeichnet als Empfänger) zu visualisieren. Die kryptografische Einheit 201 umfasst Funktion 206, die das Erzeugen des Prüfwerts und das Durchführen eines Vergleichs unterstützt. Die kryptografische Einheit 201 umfasst auch Entschlüsselungsfunktion 207. Die verschiedenen Funktionen 206, 207 können als einzelne Funktionen oder als eine kombinierte Funktion realisiert werden; sie können auf einer oder mehreren Hardware-Entitäten implementiert sein.
-
Chiffretext 202 wird der kryptografischen Einheit 201 zugeführt und (im Fall einer erfolgreichen Entschlüsselung) in Nachricht 203 zur weiteren Verarbeitung transformiert.
-
Während der CCA-sicheren Entschlüsselung kann dieser Prüfwert 205 verwendet werden, um sicherzustellen, dass der Chiffretext 202 nicht manipuliert wurde, indem überprüft wird, dass die richtigen Komponenten des öffentlichen Schlüssels in dem Chiffretext 202 vorhanden sind (das heißt indem der Hash der extrahierten Komponenten des öffentlichen Schlüssels verglichen wird mit dem durch eine Funktion f() erzeugten Prüfwert).
-
Der Vorteil dieses Ansatzes ist, dass der geheime Schlüssel der CCA-sicheren PKE keinen großen öffentlichen Schlüssel enthalten muss, und dass keine Erzeugung eines öffentlichen Schlüssels basierend auf einem kleinen Startwert erforderlich ist, was an sich Leistung kostet und das Risiko erhöht, dass physikalische Angriffe (zum Beispiel Seitenkanalangriffe) erfolgreich sind.
-
Beispielhafte CPA- und CCA-sichere gitterbasierte Public-Key-Encryption (PKE) und Key-Exchange-Scheme (KEM)
-
Die Eigenschaften des RLWE-Problems können verwendet werden, um ein semantisch sicheres Verschlüsselungsschema mit öffentlichem Schlüssel mit einer Reduktion auf Entscheidungs-RLWE zu realisieren. In der einfachen Version wird somit nur die Sicherheit gegen ausgewählte Klartextangriffe (CPA) erreicht und als ein gitterbasiertes Kryptosystem kategorisiert, da die Schwierigkeit auf der Schwierigkeit des RLWE-Problems basiert, die selbst auf der Schwierigkeit bestimmter Gitterprobleme basiert.
-
Eine beispielhafte Idee des Schemas ist, den geheimen Schlüssel innerhalb eines RLWE-Samples, das der öffentliche Schlüssel p ∈ R
q wird, zu verbergen
wobei a ein zufällig erzeugtes öffentliches Polynom ist und r
1, r
2 ∈ R
q Rauschpolynome sind.
-
Ferner wird die Nachricht mit einem RLWE-Sample maskiert
wobei e
1, e
3 ∈ R
q Rauschpolynome sind.
-
Somit erscheinen der öffentliche Schlüssel und jeder Chiffretext für einen passiven Gegner als zufällig, und es wird eine semantische Sicherheit erreicht.
-
Es wird auch auf LPR10 verwiesen, wie in [LPR10A] und [LPR10B] beschrieben.
-
Zum Beispiel können die folgenden Prozeduren verwendet werden:
-
Schlüsselerzeugung:
-
RLWE.CPA. Gen:
- 1. seedA ←$ {0,1}256
- 2. Auswählen a ← GenA(seedA)
- 3. r1 ←$ ϑ
- 4. r2 ←$ ϑ
- 5. Öffentlicher Schlüssel (pk): (seedA, p = r1 - a · r2)
- 6. Geheimer Schlüssel: (sk): r2
- 7. Rückgabe pk=(seedA,p), sk= r2
-
Die Schlüsselerzeugungsprozedur RLWE.CPA.Gen umfasst die deterministische Erzeugung des gleichmäßig zufälligen Polynoms a ← GenA(seedA) mit a ∈ Rq von einem zufälligen binären Startwert seedA, für den eine Erzeugungsfunktion GenA verwendet wird.
-
Diese Erzeugungsfunktion GenA führt einen Schritt a ←$ U(Rq) auf eine deterministische Weise aus, zum Beispiel durch Verwendung einer erweiterbaren Ausgabefunktion (XOF) wie SHA3 und Zurückweisungs-Sampling. Der Startwert seedA ist eine gleichmäßig zufällige Bit-Folge von 256 Bit, und sein Sampling wird bezeichnet als seedA ←$ {0,1}256. Im Allgemeinen kann das Polynom a während der Schlüsselerzeugung basierend auf einem Startwert (als Teil jedes öffentlichen Schlüssels) ausgewählt werden, oder es kann als eine globale Konstante betrachtet werden. In dem hierin gezeigten Beispiel umfasst der öffentliche Schlüssel pk den seedA und das Polynom p ∈ Rq.
-
Für weitere Details zu einer spezifischen Beschreibung der GenA Funktion wird auf [NewHopeNistl7] verwiesen.
-
Dies ist eine Verbesserung, um die Größe des öffentlichen Schlüssels pk zu reduzieren und das Sicherheitsniveau zu erhöhen. Aufgrund von seedA ist es nicht erforderlich, das Polynom a zu einem Teil des öffentlichen Schlüssels zu machen, was zu einem kleineren öffentlichen Schlüssel führt. Durch Sampling von seedA wird auch sichergestellt, dass für jeden frisch erzeugten öffentlichen Schlüssel ein neu erzeugtes Polynom a verwendet wird. Dies kann Angriffe verhindern, die das Verwenden desselben Werts für das Polynom a in mehreren öffentlichen Schlüsseln ausnutzen würden.
-
Zusätzlich wird ein zufälliges Sampling von zwei Rauschpolynomen r1, r2 ∈ Rq von der Rausch-/Fehlerverteilung ϑ durchgeführt.
-
Das Rauschpolynom r1 darf nur während der Schlüsselerzeugung verwendet werden, und es kann anschließend verworfen werden, während das Rauschpolynom r2 dem geheimen Schlüssel entsprechen kann.
-
Eine Extraktion des geheimen Schlüssels r2 von dem öffentlichen Schlüssel pk wird als äquivalent zu der Lösung des RLWE-Problems angesehen.
-
Verschlüsselung:
-
RLWE.CPA.Enc(pk = (seedA, p), m ∈ {0,1}n, seedRand)
- 1. e1 ←$ SampleNoiseϑ(seedRand, 1)
- 2. e2 ←$ SampleNoiseϑ (seedRand,2)
- 3. e3 ←$ SampleNoiseϑ (seedRand, 3)
- 4. a ← GenA(seedA)
- 5. m = RLWEencode(m)
- 6. Rückgabe c = (c1 = a · e1 + e2, c2 = p · e1 + e3 + m)
-
Die Verschlüsselungsprozedur RLWE.CPA.Enc umfasst das Sampling von drei Rauschpolynomen e1, e2, e3 von der Fehlerverteilung ϑ.
-
Dieser Schritt wird auf eine deterministische Weise durch Verwenden der Funktion SampleNoiseϑ (seedRand, i) ausgeführt, die ein Polynom in Rq ausgibt, verteilt entsprechend der Fehlerverteilung ϑ basierend auf dem Startwert seedRand und dem Auswahlparameter i. Mit i = {1,2,3} können unterschiedliche und rechnerisch unabhängige Ausgabewerte von einem Startwert seedRand abgeleitet werden. Es ist eine Verallgemeinerung einer in [OSPG18] beschriebenen SampleNoisePoly-Funktion für verschiedene Verteilungen. Es wird auch auf [NewHopeNist17] verwiesen, wo das PolyBitRev (Sample(Noiseseed,0)) verwendet werden kann, um SampleNoiseϑ (seedRand,1) zu realisieren. Anwendbare Fehlerverteilungen können die diskrete Gaußsche Verteilung DZ,σ oder die Binomialverteilung ψk sein.
-
Um die Nachricht m (die eine binäre Zeichenfolge sein kann) in dem Chiffretext zu verbergen, wird die Nachricht m wie m ∈ Rq durch die Funktion RLWEencode codiert, zum Beispiel durch Verwenden einer additiven Schwellenwertcodierung (wie in [OSPG18] als „LWEEncode“ bezeichnet) und zu p · e1 + e3 ∈ Rq hinzugefügt.
-
Der Chiffretext umfasst c1 ∈ Rq und c2 ∈ Rq, was grundsätzlich beide RLWE-Samples in Hermite-Normalform sein kann.
-
Die Sicherheit gegen ausgewählte Klartextangriffe (CPA) folgt von der Tatsache, dass alles, was durch den Verschlüsselungsalgorithmus zurückgegeben wird, als (von außen) nicht von zufällig unterscheidbar erscheint.
-
Entschlüsselung:
-
RLWE.CPA.Dec(c = (c1, c2), sk = r2):
- 1. Rückgabe RLWEdecode(c1 · r2 + c2)
-
Die Entschlüsselungsprozedur RLWE.CPA.Dec erfordert Kenntnisse des geheimen Schlüssels r2 E Rq, da andernfalls der große Term r2 a e1 E Rq beim Berechnen von c1r2 + c2 nicht eliminiert werden kann.
-
Die Funktion RLWEdecode wird in [OSPG18] als eine Funktion „LWEDecode“ beschrieben. Während der Entschlüsselung ist die RLWEdecode-Funktion erforderlich, da die n-bit-Nachricht
m nach der Berechnung von c
1r
2 + c
2 eine geringfügige Menge an Rauschen (das heißt r
2e
2+r
1e
1 + e
3) enthält, was andernfalls das Wiederabrufen der Nachricht m nicht ermöglichen würde:
-
Das Schema wird gewöhnlich in dem Polynomring R
q instanziiert, aber die Verwendung anderer Ringe ist ebenfalls möglich. Mögliche Auswahlen für Rausch- oder Fehlerverteilungen ϑ sind
oder
-
Das Rauschen kann relativ klein sein, da alle Rauschterme von der Fehlerverteilung ϑ gesampled werden können. Daher kann dieses verbleibende Rauschen durch Verwenden von Ansätzen wie (additiver) Schwellenwertcodierung für einzelne Koeffizienten gehandhabt werden.
-
Beispielhafte Parameter zum Instanziieren des Schemas sind:
- -
dem ungefähr 100-Bit-Sicherheit zugeschrieben wird;
- -
dem ungefähr 128-Bit-Sicherheit zugeschrieben wird; und
- -
dem ungefähr 256-Bit-Sicherheit zugeschrieben wird.
-
Verwendung des Prüfwerts
-
Gemäß einer Ausführungsform kann während der Schlüsselerzeugung ein Prüfwert β erzeugt werden, sodass ein geheimer Schlüssel sk bestimmt wird als
mit β = Hash(a∥p), wobei || eine Verkettung zwischen a ∈ R
q und p ∈ R
q anzeigt. Hash(), H(), H'() und G() bezeichnen voneinander unabhängige Hash-Funktionen.
-
Die Erzeugungs- (RLWE.CCA.Gen), Verschlüsselungs- (RLWE.CCA.EncNew) und Entschlüsselungs (RLWE.CCA.DecNew) -Funktionen können wie folgt realisiert werden:
- RLWE.CCA.Gen:
- 1. seedA ←$ {0,1}256
- 2. Auswählen a ← GenA(seedA)
- 3. r1 ←$ ϑ
- 4. r2 ←$ ϑ
- 5. Öffentlicher Schlüssel (pk): (seedA, p = r1 - a · r2)
- 6. Geheimer Schlüssel: (sk): r2
- 7. Rückgabe pk=(seedA, p), sk = (r2, β = Hash (a ∥p)).
- RLWE. CCA. EncNew(seedA, p, mCCA ∈ (0,1}L):
- 1. Auswählen einer Nonce v ←$ {0,1}L
- 2. Berechnen von c1, c2 =RLWE.CPA.EncNew((seedA, p), v, H(v∥ mCCA)) durch Verwenden einer Hash-Funktion H. Wenn RLWE.CPA.EncNew FAIL zurückgibt, Neustart durch Springen zu Schritt 1
- 3. Berechnen von c3 = G(v) xor mCCA durch Verwenden einer Hash-Funktion G
- 4. Berechnen von c4 = H'(v) durch Verwenden einer Hash-Funktion H' (die sich von der Hash-Funktion H unterscheidet)
- 5. Rückgabe c1, c2, c3, c4
-
In der Funktion RLWE. CCA. EncNew ist der Startwert, der durch Verwenden des CPA-Sicherheitsschemas RLWE.CPA.EncNew verschlüsselt wird, eine zufällige Bit-Folge v , und ein interner Pseudozufallsgenerator (PRNG) der Funktion RLWE.CPA.EncNew wird initialisiert mit
-
Die tatsächliche Nachricht, die durch den Benutzer während der Verschlüsselung ausgewählt wird, ist mCCA. Sie wird durch den Wert c3 geschützt, da sie Exclusive-Or („xor-ed“) kombiniert ist mit G(v). Die in der RLWE. CCA. EncNew Funktion aufgerufene Funktion RLWE.CPA.EncNew kann wie folgt definiert werden:
- RLWE.CPA.EncNew(pk = (seedA, p), m ∈. {0,1}n, seedRand)
- 1. e1 ←$ SampleNoiseϑ(seedRand, 1)
- 2. Überprüfen, ob e1 invertierbar ist und wenn e1 nicht invertierbar ist Rückgabe von FAIL
- 3. e2 +-$ SampleNoiseϑ (seedRand,2)
- 4. e3 ←$ SampleNoiseϑ (seedRand,3)
- 5. a <- GenA(seedA)
- 6. m = RLWEencode(m)
- 7. Rückgabe c = (c1 = a · e1 + e2, c2 = p · e1 + e3 + m)
-
Der Wert e
1 E R
q in der Funktion RLWE.CPA.EncNew wird so gesampled, dass das inverse
E R
q existiert, das heißt dass
Andernfalls gibt die Funktion RLWE.CPA.EncNew FAIL zurück (was auf einen Fehler hinweist) und die Funktion RLWE. CCA. EncNew wird mit unterschiedlichen Auswahlmöglichkeiten für seedRand gestartet, bis e
1 die Invertierbarkeitsbedingung erfüllt.
-
RLWE. CCA. DecNew(r2, β, c1, c2, c3, c4):
- 1. Berechnen von v' = m'CPA = RLWE. CPA. Dec(c1, c2, r2)
- 2. Berechnen von m'CCA = G(v') xor c3 durch Verwenden der Hash-Funktion G
- 3. seedRand = H(v' ∥ m'CCA)) durch Verwenden der Hash-Funktion H
- 4. e1 ←$ SampleNoiseϑ(seedRand, 1)
- 5. e2 ←$ SampleNoiseϑ (seedRand,2)
- 6. e3 ←$ SampleNoiseϑ (seedRand,3)
- 7.
- 8. p' = (c2 - RLWEencode(v') -
- 9. Berechnen von
durch Verwenden der Hash-Funktion H'
- 10. Überprüfung, ob Hash (a'∥p') == β
- 11. Überprüfung, ob
- 12. Wenn beide Bedingungen in Nr.7 und Nr.8 oben wahr sind, Ausgabe m'cca andernfalls Ausgabe Fehler
-
Zu Entschlüsselungszwecken werden die Rauschpolynome e
1, e
2, e
3 ∈ R
q erzeugt, wie in Bezug auf die Funktion RLWE.CPA.Enc basierend auf
-
Dann wird ein Kandidatenwert a' ∈ R
q berechnet als
und ein Kandidatenwert p' ∈ R
q wird berechnet als
-
Beide Kandidatenwerte a' und p' werden verkettet, gehasht und mit dem Prüfwert β verglichen, sodass die Nachricht m'
cca nur zurückgegeben wird, wenn die folgende Bedingung erfüllt ist:
-
3 zeigt ein schematisches Flussdiagramm, das Schritte 301 bis 305 umfasst und die Lösung zusammenfasst, die den Prüfwert β einbezieht.
-
Schritt 301: Ein Chiffretext c wird an einem Empfänger, zum Beispiel einer kryptografischen Einheit, erhalten. Der Chiffretext c umfasst c* und c**. Außerdem hat der Empfänger Zugriff auf den geheimen Schlüssel sk und den Prüfwert β. Der Empfänger hat auch Zugriff auf eine Erzeugungsfunktion f( ), die das Bestimmen des Prüfwerts β von dem öffentlichen Schlüssel pk ermöglicht.
-
Schritt
302: Durch Verwenden des geheimen Schlüssels sk entschlüsselt der Empfänger den Chiffretext c*, um einen Startwert zu erhalten:
Dies entspricht grundsätzlich dem Schritt 1 des oben gezeigten RLWE.CCA.DecNew-Algorithmus.
-
Schritt 303: Ein Kandidat für einen öffentlichen Schlüssel pk' wird von dem Chiffretext extrahiert. Dies wird erreicht, indem eine Verschlüsselungsoperation angewendet wird, die die umgekehrte Entschlüsselung wie in Schritt 302 verwendet umfasst.
Dies entspricht grundsätzlich dem Schritt 8 des oben gezeigten RLWE.CCA.DecNew-Algorithmus.
-
Schritt
304: Der Kandidat für einen öffentlichen Schlüssel pk' wird in die Erzeugungsfunktion f( ) eingegeben, um einen Prüfwertkandidaten zu bestimmen
Der Prüfwertkandidat wird mit dem Prüfwert verglichen, das heißt
Wenn dies wahr ist, könnte die Ausgabenachricht als korrekt akzeptiert werden; wenn dies falsch ist, kann eine Fehlerbenachrichtigung ausgegeben werden.
Dies entspricht grundsätzlich dem Schritt 10 des oben gezeigten RLWE.CCA.DecNew-Algorithmus.
-
Schritt 305: Als eine Option kann eine Integritätsprüfung der Nachricht durch Verwenden des Startwerts und der Chiffretextkomponente c** durchgeführt werden. Dies kann unter Verwendung mindestens einer Hash-Funktion gemacht werden.
Wenn die Integritätsprüfung erfolgreich war, kann die Nachricht ausgegeben oder für weitere Verarbeitung verwendet werden.
Wenn die Integritätsprüfung nicht erfolgreich war, kann eine Fehlerbenachrichtigung ausgegeben werden, und die Nachricht wird als ungültig betrachtet.
Dies entspricht grundsätzlich den Schritten 2, 9 und 11 des oben gezeigten RLWE.CCA.DecNew-Algorithmus.
-
4 zeigt ein beispielhaftes Blockdiagramm, das Puffer 401 umfasst, der eine Kapselungs-/Entkapselungsfunktionalität bereitstellt, bei der binäre Zeichenfolgen auf eine portierbare Weise als mathematische Objekte interpretiert werden. Der Puffer 401 ist mit einem Systembus gekoppelt, der den Chiffretext (c1, c2, c3, c4) bereitstellen kann, und der zur Übertragung der entschlüsselten Nachricht m verwendet wird.
-
Der Puffer 401 ist mit Komparator 402, Rausch-Sampler 403, Hash-Einheit 404 (die geeignet ist, Hash-Werte basierend auf mindestens einer Hash-Funktion bereitzustellen), Polynom-Arithmetikeinheit 405 und Codierer/Decodierer 406 gekoppelt. Die Einheiten 402 bis 406 können in Software und/oder Hardware realisiert werden. Diese Einheiten 402 bis 406 können separat implementiert werden, oder sie können zumindest teilweise kombiniert werden.
-
Vorteile und weitere Ausführungsformen und Optionen
-
Vorteilhafterweise ist in der Funktion RLWE. CCA. DecNew der Prüfwert β die Ausgabe einer Standard-Hash-Funktion und kann somit von 32 Byte bis 64 Byte reichen.
-
Verwendung der NTT
-
Die hierin beschriebene Lösung kann durch Verwenden der NTT optimiert werden. Eine „-“ -Schreibweise kann Elemente in der NTT-Darstellung bezeichnen und annehmen, dass r
2 ∈ R
q und c
1 E R
q in der NTT-Darstellung gespeichert oder übertragen werden, und dass der Prüfwert β während der Schlüsselerzeugung berechnet wird als
für ã = NTT(a) und p̃ = NTT(p).
-
Die Verwendung von NTT ist eine bekannte Technik, wie zum Beispiel in [OSPG18] offenbart. Sie könnte auf das hierin angesprochene Konzept wie folgt angewendet werden:
- RLWE. CCA. DecNewNTT(r̃2, β, c̃1, c2, c3, c4):
- 1. Berechnen von v' = m'CPA = RLWEdecode(INTT(c̃1· r̃2) + c2)
- 2. Berechnen von m'CCA = G(v') xor c3 durch Verwenden der Hash-Funktion G
- 3.
durch Verwenden der Hash-Funktion H
- 4. ẽ1 ←$ NTT(SampleNoiseϑ(seedRand,1))
- 5. ẽ2 ←$ NTT(SampleNoiseϑ(seedRand,2))
- 6. e3 ←$ SampleNoiseϑ (seedRand,3)
- 7.
- 8.
- 9. Berechnen von
durch Verwenden der Hash-Funktion H'
- 10. Überprüfung, ob Hash (ã'∥p̃') == β
- 11. Überprüfung, ob
- 12. Wenn beide Bedingungen in Nr.10 und Nr.11 oben wahr sind, Ausgabe m'cca andernfalls Ausgabe Fehler
-
Die Verwendung von NTT ermöglicht eine effiziente Weise zur Berechnung der inversen
was während der CCA-sicheren Verschlüsselung verwendet werden kann, um die Invertierbarkeit von ẽ
1 in der RLWE. CCA. EncNewNTT-Funktion, die auch die NTT verwenden kann, wie in [OSPG18] beschrieben, zu prüfen.
-
Seitenkanalschutz
-
In [OSPG18] werden verschiedene Verfahren zum Seitenkanalschutz von gitterbasierter Kryptografie beschrieben.
-
Der Seitenkanalschutz kann auch in den hierin beschriebenen Ansatz integriert werden, um eine effiziente Lösung für den Formbarkeitsschutz bereitzustellen.
-
Die gemeinsame Operation der Hash-Funktionen, des Codierers, des Decodierers und des Rausch-Samplers von [OSPG18] kann verwendet werden. Die kritischen Operationen
und
wobei interne Werte außer c
1, c
2 sensibel (zum Beispiel sicherheitskritisch) sind, können wie folgt randomisiert werden:
- 1.
AdditiveSharedSampleNoiseϑ(seedRand,1)
- 2.
AdditiveSharedSampleNoiseϑ(seedRand,2)
- 3.
AdditiveSharedSampleNoiseϑ(seedRand,3)
- 4.
- 5.
- 6. m*, m** = AdditiveSharedRLWEencode(v'*,v'**)
- 7.
- 8.
- 9. SharedHash(a'*∥a'**,p'*∥p'**) == β
-
Die Funktion AdditiveSharedSampleNoise
ϑ gibt zwei Werte
aus, die zufällige additive/arithmetische Anteile des Werts e
1 sind, sodass
Es wird auf [OSPG18] verwiesen, in dem ein solcher maskierter Sampler in Abschnitt 3.3.4 beschrieben ist.
-
Die Funktion AdditiveSharedRLWEencode nimmt zwei gemeinsam genutzte boolesche Werte v'*, v'**, sodass v = v'*xor v'** und gibt additive/arithmetische Anteile der codierten Nachricht aus.
-
Die Subtraktion
-
und die Subtraktion von
korrigiert einen Fehler, der durch die Maskierung eingeführt wurde, sodass die additiv gemeinsam genutzten Werte durch eine Hash-Funktion, die hinzugefügte gemeinsam genutzte Werte als Eingabe nimmt, verarbeitet werden können und dann sicher mit dem Prüfwert β verglichen werden können.
-
Eine andere Option zum Schutz der Berechnung wäre das Bereitstellen einer multiplikativen Maskierung. Zu Zwecken der Effizienzverbesserung kann die NTT angewendet werden.
-
Hierin beschriebene Beispiele können für Varianten des Lyubashevsky, Peikert, Regev 2010 -Kryptosystems oder andere Schemata wie NewHope oder Kyber anwendbar sein. Zusätzlich sind auch Szenarien möglich, die eine Kombination mit Schemata wie LWEbasiertem Frodo verwenden.
-
Implementierungsbeispiele
-
5 zeigt Verarbeitungsgerät 500, das CPU 501, RAM 502, nichtflüchtigen Speicher 503 (NVM), Kryptomodul 504, Analogmodul 506, Eingabe-/Ausgabe-Schnittstelle 507 und Hardware-Zufallszahlengenerator 512 umfasst.
-
In diesem Beispiel hat die CPU 501 über gemeinsam genutzten Bus 505, mit dem jedes Kryptomodul 504 verbunden ist, Zugriff auf mindestens ein Kryptomodul 504. Jedes Kryptomodul 504 kann insbesondere einen oder mehrere Kryptokerne umfassen, um bestimmte kryptografische Operationen auszuführen. Beispielhafte Kryptokerne sind:
- - AES-Kern 509,
- - SHA-Kern 510,
- - ECC-Kern 511, und
- - gitterbasierter Krypto (LBC) -Kern 508.
-
Der gitterbasierte Kryptokern 508 kann bereitgestellt werden, um die gitterbasierte Kryptografie zu beschleunigen.
-
Die CPU 501, der Hardware-Zufallszahlengenerator 512, der NVM 503, das Kryptomodul 504, der RAM 502 und die Eingabe-/Ausgabe-Schnittstelle 507 sind mit dem Bus 505 verbunden. Die Eingabe-/Ausgabe-Schnittstelle 507 kann Verbindung 514 mit anderen Geräten haben, die dem Verarbeitungsgerät 500 ähnlich sein können.
-
Das Kryptomodul 504 kann oder kann nicht mit Hardware-basierten Sicherheitsmerkmalen ausgestattet sein.
-
Das Analogmodul 506 wird über einen elektrischen Kontakt und/oder über ein elektromagnetisches Feld mit elektrischer Energie 513 beliefert. Diese Energie wird geliefert, um die Schaltung des Verarbeitungsgeräts 500 anzutreiben, und kann insbesondere der Eingabe-/Ausgabe-Schnittstelle ermöglichen, Verbindungen zu anderen Geräten über die Verbindung 514 zu initiieren und/oder aufrechtzuerhalten.
-
Der Bus 505 selbst kann maskiert oder klar sein. Anweisungen zum Verarbeiten der hierin beschriebenen Schritte können insbesondere in dem NVM 503 gespeichert und durch die CPU 501 verarbeitet werden. Die verarbeiteten Daten können in dem NVM 503 oder in dem RAM 502 gespeichert werden. Unterstützende Funktionen können durch die Kryptomodule 504 bereitgestellt werden (zum Beispiel Erweiterung von Pseudozufallsdaten). Zufallszahlen werden durch den Hardware-Zufallszahlengenerator 512 geliefert.
-
Schritte des hierin beschriebenen Verfahrens können ausschließlich oder zumindest teilweise an dem Kryptomodul 504, zum Beispiel an dem gitterbasierten Kryptokern 508, durchgeführt werden. Zum Beispiel können Anweisungen in dem gitterbasierten Kryptokern 508 gespeichert werden, oder sie können durch die CPU 501 über den Bus 505 bereitgestellt werden. Daten können lokal mit dem gitterbasierten Kryptokern 508 gespeichert werden. Es ist auch eine Option, dass die Daten vorübergehend in dem RAM 502 oder in dem NVM 503 gespeichert werden. Der gitterbasierte Kryptokern 508 kann auch andere Kryptomodule verwenden, um unterstützende Funktionen (zum Beispiel Erweiterung von Pseudozufallsdaten) bereitzustellen. Der gitterbasierte Kryptokern 508 kann auch einen Hardware-Zufallszahlengenerator oder ein Mittel zum Erzeugen physikalischer und/oder Software-Zufallszahlen umfassen.
-
Das Verarbeitungsgerät 500 kann eine Chipkarte sein, die durch direkten elektrischen Kontakt oder durch ein elektromagnetisches Feld mit Energie versorgt wird. Das Verarbeitungsgerät 500 kann eine feste Schaltung sein oder auf rekonfigurierbarer Hardware (zum Beispiel Field-Programmable-Gate-Array, FPGA) basieren. Das Verarbeitungsgerät 500 kann mit einem Personal-Computer, Mikrocontroller, FPGA oder einem Smartphone gekoppelt sein.
-
6 zeigt ein weiteres Beispiel von Verarbeitungsgerät 600. Das Verarbeitungsgerät 600 umfasst Hardware-Sicherheitsmodul 601, nichtflüchtigen Speicher (NVM) 608, Direktzugriffsspeicher (RAM) 609, Schnittstelle 610 zur Kommunikation mit anderen Geräten und Anwendungsprozessor 607, der mit dem Hardware-Sicherheitsmodul (HSM) 601, dem RAM 609, dem NVM 608 und der Schnittstelle 610 gekoppelt ist.
-
Das HSM 601 umfasst Steuerung 602, Hardware-Zufallszahlengenerator (HRNG) 606 und mindestens ein Kryptomodul 603. Das Kryptomodul 603 umfasst beispielhaft AES-Kern 604 und gitterbasierten Krypto (LBC) -Kern 605.
-
Gemäß einer Ausführungsform können das HSM 601 und der Anwendungsprozessor 607 auf demselben physikalischen Chip mit einer engen Kopplung hergestellt werden. Das HSM 601 liefert kryptografische Dienste und gesicherte Schlüsselspeicherung, während der Anwendungsprozessor rechenintensive Aufgaben (zum Beispiel Bilderkennung, Kommunikation, Motorsteuerung) ausführen kann. Das HSM 601 kann nur über eine definierte Schnittstelle zugänglich sein und wird als unabhängig von dem Rest des Systems betrachtet, auf eine Weise, dass eine Sicherheitsbeeinträchtigung des Anwendungsprozessors 607 nur begrenzten Einfluss auf die Sicherheit des HSM 601 hat. Das HSM 601 kann alle Aufgaben oder eine Teilmenge von Aufgaben ausführen, die in Bezug auf das Verarbeitungsgerät 600 beschrieben sind, indem es die Steuerung 602, den LBC 605 verwendet, beispielhaft unterstützt von einem AES 604 und dem HRNG 606. Es kann die hierin beschriebenen Prozeduren (zumindest teilweise) entweder durch eine interne Steuerung oder als CMOS-Schaltung gesteuert ausführen. Darüber hinaus kann auch der Anwendungsprozessor 607 die hierin beschriebenen Prozeduren (mindestens teilweise, zum Beispiel in Zusammenarbeit mit dem HSM 601) ausführen.
-
Das Verarbeitungsgerät 600 mit diesem Anwendungsprozessor 607 und HSM 601 kann als ein zentrales Kommunikationsportal oder eine (elektrische) Motorsteuereinheit in Pkw oder anderen Fahrzeugen verwendet werden.
-
In einem oder mehreren Beispielen können die hierin beschriebenen Funktionen mindestens teilweise in Hardware, wie zum Beispiel spezifischen Hardwarekomponenten, oder einem Prozessor implementiert sein. Allgemeiner können die Techniken in Hardware, Prozessoren, Software, Firmware oder jeglichen Kombination davon implementiert sein. Wenn sie in Software implementiert sind, können die Funktionen als eine oder mehrere Anweisungen oder ein Code auf einem computerlesbaren Medium gespeichert oder dahin übertragen und durch eine hardwarebasierte Verarbeitungseinheit ausgeführt werden. Computerlesbare Medien können computerlesbare Speicherungsmedien, die einem materiellen Medium, wie zum Beispiel Datenspeicherungsmedien, entsprechen, oder Kommunikationsmedien, einschließlich jeglichen Mediums, das die Übertragung eines Computerprogramms von einem Ort zu einem anderen erleichtert, zum Beispiel gemäß einem Kommunikationsprotokoll, beinhalten. Auf diese Weise können computerlesbare Medien im Allgemeinen (1) materiellen computerlesbaren Speicherungsmedien, die nichtflüchtig sind, oder (2) einem Kommunikationsmedium, wie zum Beispiel einem Signal oder einer Trägerwelle, entsprechen. Datenspeicherungsmedien können jegliche verfügbaren Medien sein, auf die ein oder mehrere Computer oder ein oder mehrere Prozessoren zugreifen können, um Anweisungen, Code und/oder Datenstrukturen zur Implementierung der in dieser Offenbarung beschriebenen Techniken wiederabzurufen. Ein Computerprogrammprodukt kann ein computerlesbares Medium beinhalten.
-
Beispielsweise, und nicht einschränkend, können solche computerlesbaren Speicherungsmedien RAM, ROM, EEPROM, CD-ROM oder eine andere Speicherung mit optische Disks, Speicherung mit magnetische Disks oder andere magnetische Speicherungsgeräte, einen Flash-Speicher oder jegliches andere Medium umfassen, das verwendet werden kann, um gewünschten Programmcode in der Form von Anweisungen oder Datenstrukturen zu speichern, und auf das ein Computer zugreifen kann. Auch wird jegliche Verbindung ordnungsgemäß als ein computerlesbares Medium, das heißt als ein computerlesbares Übertragungsmedium, bezeichnet. Wenn zum Beispiel Anweisungen von einer Website, einem Server oder einer anderen entfernt angeordneten Quelle durch Verwenden eines Koaxialkabels, Glasfaserkabels, verdrillten Doppelkabels, einer Digital-Subscriber-Line (DSL) oder drahtloser Technologien, wie zum Beispiel Infrarot, Funk und Mikrowelle, übertragen werden, dann sind die Koaxialkabel, Glasfaserkabel, verdrillten Doppelkabel, DSL oder drahtlosen Technologien, wie zum Beispiel Infrarot, Funk und Mikrowelle, in der Definition von Medium enthalten. Es sollte jedoch klargestellt werden, dass computerlesbare Speicherungsmedien und Datenspeicherungsmedien keine Verbindungen, Trägerwellen, Signale oder andere transiente Medien beinhalten, sondern stattdessen auf nicht transiente, materielle Speicherungsmedien gerichtet sind. Disk und Disc, wie hierin verwendet, umfassen Compact-Disc (CD), Laserdisc, optische Disc, Digital-Versatile-Disc (DVD), Floppy Disk und Blu-ray-Disc, wobei Disks normalerweise Daten magnetisch wiedergeben, während Discs Daten optisch mit Lasern wiedergeben. Kombinationen der oben Genannten sollten auch in dem Umfang computerlesbarer Medien enthalten sein.
-
Anweisungen können durch einen oder mehrere Prozessoren, wie zum Beispiel eine oder mehrere Central-Processing-Units (CPU), Digital-Signal-Processors (DSP), Allzweck-Mikroprozessoren, Application-Specific-Integrated-Circuits (ASIC), Field-Programmable-Logic-Arrays (FPGA) oder andere äquivalente integrierte oder diskrete Logikschaltungen, ausgeführt werden. Dementsprechend kann sich der Begriff „Prozessor“, wie hierin verwendet, auf jegliche der vorstehenden Strukturen oder jegliche andere Struktur beziehen, die zur Implementierung der hierin beschriebenen Techniken geeignet ist. Zusätzlich kann in einigen Aspekten die hierin beschriebene Funktionalität innerhalb fest zugeordneter Hardware- und/oder Softwaremodule bereitgestellt werden, die zum Codieren und Decodieren ausgelegt oder in einem kombinierten Codec enthalten sind. Die Techniken könnten auch vollständig in einer oder mehreren Schaltungen oder Logikelementen implementiert sein.
-
Die Techniken dieser Offenbarung können in einer breiten Palette von Geräten oder Vorrichtungen implementiert sein, einschließlich eines drahtlosen Handgeräts, einer integrierten Schaltung (IC) oder eines Satzes von IC (zum Beispiel eines Chipsatzes). In dieser Offenbarung werden verschiedene Komponenten, Module oder Einheiten beschrieben, um funktionale Aspekte von Geräten hervorzuheben, die dazu ausgelegt sind, die offenbarten Techniken auszuführen, erfordern jedoch nicht notwendigerweise die Realisierung durch verschiedene Hardwareeinheiten. Vielmehr können, wie oben beschrieben, verschiedene Einheiten in einer einzelnen Hardwareeinheit kombiniert oder durch eine Sammlung interoperativer Hardwareeinheiten, einschließlich eines oder mehrerer Prozessoren, wie oben beschrieben, in Verbindung mit geeigneter Software und/oder Firmware bereitgestellt werden.
-
Obwohl verschiedene beispielhafte Ausführungsformen der Erfindung offenbart wurden, wird für Fachleute erkennbar sein, dass verschiedene Änderungen und Modifikationen gemacht werden können, die einige der Vorteile der Erfindung erreichen, ohne von dem Geist und Umfang der Erfindung abzuweichen. Es ist für angemessen ausgebildete Fachleute offensichtlich, dass andere Komponenten, die die gleichen Funktionen ausführen, in geeigneter Weise ersetzt werden können. Es sollte erwähnt werden, dass Merkmale, die unter Bezugnahme auf eine spezifische 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 können die Verfahren der Erfindung entweder in allen Softwareimplementierungen, durch Verwenden der entsprechenden Prozessoranweisungen, oder in Hybridimplementierungen, die eine Kombination von Hardwarelogik und Softwarelogik verwenden, erreicht werden, um die gleichen Ergebnisse zu erreichen. Es ist beabsichtigt, dass solche Modifikationen des erfinderischen Konzepts durch die beigefügten Ansprüche abgedeckt werden.
-
Referenzenliste:
-
- [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/Projects/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)
- [OSPG18] T. Oder, T. Schneider, T. Pöppelmann and T. Güneysu: Practical CCA2-Secure and Masked Ring-LWE Implementation, IACR Eprint, 23 Jan 2018 (accessed 15 June 2018), https://eprint.iacr.org/2016/1109.pdf
- [LPR10A] Vadim Lyubashevsky, Chris Peikert, Oded Regev.: On Ideal Lattices and Learning with Errors Over Rings, Journal of the ACM, 60(6):43:1-43:35. Preliminary Version in Eurocrypt 2010. https://web.eecs.umich.edu/∼cpeikert/pubs/ideal-lwe.pdf
- [LPR10B] Vadim Lyubashevsky, Chris Peikert, Oded Regev.: On Ideal Lattices and Learning with Errors Over Rings, Slides presented at Eurocrypt 2010, https://web.eecs.umich.edu/∼cpeikert/pubs/slides-ideal-lwe.pdf
-
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
-
- [NewHopeSimplePaperEprint16] Erdem Alkim, Leo Ducas, Thomas Pöppelmann, Peter Schwabe: NewHope without reconciliation. IACR Cryptology ePrint Archive 2016: 1157 (2016) [0185]
- [NewHopePaperEprint16] Erdem Alkim, Leo Ducas, Thomas Pöppelmann, Peter Schwabe: Post-quantum key exchange - a new hope. IACR Cryptology ePrint Archive 2015: 1092 (2015) [0185]