Merkles Puzzle

Merkles Puzzle ist ein kryptografisches Schlüsselaustauschprotokoll. Es ist das erste derartige 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.[1] Die Existenz eines solchen Protokolls wurde lange für unmöglich gehalten, und seine Entdeckung kann als Beginn der Public-Key-Kryptographie gesehen werden.

Funktionsweise

Alice und Bob einigen sich zunächst auf ein symmetrisches Verschlüsselungsverfahren , beispielsweise AES. Ferner auf die Parameter und . Diese sind natürliche Zahlen. könnte etwa 1 Million[2] sein und etwa 64.

Alice erzeugt dann eine Tabelle mit Einträgen, bestehend jeweils aus einem zufällig gewählten Schlüssel und dem Index , mit . Im Folgenden werden Alice und Bob ihre Nachrichten mit einem dieser Schlüssel verschlüsseln, daher muss dessen Länge ausreichend für eine sichere Verschlüsselung sein, typisch 128 Bit. Als Nächstes erstellt Alice weitere zufällige Schlüssel , diesmal der Länge Bit. Der Parameter wurde absichtlich so gewählt, dass eine mit einem Bit langen Schlüssel verschlüsselte Nachricht mit realistischem, aber nicht zu kleinem Aufwand entziffert werden kann, etwa im Bereich . Alice verschlüsselt nun jeden Tabelleneintrag mit dem entsprechenden Schlüssel . Die so erzeugten Chiffrate mit sendet sie in zufälliger Reihenfolge an Bob.

Bob wählt nun zufällig einen der verschlüsselten Tabelleneinträge aus und entziffert ihn, indem er alle möglichen Schlüssel der Länge durchprobiert, bis er den richtigen gefunden hat. Dafür braucht er höchstens Versuche, im Mittel . Er merkt sich den Schlüssel und sendet den Index zurück an Alice. Damit haben die beiden den gemeinsamen Schlüssel vereinbart, mit dem sie nun z. B. mit einer symmetrischen Verschlüsselung Nachrichten austauschen können. Das kann das gleiche Verfahren wie oben sein, oder auch ein anderes.

In der Praxis müssen die Chiffrate noch zusätzliche Information enthalten, damit Bob das richtige Dechiffrat erkennen kann:

Alice könnte beispielsweise einen Text ausreichender Länge wählen, der an alle Tabelleneinträge angefügt und zusammen mit diesen verschlüsselt wird. wird außerdem im Klartext zusammen mit den Chiffraten an Bob gesendet. Bob kann dann den richtigen Schlüssel daran erkennen, dass im Dechiffrat richtig herauskommt. Das Dechiffrat könnte zwar rein zufällig plausibel sein, aber durch eine genügende Länge von macht man diesen Fall unwahrscheinlich. In diesem Fall ist auch darauf zu achten, dass ein modernes Verschlüsselungsverfahren wie etwa AES ist, welches gegen einen Angriff mit bekanntem Klartext sicher ist. Damit wird sichergestellt, dass ein Angreifer nicht mithilfe von die notwendige Anzahl von übersendeten Geheimnissen in vertretbarer Zeit entziffern kann.

Eine andere Möglichkeit ist, das Feld für den Index so groß zu machen, dass es für Zahlen bis deutlich über ausreicht. Dann wird mit hoher Wahrscheinlichkeit bei jedem falschen Schlüssel ein Index größer als herauskommen.

Sicherheit des Protokolls

Ein Angreifer, der die Kommunikation der beiden belauscht, sieht zuerst die Chiffrate, die Alice an Bob schickt, dann den Index, 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 nicht unmittelbar ableiten. Es bleibt ihm also nichts anderes übrig, als so lange Chiffrate zu entziffern, bis er dasjenige findet, das den Index und den zugeordneten Schlüssel enthält. Dafür muss er im Mittel Chiffrate entziffern. Bei jeweils Versuchen, den richtigen Schlüssel zu finden, braucht er insgesamt im Mittel Versuche. Wenn gewählt wurde, ist seine Laufzeit also quadratisch in der von Alice und Bob.

Angenommen, Bob kann pro Sekunde Schlüssel durchprobieren. Dann braucht er bei maximal eine, im Mittel 1/2 Sekunde, um ein Chiffrat zu entziffern. Ein Angreifer mit derselben Rechenleistung bräuchte bei jedoch im Durchschnitt drei Monate. Allerdings kann ein Angreifer den Schlüssel mit Glück auch deutlich früher erraten.

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.

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. Und was „rechtzeitig“ ist, kommt wieder darauf an, wie lange die Geheimhaltung bestehen soll. Für Geheimnisse, die auch nach Jahren noch brisant sind, sollte man es sowieso nicht einsetzen, denn ein Angreifer kann die übermittelten Nachrichten speichern und dann in Ruhe daran arbeiten, den Schlüssel zu finden. In der Praxis kommt daher etwa Diffie-Hellman zum Einsatz, welches auf dem diskreten Logarithmus basiert, was eine höhere Komplexität bietet.

Zuletzt ist festzuhalten, dass das Protokoll, wie alle anderen auch, nicht funktioniert, wenn der Angreifer ein 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 digital signieren.

Einzelnachweise

  1. Ralph Merkle: Secure Communications over Insecure Channels. In: Communications of the ACM. Band 21, Nr. 4, April 1978, S. 294–299, doi:10.1145/359460.359473.
  2. Public Key Cryptography: Merkle’s Puzzles. In: Manchester SIAM-IMA Student Chapter Blog. 29. Januar 2016, abgerufen am 30. Mai 2025 (englisch).