NTRUSign

NTRUSign

NTRUSign ist ein digitales Signaturverfahren, das 2003 entwickelt wurde[1]. Es basiert auf dem Goldreich-Goldwasser-Halewi-Signaturverfahren und ist der Nachfolger des unsicheren NSS-Verfahrens. Es ist mit NTRUEncrypt verwandt.

Inhaltsverzeichnis

Beschreibung des Verfahrens

Ebenso wie in NTRUEncrypt laufen auch NTRUSign die Berechnungen (mit Ausnahme der Division durch die Resultante) im Ring R = \Z_q[X]/(X^N-1) ab, wobei die Multiplikation „*“ eine zyklische Faltung modulo q ist: Das Produkt zweier Polynome f = [f_0, f_1, \ldots, f_{N-1}] und g = [g_0, g_1, \ldots, g_{N-1}] ist f*g = \sum_{i+j \equiv k \mod N}f_i \cdot g_j \mod q.

Es kann bei NTRUSign entweder das Standard- oder das transponierte Gitter zugrunde gelegt werden. Das transponierte Gitter hat den Vorteil, dass das Polynom f' nur Koeffizienten in {-1,0,1} enthält und sich dadurch schneller multiplizieren lässt.

Weiterhin kann der Parameter B, die Zahl sogenannter Perturbationen, gewählt werden. Es hat sich allerdings herausgestellt, dass 0 Perturbationen unsicher und mehr als eine nicht notwendig sind, daher ist B in der Praxis immer gleich 1.

Außerdem sind die Größen N (Anzahl Polynomkoeffizienten), q (Modulus), d (Anzahl Koeffizienten = -1), β (Normkorrekturfaktor) und \mathcal{N} (Normschranke) von Bedeutung.

Schlüsselerzeugung

Es werden B sogenannte Basen erzeugt. Jede davon besteht aus 3 Polynomen, die mit f,f' und h bezeichnet werden. Das Polynom h der ersten Basis bildet den öffentlichen Schlüssel, alle anderen Polynome sämtlicher Basen bilden zusammen den Privatschlüssel.

Basiserzeugung

Es wird hier die Variante nach Hoffstein et al.[2] beschrieben. Im EESS-Standard[3] findet die Invertierung der Polynome f und g nicht in \R, sondern in \Z statt. Dadurch kommt man zwar ohne Kommazahlen aus und erhält „bessere“ (normkleinere) Polynome F und G, muss aber zusätzlich eine aufwändige Resultantenberechnung durchführen.

