DE69737097T2 - Kryptographisches verfahren und vorrichtung mit öffentlichem schlüssel - Google Patents

Kryptographisches verfahren und vorrichtung mit öffentlichem schlüssel Download PDF

Info

Publication number
DE69737097T2
DE69737097T2 DE69737097T DE69737097T DE69737097T2 DE 69737097 T2 DE69737097 T2 DE 69737097T2 DE 69737097 T DE69737097 T DE 69737097T DE 69737097 T DE69737097 T DE 69737097T DE 69737097 T2 DE69737097 T2 DE 69737097T2
Authority
DE
Germany
Prior art keywords
mod
message
generating
ring
public key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69737097T
Other languages
English (en)
Other versions
DE69737097D1 (de
Inventor
Jeffrey Pawtucket HOFFSTEIN
Jill Pawtucket PIPHER
H. Joseph Needham SILVERMAN
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTRU Cryptosystems Inc
Original Assignee
NTRU Cryptosystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTRU Cryptosystems Inc filed Critical NTRU Cryptosystems Inc
Publication of DE69737097D1 publication Critical patent/DE69737097D1/de
Application granted granted Critical
Publication of DE69737097T2 publication Critical patent/DE69737097T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme

Description

  • GEBIET DER ERFINDUNG
  • Diese Erfindung bezieht sich auf das Verschlüsseln und Entschlüsseln von Informationen und insbesondere auf ein Kryptosystem mit öffentlichem Schlüssel für die Verschlüsselung und Entschlüsselung digitaler Nachrichten durch Prozessorsysteme.
  • HINTERGRUND DER ERFINDUNG
  • Der sichere Austausch von Daten zwischen zwei Beteiligten, z. B. zwischen zwei Computern, erfordert die Verschlüsselung. Derzeit sind zwei allgemeine Verschlüsselungsverfahren in Gebrauch, die Verschlüsselung mit privatem Schlüssel und die Verschlüsselung mit öffentlichem Schlüssel. In der Verschlüsselung mit privatem Schlüssel tauschen die zwei Beteiligten die für die Verschlüsselung und Entschlüsselung zu verwendenden Schlüssel privat aus. Ein umfassend verwendetes Beispiel eines Kryptosystems mit privatem Schlüssel ist DES, die Datenverschlüsselungsnorm. Diese Systeme können sehr schnell und sehr sicher sein, leiden aber an dem Nachteil, dass die zwei Beteiligten ihre Schlüssel privat austauschen müssen.
  • Ein Kryptosystem mit öffentlichem Schlüssel ist eines, in dem jeder Beteiligte seinen Verschlüsselungsprozess veröffentlichen kann, ohne die Sicherheit des Entschlüsselungsprozesses zu gefährden. Der Verschlüsselungsprozess wird allgemein eine Falltürfunktion genannt. Obgleich Kryptosysteme mit öffentlichem Schlüssel im Allgemeinen langsamer als Kryptosysteme mit privatem Schlüssel sind, werden sie zum Übertragen kleiner Datenmengen wie etwa Kreditkartennummern und außerdem zum Übertragen eines privaten Schlüssels, der daraufhin für die Verschlüsselung mit privatem Schlüssel verwendet wird, verwendet.
  • Bisher wurden eine Vielzahl von Falltürfunktionen für Kryptosysteme mit öffentlichem Schlüssel vorgeschlagen und implementiert.
  • Ein Typ einer Falltürfunktion, die zum Erzeugen von Kryptosystemen mit öffentlichem Schlüssel verwendet wird, umfasst das Potenzieren in einer Gruppe; d. h, das Nehmen eines Elements einer Gruppe und das wiederholte Multiplizieren des Elements mit sich selbst unter Verwendung der Gruppenoperation. Die am häufigsten gewählte Gruppe ist die multiplikative Gruppe modulo pq für große Primzahlen p und q, obgleich andere Gruppen wie etwa elliptische Kurven, Abelsche Mannigfaltigkeiten und sogar nichtkommutative Matrixgruppen beschrieben worden sind. Allerdings erfordert dieser Typ einer Falltürfunktion große Primzahlen, jeweils in der Größenordnung von 100 Stellen, was die Schlüsselerzeugung kompliziert und den für die Verschlüsselung und Entschlüsselung verwendeten Potenzierungsprozess rechenaufwändig macht, wobei das Verschlüsseln oder Entschlüsseln einer Nachricht, die aus N Bits besteht, viele Multiplikationen einhundertstelliger Zahlen und in der Größenordnung von N3 Operationen erfordert.
  • Ein zweiter Typ einer Falltürfunktion, die zum Erzeugen von Kryptosystemen mit öffentlichem Schlüssel verwendet wird, beruht auf der Schwierigkeit zu bestimmen, welche Zahlen Quadrate in einer Gruppe, üblicherweise in der multiplikativen Gruppe modulo pq für große Primzahlen p und q, sind. Ebenso wie in dem ersten Typ ist die Schlüsselerzeugung kompliziert und sind das Verschlüsseln und Entschlüsseln rechenaufwändig, wobei zum Verschlüsseln oder Entschlüsseln einer Nachricht, die aus N Bits besteht, in der Größenordnung von N3 Operationen erforderlich sind.
  • Ein dritter Typ einer Falltürfunktion umfasst das diskrete Logarithmusproblem in einer Gruppe, allgemein in der multiplikativen Gruppe oder in einer elliptischen Kurve modulo einer großen Primzahl p. Da die Primzahl p wenigstens 150 Ziffern benötigt und p – 1 einen großen Primfaktor besitzen muss, ist die Schlüsselerzeugung wiederum kompliziert; außerdem verwenden diese Systeme die Potenzierung, sodass sie zum Verschlüsseln oder Entschlüsseln einer Nachricht, die aus N Bits besteht, wieder in der Größenordnung von N3 Operationen benötigen.
  • Ein vierter Typ einer Falltürfunktion, die zum Erzeugen von Kryptosystemen mit öffentlichem Schlüssel verwendet wird, beruht auf dem Rucksack- oder Teilmengensummenproblem. Diese Funktionen verwenden eine Halbgruppe, normalerweise die Halbgruppe positiver ganzer Zahlen unter der Addition. Viele Kryptosysteme mit öffentlichem Schlüssel dieses Typs sind unter Verwendung von Gitterreduktionstechniken geknackt worden, sodass sie nicht mehr als sichere Systeme betrachtet werden.
  • Ein fünfter Typ einer Falltürfunktion, die zum Erzeugen von Kryptosystemen mit öffentlichem Schlüssel verwendet wird, beruht auf Fehlerkorrekturcodes, insbesondere Goppa-Codes. Diese Kryptosysteme verwenden lineare Algebra über einem finiten Feld, allgemein über dem Feld mit zwei Elementen. Es gibt Angriffe mittels linearer Algebra auf diese Kryptosysteme, sodass der Schlüssel für ein sicheres Kryptosystem eine große Rechteckmatrix in der Größenordnung von 400.000 Bits ist. Für die meisten Anwendungen ist dies zu groß.
  • Ein sechster Typ einer Falltürfunktion, die zum Erzeugen von Kryptosystemen mit öffentlichem Schlüssel verwendet wird, beruht auf der Schwierigkeit, in einem Gitter mit großer Dimension N äußerst kurze Basisvektoren zu ermitteln. Die Schlüssel für ein solches System haben eine Länge in der Größenordnung von N2 Bits, was für viele Anwendungen zu groß ist. Außerdem sind diese Gitterreduktions-Kryptosysteme mit öffentlichem Schlüssel sehr neu, sodass ihre Sicherheit noch nicht vollständig analysiert worden ist.
  • Die meisten Anwender würden es somit wünschenswert finden, ein Kryptosystem mit öffentlichem Schlüssel zu haben, das verhältnismäßig kurze, leicht zu erzeugende Schlüssel mit verhältnismäßig schnellen Verschlüsselungs- und Entschlüsselungsprozessen kombiniert.
  • Es gehört zu den Aufgaben der Erfindung, ein Verschlüsselungssystem mit öffentlichem Schlüssel zu schaffen, für das die Schlüssel verhältnismäßig kurz und leicht zu erzeugen sind und für das die Verschlüsselungs- und Entschlüsselungsprozesse schnell ausgeführt werden können. Außerdem zählt es zu den Aufgaben hiervon, ein Verschlüsselungssystem mit öffentlichem Schlüssel zu schaffen, das verhältnismäßig niedrige Speicheranforderungen hat und das von einer Vielzahl von Parametern abhängt, die beim Abwägen des Sicherheitsgrads, der Schlüssellänge, der Verschlüsselungs- und Entschlüsselungsgeschwindigkeit, der Speicheranforderungen und der Bandbreite wesentliche Flexibilität zulassen.
  • EP-A-0639907 offenbart eine Technik der digitalen Signatur, die auf dem wie im Folgenden ausführlicher beschriebenen diskreten Logarithmusproblem beruht.
  • Die Erfindung ermöglicht, Schlüssel aus einer großen Menge von Vektoren im Wesentlichen zufällig zu wählen, wobei die Schlüssellängen mit den Schlüssellängen in anderen üblichen Kryptosystemen mit öffentlichem Schlüssel vergleichbar sind, weist einen geeigneten (für die derzeitigen Verhältnisse z. B. –210) Sicherheitsgrad auf und schafft Verschlüsselungs- und Entschlüsselungsprozesse, die zwischen einer und zwei Größenordnungen schneller als das am weitesten verwendete Kryptosystem mit öffentlichem Schlüssel, d. h. das oben erwähnte Potenzierungskryptosystem, sind.
  • Die Verschlüsselungstechnik einer Ausführungsform des Kryptosystems mit öffentlichem Schlüssel hiervon verwendet ein Mischsystem, das auf Polynomalgebra und auf der Reduktion modulo zweier Zahlen, p und q, beruht, während die Entschlüsselungstechnik ein Entmischsystem verwendet, dessen Gültigkeit von elementarer Wahrscheinlichkeitstheorie abhängt. Die Sicherheit des Kryptosystems mit öffentlichem Schlüssel hiervon kommt von der Wechselwirkung des Polynommischsystems mit der Unabhängigkeit der Reduktion modulo p und q. Außerdem stützt sich die Sicherheit auf die experimentell beobachtete Tatsache, dass es für die meisten Gitter sehr schwierig ist, den kürzesten Vektor zu ermitteln, falls es eine große Anzahl von Vektoren gibt, die lediglich mäßig länger als der kürzeste Vektor sind.
  • Gemäß einem ersten Aspekt der vorliegenden Erfindung ist eine Technik mit öffentlichem Schlüssel, in der eine digitale Nachricht m mit einem öffentlichen Schlüssel verschlüsselt wird und die verschlüsselte Nachricht danach mit einem privaten Schlüssel entschlüsselt werden kann, durch die folgenden Schritte gekennzeichnet:
    Auswählen von Idealen p und q eines Rings R;
    Generieren von Elementen f und g des Rings R und Generieren von Element Fq, das eine Inverse von f(mod q) ist, und Generieren von Element Fp, das eine Inverse von f(mod p) ist;
    Erzeugen eines öffentlichen Schlüssels, der h enthält, wobei h kongruent mod q mit einem Produkt von Fq und einem zweiten, aus g abgeleiteten, Faktor ist;
    Erzeugen eines privaten Schlüssels, aus dem f und Fp abgeleitet werden können;
    Erzeugen einer verschlüsselten Nachricht e durch Verschlüsseln der Nachricht m unter Verwendung des öffentlichen Schlüssels und eines Zufallselementes ∅ durch Additions- und Multiplikationsoperationen in dem Ring R modulo des Ideals q, die die Nachricht m, das Zufallselement ∅ und den öffentlichen Schlüssel involvieren, und
    Erzeugen einer entschlüsselten Nachricht durch Entschlüsseln der verschlüsselten Nachricht e durch Additions- und Multiplikationsoperationen in dem Ring R modulo des Ideals q und in dem Ring R modulo des Ideals p, wenigstens die verschlüsselte Nachricht e und den privaten Schlüssel involvierend.
  • Gemäß einem zweiten Aspekt der vorliegenden Erfindung ist ein System mit öffentlichem Schlüssel, in dem eine digitale Nachricht m mit einem öffentlichen Schlüssel verschlüsselt wird und die verschlüsselte Nachricht danach mit einem privaten Schlüssel entschlüsselt werden kann, gekennzeichnet durch:
    Mittel zum Auswählen von Idealen p und q eines Rings R;
    Mittel zum Generieren von Elementen f und g des Rings R und Generieren von Element Fq, das eine Inverse von f(mod q) ist, und Generieren von Element Fp, das eine Inverse von f(mod p) ist;
    Mittel zum Erzeugen eines öffentlichen Schlüssels, der h enthält, wobei h kongruent mod q mit einem Produkt von Fq und einem zweiten, aus g abgeleiteten, Faktor ist;
    Mittel zum Erzeugen eines privaten Schlüssels, aus dem f und Fp abgeleitet werden können;
    Mittel zum Erzeugen einer verschlüsselten Nachricht e durch Verschlüsseln der Nachricht m unter Verwendung des öffentlichen Schlüssels und eines Zufallselementes ∅ durch Additions- und Multiplikationsoperationen in dem Ring R modulo des Ideals q, die die Nachricht m, das Zufallselement ∅ und den öffentlichen Schlüssel involvieren, und
    Mittel zum Erzeugen einer entschlüsselten Nachricht durch Entschlüsseln der verschlüsselten Nachricht e durch Additions- und Multiplikationsoperationen in dem Ring R modulo des Ideals q und in dem Ring R modulo des Ideals p, wenigstens die verschlüsselte Nachricht e und den privaten Schlüssel involvierend.
  • Weitere Merkmale und Vorteile der Erfindung sind leichter aus der folgenden ausführlichen Beschreibung in Verbindung mit den beigefügten Zeichnungen ersichtlich.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockschaltplan eines Systems, das bei der Verwirklichung von Ausführungsformen der Erfindung verwendet werden kann.
  • 2 ist ein Ablaufplan eines Verschlüsselungssystems mit öffentlichem Schlüssel, das zusammen mit den hier erwähnten Unterablaufplänen bei der Implementierung von Ausführungsformen der Erfindung verwendet werden kann.
  • 3 ist ein Ablaufplan einer Routine in Übereinstimmung mit einer Ausführungsform der Erfindung zum Erzeugen öffentlicher und privater Schlüssel.
  • 4 ist ein Ablaufplan in Übereinstimmung mit einer Ausführungsform der Erfindung zum Verschlüsseln einer Nachricht unter Verwendung eines öffentlichen Schlüssels.
  • 5 ist ein Ablaufplan in Übereinstimmung mit einer Ausführungsform der Erfindung zum Entschlüsseln einer verschlüsselten Nachricht unter Verwendung eines privaten Schlüssels.
  • 6 ist ein Ablaufplan einer Routine in Übereinstimmung mit einer weiteren Ausführungsform der Erfindung zum Generieren öffentlicher und privater Schlüssel.
  • 7 ist ein Ablaufplan in Übereinstimmung mit einer weiteren Ausführungsform der Erfindung zum Verschlüsseln einer Nachricht unter Verwendung eines öffentlichen Schlüssels.
  • 8 ist ein Ablaufplan in Übereinstimmung mit einer weiteren Ausführungsform der Erfindung zum Entschlüsseln einer verschlüsselten Nachricht unter Verwendung eines privaten Schlüssels.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 ist ein Blockschaltplan eines Systems, das bei der Verwirklichung von Ausführungsformen der Erfindung verwendet werden kann. Zwei prozessorbasierte Teilsysteme 105 und 155 sind in der Weise gezeigt, dass sie über einen unsicheren Kanal 50, der z. B. ein beliebiger verdrahteter oder drahtloser Kommunikationskanal wie etwa ein Telefon- oder Internet-Kommunikationskanal sein kann, in Kommunikation stehen. Das Teilsystem 105 weist einen Prozessor 110 auf und das Teilsystem 155 weist einen Prozessor 160 auf. Wenn die Prozessoren 110 und 160 in der zu beschreibenden Weise programmiert worden sind, können sie und ihre zugeordneten Schaltungen verwendet werden, um eine Ausführungsform der Erfindung zu implementieren und um eine Ausführungsform des Verfahrens der Erfindung zu verwirklichen. Die Prozessoren 110 und 160 können jeweils ein beliebiger geeigneter Prozessor, z. B. ein elektronischer Digitalprozessor oder Mikroprozessor, sein. Selbstverständlich kann ein beliebiger Universal- oder Spezialprozessor oder eine beliebige andere Maschine oder Schaltungsanordnung genutzt werden, der/die die hier beschriebenen Funktionen elektronisch, optisch oder mit anderen Mitteln ausführen kann. Die Prozessoren können z. B. Intel-Pentium-Prozessoren sein.
  • Das Teilsystem 105 weist üblicherweise Speicher 123, eine Takt- und Zeitgebungsschaltungsanordnung 121, Eingabe/Ausgabe-Funktionen 118 und einen Monitor 125, die alle von herkömmlichen Typen sein können, auf. Die Eingaben können eine Tastatureingabe aufweisen, wie sie bei 103 repräsentiert ist. Die Kommunikation erfolgt über einen Sender-Empfänger 135, der ein Modem oder eine beliebige geeignete Vorrichtung für die Übermittlung von Signalen umfassen kann.
  • Das Teilsystem 155 kann in dieser veranschaulichenden Ausführungsform eine ähnliche Konfiguration wie das Teilsystem 105 haben. Der Prozessor 160 besitzt eine zugeordnete Eingabe/Ausgabe-Schaltungsanordnung 164, Speicher 168, eine Takt- und Zeitgebungsschaltungsanordnung 173 und einen Monitor 176. Die Eingaben weisen eine Tastatur 155 auf. Die Kommunikation des Teilsystems 155 mit der Außenwelt erfolgt über einen Sender-Empfänger 162, der wieder ein Modem oder eine beliebige geeignete Vorrichtung für die Übermittlung von Signalen umfassen kann.
  • Die Verschlüsselungstechnik einer Ausführungsform des Kryptosystems mit öffentlichem Schlüssel hiervon verwendet ein Mischsystem, das auf Polynomalgebra und auf der Reduktion modulo zweier Zahlen, p und q, beruht, während die Entschlüsselungstechnik ein Entmischsystem verwendet, dessen Gültigkeit von elementarer Wahrscheinlichkeitstheorie abhängt. [Selbstverständlich ist das Polynom eine zweckmäßige Darstellung geordneter Koeffizienten (ein Polynom vom Grad N – 1 mit N geordneten Koeffizienten, von denen einige null sein können), wobei der Prozessor an den Koeffizienten bestimmte Operationen ausführt.] Die Sicherheit des Kryptosystems mit öffentlichem Schlüssel hiervon kommt von der Wechselwirkung des Polynommischsystems mit der Unabhängigkeit der Reduktion modulo p und q. Außerdem stützt sich die Sicherheit auf die experimentell beobachtete Tatsache, dass es für die meisten Gitter sehr schwierig ist, den kürzesten Vektor zu ermitteln, falls es eine große Anzahl von Vektoren gibt, die nur mäßig länger als der kürzeste Vektor sind.
  • Das Kryptosystem hiervon passt in den allgemeinen Rahmen eines wahrscheinlichkeitstheoretischen Kryptosystems, wie es in M. Blum u. a., "An Efficient Probabilistic Public-Key Encryption Scheme Which Hides All Partial Information", Advances in Cryptology: Proceedings of CRYPTO 84, Lecture Notes in Computer Science, Bd. 196, Springer-Verlag, 1985, S. 289–299; und in S. Goldwasser u. a., "Probabilistic Encryption", J. Computer and Systems Science 28 (1984), 270–299, beschrieben ist. Das heißt, die Verschlüsselung weist ein Zufallselement auf, sodass jede Nachricht viele mögliche Verschlüsselungen besitzt. Die Verschlüsselung und Entschlüsselung und die Schlüsselerzeugung sind unter Verwendung der Technik hiervon, in der O(N2) Operationen erforderlich sind, um einen Nachrichtenblock der Länge N zu verschlüsseln oder zu entschlüsseln, verhältnismäßig schnell und leicht, was sie wesentlich schneller als die von RSA benötigten O(N3) Operationen macht. Die Schlüssellängen sind O(N), was sich gut mit den Schlüssellängen von O(N2) vergleichen lässt, die von anderen "schnellen" Systemen mit öffentlichen Schlüsseln benötigt werden wie etwa von jenen, die in R. J. McEliece, "A Public-Key Cryptosystem Based On Algebraic Coding Theory", JPL Pasadena, DSN Progress Reports 42–44 (1978), 114–116, und in O. Goldreich, u. a., "Public-Key Cryptosystems From Lattice Reduction Problems", MIT – Laboratory for Computer Science, Preprint, November 1996, beschrieben sind.
  • Eine Ausführungsform des Kryptosystems hiervon hängt von vier ganzzahligen Parametern (N, K, p, q) und von drei Mengen
    Figure 00090001
    von Polynomen vom Grad N – 1 mit ganzzahligen Koeffizienten ab. Diese Ausführungsform arbeitet in dem Ring R = Z[X]/(XN – 1). Ein Element F ∊ R wird als ein Polynom oder als ein Vektor geschrieben,
    Figure 00090002
  • Der Stern "*" bezeichnet die Multiplikation in R. Diese Sternmultiplikation ist explizit als ein zyklisches Faltungsprodukt, F*G = H, mit
    Figure 00090003
    gegeben. Wenn eine Multiplikation modulo (angenommen) q ausgeführt wird, werden die Koeffizienten modulo q reduziert. Weiter wird auf Anhang 1 verwiesen.
  • Das Folgende ist ein Beispiel einer Ausführungsform in Übereinstimmung mit der Erfindung eines Kryptosystems mit öffentlichem Schlüssel. Zur Erleichterung der Veranschaulichung werden sehr kleine Zahlen verwendet, sodass das Beispiel nicht kryptographisch sicher wäre. In Verbindung mit dem Beispiel werden als Material in doppelten eckigen Klammern ([[ ]]) Operationsparameter beschrieben, die unter den gegenwärtigen Bedingungen ein praktisches kryptographisch sicheres Kryptosystem liefern würden. Eine weitere Diskussion der Betriebsparameter zum Erzielen eines bestimmten Sicherheitsgrads ist in Anhang 1 dargelegt, der ebenfalls den Grad der Immunität einer Ausführungsform des Kryptosystems hiervon gegenüber verschiedenen Angriffstypen beschreibt.
  • Die in einer Ausführungsform hiervon verwendeten Objekte sind Polynome vom Grad N – 1,
    a1xN-1 + a2xN-2 + ... + aN-1x + aN,
    wobei die Koeffizienten a1, ..., aN ganze Zahlen sind. In der "Stern"-Multiplikation hiervon wird xN durch 1 ersetzt, wird xN+1 durch x ersetzt und wird xN-2 durch x2 ersetzt usw. [Ein Polynom kann ebenfalls durch ein N-Tupel von Zahlen
    [a1, a2, ..., aN]
    repräsentiert werden. In diesem Fall ist das Sternprodukt auch als das Faltungsprodukt bekannt. Für große Werte von N kann es schneller sein, Faltungsprodukte unter Verwendung des Verfahrens schneller Fourier-Transformationen zu berechnen, was anstelle von N2 Schritten in der Größenordnung von N logN Schritten erfordert.]. Wenn z. B. N = 5 und zwei beispielhafte Polynome genommen werden, ergibt die Sternmultiplikation: (x4 + 2x2 – 3x + 2)*(2x4 + 3x3 + 5x – 1) = 2x8 + 3x7 + 4x6 + 5x5 – 6x4 + 16x3 – 17x2 + 13x – 2 = 2x3 + 3x2 + 4x + 5x – 6x4 + 16x3 – 17x2 + 13x – 2 = –6x4 + 18x3 – 14x2 + 17x + 3
  • [[Ein sicheres System kann z. B. N = 167 oder N = 263 verwenden.]] [Diese Ausführungsform verwendet den Ring von Polynomen mit ganzzahligen Koeffizienten modulo des Ideals, das aus allen Vielfachen von xN – 1 besteht. Allgemeiner könnten Polynome modulo eines anderen Ideals verwendet werden; und noch allgemeiner könnte ein anderer Ring R verwendet werden. Für weitere Informationen über Ringe und Ideale wird z. B. auf Topics in Algebra von I. N. Herstein verwiesen.]
  • Ein weiterer Aspekt der vorliegenden Ausführungsform umfasst das Reduzieren der Koeffizienten eines Polynoms modulo einer ganzen Zahl wie etwa des Ideals q. Im Wesentlichen heißt dies Dividieren jedes Koeffizienten durch q und Ersetzen des Koeffizienten durch seinen Rest. Falls z. B. q = 128 ist und ein Koeffizient 2377 ist, würde dieser Koeffizient durch 73 ersetzt, da 2377, dividiert durch 128, gleich 18 ist, wobei der Rest 73 ist. Allerdings ist es leichter, "zentrierte Reste" zu verwenden. Das heißt, falls der Rest zwischen 0 und q/2 liegt, wird er nicht geändert, während dann, wenn er zwischen q/2 und q liegt, q von ihm subtrahiert wird. Dementsprechend würde 2377 unter Verwendung zentrierter Reste für q = 128 durch –55 ersetzt, da –55 = 73 – 128 ist.
  • Um anzugeben, dass dieser Restprozess ausgeführt wird, wird ein dreifaches Gleichheitszeichen (≡) zusammen mit der Bezeichnung "mod q" verwendet. Das Folgende ist ein Beispiel, das die Sternmultiplikation von zwei Polynomen mit einer Reduktion modulo 5 kombiniert. Das Ergebnis verwendet zentrierte Reste. (x4 + 2x2 – 3x + z)*(2x4 + 3x3 + 5x – 1) = –6x4 + 18x3 – 14x2 + 17x + 3 ≡ –x4 – 2x3 + x2 + 2x – 2(mod 5)
  • Beim Erzeugen eines Kryptosystems mit öffentlichem Schlüssel in Übereinstimmung mit einer Ausführungsform hiervon (und mit den zuvor angegebenen kleinen Zahlen zur Erleichterung der Darstellung) ist ein erster Schritt das Wählen ganzzahliger Parameter N, K, p und q. Zum Beispiel wird
    N = 5, K = 1, p = 3, q = 128
    gewählt. [[Ein sicheres System kann z. B. N = 167, K = 6, p = 3, q = 216 = 65536 verwenden.]] Vorzugsweise sind p und q teilerfremd; d. h., sie haben keine gemeinsamen Faktoren größer als 1. In Anhang 1 ist eine Diskussion der Attraktivität, die Ideale p und q tellerfremd zu haben, dargelegt. Einige Mengen von Polynomen werden wie folgt gewählt:
    • Figure 00120001
      = {Polynome, deren Koeffizient –2-en, –1-en, 0-en, 1-en und 2-en sind}
    • Figure 00120002
      = {Polynome mit zwei –1-en, zwei 1-en und einer 0 als Koeffizienten}
    • Figure 00120003
      = {Polynome, deren Koeffizienten –1-en, 0-en und 1-en sind}
  • [[Ein sicheres System kann z. B.
    • Figure 00120004
      = {Polynome, deren Koeffizienten zwischen –177 und 177 liegen}
    • Figure 00120005
      = {Polynome, deren Koeffizienten vierzig 1-en und vierzig –1-en sind und deren Rest 0-en sind}
    • Figure 00120006
      = {Polynome, deren Koeffizienten zwischen –3 und 3 liegen}
    verwenden. (Anmerkung: Die Polynome haben den Grad N – 1, sodass die Polynome für die sicheren Parameter des Beispiels den Grad 166 haben. Ferner besteht die tatsächliche Nachricht m, die verschlüsselt wird, aus den Resten, wenn die Koeffizienten von m durch p dividiert werden, wobei in diesem Beispiel p = 3 ist.)]]
  • Die Menge
    Figure 00120007
    wird zum Erzeugen des Schlüssels für das Kryptosystem verwendet, die Menge
    Figure 00120008
    wird für das Verschlüsseln von Nachrichten verwendet und die Menge
    Figure 00120009
    ist die Menge möglicher Nachrichten. Zum Beispiel ist
    2x4 – x3 + x – 2 in der Menge
    Figure 00130001
    und
    x4 – x3 – x2 + 1 in der Menge
    Figure 00130002
    .
  • Um die Schlüsselerzeugung dieses Beispiels zu implementieren, wählt der Schlüsselerzeuger, der hier Dan genannt wird, aus der Menge
    Figure 00130003
    zwei Polynome f und g. In diesem vereinfachten Beispiel ist K = 1, sodass es ein Polynom g gibt. Es wird angenommen, dass Dan f = x4 – x3 + 2x2 – 2x + 1 g = x4– x1 + x2 – 2x + 2wählt. [[Ein sicheres System kann z. B. K + 1 Polynome f, g1, ..., gK
    Figure 00130004
    mit K = 6 verwenden.]]
  • Eine Anforderung hiervon ist, dass fein Inverses modulo q und ein Inverses modulo p besitzen muss. Das heißt, es muss Polynome Fq und Fp geben, sodass Fq*f ≡ 1(mod q)und Fp*f ≡ 1(mod p)ist. Zum Berechnen von Fq und Fp kann der gut bekannte euklidische Algorithmus verwendet werden. Es wird hier z. B. auf Anhang II hiervon verwiesen. (Einige f können keine Inversen haben, wobei Dan in diesem Fall zurückgehen und ein anderes f wählen müsste.) Für das obige Beispiel f ist Fq = 103x4 + 29x3 + 116x2 + 79x + 58, Fp = 2x4 + 2x.
  • Um zu prüfen, dass dies das richtige Fq für f ist, kann Fq*f = (103x4 + 29x3 + 116x2 + 79x + 58)*(x4 – x3 + 2x2 – 2x + 1) = 256x4 + 256x – 127 ≡ 1(mod 128) multipliziert werden. Ähnlich kann Fp*f = (2x4 + 2x)*(x4 – x3 + 2x2 – 2x + 1) = 6x3 – 6x2 + 6x – 2 ≡ 1(mod 3)multipliziert werden, um zu prüfen, dass Fp richtig ist.
  • Nun ist der Schlüsselerzeuger Dan bereit, seinen öffentlichen Schlüssel zu erzeugen, d. h. das Polynom h, das durch h ≡ Fq*g(mod q)gegeben ist. [[Ein sicheres System kann z. B. K Polynome h1, ..., hK verwenden, die durch hi ≡ Fq*gi(mod q)mit i = 1, 2, ..., K
    mit K = 6 gegeben sind.]]
  • Weiter mit dem Beispiel würde Dan Fq*g = (103x4 + 29x3 + 116x2 + 79x + 58)*(x4 – x3 + x2 – 2x + 2) = 243x4 – 50x3 + 58x2 + 232x – 98 ≡ –13x4 – 50x3 + 58x2 – 24x + 30(mod 128)berechnen. Daraufhin ist Dans öffentlicher Schlüssel das Polynom h = –13x4 – 50x3 + 58x2 – 24x + 30.
  • Dans privater Schlüssel ist das Paar von Polynomen (f, Fp). Da Fp immer aus f berechnet werden kann, kann im Prinzip das Polynom f selbst als der private Schlüssel wirken; in der Praxis würde Dan aber wahrscheinlich wünschen, dass Fp im Voraus berechnet und gesichert wird.
  • Im nächsten Teil des Beispiels wird die Verschlüsselung mit dem öffentlichen Schlüssel beschrieben. Es wird angenommen, dass die Verschlüsslerin, die hier Cathy genannt wird, Dan unter Verwendung seines öffentlichen Schlüssels h eine Nachricht senden möchte. Sie wählt eine Nachricht aus der Menge öffentlicher Nachrichten
    Figure 00150001
    . Zum Beispiel wird angenommen, dass sie die Nachricht m = x4 – x3 + x2 + 1 senden möchte. Um diese Nachricht zu verschlüsseln, wählt sie zufällig ein Polynom ∅ aus der Menge
    Figure 00150002
    . Zum Beispiel wird angenommen, dass sie ø = –x4 + x3 – x2 + 1wählt. Sie verwendet dieses zufällig gewählte Polynom ∅, Dans öffentlichen Schlüssel h (sowie p und q, die Teil des öffentlichen Schlüssels sind) und ihre Klartextnachricht m, um unter Verwendung der Formel e ≡ pø*h + m(mod q)die verschlüsselte Nachricht e zu erzeugen. [[Für das sichere Beispiel kann ein sicheres System K öffentliche Schlüssel h1, ..., hK mit K = 6 verwenden. Um eine Nachricht zu verschlüsseln, kann Cathy aus der Menge
    Figure 00150003
    zufällig K Polynome ∅1, ..., ∅K wählen und daraufhin die verschlüsselte Nachricht e durch Berechnen von e ≡ p∅1*h1 + p∅2*h2 + ... + p∅K*nK + m(mod q) erzeugen.]] Eine Alternative wäre, h gleich pFq*g(mod q) zu setzen, woraufhin die Nachricht unter Verwendung der Formel e ≡ ∅*h + m(mod q) verschlüsselt werden kann. Für das vorliegende Beispiel berechnet Cathy pø*h + m = 3(–x4 + x3 – x2 + 1)*(-13x4 – 50x3 + 58x2 – 24x + 30) + (x4 – x3 + x2 + 1) = –374x4 + 50x3 + 196x2 – 357x + 487 ≡ 10x4 + 50x3 – 60x2 + 27x – 25(mod 128),
  • Somit ist Cathys verschlüsselte Nachricht das Polynom e = 10x4 + 50x3 – 60x2 + 27x – 25 wobei sie diese verschlüsselte Nachricht an Dan sendet.
  • Im nächsten Teil des Beispiels wird die Entschlüsselung unter Verwendung des privaten Schlüssels beschrieben. Um die Nachricht e zu entschlüsseln, verwendet Dan zunächst seinen privaten Schlüssel f, um das Polynom a ≡ f*e(mod q)zu berechnen. Für das verwendete Beispiel berechnet er f*e = (x4 – x3 + 2x2 – 2x + 1)*(10x4 + 50x2 – 60x2 + 27x – 25) = –262x4 + 259x3 – 124x2 – 13x + 142 ≡ –6x4 + 3x3 + 4x2 – 13x + 14(mod 128),sodass das Polynom a a = –6x4 + 3x3 + 4x2 – 13x + 14ist. Nachfolgend verwendet Dan Fp, die andere Hälfte seines privaten Schlüssels, um Fp*a(mod p)zu berechnen, wobei das Ergebnis die entschlüsselte Nachricht ist. Somit berechnet Dan für das vorliegende Beispiel Fp*a = (2x4 + 2x)*(–6x4 + 3x3 + 4x2 – 13x + 14) = 34x4 – 4x3 – 20x2 + 36x – 38 ≡ x4 – x3 + x2 + 1(mod 3).
  • Zur weiteren Beschreibung dessen, weshalb die Verschlüsselung funktioniert, wird auf Anhang I verwiesen.
  • In einer weiteren Ausführungsform der Erfindung ist der Ring ein Ring von Matrizen. Zum Beispiel kann der Ring
    R = (der Ring von M × M-Matrizen mit ganzzahligen Koeffizienten)
    verwendet werden. Ein Element von R sieht wie
    Figure 00170001
    aus, wobei die Koeffizienten aij ganze Zahlen sind. Addition und Multiplikation sind wie für Matrizen üblich, wobei der Prozessor die Matrixelemente selbstverständlich als Zahlen behandeln kann, die auf herkömmliche Weise gespeichert und bearbeitet werden. Es sei N = M2, sodass eine Matrix in R N Koeffizienten hat. Es werden teilerfremde ganze Zahlen p und q gewählt.
  • Um einen privaten Schlüssel zu erzeugen, wählt Dan in diesem Fall K + 2 Matrizen aus R. Diese Matrizen können
    f, g, w1, w2, ..., wK.
    genannt werden. Diese Matrizen sollten die Eigenschaft haben, dass f, g, w1, ..., wK recht kleine Koeffizienten haben und dass jedes wi wi ≡ 0(mod p)genügt. (Mit anderen Worten, jeder Koeffizient jedes wi ist ein Vielfaches von p.) Um seinen Schlüssel zu erzeugen, muss Dan Inverse für f und g modulo p und q ermitteln. Somit ermittelt er Matrizen Fp, Fq, Gp, Gq in R, die fFp ≡ I(mod p) fFq ≡ I(mod q) gGp ≡ I(mod p) gGq ≡ I(mod q)genügen, wobei I die M × M-Einheitsmatrix ist. Im Allgemeinen ist dies recht leicht möglich; wobei Dan einfach ein neues f oder g wählt, falls zufällig eine der Inversen nicht existiert.
  • Dans öffentlicher Schlüssel ist eine Liste von K Matrizen (h1, h2, ..., hK), die durch die Bedingung hi ≡ FqwiGq(mod q)für i = 1, 2 ..., K
    bestimmt sind. (Es wird angemerkt, dass diese wi modulo p kongruent zu null sind.) Sein privater Schlüssel sind die vier Matrizen (f, g, Fp, Gp). Im Prinzip können f und g allein als der private Schlüssel verwendet werden, während es in der Praxis aber effizienter ist, Fp, Gp im Voraus zu berechnen und zu speichern.
  • Nachfolgend wird die Verschlüsselung für dieses Matrixbeispiel beschrieben. Es wird angenommen, dass Cathy eine Nachricht m verschlüsseln möchte. Die Nachricht m ist eine Matrix mit Koeffizienten modulo p. Um ihre Nachricht zu verschlüsseln, wählt sie zufällig einige ganze Zahlen ∅1, ..., ∅K, die einer gewissen Bedingung genügen; z. B. könnten sie als nichtnegative Zahlen gewählt werden, deren Summe ∅1 + ... + ∅K gleich einem vorgegebenen Wert d ist. (Es wird angemerkt, dass die ∅1 normale Zahlen und keine Matrizen sind. Äquivalent können sie als Vielfache der Einheitsmatrix betrachtet werden, sodass sie mit jedem Element des Rings R kommutieren.)
  • Nachdem Cathy ihre ∅i gewählt hat, erzeugt sie durch die Vorschrift e ≡ ø1h1 + øh2 + ... + øKhK + m(mod q)ihre verschlüsselte Nachricht e.
  • Nachfolgend wird die Entschlüsselung für dieses Matrixbeispiel beschrieben. Es wird nun angenommen, dass Dan die verschlüsselte Nachricht e empfangen hat und sie entziffern möchte. Er beginnt damit, dass er die Matrix a berechnet, die a ≡ feg(mad q)genügt. Wie üblich, wählt Dan die Koeffizienten von a in einem beschränkten Bereich wie etwa von –q/2 bis q/2 (d. h. als nullzentrierte Koeffizienten) oder von 0 bis q – 1.
  • Falls die Parameter richtig gewählt worden sind, ist die Matrix a genau gleich der Summe a = ø1w1 + ø2w2 + ... øKwK + fmg.
  • (Dies ist modulo q immer wahr, wobei aber ein Schlüsselpunkt ist, dass dies nicht nur modulo q, sondern eine genaue Gleichheit ist, falls q groß genug ist.) Dans nächster Schritt ist das Reduzieren von a modulo p, angenommen b ≡ fmg(mod p).
  • Da alle Koeffizienten der wi durch p teilbar sind, heißt das, dass b ≡ fmg(mod p)ist. Schließlich berechnet Dan, um die ursprüngliche Nachricht m wiederzugewinnen, FpbGp(mod p).
  • Die beschriebene M × M-Matrix-Ausführungsform besitzt eine ausgezeichnete Betriebszeit. Die Verschlüsselung erfordert nur Additionen und braucht in der Größenordnung von M2 Operationen. Die Entschlüsselung erfordert zwei Matrixmultiplikationen von M × M-Matrizen, sodass sie in der Größenordnung von M3 Operationen braucht. Die Nachrichtenlänge liegt in der Größenordnung von M2, sodass dann, wenn N die natürliche Nachrichtenlänge bezeichnet (d. h. N = M2), die Matrixausführungsform O(N) Schritte zum Verschlüsseln und O(N3/2) Schritte zum Entschlüsseln erfordert. Zum Vergleich benötigt die Polynomausführungsform O(N2) Schritte zum Verschlüsseln und O(N2) Schritte zum Entschlüsseln und erfordert das RSA-System mit öffentlichem Schlüssel O(N3) Schritte zum Verschlüsseln und O(N3) Schritte zum Entschlüsseln.
  • Eine vorläufige Analyse legt nahe, dass die einzigen natürlichen Gitterangriffe auf die Matrixausführungsform die Verwendung von Gittern erfordern, deren Dimension N2 + N (oder größer) ist. Dies wäre eine wesentliche Sicherheitsverbesserung gegenüber den 2N-dimensionalen Gittern, die zum Angriff auf die Polynomausführungsform verwendet werden.
  • Um Brechstangenangriffe (oder potentielle Angriffe des Treffens in der Mitte) zu vermeiden, ist es notwendig, dass der Stichprobenraum für die ∅1 recht groß, angenommen zwischen 2100 und 2200, ist. Allerdings ist dies nicht schwierig zu erreichen. Falls die ∅i z. B. nicht negativ mit der Summe d gewählt werden, besitzt der Stichprobenraum
    Figure 00200001
    Elemente. Falls K = 15 und d = 1024 genommen wird, wird somit z. B. ein Stichprobenraum mit 2103,8 Elemente erhalten.
  • Die Größe des öffentlichen Schlüssels ist KM2 log2(q) Bits und die Größe des privaten Schlüssels ist 2M2 log2(pq) Bits. Dies sind beides praktische Größen.
  • 2 veranschaulicht eine Grundprozedur, die mit einem Verschlüsselungssystem mit öffentlichem Schlüssel genutzt werden kann, wobei sie sich auf Routinen bezieht, die durch weitere Ablaufpläne veranschaulicht werden, auf die Bezug genommen wird und die Merkmale in Übereinstimmung mit einer Ausführungsform der Erfindung beschreiben. Der Block 210 repräsentiert die Generierung der Informationen des öffentlichen Schlüssels und des privaten Schlüssels und die "Veröffentlichung" des öffentlichen Schlüssels. Die Routine einer Ausführungsform hiervon ist in Verbindung mit dem Ablaufplan aus 3 beschrieben. In dem vorliegenden Beispiel kann angenommen werden, dass diese Operation in dem Prozessorsystem 105 ausgeführt wird. Die Informationen des öffentlichen Schlüssels können veröffentlicht werden; d. h., einem beliebigen Mitglied der Öffentlichkeit oder einer beliebigen gewünschten Gruppe, von dem der Inhaber des öffentlichen Schlüssels verschlüsselte Nachrichten zu empfangen wünscht, zur Verfügung gestellt werden. Üblicherweise, jedoch nicht notwendigerweise, kann der öffentliche Schlüssel in einer zentralen Bibliothekseinrichtung oder auf einer Website öffentlicher Schlüssel zur Verfügung gestellt werden, wo ein Verzeichnis von Inhabern öffentlicher Schlüssel und ihrer öffentlichen Schlüssel unterhalten wird. In dem vorliegenden Beispiel ist angenommen, dass der Anwender des Prozessorsystems 155 eine vertrauliche Nachricht an den Anwender des Prozessorsystems 105 senden möchte und dass der Anwender des Prozessorsystems 155 den veröffentlichten öffentlichen Schlüssel des Anwenders des Prozessorsystems 150 kennt.
  • Der Block 220 repräsentiert die Routine, die von dem Nachrichtensender (d. h. in diesem Beispiel, von dem Anwender des Prozessorsystems 155) verwendet werden kann, um die Klartextnachricht unter Verwendung des öffentlichen Schlüssels des beabsichtigten Nachrichtenempfängers zu verschlüsseln. Diese Routine ist in Übereinstimmung mit einer Ausführungsform der Erfindung in Verbindung mit dem Ablaufplan aus 4 beschrieben. Daraufhin wird die verschlüsselte Nachricht über den Kanal 50 (1) übertragen.
  • Der Block 260 aus 2 repräsentiert die Routine für die Entschlüsselung der verschlüsselten Nachricht zum Wiedergewinnen der Klartextnachricht. In dem vorliegenden Beispiel wird diese Funktion durch den Anwender des Prozessorsystems 105 ausgeführt, der die Informationen des privaten Schlüssels nutzt. Die Entschlüsselungsroutine für eine Ausführungsform der Erfindung ist in Verbindung mit dem Ablaufplan aus 5 beschrieben.
  • Nunmehr anhand von 3 ist ein Ablaufplan der Routine zum Erzeugen des öffentlichen und des privaten Schlüssels gezeigt, wie sie allgemein durch den Block 210 aus 2 repräsentiert ist. In dem vorliegenden Beispiel kann die Routine zum Programmieren des Prozessors 110 des Prozessorsystems 105 genutzt werden. Der Block 305 repräsentiert das Wählen ganzzahliger Parameter N, p und q. Wie zunächst oben beschrieben wurde, bestimmt N den Grad der zu erzeugenden Polynome f und gi, wobei p bzw. q die zwei beim Erzeugen der Sternprodukte verwendeten Ideale sind. Der Block 315 repräsentiert die Auswahl von K, d. h. die Anzahl der zu verwendenden Polynome gi. In dem obigen vereinfachten Beispiel war K1, wobei angemerkt wurde, dass ein bestimmtes beispielhaftes verhältnismäßig sicheres System K = 6 verwenden könnte. Nachfolgend repräsentiert der Block 325 die Wahl von Zufallspolynomen f, g1, g2, ..., gK. Die Koeffizienten können z. B. unter Verwendung eines Zufallszahlengenerators gewählt werden, der auf bekannte Weise unter Verwendung verfügbarer Hardware oder Software implementiert sein kann. In der vorliegenden Ausführungsform ist jedes der Prozessorsysteme mit einem Zufallszahlengenerator versehen, der in 1 durch die Blöcke 130 bzw. 185 bezeichnet ist.
  • Der Block 340 repräsentiert die Anwendung des euklidischen Algorithmus, um in der oben beschriebenen Weise die Inversen Fq und Fp für das zuvor ausgewählte Polynom f zu bestimmen, falls diese Inversen existieren. Falls Fp, Fq nicht existieren, wird erneut in den Block 325 eingetreten und ein neues Polynom f gewählt. Die Schleife 330 wird so lange fortgesetzt, bis Polynome gewählt werden, für die die definierten Inversen berechnet werden können. [Die Wahrscheinlichkeit, dass die Inversen für ein gegebenes Polynom existieren, ist verhältnismäßig hoch, sodass allgemein eine verhältnismäßig kleine Anzahl von Durchläufen durch die Schleife 330 erwartet wird, bevor die Bedingung erfüllt ist.] Daraufhin wird in den Block 350 eingetreten, wobei dieser Block wie zunächst oben beschrieben die Berechnung des öffentlichen Schlüssels h in Übereinstimmung mit h = Fq*g(mod q)repräsentiert. [Für K > 1 gibt es Komponenten hi des öffentlichen Schlüssels für i = 1, 2, ..., K.] Wie durch den Block 360 repräsentiert ist, wird der private Schlüssel als die Polynome f, Fp behalten, woraufhin der öffentliche Schlüssel, wie durch den Block 370 repräsentiert ist, veröffentlicht werden kann.
  • 4 ist ein allgemein durch den Block 240 aus 2 repräsentierter Ablaufplan einer Routine zum Programmieren eines Prozessors wie etwa des Prozessors 160 des Prozessorsystems 155 (1) zur Implementierung der Verschlüsselung einer Klartextnachricht m. Die zu verschlüsselnde Nachricht wird eingegeben (Block 420) und es wird ein Zufallspolynom ∅ gewählt (Block 430). [Falls K > 1 ist, werden K Zufallspolynome ∅1, ∅2, ..., ∅K gewählt.] Das Polynom kann wie oben beschrieben aus der Menge
    Figure 00220001
    sein und die Zufallskoeffizienten können durch beliebige Hardware- oder Software-Mittel, z. B. durch den Zufallszahlengenerator 185, ausgewählt werden. Daraufhin kann die verschlüsselte Nachricht e als e = pø*h + m(mod q) berechnet werden (Block 450). Wie zunächst oben angemerkt wurde, ist für K größer als 1 die verschlüsselte Nachricht e ≡ p∅1*h1 + p∅2*h2 + ... + p∅k*nk + m(mod q). Die verschlüsselte Nachricht kann über den Kanal 50 an den Schlüsselinhaber gesendet werden (Block 460), der in dem vorliegenden Beispiel der Anwender des Prozessorsystems 105 ist.
  • 5 ist ein in 2 allgemein durch den Block 260 repräsentierter Ablaufplan einer Routine in Übereinstimmung mit einer Ausführungsform der Erfindung zum Entschlüsseln der verschlüsselten Nachricht. Der Block 530 repräsentiert den Empfang der verschlüsselten Nachricht e. Es werden die behaltenen Informationen des privaten Schlüssels, die die zuvor definierten Polynome f und Fp enthalten, und die ganzen Zahlen N, p und q abgerufen (Block 550). Nachfolgend repräsentiert der Block 570 die Berechnung von a ≡ f*e(mod q).
  • Daraufhin kann die hier als m' bezeichnete entschlüsselte Nachricht als m' ≡ Fp*a(mod p)berechnet werden (Block 580).
  • Die 6, 7 und 8 sind Ablaufpläne, die sich auf die oben beschriebene Matrixausführungsform beziehen. 6 ist ein Ablaufplan der Routine zum Erzeugen des öffentlichen und des privaten Schlüssels, wie sie allgemein durch den Block 210 aus 2 repräsentiert ist. Wie oben kann die Routine in dem vorliegenden Beispiel zum Programmieren des Prozessors 110 des Prozessorsystems 105 genutzt werden. Der Block 605 repräsentiert das Wählen ganzzahliger Parameter N, p und q, wobei N die Anzahl der Matrixkoeffizienten ist und p und q teilerfremde ganze Zahlen sind. Der Block 615 repräsentiert die Auswahl von K, die die Anzahl der Matrizen bestimmt. Nachfolgend repräsentiert der Block 625 die Wahl von Zufallsmatrizen f, g, w1, w2, ..., wk mit der Anforderung, dass die w1, w2, ..., wK alle modulo p kongruent zu 0 sind. Für diesen Zweck kann wieder der Zufallszahlengenerator 130 (1) verwendet werden.
  • Der Block 640 repräsentiert die Bestimmung der zuvor definierten Matrizen Fp, Fq, Gp und Gq. Falls diese Matrizen nicht existieren, wird erneut in den Block 625 eingetreten und werden neue Matrizen f und g gewählt. Die Schleife 630 wird fortgesetzt, bis Matrizen gewählt worden sind, für die die definierten Inversen berechnet werden können. Daraufhin wird in den Block 650 eingetreten, wobei dieser Block die Berechnung des öffentlichen Schlüssels, einer Liste von K Matrizen (h1, h2, ..., hK), die durch die Bedingung hi ≡ FqwiGq(mod q)für i = 1, 2, ..., K
    bestimmt sind, repräsentiert. Wie durch den Block 660 repräsentiert ist, wird der private Schüssel behalten, während die Matrizen (f, g, Fp, Gp) und der öffentliche Schlüssel, wie durch den Block 670 repräsentiert ist, daraufhin veröffentlicht werden können.
  • 7 ist ein allgemein durch den Block 240 aus 2 repräsentierter Ablaufplan einer Routine zum Programmieren eines Prozessors wie etwa des Prozessors 160 des Prozessorsystems 155 (1) zum Implementieren des Verschlüsselns einer Klartextnachricht m unter Verwendung der Technik der vorliegenden Matrixausführungsform. Die zu verschlüsselnde Nachricht wird eingegeben (Block 720) und es werden die Zufallszahlen ∅1, ∅2, ..., ∅k gewählt (Block 730). Die ganzen Zahlen können durch den Zufallszahlengenerator 185 (1) ausgewählt werden. Daraufhin kann die verschlüsselte Nachricht e als e ≡ ø1h1 + ø2h2 + ... + øKhK + m(mod q)berechnet werden (Block 750). Die verschlüsselte Nachricht kann über den Kanal 50 an den Inhaber gesendet werden (Block 760), der in dem vorliegenden Beispiel der Anwender des Prozessorsystems 105 ist.
  • 8 ist ein in 2 allgemein durch den Block 260 repräsentierter Ablaufplan einer Routine zum Entschlüsseln der verschlüsselten Nachricht in Übereinstimmung mit der vorliegenden Matrixausführungsform. Der Block 830 repräsentiert das Empfangen der verschlüsselten Nachricht e. Es werden die behaltenen Informationen des privaten Schlüssels, die die zuvor definierten, F, g, Fp und Gp und die ganzen Zahlen N, p und q enthalten, abgerufen (Block 850). Daraufhin repräsentiert der Block 870 die Berechnung von a ≡ feg(mod q).
  • Nachfolgend wird a als b ≡ a(mod p)modulo p auf b reduziert (Block 880). Daraufhin wird die entschlüsselte Nachricht als m' ≡ FpbGp(mod p)berechnet (Block 890).
  • Die Erfindung ist in Bezug auf bestimmte bevorzugte Ausführungsformen beschrieben worden, wobei aber dem Fachmann Änderungen innerhalb des Erfindungsgedankens und des Umfangs der Erfindung einfallen. Zum Beispiel können die öffentlichen oder privaten Schlüssel selbstverständlich auf beliebigen geeigneten Medien, z. B. auf einer "Chipkarte", gespeichert werden, die mit einem Mikroprozessor versehen sein kann, der die Verschlüsselung und/oder Entschlüsselung ausführen kann, sodass zu und/oder von der Chipkarte verschlüsselte Nachrichten übermittelt werden können.
  • NTRU: EIN RING-BASIERTES KRYPTOSYSTEM MIT ÖFFENTLICHEM SCHLÜSSEL
  • JEFFREY HOFFSTEIN, JILL PIPHER, JOSEPH H. SILVERMAN
  • Es wird NTRU, ein neues Kryptosystem mit öffentlichem Schlüssel, beschrieben. Das NTRU weist annehmbar kurze, leicht zu erzeugende Schlüssel, eine hohe Geschwindigkeit und niedrige Speicheranforderungen auf. Die NTRU-Verschlüsselung und -Entschlüsselung verwendet ein Mischsystem, das durch Polynomalgebra nahegelegt wird, kombiniert mit einem Gruppierungsprinzip, das auf elementarer Wahrscheinlichkeitstheorie beruht. Die Sicherheit des NTRU-Kryptosystems kommt von der Wechselwirkung des Polynommischsystems mit der Unabhängigkeit der Reduktion modulo zweier teilerfremder ganzer Zahlen p und q.
  • INHALT
    • Einleitung
    • Beschreibung des NTRU-Algorithmus
    • Parameterauswahl
    • Sicherheitsanalyse
    • Implementierungsbetrachtungen
    • Angemessene Sicherheitsparameter für das NTRU
    • Vergleich mit anderen PKCS
    • Ein elementares Lemma
  • EINLEITUNG
  • Es besteht beträchtliches Interesse an der Erzeugung effizienter und rechtentechnisch preiswerter Kryptosysteme mit öffentlichem Schlüssel, seit Diffie und Hellman (4) erläuterten, wie solche Systeme unter Verwendung von Einwegfunktionen erzeugt werden könnten. Derzeit ist das am umfassendsten verwendete System mit öffentlichem Schlüssel das 1978 von Rivest, Shamir und Adelman [10] erzeugte RSA, das auf der Schwierigkeit der Faktorisierung großer Zahlen beruht. Weitere Systeme enthalten das McElicie-System [9], das sich auf Fehlerkorrekturcodes stützt, und ein neuestes System von Goldreich, Goldwasser und Halevi [5], das auf der Schwierigkeit von Gitterreduktionsproblemen beruht.
  • In dieser Abhandlung wird ein neues Kryptosystem mit öffentlichem Schlüssel beschrieben, das hier das NTRU-System genannt wird. Die Verschlüsselungsprozedur verwendet ein Mischsystem, das auf Polynomalgebra und auf der Reduktion modulo zweier Zahlen p und q beruht, während die Entschlüsselungsprozedur ein Entmischsystem verwendet, dessen Gültigkeit von elementarer Wahrscheinlichkeitstheorie abhängt. Die Sicherheit des NTRU-Kryptosystems mit öffentlichem Schlüssel kommt von der Wechselwirkung des Polynommischsystems mit der Unabhängigkeit der Reduktion modulo p und q. Außerdem stützt sich die Sicherheit auf die (experimentell beobachtete) Tatsache, dass es für die meisten Gitter sehr schwierig ist, außerordentlich kurze (im Gegensatz zu mäßig kurzen) Vektoren zu ermitteln.
  • Es wird erwähnt, dass sich die Darstellung in dieser Abhandlung auf zwei wesentliche Arten von einem früheren, breit in Umlauf gebrachten, aber unveröffentlichten Preprint [7] unterscheidet. Zunächst wurde ein neuer Parameter K eingeführt, der zum Erzeugen von Systemen mit besseren Betriebseigenschaften verwendet werden kann. Zweitens wurde, zum größten Teil auf der Grundlage der zahlreichen Anmerkungen, die von Don Coppersmith, Johan Håstad und Adi Shamir persönlich, über E-Mail und in der neuesten Abhandlung [3] empfangen wurden, die Analyse gitterbasierter Angriffe erweitert und näher erläutert. Bei dieser Gelegenheit sei ihnen für ihr Interesse und ihre Hilfe gedankt.
  • Das NTRU passt in den allgemeinen Rahmen eines wahrscheinlichkeitstheoretischen Kryptosystems, wie es in [1] und [6] beschrieben ist. Das heißt, dass die Verschlüsselung ein Zufallselement enthält, sodass jede Nachricht viele mögliche Verschlüsselungen besitzt. Die Verschlüsselung und die Entschlüsselung mit dem NTRU sind außerordentlich schnell und die Schlüsselerzeugung ist schnell und leicht. Wegen Einzelheiten wird auf die Abschnitte 4 und 5 verwiesen, wobei hier aber angemerkt wird, dass das NTRU O(N2) Operationen zum Verschlüsseln oder Entschlüsseln eines Nachrichtenblocks der Länge N braucht, was es beträchtlich schneller als die O(N3) Operationen macht, die das RSA erfordert. Ferner sind die NTRU-Schlüssellängen O(N), was sich gut mit den Schlüssellängen O(N2) vergleichen lässt, die für andere "schnelle" Systemen mit öffentlichem Schlüssel wie etwa [9, 5] erforderlich sind.
  • BESCHREIBUNG DES NTRU-ALGORITHMUS
  • Schreibweise. Ein NTRU-Kryptosystem hängt von vier ganzzahligen Parametern (N, K, p, q) und von drei Mengen
    Figure 00280001
    von Polynomen vom Grad N – 1 mit ganzzahligen Koeffizienten ab. Es wird in dem Ring R = Z[X]/(XN – 1) gearbeitet. Ein Element F ∊ R wird als ein Polynom oder als ein Vektor
    Figure 00280002
    geschrieben. Zur Bezeichnung der Multiplikation in R wird ⊛ geschrieben. Diese Sternmultiplikation ist explizit als ein zyklisches Faltungsprodukt
    Figure 00280003
    gegeben. Wenn eine Multiplikation modulo (angenommen) q ausgeführt wird, bedeutet das, dass die Koeffizienten modulo q reduziert werden.
  • Anmerkung. Im Prinzip erfordert die Berechnung eines Produkts F ⊛ N2 Multiplikationen. Allerdings hat für ein typisches von dem NTRU verwendetes Produkt entweder F oder G kleine Koeffizienten, sodass die Berechnung von F ⊛ G sehr schnell ist. Andererseits könnte es schneller sein, zur Berechnung von Produkten F ⊛ G in O(N log N) schnelle Fourier-Transformationen zu verwenden, falls N groß gewählt wird.
  • Schlüsselerzeugung. Zur Erzeugung eines NTRU-Schlüssels wählt Dan zufällig K + 1 Polynome f, g1, ..., gK
    Figure 00290001
    . Das Polynom f muss der Zusatzanforderung genügen, dass es Inverse modulo q und modulo p besitzt. Für die meisten Wahlen von f ist dies für geeignete Parameterwahlen wahr, wobei die tatsächliche Berechnung dieser Inversen unter Verwendung einer Modifikation des euklidischen Algorithmus leicht ist. Diese Inversen werden durch Fq und Fp bezeichnet, d. h. Fq ⊛ f ≡ 1(mod q) und Fp ⊛ f ≡ 1(mod p). (1)
  • Nachfolgend berechnet Dan die Größen hi ≡ fq ⊛ gi(mod q), 1 ≤ i ≤ K. (2)
  • Dans öffentlicher Schlüssel ist eine Liste von Polynomen
    (h1, h2, ..., hK).
  • Dans privater Schlüssel ist das einzelne Polynom f, obgleich er in der Praxis auch Fp speichern wollen wird.
  • Verschlüsselung. Es wird angenommen, dass Cathy (der Verschlüssler) eine Nachricht an Dan (den Entschlüssler) senden möchte. Sie beginnt damit, dass sie aus der Liste von Klartexten
    Figure 00290002
    eine Nachricht m auswählt. Nachfolgend wählt sie zufällig K Polynome ϕ1, ..., ϕK
    Figure 00290003
    und verwendet Dans öffentlichen Schlüssel (h1, ..., hK), um
    Figure 00290004
    zu berechnen. Dies ist die verschlüsselte Nachricht, die Cathy an Dan sendet.
  • Entschlüsselung. Es wird angenommen, dass Dan von Cathy die Nachricht e empfangen hat und sie unter Verwendung seines privaten Schlüssels f entschlüsseln möchte. Um dies effizient zu tun, sollte Dan das oben beschriebene Polynom Fp im Voraus berechnet haben.
  • Um e zu entschlüsseln, berechnet Dan zunächst a ≡ f ⊛ e(mod q),wobei er die Koeffizienten von a in dem Intervall von –q/2 bis q/2 wählt. Indem Dan a nun als ein Polynom mit ganzzahligen Koeffizienten behandelt, gewinnt er durch Berechnen von Fp ⊛ a(mod p)die Nachricht wieder.
  • Anmerkung. Für geeignete Parameterwerte gibt es eine äußerst hohe Wahrscheinlichkeit, dass die Entschlüsselungsprozedur die ursprüngliche Nachricht wiedergewinnt. Allerdings können einige Parameterwahlen einen gelegentlichen Entschlüsselungsfehler verursachen, sodass wahrscheinlich in jeden Nachrichtenblock einige wenige Prüfbits aufgenommen werden sollten. Die übliche Ursache für einen Entschlüsselungsfehler ist, dass die Nachricht falsch zentriert ist. In diesem Fall kann Dan die Nachricht wiedergewinnen, indem er die Koeffizienten von a ≡ f ⊛ e(mod q) in einem etwas anderen Intervall, z. B. von –q/2 + x bis q/2 + x für einen kleinen (positiven oder negativen) Wert von x, wählt. Falls kein Wert von x funktioniert, heißt es, dass ein Lückenfehler vorliegt und die Nachricht nicht so leicht entschlüsselt werden kann. Für gut gewählte Parameterwerte tritt dies so selten auf, dass es in der Praxis ignoriert werden kann.
  • Weshalb die Entschlüsselung funktioniert. Das Polynom a, das Dan berechnet, genügt
    Figure 00310001
  • Es wird dieses letzte Polynom
    Figure 00310002
    betrachtet. Für geeignete Parameterwerte kann sichergestellt werden, dass (fast immer) alle seine Koeffizienten zwischen –q/2 und q/2 liegen, sodass es sich nicht ändert, falls seine Koeffizienten modulo q reduziert werden. Das heißt, dass Dan, wenn er die Koeffizienten von f ⊛ e modulo q in dem Intervall von –q/2 bis q/2 reduziert, genau das Polynom
    Figure 00310003
    wiedergewinnt. Reduzieren von a modulo p gibt ihm daraufhin das Polynom f ⊛ m(mod p), wobei die Multiplikation mit Fp die Nachricht m(mod p) wiedergewinnt.
  • PARAMETERAUSWAHL
  • Schreibweise und eine Normabschätzung. Die Breite eines Elements F ∊ R wird als
    Figure 00310004
    definiert. Wie die Schreibweise nahelegt, ist dies eine Art L-Norm auf R. Ähnlich wird eine zentrierte Norm L2 auf R durch
    Figure 00320001
    definiert. (Äquivalent ist |F|2/√N die Standardabweichung der Koeffizienten von F.)
  • Satz. Für ein beliebiges ε > 0 gibt es Konstanten c1, c2 > 0, die von ε, N und K abhängen, derart, dass für zufällig gewählte Polynome F1, ..., FK, G1 ..., GK ∊ R die Wahrscheinlichkeit, dass sie
    Figure 00320002
    erfüllen, größer 1 – ε ist.
  • Natürlich wäre dieser Satz vom praktischen Standpunkt aus nutzlos, falls das Verhältnis c2/c1 für kleine ε sehr groß wäre. Allerdings stellt sich heraus, dass die Konstanten c1, c2 selbst für mäßig große Werte von N und K und für sehr kleine Werte von ε überhaupt nicht außerordentlich groß sind. Die Anmelder haben dies in einer großen Anzahl von Situationen experimentell überprüft und eine Skizze eines theoretischen Beweises.
  • Stichprobenräume. Als Beispiele typischer Stichprobenräume werden folgende gewählt:
    • Figure 00320003
      = {g ∊ R : g hat Koeffizienten zwischen einschließlich –(r – 1)/2 und (r – 1)/2},
    • Figure 00320004
      = {ϕ ∊ R : ϕ hat d Koeffizienten gleich 1, d Koeffizienten gleich –1, der Rest ist 0},
    • Figure 00320005
      = {m ∊ R : m hat Koeffizienten zwischen einschließlich –(s – 1)/2 und (s – 1)/2}.
  • Später wird zu sehen sein, dass es verschiedene Bedingungen gibt, denen r, d, s genügen müssen, um Sicherheit zu erzielen. Außerdem wird angemerkt, dass jedes ϕ ∊
    Figure 00330001
    die L2-Norm |ϕ|2 = √2d hat, während durchschnittliche Elemente g ∊
    Figure 00330002
    und m ∊
    Figure 00330003
    die L2-Normen |g|2 = √N(r² – 1)/12 bzw. |m|2 = √N(s² – 1)/12 haben. Zur leichten Schreibweise wird für die durchschnittliche L2-Norm der Elemente
    Figure 00330004
    in dieser Reihenfolge Lg, Lϕ, Lm geschrieben.
  • Obgleich dies streng genommen nicht notwendig ist, wird die Zusatzannahme gemacht, dass Lm ≈ pLϕ ist. Diese Annahme erleichtert es, mögliche Gitterangriffe zu analysieren und diese Angriffe weniger wirksam zu machen. Als ein Beispiel wird hier d ≈ N/4 angenommen. Daraufhin wird s ≈ √6p genommen. Somit werden die in m enthaltenen natürlichen mod-p-Informationen durch zufälliges Addieren und Subtrahieren von p zu den Koeffizienten von m "verdichtet".
  • Ein Entschlüsselungskriterium. Dan kann die verschlüsselte Nachricht m entschlüsseln, sofern |Σ pϕi ⊛ gi + f ⊛ m| < q ist. Die Ungleichung (3) des obigen Satzes (mit K + 1 anstelle von K für eine hinreichend kleine Wahl von ε) kann verwendet werden, um
    Figure 00330005
    abzuschätzen. Somit muss Dan Parameter wählen, die der Entschlüsselungsbedingung c2pLgLϕ(K + 1) < q (4)genügen, um (mit der Wahrscheinlichkeit 1 – ε) entschlüsseln.
  • §3 SICHERHEITSANALYSE
  • Angriffe des Treffens in der Mitte. Der Einfachheit halber (und zur Hilfe für den Angreifer) wird hier angenommen, dass K = 1 ist, sodass eine verschlüsselte Nachricht wie e ≡ ϕ ⊛ h + m(mod q) aussieht. Andrew Odlyzko hat darauf hingewiesen, dass es einen Angriff des Treffens in der Mitte gibt, der gegen ϕ verwendet werden kann, wobei hier beobachtet wird, dass ein ähnlicher Angriff auch auf den privaten Schlüssel f zutrifft. Kurz gesagt wird f zweigeteilt, angenommen f = f1 + f2, und daraufhin f1 ⊛ e gegenüber –f2 ⊛ e angepasst und nach (f1, f2) derart gesucht, dass die entsprechenden Koeffizienten näherungsweise den gleichen Wert haben. Somit müssen f, g und ϕ aus Mengen gewählt werden, die etwa 2160 Elemente enthalten, um einen Sicherheitsgrad von (angenommen) 280 zu erhalten.
  • Mehrfachübertragungsangriffe. Der Einfachheit halber wird wieder K = 1 angenommen. Es wird beobachtet, dass der Angreifer Betty einen großen Teil der Nachricht wiedergewinnen kann, wenn Cathy eine einzelne Nachricht m unter Verwendung des gleichen öffentlichen Schlüssels, aber verschiedener zufälliger ϕ, mehrmals sendet. Kurz gesagt wird angenommen, dass Cathy ei ≡ ϕi ⊛ h + m(mod q) für i = 1, 2, ..., r überträgt. Betty kann daraufhin (ei – e1) ⊛ h–1(mod q) berechnen und dadurch ϕi – ϕ1(mod q) wiedergewinnen. Allerdings sind die Koeffizienten der ϕ so klein, dass sie ϕi – ϕ1 genau wiedergewinnt, woraus sie viele der Koeffizienten ϕ1 genau wiedergewinnt. Selbst wenn r eine mäßige Größe (angenommen 4 oder 5 hat), kann Betty genug von ϕ1 wiedergewinnen, um alle Möglichkeiten mit der Brechstange testen und dadurch m wiedergewinnen zu können. Somit sind Mehrfachübertragungen ohne irgendeine weitere Verwürfelung der darunterliegenden Nachrichten nicht empfehlenswert. Es wird hier betont, dass Betty selbst dann, wenn sie auf diese Weise eine einzelne Nachricht entschlüsselt, diese Informationen nicht beim Entschlüsseln beliebiger weiteren Nachrichten helfen.
  • Gitterbasierte Angriffe.
  • Zunächst einige Worte in Bezug auf die Gitterreduktion. Das Ziel der Gitterreduktion ist das Ermitteln eines oder mehrerer "kleiner" Vektoren in einem gegebenen Gitter
    Figure 00350001
    . Theoretisch kann der kleinste Vektor in
    Figure 00350002
    durch eine erschöpfende Suche ermittelt werden, was in der Praxis aber nicht möglich ist, falls die Dimension vom
    Figure 00350003
    groß ist. Der LLL-Algorithmus von Lenstra-Lenstra-Lovász [8] mit verschiedenen Verbesserungen von Schnorr [11, 12] u. a. ermittelt kleine Vektoren von
    Figure 00350004
    in Polynomzeit, ermittelt aber für die meisten Gitter mit großer Abmessung (angenommen ≥ 100) nicht den kleinsten Vektor, wobei die Lücke zwischen dem kleinsten LLL-erfassbaren Vektor und dem tatsächlich kleinsten Vektor mit der Dimension exponentiell zuzunehmen scheint. Zur Beschreibung der Sicherheit des NTRU gegenüber Gitterangriffen werden die folgenden drei Hypothesen über hochdimensionale Gitter betrachtet:
    • (H1) Für die meisten Gitter
      Figure 00350005
      genügt die Länge σ(
      Figure 00350006
      ) des kleinsten von Null verschiedenen Vektors von
      Figure 00350007
      Figure 00350008
      Somit ist dann, wenn v ∊
      Figure 00350009
      Figure 00350010
      genügt, v in einer Wolke exponentiell vieler Vektoren näherungsweise mit der gleichen Länge verborgen.
    • (H2) Das Gitter
      Figure 00350011
      habe einen Vektor w, der kleiner als der kürzeste erwartete Vektor ist, der von (H1) beschrieben wird, wobei
      Figure 00350012
      ansonsten aber ein "Zufalls"-Gitter ist. Falls w
      Figure 00360001
      genügt, ist es sehr unwahrscheinlich, dass eine Gitterreduktion w findet.
    • (H3) Es liege die Situation von (H2) vor. Der kleinste von Null verschiedene Vektor vLLL, der durch Gitterreduktionsverfahren berechnet wird, genügt dann nahezu mit Sicherheit
      Figure 00360002
  • Anmerkung. Die in den Hypothesen (H2) und (H3) erscheinende Gitterreduktionskonstante κ muss durch Experimentieren und Erfahrung bestimmt werden. Dies ist ähnlich der Situation bei dem RSA-PKCS, bei dem die Sicherheit auf der Abschätzung derzeitiger Fähigkeiten zum Faktorisieren von Produkten pq beruht. Noch näher analog ist es zu dem in [5] beschriebenen PKCS, wo die Sicherheit direkt mit der Schwierigkeit verknüpft ist, kleine (fast orthogonalisierte) Basen für die Gitter zu finden. Experimente mit Gittern mit großer (≥ 100) Dimension legen nahe, dass κ = 1,51/100 gewählt werden kann. (Siehe z. B. [11] und [12].) Ebenso wie künftige Fortschritte bei der Faktorisierung die Verwendung größerer Primzahlen in dem RSA-PKCS erfordern werden, werden außerdem zukünftige Fortschritte bei der Gitterreduktion zweifellos die Verwendung eines kleineren Werts von κ und entsprechend größerer Parameter in dem NTRU erfordern. Außerdem wird erwähnt, dass die Hypothesen (H2) und (H3) lediglich für Gitter mit einer Dimension größer als 700 angenommen zu werden brauchen. Für Gitter mit einer so hohen Dimension dauert selbst der LLL-Algorithmus mit Schnorrs Blockreduktionsverbesserung recht lange Zeit. Falls die Bereitschaft besteht, die Hypothesen (H2) und (H3) für Gitter mit einer Dimension um 300 anzunehmen, können NTRU-Parameter mit einer noch besseren Betriebseigenschaft gewählt werden.
  • Angriff mit kleinem Gitter auf den Schlüssel f. Es wird mit dem wahrscheinlich natürlichsten Gitter begonnen, d. h. damit, ein beliebiges der hi zu wählen und nach dem kleinen Vektor f mit der Eigenschaft zu suchen, dass hi ⊛ f(mod q) ebenfalls klein ist. Hierfür wird hi = [hi1, ..., hiN] geschrieben und das durch die Spalten der folgenden Matrix erzeugte Gitter
    Figure 00370001
    betrachtet:
    Figure 00370002
  • Mit Blick auf eine künftig zweckmäßige Schreibweise wird diese Matrix als
    Figure 00370003
    geschrieben. Die Größe λ wird durch den Angreifer so gewählt, dass der Angriff optimiert wird. Es wird beobachtet, dass
    Figure 00370004
    Figure 00370005
    genügt.
  • Es sind zwei Probleme zu betrachten. Zunächst ist der tatsächliche Schlüssel f als ein kurzer Vektor in
    Figure 00370006
    eingebettet. Es wird angemerkt, dass
    Figure 00370007
    den Zielvektor vtarg = (λfN, ..., λf1, gi1, ..., giN]enthält und dass die Kenntnis von vtarg die Wiedergewinnung von f zulässt. Allerdings kann die Länge von vtarg als
    Figure 00370008
    berechnet werden. Die Hypothese (H1) besagt, dass f sicher vor einem Angriff ist, falls |vtarg|2 der Ungleichung
    Figure 00380001
    genügt. Mit anderen Worten, es wird
    Figure 00380002
    benötigt. Das optimale λ aus Sicht des Angreifers ist λ = 1 (siehe Lemma A.1), da er die linke Seite minimieren möchte. Damit ist das Verfahren sicher, sofern
    Figure 00380003
    ist.
  • Eine zweite Betrachtung ist, ob ein anderer kleiner Vektor in
    Figure 00380004
    zulassen könnte, dass der Angreifer die Nachricht entschlüsselt. Somit hat ein beliebiger kleiner Vektor [f', g'] ∊
    Figure 00380005
    die Eigenschaft, dass sowohl f' als auch hi ⊛ f' ≡ g'(mod q) klein sind. Falls der Angreifer dagegen
    Figure 00380006
    berechnet, besitzt aber nur der Term mit j = i kleine Koeffizienten modulo q. Somit wirkt ein f', das ein einzelnes hi klein macht, nicht als ein Entschlüsselungsschlüssel. Dies legt nahe, alle hj gleichzeitig zu betrachten, was zu dem nächsten Gitter führt.
  • Angriff mit großem Gitter auf den Schlüssel f. Eher, als nur eines der hi zu verwenden, kann der Angreifer stattdessen ein Gitter unter Verwendung einer Teilmenge der hi bilden. Unter Umbenennung wird angenommen, dass der Angreifer h1, ..., hk für einige 1 ≤ k ≤ K verwendet und das Gitter
    Figure 00380007
    bildet, das durch die Spalten der Matrix
    Figure 00390001
    generiert wird. (Es wird hier die abgekürzte Schreibweise aus dem vorigen Abschnitt verwendet.) Dieses Gitter genügt
    Figure 00390002
  • Es enthält den Zielvektor (unter Verwendung der obigen Abkürzung) vtarg = [λf, g1, g2, ..., gk].
  • (Genauer müssen die Koordinaten von f umgekehrt werden.) Dieser Zielvektor hat die Länge
    Figure 00390003
  • Die Hypothese (H2) besagt, dass die Gitterreduktion vtarg nicht findet, sofern seine Länge
    Figure 00390004
    genügt. Somit besteht Sicherheit vor einem Angriff, falls
    Figure 00390005
    ist.
  • Wie zuvor wählt der Angreifer λ so, dass die linke Seite minimiert wird. Es stellt sich wieder heraus, dass λ = 1 das Minimum ergibt (siehe Lemma A.1), sodass der tatsächliche Schlüssel gemäß der Hypothese (H2) sicher ist, sofern
    Figure 00400001
    ist.
  • Angriff mit großem Gitter auf einen Nachschlüssel f. Eher, als nach dem wahren Schlüssel f zu suchen, könnte der Angreifer einen anderen Schlüssel F zu ermitteln versuchen, der als ein Entschlüsselungsschlüssel wirkt. Um ein Nachschlüssel zu sein, müssen F selbst und außerdem jedes der Produkte hj ⊛ f(mod q) klein sein. Genauer wird angenommen, dass der Angreifer ein F ermittelt und Gj ∀ bj ⊛ F(mod q)für j = 1, 2, ..., K berechnet. Es besteht die Frage, ob die Breite (L-Norm) eines Ausdrucks ϕ1 ⊛ G1 + ϕ2 ⊛ G2 + ... + ϕK ⊛ GK+ m ⊛ Ffür einen Umhüllungsfaktor W allgemein wenigstens Wq ist. (Die Frage, wie groß W sein muss, damit das System sicher ist, wird später diskutiert.)
  • Um einen Nachschlüssel F zu ermitteln zu versuchen, nimmt der Angreifer das zuvor beschriebene Gitter
    Figure 00400002
    und verwendet die Gitterreduktionstechniken, um einen kleinen Vektor vLLL zu ermitteln. Der kleinste von null verschiedene Vektor in
    Figure 00400003
    ist der Vektor vtarg = [λf, g1, ..., gK], sodass die Hypothese (H3) besagt, dass |vLLL|2 ≥ κ(K+1)N|vtarg|2 ist. Wenn vLLL = [λF, G1, G2, ..., GK] ist, wird ermittelt, dass
    Figure 00400004
    ist.
  • Der durch Gitterreduktion erhaltene Vektor vLLL besitzt Komponenten, deren Größe mehr oder weniger zufällig verteilt ist. Insbesondere sind alle Längen |λF|2, |G1|2, ..., |GK|2 näherungsweise dieselben, sodass (näherungsweise) |λF|2, |G1|2, ..., |GK|2 ≥ κ(K+1)NLg erhalten wird.
  • Andererseits können dies und (3) verwendet werden, um 1 ⊛ G1 + ϕ2 ⊛ G2 + ... + ϕK ⊛ GK + m ⊛ F| ≥ c1(|ϕ1|2·|G1|2 + ... + |ϕK|2·|GK|2 + |m|2·|F|2) = c1Lϕ(|G1|2 + ... + |GK|2 + |F|2) ≥ c1(K + 1)LϕLgκ(K+1)N abzuschätzen. Somit versagt der Nachschlüssel mit dem Umhüllungsfaktor W, sofern die Parameter so gewählt werden, dass Wq ≤ c1(K + 1)LϕLgκ(K+1)N (7)erfüllt ist. (Dies kann mit der Entschlüsselungsungleichung (4) verglichen werden.)
  • Angriff mit großem Gitter auf eine einzelne Nachricht. Es gibt eine weitere Art eines Gitterangriffs, die betrachtet werden muss. Eher, als nach einem Schlüssel zu suchen, der jede Nachricht entschlüsselt, kann ein Angreifer ein Gitter konstruieren, um nach einer einzelnen Nachricht zu suchen. Es wird das folgende Gitter betrachtet. Es sei
    Figure 00410001
    das Gitter, das durch die Spalten der Matrix
    Figure 00420001
    erzeugt wird. Dieses Gitter genügt
    Figure 00420002
    und enthält (unter Verwendung der obigen Schreibweise) den Vektor [λϕ1, λϕ2, ..., λϕK, e – m]. (8)
  • Es enthält diesen Vektor, da die verschlüsselte Nachricht e gemäß der Vorschrift 1 ⊛ h1 + pϕ2 ⊛ h2 + ... + pϕK ⊛ hK + m ≡ e(mod q)konstruiert wurde.
  • Selbstverständlich ist (8) wahrscheinlich kein kurzer Vektor, da die Koeffizienten von e – m(mod q) nicht klein sind. Allerdings kennt der Angreifer den Wert von e, sodass er nach einem Vektor in
    Figure 00420003
    suchen kann, der nahe bei dem bekannten Nicht-Gitter-Vektor [0, 0, ..., 0, e] ist. Der Abstand von dem gesuchten Gittervektor und dem bekannten Nicht-Gitter-Vektor ist die Länge des Vektors vtarg = [λϕ1, λϕ2, ..., λϕK, – m].
  • Dies ist ein Beispiel eines inhomogenen Gitterproblems. Inhomogene Probleme neigen dazu, etwas schwieriger als homogene Probleme zu sein, wobei hier aber, um auf Nummer sicher zu gehen, angenommen wird, dass der Angreifer inhomogene Probleme in genau dem gleichen Grad wie homogene Probleme lösen kann. Somit muss nachgesehen werden, ob der Angreifer einen Vektor der Länge |vtarg|2 = LϕKλ²p².ermitteln kann. (Es wird daran erinnert, dass für jedes m ∊
    Figure 00430001
    und für jedes ϕ ∊
    Figure 00430002
    |m|2 = p|ϕ|2 ist.) Gemäß Hypothese (H2) schlägt der Angriff fehl, sofern
    Figure 00430003
    ist, oder, mit anderen Worten, falls
    Figure 00430004
    ist. Der Angreifer minimiert die linke Seite, indem er λ = p wählt (siehe Lemma A.1), sodass der Angriff fehlschlägt, sofern
    Figure 00430005
    ist. Dies kann mit (6) verglichen werden, das es ergänzt.
  • Zusammenfassung von Parameterbedingungen von Gitterangriffen. In den vorherigen Teilen dieses Abschnitts wurden verschiedene Gitterangriffe beschrieben und Bedingungen an die Parameter konstruiert, die verhindern, dass diese Angriffe erfolgreich sind. Es bleibt die Frage, ob es irgendwelche Parameterwahlen gibt, die alle Bedingungen erfüllen. Zweckmäßigkeitshalber werden hier alle Ungleichungen aus diesem Abschnitt zusammen mit der grundlegenden Ungleichung (4), die notwendig ist, falls der Inhaber des wahren Schlüssels f Nachrichten entschlüsseln können soll, aufgeführt. c2pLgLϕ(K + 1) < q. (4)
    Figure 00440001
    Wq ≤ c1(K + 1)LϕLgκ(K+1)N (7)
    Figure 00440002
    )
  • Es wird beobachtet, dass es für beliebige feste Werte c1, c2, p, Lϕ > 0 und p, κ, W > 1 immer Lösungen N, K, Lg, q für diese Ungleichungen gibt. Es werden jetzt einige Anmerkungen als Hilfe beim Ermitteln von Lösungen gemacht.
  • Es wird damit begonnen, diese Ungleichungen auf verschiedene Weise zu kombinieren. Zunächst ergibt Kombinieren von (4) und (7) (nach einiger Algebra)
    Figure 00440003
  • Es wird angemerkt, dass es (im Wesentlichen) keine Freiheit bei der Wahl von c1, c2 und κ gibt und dass W je nach dem gewünschten Sicherheitsgrad zwischen 5 und 10 gewählt wird. Dies lässt die Wahl von p, das normalerweise recht klein ist. Der Punkt ist hier, dass (10) eine untere Grenze für (K + 1)N gibt, über die es sehr wenig Kontrolle gibt.
  • Danach werden (4) und (5) kombiniert, um
    Figure 00440004
    zu erhalten. Um eine gewisse Flexibilität bei der Wahl von q zu haben, ist es eine gute Idee, Lg (angenommen) 1,5- bis 2-mal größer als diese vorgeschriebene untere Grenze zu wählen.
  • Falls z. B.
    Figure 00440005
    und
    Figure 00440006
    wie zuvor beschrieben sind, ist Lϕ = √2d , wobei die meisten g ∊
    Figure 00440007
    der Beziehung |g|2 ≈ Lg = √N(r² – 1)/12 genügen. Somit kann, nachdem (11) dazu verwendet worden ist, Lg zu wählen, r = ⌊Lg12/N verwendet werden, woraufhin die meisten g ∊
    Figure 00450001
    eine L2-Norm sehr nahe zu dem gewünschten Lg haben. Da der Codeerzeuger Dan der einzige ist, der Elemente aus
    Figure 00450002
    wählt, und da diese Wahlen darüber hinaus nur einmal getroffen zu werden brauchen, würde es ihm ferner nicht schwer fallen, die notwendigen K + 1 Polynome in
    Figure 00450003
    mit einer Norm näherungsweise von Lg zu ermitteln; wobei selbst mit der Längenbeschränkung die Anzahl dieser Polynome in
    Figure 00450004
    astronomisch größer ist, als ein Angreifer über eine erschöpfende Suche prüfen kann, da rN in der Praxis dazu neigt, wenigstens 2500 zu sein.
  • IMPLEMENTIERUNGSBETRACHTUNGEN
  • Sicherheits- und Umhüllungsfaktoren. Es wird daran erinnert, dass der Umhüllungsfaktor W steuert, wie viel Umhüllung der Angreifer erwarten kann, wenn er einen durch Gitterreduktion erzeugten Nachschlüssel verwendet. Falls W zu klein ist, z. B. W = 1,5, kann der Angreifer viele (möglicherweise sogar die meisten) Koeffizienten wiedergewinnen, da ihre Werte dazu neigen, sich um den Mittelwert zu gruppieren. Genauer gewinnt der Angreifer (angenommen) 0,95N lineare Gleichungen für die N unbekannten Koeffizienten wieder, woraufhin eine Brechstangensuche den Angriff abschließt.
  • Coppersmith und Shamir [3] haben beobachtet, dass selbst dann, wenn W etwas größer als dies ist, angenommen W = 2,5, die Gruppierung zulässt, dass der Angreifer näherungsweise 0,67N lineare Gleichungen für die N Unbekannten erhält. Daraufhin beobachten sie, dass der Angreifer ausreichend viele unabhängige Gleichungen zum Lösen des Systems erhalten könnte, wenn er zwei unabhängige Nachschlüssel konstruiert und anwendet. Ferner merken sie an, dass die Verwendung mehrerer kurzer Vektoren für W = 4 zulassen könnte, dass der Angriff unter Nutzung einer Art Fehlerkorrekturtechnik erfolgreich ist, dass aber diese Art Angriff nicht erfolgreich ist, falls W so groß wie 10 ist. Für Einzelheiten wird auf [3] verwiesen.
  • Anhand dieser Betrachtungen wird hier zur Konstruktion von Beispielbetriebsparametern ein Umhüllungsfaktor von W = 10 verwendet.
  • Beispielbetriebsparameter. In diesem Abschnitt werden zwei Mengen verwendbarer Parameter für das NTRU-PKCS ausgearbeitet, die gemäß den oben beschriebenen Hypothesen sicher sind. Diese Parametersätze führen zu einer recht hohen Nachrichtenexpansion, sodass der Leser auf den folgenden Abschnitt für eine zweistufige Version des NTRU verwiesen wird, die die Nachrichtenexpansion auf ein zu bewältigendes 2 zu 1 reduziert.
  • Es wird mit drei Werten, die durch experimentellen Beweis auferlegt werden, und mit einem vierten Wert, der so gewählt wird, dass eine ausreichende Umhüllung sichergestellt wird, um einen Angriff mit einem Nachschlüssel zu vereiteln, begonnen:
    c1 = 0,08, c2 = 0,24, W = 10 κ = 1,51/100 ≈ 1,0040628823.
  • Die Werte von c1 und c2 sind durch umfangreiche numerische Tests in den gewünschten Bereichen bestimmt worden; allerdings haben die Anmelder auch eine recht gute Vorstellung davon, wie ihnen eine wahrscheinlichkeitstheoretische Rechtfertigung zu geben ist. Der Umhüllungsfaktor W = 10 wurde oben diskutiert. Schließlich ist die Wahl der Gitterreduktionskonstanten κ bereits diskutiert worden, obgleich der sicherheitsbewusste Anwender zum Schutz vor künftigen Verbesserungen bei der Gitterreduktionstechnologie stattdessen κ = 1,31/100 mit kleinen Änderungen der anderen Parameter wählen könnte.
  • Zunächst wird die Wahl p = 2 betrachtet. Die Ungleichung (10) besagt, dass (K + 1)N ≥ 1009,79gewählt werden muss, sodass
    N = 167 und K = 6
    sei. (Es ist zweckmäßig, aber nicht notwendig, dass sowohl N als auch (N – 1)/2 Primzahlen sind.) Diese Wahl bietet ausreichend Spielraum für die Wahl der verbleibenden Koeffizienten.
  • Wie in Abschnitt 2.2 wird
    Figure 00470001
    mit d = 20 gewählt, sodass #
    Figure 00470002
    = 167!/20!·20!·127! ≈ 2165,85 ist, was ausreichend Sicherheit vor Angriffen des Treffens in der Mitte bietet. Ferner ist Lϕ = √2d ≈ 6,325, wobei Einsetzen dieser Wahlen in (11) Lg > 414,07 ergibt. Um einen gewissen Spielraum bereitzustellen, wird r = 167 gewählt, was den erwarteten Wert von Lg gleich 622,98 macht. Schließlich besagen die fünf grundlegenden Ungleichungen, dass q
    213,6924 < q ≤ max{214,2766, 214,7278, 214,6238, 252,481}
    genügen muss. (Natürlich sind die Ungleichung (6k) tatsächlich 6 Ungleichungen, eine für jedes 1 < k ≤ 6.) Somit kann q = 214 – 1 = 16383 gewählt werden. (Es wird angemerkt, dass ggT(p, q) = 1 erforderlich ist.) Um kurz zusammenzufassen, geben die folgenden Parameter ein sicheres NTRU-PKCS:
    N = 167, k = 6, q = 16383 = 214 – 1, p = 2, r = 167, d = 20, s = 3
    wobei die Mengen
    Figure 00470003
    wie zuvor beschrieben gewählt sind. Für diese Parameter ist
    Länge des öffentlichen Schlüssels = Nk log2q = 14028 Bits
    Länge des privaten Schlüssels = N log2pr = 1400 Bits
    Nachrichtenexpansion = log q/log p = 14 zu 1.
  • Unter Verwendung einer ähnlichen Analyse wird eine zweite Menge sicherer NTRU-Parameter mit einem größeren Wert von p konstruiert. Da alle Operationen an kleineren Zahlen als 216 erfolgen und q eine Potenz von 2 ist, sodass die Division durch q mit Rest eine einfache Verschiebungsoperation ist, scheinen diese Parameter für die gegenwärtigen Mikroprozessoren gut geeignet. Es wird
    N = 167, K = 6, q = 216, p = 3, r = 354, d = 40, s = 7
    gewählt. Diese Parameter ergeben #
    Figure 00470004
    = 167!/40!·40!·87!·2239,3 und
    Länge des öffentlichen Schlüssels = NK log2q = 16032 Bits
    Länge des privaten Schlüssels = N log2pr = 1678 Bits
    Nachrichtenexpansion = log q/log p = 10,1 zu 1.
  • Zweistufiges NTRU und verbesserte Nachrichtenexpansion. Die NTRU-PKCS für die oben dargestellten Beispielparameter haben recht große Nachrichtenexpansionen. Ein Verfahren zum Verringern dieser Ausdehnung ist die Verwendung eines größeren Werts von p, wobei dies aber zu wesentlich größeren Werten für (K + 1)N führt, was wiederum sowohl die Schlüsselgrößen erhöht als auch die Recheneffizienz verringert.
  • Ein weiteres Verfahren zum Verringern der Nachrichtenexpansion ist die Verwendung jeder NTRU-Nachricht als eine Art Einmalverschlüsselung zum Verschlüsseln der tatsächlichen Nachricht. In dieser zweistufigen Version des NTRU wählt der Verschlüssler Cathy ein Zufallspolynom m ∊
    Figure 00480001
    , während seine tatsächliche Klartextnachricht M ein beliebiges Polynom modulo q sein kann. Um seine Nachricht zu verschlüsseln, berechnet er die zwei Größen
    Figure 00480002
    und E ≡ m ⊛ h1 + M(mod q).
  • Die verschlüsselte Nachricht ist das Paar (e, E).
  • Der Entschlüsselungsprozess ist ähnlich wie zuvor, jedoch mit einem Zusatzschritt. Somit befolgt der Entschlüssler Dan die zuvor beschriebene Prozedur, um das Polynom m zu berechnen. Daraufhin gewinnt er durch Berechnen von E – m ⊛ h1(mod q)die Nachricht wieder. Es wird beobachtet, dass die Klartextnachricht M die Länge N log2q Bits hat, während die verschlüsselte Nachricht (e, E) die Länge 2N log2q Bits hat, sodass die Nachrichtenexpansion um 2 zu 1 verkleinert ist.
  • Es folgt eine weitere Anmerkung. Cathy verwendet dasselbe Polynom und denselben Modul, um sowohl m als auch M zu verschlüsseln. Es wird nicht davon ausgegangen, dass dies die Sicherheit gefährdet, wobei sie aber zur zusätzlichen Sicherheit E ≡ m ⊛ H + M(mod Q) für ein anderes (öffentliches) Polynom N und für einen anderen Modul Q berechnen könnte.
  • Theoretische Betriebsspezifikationen. In diesem Abschnitt werden die theoretischen Betriebseigenschaften des NTRU-PKCS betrachtet. Es gibt vier ganzzahlige Parameter (N, K, p, q), drei Mengen
    Figure 00490001
    die in dieser Reihenfolge wie zuvor beschrieben durch ganze Zahlen r, d, s bestimmt sind, drei experimentell bestimmte Konstanten c1, c2 κ und eine Umhüllungskonstante W. Um die Sicherheit sicherzustellen, müssen diese Parameter so gewählt werden, dass sie die zuvor aufgeführten Ungleichungen erfüllen. Die folgende Tabelle fasst die NTRU-PKCS-Betriebseigenschaften hinsichtlich dieser Parameter zusammen.
    Figure 00490002
    • * genau 4KN2 Additionen und KN Divisionen durch q mit Rest
  • Für ein zweistufiges NTRU ändern sich die folgenden Positionen:
    Figure 00490003
  • Weitere Implementierungsbetrachtungen. Es werden kurz einige zusätzliche Faktoren betrachtet, die bei der Implementierung des NTRU betrachtet werden sollten.
    • (1) Es ist wichtig, dass der ggT(q, p) = 1 ist. Obgleich das NTRU im Prinzip ohne diese Anforderung funktioniert, verringert ein ggT(q, p) > 1 in der Praxis die Sicherheit. Falls im extremen Bereich p|q ist, dann (Übung) genügt die verschlüsselte Nachricht e ≡ m(mod p), sodass sie vollständig unsicher ist.
    • (2) Es ist erwünscht, dass die meisten f Inverse modulo p und modulo q haben, da es andernfalls schwer ist, Schlüssel zu erzeugen. Eine erste notwendige Anforderung ist, dass das ggT(f(1), pq) = 1 ist, wobei der Codeerzeuger aber stattdessen angenommen f(X) + 1 oder f(X) – 1 wählen kann, falls dies für ein gewähltes f fehlschlägt. Unter der Annahme ggT(f(1), pq) = 1 haben praktisch alle f die geforderten Inversen, falls N als eine Primzahl gewählt wird und gefordert wird, dass für jede Primzahl P, durch die p und q teilbar sind, die Größenordnung von P in (Z/NZ)* groß, angenommen entweder N – 1 oder (N – 1)/2, ist. Zum Beispiel ist dies wahrscheinlich war, falls (N – 1)/2 selbst eine Primzahl ist (d. h., falls N eine Sophie-Germain-Primzahl ist). Beispiele solcher Primzahlen enthalten 107 und 167.
  • ANGEMESSENE SICHERHEITSPARAMETER FÜR DAS NTRU
  • In der realen Welt gibt es viele Situationen, in denen die Anforderungen hoher Geschwindigkeit und/oder wenig Speichers wichtig sind und ein angemessener Sicherheitsgrad akzeptabel ist. In diesem Kontext wird beobachtet, dass die tatsächlichen Gitterreduktionsverfahren [11, 12] äußerst CPU-aufwändig sind und in der Praxis einen großen Aufwand an Rechenzeit erfordern, um an einem Gitter der Dimension 200 bis 300 eine Gitterreduktion auszuführen. Natürlich ist "groß" hier ein relativer Begriff, wobei es sich aber wahrscheinlich nicht lohnen würde, eine 300-dimensionale Gitterreduktion auszuführen, um etwas zu stehlen, das einen Bruchteil eines Cent wert ist, während es wahrscheinlich sehr teuer (falls nicht vollständig unmöglich) wäre, derzeitige Verfahren zu verwenden, um eine solche Gitterreduktion in einer kurzen Zeitdauer (d. h. in wenigen Minuten) auszuführen. Somit lohnt es, eine Menge von NTRU-Parametern zu erzeugen, die in Situationen verwendet werden können, wo der Anwender gewillt ist, die Möglichkeit hochdimensionaler Gitterangriffe zuzulassen.
  • Falls die von Gitterangriffen kommenden Parameterbedingungen beseitigt werden, verbleiben lediglich die Entschlüsselungsbedingung c2pLgLϕ(K + 1) < q (4)und die Bedingung, dass die Suchräume für f, g und ϕ groß genug sind, dass ein Brechstangenangriff (oder möglicherweise ein Angriff des Treffens in der Mitte) verhindert wird. Der Einfachheit halber wird K = 1 gewählt. Alle f, g, ϕ werden so gewählt, dass sie in der Menge
    Figure 00510001
    , d. h. in der Menge von Polynomen mit d Koeffizienten gleich 1, d Koeffizienten gleich –1 und den anderen N – 2d Koeffizienten gleich 0 liegen. (Genauer wird f so gewählt, dass es 1 zusätzlichen Koeffizienten hat, da f modulo p und q invertierbar sein muss, wobei dies aber auf die folgende Analyse wenig Auswirkung hat, sodass es hier ignoriert wird.) Wie üblich unter Verwendung von c2 = 0,24 wird die Entschlüsselungsbedingung einfach q > 2pd (4)
  • Die weitere Bedingung ist hier
    Figure 00510002
    wo σ der gewünschte Sicherheitsgrad ist. Es wird angemerkt, dass für Implementierungen mit angemessener Sicherheit ein Sicherheitsgrad um 240 allgemein ausreicht, sodass σ ≈ 40 gewählt wird.
  • Die folgende Tabelle gibt einige akzeptable Betriebsparameter für eine Implementierung des NTRU mit angemessener Sicherheit. Bei der Bewertung der Sicherheit wird angemerkt, dass verfügbare Gitterangriffe ein Gitter der Dimension 2N verwenden. Außerdem wird angemerkt, dass der aufgeführte Wert von q der kleinste zulässige ist, dass aber ein etwas größeres q, das ggT(p, q) = 1 genügt, akzeptabel ist. Insbesondere sind besonders schnelle Implementierungen verfügbar, indem q = 64 genommen wird.
    Figure 00520001
  • Schließlich wird beobachtet, dass die Schlüsselgrößen sehr klein sind,
    öffentlicher Schlüssel: N log2(q) Bits
    privater Schlüssel: 2N log2(p) Bits
  • Zum Beispiel gibt (N, d, p, q) = (167, 7, 3, 64) ein System mit einem öffentlichen und mit einem privaten Schlüssel mit der Länge von 1002 Bits bzw. 530 Bits.
  • VERGLEICH MIT ANDEREN PKCS
  • In der Literatur gibt es derzeit eine Anzahl von Kryptosystemen mit öffentlichem Schlüssel einschließlich des Systems von Rivest, Shamir und Adelman (RSA [10]), das auf der Schwierigkeit der Faktorisierung beruht, des Systems von McEliece [9], das auf Fehlerkorrekturcodes beruht, und des neuesten Systems von Goldreich, Goldwasser und Halevi (GGH [5]), das auf der Schwierigkeit beruht, kurze, fast orthogonalisierte Basen in einem Gitter zu ermitteln.
  • Das NTRU-System hat dahingehend einige Merkmale gemeinsam mit dem McEliece-System, dass die ⊛-Multiplikation in dem Ring R als Multiplikation von Matrizen (einer speziellen Art) formuliert werden kann und daraufhin die Verschlüsselung in beiden Systemen als eine Matrixmultiplikation E = AX + Y geschrieben werden kann, wobei A der öffentliche Schlüssel ist. Ein kleiner Unterschied zwischen den zwei Systemen ist, dass für eine NTRU-Verschlüsselung Y die Nachricht und X ein Zufallsvektor ist, während das McEliece-System diese Zuweisungen umkehrt. Der wirkliche Unterschied ist aber die zugrundeliegende Falltür, die die Entschlüsselung zulässt. Für das McEliece-System wird die Matrix A einem Fehlerkorrekturcode (Goppa-Code) zugeordnet, wobei die Entschlüsselung funktioniert, da die Zufallsverteilung klein genug ist, um durch den Goppa-Code "korrigiert" zu werden. Für das NTRU ist die Matrix A eine zyklische Matrix, wobei die Entschlüsselung von der Zerlegung von A in ein Produkt von zwei Matrizen mit einer speziellen Form zusammen mit einem Anheben von mod q auf mod p abhängt.
  • Aus Sicht der Anmelder hat das NTRU-System wenig mit dem RSA-System gemeinsam. Obgleich das NTRU-System so aufgebaut werden muss, dass Gitterreduktionsangriffe verhindert werden, ist das zugrundeliegende Entschlüsselungsverfahren ähnlich sehr verschieden von dem GGH-System, in dem die Entschlüsselung auf der Kenntnis kurzer Gitterbasen beruht. In diesem Aspekt ähnelt das GGH tatsächlich dem McEliece-System, da die Entschlüsselung in beiden Fällen durch Erkennen und Beseitigen einer kleinen Zufallsverteilung ausgeführt wird. Im Gegensatz dazu beseitigt das NTRU eine viel größere Zufallsverteilung über Teilbarkeitsbetrachtungen (d. h. Kongruenzbetrachtungen).
  • Die folgende Tabelle vergleicht einige der theoretischen Betriebseigenschaften des RSA-, des McEliece-, des GGH- und des NTRU-Kryptosystems. Die Zahl N repräsentiert in jedem Fall einen natürlichen Sicherheits/Nachrichtenlängen-Parameter.
  • Figure 00530001
  • EIN ELEMENTARES LEMMA
  • Das folgende Ergebnis ist für die Optimierung von Gitterangriffen nützlich.
  • Lemma A.1 Für alle A, 8, α, β ≥ 0 mit α + β = 1 ist
    Figure 00540001
    wobei das Infimum bei x = βB/αA auftritt.
  • Beweis. Es sei f(x) = Axα + bx–β. Dann ist f'(x) = αAxα-1 – βBX–ß-1 = xβ+1(αAx – βB). Somit ist das absolute Minimum bei x = βB/αA. (Es wird angemerkt, dass f(x) → ∞ für x → 0+ und für x → ∞.)
  • LITERATURHINWEISE
    • 1. M. Blum, S. Goldwasser, An efficient probabilistic public-key encryption scheme which hides all partial information, Advances in Cryptology: Proceedings of CRYPTO 84, Lecture Notes in Computer Science, Bd. 196, Springer-Verlag, 1985, S. 289–299.
    • 2. H. Cohen, A course in computational algebraic number theory, Graduate Texts in Math., Bd. 138, Springer Verlag, Berlin, 1993.
    • 3. D. Coppersmith, A. Shamir, Lattice attacks on NTRU, Preprint, 5. April 1997; vorgestellt auf der Eurocrypt 97.
    • 4. W. Diffie, M. E. Hellman, New directions in cryptography, IEEE Trans. on Information Theory 22 (1976), 644–654.
    • 5. O. Goldreich, S. Goldwasser, S. Halevi, Public-key cryptosystems from lattice reduction problems, MIT – Laboratory for Computer Science, Preprint, November 1996.
    • 6. S. Goldwasser und A. Micali, Probabilistic encryption, J. Computer and Systems Science 28 (1984), 270–299.
    • 7. J. Hoffstein, J. Pipher, J. H. Silverman, NTRU: A new high speed public key cryptosystem, Preprint; vorgestellt auf der Rumpfsitzung der Crypto 96.
    • 8. A. K. Lenstra, H. W. Lenstra, L. Lovśz, Factoring polynomials with polynomial coefficients, Math. Annalen 261 (1982), 515–534.
    • 9. R. J. McEliece, A public-key cryptosystem based on algebraic coding theory, JPL Pasadena, DSN Progress Reports 42–44 (1978), 114–116.
    • 10. R. L. Rivest, A. Shamir, L. Adleman, A method for obtaining digital signatures and public key cryptosystems, Communications of the ACM 21 (1978), 120–126.
    • 11. C. P. Schnorr, Block reduced lattice bases and successive minima, Combinatorics, Probability and Computing 3 (1994), 507–522.
    • 12. C. P. Schnorr, H. H. Hoerner, Attacking the Chor Rivest cryptosystem by improved lattice reduction, Proc. EUROCRYPT 1995, Lecture Notes in Computer Science 921, Springer-Verlag, 1995, S. 1–12.
    • 13. D. Stinson, Cryptography: Theory and Practice, CRC Press, Boca Raton, 1995.

