Zitat des Tages

Werbung

Lesenswert:

NachDenkSeiten - Die kritische Website

Einloggen

Wie funktioniert Verschlüsselung?

Schlüssel M

Eine Verschlüsselung macht einen Text (Buchstaben und /oder Zahlen) unlesbar, indem die einzelnen Zeichen durch andere Zeichen nach einem bestimmten System ersetzt werden. Dieses System nennt man "Schlüssel". Ganz einfache und geschichtlich frühe Schlüssel funktionierten durch einfache Verschiebungen im Alphabet. Verschiebt man die Buchstaben eines Satzes gegenüber dem Original um zwei Stellen nach rechts, so ergibt sich ein scheinbarer sinnloser Buchstabensalat:

Aus dem Satz:
ANGRIFF IM MORGENGRAUEN
wird so zum Beispiel:
CPITKHH KO OQTIGPITCWGP

Solche einfachen Verschiebe-Schlüssel lassen sich sehr schnell durch Ausprobieren herausfinden. Bei der Entschlüsselung helfen Kenntnisse über die verwendete Sprache, die darin verwendeten Wortlängen und schließlich die Buchstabenhäufigkeit.

Daher machten sich Generationen von mal mehr, mal minder begabten Erfindern daran, kompliziertere und immer schwerer zu knackende Verschlüsselungsverfahren zu erfinden. Bis weit ins 20. Jahrhundert hinein mussten die Leute, die einen Text ver- und entschlüsseln sollten, den gesamten Vorgang in mühsamer Handarbeit erledigen. Komplizierte Rechenverfahren schieden daher aus, oder waren nur für solche Nachrichten verwendbar, für die die allerhöchste Geheimhaltung bestehen bleiben sollte.

Bis zum Ersten Weltkrieg wurden militärische Nachrichten beispielsweise kaum verschlüsselt, sondern telegrafisch (drahtgebunden!) oder per Kurier /Melder weitergegeben. Eine Verschlüsselung erübrigte sich da meist, da beispielsweise für einen Kurier genügend Optionen bestanden, die Nachricht bei Gefahr zu vernichten. Mit der Verbreitung der Funktechnik allerdings änderte sich einiges schlagartig: denn den Funkverkehr konnte praktisch jeder abhören, der die passende Empfangseinrichtung besaß. Aber auch drahtgebundene Übertragungen konnten abgehört werden, wenn die Strecke auch nur an einem Punkt dem Gegner zugänglich war.

Zugleich stieg die Menge der zu übermittelnden Nachrichten rasant an. Da sich auch aus scheinbaren Belanglosigkeiten wichtige Informationen für den Gegner ergeben konnten, musste man alles, was über Funk zu übermitteln war, verschlüsseln.

Ich betrachte hier nur sehr wenige Verschlüsselungsverfahren und zeige, wie sie funktionieren. Die modernsten, computerbasierten Verfahren sind für das Nachvollziehen "von Hand" uninteressant. Als Tipp: ich habe eine sog. "Vigenère-Tabelle" vorbereitet, mit deren Hilfe ein Text von Hand schnell und recht simpel zu verschlüsseln ist. Die Tabelle findet Ihr zum Download hier: https://augederseele.de/index.php/download?download=4:vigenere-tabelle

Verschlüsselung mit einem Schlüsselwort

Nehmen wir an, wir wollen folgenden Text verschlüsseln:

Tante Frieda bringen wir morgen um die Ecke.

Dazu wählen wir einen Schlüssel aus:

Erbschleicher

Für eine Verschlüsselung müssen wir zunächst den Text in eine verschlüsselungsfähige Form bringen. Bei einem Verfahren "von Hand", d.h. mit Bleistift und Papier, müssen wir den Text auf einem Zettel für die Verschlüsselung vorbereiten. Wir ersetzen alle Umlaute durch zwei Buchstaben, also "ü" zu "ue" usw., das "ß" durch "ss". Punkte können wir ausschreiben oder durch ein "X" ersetzen. Wir entfernen schließlich alle Leerzeichen. Dort, wo zwei Wörter mißverständlich aneinander stoßen, ersetzen wir stattdessen das Leerzeichen durch ein "Z". Nun schreiben wir alle Ziffern aus. Jetzt sieht unser zu verschlüsselnder Text so aus:

