Vorsicht: Die Arbeit an dieser Anleitung ist momentan noch nicht abgeschlossen. Ich warne davor, diese jetzt schon zu befolgen und rufe generell dazu auf, alles in ihr kritisch zu hinterfragen. Es ist trotz großer Sorgfalt möglich, dass mir ein Fehler oder eine unklare Formulierung unterlaufen ist.

30.10.2019: Momentan arbeite ich daran, die gesamte Anleitung zu erneuern, denn ich möchte es auf Basis von Dezimalziffern statt Symbolen implementieren. Dies hat einige Vorteile, darunter die leichtere Ver- und Entschlüsselung (die Addition und Subtraktion ist relativ universell verbreitet und muss nicht erlernt werden) und die variable Kodierung, die es ermöglicht, häufige Buchstaben (wie E oder S) mit weniger Ziffern als seltene (wie Q oder Y) zu kodieren.

Anleitung zur sicheren Kommunikation

Diese Seite hier hat in Grunde genommen nichts mit dem Technetoismus zu tun. Ich habe mich dennoch dazu entschlossen, es hier zu veröffentlichen, um es vergleichsweise leicht zugänglich zu machen. Es geht hier darum, wie sicher kommuniziert werden kann. Spätestens die NSA-Affäre sollte verdeutlicht haben, dass dies von großer Wichtigkeit für jeden ist. Häufig laufen Lösungen darauf hinaus, dass Software zur Telekommunikation empfohlen wird, die es ermöglicht, den Nachrichtenverkehr kryptografisch zu schützen. Darunter fallen beispielsweise Systeme wie GPG oder OTR für die Verschlüsselung von E-Mail bzw. IRC-Chat oder auch Apps wie Signal, die den Vorteil haben, besonders leicht bedienbar zu sein. All diese Methoden haben eine problematische Gemeinsamkeit: Sie erfordern die Nutzung eines Computers. Damit, dass ich dies als Mangel beurteile, will ich auf keinen Fall behaupten, dass es fundamental falsch sei, einen Computer zur Telekommunikation zu verwenden (schließlich tue ich das gerade, um diese Website bereitzustellen), sondern, dass Computer zwei Eigenschaften haben, die sie für Kommunikation höherer Wichtigkeit normalerweise disqualifizieren oder zumindest in Frage stellen:

Ein weiteres Argument für die Nutzung des One-Time-Pads ist die perfekte Sicherheit. Selbst wenn es einen hypothetischen Computer gäbe, dem per Definition vertraut werden kann (das Vertrauen, dass er ausschließlich das tut, was der Benutzer will) besteht das Risiko, dass die verwendeten Protokolle oder Algorithmen gebrochen werden. Insbesondere im Bezug auf das Protokoll besteht dieses Risiko auch beim One-Time-Pad, ich halte es bei genügend Sorgsamkeit jedoch für beherrschbar. Es wäre beispielsweise möglich, dass eine Konversation mit solch einem (rein hypothetischen!) Computer in naher Zukunft durch quantenmechanische Computer gebrochen wird, da diese weitaus effektiver RSA brechen können, die Grundlage von (fast) der gesamten Kryptografie, nicht jedoch des One-Time-Pads. Auch die symmetrische Kryptografie könnte trotz größter Vorsicht (wie sie etwa der AES-Wettbewerb aufzeigt) jederzeit unerwartet erheblich geschwächt werden, indem zuvor nicht geahnte Schwachstellen entdeckt werden. Je länger keine signifikaten Probleme entdeckt werden, desto eher wird dem Algorithmus vertraut, doch dies schützt nicht vor dem Schaden, der entsteht, wenn das Entschlüsseln bereits abgelaufener Konversationen (die aufgezeichnet wurden) für unbefugte unerwartet möglich wird.

Grundlagen und Aufgaben

Beim One-Time–Pad handelt es sich um ein manuelles Verschlüsselungsverfahren. Seine Aufgabe ist es, eine vorliegende Nachricht mit einem Schlüssel so zu verändern, dass nur ein befugter Empfänger (der ebenfalls den Schlüssel hat) diese wieder lesen kann. Hierbei macht man sich zu nutze, dass Zufallszahlen erzeugt werden, die nur dem Absender und Empfänger (diese werden oft zur besseren Veranschaulichung Alice und Bob genannt, also tun wir das auch so!) bekannt sind. Ein einfaches Beispiel, das noch nicht das One-Time–Pad selbst ist: Alice und Bob sind zusammen, und haben eine faire Münze (die, wenn man die Münze wirft, mit einer Chance von exakt 50% Kopf bzw. Zahl ergibt). Bob wirft diese, das Ergebnis ist: Zahl. Alice merkt sich dies, und verrät es (wie auch Bob) niemandem weiter. Später telefonieren sie (nutzen also eine potentiell unsichere Verbindung, die abgehört werden könnte). Dann möchte Alice eine Frage an Bob stellen, doch für den Fall, dass jemand mithört, soll diese Person (wird oft Eve genannt) nicht die Antwort auf die Frage erfahren. Gehen wir von einer Ja/Nein-Frage aus. Da nur Alice und Bob das Ergebnis des Münzwurf kennen, könnte sie folgendes formulieren: "Beantworte die Frage wahrheitsgemäß, wenn du Kopf geworfen hast. Wenn du Zahl geworfen hattest, sage genau die jeweils andere Antwort." Will Bob also eigentlich mit Ja antworten, sagt er Nein, denn nicht Kopf sondern Zahl war gefallen, und er muss seine Antwort umkehren; das Gegenteil sagen. Alice weiß, dass Kopf geworfen wurde, schlussfolgert also aus der Antwort (in dem Fall Nein) das Gegenteil (also Ja). Wenn Eve aber dieses Gespräch mithört, kann sie nicht das tun, was Alice getan hat. Sie weiß nicht, ob Bob Kopf oder Zahl geworfen hat, und somit die Antwort selbst oder das genaue Gegenteil gemeint ist. Die Wahrscheinlichkeit, dass er die Wahrheit sagt, liegt bei 50%, und Eve kann genauso, ohne die Antwort überhaupt anzuhören, einfach raten, was ihr genauso viel (genauso wenig) bringt.

