Tcl/Tk

One-Time-Pad (Verschlüsselung)

Programm: osOTP
Version: 2021-09-25 (kompatibel zu allen früheren Versionen)
Autor: Oliver Scholl
Lizenz: GPL Version 2
Sprachen: Deutsch, Englisch
Betriebssystem: Windows, Linux

Hier finden Sie die Installationsanleitung und auch einen Hinweis, wenn das Programm unter Windows eine unscharfe Schrift hat.

Kurzbeschreibung:

Das One-Time-Pad ist ein symmetrisches Verschlüsselungsverfahren, das nachweislich (auch mit beliebig hohem Rechenaufwand) nicht gebrochen werden kann. Voraussetzungen für die Sicherheit des One-Time-Pad-Verfahrens sind:

Der Schlüssel muss mindestens so lang sein wie die Nachricht.
Der Schlüssel muss zufällig sein.
Der Schlüssel darf nicht wiederverwendet werden, auch nicht teilweise.
Der Schlüssel ist nur dem Sender und Empfänger bekannt.

Bitte beachten Sie die Zulässigkeit kryptographischer Verfahren in Ihrem Land. In Deutschland sind kryptographische Verfahren ohne Einschränkungen zulässig.

Weitere Informationen findet man z. B. bei Wikipedia (https://de.wikipedia.org/wiki/One-Time-Pad).

Anleitung und Screenshots:

1. Überblick

Das Programm sieht wie folgt aus:

Eingabe: Markieren Sie die Option Datei, wenn Sie eine Datei ver- oder entschlüsseln wollen. Wenn Sie einen Text direkt verschlüsseln wollen, wählen Sie Text aus. Den Text geben Sie dann im unten stehenden Textfeld ein. Bei dem Text kann es sich um unverschlüsselten Text handeln, den Sie verschlüsseln möchten, oder um einen verschlüsselten Text, den Sie entschlüsseln wollen.

Ausgabe: Damit legen Sie fest, ob die Ausgabe in eine Datei oder in das Textfeld erfolgen soll.

Datei: Wählen Sie die Datei aus, die Sie ver- oder entschlüsseln wollen.

Schlüssel: Wählen Sie die Schlüsseldatei aus, die Sie zum Ver- oder Entschlüsseln verwenden wollen. Wenn Sie (noch) keine Schlüssel-Datei haben, können Sie mit dem Button Erzeugen eine Schlüsseldatei erstellen. Bitte lesen Sie auch das Kapitel "6. Schlüsseldatei".

Starte bei Byte: Hiermit geben Sie an, an welcher Position in der Schlüsseldatei der Schlüssel beginnt. Bitte lesen Sie auch das Kapitel "6. Schlüsseldatei".

Histogramm: Sie können wählen, ob beim Verschlüsseln ein Histogramm mit der Häufigkeitsverteilung der Schlüsselwerte angezeigt werden soll. Bitte lesen Sie auch das Kapitel "5. Histogramm".

Start: Startet die Ver- oder Entschlüsselung.

Fortschritt: Zeigt den Fortschritt der Ver- oder Entschlüsselung an. Hinweis für Windows-Anwender: Windows aktualisiert nicht den Fortschrittsbalken.

Meldung: Zeigt die Meldungen des Programms an.

Text: In das Textfeld können Sie Ihren unverschlüsselten oder verschlüsselten Text eingeben bzw. hinein kopieren. Wenn Sie den gesamten Text markieren wollen, positionieren Sie den Cursor vor das erste Zeichen und drücken dann die Tastenkombination Umschaltung+Strg+Ende (Windows-Anwender können auch Strg+a drücken). Mit Strg+c kopieren Sie den Text in die Zwischenablage mit Strg+v fügen Sie den Text aus der Zwischenablage ein.

Suchbegriff: Sie können in dem Textfeld nach einem Suchbegriff suchen. Dabei wird die Groß-/Kleinschreibung beachtet.

Das Programm legt im Programmordner die Konfigurationsdatei Konf.txt an.

1. Eine Datei verschlüsseln

Markieren Sie sowohl bei der Eingabe als auch bei der Ausgabe die Option Datei.

Wählen Sie die zu verschlüsselnde Datei aus. Wenn Sie ganze Ordner verschlüsseln wollen, zippen Sie bitte zuerst den Ordnerinhalt in eine Datei.

Wählen Sie durch einen Klick auf den Button mit den drei Punkten eine Schlüsseldatei mit Zufallszahlen aus (siehe Kapitel "6.3 Eigene Schlüsseldatei").

Falls Sie keine Schlüsseldatei verwenden möchten, erstellen Sie durch einen Klick auf den Button Erzeugen einen zufälligen Schlüssel. Beachten Sie, dass es sich nur um Pseudo-Zufallszahlen handelt.

Dann klicken Sie auf den Button Start. Bitte beachten Sie die Meldung.

Die verschlüsselte Datei (Dateiendung .otp) wurde in dem Ordner gespeichert, in dem die zu verschlüsselnde Datei ist. Sie sehen außerdem, welcher Teil des Schlüssels für die Verschlüsselung verbraucht wurde. Für eine maximale Sicherheit sollten Sie einen Schlüssel nur einmal verwenden. In diesem Beispiel bedeutet das, dass Sie für die nächste Verschlüsselung den Startwert auf 32137 (oder größer) setzen sollten.

Nach dem Verschlüsseln sollten Sie in einem anderen Ordner die verschlüsselte Datei probeweise entschlüsseln. Wenn die Entschlüsselung korrekt ist, können Sie die ursprüngliche Datei und die testhalber entschlüsselte Datei löschen (informieren Sie sich, wie Sie bei Ihrem Betriebssystem, Datenträger und Dateisystem eine Datei wirklich löschen können; ein einfaches Löschen ist unzureichend).

Heben Sie die Schlüsseldatei getrennt von der verschlüsselten Datei auf (z. B. auf einer SD-Karte oder einem USB-Stick).

2. Eine Datei entschlüsseln

2.1. Eine Datei in eine Datei entschlüsseln

Markieren Sie sowohl bei der Eingabe als auch bei der Ausgabe die Option Datei.

Wählen Sie die zu entschlüsselnde Datei aus.

Wählen Sie die Schlüsseldatei aus.

Geben Sie den Startwert ein.

Dann klicken Sie auf den Button Start. Bitte beachten Sie die Meldung.

Die entschlüsselte Datei wurde in dem Ordner gespeichert, in dem die verschlüsselte Datei ist. Sie bekommen außerdem den verbrauchten Schlüssel angezeigt.

2.2. Eine Datei in das Textfeld entschlüsseln

Wenn die verschlüsselte Datei eine Textdatei ist, können Sie die Datei auch in das Textfeld entschlüsseln. Das hat den Vorteil, dass keine entschlüsselte Datei auf Ihrem Computer gespeichert wird.

Markieren Sie bei der Eingabe die Option Datei und bei der Ausgabe die Option Text.

Wählen Sie die zu entschlüsselnde Datei aus.

Wählen Sie die Schlüsseldatei aus.

Geben Sie den Startwert ein.

Dann klicken Sie auf den Button Start. Bitte beachten Sie die Meldung.

Die Datei wurde in das Textfeld entschlüsselt. Sie können in dem Textfeld nach einem Suchbegriff suchen. Dabei wird die Groß-/Kleinschreibung beachtet.

3. Texteingabe verschlüsseln

Anstatt einer Datei können Sie auch einen Text in das Textfeld eingeben und verschlüsseln. Das ermöglicht Ihnen, Ihren E-Mail-Text zu verschlüsseln und in verschlüsselter Form zu versenden.

3.1. Texteingabe in das Textfeld verschlüsseln

Markieren Sie sowohl bei der Eingabe als auch bei der Ausgabe die Option Text.

Wählen Sie die Schlüsseldatei aus.

Geben Sie den Startwert ein.

Schreiben Sie Ihren Text in das Textfeld.

Dann klicken Sie auf den Button Start. Bitte beachten Sie die Meldung.

Der Text wurde in das Textfeld verschlüsselt. Kopieren Sie anschließend den gesamten Inhalt des Textfelds (inklusive der ersten Zeile) in Ihre E-Mail.

4. Verschlüsselten Text entschlüsseln

Wenn Sie einen verschlüsselten Text z. B. per E-Mail erhalten (siehe Kapitel 3), können Sie den Text ganz einfach entschlüsseln.

Markieren Sie sowohl bei der Eingabe als auch bei der Ausgabe die Option Text.

Wählen Sie die Schlüsseldatei aus.

Den Startwert brauchen Sie nicht eingeben, da die erste Zeile des verschlüsselten Texts den Startwert benennt.

Kopieren Sie den verschlüsselten Text in das Textfeld.

Dann klicken Sie auf den Button Start. Bitte beachten Sie die Meldung.

Der Text wurde in das Textfeld entschlüsselt. Außerdem sehen Sie den verbrauchten Schlüssel. Wenn Sie dem Absender eine verschlüsselte Antwort zusenden wollen, geben Sie beim Verschlüsseln Ihres Antworttexts als Startwert einen größeren Wert als den gezeigten Stoppwert ein (z. B. 12427).

5. Histogramm

Beim Verschlüsseln erscheint ein Histogramm. Ein Histogramm ist eine Häufigkeitsverteilung. Die Grafik zeigt, wie oft der Schlüssel die Zahlenwerte 0 bis 255 enthält. Ein guter Schlüssel sollte alle Zahlenwerte in ausreichender Häufigkeit enthalten. Das Histogramm gibt Ihnen einen ersten Anhaltspunkt, ob der Schlüssel aus Zufallszahlen besteht. Das Histogramm prüft aber nicht, ob die Zahlenfolge des Schlüssels eine bestimmte Gesetzmäßigkeit hat und somit nicht mehr zufällig ist.

Ein schlechter Schlüssel sieht z. B. wie folgt aus:

Bei einem guten Schlüssel sind die Zahlenwerte 0 bis 255 eher gleich verteilt:

6. Schlüsseldatei

6.1. Praktische Tipps

Die Schlüssedatei sollten Sie nicht auf Ihrem Computer, sondern auf einem externen Medium (z. B. USB-Stick, sd-Karte) speichern. Außerdem sollten Sie eine Kopie der Schlüsseldatei aufbewahren, falls die Datei oder das externe Medium beschädigt wird.

Wenn Sie eine verschlüsselte Datei an eine andere Person weitergeben möchten oder einen verschlüsselten Text versenden, müssen Sie vorher dem Empfänger den Schlüssel zukommen lassen. Bei einer verschlüsselten E-Mail-Kommunikation ist es empfehlenswert, dem Korrespondenzpartner eine große Schlüsseldatei zu geben, so dass man immer dieselbe Schlüsseldatei verwenden kann und nur den Startwert für die Verschlüsselung stetig erhöht.

6.2. Stärke des Schlüssels

Die Stärke der Verschlüsselung hängt von dem ausgewählten Schlüssel ab. Je zufälliger der Inhalt der Schlüsseldatei ist, desto sicherer ist die Verschlüsselung. Das Programm bietet Ihnen die Möglichkeit, eine Schlüsseldatei aus Zufallszahlen zu erstellen. Ein solcher Schlüssel ist nur so gut, wie der Computer zufällige Zahlen generieren kann. Für den normalen Gebrauch sollte ein solcher Schlüssel ausreichend sicher sein.

6.3. Eigene Schlüsseldatei

Sie können auch eine eigene Datei als Schlüssel verwenden. Der Schlüssel muss mindestens genauso lang sein, wie die zu verschlüsselnde Datei. Im Internet werden Verfahren beschrieben, echte Zufallszahlen zu erzeugen. Diese sind allerdings sehr aufwendig. Alternativ können Sie z. B. auch eine selbst erstellte Bilddatei im jpg-Format oder eine selbst erstellte Videodatei (z. B. mp4-Format) als Schlüssel benutzen. Dabei müssen Sie aber darauf achten, dass solche Dateien normalerweise einen Header haben, der sich zwischen Dateien gleichen Typs kaum unterscheidet. Hierzu ein Beispiel (die Screenshots stammen noch von einer älteren Programmversion):

Der folgende Text soll mit einer jpg-Datei verschlüsselt werden:

Die verschlüsselte Datei sieht wie folgt aus:

Jetzt wird die verschlüsselte Datei mit einer anderen jpg-Datei entschlüsselt:

Das Ergebnis ist der fast vollständig korrekte ursprüngliche Text.

Wenn Sie solche Dateien als Schlüssel verwenden, achten Sie unbedingt darauf, den Header-Bereich zu überspringen und den Schlüssel erst Mitten in der Datei beginnen zu lassen. Dazu können Sie im Programm einen Startwert (in Bytes) eingeben. Nachfolgend die gleiche Verschlüsselung, aber jetzt mit einem Startwert:

Wenn man dann die verschlüsselte Datei mit einer anderen jpg-Datei entschlüsselt, ...

... scheitert die Entschlüsselung:

7. Beschreibung und Dokumentation des Verschlüsselungsverfahren

Die zu verschlüsselnde Datei und der Schlüssel werden Byte für Byte xor-verknüpft. Das xor-Gatter sieht wie folgt aus:

0 und 0 -> 0
0 und 1 -> 1
1 und 0 -> 1
1 und 1 -> 0

Wenn man beispielsweise den Buchstaben A (binär: 01000001) mit dem Schlüssel 11001001 xor-verknüpft, erhält man den Code 10001000:

01000001
11001001
--------
10001000

Zum Entschlüsseln wird der Code 10001000 erneut mit dem Schlüssel 11001001 xor-verknüpft und man erhält wieder den ursprünglichen Buchstaben A:

10001000
11001001
--------
01000001

Nachfolgend sehen Sie ein Beispiel, wie das Programm einen Text verschlüsselt:

Der zu verschlüsselnde Text besteht aus dem Wort Geheim. Der Schlüssel ist die Zeichenfolge Bk5dF4

Die erste Spalte ist der zu verschlüsselnde Buchstabe. Die zweite Spalte ist die binäre Darstellung des Buchstabens. Die Spalten drei und vier zeigen den Schlüssel und die fünfte Spalte zeigt den verschlüsselten Code.

8. Programm in der Shell benutzen (ohne Gui)

Das Programm kann auch ohne GUI benutzt werden. Starten Sie das Programm in einer Shell (Konsole) wie folgt:

./osOTP.tcl Eingabedatei Schluesseldatei Startwert bzw.

tclsh osOTP.tcl Eingabedatei Schluesseldatei Startwert