Vernam

Verwendet XOR zur Implementierung eines One-Time-Pad (OTP)


In der Kryptografie ist die Vernam-Chiffre (auch bekannt als One-Time-Pad (OTP)) eine Verschlüsselungstechnik, die nicht geknackt werden kann, sondern die Verwendung eines einmaligen gemeinsamen Schlüssels erfordert, der genauso groß oder länger ist als die zu übermittelnde Nachricht.

Funktionsweise

Angenommen, Alice möchte die Nachricht "HALLO" an Bob senden. Nehmen wir an, dass zwei Papierblöcke mit identischen zufälligen Buchstabenfolgen vorher irgendwie hergestellt und sicher an beide ausgegeben wurden. Alice wählt die entsprechende unbenutzte Seite des Blocks aus.

Das Material auf dem ausgewählten Blatt ist der Schlüssel für diese Nachricht. Jeder Buchstabe des Blocks wird auf eine bestimmte Weise mit einem Buchstaben der Nachricht kombiniert. (Es ist üblich, aber nicht erforderlich, jedem Buchstaben einen numerischen Wert zuzuordnen, z. B. "A" ist 0, "B" ist 1 usw.)

Verschlüsseln

In diesem Beispiel besteht die Technik darin, den Schlüssel und die Nachricht durch modulare Addition zu kombinieren. Die Zahlenwerte der entsprechenden Buchstaben der Nachricht und des Schlüssels werden addiert, und zwar modulo 26. Wenn also das Schlüsselmaterial mit "XMCKL" beginnt und die Nachricht "HELLO" lautet, dann würde die Codierung wie folgt vorgenommen werden:

      H       E       L       L       O  Nachricht
   7 (H)   4 (E)  11 (L)  11 (L)  14 (O) Nachricht
+ 23 (X)  12 (M)   2 (C)  10 (K)  11 (L) Schlüssel
= 30      16      13      21      25     Nachricht + Schlüssel
=  4 (E)  16 (Q)  13 (N)  21 (V)  25 (Z) (Nachricht + Schlüssel) mod 26
      E       Q       N       V       Z  → Ciphertext

If a number is larger than 26, then the remainder after subtraction of 26 is taken in modular arithmetic fashion. This simply means that if the computations "go past" Z, the sequence starts again at A.

Entschlüsseln

       E       Q       N       V       Z  Ciphertext
    4 (E)  16 (Q)  13 (N)  21 (V)  25 (Z) Ciphertext
-  23 (X)  12 (M)   2 (C)  10 (K)  11 (L) Schlüssel
= -19       4      11      11      14     Ciphertext – Schlüssel
=   7 (H)   4 (E)  11 (L)  11 (L)  14 (O) Ciphertext – Schlüssel (mod 26)
       H       E       L       L       O  → Nachricht

Ähnlich wie oben, wird bei einer negativen Zahl 26 addiert, um die Zahl gleich Null oder höher zu machen.

Schwachstellen

Fast keine, wenn der Schlüssel wirklich zufällig ist.


Quelle: CrypTools Cipher Repository