Das vorliegende Beispiel macht es, wie am Ende durch die Beschreibung der gleichen Wahrscheinlichkeit aller Möglichkeiten, unmöglich, dass Eve erfährt, ob Bob Alice Ja oder Nein geantwortet hat. In der Kryptologie ist es jedoch wenig zielführend, nur teilweise Schutz vorzunehmen. Ich möchte hier nun auflisten, was Eve alles erfährt, um dafür zu sensiblisieren, welche Vorkerungen u.U. alle getroffen werden müssen:

Diese Punkte gehen alle noch davon aus, dass nur Eve, und nicht Mallory, das Gespräch mithört. Mallory kann im Gegensatz zu Eve auch dafür sorgen, dass Nachrichten verändert, teilweise gezielt unterdrückt oder wiederholt werden. Da sich die menschliche Stimme nicht so leicht fälschen lässt (wegen der ständigen Fortschritte bei GANs und Deep-Learning mag dies schon sehr bald anders sein, vielleicht noch 2019!) ist dies beim Modell des Telefongespräches relativ unbedeutend, darf aber auf keinen Fall vernachlässigt werden:

Nochmals eine andere Art von Angriff ist, wenn nicht (nur) Mallory oder Eve "die Bösen" sind, sondern Alice und Bob sich untereinander nicht vertrauen bzw. sich gegenseitig betrügen wollen. Es könnte etwa sein, dass Bob die Frage Alice gegenüber beantworten will, aber ausschließen möchte, dass sie anderen beweisen kann, was Bob ihr geantwortet hat. Oder er will dafür sorgen, dass, sollte Alice die kryptologischen Systeme falsch benutzen, zwar für sie selbst dadurch Konsequenzen entstehen (denn dagegen kann man kaum etwas tun!) aber Bob, solange er selbst alles richtig macht, dadurch nicht direkt in Mitleidenschaft gezogen wird. Auch dies, die Abstreitbarkeit, wird noch ausführlich diskutiert werden.

Benötigte Materialien

Anmerkung: Habe durch Werbeanzeigen von wasserlöslichen Papiersorten gehört. Werde das testen, und halte es für plausibel, dass es geeignet ist. Es wird teilweise extra für vertrauliche Dokumente beworben. Wegen rechtlicher Ungewissheit erwähne ich hier weder Firma und Handelsnamen, ich habe ohnehin kein Produkt getestet, sodass ich es empfehlen könnte. Websuche nach Papier Wasserlöslich sollte ans Ziel führen.

Ein häufiger Arbeitsvorgang für die hier beschriebenen Verfahren ist das schriftliche Rechnen (Addition und Subtraktion) sowie ähnliche Operationen mit Symbolen statt Zahlen (wird noch erläutert). Hierzu wird am besten Papier beschrieben, doch schon da fängt ein Problem an: Wie können Notizen und Mitschriften, die während des Verschlüsselungsvorgangs benötigt werden, anschließend rückstandslos vernichtet werden? Zerreißen ist auf keinen Fall eine Lösung, selbst Papierstücke im Bereich von Quadratmillimetern können mit geeigneter Software durch das "Scannen" des Altpapiers rekonstruiert werden. Verbrennen oder die Vernichtung von Papier mit Bleiche ist zwar zielführend, aber geringfügige Fehler können dabei auch gleich die Netzhaut oder anderes Körpergewebe mit vernichten. Ich rate ausdrücklich davon ab! Außerdem funktioniert das schlecht spontan. Rauchen ist an immer weniger Orten erlaubt (man hätte das Verbrennen des Papiers ja mit etwas Geschick als Rauchen tarnen können) und Dokumente an öffentlichen Orten mit Bleiche zu verwenden ist eine denkbar schlechte Idee. Was meiner Erfahrung nach gut funktioniert ist, Druckerpapier (auch, oder vielleicht gerade billiges, da weniger wasserfest) mit (idealerweise wasserlöslicher) Tinte zu beschreiben. Zur Vernichtung des Ganzen dieses dann mit der gleichen Tinte erneut überschreiben, mit sinnlosen anderen Texten und Symbolen, in kleine Stücke reißen (dies ist nicht die Vernichtung selbst, nur ein Schritt zur Vorbereitung) und es in eine alte Pfandflasche geben. Diese wird dann mit möglichst warmen bis heißen Wasser gefüllt, zu etwa einem Fünftel (nicht zu viel!), verschlossen, und ein paar Minuten gut geschüttelt. Die Erschütterung des Wassers und dessen Temperatur zersetzt das Papier schnell in seine einzelnen Fasern. Auf keinen Fall sollte das Problem unterschätzt werden, einen bereits beschriebenen Dokumententräger zu haben, der sensible Informationen enthält, und sich nicht vernichten lässt. Mit jeder Papiersorte sollte erst ein Test unternommen werden: Mit unproblematischen Inhalten beschreiben und prüfen, ob der Vorgang der Vernichtung wirklich funktioniert.