Zur Generierung einer Basis (f,f',h) geht man wie folgt vor:

  1. Wahl eines zufälligen Polynoms f, dessen Koeffizienten in {-1, 0, 1} liegen und das modulo q invertierbar ist.
  2. Wahl eines zufälligen Polynoms g, dessen Koeffizienten in {-1, 0, 1} liegen und das modulo q invertierbar ist.
  3. Resultante Rf von f und ein Polynom ρf berechnen, so dass ρf * f + τf * (xn − 1) = Rf für ein beliebiges Polynom τf gilt. Dieser Schritt ist der rechenintensivste. Mildern kann man dies, indem man für mehrere Primzahlen pi die Resultante modulo pi berechnet und die Gesamtresultante aus den Moduli rekonstruiert. Zu Einzelheiten der Resultantenberechnung siehe Abschnitte 2.2.7.1 und 2.2.7.2 des EESS-Standards[3].
  4. Resultante Rg von g und ein Polynom ρg berechnen, so dass ρg * g + τg * (xn − 1) = Rg für ein beliebiges Polynom τg gilt.
  5. Wenn GGT(Rf,Rg)≠1 ist, wieder bei Schritt 1 anfangen.
  6. Mittels des erweiterten euklidischen Algorithmus' zwei Zahlen Sf und Sg ermitteln, so dass SfRf + SgRg = 1 gilt.
  7. A(x) = qSfρf(x) und B(x) = − qSgρg(x) setzen.
  8. Inverse f − 1(x) = ρf(x) / Rf und g − 1(x) = ρg(x) / Rg in \R[x]/(x^N-1) auf genügend viele Dezimalstellen berechnen.
  9. C(x)=\lfloor 1/2(B(x)*f^-1(x)+A(x)*g^-1(x)) \rceil. Anmerkung: \lfloor und \rceil sind Gaußklammern.
  10. F(x) = B(x) − C(x) * f(x) und G(x) = A(x) − C(x) * g(x).
  11. fq = die Inverse von f modulo q.
  12. Im Standardfall: f' = F und h=g*f_q \mod q
  13. Im transponierten Fall: f' = g und h=F*f_q \mod q

Signierung

Sei m die zu signierende Nachricht.

Für i = B bis 0 werden folgende Schritte ausgeführt:

  1. (f,f',h) = i-te Basis
  2. x = \lfloor -\frac{1}{q}m_i*f'_i \rceil
  3. y = \lfloor \frac{1}{q}m_i*f_i \rceil
  4. si = x * f + y * f'
  5. m_i = si*(h_i-h_{i-1}) \mod q
  6. s = s + si

s ist die Signatur.

Beachte: Unter bestimmten Umständen kann es vorkommen, dass die Signatur trotz gültigen Schlüssels ungültig ist. Es empfiehlt sich daher, die Signatur nach der Erzeugung zu überprüfen und ggf. nochmals zu signieren.

Signaturprüfung

Sei m die Nachricht, h der öffentliche Schlüssel und s die Signatur. Die Norm | | t | | eines Polynoms t sei durch \inf_{0 \leq k<q} ||t+kq||_z gegeben, wobei ||r||_z = \sum_{i=0}^{N-1}r_i^2 - \frac{1}{N}\sum_{i=0}^{N}r_i ist (letztere wird als zentrierte Euklidische Norm bezeichnet).

Die Signatur wird dann wie folgt überprüft:

  1. b = \sqrt{||s||^2 + \beta^2||s*h-m||^2}
  2. Die Signatur ist gültig, wenn b<\mathcal{N} ist.

Bemerkung: Die Berechnung der Norm über die Definition ist ineffizient. Eine bessere Methode ist es, auf alle Polynomkoeffizienten eine Konstante zu addieren, so dass die zwei Koeffizienten mit dem größten Abstand gleich weit von \frac{q}{2} entfernt sind (jeweils modulo q). Die Norm ergibt sich dann durch die zentrierte Euklidnorm (s.o.) des so entstandenen Polynoms.

Effizienz

Um die Multiplikation zu beschleunigen, können die Parameter f und g so gewählt werden, dass viele Koeffizienten Null sind. Dazu wird ein Parameter d gewählt und bei der Wahl von f und g werden d Koeffizienten gleich 1, d − 1 Koeffizienten gleich -1 und der Rest gleich 0 gesetzt.

Die Prüfung mehrerer Signaturen lässt sich beschleunigen, indem man statt der einzelnen Normen die Norm der Summe der Signaturen überprüft. Die Parameter N und \mathcal{N} müssen dazu erhöht werden.

Sicherheit

Da NTRUSign-Signaturen Informationen über den Privatschlüssel enthalten, kann ein Angreifer, der ausreichend viele Signaturen kennt, den Privatschlüssel ermitteln. Es darf deshalb mit einem Schlüsselpaar nur eine begrenzte Anzahl Signaturen erstellt werden. Die Autoren geben an, dass mit einer Perturbation über 1010 Signaturen erzeugt werden können, ohne den Schlüssel zu gefährden (ohne Perturbationen sind es nur 400[4]). Zur Sicherheit wird aber empfohlen, schon nach 10 Mio. Signaturen den Schlüssel zu wechseln. Ist dies nicht praktikabel, kann bei der Schlüsselerzeugung auch die Anzahl Perturbationen und damit die Lebensdauer des Schlüssels erhöht werden.

Jede Signatur ist nicht nur für die signierte Nachricht, sondern auch für alle naheliegenden (im Sinne der zentrierten Euklidnorm) Nachrichten gültig. Deshalb (und aus Effizienzgründen) wird nicht die Nachricht selber, sondern ein Streuwert signiert.

Einzelnachweise

  1. Jeffrey Hoffstein, Nick Howgrave-Graham, Jill Pipher, Joseph H. Silverman, William Whyte: NTRUSign: Digital Signatures Using the NTRU Lattice. (http://www.securityinnovation.com/cryptolab/pdf/NTRUSign_RSA.pdf).
  2. Hoffstein, Pipher, Silverman: An Introduction to mathematical Cryptography, Springer 2008, ISBN 978-0-387-77993-5
  3. a b http://grouper.ieee.org/groups/1363/lattPK/submissions/EESS1v2.pdf Efficient Embedded Security Standard
  4. Phong Q. Nguyen: A Note on the Security of NTRUSign. (http://eprint.iacr.org/2006/387.pdf).

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • NTRUSign — NTRUSign, also known as the NTRU Signature Algorithm, is a public key cryptography digital signature algorithm based on the GGH signature scheme. It was first presented at the rump session of Asiacrypt 2001 and published in peer reviewed form at… …   Wikipedia

  • NTRUEncrypt — The NTRUEncrypt public key cryptosystem, also known as the NTRU encryption algorithm, is a lattice based alternative to RSA and ECC and is based on the shortest vector problem in a lattice (i.e. is not breakable using quantum computers).… …   Wikipedia

  • Elliptic curve cryptography — (ECC) is an approach to public key cryptography based on the algebraic structure of elliptic curves over finite fields. The use of elliptic curves in cryptography was suggested independently by Neal Koblitz[1] and Victor S. Miller[2] in 1985.… …   Wikipedia

  • Public-key cryptography — In an asymmetric key encryption scheme, anyone can encrypt messages using the public key, but only the holder of the paired private key can decrypt. Security depends on the secrecy of that private key …   Wikipedia

  • Digital Signature Algorithm — The Digital Signature Algorithm (DSA) is a United States Federal Government standard or FIPS for digital signatures. It was proposed by the National Institute of Standards and Technology (NIST) in August 1991 for use in their Digital Signature… …   Wikipedia

  • Digital signature — This article is about secure cryptographic signatures. For simple signatures in digital form, see Electronic signature. A digital signature or digital signature scheme is a mathematical scheme for demonstrating the authenticity of a digital… …   Wikipedia

  • Web of trust — For the internet security website, see WOT: Web of Trust. In cryptography, a web of trust is a concept used in PGP, GnuPG, and other OpenPGP compatible systems to establish the authenticity of the binding between a public key and its owner. Its… …   Wikipedia

  • Topics in cryptography — This article is intended to be an analytic glossary , or alternatively, an organized collection of annotated pointers.Classical ciphers*Autokey cipher *Permutation cipher*Polyalphabetic substitution **Vigenère cipher*Polygraphic substitution… …   Wikipedia

  • NESSIE — For other uses, see Nessie (disambiguation). NESSIE (New European Schemes for Signatures, Integrity and Encryption) was a European research project funded from 2000–2003 to identify secure cryptographic primitives. The project was comparable to… …   Wikipedia

  • McEliece cryptosystem — In cryptography, the McEliece cryptosystem is an asymmetric encryption algorithm developed in 1978 by Robert McEliece.[1] It was the first such scheme to use randomization in the encryption process. The algorithm has never gained much acceptance… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”