Sichere Kommunikation mit Stift und Papier

Warnung

Die Sicherheitsregeln sind unbedingt einzuhalten, da ansonsten vermeintlich geschützte Daten nicht wirklich vertraulich sind. Für die Sicherheit und Richtigkeit dieser Anleitung übernehme ich keine Haftung.

Computergestützte Kryptografie ist heute durch Messenger-Apps wie Signal oder in den Browser integrierte Kryptografie (TLS, das grüne Schloss in der Adresszeile) allgegenwärtig und leicht benutzbar. Dennoch kann es Gründe geben, auf den Computer bei der verschlüsselten Kommunikation zu verzichten:

  • Integrität: Die Manipulation eines Computers auszuschließen ist schwerer, als sich von der Integrität von Stift, Papier und Würfeln zu überzeugen. Computer sind komplexe Geräte, die ein einzelner Mensch nicht vollständig nachvollziehen kann.
  • Transparenz: Sie, und Ihre Kommunikationspartner, können sich relativ leicht von jener Integrität überzeugen. Selbst wenn Sie einen Libreboot-Computer mit OpenBSD, Festplattenverschlüsselung etc. haben - was bedeutet das schon für den Partner? Die Verfahren hier lassen sich leicht nachvollziehen, und auch ein Laie kann ihre Sicherheit begreifen.
  • Unabhängigkeit: Ihr (hypothetisch sicherer) Computer funktioniert Mal nicht, und Sie leihen ein Smartphone oder den Arbeitsplatzrechner? Völlig unproblematisch, wenn nur bereits verschlüsselte Daten in das Kommunikationsgerät eingegeben werden.

70% fertig „Sichere Kommunikation mit Stift und Papier“ ist nach Einschätzung seiner Autoren zu 70 % fertig

Materialien Bearbeiten

Die nachfolgend aufgelisteten Materialien werden für die Verfahren, die hier erklärt werden, benötigt. Nicht jedes Verfahren benötigt sämtliche Materialien. Alle werden hier kurz erläutert, inkl. Hinweisen zur Kaufentscheidung, Alternativen usw.

Stift Bearbeiten

Ein herkömmlicher Kugelschreiber oder Bleistift zum Schreiben. Fineliner und Filzstifte sind auf wasserlöslichen Papier meist ungeeignet, da es sich ähnlich wie Löschpapier verhält.

Wasserlösliches Papier Bearbeiten

Eine spezielle Sorte Papier, die sich in Wasser zu einzelnen Fasern auflösen lässt. Weitaus praktikabler und sicherer als Papier zu verbrennen oder mit Säure/Bleichmittel zu zerstören. Zubehör: Leere Flasche (die danach nicht mehr für Lebensmittel geeignet ist), etwas Leitungs-/Brunnenwasser.

Zufallserzeugung Bearbeiten

Die Zufallserzeugung wird für Schlüssel und teilweise in der Steganografie benötigt.

Würfel Bearbeiten

Am einfachsten ist die Zufallserzeugung mit Würfeln. Es können Kasino-Würfel (besonders präzise gefertigt) verwendet werden, die jedoch nur als sechsseitige Würfel (also gewöhnliche) existieren. Ein präziser D10-Würfel (z. B. von Game Science) ist besser, da dieser direkt eine Dezimalziffer (0 bis 9) erzeugt, ohne eine spezielle Umrechnungstabelle zu benötigen.

Elektromechanischer Zufallsgenerator Bearbeiten

(In Entwicklung)

Kommunikationsmedium Bearbeiten

Alle Medien, mit denen sich Ziffernfolgen übertragen lassen, sind geeignet (das sind praktisch alle). Bei Steganografie kann die Wahl der Medien weiter beschränkt sein. Ansonsten gilt: Telefon, E-Mail, SMS, Messenger wie Signal oder Discord, Pager, Fax, Postdienst, Funkdienste usw. - alles geeignet.

Grundbegriffe Bearbeiten

Folgende Begriffe verwende ich wiederkehrend, und sie haben eine feste Definition, die von der Alltagssprache abweichen könnte. Im Zweifelsfall sollte die Bedeutung hier nachgelesen werden.

Verschlüsselung Bearbeiten

Eine mathematische Operation, um unter Nutzung eines Schlüssels einen Klartext in einen Geheimtext zu transformieren, d. h. den Klartext so zu verändern, dass Unbefugte ihn mangels Schlüssel nicht mehr lesen können. Die Begriffe Kodierung und Verschlüsselung haben eine unterschiedliche Bedeutung, die klar voneinander abzugrenzen ist!

Schlüssel Bearbeiten