Ferner wird zur Erzeugung des Schlüssels ein fairer Zufallsgenerator benötigt. Ich verwende hierzu Kasinowürfel, herkömmliche Würfel sind wegen der unterschiedlichen Masse der Seiten (durch die Löcher) ungeeignet. Auf keinen Fall dürfen "zufällige" Zahlen im Kopf erzeugt werden. Der Mensch ist so musteraffin dass er eklatant schlecht darin ist, zufällige Zahlen zu erzeugen. (45%, statt 10%, antworten auf die Frage einer zufälligen Zahl von 1 bis 10 mit 7)

Die Nachricht und ihre Kodierung

Im einfachen Einführungsbeispiel bestand die Nachricht alleine aus Ja oder Nein. Tatsächlich will man jedoch die Möglichkeit haben, beliebige Texte zu übermitteln, so, wie man es auch in konventionellen E-Mails oder im Chat tut. Um die Verschlüsselung durchzuführen, muss diese Nachricht dann mit einem zufällig erzeugten Schlüssel verknüpft werden (darauf wird noch eingegangen). Doch es ist nicht möglich, die Nachricht einfach direkt darzustellen, indem man bestimmte Zeichen verwendet. Dies würde dazu führen, dass es eine große Anzahl an Symbolen gibt, welche die Handhabung sehr kompliziert machen. Das hier beschriebene Verfahren besteht aus 32 Symbolen. Die Wahl dieser Zahl hat meiner Beurteilung nach einige positive Merkmale, darunter:

Ein zunächst verwirrendes Konzept ist, dass alle Symbole eine Bedeutung haben (oder mehrere, dazu später), aber nicht immer unmittelbar bedeuten, was sie darstellen. Die Symbole A - Z haben normalerweise ihre offensichtliche Bedeutung: In Texten natürlicher Sprachen wie Deutsch, Englisch usw. diese Buchstaben zu repräsentieren. Andere Symbole, wie + = & # sind nicht das Gleiche! Das Symbol & darf nicht so verstanden werden, dass es direkt als Und-Zeichen (Kaufmännisches Und) verwendet werden kann. Vielmehr stellt es etwas da, was eine spezielle Bedeutung bei der Kodierung hat, und nur durch das Zeichen & repräsentiert wird. Vielleicht ist aufgefallen, dass es unter den eigentlichen Symbolen keine Ziffern gibt. Eben hierzu werden die Sonderzeichen benötigt, um die Bedeutung des nachfolgenden Symbols (oder der nachfolgenden Symbole) zu verändern. Das Plus-Zeichen + sorgt etwa dafür, dass das nachfolgende Zeichen nicht seine eigentliche Bedeutung trägt, sondern die zweite Bedeutung, wie sie der jeweiligen Tabelle zu entnehmen ist. So bedeutet die Nachricht KAUFPREIS=IST+EEURO% "Kaufpreis ist 4 Euro" (die Bedeutungen der anderen Symbole kann ebenfalls der Tabelle entnommen werden: Ist-Gleich steht für das Leerzeichen, Prozent steht für das Ende der Nachricht; wofür das wichtig ist wird noch thematisiert). Warum 4 Euro? Das Plus-Zeichen bedeutet, dass das nachfolgende Symbol (ein E) nicht seine eigentliche Bedeutung tragen soll, sondern die zweite. Die zweite Bedeutung von E ist 4. Soll eine Vielzahl von Zahlen auf einmal mitgeteilt werden, kann es sinnvoll sein, dauerhaft zur zweiten Bedeutung zu wechseln, nicht für jedes Zeichen erneut. Hierfür gibt es das Sonderzeichen # womit bis auf weiteres die zweite Bedeutung gemeint wird: DIE=LOTTOZAHLEN#NDLILBELCCLCHLEE#ANGABEN=OHNE=GEWAEHR% Ich kann mir vorstellen, dass diese Darstellung auf dem ersten Blick sehr abschreckend und kompliziert aussieht, aber eigentlich ist es Schritt für Schritt möglich, die Bedeutung zu ergründen. Nach dem Abschnitt "Die Lottozahlen" erscheint die Raute, ab sofort hat also jedes Symbol die zweite Bedeutung. Wie sich der Tabelle entnehmen lässt, ist das N in zweiter Bedeutung ein Doppelpunkt, er leitet also die Aufzählung der Zahlen ein. Darauf folgt die 3 (durch das D dargestellt), und, mit Komma bzw. L getrennt, die nächste Zahl - I steht für die 8. Schließlich kommt, nachdem die sechs Zahlen genannt wurden, eine weitere Raute. Die zweite Bedeutung der Raute ist, wieder zur eigentlichen, ersten Bedeutung zurückzukehren. Der nachfolgende Text "Angaben ohne Gewähr" wird also (abgesehen von der Umschreibung des Umlauts mit Ä ist AE) wieder normal kodiert, und ist demnach ausdrücklich nicht als Kette von Sonderzeichen 0:6014:°!7:4°64&047- gemeint.