TANTEFRIEDABRINGENWIRMORGENUMDIEECKE

Darunter setzen wir unseren Schlüssel, und wiederholen ihn solange, bis er genauso lang ist wie der zu verschlüsselnde Text:

TANTEFRIEDABRINGENWIRMORGENUMDIEECKE
ERBSCHLEICHERERBSCHLEICHERERBSCHLEIC

 Jetzt nehmen wir unsere Vigenère-Tabelle - druckt Euch das PDF aus, am Bildschirm ist es nicht so gut nachzuvollziehen!

 

In der obersten Zeile suchen wir unsere Klartext-Buchstaben, in der Spalte ganz links die Schlüsselbuchstaben, am Schnittpunkt der beiden steht der verschlüsselte Text. Beginnen wir mit "T" (gelbe Markierungen). Es ist der erste Buchstabe, also nehmen wir den ersten Buchstaben des Schlüssels "E". Den finden wir in der vierten Zeile. An der Kreuzung von Spalte "T" und Zeile "E" steht der Buchstabe "X". Das ist das erste Zeichen des verschlüsselten Textes.

Wir machen mit "A" weiter (rot markiert, zweiter Buchstabe). Daraus ergibt sich der verschlüsselte Text "R". Als nächstes dann "N" als dritten Buchstaben, blau markiert: es führt zur Verschlüsselung als "O".

Wir kommen dann schließlich zu folgendem verschlüsselten Text:

XROLGMCMMFHFIMEHWPDTVUQYKVRLNVKLPGSG

Die Entschlüsselung

Sie ist genauso einfach und kann mit derselben Tabelle vorgenommen werden. Wir gehen jetzt aber nicht vom Klartext aus, sondern vom Schlüssel. In der linken Spalte suchen wir daher als ersten Buchstaben das "E". Wir gehen in dieser Zeile nach rechts, bis wir auf das "X" treffen. Von dort nach oben, und wir kennen die Bedeutung des "X" = es ist das "T". Zweiter Buchstabe des Schlüssels ist das "R". In dieser Zeile suchen wir das "R" und werden sofort in Spalte "A" fündig.

Die Stärke dieses Verfahrens liegt in ihrer absoluten Einfachheit. Ihre Schwäche liegt in der Handhabung von längeren Texten, weil sich dann u.U. durch den dazu relativ kurzen Schlüsseltext die Muster wiederholen. Auch der begrenzte Zeichensatz erleichtert das Knacken. Und schließlich sind echte Worte als Schlüssel nur in begrenzter Auswahl verfügbar. Weiß man also, welche Sprache verwendet wird und wie lang der Schlüssel ist, kann ein halbwegs moderner Computer durch einfaches Ausprobieren eines Wörterbuchs die Verschlüsselung relativ leicht knacken. Auch, dass ein Buchstabe niemals in sich selbst verschlüsselt werden kann (ein "A" wird im Chiffrat nie zu "A"), gibt für die Entzifferung einen Ansatzpunkt. Es würde aber viel zu weit führen, das hier zu erklären, nur in Kürze: es stehen nicht mehr 26 Buchstaben, sondern nur 25 Werte zur Verfügung, was die Möglichkeiten mathematisch deutlich verringert.

Wie funktioniert das?

Text, Schlüssel und Ergebnis noch einmal zusammengefaßt:

TANTEFRIEDABRINGENWIRMORGENUMDIEECKE
ERBSCHLEICHERERBSCHLEICHERERBSCHLEIC
XROLGMCMMFHFIMEHWPDTVUQYKVRLNVKLPGSG

Jedem Buchstaben ist ein zwei- bis dreistelliger Zeichencode zugeordnet. Computer arbeiten ausschließlich mit diesen Darstellungen. Mit diesen Codes kann ich nicht nur Zeichen darstellen, sondern auch rechnen. Ich kann also zwei Buchstaben "addieren". In unserem Beispiel addiere ich also jeden Buchstaben des Klartextes mit dem korrespondierenden Buchstaben des Schlüssels, d.h. T + E = X. An anderer Stelle ergibt F + H = M. Aber auch I + E = M, und das zweimal!