Eine Folge von Symbolen, die benutzt werden kann, um etwas zu verschlüsseln. Im Kontext dieser Anleitung werden Schlüssel eingesetzt, die nicht mehrfach verwendet werden dürfen.

Klartext Bearbeiten

Die eigentliche Mitteilung, wie sie dem Empfänger bekannt werden soll, und keine Mechanismen der Geheimhaltung aufweist.

Kodierung Bearbeiten

Eine auf Regeln oder Tabellen (Codelisten) basierende Darstellung von Informationen, die nicht der Geheimhaltung dient, sondern der Abkürzung, regelmäßigen Schreibweise oder Repräsentation von Daten, die nicht unmittelbar als beschreibender Text sinnvoll sind. Alltägliche Beispiele sind ISBN, KFZ-Kennzeichen, genormte Datumsstempel wie 2021-06-21 etc. Man beachte, dass all diese Dinge nicht der Geheimhaltung dienen (jeder kann sich etwa über den Aufbau der ISBN informieren). Die Kodierung findet vor der Verschlüsselung statt, nicht um die Sicherheit zu erhöhen, sondern um eine einheitliche, abgekürzte Schreibweise der Nachricht mit leicht zu verarbeitenden Symbolen (den Ziffern 0 bis 9) zu erzielen.

Zufällige Ziffer Bearbeiten

Eine Ziffer zwischen 0 bis 9 (eine Dezimalziffer), die durch eine nicht voraussehbare Methode erzeugt wurde (bspw. mit einem Würfel). Im Rahmen der Anleitung ist eine weitere Anforderung an die zufällige Ziffer die Gleichverteilung, d.h. alle zehn möglichen Ziffern müssen die gleiche Auftrittswahrscheinlichkeit von 10 % haben, und eine Ziffer darf nicht von den vorherigen abhängen (Unabhängigkeit).

Ziffernfolge Bearbeiten

Eine Folge von n Ziffern, z. B. 70868 mit n = 5. Der Unterschied zu einer fünfstelligen Zahl ist, dass führende Nullen ausdrücklich möglich sind, z. B. 00439 eine gültige Fünf-Ziffern-Folge ist.

Passiver Angreifer Bearbeiten

Ein Angreifer, der den Nachrichtenverkehr mitlesen kann, und dabei ggf. Kenntnis hat, wer Absender und Empfänger ist.

Aktiver Angreifer Bearbeiten

Ein Angreifer, der selbst Nachrichten erzeugen kann, und diese als vom Absender stammend ausgibt, oder die Möglichkeit hat, die Zustellung von Nachrichten in manipulierter Form zu erwirken, diese hinauszuzögern oder gezielt zu unterbinden. Er kann zudem wie der passive Angreifer mitlesen.

Sicherheitsregeln Bearbeiten

Keine mehrfache Verwendung der Zufallsfolge Bearbeiten

Wird mit dem Zufallsgenerator eine Folge von zufälligen Ziffern erzeugt, darf diese Ziffernfolge nicht mehrfach verwendet werden, sondern es müssen stets weitere Ziffern erzeugt werden. Wird zufällig mehrfach die gleiche Sequenz erzeugt, darf diese jedoch nicht deshalb verworfen werden.

Sichere Aufbewahrung der Schlüssel Bearbeiten

Die Schlüssel müssen sicher aufbewahrt werden - die Vertraulichkeit gegenüber Dritten muss zweifelsfrei gewährleistet sein, und bei kleinsten Zweifeln sind die Schlüssel zu vernichten und der andere an der Kommunikation beteiligte zu warnen. Dies liegt bspw. vor, wenn eine elektronische Kamera auf die Schlüssel ausgerichtet war.

Transparenten, starken Zufall verwenden Bearbeiten

Es kann verleitend erscheinen, willkürliche Ziffern, die man ausdenkt, aufzuschreiben, die letzte Ziffer der ISBN aller Bücher aus dem Regal aneinanderzureihen etc., aber hier liegt immer ein identifizierbares Muster vor. Speziell der menschlichen Geist ist äußerst nachteilhaft beim "Ausdenken" von Zufalls, da Dinge, die bei einer Zufallskette völlig normal sind (bspw. dreimal die gleiche Ziffer) vom Menschen gemieden werden, da Zufall vermeintlich die völlige Abwesenheit von gleichbleibenden Folgen ist. Zufall erscheint Menschen oft paradoxerweise nicht zufällig (deshalb hat Software zur "zufälligen" Auswahl von Musik aus einer Playlist oft Algorithmen, um nicht ganz zufällig zu sein, sondern dem Menschen so zu erscheinen). Nur ein mechanischer Vorgang kann geeigneten Zufall transparent erzeugen.

