One Time Pad
  One-Time-Pad
 
Vorausgesetzt wird: Zufall erzeugen, Daten aufbewahren
Sinnvoll ist Kenntnis in: One-Time-Codes

Sicherheitsregeln im Überblick:
  • Der Zufall der OTP-Schlüssel muss gleichverteilt sein, und durch einen transparenten mechanischen Prozess entstehen. Weder Computer noch das "Ausdenken" von vermeintlichen Zufall sind geeignet.
  • Die Schlüssel müssen geheim gehalten werden; sie sind niemals Dritten zu zeigen, auf elektronische Kameras zu richten (besonderes Risiko im Alltag besteht beim Smartphone oder Videoüberwachung) oder auf intransparente Speichermedien (praktisch alles außer wasserlösliches Papier, insb. nicht auf Computern) zu kopieren.
  • Jeder Schlüssel ist zur einmaligen Verwendung bestimmt. Wird ein Schlüssel zweimal verwendet, ist das unbefugte Entschlüsseln der Nachricht sehr einfach. Daraus folgt die Notwendigkeit, festzulegen, ob ein Schlüssel zum Senden oder Empfangen ist, da sonst beide ihn zum Senden verwenden könnten, und damit keine einmalige Verwendung mehr vorliegt.
One-Time-Pads sind Schlüssel, die zur Verschlüsselung einer beliebigen Nachricht verwendet werden. Praktisch handelt es sich um eine Reihe von zufälligen Fünfergruppen. Die Nachricht, die gesendet werden soll, muss vor dem Verschlüsseln kodiert werden. Kodierung selbst bezeichnet keinen Mechanismus der Geheimhaltung sondern die Umwandlung des Text in Zahlen, um mit der Nachricht Berechnungen (eben die Verschlüsselung) durchführen zu können. Der Ablauf der Kodierung selbst ist festgelegt und nicht geheim.

Schlüssel erzeugen
Auf wasserlösliches Papier werden zufällig gewürfelte Blöcke von je fünf Dezimalziffern geschrieben. Für äußerst kurze Nachrichten sollten das zumindest zehn Blöcke sein. Ich verwende (auch im Zusammenhang mit meinen Vordrucken) meist ein Vielfaches von 12, also neben der Zahl selbst 24, 36, 48, 72, 96 und 144. Mehr als 48 ist jedoch nur im Ausnahmefall und bei (für OTP-Verhältnisse) sehr langen Nachrichten angemessen. Für den Anfang empfehle ich 12 oder 24 Blöcke. Der Faktor von Schriftzeichen zu Blöcken ist ca. 0.24: 60 Schriftzeichen erfordern 60 * 0.24 ≈ 14 Blöcke. Dies sind jedoch keine präzisen Angaben, die näheren Hintergründe dazu unter Kodierung.

Ein Schlüssel von 12 Blöcken kann wie folgt aussehen:

07395 97038 30817 41065 63294 46341 99794 60120 85226 02328 60101 31694

Dieser wird in der gesamten Anleitung als Beispiel verwendet.

Invers erzeugen
Das Invers ist eine Kopie des Schlüssels für den Empfänger. Es lässt sich direkt aus dem Schlüssel ableiten, jedoch werden die Ziffern nach einer festen Regel ersetzt, um das Entschlüsseln später zu erleichtern:
 
0 → 0
1 → 9
2 → 8
3 → 7
4 → 6
5 → 5
6 → 4
7 → 3
8 → 2
9 → 1

Null und Fünf bleiben somit unverändert, bei den anderen Ziffern wird jene Ziffer aufgeschrieben, dass es zusammen zehn ergibt:

03715 13072 70293 69045 47816 64769 11316 40980 25884 08782 40909 79416

Kodierung
Bei der Kodierung wird die Nachricht in eine Ziffernfolge umgewandelt, damit diese mit dem erzeugten Schlüssel verknüpft, verschlüsselt, werden kann.

Kodierungstabelle als PNG

Hierzu wird der Text gemäß der oben dargestellten Tabelle umgewandelt. Soll beispielsweise

Fand kein Hotel; musste nach Hannover

kodiert werden, wird von links nach rechts versucht, möglichst viele Zeichen auf einmal zu kodieren (damit etwa CH als 57 kodiert wird, und nicht C und H einzeln als 963 65).

61 50 72 66 1 3 2 65 75 83 1 68 97 69 86 4 4 83 1 2 50 57 65 50 2 2 75 89  99
F  A  ND K  E I N H  O  T  E L  ;  M  U  S S T  E N A  CH H  A  N N O  VER /ENDE


Nehme dir am besten die Zeit, diesen Kodierungsvorgang selbst nachzuvollziehen. Schau dabei auf die einzelnen Zeichen(blöcke), auf die darüber stehenden Ziffern und die Bedeutung gemäß Kodierungstabelle. Die Leerzeichen bei den Ziffern dienen nur der Lesbarkeit - tatsächlich wird die kodierte Nachricht wie der Schlüssel in Fünferblöcken geschrieben.

Hinweis: Das Leerzeichen wird normalerweise ausgelassen. Ist es für das Verständnis unerlässlich, kann 950 (explizit leer) als Code verwendet werden.

