<?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=Merkles_Puzzle</id>
	<title>Merkles Puzzle - 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=Merkles_Puzzle"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Merkles_Puzzle&amp;action=history"/>
	<updated>2026-06-06T23:43:34Z</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=Merkles_Puzzle&amp;diff=2476050&amp;oldid=prev</id>
		<title>imported&gt;Heronils: /* Sicherheit des Protokolls */ Wort hinzugefügt um klarzumachen dass es eine Alternative ist.</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Merkles_Puzzle&amp;diff=2476050&amp;oldid=prev"/>
		<updated>2026-03-13T18:12:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Sicherheit des Protokolls: &lt;/span&gt; Wort hinzugefügt um klarzumachen dass es eine Alternative ist.&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;Merkles Puzzle&amp;#039;&amp;#039;&amp;#039; ist ein [[Kryptographie|kryptografisches]] [[Schlüsselaustauschprotokoll]]. Es ist das erste derartige [[Kommunikationsprotokoll|Protokoll]], bei dem nicht vorausgesetzt wird, dass die Kommunizierenden bereits einen geheimen Schlüssel teilen. Es wurde im Jahr 1974 von [[Ralph Merkle]] entdeckt, aber erst 1978 veröffentlicht.&amp;lt;ref name=&amp;quot;Merkle78&amp;quot; /&amp;gt; Ein solches Protokoll wurde lange Zeit für unmöglich gehalten, und seine Entdeckung kann als Beginn der [[Public-Key-Kryptographie]] gesehen werden.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