Die Erzeugung des Schlüssels

Das richtige Vorgehen bei der Erzeugung des Schlüssels ist der wesentliche Faktor, der entscheidet, ob die Kommunikation wirklich sicher abläuft. Geringfügige Fehler, Unachtsamkeiten oder "Abkürzungen" (Methoden, die vermeintlich leichter funktionieren, aber tatsächlich keine gleiche Sicherheit bieten) haben katastrophale Konsequenzen für die Vertraulichkeit der Nachricht. Es gibt diese Regeln nicht ohne Grund! Sie sind nicht aus einer Paranoia oder dem Wunsch, "ganz sicher zu gehen", entstanden - Nein: Ohne sie gibt es keine Sicherheit.

Ich möchte die Regeln nun erstmal grob zusammengefasst aufzählen, um sie dann einzeln im Nachhinein genauer zu beschreiben. Ich halte es für den besten Weg, meine Leser von der Einhaltung der Regeln zu überzeugen, zu verdeutlichen, welche Konsequenzen es hat, wenn diese nicht befolgt werden, und zugleich erkennbar zu machen, warum diese Probleme bei der Einhaltung nicht vorhanden sind. Nun die Regeln in Kurzfassung:

Nun nochmal etwas dazu, wie der Schlüssel eigentlich aussieht: Er ist eine Folge von Zeichen, und zwar die selben, die auch bei der Kodierung von Nachrichten verwendet werden. Der Unterschied ist, dass anders als bei den Nachrichten die Zeichen keine Bedeutung haben, sondern uniform zufällig sind (uniform bedeutet, jedes Zeichen hat die gleiche Auftrittswahrscheinlichkeit). Wie herkömmliche Würfel mit sechs Seiten haben auch Kasinowürfel nicht die Möglichkeit, durch einen Wurf ein Symbol zu erzeugen: Es gibt nur sechs Möglichkeiten, benötigt werden aber 32. Um dies zu umgehen, können zwei unterschiedliche Kasinowürfel (die sich in ihrer Färbung unterscheiden) geworfen werden, und dann einer für die horizontale und der andere für die vertikale Linie in der Tabelle stehen:

Tabelle zur Generierung von Symbolen aus zwei Würfelergebnissen. Transkription erfolgt in Kürze.

Die letzten Felder sind ungültig. Tritt eine dieser vier Kombinationen auf, wird erneut gewürfelt, und das ungültige Ergebnis einfach ignoriert. Das ist notwendig, da zwei unterscheidbare Würfel 36 Kombinationen haben können (6*6, jeder Würfel hat 6 Möglichkeiten bei jeweils 6 des anderen). Es gibt aber nur 32 Symbole, also 4 weniger. Und eben diese Symbole sind dann die Ungültigen.

Wird nun fünf Mal gewürfelt (mit jeweils zwei unterscheidbaren Würfeln) könnte dabei folgende Zeichenkette entstehen, wenn jedes Symbol aufgeschrieben wird: JDU+S Wie wird daraus jetzt eine geheime Nachricht? Zunächst sei bemerkt, dass fünf Zeichen eigentlich viel zu wenig sind, um nützliche Nachrichten zu übermitteln. Ein Zeichen muss ja schon gedanklich abgezogen werden, weil es zum Beenden der Nachricht benötigt wird. Stellen wir und also besser für das nachfolgende Beispiel vor, eine längere Schlüsselfolge sei erzeugt worden: ZZMLS T=GWQ CODJR ELRXI OP#DM FKPKO

Zuerst muss Alice, die damit Nachrichten an Bob senden will, diesen Schlüssel physisch an ihn übergeben. Anschließend kann er verwendet werden, damit Alice über unsichere Kommunikationswege Mitteilungen an Bob übertragen kann. Um nun die Nachricht zu verschlüsseln, schreibt Alice diese auf, und unterteilt sie dabei wie den Schlüssel in Gruppen von fünf Zeichen (diese haben keine wirkliche Bedeutung; sie erhöhen die Lesbarkeit und verringern so das Risiko von Fehlern).

ZZMLS T=GWQ CODJR ELRXI OP#DM FKPKO
GEHE= MORGE N=ANG ELN%