Das versuche ich jetzt einmal nachvollziehbar mit diesem Screenshot aus MS Excel zu erklären:

In Zeile 30 steht mein Schlüssel, darunter die numerischen Werte der jeweiligen Zeichen. Darunter in Zeile 32 meine Nachricht, gefolgt von deren numerischen Werten. Ich addiere diese zwei Werte in Zeile 35 und erhalte einen dreistelligen Wert. Jetzt wird es ein wenig unverständlicher: diese Zeichen sind längst nicht mehr lesbar und stellen irgendwelche Symbole dar. Ich benötige aber die Zeichen A (65) bis Z (90). Nur diese Werte kann ich vernünftig lesen und von Hand aufschreiben.

Also ziehe ich in Spalte 37 von diesem Wert 65 (das A) ab. Liegt der Wert dann noch über 90, ziehe ich nochmals 26 ab - die Anzahl der Buchstaben in meinem Alphabet "A-Z". So gelange ich in der Summe auf Werte zwischen 65 und 90 - wie gewünscht. Ihr könnt das mit der Vigenère-Tabelle weiter oben sehr leicht prüfen - es stimmt! Für die Rückentschlüsselung vertausche ich einfach Addition und Subtraktion - vom Chiffrat ziehe ich den Schlüssel ab und erhalte den Klartext.

Statt der Zeichenwerte am PC kann ich sogar aus der Vigenère-Tabelle die Zeilen- und Spaltennummern von 0-25 für diesen Rechenweg entsprechend anwenden. Solange die Reihenfolge eingehalten ist, würden auch sechs- oder zehnstellige Zahlen funktionieren.

Einen Text "nicht knackbar" machen

Für den Heimgebrauch reicht dieses Verfahren gerade noch aus. Wir können dasselbe Verfahren aber noch in zwei Stufen sehr viel sicherer machen: a) die Verschlüsselung mit einem zufälligen Schlüssel, der genauso lang ist wie der Klartext und b) der Verzicht auf die Beschränkung des Zeichenvorrats A-Z, also die Verwendung von Sonderzeichen.

Ein zufälliger Schlüssel, der genauso lang ist wie der Ausgangstext, sollte alle Buchstaben des verwendeten Zeichenvorrats in gleichmäßiger Verteilung beinhalten.

TLSEE SWDRA QCLYL ROXOA SXAYE MUYYD PMBCS VFJEU RSRTM PTBOO WRSOB PFEUP ZUQXC TTNNA ELZJY KTZTS PYXIA FIGMV VGHLX OCKBE
HLGVT TSVNK ODQJR TUQCR GYWRB WRYDV VOHVG NUKTM OBVUR AYKVH KIOQX IINSP EMVFP MHXBC BDWSW LRRZB CYLSP HYZJX AHMWD XQDOO
LBKDF SFLIR PBMYU SYGOZ SXJGV WMWZD YOSSS UGJNC IIQST PCJGY PQAOR XWNUH HUZFT DSENA NTQZR CUZCA GPWAB FRPDE VYHLG WUUTV
HLOXK KSNOK WLAZQ LVQLS XPPII WAHVE UGPVP OLUSE WBECI QRCCH TJYGW ZJNIY VWVXQ MQFSL TVWSF TJBYT DYUBG XXRKX IPWNV OQDXW
VEDOZ LOMSU BMNRW UIQAK TQLBG GFHAW APWVD FHCPX TLCDN CELQA HBUIT SGXGZ BOBGD MLWHU QOUCJ UOTFC RSISV ZTJOO NQBFI XEEMN
UQDKH ZQRBP SZXOV IIVAG UETGO BPURA SDVBD CHQXB CHSQE FWZIN HXVVU XPTWE SRZUW SETIH YSCYT AFXWQ QEIOC MCOXD XWSCA MDJMK
JSSDE IULZH XBKOJ ZWXWY RNRGU MUWYT GUKCA UEZVC HYYSL ZKQXO XQSFZ XUDCN YLNMR TALMR VTIPZ JSQKA FFEHZ WZOVV DEGCO WSKBC
VKMTY JPJCQ BAOFO HJWJP LVTFP CYWCK SCWBN KZAQA DHCRW WVYJN QGMMU WXTFN JBSTE SUBZR YKKYC JXGWI RERXU DUGYD GEKSA EEJVS