Verschlüsselung
Die kodierte Nachricht wird unter den Schlüssel geschrieben, ebenfalls in Fünferblöcken. Beide Zeilen zusammen sehen dann so aus:

07395 97038 30817 41065 63294 46341 99794 60120 85226 02328 60101 31694
61507 26613 26575 83168 97698 64483 12505 76550 22758 999

Die beiden jeweils untereinander stehenden Ziffern müssen nun addiert werden, um die verschlüsselte Nachricht zu erhalten. Dabei handelt es sich nicht um gewöhnliche Addition, sondern Addition modulo 10. Das bedeutet vereinfacht gesagt, nur die rechte Ziffer nach der Addition zu beachten. Eine andere Analogie ist Die Addition um einen Kreis herum, der dem Ziffernblatt einer Zeigeruhr gleicht, jedoch von 0 bis 9 geht.


Somit wäre 8 + 3 = 1, da das Zahlensystem hier auf die einstelligen Zahlen (einschließlich 0) beschränkt ist, und es danach wieder von vorne anfängt. Ähnlich ist 20 Minuten nach einem Ereignis in der 55. Minute einer Stunde nicht die 75. Minute, sondern die 15. Minute der Folgestunde (wobei es das Konzept der Stunde bzw. eines übergeordeten Wertes hier nicht gibt).

07395 97038 30817 41065 63294 46341 99794 60120 85226 02328 60101 31694
61507 26613 26575 83168 97698 64483 12505 76550 22758 999              
68892 13641 56382 24123 50882 00724 01299 36670 07974 91228 60101 31694

Nun wurde jede Ziffer des Schlüssels mit der darunter stehenden Ziffer der kodierten Nachricht modulo 10 addiert. Dabei werden die Ziffern stets einzeln betrachtet! Insbesondere wird nicht versucht, eine schriftliche Addition von zwei vermeintlichen fünfstelligen Zahlen durchzuführen, da dies zu einem völlig anderen Ergebnis führen würde. Die Gruppierung erfolgt nur zu Lesbarkeitszwecken, und jedes untereinanderstehende Paar aus Schlüssel- und Nachrichtenziffer steht für sich.

Die unten stehende Folge von Ziffernblöcken ist die verschlüsselte Nachricht. Diese kann nun über eine beliebige, unsichere Verbindung übertragen werden.

Padding
In den meisten Fällen ist die kodierte Nachricht kürzer als der verwendete Schlüssel (Wäre sie länger, wäre der Versand unmöglich bzw. die Nachricht müsste abgekürzt werden). Dennoch hat die verschlüsselte Nachricht die Länge des Schlüssels und dieser wurde dort, wo die kodierte Nachricht aufhörte, unmittelbar übernommen. Dadurch ist sichergestellt, dass ein Angreifer nicht feststellen kann, wie lang die Nachricht ist. Auch so etwas kann nämlich verräterisch sein; gerade dann, wenn nur eine begrenzte Auswahl an Texten (z.B. die Nennung von Ortsnamen) in Frage kommen. Auch die Worte Ja und Nein haben eine unterschiedliche Anzahl an Ziffern in kodierter Form (5 und 4).

Eine Nachricht immer gleich lang zu halten, um die tatsächliche Länge nicht zu offenbaren (sondern nur die maximal mögliche Länge), wird Padding genannt.

Entschlüsselung
Die Entschlüsselung wird mit dem Invers des Schlüssels (wie es im Besitz des Empfängers ist) und der verschlüsselten Nachricht vorgenommen. Wie beim Verschlüsseln erfolgt die Addition modulo 10.

68892 13641 56382 24123 50882 00724 01299 36670 07974 91228 60101 31694
03715 13072 70293 69045 47816 64769 11316 40980 25884 08782 40909 79416
61507 26613 26575 83168 97698 64483 12505 76550 22758 99900 00000 00000


Nun muss die entschlüsselte Nachricht dekodiert werden, um im Klartext lesbar zu werden. Hinweis: Die Nullen am Ende der entschlüsselten Nachricht kommen vom Padding, und entstanden dadurch, das nach dem Ende der kodierten Nachricht der Schlüssel unmittelbar gesendet wurde. Sie tragen keine nähere Bedeutung, da das Ende der Nachricht schon durch den Code 99 angezeigt wurde.

Dekodierung
Die entschlüsselte Nachricht wird dekodiert, indem die Ziffern von links nach rechts als Zeichen gemäß der Kodierungstabelle interpretiert werden. Die Dekodierung ist dabei immer eindeutig. So hat die 6 alleine keine Bedeutung, da sonst bei 61 nicht klar wäre, ob 61 zusammen oder 6 und 1 getrennt gemeint ist. Auf dem Papier kann es helfen, dekodierte Ziffern durchzustreichen (oder zu unterstreichen, damit sie weiter lesbar, aber markiert sind), um sich besser zurecht zu finden.
 
   
 
Diese Webseite wurde kostenlos mit Webme erstellt. Willst du auch eine eigene Webseite?
Gratis anmelden