Zwei untereinander stehende Zeichen, jeweils eins vom Schlüssel und von der Nachricht, wird nun verknüpft. Dies erfolgt, indem der Zahlenwert für die beiden Zeichen der Tabelle entnommen werden, und miteinander addiert werden. Ist das Ergebnis größer als 31, muss der kongruente Wert aus der nebenstehenden Tabelle entnommen werden. Zur besseren Verdeutlichung will ich dies nun für einige Zeichen einzeln durchgehen: Z hat den Wert 25, G den Wert 6. 25+6=31, somit ist das erste Symbol der geheimen Nachricht %, denn dieses hat den Wert 31. Als nächstes wird ein weiteres Z (25) mit dem E (4) verknüpft. Das Ergebnis ist also 29 und somit &. Für M und H gilt 12+7=19 (T), und für L und E 11+4=15, also P. Bei S und dem Ist-gleich-Zeichen liegt ein Sonderfall vor: S hat den Wert 18, und das Gleichzeichen den Wert 30. 18+30=48, doch das hat kein Symbol! Hier muss die Tabelle mit den kongruenten Werten verwendet werden. Dieser lässt sich entnehmen, dass 48 im Kontext der Verknüpfung das gleiche wie 16 ist, und damit Q ergibt.

                       OP#DM FKPKO
GEHE= MORGE N=ANG ELN%
-----------------------
%&TPQ %MX?U PMDWX IW=WI

Noch eine Besonderheit ist, dass das I im vierten Block des Schlüssels direkt übernommen wurde, da es in der Klarnachricht kein entsprechendes Zeichen gab. So wird stets eine ganze Anzahl an vollen Blöcken übermittelt. Das Ergebnis ist eine Folge von Symbolen, die nur mit dem passenden Schlüssel wieder in die richtige Klarnachricht umgewandelt werden kann. Für alle anderen, die zwar diese Nachricht haben, aber nicht den geheimen Schlüssel, ist es nutzlos und von einer sinnlosen Folge von Symbolen nicht zu unterscheiden.

Padding

Es gibt jedoch eine Information, die Eve dennoch erfahren würde, wenn Alice wie oben beschrieben die Nachricht aus den vier Blöcken an Bob übermittelt: Die Länge. Auch, wenn auf ganze Blöcke zu je fünf Zeichen aufgerundet wird, besteht das Problem, das Eve die grobe Länge der Nachricht kennt. Daraus sind manchmal mehr Rückschlüsse möglich, als auf dem ersten Blick erkennbar. Angenommen, Eve protokolliert nur die Länge der Nachrichten zwischen Alice und Bob (diese sind nachfolgend in der Anzahl von Blöcken, also den Fünfergruppen, angegeben). Dabei könnte ein derartiges Muster entstehen:

Bob:	41
Alice:	 1
Bob:	56
Alice:	 5
Bob:	37

Ohne den Inhalt zu verstehen ist es möglich, einige Aussagen zu treffen: Die offensichtliche ist, dass Bob weitaus mehr Daten sendet als Alice. Daraus lassen sich auch weitergehend Hypothesen bilden, welche je nach Kontext durchaus aufschlussreich sein könnten. Beispielsweise könnte es sein, dass Bob Vorschläge zu einem Thema macht, und Alice diese kurz kommentiert, im ersten Fall vielleicht mit Ja oder Nein, im zweiten mit einer kurz ausgefallenen Rückmeldung. Danach fasst Bob vielleicht zum Abschluss die Vereinbarung zusammen, was Alice jedoch nicht mehr explizit bestätigt.

Ziel des Paddings ist nun, die Nachrichtenlänge zu verschleiern. Hierzu werden an die existierenden Blöcke weitere angehängt, allerdings nicht vom "wertvollen" Schlüssel, der nur einmal verwendet werden darf, und daher nicht "verschwendet" werden sollte, sondern durch das Erzeugen zufälliger Blöcke. Wenn Alice dies etwa bei ihrer Nachricht tut, weiß Bob dennoch, welche Blöcke er ignorieren kann, und dass er auch nicht seinen Schlüssel zu verwenden hat, um diese sinnlosen Paddingblöcke zu entschlüsseln. Für die Padding-Blöcke gelten ansonsten die gleichen Sicherheitskriterien wie für die Erzeugung von Schlüsseln. Gäbe es nämlich statistische Muster in diesen, ließe sich bestimmen, was ein Paddingblock ist, und damit wäre mehr über die Länge bekannt, als bewusst in Kauf genommen wurde.

Durch das Anhängen von Paddingblöcken könnte aus Sicht von Eve nun der Kommunikationsverkehr so aussehen:

Bob:	48
Alice:	32
Bob:	64
Alice:	32
Bob:	48

Die tatsächliche Länge wird hier weitaus weniger deutlich, was insbesondere beim Telekommunikationsverhalten von Alice den Umfang von Interpretation und Spekulation stark verringert.

Code-Tabelle und Nutzung von Abkürzungen