Ich habe diese zufällig erzeugten Buchstaben in 5er Gruppen aufgeteilt, damit das Ganze besser handhabbar ist. Die Herstellung ist alles andere als kompliziert, die entsprechende Formel in Excel VBA lautet:

       Randomize
      k = Int((nHigh - nLow + 1) * Rnd + nLow)
      cLine = cLine + Chr(k)

wobei ich eine ganzzahlige Zufallszahl mit "Rnd" im Bereich von 65 (= A) bis 90 (= Z) erzeuge und das in das entsprechende Zeichen umwandle. Alle Zeichen werden aneinandergehängt und ergeben den Schlüssel. Ich kann ihn beliebig lang machen, bis die Länge der zu verschlüsselnden Nachricht erreicht ist. Dann nennt man das eine "Vernam-Chiffre". Mein Korrespondenzpartner braucht den Schlüssel natürlich auch - das dürfte der schwierigste Part der Verschlüsselung sein.

Sobald ich für jede Nachricht einen Schlüssel erzeuge und den nach Gebrauch sofort vernichte, spricht man von einem "One-Time-Pad". Ich habe zum Download ein PDF bereitgestellt, das auf einigen Seiten solche zufälligen Gruppen enthält: https://augederseele.de/index.php/download?download=5:one-time-pads

Eine Verschlüsselung, die mit einem nur ein einziges Mal verwendeten und korrekt erzeugten Schlüssel durchgeführt wird, ist bis heute nicht zu knacken! Angriffspunkte sind: der Schlüssel kommt in unbefugte Hände, der Schlüssel ist nicht zufällig (dazu gleich mehr), es werden Teile des Klartextes bekannt.

Zufällig oder nicht?

Sehen wir uns dieses One-Time-Pad an, so erscheinen die Buchstaben auf den ersten Blick zufällig verteilt. Allerdings ist es sehr wahrscheinlich, dass der Zufallszahlen-Generator von der verwendeten Software (hier: MS Excel) keine "echten" Zufallszahlen liefert. Dann könnten sich bestimmte Buchstabenmuster irgendwann im Text wiederholen. Den Schlüssel kann man aber erheblich "verstärken", wenn man die Zufallszahlen sehr langsam generiert und den Startwert des Zufallszahlengenerators von der Systemzeit abhängig macht. Ich habe aber noch eine weitere Methode: einfach den verwendeten Zeichenvorrat erhöhen!

Jetzt wird es unknackbar!

Druckbare Zeichen reichen bei einem Windows-PC vom ASCII-Code 32 (Leerzeichen) bis zium ASCII-Code 255 (ÿ, ein y mit zwei Pünktchen oberhalb). Das sind dann nicht nur 26 Möglichkeiten, einen Buchstaben zu verschlüsseln, sondern 224! Generiere ich den Schlüssel auch aus diesem Zeichenvorrat, steigen die Möglichkeiten nochmals enorm an. Der Witz dabei: ich kann diese Zeichen immer noch miteinander addieren und subtrahieren, die Rechenwege sind dieselben. Nur werde ich das nicht mehr von Hand machen können, weil viele dieser Zeichen einfach nicht mehr vernünftig les- und schreibbar sind.

Also mache ich das mit einem simplen VBA-Makro. Den Ausschnitt aus einer Excel-Mappe, die ich auch zum Download bereitstelle, seht Ihr hier:

(Erste Zeile = Quelltext, zweite Zeile = zufallsgenerierter Schlüssel, dritte Zeile = verschlüsselter Inhalt der ersten Zeile)

