<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=NTRUEncrypt</id>
	<title>NTRUEncrypt - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=NTRUEncrypt"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=NTRUEncrypt&amp;action=history"/>
	<updated>2026-05-27T04:01:09Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=NTRUEncrypt&amp;diff=2222141&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=NTRUEncrypt&amp;diff=2222141&amp;oldid=prev"/>
		<updated>2026-04-19T00:05:49Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;NTRUEncrypt&amp;#039;&amp;#039;&amp;#039; ist ein [[Asymmetrisches Kryptosystem|asymmetrisches Verschlüsselungsverfahren]], das 1996 von den Mathematikern [[Jeffrey Hoffstein]], [[Jill Pipher]] und [[Joseph H. Silverman]] entwickelt wurde.&amp;lt;ref&amp;gt;Jeffrey Hoffstein, Jill Pipher, Joseph H. Silverman. {{Webarchiv|url=http://www.securityinnovation.com/uploads/Crypto/ANTS97.pdf |wayback=20130130160752 |text=NTRU: A Ring Based Public Key Cryptosystem |archiv-bot=2019-05-03 02:06:03 InternetArchiveBot }}. In Algorithmic Number Theory (ANTS III), Portland, OR, Juni 1998, J. P. Buhler (Hrsg.), Lecture Notes in Computer Science 1423, Springer-Verlag Berlin, 1998, 267–288.&amp;lt;/ref&amp;gt; Es basiert lose auf [[Gitter (Mathematik)|Gitterproblemen]], die selbst mit [[Quantenrechner]]n als nicht knackbar gelten. Allerdings ist NTRUEncrypt bisher nicht so gut untersucht wie gebräuchlichere Verfahren (z.&amp;amp;nbsp;B. RSA).&lt;br /&gt;