Claims (21)

  1. Verfahren mit öffentlichem Schlüssel, in dem eine digitale Nachricht m mit einem öffentlichen Schlüssel verschlüsselt wird und die verschlüsselte Nachricht danach mit einem privaten Schlüssel entschlüsselt werden kann, gekennzeichnet durch die folgenden Schritte: Auswählen von Idealen p und q eines Rings R; Generieren von Elementen f und g des Rings R und Generieren von Element Fq, das eine Inverse von f(mod q) ist, und Generieren von Element Fp, das eine Inverse von f(mod p) ist; Erzeugen eines öffentlichen Schlüssels, der h enthält, wobei h kongruent mod q mit einem Produkt von Fq und einem zweiten, aus g abgeleiteten, Faktor ist; Erzeugen eines privaten Schlüssels, aus dem f und Fp abgeleitet werden können; Erzeugen einer verschlüsselten Nachricht e durch Verschlüsseln der Nachricht m unter Verwendung des öffentlichen Schlüssels und eines Zufallselementes ø durch Additions- und Multiplikationsoperationen in dem Ring R modulo des Ideals q, die die Nachricht m, das Zufallselement ø und den öffentlichen Schlüssel involvierend, und Erzeugen einer entschlüsselten Nachricht durch Entschlüsseln der verschlüsselten Nachricht e durch Additions- und Multiplikationsoperationen in dem Ring R modulo des Ideals q und in dem Ring R modulo des Ideals p, wenigstens die verschlüsselte Nachricht e und den privaten Schlüssel involvierend.
  2. Verfahren nach Anspruch 1, wobei der Ring R ein Modul über einem Ring Z ist.
  3. Verfahren nach Anspruch 1, wobei die Dimension von R durch Z gleich N ist und wobei N eine ganze Zahl, größer als 1, ist.
  4. Verfahren nach Anspruch 3, wobei der Ring R ein Ring von Polynomen modulo eines bestimmten Polynoms ist.
  5. Verfahren nach Anspruch 1, wobei der Schritt des Generierens von Elementen des Weiteren Generieren von Element Gq, das eine Inverse von g(mod q) ist, und Generieren von Element Gp, das eine Inverse von g(mod p) ist, umfasst.
  6. Verfahren nach Anspruch 5, wobei das Element Gq bei der Ableitung des öffentlichen Schlüssels verwendet wird und das Element Gp Teil des privaten Schlüssels ist.
  7. Verfahren nach Anspruch 1, wobei der Auswählschritt des Weiteren das Auswählen einer positiven ganzen Zahl K einschließt und wobei das Element g jeweilig gi, mit i = 1, 2, ..., K, umfasst und wobei h jeweilig hi, mit i = 1, 2, ..., K, umfasst.
  8. Verfahren nach Anspruch 7, wobei das Zufallselement ø jeweilig øi in dem Ideal p, mit i = 1, 2, ..., K, umfasst und wobei die verschlüsselte Nachricht erzeugt wird als
    Figure 00570001
  9. Verfahren nach Anspruch 1, wobei der öffentliche und der private Schlüssel jeder des Weiteren p und q enthalten.
  10. Verfahren nach Anspruch 1, wobei die Ideale p und q durch teilerfremde ganze Zahlen erzeugt werden.
  11. Verfahren nach Anspruch 10, wobei die verschlüsselte Nachricht kongruent mod q mit der Summe der Nachricht m und einem Produkt, das ø und h enthält, ist.
  12. Verfahren nach Anspruch 10, wobei die ganzen Zahlen p und q ungleich sind und sowohl p als auch q größer als 1 sind.
  13. Verfahren nach Anspruch 1, wobei die verschlüsselte Nachricht durch einen Benutzer an einem Ort erzeugt wird, von diesem einen Ort zu einem anderen Ort gesendet wird und durch einen Benutzer an dem anderen Ort entschlüsselt wird.
  14. Verfahren nach Anspruch 1, wobei R der Ring von Polynomen mit ganzzahligen Koeffizienten ist, die Ideale von R durch ganze Zahlen p und q generiert werden und der öffentliche Schlüssel das Polynom h enthält, wobei h = Fq × g(mod q).
  15. Verfahren nach Anspruch 14, wobei die verschlüsselte Nachricht e erzeugt wird als e ≡ pø × h + m(mod q).
  16. Verfahren nach Anspruch 15, wobei die entschlüsselte Nachricht erzeugt wird durch Berechnen von a ≡ f × e(mod q)und anschließendes Berechnen der entschlüsselten Nachricht m' als m' ≡ Fp × a(mod p).
  17. Verfahren nach Anspruch 14, wobei der Schritt des Generierens von f und g Auswählen einer positiven ganzen Zahl K und Generieren von K Polynomen g als g1, g2, ..., gK einschließt und wobei der öffentliche Schlüssel h1, h2, ..., hK umfasst, wobei hi ≡ Fq × gi(mod q),mit i = 1, 2, ..., K ist.
  18. Verfahren nach Anspruch 17, wobei die verschlüsselte Nachricht erzeugt wird als e ≡ pø1 × h1 + pø2 × h2 + ... + pøK × hK + m(mod q),wobei ø1, ø2, ..., øK K Zufallspolynome sind.
  19. Verfahren nach Anspruch 14, wobei die verschlüsselte Nachricht durch einen Benutzer an einem Ort erzeugt wird, von diesem einen Ort zu einem anderen Ort gesendet wird und durch einen Benutzer an dem anderen Ort entschlüsselt wird.
  20. Verfahren nach Anspruch 1, wobei der Ring R ein Matrizenring mit ganzzahligen Koeffizienten ist und wobei die Ideale p und q durch teilerfremde ganze Zahlen generiert werden und wobei das Generieren der Elemente von Ring R Auswählen einer von Null verschiedenen ganzen Zahl K und Erzeugen von K + 2 Matrizen f, g, w1, w2, ..., wK aus dem Ring R, mit wi ≡ 0(mod p) für i = 1, 2, ..., K, und Erzeugen von inversen Matrizen Fp, Fq, Gp und Gq aus R einschließt, wobei fFp ≡ I(mod p) fFq ≡ I(mod q) gGp ≡ I(mod p) gGq ≡ I(mod q),wobei I eine identische Matrix ist und wobei das Erzeugen eines öffentlichen Schlüssels das Erzeugen einer Liste von K Matrizen (h1, h2, ..., hk) einschließt, wobei hi ≡ FqwiGq(mod q),i = 1, 2, ..., K und wobei Erzeugen des privaten Schlüssels Erzeugen einer Matrizenliste (f, g, Fp, Gp) einschließt und wobei Erzeugen einer verschlüsselten Nachricht e Verschlüsseln der Nachricht m unter Verwendung des privaten Schlüssels und von zufälligen ganzen Zahlen ø1, ø2, ..., øK als e ≡ ø1h1 + ø2h2 + ... + øKhK + m(mod q)einschließt und wobei Erzeugen einer entschlüsselten Nachricht m' Berechnen von a ≡ feg(mod q)und b ≡ a(mod p)und anschließendes Berechnen der entschlüsselten Nachricht m' als m' ≡ FpbGp(mod p)einschließt.
  21. System mit öffentlichem Schlüssel, in dem eine digitale Nachricht m mit einem öffentlichen Schlüssel verschlüsselt wird und die verschlüsselte Nachricht danach mit einem privaten Schlüssel entschlüsselt werden kann, gekennzeichnet durch: Mittel zum Auswählen von Idealen p und q eines Rings R; Mittel zum Generieren von Elementen f und g des Rings R und Generieren von Element Fq, das eine Inverse von f(mod q) ist, und Generieren von Element Fp, das eine Inverse von f(mod p) ist; Mittel zum Erzeugen eines öffentlichen Schlüssels, der h enthält, wobei h kongruent mod q mit einem Produkt von Fq und einem zweiten, aus g abgeleiteten, Faktor ist; Mittel zum Erzeugen eines privaten Schlüssels, aus dem f und Fp abgeleitet werden können; Mittel zum Erzeugen einer verschlüsselten Nachricht e durch Verschlüsseln der Nachricht m unter Verwendung des öffentlichen Schlüssels und eines Zufallselementes ø durch Additions- und Multiplikationsoperationen in dem Ring R modulo des Ideals q, die die Nachricht m, das Zufallselement ø und den öffentlichen Schlüssel involvierend, und Mittel zum Erzeugen einer entschlüsselten Nachricht durch Entschlüsseln der verschlüsselten Nachricht e durch Additions- und Multiplikationsoperationen in dem Ring R modulo des Ideals q und in dem Ring R modulo des Ideals p, wenigstens die verschlüsselte Nachricht e und den privaten Schlüssel involvierend.