Ich habe dort das Beispiel von oben verwendet, allerdings kann ich jetzt wegen des viel größeren Zeichenvorrats auch auf das "Entsorgen" von Umlauten, Punkten und anderen Satzzeichen verzichten. (Aus technischen Gründen darf man keine Zeilenumbrüche verwenden und sollte sich auf "normale" Texte beschränken). Das sieht dann so aus:

(Vierte Zeile: automatisch entschlüsseltes Chiffrat, um Fehler sofort feststellen zu können)

Die Arbeitsschritte sind wie folgt:

  1. Schreibe Text in Zeile 1, Spalte 1
  2. Starte Makro.
  3. Es wird zunächst ein gleichlanger Schlüssel aus Zufallszahlen generiert. Jeder Aufruf des Makros liefert einen neuen, einzigartigen Schlüssel.
  4. Mit dem Schlüssel und der oben beschriebenen Addition wird der Text verschlüsselt.
  5. Erfolgskontrolle: der Schlüssel wird subtrahiert.

Habe ich Mathematiker unter meinen Lesern? Wieviel Möglichkeiten gäbe es, diesen 44 Zeichen langen Text mit einem 44 Zeichen langen Schlüssel bei 224 Möglichkeiten pro Zeichen zu verschlüsseln? Was wäre, wenn ich den verschlüsselten Text mit einem weiteren Schlüssel noch einmal verschlüssele - technisch funktioniert es, vergleiche mal folgendes Bild:

Ich habe das Chiffrat aus dem vorherigen Durchlauf einfach als Quelltext genommen (erste Zeile), noch einen neuen Schlüssel generiert (zweite Zeile) und damit erneut verschlüsselt. Das Ergebnis steht in der dritten Zeile. (Die Entschlüsselung funktioniert auch, ich habe die nur nicht mehr mit ins Bild genommen.)

Einen so erzeugten Text kann ich als Mail versenden. Das sendende und das empfangende System müssen aber denselben Zeichenvorrat besitzen, und die Mail darf unterwegs nicht irgendwie umkodiert werden. Am besten, ich packe das Chiffrat in eine Textdatei und hänge sie als ZIP-Datei an.

Weitere Möglichkeiten:

Ich kann den Text auf eine beliebige Binärdatei "addieren", z.B. auf ein Foto im JPEG-Format. Dann kann ich das mit anderen Fotos zusammen versenden, und mein kodierter Text fällt schon mal weniger auf als eine Textdatei mit "Zeichensalat". Ich kann den Text auch in eine Datei packen und sie mit der Endung ".DLL" in irgendeinem Verzeichnis auf dem Rechner aufbewahren - kein Mensch kennt die alle auswendig.

Und ich kann meine Nachricht auch per Funk verbreiten: jedes Zeichen hat einenASCII-Code, der von 32 bis 255 reicht. Ich fülle die vorn mit Nullen auf (032, 033, ... , 255), damit sie alle gleich lang sind, und dann kann ich meine Nachricht ganz offen - die ganze Welt kann mithören - über Kurzwelle verbreiten. Und das ist das Thema des nächsten Artikels: die Zahlensender (Zahlensender - öffentliches Geheimnis).

Spaß gehabt? Laßt mir einen Kommentar da.

Quellen und Nützliches

  1. https://de.wikipedia.org/wiki/Kryptographie
  2. https://de.wikipedia.org/wiki/One-Time-Pad
  3. https://de.wikipedia.org/wiki/Zufallszahlengenerator

Die Excel-Datei mit den dazu gehörenden Makros könnt Ihr Euch hier runterladen: https://augederseele.de/index.php/download?download=6:chiffrieren-mit-otp-und-234-zeichen

(Wenn Ihr Dateien mit Makros aus gut nachvollziehbaren Gründen nicht laden und schon gar nicht ausführen wollt, habe ich die Makros noch in einem PDF mit Anleitung hier bereitgestellt: https://augederseele.de/index.php/download?download=7:makros-fuer-die-verschluesselung-mit-excel . Eure Excel-Mappe braucht dann nur ein Arbeitsblatt mit dem Namen "CryptoRW", oder Ihr ändert das im Makro.)

Comments powered by CComment' target='_blank'>CComment