Bedenkt man, dass die Erzeugung des zufälligen Schlüssels, aber auch der manuellen Verschlüsselung vergleichsweise aufwendig ist (die Wichtigkeit kurzer Nachrichten wird sich vor allem noch im Kontext der Steganografie zeigen), gibt es gute Gründe, die Nachrichten so kurz wie möglich zu machen, also mit so wenigen Symbolen wie es geht. Um dies zu erreichen zeige ich hier die Möglichkeit, vordefinierte Wörter, die häufig gebraucht werden, durch deren jeweiligen Code auszudrücken. Hierzu benötigen Alice und Bob die gleiche Code-Tabelle, um damit dem Wort den jeweiligen Code zuzuordnen. In ihr befinden sich die Wörter, Wortfolgen oder sonstigen Texte mit dazu gehörenden zwei Symbolen. Das Sonderzeichen & ist ebenfalls wichtig: Seine Bedeutung ist, dass die nachfolgenden zwei Symbole als Code zu interpretieren sind. Ein Code hat somit immer drei Zeichen (die beiden Code-Zeichen und das Und-Zeichen), was es schon Mal sinnlos macht, Codewörter mit drei Buchstaben zu definieren, da diese die Anzahl der Symbole nicht verringern.

Steganografie - Die Existenz der Nachricht unsichtbar machen

Neben der Kryptografie, die hier bereits erklärt wurde und es ermöglicht, die Daten für Außenstehende nicht lesbar zu machen, gibt es die Steganografie. Diese soll die Nachricht verstecken, also vermeiden, dass die Existenz der Nachricht erkennbar ist, oder diese zumindest nicht das Erscheinungsbild einer verschlüsselten Mitteilung und ihren charakteristischen, wahllos aneinander gereihten Symbolen aufweist. Dies kann wichtig sein, um die Tatsache, dass überhaupt verschlüsselt kommuniziert wird, unsichtbar zu machen.

Dringend zu beachten ist, dass Steganografie keine Alternative zur Kryptografie ist, diese auch nicht ersetzen soll, sondern als zusätzlicher Schritt auf die bereits verschlüsselte Nachricht anzuwenden ist. Würde man dies nicht tun, wäre es nämlich möglich, durch bloße Kenntnis des steganografischen Verfahrens (und von dieser muss man ausgehen, ich veröffentliche es schließlich hier) ohne irgendeinen Schlüssel den Vorgang der Verschleierung umzukehren.

Textsteganografie: Wörter pro Satz

Anfangs sagte ich, dass ich bei der Wahl der Symbole extra darauf geachtet habe, dass es sich um eine Zweierpotenz handelt. Dies wird nun von besonderer Bedeutung, denn ab sofort müssen die Symbole der bereits verschlüsselten Nachricht als jene Einsen und Nullen aufgefasst werden. Jede dieser Ziffern, jede Eins oder Null, entscheidet dann darüber, ob ein Satz in einem unverdächtigen Text eine gerade oder ungerade Anzahl an Wörtern hat. Vorteile sind, dass es relativ einfach ist, ein einzelnes Wort aus einem Satz zu entfernen oder es hinzuzufügen (und diese Handlung ändert ja die Parität, also, ob es gerade oder ungerade ist), und Texte so fundamental für die Kommunikation sind, dass man sie zu praktisch jedem Anlass versenden kann (oder veröffentlichen, siehe Abschnitt Anonymität). Ein Nachteil ist, dass die Texte sehr lang werden. Ein Symbol aus der verschlüsselten Nachricht entspricht in etwa 70 Wörtern, nämlich immer fünf Sätzen.

Um den Text natürlich wirken zu lassen, ist es ratsam, diesen zunächst normal zu verfassen. Im Anschluss kann dann für jeden Satz geprüft werden, ob er die richtige Anzahl an Wörtern hat, oder eins entfernt/hinzugefügt werden muss. Rund 50% der Sätze haben bereits von sich aus die richtige Wortzahl, also ist der Aufwand geringer, als er zunächst erscheinen mag. Die Regel ist: Eine 0 steht für eine gerade Anzahl an Wörtern, eine 1 für eine ungerade.

Angenommen, das erste Symbol der bereits fertig verschlüsselten Nachricht ist ein T - dessen binäre Repräsentation (also durch Einsen und Nullen) ist 10011. Dies bedeutet, dass der erste, vierte und fünfte Satz eine ungerade Anzahl an Wörtern haben muss, während der zweite und dritte eine gerade Anzahl benötigt. Um einen solchen Text zu verfassen, kann dieser wie bereits erwähnt zunächst normal verfasst werden. Jetzt geht es also erstmal nur um das Thema des Textes (auch dieses sollte natürlich plausibel sein, stimmen, und selbst nichts, was geheimzuhalten ist, enthalten).

Gestern habe ich endlich Mal wieder den Zoo besucht. Ich hatte das ja schon lange vor, aber irgendwie ergab es sich nie. Manchmal lag es am Wetter, manchmal war es mir dann zu spät, um noch loszufahren, oder es kam etwas anderes dazwischen. Überrascht hat mich, wie viel sich dort verändert hat. Die Infotafeln über die verschiedenen Tiere haben jetzt alle QR-Codes. Damit kann man weitere Fakten über die Tiere nachsehen, oder erfahren, wann die nächste öffentliche Fütterung stattfinden wird.