DE69737097T 1996-08-19 1997-08-19 Kryptographisches verfahren und vorrichtung mit öffentlichem schlüssel Expired - Lifetime DE69737097T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US2413396P 1996-08-19 1996-08-19
US24133P 1996-08-19
PCT/US1997/015826 WO1998008323A1 (en) 1996-08-19 1997-08-19 Public key cryptosystem method and apparatus

Publications (2)

Publication Number Publication Date
DE69737097D1 DE69737097D1 (de) 2007-01-25
DE69737097T2 true DE69737097T2 (de) 2007-07-12

Family

ID=21819032

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69737097T Expired - Lifetime DE69737097T2 (de) 1996-08-19 1997-08-19 Kryptographisches verfahren und vorrichtung mit öffentlichem schlüssel

Country Status (10)

Country Link
US (2) US6081597A (de)
EP (1) EP0920753B1 (de)
JP (1) JP4068664B2 (de)
CN (1) CN1172474C (de)
AU (1) AU716797B2 (de)
CA (1) CA2263588C (de)
DE (1) DE69737097T2 (de)
HK (1) HK1021855A1 (de)
IL (1) IL128552A (de)
WO (1) WO1998008323A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018108313A1 (de) * 2018-04-09 2019-10-10 Infineon Technologies Ag Verfahren und Verarbeitungsvorrichtung zum Ausführen einer kryptografischen Operation auf Gitterbasis

