4.5.3 Merkle-Hellman Kryptosystem

1976 stellten W. Diffie und Hellman ein neues Konzept der Kryptographie vor: Public-Key Kryptographie. Kurz darauf, 1978, veröffentlichten Merkle und Hellman in [MH78] ein Kryptosystem, das auf dem Subset-Sum Problem basiert.

Wie schon im Kapitel Subset-Sum Problem erklärt, gibt es Knapsacks, so dass ein Problem (A, s) einfach zu Lösen ist. Superansteigende Knapsacks gehören in diese Kategorie. Andererseits kann es äußerst schwierig sein, für einen Knapsack A eine Lösung zu finden, wenn A nicht superansteigend ist.
Diese Tatsache benutzten Merkle und Hellman, um darauf ein Kryptosystem aufzubauen. Ausgangspunkt ist ein superansteigender Knapsack A. Dieser ist Teil des privaten Schlüssels. Ein zweiter Knapsack, B, wird dann aus A konstruiert und als öffentlicher Schlüssel bereitgestellt. B besitzt die superansteigende Eigenschaft nicht. Eine Nachricht p wird chiffriert, indem die Summe c = pB = p1b1 + p2b2 +... + pnbn berechnet wird. Dabei ist pi ist das i-te Bit der Klartextnachricht p.

Jemand, der eine chiffrierte Nachricht c abfängt, ist mit dem schweren Problem (B, c) konfrontiert; er muss also herausfinden, welche Elemente bi von B sich zu c aufsummieren. Der Besitzer des privaten Schlüssels jedoch kann aus c leicht die Nachricht p bestimmen, da er die zu B passende superansteigende Menge A kennt.

Im Folgenden wird das Merkle-Hellman Kryptosystem näher beschrieben.

  1. Schlüsselerzeugung
  2. Verschlüsselung
  3. Entschlüsselung
    1. Die Entschlüsselung eines Chiffretextes c erfolgt in zwei Schritten:
    2. Berechne c' = Uc mod M = W-1c mod M
    3. Lösen des Problems (A, c').
      Da A eine superansteigende Menge ist, lässt sich das Problem (A, c') einfach lösen. Sei X = (x1, ..., xn) der erhaltene Lösungsvektor für (A, c'). Bei Verwendung einer Permutation ergeben sich die Nachrichtenbits pi aus pi = xpi(i). Ansonsten gilt pi = xi

Damit ein Kryptosystem korrekt funktioniert, muss d(e(p)) = p sein. Dabei ist p die Klartextnachricht, e die Verschlüsselungsfunktion und d die Entschlüsselungsfunktion.
Tatsächlich gilt

c' = Uc mod M = W-1c mod M = W-1(pB) mod M = W-1W(pA) mod M = pA mod M

Da sowohl c' < M als auch SUM (ai) < M, folgt c' = pA = p1a1 + ... + pnan. Die Klartextbits pi ergeben sich durch Lösen von (A, c') und anschließendem Rückgängigmachen der Permutation pi.

Applet starten

Anmerkungen zum Merkle-Hellman Kryptosystem

  1. Merkle und Hellman gaben zur Schlüsselerzeugung folgende Werte als untere Grenze für n, M und A an:
  2. A. Shamir hat 1983 in [SH83] einen Algorithmus vorgestellt, der das Basis-Merkle-Hellman Kryptosystem erfolgreich kompromittierte. Aus dem öffentlichen Schlüssel B ermittelte Shamir ein Trapdoor-Paar (U', M'). Mit B, M' und U' kann eine superansteigende Menge A' konstruiert werden. Diese wiederum kann anstatt des ursprünglichen Knapsack-Vektors A benutzt werden, um alle Nachrichten zu entschlüsseln, die mit B verschlüsselt wurden.
  3. Ein weiterer Angriff auf das Merkle-Hellman System erfolgt mit Hilfe der Gitter-Basis-Reduktion. Hier kann aus dem öffentlichen Schlüssel B und einer gegebenen verschlüsselten Nachricht c die Klartextnachricht p bestimmt werden.

 
Knapsack mit geringer Dichte