| Der 'Solitaire' Verschlüsselungsalgorithmus |
|
|
|
| Donnerstag, den 05. Februar 2009 um 23:06 Uhr |
|
In Neal Stephenson's Buch Cryptonomicon beschreibt die Figur Enoch Root einem anderen Charakter namens Randy Waterhouse ein Kryptosystem mit dem Code-Namen "Pontifex" und läßt später durchblicken, daß die Schritte des Algorithmus dafür gedacht sind, mittels eines einfachen Kartenspiels durchgeführt zu werden. Diese beiden Charaktere tauschen im weiteren einige verschlüsselte Botschaften mit Hilfe dieses Systems aus. Das System wird "Solitaire" genannt (im Buch ist "Pontifex" eine Code-Bezeichnung um zunächst geheimzuhalten, daß hier ein Kartenspiel angewandt wird), und ich habe es entworfen um es Agenten zu ermöglichen, verdeckt zu kommunizieren, ohne auf elektronische Geräte angewiesen zu sein, oder verräterische Werkzeuge mit sich herumzutragen. Ein Agent könnte in eine Situation kommen, in der er keinen Zugang zu einem Computer hat, oder er könnte verfolgt werden, wenn er Hilfsmittel besitzt, die der verdeckten Kommunikation dienen. Aber ein Kartenspiel ... wem tut das schon weh? Solitaire erhält seine Sicherheit durch die einem gemischten Kartenspiel eigene Zufälligkeit. Durch das hantieren mit diesem Kartenspiel kann ein Absender eine Reihe "zufälliger" Buchstaben erzeugen, die er dann mit seiner Botschaft kombiniert. Natürlich kann Solitaire auf einem Computer simuliert werden, aber es ist dafür ausgelegt, per Hand eingesetzt zu werden. Solitaire mag low-tech sein, aber seine Sicherheit ist dazu gedacht, high-tech zu sein. Ich habe Solitaire dafür entworfen, selbst den bestens ausgestatteten militärischen Gegnern mit den größten Computern und den cleversten Kryptanalytikern gegenüber sicher zu sein. Es gibt natürlich keine Garantie, daß nicht irgendjemand eine clevere Attacke gegen Solitaire findet (beobachtet diese Seite für Updates), aber der Algorithmus ist mit Sicherheit besser als jeder andere Papier-und-Stift Algorithmus, den ich je gesehen habe. Allerdings ist er nicht schnell. Es kann einen Abend dauern, eine halbwegs lange Botschaft zu ver- oder entschlüsseln. In David Kahn's Buch "Kahn on Codes" beschreibt er einen echten Papier-und-Stift Algorithmus, der von einem sowjetischen Spion benutzt wurde. Sowohl der sowjetische Algorithmus als auch Solitaire benötigen in etwa dieselbe Zeit, um eine Botschaft zu verschlüsseln: Den größten Teil eines Abends. Mit Solitaire verschlüsselnSolitaire ist eine Stromchiffrierung im Output-Feedback-Modus. Dies wird manchmal auch "Schlüsselgenerator" (KG in der U.S.-amerikanischen Militärsprache) genannt. Das grundlegende Prinzip ist es, daß Solitaire einen Strom von Zahlen zwischen 1 und 26 erzeugt, oft auch "Schlüsselstrom" genannt. Um zu verschlüsseln, werden dieselbe Anzahl von Schlüsselstrombuchstaben wie Klartextbuchstaben erzeugt. Dann werden sie modulo 26 zu den Klartextbuchstaben addiert, einer nach dem anderen, um den Chiffretext zu erhalten. (Keine Angst, ich werde "modulo" gleich erklären.) Um also, zum Beispiel, die erste Botschaft, die in Stephenson's Roman erwähnt ist, zu verschlüsseln, "DO NOT USE PC":
Wenn man damit wirklich gut ist, kann man lernen, Buchstaben im Kopf zu addieren und zählt einfach die Buchstaben von Schritt (1) und (2) zusammen. Es ist einfach sich zu merken, daß A+A=B, aber sich an T+Q=K zu erinnern, ist schwieriger. Entschlüsseln mit SolitaireDer Hintergedanke ist es, daß der Empfänger denselben Schlüsselstrom erzeugt, und dann die Schlüsselstrombuchstaben von den Chiffretextbuchstaben subtrahiert.
Wie man sieht, ist entschlüsseln dasselbe wie verschlüsseln, außer daß man den Schlüsselstrom von dem Chiffretext abzieht. Erzeugung der SchlüsselstrombuchstabenDies ist das Herzstück von Solitaire. Die obigen Beschreibungen von Ver- und Entschlüsselung funktionieren für jede Stromchiffrierung im Output-Feedback-Modus. Dieser Abschnitt beschreibt, wie Solitaire arbeitet. Solitaire generiert einen Schlüsselstrom mit Hilfe eines Kartenspiels. Man kann sich ein Kartenspiel mit 54 Karten (man denke an die Joker!) als eine 54-elementige Permutation vorstellen. Es gibt 54!, d.h. 2,31*10^71, mögliche Reihenfolgen der Karten in einem Spiel. Besser noch, es gibt 52 Karten in einem Spiel (ohne Joker) und 26 Buchstaben im Alphabet. Diese Art von Zufall ist einfach zu gut, um sie zu ignorieren. Um für Solitaire geeignet zu sein, muß ein Spiel die vollen 52 Karten plus 2 Joker besitzen. Die Joker müssen in irgendeiner Weise unterschiedlich sein. (Das ist die Regel. Das Spiel, das vor mir liegt während ich dies schreibe, hat Joker mit unterschiedlichen Farben: Einer ist schwarz, der andere rot.) Nenne den einen Joker A und den anderen B. Es gibt generell irgendein Element auf beiden Jokern das gleich ist, aber vielleicht in der Größe/Farbe verschieden. Nimm als Joker "B" den, bei dem es größer ist. In meinem Fall nenne ich den schwarzen Joker A, und den roten Joker B. Wenn es einfacher ist, kann man auch "A" und "B" auf die Karten schreiben, aber man muß das möglicherweise der Geheimpolizei erklären, falls man je erwischt wird. Um das Kartenspiel zu initialisieren, nimm das Spiel in die Hand, Bilder nach oben. Ordne dann die Karten in der ursprünglichen Reihenfolge, die den Schlüssel darstellt. (Ich gehe später auf den Schlüssel ein; er ist aber etwas anderes als der Schlüsselstrom.) Jetzt ist man soweit, eine Reihe von Schlüsselstrombuchstaben zu erzeugen. Dies ist Solitaire:
Das ist Solitaire. Man kann es benutzen, um soviele Schlüsselstromzahlen zu generieren, wie man braucht, und man wird eine pro Buchstabe des Klartextes brauchen. Führe einfach die Schritte 1 bis 6 einmal für jede Ausgabezahl durch ohne jedesmal erneut den Schlüssel neu einzustellen. Ich weiß, daß es regionale Unterschiede in Kartenspielen gibt, abhängig vom Land. Generell macht es keinen Unterschied, welche Reihenfolge man verwendet, oder wie man Karten zu Zahlen konvertiert. Worauf es ankommt ist, daß Absender und Empfänger sich auf die Regeln einigen. Wenn man nicht konsistent ist, kann man nicht kommunizieren. Den Schlüssel im Kartenspiel einstellenBevor man damit anfangen kann, Ausgabekarten zu erzeugen, muss man das Kartenspiel mit einem Schlüssel einstellen. Das ist wahrscheinlich der wichtigste Teil des ganzen Verfahrens und der, auf dem die gesamte Sicherheit beruht. Solitaire ist nur so sicher wie sein Schlüssel. Das heißt, die einfachste Möglichkeit, Solitaire zu knacken ist, sich zu überlegen, welchen Schlüssel die kommunizierenden Parteien verwenden. Wenn man keinen guten Schlüssel hat, macht das, was folgt, keinen Sinn. Hier sind einige Vorschläge zu Austausch von Schlüsseln.
BeispielausgabenHier sind einige beispielhafte Daten, um die eigene Solitaire-Fertigkeit zu schulen: Beispiel 1: Beginne mit einem nicht-verschlüsselten Spiel: Kreuz-As bis Kreuz-König, Karo-As bis Karo-König, Herz-As bis Herz-König, Pik-As bis Pik-König, Joker A, Joker B. (Man kann sich das vorstellen als 1 ... 52, A, B.) Die ersten beiden Ausgabekarten werden wie fologt erzeugt. Das Kartenspiel sieht am Anfang so aus:
Nach dem ersten Schritt (Der Joker A wird bewegt):
Nach dem zweiten Schritt (Joker B wird bewegt):
Nach dem dritten Schritt (dreifaches Abheben):
Nach dem vierten Schritt (Zählabheben):
Anmerkung zu Schritt vier: Die letzte Zahl nach Schritt drei ist eine 1, das bedeutet: Bewege eine Karte. Bedenke, dass die 1 bleibt, wo sie ist, also bewegt sich die oberste Karte (Joker B), nach unten vor die Karte 1. Der fünfte Schritt verändert das Kartenspiel nicht, sondern produziert eine Ausgabekarte. Die oberste Karte ist die 2, also zähle zwei Karten abwärts bis zur 4. Die erste Ausgabe von Solitaire ist also die 4. (Achtung: An dieser Stelle soll das Kartenspiel nicht verändert werden. Die 4 wird also nicht dem Kartenspiel entnommen, sondern diese Ausgabe wird irgendwo notiert.) Um die zweite Ausgabe zu erhalten, führe die fünf Schritte erneut durch: Schritt 1:
Schritt 2:
Schritt 3:
Schritt 4:
Anmerkung zu Schritt 4: Die letzte Karte nach Schritt 3 ist die 52,zähle also 52 Karten runter bis zur 51. Hebe die einzelne Karte (51) ab vom restlichen Kartenspiel (die 52 bleibt unten). Schritt 5 erzeugt die Ausgabe: Die erste Karte ist die 51. Zählt man 51 Karten runter, kommt man zur 49, und diese ist die zweite Ausgabekarte. (Wiederum gilt: Die Karte bleibt im Kartenspiel!) Die ersten zehn Ausgaben sind:
Die 53 wird natürlich übersprungen, aber ich habe sie zur Demonstration mit angegeben. Wenn der Klartext wie folgt lautet:
dann lautet der Chiffretext:
Beispiel 2: Benutze Methode 3, und den Schlüssel "FOO". Die ersten 15 Ausgabe sind:
Wenn der Klartext aus lauter "A"s besteht, lautet der Chiffretext:
Beispiel 3: Mit Methode 3 und dem Schlüssel "CRYPTONOMICON" wird die Botschaft "SOLITAIRE" verschlüsselt zu:
Denk daran, daß X verwendet werden, um die letzte 5er Gruppe aufzufüllen. Natürlich sollte man einen längeren Schlüssel verwenden. Diese Beispiele dienen nur Testzwecken. Es gibt weitere Beispiele auf dieser Website und man kann das Perl Script benutzen um weitere zu erstellen. Echte Sicherheit, nicht Sicherheit durch VerschleierungSolitaire wurde dafür entworfen sicher zu sein, selbst wenn der Gegner weiß, wie der Algorithmus funktioniert. Ich nehme an, daß "Cryptonomicon" ein Bestseller werden wird und daß es überall verfügbar sein wird. Ich gehe davon aus, daß die NSA und jede andere Person den Algorithmus studieren und danach Ausschau halten wird. Ich setze voraus, daß das einzige Geheimnis der Schlüssel sein wird. Deshalb ist es so wichtig, den Schlüssel geheim zu halten. Wenn Du ein Kartenspiel an einem versteckten Ort aufbewahrst, solltest Du davon ausgehen, daß der Gegner zumindest mit dem Gedanken spielt, Du könntest Solitaire benutzen. Wenn Du die Bridge-Kolumne in Deinem Bankschließfach hast, solltest Du mit ein paar fragenden Blicken rechnen. Ist irgendeine Gruppierung dafür bekannt, den Algorithmus zu verwenden, gehe davon aus, daß die Geheimpolizei eine Datenbank mit Bridge-Kolumnen besitzt, um sie bei Entschlüsselungsversuchen zu benutzen. Solitaire ist selbst dann stark, wenn Dein Gegner weiß, daß Du es benutzt, und ein einfaches Kartenspiel ist immer noch viel weniger verdächtig als eine Verschlüsselungssoftware, die auf Deinem PC läuft; aber der Algorithmus ist kein Ersatz für gesunden Menschenverstand. Bemerkungen zum Gebrauch
Sicherheitsanalyse
Weiterführende LiteraturIch empfehle Bruce Schneiers Buch, Angewandte Kryptographie (Addison-Wesley (Deutschland) GmbH, 1996) als Ausgangspunkt. Dann gibt es The Codebreakers, von David Kahn (Scribner, 1996). Danach existieren einige Bücher über Computerkryptographie und ein paar über manuelle Kryptographie. Es ist ein spannendes Gebiet, viel Spaß! Hinweise des ÜbersetzersDer 'Solitaire'-Verschlüsselungsalgorithmus wurde entwickelt von Bruce Schneier (Chief Security Technology Officer of BT), Version 1.2 vom 26.05.1999 Diese Seite steht in keiner Verbindung zu BT, diese Übersetzung ist nicht von BT abgesegnet worden, keine Haftung bei Übersetzungsfehlern, dies ist eine private Site, etc. pp. blah blah blah. LinksTest Vektoren - Perl - Ada - C (#1) - C (#2) - C++ - C++ GUI - C# - Delphi (#1) - Delphi (#2) - Erlang - Forth (#1) - Forth (#2) - Java - Javascript - K - Palm OS - Pascal - Perl CGI - Python (#1) - Python (#2) - Ruby - TCL Weitere Übersetzungen gibt es in Französisch von Fernandes Gilbert, und in Spanisch von Jesús Cea Avión. |






... Karten ...
... Karten ...