Persönliche Übergabe Bearbeiten

Wird erwähnt, dass Absender und Empfänger im Voraus Codes oder Schlüssel persönlich austauschen müssen, ist damit das tatsächliche physische Treffen gemeint. Der Versand per Post ist zwar technisch möglich, aber dann hat sämtliche Kommunikation nur die Sicherheit der Post, die unter dem Niveau einer persönlichen Übergabe liegt. Wenn aber, z. B. ins Ausland, das persönliche Übergeben komplett unmöglich ist, mag ein Brief als Einschreiben-eigenhändig weniger schlimm als E-Mail sein, kann aber nie der Sicherheit direkter Übergabe entsprechen.

One-Time-Codes Bearbeiten

One-Time-Codes sind zufällig erzeugte Codes mit einer vorab vereinbarten Bedeutung, die gesendet werden, falls und sobald diese Bedeutung mitgeteilt werden soll. Dem Namen nach darf jeder Code nur einmal gesendet werden.

Eigenschaften und Vorteile:

  • Leichter zu erlernen und zu verstehen als das One-Time-Pad
  • Kann vorbereitet werden, sodass es ab tatsächlichen Einsatz sehr schnell geht (unter 2 Minuten)
  • Sehr leichte und spontane Handhabung

Beschränkungen und Nachteile:

  • Keine beliebigen Nachrichten möglich, sondern nur vorher definierte

Benötigtes Material: Wasserlösliches Papier (zwei A6-Blätter), Stift, Zufallserzeugung (am besten D10-Würfel)

Grundlagen Bearbeiten

 
Zettel mit Codes (links) und deren zugeordneter Bedeutung.

Mit der Zufallsquelle werden Ziffernfolgen fester Länge (empfohlen: 5) erzeugt. Eine solche Zufallsfolge kann etwa 33699 oder 68349 sein. Wie in den Sicherheitsregeln thematisiert ist es wichtig, eine echte, verlässliche Zufallsquelle bestimmungsgemäß einzusetzen. Es werden Nachrichten festgelegt, die möglich sein sollen, ohne sich darauf festzulegen, diese tatsächlich zu senden. Diesen wird eine Folge zufälliger Ziffern zugeordnet. Ein Beispiel:

Code-Tabelle
Code Bedeutung
54593 Ich verspäte mich
90941 Ich muss absagen
41295 Absage widerrufen
00880 Habe nur kurz Zeit
14596 Anderer Treffpunkt

Nun benötigt die Empfangsperson (die Codes erhält und deren Bedeutung zuordnen muss) eine exakte Kopie der Tabelle, die persönlich übergeben werden muss, z. B. bei der aktuellen Verabredung zur Verwendung bei der nächsten. Sobald der Absender einen Code gesendet hat bzw. der Empfänger diesen nachgelesen und interpretiert hat, ist der jeweilige Code aus dem Zettel zu entfernen, indem er ausgeschnitten oder -gerissen wird, und dann im Wasser zerstört werden.

Standardnachrichten Bearbeiten

Gewisse Nachrichten sollten eigentlich immer definiert werden, unabhängig vom konkreten Anlass (dass mir keine Ausnahmen einfallen bedeutet aber nicht, dass keine existieren!):

Standardnachrichten
Telekommunikationsinstrument oder Netzwerk ist defekt/gestört, weitere Codes bleiben eventuell unbeabsichtigt aus!
Die Codeliste ist kompromittiert worden. Alle noch eintreffenden Codes dürfen nicht mehr beachtet werden.
Der letzte nicht-bedeutungslose Code ist versehentlich gesendet worden oder ich ziehe die Aussage zurück.
Der zurückgezogene Code ist nun doch gemeint.
Es kam zu umfassenden Irrtümern. Bitte keine bisherigen Codes von mir berücksichtigen.

Bedeutungslose Codes Bearbeiten

Mit dem jetzigen Verfahren kann ein passiver Angreifer bestimmen, wie viele Codes gesendet wurden. Mit bedeutungslosen Codes ist es möglich, nur zu offenbaren, wie viele Codes maximal gesendet wurden, die tatsächliche Anzahl kann jedoch zwischen Null und der maximal möglichen Anzahl liegen:

Code-Tabelle
Code Bedeutung
54593 Ich verspäte mich
90941 Ich muss absagen
41295 Absage widerrufen
00880 Habe nur kurz Zeit
14596 Anderer Treffpunkt
23519 Ohne Bedeutung Nr. 1
78832 Ohne Bedeutung Nr. 2

