-
Die ideale gitterbasierte Post-Quantum-Kryptografie bedient sich der generalisierten diskreten Fourier-Transformation (GDFT), um die Multiplikation von Polynomen zu beschleunigen. Die GDFT kann insbesondere bei sicherheitskritischen Daten (z.B. privaten Schlüsseln) verwendet werden. Ein kryptografischer Vorgang kann einem Fehlerangriff ausgesetzt sein, der eine große Sicherheitsbedrohung darstellt, insbesondere für Smartcard-Sicherheitschips.
-
Aus
DE 10 2017 117 899 A1 ist ein Ansatz bekannt zur effizienten Durchführung einer kryptographischen Operation, insbesondere zur verbesserten Robustheit einer solchen Operation gegen Fehlerinjektionsangriffe.
-
DE 10 2018 108 313 A1 betrifft einen neuartigen Ansatz zur Durchführungen von Lattice-basierten Operationen.
-
Das Ziel ist somit, die bestehenden Lösungen zu verbessern und einen Ansatz vorzustellen, der eine effizientere Überprüfung der GDFT-Operation ermöglicht und insbesondere erfolgreiche Angriffe auf ein kryptografisches System oder eine kryptografische Entität zu verhindern oder zu vermeiden.
-
Dies wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Weitere Ausführungsformen ergeben sich aus 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 gewünschtes Ergebnis zu erzielen. Die Merkmale des Verfahrens können mit beliebigen Merkmalen des Geräts, der Vorrichtung oder des Systems kombiniert werden oder umgekehrt.
-
Es wird ein Verfahren zur Überprüfung einer GDFT-basierten Operation auf einer gesicherten Domäne bereitgestellt, das Verfahren umfassend:
- - Berechnen einer ersten Prüfsumme basierend auf einer Eingabe,
- - Bestimmen eines Ergebnisses einer GDFT-basierten Operation basierend auf der Eingabe,
- - Berechnen einer zweiten Prüfsumme basierend auf dem Ergebnis,
- - Vergleichen der ersten Prüfsumme und der zweiten Prüfsumme, und
- - Fortfahren, wenn die erste Prüfsumme der zweiten Prüfsumme entspricht, oder
- - Auslösen einer vordefinierten Aktion, wenn die erste Prüfsumme der zweiten Prüfsumme nicht entspricht,
- - wobei die Eingabe ein Eingangsvektor mit N Komponenten ist,
- - wobei die erste Prüfsumme und/oder die zweite Prüfsumme als Summierung über die N Elemente bestimmt wird, wobei jedes Element eine Multiplikation von Folgendem umfasst:
- - einer Komponente des Eingangsvektors mit
- - derselben oder einer anderen Komponente des Eingangsvektors mit
- - einer Konstante.
-
Die GDFT-basierte Operation kann eine beliebige Operation sein, die die GDFT-Operation oder die inverse GDFT-Operation verwendet.
-
Die Konstante kann 1 sein, wodurch keine zusätzliche Multiplikation ausgelöst wird, oder die Konstante kann ein beliebiges anderes Element des Rings ℛ sein.
-
Gemäß einer Ausführungsform wird die erste Prüfsumme bestimmt als
wobei
- - xi ein Element des Eingangsvektors ist,
- - xj(i) das Element xi oder ein anderes Element des Eingangsvektors ist,
- - j(i) eine bijektive Abbildung {0,...,N- 1} → {0,...,N- 1} ist,
- - ci eine Konstante ist,
- - i mit i = 1, ... ,N - 1 eine Variable für die Summierung ist.
-
Gemäß einer Ausführungsform wird die bijektive Abbildung definiert als
wobei a eine ungerade Zahl ist.
-
Gemäß einer Ausführungsform ist die Konstante ci definiert als ci = c, wobei c eine Konstante in dem Ring ℛ ist.
-
Gemäß einer Ausführungsform ist das Ergebnis ein Vektor, und wobei die zweite Prüfsumme bestimmt wird als
wobei
- - x̂i ein Element des Ergebnisvektors ist,
- - x̂j',(i) das Element x̂i oder ein anderes Element des Ergebnisvektors ist,
- - j'(i) eine bijektive Abbildung {0, ... , N - 1} → {0, ... , N - 1} ist,
- - ĉi eine andere Konstante ist.
-
Es wird angemerkt, dass die Konstanten ci und ci sowie die Variable i Elemente in dem Ring ℛ sind, die unabhängig von einem beliebigen der Vektoren x oder x̂ sind.
-
Gemäß einer Ausführungsform ist die bijektive Abbildung definiert als
mit
-
Gemäß einer Ausführungsform ist die Konstante ĉi definiert als ĉi = ĉ, wobei ĉ eine Konstante in dem Ring ℛ ist.
-
Gemäß einer Ausführungsform umfasst die gesicherte Domäne mindestens eines der Folgenden:
- - eine Sicherheitseinrichtung,
- - eine gesicherte Cloud,
- - ein gesichertes Gerät,
- - eine integrierte Schaltung,
- - ein Hardwaresicherheitsmodul,
- - ein vertrauenswürdiges Plattformmodul,
- - eine Kryptoeinheit,
- - ein FPGA,
- - eine Verarbeitungseinheit,
- - einen Controller,
- - eine Smartcard.
-
Es wird auch eine Sicherheitseinrichtung bereitgestellt, die dazu vorgesehen ist, die folgenden Schritte auszuführen:
- - Berechnen einer ersten Prüfsumme basierend auf einer Eingabe,
- - Bestimmen eines Ergebnisses einer GDFT-basierten Operation basierend auf der Eingabe,
- - Berechnen einer zweiten Prüfsumme basierend auf dem Ergebnis,
- - Vergleichen der ersten Prüfsumme und der zweiten Prüfsumme, und
- - Fortfahren, wenn die erste Prüfsumme der zweiten Prüfsumme entspricht, oder
- - Auslösen einer vordefinierten Aktion, wenn die erste Prüfsumme nicht der zweiten Prüfsumme entspricht,
- - wobei die Eingabe ein Eingangsvektor mit N Komponenten ist,
- - wobei die erste Prüfsumme und/oder die zweite Prüfsumme als Summierung über die N Elemente bestimmt wird, wobei jedes Element eine Multiplikation von Folgendem umfasst:
- - einer Komponente des Eingangsvektors mit
- - derselben oder einer anderen Komponente des Eingangsvektors mit
- - einer Konstante.
-
Gemäß einer Ausführungsform ist die Sicherheitseinrichtung eine der Folgenden oder umfasst mindestens eines der Folgenden:
- - eine gesicherte Cloud,
- - ein gesichertes Gerät,
- - eine integrierte Schaltung,
- - ein Hardwaresicherheitsmodul,
- - ein vertrauenswürdiges Plattformmodul,
- - eine Kryptoeinheit,
- - ein FPGA,
- - eine Verarbeitungseinheit,
- - einen Controller,
- - eine Smartcard.
-
Darüber hinaus wird ein Computerprogrammprodukt vorgeschlagen, das direkt in einen Speicher einer digitalen Verarbeitungsvorrichtung ladbar ist und Softwarecodeabschnitte zum Durchführen der Schritte des hier beschriebenen Verfahrens umfasst.
-
Ausführungsformen werden unter Bezugnahme auf die Zeichnungen gezeigt und veranschaulicht. Die Zeichnungen dienen zur Veranschaulichung des Grundprinzips, sodass nur Aspekte dargestellt werden, die zum Verständnis des Grundprinzips notwendig sind. Die Skizzen sind nicht maßstäblich gezeichnet. In den Zeichnungen bezeichnen dieselben Referenzzeichen ähnliche Merkmale.
- 1 zeigt ein beispielhaftes Flussdiagramm, das Schritte für eine prüfsummengeschützte Berechnung der GDFT umfasst;
- 2 zeigt ein beispielhaftes Flussdiagramm, das Schritte für eine prüfsummengeschützte Berechnung der inversen GDFT umfasst;
- 3 zeigt Schritte eines beispielhaften Verfahrens zum Durchführen einer prüfsummengeschützten negativ verpackten GDFT-Operation, die verwendet werden kann, um beispielsweise Fehlerangriffe zu erkennen;
- 4 zeigt Schritte eines beispielhaften Verfahrens zum Durchführen einer prüfsummengeschützten Operation x̂: = τ-1(GDFT-1(x)), die verwendet werden kann, um beispielsweise Fehlerangriffe zu erkennen;
- 5 zeigt eine beispielhafte Anordnung einer Verarbeitungsvorrichtung, die eine CPU, ein RAM, einen nichtflüchtigen Speicher, ein Kryptomodul, ein analoges Modul, eine Eingabe-/Ausgabeschnittstelle und einen Hardware-Zufallszahlengenerator umfasst;
- 6 zeigt eine alternative Anordnung mit einem Hardwaresicherheitsmodul (HSM).
-
Es besteht allgemein eine Veranlassung dazu, sich von klassischen asymmetrischen Kryptosystemen, z.B. Rivest-Shamir-Adleman (RSA)-Kryptosysteme oder Elliptic Curve Cryptography (ECC), auf Schemata umzustellen, die Quantencomputern keine leichte erfolgreiche Angriffsfläche bieten. Selbst wenn Quantencomputer aufgrund der technischen Komplexität und der technischen Herausforderungen derzeit nicht verfügbar sind, könnten sie möglicherweise RSA und ECC in Polynomialzeit brechen.
-
Eine Klasse von Schemata, die Angriffen durch Quantencomputer widerstehen soll, ist auf öffentlichen Schlüsseln, Schlüsselaustausch oder Signaturschemata auf der Grundlage von Ring Learning with Errors (kurz RLWE) gerichtet. Der Kryptografie-Baublock wird als „Ring Learning with Errors“ (RLWE) bezeichnet. Die RLWE-basierte Kryptografie basiert auf der Arithmetik von Polynomen über endliche Körper. Ein bekanntes auf RLWE basierendes kryptografisches System ist als NewHope bekannt. Eine grundlegende Einführung in NewHope ist verfügbar von [R. Urian: Understanding Newhope Simple, Prior Art Journal 2020 Nr.8, Infineon Technologies, Prior Art Publishing, 01.04.2020].
-
Über den Schutz von RLWE-basierten Systemen vor Angriffen ist jedoch nicht viel bekannt. Insbesondere können Gegenmaßnahmen gegen Fehlerangriffe (auch als Fehlerinjektionsangriffe bezeichnet) zumindest dann von Vorteil, wenn nicht sogar erforderlich, sein, wenn Signatur- oder Verschlüsselungsschemata mit öffentlichem Schlüssel auf einem sicheren Chipkartencontroller oder in einer beliebigen ungünstigen Umgebung ausgeführt werden.
-
Die beschriebenen Beispiele können sich insbesondere auf eine Familie von Prüfsummengleichungen für die generalisierte diskrete Fourier-Transformation (GDFT) beziehen, d.h. die diskrete Fourier-Transformation über beliebige Ringe. Dies kann als Verallgemeinerung des Parsevalschen Theorems für die diskrete Fourier-Transformation über reelle Zahlen verstanden werden. Die GDFT über endliche Körper wird hierin als zahlentheoretische Transformation (Number Theoretic Transform, NTT) bezeichnet.
-
Beispielhafte Ausführungsformen können insbesondere vorschlagen, eine Prüfsummenberechnung von Eingangs- und Ausgangswerten einer GDFT durchzuführen. Falls die GDFT störungsfrei ausgeführt wurde, können beide Prüfsummen einander entsprechen, wobei eine solche Entsprechung mittels mathematischer Formeln bestimmt werden kann. Wenn jedoch eine Störung bei der GDFT aufgetreten ist (basierend beispielsweise auf einem Angriff auf das kryptografische System oder die Entität), entsprechen sich die Prüfsummen möglicherweise nicht mehr.
-
Die GDFT wird häufig in der gitterbasierten Kryptografie eingesetzt, um die Multiplikation in bestimmten Polynomringen zu beschleunigen. Da die GDFT eine sicherheitskritische Operation ist, ist die GDFT vorteilhaft vor Fehlerangriffen geschützt.
-
Während eines Fehlerangriffs hat der Angreifer physischen Zugriff auf die Vorrichtung, welche die GDFT berechnet, d.h. die GDFT-Operation ausführt. Der Angreifer bringt einen Fehler ein, indem er die GDFT-Operation der Vorrichtung stört, z.B. durch Einsatz eines Lasers und/oder Manipulation der Spannungs- oder Stromquelle.
-
Ein Fehlerangriff kann verhindert werden, indem für die Vorrichtung Schutzmaßnahmen bereitgestellt werden und/oder der eigentliche physische Angriff erkannt wird. Optional kann ein Alarm und/oder eine Benachrichtigung ausgelöst werden, wenn der Angriff erkannt wird. Die GDFT-Operation kann angehalten werden, die Vorrichtung kann in einen sicheren Zustand übergehen und/oder sie kann eine Fehlermeldung ausgeben.
-
Im Folgenden wird gezeigt, wie eine Prüfsumme definiert werden kann, um Fehlerangriffe während der GDFT-Operation zu erkennen.
-
Begriffsbestimmungen
-
Die folgenden Begriffe werden in diesem Dokument verwendet:
- ► Eine Tiefstellung (z.B. j in xj) für einen Vektor x gibt einen Index an, der insbesondere zum Ordnen und/oder Unterscheiden der Elemente des Vektors x verwendet wird. Beispielsweise ist xj das j-te Element des Vektors x.
- ► Arithmetische Operationen an Indizes werden in ℤN mit einem Repräsentantensystem {0,1,...,N - 1} aus den ganzen Zahlen ausgeführt. Beispielsweise bedeutet eine Instanz xja, dass k := j ∗ a mod N berechnet wird und dann das k-te Element xk aus dem Vektor x ausgewählt wird. Der Konvention entsprechend bezieht sich ein negativer Index -k für k > 0 auf den Index N - k.
- ► Der Term bezieht sich auf die multiplikative Untergruppe von ℤN. Diese Elemente werden als ungerade ganze Zahlen dargestellt.
- ► Ein Großbuchstabe X zeigt eine Unbestimmte (Indeterminante) in einem Polynom an.
-
Die GDFT
-
ℛ ist definiert als ein Ring mit der Einheit 1, und N ist eine ganze Zahl. Für jede ganze Zahl n kann das homomorphe Bild n · 1 in dem Ring ℛ auch als n bezeichnet werden. Ferner ist ω eine N-te Einheitswurzel in dem Ring ℛ mit den folgenden Eigenschaften;
-
Die GDFT ist eine Abbildung ℛ
N → ℛ
N, die definiert ist durch
wobei alle x
k in ℛ sind.
-
Wenn N in dem Ring ℛ invertierbar ist, gibt es eine inverse Abbildung GDFT
-1: ℛ
N → ℛ
N wie folgt:
-
Wenn der Ring ℛ der endliche Körper ℤq ist, wobei q := pd eine Primpotenz ist und ω eine primitive N-te Einheitswurzel in ℛ ist, dann wird diese GDFT als NTT bezeichnet.
-
Prüfsummengleichungen in der GDFT
-
Für jede beliebige
und
wird eine Abbildung definiert als
und als Prüfsummenfunktion bezeichnet.
-
Für a = ±1 können die folgenden Prüfsummenfunktionen bestimmt werden:
-
Wenn
gilt, erfüllen die Prüfsummenfunktionen ψ
a und ψ
a' die folgenden Beziehungen:
-
Die vorstehend genannte Formel ergibt sich aus der folgenden Umwandlung:
-
Wenn x̂ : = GDFT
-1(x) zutrifft, erfüllen die Prüfsummenfunktionen ψ
a und ψ
a' die folgenden Beziehungen:
-
Kryptografische Anwendung
-
Die ideale gitterbasierte Kryptografie kann den Ring
nutzen. Ein Element in diesem Ring kann durch einen Vektor
dargestellt werden. Eine Multiplikation von zwei Elementen in dem Ring
entspricht einer Faltungsoperation der Vektordarstellungen dieser Elemente, wobei es sich dabei um eine verhältnismäßig teure Operation handelt, die eine erhebliche Menge an Verarbeitungsleistung und Zeit benötigt.
-
Um die Effizienz einer solchen Multiplikation in diesem Ring zu erhöhen, kann ein von der GDFT gegebener Isomorphismus verwendet werden. Die GDFT bildet die Faltungsoperation isomorph auf eine komponentenweise Multiplikation in ℛN ab.
-
Daher können zwei Elemente u, v ∈ ℛ
N, die Elemente des Rings ℛ[X]/(X
N - 1) darstellen, multipliziert werden, indem sie mit der GDFT transformiert werden, eine komponentenweise Multiplikation der transformierten Vektoren durchgeführt wird und der resultierende Vektor unter Verwendung einer inversen GDFT
-1mit Isomorphismus rücktransformiert wird:
wobei „*“ eine Faltung in ℛ
N (d.h. Multiplikation in dem Ring ℛ[X]/(X
N - 1)) angibt und „.“ eine komponentenweise Multiplikation in dem Vektor ℛ
N angibt.
-
Die GDFT (oder die inverse GDFT-1) Operation kann auf geheime kryptografische Schlüssel angewendet werden. Fehler, die von einem Angreifer während einer solchen GDFT-Operation verursacht werden, können zu einer Beschädigung der kryptografischen Operation und/oder des geheimen Schlüssels führen.
-
Daher sind die GDFT oder die inverse GDFT-1Operation bestenfalls in der Lage, den Angriff zu erkennen, um weitere negative Auswirkungen eines Angriffs zu verhindern.
-
Es können Prüfsummenfunktionen verwendet werden, um Fehlerangriffe während der Berechnung der GDFT oder ihrer inversen GDFT-1zu erkennen.
-
1 zeigt Schritte eines beispielhaften Verfahrens zum Durchführen einer prüfsummengeschützten GDFT-Operation, die verwendet werden kann, um beispielsweise Fehlerangriffe zu erkennen.
-
In einem Schritt 101, wird eine Eingabe x ∈ ℛ
N bereitgestellt. In einem nachfolgenden Schritt 102, wird eine Prüfsumme C1 basierend auf der Eingabe x berechnet. In einem nachfolgenden Schritt 103, wird die GDFT-Operation
auf der Eingabe x durchgeführt, um eine Ausgabe x̂ zu erzeugen. Im Folgenden wird in Schritt 104 eine Prüfsumme C2 basierend auf der Ausgabe x̂ berechnet. In einem nachfolgenden Schritt 105 wird bestimmt, ob die Prüfsumme C1 gleich der Prüfsumme C2 ist. Wenn dies der Fall ist, wird mit einem Schritt 107 fortgefahren, der die Ausgabe x̂ als Ergebnis zurückgibt. Wenn beide Prüfsummen C1, C2 nicht identisch sind, erfolgt eine Verzweigung zu Schritt 106, der einen Alarm auslöst, um anzuzeigen, dass die GDFT-Operation möglicherweise manipuliert wurde.
-
2 zeigt Schritte eines beispielhaften Verfahrens zum Durchführen einer prüfsummengeschützten GDFT-1Operation, die verwendet werden kann, um beispielsweise Fehlerangriffe zu erkennen.
-
In einem Schritt 201, wird die Eingabe x ∈ ℛ
N bereitgestellt. In einem nachfolgenden Schritt 202, wird eine Prüfsumme C3 basierend auf der Eingabe x berechnet. In einem nachfolgenden Schritt 203, wird die GDFT
-1 Operation
basierend auf der Eingabe x durchgeführt, um die Ausgabe x̂ zu erzeugen. Im Folgenden wird in Schritt 204 eine Prüfsumme C4 basierend auf der Ausgabe x̂ berechnet. In einem nachfolgenden Schritt 205 wird bestimmt, ob die Prüfsumme C3 gleich der Prüfsumme C4 ist. Wenn dies der Fall ist, wird mit einem Schritt 207 fortgefahren, der die Ausgabe x̂ als Ergebnis zurückgibt. Wenn beide Prüfsummen C3, C4 nicht identisch sind, erfolgt eine Verzweigung zu Schritt 206, der einen Alarm auslöst, um anzuzeigen, dass die GDFT
-1Operation möglicherweise manipuliert wurde.
-
Basierend auf einer beispielhaften Implementierung der Prüfsummenfunktionen ψ
a und ψ
-a-1 können die folgenden Prüfsummen C1 bis C4 berechnet werden:
-
Negativ verpackte GDFT
-
Die ideale gitterbasierte Kryptografie kann auch den Polynomring
verwenden. Ein Element in diesem Ring kann durch einen Vektor
dargestellt werden.
-
Eine Multiplikation von zwei Elementen im Ring ℛ[X]/(XN + 1) entspricht einer negativ verpackten („negatively wrapped“) Faltung ihrer Vektordarstellungen. Die negativ verpackte Faltung ähnelt der Standardfaltung und ist daher auch kostspielig und zeitaufwendig.
-
Um die Effizienz dieser Multiplikation zu erhöhen, kann auch die GDFT eingesetzt werden. Anstatt die GDFT jedoch direkt auf den Vektor anzuwenden, wird der Vektor zunächst durch eine bijektive Abbildung
transformiert, wobei ζ eine primitive 2N-te Einheitswurzel in ℛ ist. Eine inverse Abbildung kann bestimmt sein als:
-
Ein Anwenden der Abbildung τ auf die GDFT ergibt Folgendes:
-
Daher können zwei Elemente u, v ∈ ℛ[X] / (X
N + 1) multipliziert werden, indem zuerst ihre Vektordarstellungen unter Verwendung der Abbildung τ transformiert werden, die GDFT angewendet wird, eine komponentenweise Multiplikation der transformierten Vektoren durchgeführt wird, der resultierende Vektor durch Anwenden von GDFT
-1 rücktransformiert wird und dann die inverse Abbildung τ
-1 angewendet wird:
wobei „*“ die Multiplikation (d.h. die negativ verpackte Faltung) in dem Ring ℛ[X]/(X
N + 1) und „.“ die komponentenweise Multiplikation in dem Vektor ℛ
N angibt.
-
Die Kombination GDFT(τ(x)) kann als negativ verpackte GDFT bezeichnet werden.
-
Wenn die Prüfsummenfunktionen ψ
1 oder ψ
-1 mit τ kombiniert werden, werden die folgenden Formeln angewendet:
-
Es können Prüfsummenfunktionen verwendet werden, um Fehlerangriffe während der Berechnung von x̂ = GDFT(τ(x)) oder ihrer Inversen x̂ = τ-1(GDFT-1(x)) zu erkennen.
-
3 zeigt Schritte eines beispielhaften Verfahrens zum Durchführen einer prüfsummengeschützten negativ verpackten GDFT-Operation, die verwendet werden kann, um beispielsweise Fehlerangriffe zu erkennen.
-
In einem Schritt 301 wird eine Eingabe x ∈ ℛN bereitgestellt. In einem nachfolgenden Schritt 302 wird eine Prüfsumme C1 basierend auf der Eingabe x berechnet.
-
In einem nachfolgenden Schritt 303 wird die Operation
anhand der Eingabe x̂ unter Verwendung der Abbildung τ(x) durchgeführt und eine Ausgabe x̂ erzeugt. Im Folgenden wird in Schritt 304 eine Prüfsumme C2 basierend auf der Ausgabe x̂ berechnet. In einem nachfolgenden Schritt 305 wird bestimmt, ob die Prüfsumme C1 gleich der Prüfsumme C2 ist. Wenn dies der Fall ist, wird mit einem Schritt 307 fortgefahren, der die Ausgabe x̂ als Ergebnis zurückgibt. Wenn beide Prüfsummen C1, C2 nicht identisch sind, erfolgt eine Verzweigung zu Schritt 306, der einen Alarm auslöst, um anzuzeigen, dass die GDFT-Operation möglicherweise manipuliert wurde.
-
4 zeigt Schritte eines beispielhaften Verfahrens zum Durchführen einer prüfsummengeschützten GDFT-1 Operation, die verwendet werden kann, um beispielsweise Fehlerangriffe zu erkennen.
-
In einem Schritt 401, wird die Eingabe x̂ ∈ ℛ
N bereitgestellt. In einem nachfolgenden Schritt 402 wird eine Prüfsumme C3 basierend auf der Eingabe x berechnet. In einem nachfolgenden Schritt 403 wird die Operation
an x unter Verwendung der inversen Abbildung τ
-1 ausgeführt, wodurch der die Ausgabe x̂ erzeugt wird. Im Folgenden wird in Schritt 404 eine Prüfsumme C4 basierend auf der Ausgabe x̂ berechnet. In einem nachfolgenden Schritt 405 wird bestimmt, ob die Prüfsumme C3 gleich der Prüfsumme C4 ist. Wenn dies der Fall ist, wird mit einem Schritt 407 fortgefahren, der die Ausgabe x̂ als Ergebnis zurückgibt. Wenn beide Prüfsummen C3, C4 nicht identisch sind, erfolgt eine Verzweigung zu Schritt 406, der einen Alarm auslöst, um anzugeben, dass die Operation τ
-1(GDFT
-1(x)) möglicherweise manipuliert wurde.
-
Basierend auf einer beispielhaften Implementierung der Prüfsummenfunktionen ψ
a, und ψ
-a-1 können die folgenden Prüfsummen C1 bis C4 berechnet werden:
-
Weitere Aspekte und Ausführungsformen
-
Die Beispiele beziehen sich auf ein Paar von Prüfsummenfunktionen ψ
a und ψ
-a-1 mit den entsprechenden Prüfsummen C1 bis C4. Eine weitere Option besteht jedoch darin, eine Vielzahl verschiedener Paare von Prüfsummenfunktionen
für verschiedene Werte
auszuwählen und die entsprechenden Prüfsummen dementsprechend zu berechnen. Die Prüfung kann dann über die berechneten Prüfsummenpaare durchgeführt werden.
-
Die Verwendung mehrerer Paare von Prüfsummenfunktionen ψak erhöht die Wahrscheinlichkeit, dass ein Angriff oder Fehler erkannt werden kann.
-
Als weitere Option können die GDFT, die Abbildung τ und die Prüfsummenberechnungen auf Vektoren von Elementen des Vektors ℛN erweitert werden, wobei Berechnungen komponentenweise durchgeführt werden.
-
Die Abbildung τ wurde beispielhaft als τ(xk) := ζkxk angegeben, was insbesondere für den Ring ℛ[X]/(XN + 1) praktikabel ist. Andere Ringe können jedoch andere Abbildungen verwenden. Daher kann die Abbildung τ eine beliebige bijektive Abbildung von ℛN auf ℛN sein. Die Prüfsummenformeln können wie in den Gleichungen (1) gezeigt berechnet werden.
-
Beispielhafte Implementierungen
-
Eine beispielhafte Code-Implementierung in Python (Version 3.8.5) wird im Folgenden gezeigt:
- import random
- q:int = 12289
- N:int = 1024
- omega:int = 49
- zeta:int = 7
- N_inv:int = 12277
-
Die Variable q ist die Primzahl, die den Ring ℛ als endlichen Körper ℤq definiert, die Variable N ist die Dimension des Vektors über dem Ring ℛ, die Variable Omega entspricht ω als eine beispielhafte 1024-te Einheitswurzel in ℤq, die Variable Zeta entspricht ζ und ist eine 2048-te Einheitswurzel in ℤq und die Variable N_inv entspricht N-1 mod q.
-
Die Operation GDFT ist definiert als:
-
Die inverse Operation GDFT
-1 ist definiert als:
-
Die Abbildung τ(x) ist definiert als:
-
Die inverse Abbildung τ
-1(x) ist definiert als:
-
Die Prüfsummenfunktionen ψ
a(x) sind definiert als:
-
Die Funktion ψ
1(τ(x)) ist definiert als:
-
Die Funktion ψ
-1(τ(x)) ist definiert als:
-
Ein zufälliger Eingangsvektor in
kann bestimmt werden durch:
-
Die Prüfsummen C1 und C2 werden für die Operation GDFT mit a = 1 berechnet:
- C1 = N * psi(x_inp,l) % q
- x_res = GDFT(x_inp)
- C2 = psi(x_res, -1)
- print(„GDFT mit a = 1:“, „C1 =“, C1, “; C2 =“, C2)
-
Die Prüfsummen C3 und C4 werden für die inverse Operation GDFT-1 mit a = 1 berechnet:
- C3 = psi(x_inp,-1)
- x_res = GDFT_inv(x_inp)
- C4 = N*psi(x_res, 1) % q
- print („inverse GDFT mit a = 1:“, „C3 =“, C3, “; C4 =“, C4)
-
Die Prüfsummen C1 und C2 werden für die Operation GDFT mit a = -1 berechnet:
- C1 = N * psi(x_inp,-1) % q
- x_res = GDFT(x_inp)
- C2 = psi(x_res, 1)
- print(„GDFT mit a = -1:“, „C1 =“, C1, “; C2 =“, C2)
-
Die Prüfsummen C3 und C4 werden für die inverse Operation GDFT-1 mit a = - 1 berechnet:
- C3 = psi (x_inp,1)
- x_res = GDFT_inv(x_inp)
- C4 = N * psi(x_res, -1) % q
- print(„inverse GDFT mit a = -1:“, „C3 =“, C3, “; C4 =“, C4)
-
Die Prüfsummen C1 und C2 werden für die negativ verpackte Operation GDFT mit a = 1 berechnet:
- C1 = N * psi_1_tau(x_inp) % q
- x_res = GDFT(tau(x_inp))
- C2 = psi(x_res, -1)
- print („neg. verpackte GDFT mit a=1:“, „C1 =“, C1, “; C2 =“, C2)
-
Die Prüfsummen C3 und C4 werden für die negativ verpackte inverse Operation GDFT-1 mit a = 1 berechnet:
- C3 = psi(x_inp,1)
- x_res = tau_inv(GDFT_inv(x_inp))
- C4 = N * psi_minus_1_tau(x_res) % q
- print („neg.verp.inv.GDFT mit a=1:“, „C3 =“, C3, “; C4 =“, C4)
-
Die Prüfsummen C1 und C2 werden für die negativ verpackte Operation GDFT mit a = -1 berechnet:
- x_res = GDFT(tau(x_inp))
- C2 = psi(x_res, 1)
- print(„neg. verp. GDFT mit a=-1:“, „C1 =“, C1, “; C2 =“, C2)
-
Die Prüfsummen C3 und C4 werden für die negative verpackte inverse Operation GDFT-1 mit a = -1 berechnet:
- C3 = psi(x_inp, -1)
- x_res = tau_inv(GDFT_inv(x_inp))
- C4 = N * psi_1_tau(x_res) % q
- print („neg.verp.inv.GDFT mit a=-1:“, „C3 =“, C3, “; C4 =“, C4)
-
Das Ausführen des Python-Programms ergibt ein Paar Prüfsummen (C1, C2) für die GDFTs und ein Paar Prüfsummen (C3, C4) für die negativ verpackten GDFTs, aus denen hervorgeht, dass die jeweiligen Prüfsummen jedes Paares (C1, C2) und (C3, C4) dieselben Werte aufweisen. Eine beispielhafte Ausgabe basierend auf Zufallszahlen ist:
- GDFT mit a = 1: C1 = 8795 ; C2 = 8795
- inverse GDFT mit a = 1: C3 = 3015 ; C4 = 3015
GDFT mit a = -1: C1 = 2821 ; C2 = 2821
inverse GDFT mit a = -1: C3 = 5061 ; C4 = 5061
neg. verpackte GDFT mit a=1: C1 = 4594 ; C2 = 4594
neg.verp.inv.GDFT mit a=1: C3 = 5061 ; C4 = 5061
neg. verp. GDFT mit a=-1: C1 = 2007 ; C2 = 2007
neg.verp.inv.GDFT mit a=-1: C3 = 3015 ; C4 = 3015
-
Die Prüfungen sind positiv, da die Prüfsummenpaare C1 und C2 sowie die Prüfsummenpaare C3 und C4 gleich sind.
-
5 zeigt eine Verarbeitungsvorrichtung 500, die eine CPU 501, einen RAM 502, einen nichtflüchtigen Speicher 503 (NVM), ein Kryptomodul 504, ein analoges Modul 506, eine Eingabe/Ausgabeschnittstelle 507 und einen Hardware-Zufallszahlengenerator 112 umfasst.
-
In diesem Beispiel hat die CPU 501 Zugriff auf mindestens ein Kryptomodul 504 über einen gemeinsam genutzten Bus 505, mit dem jedes Kryptomodul 504 verbunden ist. Jedes Kryptomodul 504 kann insbesondere einen oder mehrere Kryptokerne umfassen, um bestimmte kryptografische Operationen durchzuführen. Beispielhafte Kryptokerne sind:
- ► ein AES-Kern 509,
- ► ein SHA-Kern 510,
- ► ein ECC-Kern 511, und
- ► ein RLWE-Kryptokern 508.
-
Insbesondere kann der RLWE-basierte Kryptokern 508 bereitgestellt werden, um mindestens eines der Folgenden zu beschleunigen: die GDFT-Operation, den τ Isomorphismus, die Prüfsummenberechnung oder jede beliebige ihrer inversen Operationen.
-
Die CPU 501, der Hardware-Zufallszahlengenerator 112, 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 eine Verbindung zu anderen Geräten aufweisen, die der Verarbeitungsvorrichtung 500 ähneln können.
-
Das Kryptomodul 504 kann mit hardwarebasierten Sicherheitsmerkmalen ausgestattet sein oder nicht.
-
Es kann ein Bus 505 mit oder ohne Maskierung verwendet werden. Die Anweisungen zum Verarbeiten der hierin beschriebenen Schritte können insbesondere im NVM 503 gespeichert und von der CPU 505 verarbeitet werden. Die verarbeiteten Daten können im NVM 503 oder im RAM 502 gespeichert werden. Unterstützende Funktionen können von den Kryptomodulen 504 bereitgestellt werden (z.B. die Erweiterung von Pseudozufallsdaten).
-
Die Schritte des hierin beschriebenen Verfahrens können ausschließlich oder zumindest teilweise in dem Kryptomodul 504 durchgeführt werden, z.B. in dem RLWE-basierten Kryptokern 508.
-
Die Verarbeitungsvorrichtung 500 kann eine Chipkarte sein, die durch direkten elektrischen Kontakt oder durch ein elektromagnetisches Feld versorgt wird. Die Verarbeitungsvorrichtung 500 kann eine feste Schaltung sein oder auf rekonfigurierbarer Hardware (z.B. feldprogrammierbares Gate-Array (Field Programmable Gate Array, FPGA)) basieren. Die Verarbeitungsvorrichtung 500 kann mit einem Personalcomputer, einem Mikrocontroller, einem FPGA oder einem Smartphone verbunden sein.
-
Die hierin beschriebene Lösung kann von einem Kunden verwendet werden, der beabsichtigt, eine sichere Implementierung der RLWE-basierten Kryptografie auf einer Smartcard oder einem beliebigen sicheren Element bereitzustellen.
-
6 zeigt ein weiteres Beispiel einer Verarbeitungsvorrichtung 600. Die Verarbeitungsvorrichtung 600 umfasst ein Hardwaresicherheitsmodul 601, einen nichtflüchtigen Speicher (NVM) 608, einen Direktzugriffsspeicher (RAM) 609, eine Schnittstelle 610 zur Kommunikation mit anderen Vorrichtungen und einen Anwendungsprozessor 607, der mit dem Hardwaresicherheitsmodul (HSM) 601, RAM 609, NVM 608 und Schnittstelle 610 gekoppelt ist.
-
Das HSM 601 umfasst einen Controller 602, einen Hardware-Zufallszahlengenerator (HRNG) 606 und mindestens ein Kryptomodul 603. Das Kryptomodul 603 umfasst auf beispielhafte Weise einen AES-Kern 604 und einen gitterbasierten Krypto (Lattice-Based Crypto, LBC)-Kern 605.
-
Gemäß einer Ausführungsform können das HSM 601 und der Anwendungsprozessor 607 auf demselben physischen Chip mit enger Kopplung hergestellt werden. Das HSM 601 liefert kryptografische Dienste und gesicherten Schlüsselspeicher, während der Anwendungsprozessor rechenintensive Aufgaben ausführen kann (z.B. Bilderkennung, Kommunikation, Bewegungssteuerung). Das HSM 601 kann nur über eine definierte Schnittstelle zugänglich sein und als vom Rest des Systems unabhängig angesehen werden, sodass eine Sicherheitsverletzung beim Anwendungsprozessor 607 nur begrenzte Auswirkungen auf die Sicherheit des HSM 601 hat. Das HSM 601 kann alle Aufgaben oder eine Teilmenge von Aufgaben ausführen, die in Bezug auf die Verarbeitungsvorrichtung 600 unter Verwendung der Steuerung 602 beschrieben sind, wobei der LBC-Kern 605 auf beispielhafte Weise von einem AES 604 und dem HRNG 606 unterstützt wird. Es kann die hierin beschriebenen Prozeduren (zumindest teilweise) ausführen, die entweder von einer internen Steuerung oder als CMOS-Schaltung gesteuert werden. Darüber hinaus kann auch der Anwendungsprozessor 607 die hierin beschriebenen Verfahren (zumindest teilweise, z.B. in Zusammenarbeit mit dem HSM 601) durchführen.
-
Die Verarbeitungsvorrichtung 600 mit diesem Anwendungsprozessor 607 und dem HSM 601 kann als zentrales Kommunikationsgateway oder (elektrische) Motorsteuereinheit in Autos oder anderen Fahrzeugen verwendet werden.
-
In einem oder mehreren Beispielen können die hierin beschriebenen Funktionen zumindest teilweise in Hardware implementiert sein, wie beispielsweise spezifischen Hardwarekomponenten oder einem Prozessor. Allgemeiner können die Techniken in Hardware, Prozessoren, Software, Firmware oder einer beliebigen Kombination davon implementiert sein. Bei ihrer Implementierung in Software können die Funktionen auf einem computerlesbaren Medium gespeichert oder als eine oder mehrere Anweisungen oder Code übertragen und von einer hardwarebasierten Verarbeitungseinheit ausgeführt werden. Computerlesbare Medien können computerlesbare Speichermedien, die einem greifbaren Medium, wie etwa Datenspeichermedien, entsprechen, oder Kommunikationsmedien umfassen, einschließlich eines beliebigen Mediums, das die Übertragung eines Computerprogramms von einem Ort zu einem anderen erleichtert, z.B. gemäß einem Kommunikationsprotokoll. Auf diese Weise können computerlesbare Medien im Allgemeinen (1) greifbaren computerlesbaren Speichermedien entsprechen, die nicht flüchtig sind, oder (2) einem Kommunikationsmedium, wie etwa einem Signal oder einer Trägerwelle. Datenspeichermedien können alle 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 abzurufen. Ein Computerprogrammprodukt kann ein computerlesbares Medium einschließen.
-
Solche computerlesbaren Speichermedien können exemplarisch und in keiner Weise einschränkend ein RAM, ein ROM, einen EEPROM, eine CD-ROM oder einen anderen optischen Plattenspeicher, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen, einen Flash-Speicher oder ein anderes Medium umfassen, das verwendet werden kann, um den gewünschten Programmcode in Form von Anweisungen oder Datenstrukturen zu speichern, auf die ein Computer zugreifen kann. Außerdem wird jede Verbindung ordnungsgemäß als computerlesbares Medium bezeichnet, d.h. als computerlesbares Übertragungsmedium. Wenn beispielsweise Anweisungen von einer Website, einem Server oder einer anderen entfernten Quelle unter Verwendung eines Koaxialkabels, eines Glasfaserkabels, eines verdrillten Leitungspaars, einer digitalen Teilnehmerleitung (Digital Subscriber Line, DSL) oder drahtloser Technologien wie Infrarot, Funk und Mikrowelle übertragen werden, sind Koaxialkabel, Glasfaserkabel, verdrilltes Leistungspaar, DSL oder drahtlose Technologien wie Infrarot, Radio und Mikrowelle in der Definition des Mediums enthalten. Es versteht sich jedoch, dass computerlesbare Speichermedien und Datenspeichermedien keine Verbindungen, Trägerwellen, Signale oder andere flüchtigen Medien enthalten, sondern auf nichtflüchtige, greifbare Speichermedien gerichtet sind. Eine Platte (Disk, Diskette) und eine Disc, wie hierin verwendet, umfasst Compact Disc (CD), Laser Disc, optische Disc, Digital Versatile Disc (DVD), Diskette und Blu-ray-Disc, wobei Disks normalerweise Daten magnetisch wiedergeben, während Discs Daten optisch mit Lasern wiedergeben. Kombinationen des Vorstehenden sollten ebenfalls in den Umfang von computerlesbaren Medien eingeschlossen sein.
-
Anweisungen können von einem oder mehreren Prozessoren ausgeführt werden, wie etwa eine oder mehrere Verarbeitungseinheiten (CPUs), digitale Signalprozessoren (DSPs), Allzweck-Mikroprozessoren, anwendungsspezifische integrierte Schaltkreise (ASICs), feldprogrammierbare Logikarrays (FPGAs) oder andere äquivalente integrierte oder diskrete Logikschaltungen. Dementsprechend kann sich der Begriff Prozessor, wie hierin verwendet, auf eine der vorstehenden Strukturen oder eine andere Struktur beziehen, die zur Implementierung der hier beschriebenen Techniken geeignet ist. Darüber hinaus kann in einigen Aspekten die hierin beschriebene Funktionalität in dedizierten Hardware- und/oder Softwaremodulen bereitgestellt werden, die zum Kodieren und Dekodieren konfiguriert 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 Vielzahl von Geräten oder Vorrichtungen implementiert sein, einschließlich eines drahtlosen Handgeräts, einer integrierten Schaltung (IC) oder eines Satzes von ICs (z.B. eines Chipsatzes). In dieser Offenbarung werden verschiedene Komponenten, Module oder Einheiten beschrieben, um funktionale Aspekte von Vorrichtungen hervorzuheben, die konfiguriert sind, um 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 kombiniert oder durch eine Sammlung interoperativer Hardwareeinheiten, einschließlich eines oder mehrerer Prozessoren, wie vorstehend beschrieben, in Verbindung mit geeigneter Software und/oder Firmware bereitgestellt werden.