Gehen wir nun diesen Text Satz für Satz durch, und prüfen immer, ob die Anzahl an Wörtern stimmt, und, wenn nicht, wie eine geringfügige Änderung dafür sorgt, dass dem doch so ist:

Anonymität

Die zuvor beschriebene Steganografie ermöglicht bereits, dass nicht mehr erkennbar ist, dass geheime Nachrichten ausgetauscht werden. Wer den Kommunikationsverkehr mitliest hat vielmehr den Eindruck, dass es sich um unwichtige, banale Nachrichten handelt. Doch was ist, wenn darüber hinaus auch verheimlicht werden soll, dass Alice und Bob überhaupt miteinander kommunizieren?

Eine Möglichkeit ist, dass die Nachrichten (und das funktioniert an sich unabhängig davon, ob diese verschleiert sind, oder nicht; verschleiert ist es jedoch weniger auffällig und für Zensur anfällig) veröffentlicht werden. Zunächst mag das widersprüchlich erscheinen, denn das oberste Ziel ist ja, dass der Inhalt der Nachricht niemandem außer dem legitimen Empfänger bekannt wird. Doch dabei gilt zu bedenken, dass es sich um eine Nachricht handelt, die bereits verschlüsselt worden ist. Somit kann niemand, der diese Nachricht abfängt, sie entschlüsseln, sofern die Regeln eingehalten worden sind! Hierbei ist auch zu beachten, dass sowieso davon ausgegangen werden muss, dass alles, was übertragen wird, anderen bekannt ist.

Tatsächlich jedoch ermöglicht die Veröffentlichung vor allem, dass jeder die Nachricht lesen könnte, und - speziell, wenn es steganografisch verschleiert ist - somit ein weitgehend legitimes Interesse daran haben könnte. Die Veröffentlichung schützt also die Anonymität des Empfängers. Hierbei muss jedoch zwischen Systemen unterschieden werden, bei denen die Nachricht wirklich ausgestrahlt wird, sodass der Empfänger sich überhaupt nicht identifizieren oder anmelden muss (etwa beim Kurzwellenrundfunk) oder zwar bekannt ist, dass er die Nachricht möglicherweise gelesen hat, aber darunter auch viele andere in Frage kommen (etwa bei einem Kommentar auf einem Blog, dessen Zugriff natürlich weiterhin die HTTP-Anfrage und damit verbunden ein Verlust der Anonymität bedeutet, aber der Empfänger einer von vielen ist, und es keinen Hinweis darauf gibt, dass ihm die steganografische Natur des Textes überhaupt bewusst ist). Ein Sonderfall sind POCSAG-Pager, diese sind zwar nicht anonym (es ist bekannt, wer die Nachricht empfängt), jedoch wird anders als beim Mobiltelefon immerhin nicht erfasst (weil physikalisch unmöglich), wo sich das Gerät befindet. Derartige Provider und Tarife gibt es in einigen Staaten noch, jedoch werden sie zunehmend als obsolet aufgefasst und verschwinden, so kürzlich in Japan.

Die Anonymität des Absenders ist schwieriger umzusetzen. Während bei der Anonymität des Empfängers schön beschrieben werden kann, wie beispielsweise eine Radioausstrahlung, die EU-weit zu hören ist, natürlich so vielen Millionen Leuten zugänglich wird, dass der bestimmte Empfänger darunter nicht auffällt, ist es beim Absender weitaus schwieriger. Praktische Ansätze sind der Versand anonymer Briefe (Vorsicht vor biologischen Spuren wie DNA oder der Tatsache, dass bekannt ist, in welchen Briefkasten die Sendung geworfen wurde) oder die Nutzung von Münztelefonen (besser SMS oder Pager-Nachrichten per TipSend, da die Stimme sonst verräterisch ist!) sowie freien WLANs, wobei letzteres mit dem Problem verbunden ist, Hardware zu besitzen, der einerseits vertraut werden kann, und die andererseits die nötige Komplexität hat, um WLAN-Verbindungen herzustellen. Ein Libreboot-Laptop mit OpenBSD und die Änderung der MAC-Adresse nach jeder Verbindung mit dem WiFi-Netz sollte absolutes Mindestmaß sein. Aufforderungen, sich bei dem WLAN-Angebot zu registrieren niemals Folge leisten. Die Verbindung nur so kurz wie möglich halten und dem WLAN-Modul ansonsten per Killswitch den Strom entziehen. Mobilfunk ist zur anonymen Kommunikation weitgehend ungeeignet. Abgesehen von der freiheitsfeindlichen Gesetzgebung, die den Erwerb von SIM-Karten innerhalb Deutschlands wegen der Notwendigkeit der persönlichen Identifizierung seit 2017 generell ausschließt wären auch SIM-Karten aus dem Ausland nur begrenzt geeignet, da jedes Mobilfunkmodem außerdem einen einmaligen Code hat, der neben den Identifizierungsdaten der SIM übertragen wird. Eine Reihe von Mobilfunkmodems (keine Handys, da diese über Mikrofon und Lautsprecher verfügen, und das Modem mit proprietärer Software arbeitet) mit Bargeld bei einem möglichst großen Geschäft zu kaufen (also in Großstädten, Bahnhofsnähe etc.) ist ein Mindestmaß an Sicherheit, wenn die Nutzung von Mobilfunk unvermeidbar ist.