Die Codes ohne Bedeutung werden gesendet, um die genaue Anzahl von Nachrichten zu verschleiern. Sie lassen sich für Angreifer nicht von gültigen Codes unterscheiden.

Warum genau so? Bearbeiten

Nummerierung Bearbeiten

Warum darf keine aufsteigende Nummerierung verwendet werden, bspw. 1 bedeutet dies, 2 bedeutet jenes? Ein Problem wäre dann, dass ein aktiver Angreifer es sehr leicht hat: Er kann bspw. eine 3 oder 1 im Namen des Absenders senden. Das Fälschen des Absenders ist bei vielen verbreiteten Diensten (E-Mail und SMS) zwar verboten, aber technisch einfach. Der Anspruch, nur den Mitteilungsinhalt beachten zu müssen, nicht der Metadaten wie Absender und Empfänger, wäre damit verfehlt.

Ein weiteres Risiko ist, dass die Bedeutungen die Reihenfolge des Einfalls haben, und damit Rückschlüsse möglich sind, ob ein typisches oder untypisches Ereignis auftritt. Angenommen, der Absender schreibt die möglichen Mitteilungen für einen Einkauf auf:

  • Alle gewünschten Produkte erhältlich
  • Vollkorn-Sandwichtoast war nicht erhältlich
  • Streichkäse war nicht erhältlich
  • Mineralwasser war nicht erhältlich

Menschen haben die Tendenz, typische, wahrscheinliche Ereignisse als erstes aufzulisten, und die untypischen ganz am Ende. Daher kann Korrelation zwischen hohem Index und ungewöhnlichen Vorkommnissen auftreten - ein Verstoß gegen das Prinzip, dass Dritte keine Kenntnis vom Inhalt haben. Außerdem kennt ein passiver Angreifer die Mindestzahl valider Nachrichten.

Festlegung bedeutungslose Codes Bearbeiten

Warum bedeutungslose Codes im Voraus festlegen, und nicht einfach irgendetwas senden? Ohne die Definition im Voraus kann der Empfänger nicht feststellen, ob die Codes (mit hoher Wahrscheinlichkeit) vom legitimen Absender oder einem aktiven Angreifer stammen, der versucht, durch das massenhafte Senden von ungültigen Codes die Kommunikation zum Erliegen zu bringen.

Strikt einmaliger Versand Bearbeiten

Warum darf ein Code nicht mehrfach gesendet werden? Was er bedeutet, ist doch trotzdem geheim! Ein passiver Angreifer wüsste, dass das gleiche Ereignis bzw. die gleiche Mitteilung mehrfach vorliegt. Dies kann bereits eine signifikante Information sein, die gemieden werden muss. Schließlich ermöglicht dies auch Eingrenzungen über die Art der Mitteilung, da nur manche Bedeutungen überhaupt sinnvollerweise mehrfach gemeint werden können. Offenbart der Absender oder Empfänger versehentlich die Bedeutung des Codes, gefährdet er damit mehr als notwendig (nämlich nicht nur eine Mitteilung). Aktive Angreifer können außerdem den Code wiederholen, um entsprechend für Chaos zu sorgen.

Auch ohne böse Absicht könnte etwa im Funkruf ein Code, der nur einmal gemeint war, erneut ausgestrahlt werden, bspw. wenn der Netzbetreiber unsicher darüber ist, ob der Code den Teilnehmer erreicht hat. Hat ein Code beim zweiten Empfang keine zusätzliche Bedeutung mehr, sind solche Missverständnisse unmöglich.

Geheime Wörter Bearbeiten

Warum statt der fünfstelligen Ziffernfolgen nicht einfach herkömmliche Code-Wörter verwenden? Kategorisch ausgeschlossen ist das nicht. Wichtig ist dann jedoch, weiterhin eine Zufallsquelle, die mindestens fünf Ziffern erzeugt, zu verwenden, und die so erzeugten Ziffern einer vorher festgelegten Liste zuzuordnen. Diese könnte folgende Struktur haben:

Codewörter (Auszug)
Ziffernfolge Wort
00000 Bücherregal
00001 Teppich
00002 Laserdrucker
38592 Aktenschrank
38593 Gelegenheit
99998 versuchsweise
99999 Abfall

Da hier (auch, wenn die Tabelle auszugsweise dargestellt ist) jede 5-Ziffern-Folge ein eindeutiges Stichwort hat, wäre die Nennung des Stichworts unproblematisch (vorausgesetzt, man hat vorher eine solche Liste mit immerhin 100.000 Einträgen vorbereitet). Was unter gar keinen Umständen getan werden darf ist jedoch die willkürliche Festlegung dieser Wörter, da diese unbewusst etwas über die Denkmuster und Präferenzen des Verfassers offenbaren, oder - noch schlimmer - einen Bezug zur Bedeutung haben, z. B. Mineralwasser war nicht erhältlich mit dem Codewort Oase oder Durst.