&lt;br /&gt;
Der Algorithmus ist in den USA patentiert; die Patente liefen im Jahr 2021 aus.&amp;lt;ref&amp;gt;{{Patent&lt;br /&gt;
 | Land = US&lt;br /&gt;
 | V-Nr = 7031468&lt;br /&gt;
 | Typ = Erteilung&lt;br /&gt;
 | Titel = Speed enhanced cryptographic method and apparatus&lt;br /&gt;
 | A-Datum = 2001-08-24&lt;br /&gt;
 | V-Datum = 2006-04-18&lt;br /&gt;
 | Erfinder = Jeffrey Hoffstein, Joseph H. Silverman&lt;br /&gt;
 | Anmelder = NTRU Cryptosystems, Inc.&lt;br /&gt;
 | DB = Google&lt;br /&gt;
}} (Auslaufen der 20-jährigen Frist am 24. August 2021)&amp;lt;/ref&amp;gt; NTRUEncrypt ist durch IEEE P1363.1 standardisiert. Eingesetzt wird es z.&amp;amp;nbsp;B. von den US-Firmen WiKID,&amp;lt;ref&amp;gt;{{Webarchiv|url=http://www.wikidsystems.com/learn-more/twofactorarch/twofactorclient |wayback=20111214141458 |text=WiKID-Authentifizierungsgeräte |archiv-bot=2019-05-03 02:06:03 InternetArchiveBot }}.&amp;lt;/ref&amp;gt; Echosat,&amp;lt;ref&amp;gt;{{Toter Link |datum=2019-05 |url=http://www.networkworld.com/news/2011/042011-ntrue-algorithm-x9.html |text=Artikel über NTRU in Networkworld vom 20. April 2011 |archivebot=2019-05-03 02:06:03 InternetArchiveBot}}.&amp;lt;/ref&amp;gt; yaSSL&amp;lt;ref&amp;gt;[http://www.yassl.com/yaSSL/Products-cyassl.html CyaSSL Embedded SSL Library].&amp;lt;/ref&amp;gt; und unter anderem dem Programm [[OpenSSH]].&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.openssh.com/txt/release-9.0 |titel=OpenSSH Release Notes 9.0 |datum=2022-04-08 |abruf=2022-04-12}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beschreibung des Verfahrens ==&lt;br /&gt;
Es wird im Folgenden lediglich der Kernalgorithmus beschrieben. Dieser ist für sich allein genommen anfällig gegenüber bestimmten Angriffen; siehe den Abschnitt &amp;#039;&amp;#039;[[#Vor- und Nachbearbeitung|Vor- und Nachbearbeitung]]&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Alle Berechnungen finden, soweit nicht anders vermerkt, im [[Polynomring|Ring]] &amp;lt;math&amp;gt;R = \Z_q[X]/(X^N-1)&amp;lt;/math&amp;gt; statt, d.&amp;amp;nbsp;h. der Grad des Polynoms übersteigt nie &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;. Die Multiplikation „*“ ist eine [[zyklische Faltung]] modulo &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt;:&lt;br /&gt;
Das Produkt zweier Polynome &amp;lt;math&amp;gt;f = [f_0, f_1, \ldots, f_{N-1}]&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;g = [g_0, g_1, \ldots, g_{N-1}]&amp;lt;/math&amp;gt; ist &amp;lt;math&amp;gt;f*g = \Big[ \sum_{i+j \equiv k \mod N}f_i \cdot g_j \mod q \Big]_{k=0,...,N-1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Schlüsselerzeugung ===&lt;br /&gt;
# Wahl der Parameter &amp;lt;math&amp;gt;N, p, q&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;q &amp;gt; p, \operatorname{ggT}(p, q) = 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Wahl eines zufälligen Polynoms &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, dessen Koeffizienten in {−1, 0, 1} liegen. Die Inversen &amp;lt;math&amp;gt;f_p&amp;lt;/math&amp;gt; (das Inverse modulo &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;) und &amp;lt;math&amp;gt;f_q&amp;lt;/math&amp;gt; (das Inverse modulo &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt;) müssen existieren.&lt;br /&gt;
# Erzeugung eines Zufallspolynoms &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt;, dessen Koeffizienten in {−1, 0, 1} liegen.&lt;br /&gt;
# &amp;lt;math&amp;gt;h \equiv f_q * g \mod q&amp;lt;/math&amp;gt; ist der öffentliche Schlüssel, &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; der geheime Schlüssel. (Zur schnelleren Entschlüsselung kann auch &amp;lt;math&amp;gt;f_p&amp;lt;/math&amp;gt; mit in den geheimen Schlüssel aufgenommen werden.)&lt;br /&gt;
&lt;br /&gt;
=== Verschlüsselung ===&lt;br /&gt;
# Umwandlung des Klartexts in ein Polynom &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Wahl eines zufälligen Polynoms &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; mit kleinen Koeffizienten.&lt;br /&gt;
# Das Polynom &amp;lt;math&amp;gt;e \equiv pr*h+m \mod q&amp;lt;/math&amp;gt; ist der [[Geheimtext]].&lt;br /&gt;
&lt;br /&gt;
=== Entschlüsselung ===&lt;br /&gt;
# Berechnung von &amp;lt;math&amp;gt;a \equiv f*e \mod q&amp;lt;/math&amp;gt; mit Wahl der Repräsentanten der Koeffizienten von &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; im Intervall &amp;lt;math&amp;gt;[-q/2, q/2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Berechnung von &amp;lt;math&amp;gt;c \equiv f_p*a \mod p&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Durch Umwandlung des Polynoms &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; in die Textdarstellung ergibt sich der Klartext.&lt;br /&gt;
&lt;br /&gt;
=== Korrektheit ===&lt;br /&gt;
Für das Polynom &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; gilt:&lt;br /&gt;
&amp;lt;math&amp;gt;a \equiv f*e \equiv f*pr*h + f*m \mod q = f*pr*f_q*g + f*m \mod q = pr*g + f*m \mod q&amp;lt;/math&amp;gt;.&lt;br /&gt;
Weil die Koeffizienten alle klein sind, gilt diese Gleichung auch im Ring &amp;lt;math&amp;gt;R&amp;lt;/math&amp;gt;.&lt;br /&gt;
Deshalb wird im zweiten Schritt &amp;lt;math&amp;gt;c = f_p*pr*g + f_p*f*m \mod p = m \mod p&amp;lt;/math&amp;gt; korrekt berechnet.&lt;br /&gt;
&lt;br /&gt;
=== Effizienz ===&lt;br /&gt;
Um die Multiplikation zu beschleunigen, können die Polynome &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; so gewählt werden, dass viele Koeffizienten Null sind. Dazu werden Parameter &amp;lt;math&amp;gt;d_f, d_g&amp;lt;/math&amp;gt; gewählt und bei der Wahl von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; werden &amp;lt;math&amp;gt;d_f&amp;lt;/math&amp;gt; Koeffizienten gleich 1, &amp;lt;math&amp;gt;d_f -1&amp;lt;/math&amp;gt; Koeffizienten gleich −1 und der Rest gleich 0 gesetzt. Bei der Wahl von &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; werden &amp;lt;math&amp;gt;d_g&amp;lt;/math&amp;gt; Koeffizienten gleich 1, &amp;lt;math&amp;gt;d_g -1&amp;lt;/math&amp;gt; Koeffizienten gleich −1 und der Rest gleich 0 gesetzt (Bem.: Die Anzahl Einsen muss ungleich der Anzahl Minus-Einsen sein, weil das Polynom sonst nicht invertierbar ist).&lt;br /&gt;
&lt;br /&gt;
Das Entschlüsseln wird effizienter, wenn man das Polynom &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; nach der Formel &amp;lt;math&amp;gt;f=1+p \cdot f_{1}&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;f_1 \in \Z_p[X]&amp;lt;/math&amp;gt; bildet. Da dann &amp;lt;math&amp;gt;f_{p}^{-1}=1&amp;lt;/math&amp;gt; gilt, entfällt die Berechnung der Inversen modulo &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;. Es ist jedoch bei der Parameterwahl darauf zu achten, dass das gewünschte Maß an Sicherheit erhalten bleibt, da ein Angreifer nun die Menge der &amp;lt;math&amp;gt;f_1&amp;lt;/math&amp;gt; durchsuchen kann.&amp;lt;ref name=optim&amp;gt;[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.64.6834&amp;amp;rep=rep1&amp;amp;type=pdf Hoffstein u. Silverman: Optimizations for NTRU].&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann man zur Beschleunigung der Multiplikation das Polynom &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; nach der Formel &amp;lt;math&amp;gt;f(x)=1+p(f_1(x)*f_2(x)+f_3(x)&amp;lt;/math&amp;gt; bilden, wobei &amp;lt;math&amp;gt;f_1&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;f_2&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;f_3&amp;lt;/math&amp;gt; sehr dünn besetzt sein können.&amp;lt;ref name=optim /&amp;gt; An die Stelle des Parameters &amp;lt;math&amp;gt;d_f&amp;lt;/math&amp;gt; treten dann die drei Parameter &amp;lt;math&amp;gt;d_{f1}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;d_{f2}&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;d_{f3}&amp;lt;/math&amp;gt;. Die Effizienzsteigerung ergibt sich dadurch, dass &amp;lt;math&amp;gt;d_{f1}+d_{f2}+d_{f3}&amp;lt;d_f&amp;lt;/math&amp;gt; gilt (&amp;lt;math&amp;gt;f_1*f_2+f_3&amp;lt;/math&amp;gt; aber dennoch genügend Koeffizienten ungleich null hat) und deshalb mit &amp;lt;math&amp;gt;f_1*f_2+f_3&amp;lt;/math&amp;gt; schneller als mit &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; multipliziert werden kann.&lt;br /&gt;
&lt;br /&gt;
Schließlich kann &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; statt einer [[Primzahl]] auch als Polynom gewählt werden, wobei &amp;lt;math&amp;gt;p(x)=x+2&amp;lt;/math&amp;gt; die günstigste Wahl ist.&amp;lt;ref name=optim /&amp;gt; Diese Variante taucht aber nur in der älteren Literatur auf.&lt;br /&gt;
&lt;br /&gt;
== Sicherheit ==&lt;br /&gt;
Es gibt für NTRUEncrypt keinen formalen Sicherheitsbeweis wie für andere kryptographische Verfahren, dennoch wird das Verfahren für hinreichend große Parameter für sicher gehalten.&lt;br /&gt;
Anfang 2011 erschien eine Arbeit der Kryptologen Damien Stehlé und Ron Steinfeld, in der ein Sicherheitsbeweis für eine abgewandelte Form von NTRUEncrypt geführt wird.&amp;lt;ref&amp;gt;{{Literatur | Autor=Damien Stehlé and Ron Steinfeld | Titel=Making NTRU as Secure as Worst-Case Problems over Ideal Lattices | Online=https://perso.ens-lyon.fr/damien.stehle/downloads/ntruenc.pdf}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es sind verschiedene Angriffe auf NTRUEncrypt möglich. Der simpelste davon ist das Durchprobieren aller Polynome &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;, die für die Parameter &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;d_f&amp;lt;/math&amp;gt; in Frage kommen. Ein effektiverer Angriff ist der Hälftenangriff (engl. [[Meet-in-the-middle-Angriff|Meet-in-the-middle-Attack]]), bei dem statt eines Polynoms der vollen Länge &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; zwei Polynome mit nur &amp;lt;math&amp;gt;N/2&amp;lt;/math&amp;gt; Koeffizienten gleichzeitig durchprobiert werden. Dadurch benötigt dieser Angriff nur die Quadratwurzel der Anzahl der Schritte, die beim primitiven Durchprobieren ausgeführt werden.&lt;br /&gt;
Noch effektiver ist eine [[Gitter (Mathematik)#Gitterreduktion|Gitterreduktion]], z.&amp;amp;nbsp;B. mittels des [[LLL-Algorithmus]].&lt;br /&gt;
&lt;br /&gt;
=== Vor- und Nachbearbeitung ===&lt;br /&gt;
Der NTRUEncrypt-Kernalgorithmus bietet keine Sicherheit gegenüber Angreifern, die die Daten nach der Verschlüsselung manipulieren. Dies kann durch ein spezielles [[Padding (Informatik)|Padding]] behoben werden, anhand dessen der Empfänger manipulierte Chiffrate erkennen kann.&lt;br /&gt;
&lt;br /&gt;
Es sind drei solcher Verfahren bekannt. [[SVES-1]] und [[SVES-2]] sind älter und gegen Angriffe, die Entschlüsselungsfehler ausnutzen, anfällig.&amp;lt;ref&amp;gt;[https://assets.securityinnovation.com/static/downloads/NTRU/resources/cr03_ntru.pdf The impact of decryption failures on the security of NTRU encryption].&amp;lt;/ref&amp;gt; [[SVES-3]] behebt diese Schwächen und ist im P1363.1-Standard unter der Bezeichnung SVES beschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Parameter mit 256 Bit Sicherheitsniveau ===&lt;br /&gt;
Ursprünglich wurden für die Länge von &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; Werte zwischen 167 und 503 empfohlen, nach dem Bekanntwerden diverser Angriffe wurden die Empfehlungen aber entsprechend angepasst. Die folgenden Parameter&amp;lt;ref&amp;gt;{{Webarchiv|url=http://grouper.ieee.org/groups/1363/lattPK/ |wayback=20130629215819 |text=IEEE P1363.1 |archiv-bot=2019-05-03 02:06:03 InternetArchiveBot}} ({{Webarchiv|url=https://pdfs.semanticscholar.org/4e23/5fd5671971d913f4daee4903ab2aaf84f796.pdf |wayback=20161230141929 |text=PDF |archiv-bot=2019-05-03 02:06:03 InternetArchiveBot}} eines Drafts)&amp;lt;/ref&amp;gt; werden allen derzeit bekannten (Stand 9/2011) Angriffen gerecht:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! Bezeichnung&lt;br /&gt;
! N&lt;br /&gt;
! p&lt;br /&gt;
! q&lt;br /&gt;
! d&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&lt;br /&gt;
! d&amp;lt;sub&amp;gt;g&amp;lt;/sub&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Geringste Schlüssellänge&lt;br /&gt;
| EES1087EP2&lt;br /&gt;
| 1087&lt;br /&gt;
| 3&lt;br /&gt;
| 2048&lt;br /&gt;
| 120&lt;br /&gt;
| 362&lt;br /&gt;
|-&lt;br /&gt;
| Mittlere Schlüssellänge, mittlere Dauer&lt;br /&gt;
| EES1171EP1&lt;br /&gt;
| 1171&lt;br /&gt;
| 3&lt;br /&gt;
| 2048&lt;br /&gt;
| 106&lt;br /&gt;
| 390&lt;br /&gt;
|-&lt;br /&gt;
| Geringste Ver- und Entschl.dauer&lt;br /&gt;
| EES1499EP1&lt;br /&gt;
| 1499&lt;br /&gt;
| 3&lt;br /&gt;
| 2048&lt;br /&gt;
| 79&lt;br /&gt;
| 499&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Post-Quanten-Kryptographie]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://grouper.ieee.org/groups/1363/private/P1363.1-D12-clean.pdf Beschreibung des Algorithmus und empfohlene Parameter (Registrierung erforderlich)]&lt;br /&gt;
* [https://grouper.ieee.org/groups/1363/lattPK/submissions/EESS1v2.pdf Beschreibung des Algorithmus (ohne Registrierung zugänglich)] (PDF-Datei; 315&amp;amp;nbsp;kB)&lt;br /&gt;
* [https://sourceforge.net/projects/ntru/ NTRUEncrypt als Java-Quelltext]&lt;br /&gt;
* Eine NTRUEncrypt-Implementation der TU Darmstadt ist per SVN mit dem Befehl&amp;lt;br&amp;gt;&amp;#039;&amp;#039;svn co --username guest --password guest https://svn.cdc.informatik.tu-darmstadt.de/svn/repos/flexiprovider&amp;#039;&amp;#039;&amp;lt;br&amp;gt;erhältlich (Der NTRU-Code befindet sich im Verzeichnis flexiprovider/trunk/FlexiProvider/src/de/flexiprovider/pqc/ntru/).&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Asymmetrisches Verschlüsselungsverfahren]]&lt;br /&gt;
[[Kategorie:Abkürzung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>