Plausible Abstreitbarkeit

Angenommen, Alice möchte eine Nachricht an Bob senden. Sie befürchtet allerdings, dass Bob diese an Dritte weitergehen könnte, was Alice auf jeden Fall vermeiden möchte. Was muss sie dabei beachten?

Eine der wichtigen kryptografischen Eigenschaften des One-Time–Pads ist, dass die Urheberschaft einer Nachricht gegenüber Dritten abgestritten werden kann. Wenn Alice ihren Schlüssel an Bob gibt, kann dieser damit die Nachrichten von Alice entschlüsseln - soweit bekannt. Aber wenn er eine Nachricht erhält, und diese entschlüsselt, ist es nicht möglich, andere davon zu überzeugen, dass Alice diese verfasst hat. Genauso könnte Bob nämlich einen angeblichen Schlüssel gefälscht haben, und behaupten, dieser sei von Alice - um damit eine andere Nachricht zu provozieren. Will Alice einem Dritten, von dem Bob die Nachricht erfahren hat (unabhängig davon, ob Bob gelogen hat oder ob er eine echte Nachricht von Alice weitergeleitet hat), verdeutlichen, dass Bob diese sich nur ausgedacht hat, kann sie etwa eine andere Nachricht vorlegen, und genauso behaupten, der dafür zur Geheimnachricht passende Schlüssel sei der echte.

Offene Fragen und fehlende Themen

Wie die Warnung zu Beginn der Seite bereits verrät ist dieser Text noch nicht fertig. Genau genommen gilt für ihn, wie auch für die eigentlichen technetoistischen Texte, das gleiche, was ich als großen Vorteil des WWW ansehe: Dass ich den Text jederzeit verbessern kann, und nicht mich einmal darauf festlege. Sobald ich die rote Warnung oben entfernt habe werde ich jedoch darauf achten, keine Änderungen mehr durchzuführen, die eine "Abwärtskompatiblität" gefährden, also dafür sorgen, dass unterschiedliche Versionen der Anleitung bei Alice und Bob zu Missverständnissen bei der Telekommunikation führen. Ist dies einmal doch unumgänglich, werde ich die alte Version mit entsprechenden Hinweis erhalten und ggf. genauer versionieren.

Folgende Themen fehlen derzeit noch in dieser Anleitung bzw. sind allgemeine Probleme des One-Time–Pads, von denen mir die Lösbarkeit unbekannt ist:

Außerdem ist mir aufgefallen, dass dieses Thema mittlerweile eine große Komplexität angenommen hat, und der Umfang dieser Anleitung bei mehr als 6000 Wörtern liegt. Ich werde auch versuchen, die Anleitung besser zusammenzufassen, um die Motivation derjenigen, die das System erlernen wollen, nicht zu verlieren. Außerdem möchte ich den Text in mehrere, miteinander verlinkte Seiten unterteilen, sodass - sobald beschrieben - fortgeschrittene Verfahren wie die Grafik oder sogar die Gesamtheit der Steganografie dedizierte Seiten erhalten, und nicht eine große Seite vorliegt. Der Anfang ist bereits getan: Ich habe diese Anleitung in ein eigenes HTML-Verzeichnis (otp) verschoben.

Kontakt

Für alle Fragen, Hinweise oder Vorschläge zur hier beschriebenen sicheren Kommunikation ist eine dedizierte Mailadresse eingerichtet worden: otp@technetoismus.eu

Werden Verbesserungsvorschläge an diese gerichtet, erklärt sich die Absenderin bzw. der Absender dazu bereit, auf sämtliche Rechte daran zu verzichten, und diese frei in dieser Anleitung ohne namentliche Nennung zur Verfügung zu stellen. Das ist notwendig, da ich nicht bereit bin, mich mit umfassenden Lizensierungen und datenschutzrechtlichen Regelungen zur namentlichen Erwähnung auseinanderzusetzen. Auch Fragen, die gestellt werden, können - bzw.  deren Beantwortung, indirekt oder direkt in die weitere Verbesserung dieser Anleitung einfließen. Absenderadressen, angegebene Kontaktdaten und insbesondere Namen werden dabei niemals veröffentlicht. Wer damit nicht einverstanden ist, möge bitte von Kontakt absehen. Ich halte es für wichtig, diese Kenntnisse jedem zur Verfügung zu stellen, und bin aus diesem Grund zu lizenzrechtlichen Kompromissen nicht bereit!



Dieses Werk ist lizenziert unter CC0 - Public Domain. Die Verbreitung, Kopie und beliebige Vervielfältigung ohne Berücksichtigung von irgendwelchen Urhebergesetzen (dem sog. Urheberrecht) ist nicht nur erlaubt sondern explizit gewünscht. Verlinkungen in diesem Artikel unterliegen ggf. anderen Lizenzbestimmungen und sind zu beachten.