Während diese Methode also grundsätzlich in Ordnung ist, bleibt die Frage nach dem praktischen Nutzen. Eventuell sind die Wörter leichter zu merken, vermeiden Missverständnisse bei akustischer Übertragung, oder es ist besser geeignet für Menschen, denen der Umgang mit Zahlen schwer fällt. Sie beseitigen jedoch nicht die Notwendigkeit, eine gute Zufallsquelle zu nutzen, nur dass eben die erzeugten Ziffern nicht direkt sondern "übersetzt" zum Einsatz kommen.

One-Time-Pads Bearbeiten

Beim One-Time-Pad wird ein im Voraus ausgetauschter Schlüssel zur Übertragung beliebiger Texte verwendet. Auch andere Datenstrukturen wie Listen, Tabellen, einfache Grafiken etc. können prinzipiell übertragen werden. Damit ist es vielseitiger als die One-Time-Codes, die nur vorab definierte Nachrichten ermöglichen (und nicht alles ist vorhersehbar!). Zugleich ist der Aufwand höher, und zur spontanen Übermittlung sind One-Time-Codes besser geeignet.

Konzept Bearbeiten

Eine Ziffernfolge wird zufällig erzeugt, um als Schlüssel verwendet zu werden. Eine Kopie davon wird mit dem Empfänger ausgetauscht (nicht ganz, siehe Invers). Die Nachricht wird kodiert (d. h. in eine Darstellung, die nur aus Ziffern besteht, gebracht) und unter den Schlüssel geschrieben. Eine Berechnung, die der Addition sehr ähnelt, wird benutzt, um aus der kodierten Nachricht und dem Schlüssel den Geheimtext zu erzeugen, der bedenkenlos über eine öffentliche Verbindung gesendet werden kann.

Kodierung Bearbeiten

Der erste Schritt ist es, die Nachricht in Ziffernform zu bringen. Dies dient selbst nicht der Geheimhaltung sondern nur dem Zweck, dass die Nachricht (die eigentlich aus Buchstaben besteht) das gleiche Format wie der Schlüssel hat. Angenommen, die Nachricht ist hallo (wir verzichten auf Groß- und Kleinschreibung). Eine triviale Methode der Kodierung wäre, die Position im Alphabet zu verwenden:

0801121214

Der Grund, dass einstellige Zahlen mit einer führenden Null geschrieben wurde, ist die Unterscheidung ein- und zweistelliger Zahlen. Ob 12 ein A und ein B oder ein L ist, wäre ohne die führenden Nullen nicht ersichtlich. Das Problem mit dieser Methode ist, dass jedes Zeichen zwei Ziffern benötigt, unabhängig davon, ob es ein sehr häufiges oder seltenes Zeichen ist. Es ist im Durchschnitt viel besser, wenn das E nur eine Ziffer, das Q jedoch drei Ziffern benötigt (wobei dies von der Sprache abhängt).

Verschlüsselung Bearbeiten

Zur Verschlüsselung muss die kodierte Nachricht mit dem zuvor ausgetauschten Schlüssel verknüpft werden. Dies erfolgt mit der Addition modulo 10. Damit ist gemeint, dass zwei Ziffern addiert werden, das Ergebnis jedoch stets einstellig ist:

  • 3 + 4 = 7
  • 2 + 9 = 1
  • 8 + 5 = 3
  • 4 + 0 = 4
  • 9 + 7 = 6
  • 3 + 7 = 0

Vereinfacht gesprochen wird also gewöhnlich addiert, bei zweistelligen Ergebnissen jedoch die führende 1 entfernt, bspw. 8 + 5 = (1)3.

Praxis Bearbeiten

Kodierung Bearbeiten

 
Kodierungstabelle zur Wandlung von Text in präfixfreie Ziffernfolge für One-Time-Pads

Ein echtes Kodierungsschema hat höhere Anforderungen als die bloße Darstellung durch Position im Alphabet, darunter:

  • Kompakte Schreibweise, z. B. nur eine Ziffer für häufige Buchstaben, drei Ziffern für seltene
  • Ziffern (also, Ziffern, die im Klartext als solche mitgeteilt werden) und Sonderzeichen ausdrücken
  • Mit Verzeichnissen häufiger Wörter und Phrasen können diese erheblich abgekürzt werden; mitunter werden diese vom jeweiligen Einsatzbereich abhängig festgelegt

