- 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 ab, wobei die Multiplikation „*“ eine zyklische Faltung modulo q ist: Das Produkt zweier Polynome und ist .
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 (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 , sondern in 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:
- Wahl eines zufälligen Polynoms f, dessen Koeffizienten in {-1, 0, 1} liegen und das modulo q invertierbar ist.
- Wahl eines zufälligen Polynoms g, dessen Koeffizienten in {-1, 0, 1} liegen und das modulo q invertierbar ist.
- 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].
- Resultante Rg von g und ein Polynom ρg berechnen, so dass ρg * g + τg * (xn − 1) = Rg für ein beliebiges Polynom τg gilt.
- Wenn GGT(Rf,Rg)≠1 ist, wieder bei Schritt 1 anfangen.
- Mittels des erweiterten euklidischen Algorithmus' zwei Zahlen Sf und Sg ermitteln, so dass SfRf + SgRg = 1 gilt.
- A(x) = qSfρf(x) und B(x) = − qSgρg(x) setzen.
- Inverse f − 1(x) = ρf(x) / Rf und g − 1(x) = ρg(x) / Rg in auf genügend viele Dezimalstellen berechnen.
- . Anmerkung: und sind Gaußklammern.
- F(x) = B(x) − C(x) * f(x) und G(x) = A(x) − C(x) * g(x).
- fq = die Inverse von f modulo q.
- Im Standardfall: f' = F und
- Im transponierten Fall: f' = g und
Signierung
Sei m die zu signierende Nachricht.
Für i = B bis 0 werden folgende Schritte ausgeführt:
- (f,f',h) = i-te Basis
- si = x * f + y * f'
- 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 gegeben, wobei ist (letztere wird als zentrierte Euklidische Norm bezeichnet).
Die Signatur wird dann wie folgt überprüft:
- Die Signatur ist gültig, wenn 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 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 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
- ↑ 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).
- ↑ Hoffstein, Pipher, Silverman: An Introduction to mathematical Cryptography, Springer 2008, ISBN 978-0-387-77993-5
- ↑ a b http://grouper.ieee.org/groups/1363/lattPK/submissions/EESS1v2.pdf Efficient Embedded Security Standard
- ↑ Phong Q. Nguyen: A Note on the Security of NTRUSign. (http://eprint.iacr.org/2006/387.pdf).
Weblinks
- http://grouper.ieee.org/groups/1363/lattPK/submissions/EESS1v2.pdf Beschreibung des Algorithmus
- http://grouper.ieee.org/groups/1363/WorkingGroup/presentations/NTRUSignParams-2005-08.pdf Ergänzungen, Optimierungen und Herleitung von Parametern
- http://www.freepatentsonline.com/7308097.pdf US-Softwarepatent auf NTRUSign, läuft nach der 20jährigen Spanne am 6. Dezember 2022 ab
- http://sourceforge.net/projects/ntru/ NTRUSign als Java-Quelltext
Wikimedia Foundation.