Families Citing this family (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10361802B1 (en) 1999-02-01 2019-07-23 Blanding Hovenweep, Llc Adaptive pattern recognition based control system and method
US7362775B1 (en) 1996-07-02 2008-04-22 Wistaria Trading, Inc. Exchange mechanisms for digital information packages with bandwidth securitization, multichannel digital watermarks, and key management
US5613004A (en) 1995-06-07 1997-03-18 The Dice Company Steganographic method and device
US7664263B2 (en) 1998-03-24 2010-02-16 Moskowitz Scott A Method for combining transfer functions with predetermined key creation
US6205249B1 (en) 1998-04-02 2001-03-20 Scott A. Moskowitz Multiple transform utilization and applications for secure digital watermarking
US5889868A (en) 1996-07-02 1999-03-30 The Dice Company Optimization methods for the insertion, protection, and detection of digital watermarks in digitized data
US7177429B2 (en) 2000-12-07 2007-02-13 Blue Spike, Inc. System and methods for permitting open access to data objects and for securing data within the data objects
US7457962B2 (en) 1996-07-02 2008-11-25 Wistaria Trading, Inc Optimization methods for the insertion, protection, and detection of digital watermarks in digitized data
US7346472B1 (en) 2000-09-07 2008-03-18 Blue Spike, Inc. Method and device for monitoring and analyzing signals
US7095874B2 (en) 1996-07-02 2006-08-22 Wistaria Trading, Inc. Optimization methods for the insertion, protection, and detection of digital watermarks in digitized data
US7159116B2 (en) 1999-12-07 2007-01-02 Blue Spike, Inc. Systems, methods and devices for trusted transactions
US6052780A (en) * 1996-09-12 2000-04-18 Open Security Solutions, Llc Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
US7730317B2 (en) 1996-12-20 2010-06-01 Wistaria Trading, Inc. Linear predictive coding implementation of digital watermarks
US6373986B1 (en) * 1998-04-08 2002-04-16 Ncr Corporation Compression of data transmission by use of prime exponents
US6785388B1 (en) * 1998-09-16 2004-08-31 Murata Kikai Kabushiki Kaisha Encryption method, decryption method, encryption/decryption method, cryptographic communications system, and computer usable medium
US6415032B1 (en) * 1998-12-01 2002-07-02 Xilinx, Inc. Encryption technique using stream cipher and block cipher
US6733998B1 (en) * 1998-12-07 2004-05-11 Sloan-Kettering Institute For Cancer Research Micromonospora echinospora genes coding for biosynthesis of calicheamicin and self-resistance thereto
US6654889B1 (en) 1999-02-19 2003-11-25 Xilinx, Inc. Method and apparatus for protecting proprietary configuration data for programmable logic devices
US7664264B2 (en) 1999-03-24 2010-02-16 Blue Spike, Inc. Utilizing data reduction in steganographic and cryptographic systems
US6959085B1 (en) 1999-05-03 2005-10-25 Ntru Cryptosystems, Inc. Secure user identification based on ring homomorphisms
EP1101319B1 (de) * 1999-05-27 2005-08-17 Koninklijke Philips Electronics N.V. Verfahren ind vorrichtung zur sicheren erzeugung von öffentlichen/geheimen schlüsselpaaren
US7475246B1 (en) 1999-08-04 2009-01-06 Blue Spike, Inc. Secure personal content server
JP2001211153A (ja) * 2000-01-25 2001-08-03 Murata Mach Ltd 秘密鍵生成方法
GB0013355D0 (en) * 2000-06-01 2000-07-26 Tao Group Ltd Parallel modulo arithmetic using bitwise logical operations
GB0013399D0 (en) * 2000-06-01 2000-07-26 Tao Group Ltd Decryption of cipher polynomials
GB0013356D0 (en) * 2000-06-01 2000-07-26 Tao Group Ltd A method of validating an encrypted message
AU2001288234A1 (en) * 2000-08-11 2002-02-25 Storage Technology Corporation Public key generation method and apparatus
US7127615B2 (en) 2000-09-20 2006-10-24 Blue Spike, Inc. Security based on subliminal and supraliminal channels for data objects
US7155610B2 (en) 2000-12-19 2006-12-26 Matsushita Electric Industrial Co., Ltd. Cryptocommunication system, transmission apparatus, and reception apparatus
US7181017B1 (en) 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
JP4188571B2 (ja) * 2001-03-30 2008-11-26 株式会社日立製作所 情報処理装置の演算方法および耐タンパ演算攪乱実装方式
WO2002091664A1 (en) * 2001-05-04 2002-11-14 Docomo Communications Laboratories Usa, Inc. Ring-based signature scheme
EP1796308A3 (de) 2001-05-04 2008-02-20 NTT DoCoMo Inc. Ringbasiertes Signaturschema
US8812398B2 (en) * 2001-05-08 2014-08-19 Qualcomm Incorporated Key for a wireless-enabled device
US6510988B1 (en) 2001-05-11 2003-01-28 Eric M. Kraus Identification bracelet
US7136484B1 (en) * 2001-10-01 2006-11-14 Silicon Image, Inc. Cryptosystems using commuting pairs in a monoid
EP2148463A3 (de) * 2001-10-19 2015-04-22 Panasonic Intellectual Property Management Co., Ltd. Vorrichtung zur numerischen Array-Ausgabe, Verfahren zur numerischen Array-Ausgabe, Verschlüsselungsvorrichtung und Entschlüsselungsvorrichtung
KR100406138B1 (ko) * 2001-11-28 2003-11-14 한국전자통신연구원 엔티알유 암/복호화 장치
JP2005515659A (ja) * 2001-12-07 2005-05-26 エヌティーアールユー・クリプトシステムズ・インコーポレーテッド ディジタル署名、認証方法及び装置
US7287275B2 (en) 2002-04-17 2007-10-23 Moskowitz Scott A Methods, systems and devices for packet watermarking and efficient provisioning of bandwidth
US6973579B2 (en) 2002-05-07 2005-12-06 Interdigital Technology Corporation Generation of user equipment identification specific scrambling code for the high speed shared control channel
US7221757B2 (en) * 2002-08-15 2007-05-22 Opentv, Inc. Method and system for accelerated data encryption
US7184551B2 (en) * 2002-09-30 2007-02-27 Micron Technology, Inc. Public key cryptography using matrices
US20040105546A1 (en) * 2002-11-19 2004-06-03 Leon Chernyak Geometry-Based Symmetric Cryptosystem Method
CN1692598A (zh) * 2002-12-03 2005-11-02 松下电器产业株式会社 密钥共享系统、共享密钥生成装置及共享密钥复原装置
EP1569378A4 (de) 2002-12-03 2006-08-02 Matsushita Electric Ind Co Ltd System zum gemeinsamen benutzen von schlüsseln,erzeugungseinrichtung für gemeinsam benutzte schlüssel und wiederherstelleinrichtung für gemeinsam benutzte schlüssel
US7249254B2 (en) * 2002-12-13 2007-07-24 Certicom Corp. Method and apparatus for protecting NTRU against a timing attack
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
US7756269B2 (en) * 2003-03-14 2010-07-13 Qualcomm Incorporated Cryptosystem for communication networks
WO2004095771A1 (en) * 2003-04-24 2004-11-04 Matsushita Electric Industrial Co., Ltd. Parameter generation apparatus, encryption system, decryption system, encryption apparatus, decryption apparatus, encryption method, decryption method, and program thereof
JP4567364B2 (ja) * 2003-04-24 2010-10-20 パナソニック株式会社 パラメータ生成装置、暗号化システム、復号化システム、暗号装置、暗号化方法、復号化方法、およびプログラム
US20060002562A1 (en) * 2003-06-02 2006-01-05 Arkady Berenstein Method and apparatus for geometric key establishment protocols based on topological groups
JP4422981B2 (ja) * 2003-06-12 2010-03-03 パナソニック株式会社 暗号通信システム
KR100561847B1 (ko) * 2003-10-08 2006-03-16 삼성전자주식회사 공개키를 이용한 데이터 암호화 및 복호화 방법
US8031865B2 (en) * 2004-01-08 2011-10-04 Encryption Solutions, Inc. Multiple level security system and method for encrypting data within documents
US7752453B2 (en) * 2004-01-08 2010-07-06 Encryption Solutions, Inc. Method of encrypting and transmitting data and system for transmitting encrypted data
US7526643B2 (en) * 2004-01-08 2009-04-28 Encryption Solutions, Inc. System for transmitting encrypted data
EP1734493B1 (de) 2004-03-31 2013-11-27 NEC Corporation Stopfanwendungsverfahren, das die sicherheit des ntru-verschlüsselungsverfahrens garantiert
WO2005109379A1 (ja) * 2004-05-12 2005-11-17 Matsushita Electric Industrial Co., Ltd. 暗号システム、暗号装置、復号装置、プログラムおよび集積回路
US7590236B1 (en) * 2004-06-04 2009-09-15 Voltage Security, Inc. Identity-based-encryption system
WO2006077822A1 (ja) 2005-01-24 2006-07-27 Matsushita Electric Industrial Co., Ltd. 署名生成装置及び署名検証装置
DE602006012935D1 (de) 2005-01-24 2010-04-29 Panasonic Corp Vorrichtung zur signaturgenerierung, vorrichtung zur schlüsselgenerierung und verfahren zur signaturgenerierung
US7694152B2 (en) * 2005-02-03 2010-04-06 International Business Machines Corporation Memory controller with performance-modulated security
CN1954547B (zh) 2005-04-18 2010-09-15 松下电器产业株式会社 签名生成装置和签名验证装置
EP1873965A1 (de) 2005-04-18 2008-01-02 Matsushita Electric Industrial Co., Ltd. Signaturerzeugungsvorrichtung und signaturverifizierungsvorrichtung
IE20050277A1 (en) * 2005-05-04 2006-11-29 Nat Univ Ireland Method and apparatus for generating error-correcting and error-detecting codes using zero-divisors and units in group rings
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US8462940B2 (en) * 2006-01-11 2013-06-11 International Business Machines Corporation Public key cryptosystem and associated method utilizing a hard lattice with O(n log n) random bits for security
US7941726B2 (en) * 2006-06-30 2011-05-10 Microsoft Corporation Low dimensional spectral concentration codes and direct list decoding
KR100742093B1 (ko) 2007-05-10 2007-07-24 인하대학교 산학협력단 엔티알유 암호화 및 복호화를 위한 다항식 컨볼루션 연산방법
FR2917920B1 (fr) * 2007-06-22 2009-10-09 Centre Nat Rech Scient Procede d'authentification utilisant un decodage de code correcteur d'erreurs a partir d'une matrice publique
WO2009084752A1 (en) * 2007-12-28 2009-07-09 Inha-Industry Partnership Institute A secure method for calculating a polynomial convolution operation for an ntru cryptosystem
KR100875461B1 (ko) 2008-02-27 2008-12-23 인하대학교 산학협력단 전력 분석 공격 방지를 위한 엔티알유 다항식 컨볼루션연산 방법 및 컴퓨터로 읽을 수 있는 기록매체
CN101965711B (zh) 2008-04-09 2014-12-03 松下电器产业株式会社 签名及验证方法、签名生成装置及签名验证装置
US8484485B2 (en) 2008-06-04 2013-07-09 Panasonic Corporation Encryption device and encryption system
US20090313171A1 (en) * 2008-06-17 2009-12-17 Microsoft Corporation Electronic transaction verification
US20100100947A1 (en) * 2008-10-21 2010-04-22 Apple Inc. Scheme for authenticating without password exchange
GB0822870D0 (en) * 2008-12-16 2009-01-21 Hatton Leslie Cryptography
FR2956541B1 (fr) 2010-02-18 2012-03-23 Centre Nat Rech Scient Procede cryptographique de communication d'une information confidentielle.
JP5491638B2 (ja) * 2010-10-26 2014-05-14 日本電信電話株式会社 代理計算システム、計算装置、能力提供装置、代理計算方法、能力提供方法、プログラム、及び記録媒体
ITGE20110091A1 (it) 2011-08-10 2013-02-11 Carlo Pes Metodo di cifratura e decifratura
JP5790287B2 (ja) * 2011-08-12 2015-10-07 ソニー株式会社 情報処理装置、情報処理方法、プログラム、及び記録媒体
JP6019453B2 (ja) 2012-07-05 2016-11-02 株式会社クリプト・ベーシック 暗号化装置、復号化装置、及びプログラム
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
EP2873186B1 (de) * 2012-07-26 2018-03-07 NDS Limited Verfahren und system zur homomorphen randomisierung einer eingabe
TWI474189B (zh) * 2012-07-31 2015-02-21 Chunghwa Telecom Co Ltd Automatic file encryption and decryption system
US9634840B2 (en) * 2013-07-23 2017-04-25 Security Innovation Inc. Digital signature technique
US9722798B2 (en) 2014-02-10 2017-08-01 Security Innovation Inc. Digital signature method
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
WO2015149826A1 (en) * 2014-03-31 2015-10-08 Irdeto B.V. Protecting an item of software
CN105337737B (zh) * 2014-07-03 2018-11-20 华为技术有限公司 公钥加密通信方法和装置
WO2016083424A1 (en) * 2014-11-27 2016-06-02 Koninklijke Philips N.V. Electronic calculating device for performing obfuscated arithmetic
NL2013944B1 (en) * 2014-12-09 2016-10-11 Koninklijke Philips Nv Public-key encryption system.
US20160352710A1 (en) 2015-05-31 2016-12-01 Cisco Technology, Inc. Server-assisted secure exponentiation
TWI569166B (zh) * 2016-01-05 2017-02-01 精品科技股份有限公司 資料驗證方法
US10277403B2 (en) 2016-02-25 2019-04-30 Onboard Security, Inc. Digital signature method and apparatus
EP3244567A1 (de) 2016-05-13 2017-11-15 ABB Schweiz AG Verschlüsselung für einfache vorrichtungen durch zufallsgenerierungsabladung
EP3364596A1 (de) * 2017-02-15 2018-08-22 Koninklijke Philips N.V. Schlüsselaustauschvorrichtung und verfahren
US10924287B2 (en) * 2017-06-23 2021-02-16 Onboard Security, Inc. Digital signature technique
DE102017117907B4 (de) * 2017-08-07 2023-04-27 Infineon Technologies Ag Durchführen einer kryptografischen Operation
FI128841B (en) * 2018-03-22 2021-01-15 Univ Helsinki Sensor calibration
CN108712256B (zh) * 2018-07-02 2021-10-26 复旦大学 一种基于椭圆曲线子域子码的加密解密算法
US11483153B2 (en) * 2018-07-17 2022-10-25 Koninklijke Philips N.V. Key encapsulation protocols
TWI672932B (zh) * 2018-09-27 2019-09-21 國立交通大學 基於質數陣列的後量子非對稱密鑰產生方法及系統、加密方法、解密方法及加密通訊系統
CN109543421A (zh) * 2018-12-12 2019-03-29 四川大学华西医院 一种基于多项式数论加密算法的医疗信息保护系统及方法
CN111586685B (zh) * 2020-04-26 2022-05-03 重庆邮电大学 一种基于格的匿名漫游认证方法
GB202011415D0 (en) 2020-07-23 2020-09-09 Optalysys Ltd Public-key cryptography methods and/or systems
WO2022266502A1 (en) * 2021-06-19 2022-12-22 Ntt Research, Inc. Broadcast encryption with improved resource utilization
KR102600166B1 (ko) * 2021-12-02 2023-11-08 조선대학교산학협력단 다항식을 이용하여 데이터의 암복호화를 수행하는 암호화 시스템에서 사용되는 다항식의 역원을 생성하기 위한 역원 생성 장치 및 방법
KR102595938B1 (ko) * 2021-12-02 2023-10-30 조선대학교산학협력단 다항식을 이용하여 데이터의 암복호화를 수행하는 암호화 시스템을 위한 다항식 역원 생성 장치 및 방법
ES2948323A1 (es) * 2022-02-15 2023-09-08 Univ Granada Procedimiento y dispositivo de cifrado/descifrado post-cuántico usando códigos lineales

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4218582A (en) * 1977-10-06 1980-08-19 The Board Of Trustees Of The Leland Stanford Junior University Public key cryptographic apparatus and method
US4405829A (en) * 1977-12-14 1983-09-20 Massachusetts Institute Of Technology Cryptographic communications system and method
US4633036A (en) * 1984-05-31 1986-12-30 Martin E. Hellman Method and apparatus for use in public-key data encryption system
US5054066A (en) * 1988-11-16 1991-10-01 Grumman Corporation Error correcting public key cryptographic method and program
EP0383985A1 (de) * 1989-02-24 1990-08-29 Claus Peter Prof. Dr. Schnorr Verfahren zur Identifikation von Teilnehmern sowie zur Generierung und Verifikation von elektronischen Unterschriften in einem Datenaustauschsystem
US5351297A (en) * 1991-06-28 1994-09-27 Matsushita Electric Industrial Co., Ltd. Method of privacy communication using elliptic curves
US5231668A (en) * 1991-07-26 1993-07-27 The United States Of America, As Represented By The Secretary Of Commerce Digital signature algorithm
US5271061A (en) * 1991-09-17 1993-12-14 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
US5276737B1 (en) * 1992-04-20 1995-09-12 Silvio Micali Fair cryptosystems and methods of use
US5299262A (en) * 1992-08-13 1994-03-29 The United States Of America As Represented By The United States Department Of Energy Method for exponentiating in cryptographic systems
US5375170A (en) * 1992-11-13 1994-12-20 Yeda Research & Development Co., Ltd. Efficient signature scheme based on birational permutations
NL9301348A (nl) * 1993-08-02 1995-03-01 Stefanus Alfonsus Brands Elektronisch betalingssysteem.
EP0639907B1 (de) * 1993-08-17 1999-12-08 R3 Security Engineering AG Verfahren zur digitalen Unterschrift und Verfahren zur Schlüsselübereinkunft
NZ336413A (en) * 1993-12-01 2000-01-28 Rpk Nz Ltd Method of generating random numbers by manipulating electronic pointer with coordinates at points corresponding to time instants being used for selection of points subset and computation of number function
US5668878A (en) * 1994-02-28 1997-09-16 Brands; Stefanus Alfonsus Secure cryptographic methods for electronic transfer of information
US5625692A (en) * 1995-01-23 1997-04-29 International Business Machines Corporation Method and system for a public key cryptosystem having proactive, robust, and recoverable distributed threshold secret sharing
US5577124A (en) * 1995-03-09 1996-11-19 Arithmetica, Inc. Multi-purpose high speed cryptographically secure sequence generator based on zeta-one-way functions
FR2737370B1 (fr) * 1995-07-27 1997-08-22 Bull Cp8 Procede de communication cryptographique

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018108313A1 (de) * 2018-04-09 2019-10-10 Infineon Technologies Ag Verfahren und Verarbeitungsvorrichtung zum Ausführen einer kryptografischen Operation auf Gitterbasis
US11265163B2 (en) 2018-04-09 2022-03-01 Infineon Technologies Ag Method and processing device for performing a lattice-based cryptographic operation

Also Published As

Publication number Publication date
JP2000516733A (ja) 2000-12-12
AU4582897A (en) 1998-03-06
CA2263588A1 (en) 1998-02-26
CA2263588C (en) 2005-01-18
IL128552A (en) 2004-06-01
AU716797B2 (en) 2000-03-09
DE69737097D1 (de) 2007-01-25
EP0920753A4 (de) 2004-11-10
US6081597A (en) 2000-06-27
EP0920753B1 (de) 2006-12-13
IL128552A0 (en) 2000-01-31
CN1232588A (zh) 1999-10-20
HK1021855A1 (en) 2000-07-07
US6298137B1 (en) 2001-10-02
JP4068664B2 (ja) 2008-03-26
EP0920753A1 (de) 1999-06-09
CN1172474C (zh) 2004-10-20
WO1998008323A1 (en) 1998-02-26

Similar Documents

Publication Publication Date Title
DE69737097T2 (de) Kryptographisches verfahren und vorrichtung mit öffentlichem schlüssel
DE69534192T2 (de) Verfahren zur gemeinsamen Nutzung einer geheimen Information, zur Erzeugung einer digitalen Unterschrift und zur Ausführung einer Beglaubigung in einem Kommunikationssystem mit mehreren Informationsverarbeitungseinrichtungen und Kommunikationssystem zur Anwendung dieses Verfahrens
DE60028645T2 (de) Vorrichtung und Verfahren zur Verteilung von Dokumenten
DE69935469T2 (de) Verfahren zur schnellen Ausführung einer Entschlüsselung oder einer Authentifizierung
Desmedt et al. Shared generation of authenticators and signatures
DE60215332T2 (de) System und Verfahren zum Verabreiten eines gemeinsamen Geheimnisses
Bergamo et al. Security of public-key cryptosystems based on Chebyshev polynomials
DE69920875T2 (de) Vorrichtung und Verfahren zum Berechnen einer digitalen Unterschrift
DE69629857T2 (de) Datenkommunikationssystem unter Verwendung öffentlicher Schlüssel
DE69829967T2 (de) Verfahren und vorrichtung zur schnellen elliptischen verschlüsselung mit unmittelbarer einbettung
DE69636815T2 (de) Verfahren zur sitzungsschlüsselerzeugung mit impliziten unterschriften
DE69233613T2 (de) Kryptographisches Protokoll zur gesicherten Kommunikation
DE60133266T2 (de) Verfahren und Vorrichtung zum Schutz der Datenintegrität
DE69917356T2 (de) Sicherheitstechnik an einem Computernetzwerk
DE602004001273T2 (de) Verfahren und Vorrichtung zur Identifiezierungsbasierten Verschlüsselung
DE69935455T2 (de) Kryptographisches verfahren unter verwendung eines öffentlichen und eines privaten schlüssels
CH694601A5 (de) Verfahren zur Verifizierung der Echtheit von ausgetauschten Nachrichten.
DE69838258T2 (de) Public-Key-Datenübertragungssysteme
DE60207691T2 (de) Verfahren zur prüfbaren teilung eines geheimnisses in potentiell asynchronen netzwerken
DE112012000971B4 (de) Datenverschlüsselung
DE69833352T2 (de) Vorrichtung zur Verarbeitung von Bivektoren und Verschlüsselungssystem unter Verwendung desselben
DE10248004A1 (de) Verfahren und Vorrichtung zum Verschlüsseln von Daten
DE102020119569B3 (de) Bereitstellen einer kryptografischen Information
Harn et al. (t, n) multi-secret sharing scheme based on bivariate polynomial
DE69735290T2 (de) Verfahren zur unsymmetrischen kryptographischen kommunikation und zugehöriger tragbarer gegenstand

Legal Events

Date Code Title Description
8364 No opposition during term of opposition