Die abgebildete Tabelle erfüllt diese Eigenschaften gut. Häufige Buchstaben oder Gruppen (CH) werden mit wenigen Ziffern kodiert, seltene mit vielen. Die Benutzung erfolgt ganz einfach, indem die Ziffern(folgen) der Buchstaben der eigentlichen Nachricht geschrieben werden. So wird die Nachricht Soll ich Tee mitbringen? zu:

98815 59788 61804 63845 39839 90

Warum der ENDE-Code wichtig ist, wird sich im späteren Abschnitt "Padding" noch zeigen.

Das Leerzeichen 97 kann entfallen, wenn die Lesbarkeit und das Verständnis garantiert nicht leidet; es sollen ja so wenig Ziffern wie möglich benötigt werden.

Die Dekodierung (also von Ziffernfolge zu Text) ist immer eindeutig, da es z. B. 5 = E gibt, aber nicht 51, ebenso nicht 8, damit es 81, 85 etc. geben kann.

Verschlüsselung Bearbeiten

Absender und Empfänger haben im Voraus persönlich einen Schlüssel ausgetauscht, der aus einer Reihe von Ziffern besteht (z. B. 50 Ziffern, dargestellt in zehn 5er-Blöcken). Über den Schlüssen wird die kodierte Mitteilung geschrieben (bei Bedarf auch die Mitteilung im Klartext, um vor Augen zu haben, was zu senden ist).

98815 59788 61804 63845 39839 90
31480 55149 78197 41813 02515 33110 29631 59804 91742 41817

Nun wird, wie im Konzept-Teil erwähnt, jede Ziffer der Nachricht mit der des Schlüssels modulo 10 addiert:

98815 59788 61804 63845 39839 90
31480 55149 78197 41813 02515 33110 29631 59804 91742 41817
29295 04827 39991 04658 31344 23110 29631 59804 91742 41817

Das Ergebnis (die unterste Zeile) wird an den gewünschten Empfänger gesendet, der es entschlüsselt.

Entschlüsselung und Invers Bearbeiten

Ich sagte, Absender und Empfänger tauschen Schlüssel aus, was impliziert, der Empfänger habe eine direkte Kopie vom Schlüssel des Absenders. Tatsächlich ist es zweckmäßig, wenn der Empfänger das sogenannte Invers des Schlüssels erhält, das sich direkt aus dem Schlüssel bilden lässt (er hat also keine anderen Informationen):

Schlüssel- und Inversziffern
Ziffer Invers
0 0
1 9
2 8
3 7
4 6
5 5
6 4
7 3
8 2
9 1

Das Invers des Schlüssels (unten) wäre somit:

31480 55149 78197 41813 02515 33110 29631 59804 91742 41817
79620 55961 32913 69297 08595 77990 81479 51206 19368 69293

Wird die erhaltende Nachricht mit dem Invers erneut ziffernweise modulo 10 addiert (wie bei der Verschlüsselung) kommt die ursprüngliche, kodierte Nachricht hervor:

79620 55961 32913 69297 08595 77990 81479 51206 19368 69293
29295 04827 39991 04658 31344 23110 29631 59804 91742 41817
98815 59788 61804 63845 39839 90000 00000 00000 00000 00000

Diese wird dekodiert, indem in der Kodierungstabelle nach dem ersten gültigen Symbol gesucht, dieses dann gestrichen wird, dann das zweite gesucht wird usw., bis das Ende (990) auftritt. Alles dahinter ist Padding (dazu später) und trägt keine Bedeutung für den Empfänger. Ich gehe das nochmal für die ersten Symbole der dekodierten Nachricht durch:

  • 9 existiert in der Kodierungstabelle nicht, daher wird 98 gesucht
  • 98 auch nicht, also wird 988 gesucht
  • 988 hat die Bedeutung Soll ich...
  • 1 hat die Bedeutung T
  • 5 hat die Bedeutung E
  • 5 hat die Bedeutung E
  • 9 existiert nicht
  • 97 ist ein Leerzeichen
  • ...

Die Nachricht beginnt also mit Soll ich Tee, von einem Leerzeichen gefolgt. Dies wird fortgesetzt, bis 990 auftaucht.

Padding Bearbeiten

Jede übertragene Nachricht (im verschlüsselten Zustand) sollte die gleiche Länge in Ziffern haben. Dadurch ist einem passiven Angreifer nur die maximale Länge der Nachricht bekannt, nicht die tatsächliche Länge. Unter Umständen kann dies sehr wichtig sein:

Alice und Bob (so werden Sender und Empfänger oft als Personen genannt, um sperrige Formulierungen zu vermeiden) verabreden am Telefon "Sende mir bitte den Bahnhof, an dem wir uns Treffen, als OTP-Nachricht. Es ist der jeweilige Hauptbahnhof, wenn nicht anders angegeben". Natürlich ist das nicht toll, denn eigentlich sollte man auch diese Frage per One-Time-Pad stellen, aber wenn es nun Mal so kommt (weil eine*r die Regeln besser als der/die andere befolgt; die One-Time-Pads aufgebraucht waren und das Treffen völlig unabdingbar war, ...) besteht ein Problem. Angenommen, ein passiver Angreifer (von dem wir voraussetzen, dass er das Telefongespräch gehört hat) weiß, dass nur vier Bahnhöfe in Frage kommen:

  • Köln
  • Bonn
  • Düsseldorf
  • Bochum

und Bob sendet Alice die (hier in verschlüsselter Form angegebene, also bitte nicht versuchen, es zu dekodieren) Nachricht: 51067 22700

Nur Bochum hat, wenn man das Wort kodiert, 10 Ziffern! Dadurch muss der passive Angreifer die Nachricht gar nicht entschlüsseln, um zu verstehen, was Bob vermutlich mitgeteilt hat - und das ist ein schwerwiegendes Problem. Nun mag man einwenden, es würde doch ausreichen, etwas wie "Wir treffen uns in Köln" oder "Komm zum Bahnhof der Stadt Düsseldorf" zu senden, denn da das Format zu erkennen wäre nicht mehr so einfach, jedoch:

  • Gehen wir davon aus, der passive Angreifer habe unbegrenzte Rechenleistung; er kann also alle grammatikalisch denkbaren Formulierungen auflisten, vergleichen, und zumindest Tendenzen finden. Bereits das ist ein Mangel: Das Verfahren ist gescheitert, sobald der Angreifer (von externen Wissen1 abgesehen) einen der Orte gegenüber den anderen in ihrer Wahrscheinlichkeit bevorzugen kann.
  • Sollte es nicht von der Formulierung abhängen, ob das One-Time-Pad sicher ist. Jeder Text sollte gleichermaßen geschützt sein.

1 Mit externen Wissen ist gemeint, dass der Angreifer immer irgendwelche Kenntnisse hat. Wenn er weiß, dass Alice und Bob sich treffen, ist die Wahrscheinlichkeit, dass das Treffen in Köln ist, nun Mal höher, als dass es an der Antarktis oder auf der Internationalen Raumstation stattfindet. Das ist aber kein Versagen des One-Time-Pads sondern unvermeidlich. Es geht darum, dass die Tatsache, dass Alice und Bob kommunizieren, dem Angreifer gegenüber seinem Hintergrundwissen keinen Vorteil bietet.

Secret Sharing Bearbeiten

Angenommen, mehrere Personen sollen einen Schlüssel erhalten, um nur durch Kooperation eine Nachricht lesen zu können. Praktisch kann das nützlich sein, wenn man z. B. das Versteck eines Wertgegenstands anderen mitteilen will, ohne es einem Einzelnen anzuvertrauen (oder sicherstellen möchte, dass es nichts nützt, einem Einzelnen den Schlüssel zu stehlen). Hierfür kann Secret Sharing eingesetzt werden, bei dem eine beliebige Anzahl (mind. 2, danach steigt der Aufwand linear zu Anzahl beteiligter) von Shares erzeugt wird, die alleine nutzlos sind, und die Nachricht nur mit allen Shares zusammen ergibt.

Grundlage Bearbeiten

Wie beim One-Time-Pad kann das Secret Sharing zum leichteren Verständnis auf der Ebene einer einzelnen Ziffer betrachtet werden; bei richtigen Nachrichten wird es lediglich für alle übereinanderliegenden Ziffern einzeln angewendet.

Angenommen, Alice will Bob, Carol und Edward zusammen und nur im Falle der Koorperation die Ziffer 4 mitteilen. Dafür kann sie ihnen folgende Ziffern mitteilen (und zwar über eine schon anderweitig geschützte Verbindung wie One-Time-Pad oder persönliche Übergabe):

Alice' Shares
Teilnehmer Ziffer
Bob 7
Carol 6
Edward 1