&lt;br /&gt;
=== Übersicht ===&lt;br /&gt;
[[Alice und Bob|Alice]] erzeugt eine große Zahl von Geheimnissen ([[Geheimtext]]en) und schickt sie an [[Alice und Bob|Bob]]. Bob wählt zufällig eines davon aus und [[Entzifferung|entziffert]] es. Er erhält daraus einen Schlüssel und einen zugeordneten, eindeutigen Index. Er schickt den Index zurück an Alice, die nun weiß, welchen Schlüssel Bob verwendet. Ein geheimer Beobachter weiß das allerdings nicht und muss so lange Geheimnisse entziffern, bis er den Index und den zugeordneten Schlüssel findet. Dafür braucht er im Allgemeinen viel mehr Zeit als Bob, da er viele der Geheimnisse entziffern muss statt nur eines.&lt;br /&gt;
&lt;br /&gt;
=== Detaillierte Beschreibung ===&lt;br /&gt;
Alice und Bob einigen sich zunächst auf ein [[Symmetrisches Kryptosystem|symmetrisches Verschlüsselungsverfahren]] &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt;, beispielsweise [[Advanced Encryption Standard|AES]]. Ferner auf die Parameter &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Diese sind [[natürliche Zahl]]en. &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; könnte etwa 1 Million&amp;lt;ref&amp;gt;{{Internetquelle |url=https://manchestersiam.wordpress.com/2016/01/29/public-key-cryptography-merkles-puzzles/ |titel=Public Key Cryptography: Merkle’s Puzzles |werk=Manchester SIAM-IMA Student Chapter Blog |datum=2016-01-29 |sprache=en |abruf=2025-05-30}}&amp;lt;/ref&amp;gt; sein und &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; etwa 64.&lt;br /&gt;
&lt;br /&gt;
Alice erzeugt dann eine Tabelle mit &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; Einträgen, bestehend jeweils aus einem zufällig gewählten Schlüssel &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt; und dem Index &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;, mit &amp;lt;math&amp;gt;i = 0, 1, \cdots, m-1&amp;lt;/math&amp;gt;. Später werden Alice und Bob ihre Nachrichten mit einem dieser Schlüssel &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt; verschlüsseln, daher muss dessen Länge ausreichend für eine sichere Verschlüsselung sein, typisch 128 [[Bit]]. Als Nächstes erstellt Alice &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; weitere zufällige Schlüssel &amp;lt;math&amp;gt;s_i&amp;lt;/math&amp;gt;, diesmal der Länge &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Bit. Der Parameter &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; wird absichtlich so gewählt, dass eine mit einem &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Bit langen Schlüssel verschlüsselte Nachricht mit realistischem, aber nicht zu kleinem Aufwand entziffert werden kann, etwa im Bereich &amp;lt;math&amp;gt;40 \le n \le 64&amp;lt;/math&amp;gt;. Alice verschlüsselt nun jeden Tabelleneintrag &amp;lt;math&amp;gt;(K_i, i)&amp;lt;/math&amp;gt; mit dem entsprechenden Schlüssel &amp;lt;math&amp;gt;s_i&amp;lt;/math&amp;gt;. Die so erzeugten [[Geheimtext]]e &amp;lt;math&amp;gt;E_{s_i}(K_i, i)&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;i=0,1,\ldots, m-1&amp;lt;/math&amp;gt; sendet sie in zufälliger Reihenfolge an Bob.&lt;br /&gt;
&lt;br /&gt;
Bob wählt nun zufällig einen der Geheimtexte aus und entziffert ihn, indem er alle möglichen Schlüssel der Länge &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; durchprobiert, bis er den richtigen &amp;lt;math&amp;gt;s_i&amp;lt;/math&amp;gt; gefunden hat. Dafür braucht er höchstens &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt; Versuche, im Mittel &amp;lt;math&amp;gt;2^n/2&amp;lt;/math&amp;gt;. Er merkt sich den Schlüssel &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt; und sendet den Index &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; zurück an Alice. Damit haben die beiden den gemeinsamen Schlüssel &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt; vereinbart, mit dem sie nun z.&amp;amp;nbsp;B. mit AES Nachrichten austauschen können.&lt;br /&gt;
&lt;br /&gt;
In der Praxis müssen die Geheimtexte noch zusätzliche Information enthalten, damit Bob das richtige [[Dechiffrat]] erkennen kann:&lt;br /&gt;
&lt;br /&gt;
Alice könnte beispielsweise einen Text &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ausreichender Länge wählen, der an alle Tabelleneinträge angefügt und zusammen mit diesen verschlüsselt wird. &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; wird außerdem im Klartext zusammen mit den Geheimtexten &amp;lt;math&amp;gt;E_{s_i}(K_i, i, T)&amp;lt;/math&amp;gt; an Bob gesendet. Bob kann dann den richtigen Schlüssel &amp;lt;math&amp;gt;s_i&amp;lt;/math&amp;gt; daran erkennen, dass &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; im Dechiffrat richtig herauskommt.  Das Dechiffrat könnte zwar rein zufällig plausibel sein, aber durch eine genügende Länge von &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; macht man diesen Fall unwahrscheinlich.  In diesem Fall ist auch darauf zu achten, dass &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; ein modernes Verschlüsselungsverfahren wie etwa AES ist, welches gegen einen [[Kryptoanalyse#Known Plaintext|Angriff mit bekanntem Klartext]] sicher ist. Damit wird sichergestellt, dass ein Angreifer nicht mithilfe von &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; die notwendige Anzahl von übersendeten Geheimnissen in vertretbarer Zeit entziffern kann.&lt;br /&gt;
&lt;br /&gt;
Eine andere Möglichkeit ist, das Feld für den Index &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; so groß zu machen, dass es für Zahlen bis deutlich über &amp;lt;math&amp;gt;m\cdot 2^n&amp;lt;/math&amp;gt; ausreicht. Dann wird mit hoher Wahrscheinlichkeit bei jedem falschen Schlüssel ein Index größer als &amp;lt;math&amp;gt;m-1&amp;lt;/math&amp;gt; herauskommen.&lt;br /&gt;
&lt;br /&gt;
== Sicherheit des Protokolls ==&lt;br /&gt;
Ein Angreifer, der die Kommunikation der beiden belauscht, sieht zuerst die &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; Chiffrate, die Alice an Bob schickt, dann den entzifferten Index &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;, den Bob zurückschickt, der aber von der Reihenfolge, in der die Chiffrate gesendet wurden, unabhängig ist. Daraus kann er den zwischen den beiden vereinbarten Schlüssel &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt; nicht unmittelbar ableiten. Es bleibt ihm also nichts anderes übrig, als so lange Chiffrate zu entziffern, bis er dasjenige findet, das den Index &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; und den zugeordneten Schlüssel &amp;lt;math&amp;gt;K_i&amp;lt;/math&amp;gt; enthält. Dafür muss er im Mittel &amp;lt;math&amp;gt;m / 2&amp;lt;/math&amp;gt; Chiffrate entziffern. Bei jeweils &amp;lt;math&amp;gt;2^n/2&amp;lt;/math&amp;gt; Versuchen, den richtigen Schlüssel &amp;lt;math&amp;gt;s_i&amp;lt;/math&amp;gt; zu finden, braucht er insgesamt im Mittel &amp;lt;math&amp;gt;m \cdot 2^n / 4&amp;lt;/math&amp;gt; Versuche. Wenn &amp;lt;math&amp;gt;m = 2^n&amp;lt;/math&amp;gt; gewählt wurde, ist seine Laufzeit also quadratisch in der von Alice und Bob.&lt;br /&gt;
&lt;br /&gt;
Angenommen, Bob kann pro Sekunde &amp;lt;math&amp;gt;2^{25}&amp;lt;/math&amp;gt; Schlüssel durchprobieren. Dann braucht er bei &amp;lt;math&amp;gt;n = 25&amp;lt;/math&amp;gt; maximal eine, im Mittel 1/2 Sekunde, um ein Chiffrat zu entziffern. Ein Angreifer mit derselben Rechenleistung bräuchte bei &amp;lt;math&amp;gt;m=2^{25}&amp;lt;/math&amp;gt; jedoch im Durchschnitt drei Monate. Allerdings kann ein Angreifer den Schlüssel mit Glück auch deutlich früher erraten.&lt;br /&gt;
&lt;br /&gt;
In der theoretischen Kryptologie wird heutzutage in der Regel angenommen, dass die Laufzeit des Angreifers polynomial in einem Sicherheitsparameter ist. Nach dieser Definition reicht ein quadratischer Unterschied in der Laufzeit zwischen den Benutzern und dem Angreifer nicht aus, der Angreifer könnte alle Chiffrate durchprobieren. Das Verfahren ist in einem solchen Modell also nicht sicher.&lt;br /&gt;
&lt;br /&gt;
Für die praktische Anwendung ist Merkles Puzzle sowieso weniger geeignet, weil die Sicherheitsreserve gering ist. Man muss es so abstimmen, dass Bob zum Entziffern nicht zu lange braucht, und keine übermäßig große Datenmenge zu übermitteln ist, aber ein Angreifer andererseits nur mit geringer Wahrscheinlichkeit den richtigen Tabelleneintrag rechtzeitig findet. In der Praxis kommt daher stattdessen etwa [[Diffie-Hellman-Schlüsselaustausch|Diffie-Hellman]] zum Einsatz, welches auf dem [[Diskreter Logarithmus|diskreten Logarithmus]] basiert, was eine höhere Komplexität bietet. Für Geheimnisse, die auch nach Jahren noch brisant sind, sollte man Merkles Puzzle sowieso nicht einsetzen, denn ein Angreifer kann die übermittelten Nachrichten speichern und dann in Ruhe daran arbeiten, den Schlüssel zu finden. Hier empfehlen sich stattdessen [[Einmalkennwort|Einmalkennwörter]].&lt;br /&gt;
&lt;br /&gt;
Zuletzt ist festzuhalten, dass das Protokoll, wie alle anderen auch, nicht funktioniert, wenn der Angreifer ein [[Man-in-the-Middle-Angriff|Man-in-the-Middle]] ist, der die Nachrichten nicht nur belauscht, sondern auch verändert. Er ersetzt dann einfach die Chiffrate von Alice durch seine eigenen und sendet die an Bob. Dasselbe macht er mit Bobs an Alice zurückgesendeten Index. Diesem Problem wird entgegengewirkt, indem Alice und Bob ihre Nachrichten [[Digitale Signatur|digital signieren]].&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Merkle78&amp;quot;&amp;gt;{{Literatur |Autor=Ralph Merkle |Titel=Secure Communications over Insecure Channels |Sammelwerk=Communications of the ACM |Band=21 |Nummer=4 |Datum=1978-04 |Seiten=294–299 |DOI=10.1145/359460.359473}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* Ralph Merkle, [http://www.selmer.uib.no/researchcourse2004/program/RonRivest/Merkle-SecureCommunicationOverInsecureChannels.htm Secure Communications over Insecure Channels (1974)]: Paper und Interview mit Ralph Merkle&lt;br /&gt;
* Ralph Merkle, 1974 [http://www.merkle.com/1974 project Publishing a new idea] Geschichte der Entdeckung und Scan der Ideenskizze&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schlüsselaustauschprotokoll]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Heronils</name></author>
	</entry>
</feed>