Wie Alice auf diese Werte gekommen ist, wird noch thematisiert. Erstmal jedoch die wichtige Feststellung, dass (wieder Modulo 10) 7 + 6 + 1 = 4 gilt. Wenn Bob, Carol und Edward also kooperieren, können sie auf die von Alice bestimmte Ziffer 4 gelangen. Einer oder auch zwei alleine haben dagegen keine Möglichkeit, irgendetwas über die Ziffer zu erfahren. Alleine hat etwa Bob die Gleichung 7 + n1 + n2 = x vor sich, für die es keine nützliche Lösung gibt. Carol und Edward könnten alle möglichen Ziffern haben, die alle möglichen Summen (modulo 10) bilden, und es gibt keine Anhaltspunkte.

Praktische Anwendung Bearbeiten

Angenommen, Alice hat eine Nachricht für Bob, Carol und Edward formuliert, und diese sollen nur durch Kooperation die Möglichkeit haben, sie zu lesen. Vielleicht hat sie (ich äußere mich hier nicht über den Sinn und Unsinn dahinter, aber mir fällt schwer, ein allzu anschauliches und neutrales Beispiel zu finden) Bargeld an einem Ort versteckt und möchte, dass die drei anderen nur an diesen Ort können, wenn sie sich gemeinsam darauf geeinigt haben, dass es einen notwendigen Grund dafür gibt:

ATTRAPPE EINER COLA-DOSE;HORGAU REICHENBACHGRABEN ORTHOGONALE VERZWEIGUNG BEI BAHNHOFSTRAẞE

21142 90905 97563 54979 60898 72828 97598 48589 48429 19745 68153 80281 84428 05397 89418 58984 89328 75979 25494 93568 49138 49780 56978 02853 85898 37142 95599 00000

Nun sollen diese Ziffern in einer Art und Weise aufgeteilt werden, dass ausschließlich die Kooperation die kodierte Nachricht hervorbringen. Wegen des großen Umfang von 28 Blöcken betrachte ich nur die ersten 5. Alice erzeugt zufällige Schlüssel mit der Länge der Nachricht (d. h. 28 Blöcke, 5 dargestellt), und zwar einen weniger als es Personen bzw. Instanzen in der Gruppe gibt, in diesem Fall also zwei, denn es sind drei Personen. Dann schreibt sie (natürlich auf wasserlösliches Papier oder andere rückstandslos zerstörbare Schreibmedien) ihre Nachricht und darunter die beiden Schlüssel:

21142 90905 97563 54979 60898
59805 84044 72443 56928 07164
17413 17444 80876 46725 60107

Nun addiert sie in jeder Spalte die Ziffern modulo 10. Das geht genauso wie bei zwei Ziffern, und es können auch gedanklich zwei Ziffern so addiert werden, und zum Ergebnis erst die dritte.

21142 90905 97563 54979 60898
59805 84044 72443 56928 07164
17413 17444 80876 46725 60107
87350 81383 49772 46512 27059

Anonymer Empfang Bearbeiten

Hinweis

Dieser Abschnitt bezieht sich auf One-Time-Codes und One-Time-Pads

Anonymer Empfang muss nicht zwangsläufig die Funktion haben, dass Sender und Empfänger sich gegenseitig nicht kennen; es kann auch schlicht Dritten gegenüber verschleiern, wer mit wem kommuniziert. Die einfachste Form des anonymen Empfangs ist die Veröffentlichung des Codes bzw. der verschlüsselten Nachricht. Da die Bedeutung sich nur für den Empfänger erschließt, aber jeder Zugang zur Nachricht hat, lässt sich nicht feststellen, für wen die Nachricht bestimmt war. Problematisch ist, dass solche Veröffentlichungen als Spam oder Anlass für allerlei Spekulationen wahrgenommen werden können.

(Steganografie) Bearbeiten

Hinweis

Dieser Abschnitt befindet sich im Aufbau, und wird ggf. in ein eigenes Wikibook ausgelagert

Steganografie bezeichnet das Verstecken von Nachrichten. Hier wird dafür gesorgt, dass die Übertragung verschlüsselter Daten nicht ersichtlich ist, indem unscheinbare Nachrichten versendet oder veröffentlicht werden. Die Daten werden vorher verschlüsselt, damit sich die Existenz der Steganografie schwerer bis gar nicht nachweisen lässt.

Haftungsausschluss Bearbeiten

Ich erkläre hiermit, dass ich diese Anleitung nach meinem besten Wissen verfasst habe, um der Allgemeinheit den Zugang zu starker, transparenter Kryptografie ohne Computer zu gewähren. Jegliche Übernahme von Haftung für entstandene Schäden durch das richtige oder falsche Befolgen dieser Anleitung weise ich jedoch ausdrücklich von mir; dies zählt insbesondere für Schäden bezüglich der Vertraulichkeit von Daten.