Archiv der Kategorie: Computerkram

Web-Fonts selber hosten

Schon seit einiger Zeit gibt es die Möglichkeit, mittels downloadbarer Schriften oder Web-Fonts auch andere als die installierten Systemschriften im Browser anzuzeigen. Spätestens seit CSS3 ist es über @font-face kein Problem mehr, statt der allgegenwärtigen Verdana mit den „attraktiv“, weil falsch rum stehenden Anführungszeichen auch vernünftige Schriften plattformübergreifend zu verwenden. Internet-Dienste wie Google Fonts machen es dem Web-Master leicht: Auf die Seite gehen, Schrift aussuchen, „Quick Use“ anklicken und den angezeigten Code in die eigene Webseite aufnehmen, fertig. Die Schrift wird dabei beim Anbieter (in diesem Fall Google) direkt gehostet, man braucht sich um nichts weiter mehr kümmern. Auch Blog- und andere Content-Management-Systeme wie z.B. WordPress machen Gebrauch von dieser Möglichkeit, so werden zum Beispiel beim aktuellen WordPress-Theme „Twenty Thirteen“, das auch hier Verwendung findet, die standardmäßig verwendeten Schriftarten Bitter und Source Sans Pro direkt von Google Fonts eingebunden.

Doch was, wenn man die Fonts lieber selbst unter Kontrolle haben auf dem eigenen Webspace hosten möchte?

Eigentlich ist das auch ganz einfach, doch der Teufel liegt im Detail und es gibt ein paar Fallstricke, die ich hier kurz dokumentieren möchte.

1. Schriftarten aussuchen und Lizenz prüfen

Der erste Schritt ist natürlich immer, sich erst einmal Gedanken zu machen, was man haben will und Schriften auszusuchen, die gut lesbar sind und zueinander passen. Bei der Auswahl von Schriften kann man viel falsch machen und man muss sich eigentlich eingehend mit Typographie beschäftigen, will man ein gutes Ergebnis erzielen. Für meine konkrete Anwendung wollte ich mich daher darauf beschränken, die im bereits erwähnten und hier verwendeten WordPress-Theme Twenty Thirteen benutzten Schriften nicht mehr von Google, sondern von meinem eigenen Webspace aus einzubinden.

Man sollte an dieser Stelle auch gleich die Lizenz, unter der die Schriftart steht, darauf prüfen, ob überhaupt erlaubt ist, den Font in eine Webseite einzubinden. Die bei Google Fonts oder auch FontSquirrel angebotenen Schriften stehen zumeist unter der SIL Open Font Licence, die das erlaubt.

2. Schriftart herunterladen

Als nächstes holt man sich den Font zunächst mal zu sich. Bei Google Fonts klickt man dazu auf der Seite zum Font auf den kleinen Runter-Pfeil ganz rechts, den man angesichts der Prominenz, mit der einem der Code zum Einbinden direkt von Google aus angeboten wird, auch mal übersieht. Auch beim schon erwähnten FontSquirrel kann man jede Menge freie Schriften finden und herunterladen.

3. Schrift fürs Web konvertieren

Üblicherweise bekommt man dabei ein ZIP mit ein paar TrueType- oder OTF-Dateien darin. Das Problem: Zur Einbindung in eine Webseite braucht man je nach Ziel-Browser eine WOFF-, EOT- oder SVG-Datei. Praktischerweise braucht man für die Konvertierung nicht mal eine Software zu installieren, sondern kann einen Web-Dienst wie den FontSquirrel Webfont Generator verwenden. Man lädt dort seine TTF- oder OTF-Dateien hoch und bekommt ein ZIP-Archiv mit den selben Fonts in WOFF, EOT, SVG und TTF zurück. Mit diesen Formaten kann man alle gängigen Browser in aktuellen und nicht mehr ganz so aktuellen Versionen bedienen. Beschränkt man sich auf die aktuellen Versionen, sollte das WOFF (Web Open Font Format) eigentlich schon reichen.

Man muss noch beachten, dass man bei einer Schrift, die in mehreren Stilen bzw Schriftschnitten (wie fett oder kursiv) vorliegt, auch alle die hochlädt, die man später auf der Webseite verwenden will. Tut man das nicht oder macht bei einem der folgenden Schritte einen Fehler, wird der Browser aus dem normalen Stil die anderen Stile selbst berechnen, was meistens zwar funktioniert, aber schlechter aussieht.

FontSquirrel legt praktischerweise zusätzlich zu den Schriftarten in allen benötigte Formaten auch noch eine stylesheet.css mit den passenden @font-face-Definitionen sowie HTML-Testseiten dazu.

4. Stylesheet anpassen

Die @font-face-Definitionen aus der stylesheet.css müssen entweder verlinkt oder in die eigene CSS-Datei eingebaut werden.

Bei WordPress kann man z.B. die @font-face-Definitionen in die style.css des verwendeten Themes an den Anfang stellen (unter Design – Editor).

Dabei sind aber noch kleine Anpassungen erforderlich, insbesondere, wenn eine Schrift mit mehreren Stilen importiert wurde. Das von FontSquirrel generierte CSS sieht beispielsweise so aus:

@font-face {
    font-family: 'bitterregular';
    src: url('bitter-regular-webfont.eot');
    src: url('bitter-regular-webfont.eot?#iefix') format('embedded-opentype'),
         url('bitter-regular-webfont.woff') format('woff'),
         url('bitter-regular-webfont.ttf') format('truetype'),
         url('bitter-regular-webfont.svg#bitterregular') format('svg');
    font-weight: normal;
    font-style: normal;

}

@font-face {
    font-family: 'bitteritalic';
    src: url('bitter-italic-webfont.eot');
    src: url('bitter-italic-webfont.eot?#iefix') format('embedded-opentype'),
         url('bitter-italic-webfont.woff') format('woff'),
         url('bitter-italic-webfont.ttf') format('truetype'),
         url('bitter-italic-webfont.svg#bitteritalic') format('svg');
    font-weight: normal;
    font-style: normal;

}

Hier wurde der selbe Font Bitter in zwei Varianten verwendet, aber in der generierten CSS wurden zwei getrennte Schriftarten daraus, die zudem noch unterschiedliche Namen haben. Die CSS sollte man also bei font-family, font-style (für kursive Schriften) und ggf. font-weight (für fette Schriften) wie folgt ändern (siehe Hervorhebung):

@font-face {
    font-family: 'Bitter';
    src: url('bitter-regular-webfont.eot');
    src: url('bitter-regular-webfont.eot?#iefix') format('embedded-opentype'),
         url('bitter-regular-webfont.woff') format('woff'),
         url('bitter-regular-webfont.ttf') format('truetype'),
         url('bitter-regular-webfont.svg#bitterregular') format('svg');
    font-weight: normal;
    font-style: normal;

}

@font-face {
    font-family: 'Bitter';
    src: url('bitter-italic-webfont.eot');
    src: url('bitter-italic-webfont.eot?#iefix') format('embedded-opentype'),
         url('bitter-italic-webfont.woff') format('woff'),
         url('bitter-italic-webfont.ttf') format('truetype'),
         url('bitter-italic-webfont.svg#bitteritalic') format('svg');
    font-weight: normal;
    font-style: italic;

}

Der Wert von font-style ist entweder „normal“ oder „italic“, bei font-weight setzt man üblicherweise entweder „normal“ oder „bold“. Wenn die Schrift auch in anderen Schriftstärken (Schriftgewichten) vorliegt, trägt man bei font-weight eine Zahl zwischen 100 und 900 ein. Natürlich müssen die Angaben zur Schriftdatei passen, sonst sieht das Ergebnis merkwürdig aus.

Wenn die Schriftdateien nicht im selben Verzeichnis wie die CSS liegen, muss außerdem noch die URL angepasst werden, beispielsweise so (anderes Beispiel mit fettem Schriftstil):

@font-face {
    font-family: 'Bitter';
    src: url('https://static.spontan-wild-und-kuchen.de/fonts/bitter-bold-webfont.eot');
    src: url('https://static.spontan-wild-und-kuchen.de/fonts/bitter-bold-webfont.eot?#iefix') format('embedded-opentype'),
         url('https://static.spontan-wild-und-kuchen.de/fonts/bitter-bold-webfont.woff') format('woff'),
         url('https://static.spontan-wild-und-kuchen.de/fonts/bitter-bold-webfont.ttf') format('truetype'),
         url('https://static.spontan-wild-und-kuchen.de/fonts/bitter-bold-webfont.svg#bitterbold') format('svg');
    font-weight: bold;
    font-style: normal;

}

Doch Vorsicht: Wenn die Schriftdateien nicht auf dem gleichen Server wie die Webseite liegen – eine andere Subdomain reicht schon! – ist vermutlich noch eine kleine Änderung an der Serverkonfiguration angesagt, wenn das ganze auch mit dem Firefox funktionieren soll.

5. Dateien hochladen

Dazu braucht man wohl nicht viel zu sagen, außer, dass der Ort natürlich der sein sollte, den man auch ins CSS geschrieben hat.

6. Serverkonfiguration prüfen

An dieser Stelle gilt es noch, die Serverkonfiguration zu prüfen, insbesondere wenn das Einbinden der Schrift noch nicht mit allen Browsern funktioniert. Insbesondere Firefox ist da etwas wählerisch und lädt standardmäßig Schriften nur vom selben Host, auf dem auch die Webseite liegt. Firefox lässt sich aber überreden, die Datei auch von woanders anzunehmen, wenn der Server im HTTP-Header Access-Control-Allow-Origin „*“ schickt. Es empfiehlt sich dann auch gleich, in der Konfiguration noch die MIME-Types für die Font-Dateien einzutragen. Sofern man keinen Direktzugriff auf die Serverkonfiguration hat (z.B. beim Webhoster) oder dort nichts ändern will, lässt sich das am einfachsten über eine .htaccess-Datei, die im selben Verzeichnis wie die Fonts zu liegen hat, erledigen. Dort steht dann (für Apache, den die meisten Hoster verwenden) folgendes drin:

AddType application/font-woff .woff
AddType application/x-font-ttf .ttf
AddType application/x-font-opentype .otf
<FilesMatch "\.(woff|ttf|otf|eot)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>

7. Für WordPress-User: Theme anpassen

Die Stylesheet-Änderungen aus Punkt 4 gehören wie schon geschrieben in die style.css des verwendeten Themes. Bei TwentyThirteen beispielsweise muss man nun noch dem Theme austreiben, doch den Link auf Google Fonts zu setzen. Das ist leider etwas versteckt in der functions.php in der Funktion twentythirteen_fonts_url(). Hier muss man dafür sorgen, dass diese Funktionen einen Leerstring zurückgibt, sonst baut WordPress einen <link>-Tag auf ein Google Fonts-Stylesheet ins HTML ein. Am einfachsten und am wenigstens destruktiv ist das, wen man an den entscheidenden zwei Stellen ein „on“ durch ein „off“ ersetzt:

…
   $source_sans_pro = _x( 'off', 'Source Sans Pro font: on or off', 'twentythirteen' );
…
   $bitter = _x( 'off', 'Bitter font: on or off', 'twentythirteen' );
…

8. Fertig

Die Web-Fonts können nun im CSS mit font-family verwendet werden.

Update

In den neuen Versionen von WordPress werden auch im Admin-Bereich Fonts von Google nachgeladen. Jegliches Nachladen von Google-Fonts in den Standard-Themes „Twenty Twelve“, „Twenty Thirteen“ und „Twenty Fourteen“ sowie im Admin-Bereich wird vom WordPress-Plugin „Disable Google Fonts“ unterbunden. Dieses Plugin schaltet die Google-Fonts aber einfach aus. Es ist dann keine Hilfe, wenn man in der Außendarstellung die Schriftarten weiter nutzen und selber hosten will.

Kryptographie, Teil 5: Moderne Blockchiffren

In den Teilen 1 bis 4 waren historische Verschlüsselungsverfahren bis hin schreibmaschinenartigen, mechanischen Rotormaschinen, die etwa ab den 1920er Jahren im Einsatz waren, Thema. Dabei wurde aufgezeigt, dass zwar die besprochenen Verfahren (bis auf das One-Time-Pad) nicht sicher sind, aber viele Grundsätze heute noch Gültigkeit haben.

Zunächst wurden zwar mechanische Verschlüsselungsapparate noch bis in die 1970 Jahre eingesetzt und sogar für sicher gehalten, nicht zuletzt, weil von den Briten lange geheim gehalten wurde, dass die Enigma-Verschlüsselung gebrochen war. Aber natürlich mussten mit Aufkommen der Computertechnik neue Methoden gefunden werden. So wurde in den 1970er Jahren bei IBM die Entwicklung von Verschlüsselungsverfahren gestartet. Ein wichtiges Zwischenergebnis waren die von IBM-Mitarbeiter Horst Feistel entwickelten Feistel-Netzwerke.

Feistel-Netzwerk
Feistel-Netzwerk

Bei einem Feistel-Netzwerk werden Blöcke von Bits über mehrere Runden hinweg nach folgendem Schema verschlüsselt: Zunächst wird eine Bitfolge in einen linken und rechten Halb-Block geteilt. Der rechte Halbblock wird direkt zum linken Halbblock der folgenden Runde. Außerdem dient der rechte Halbblock als Eingabe für eine Funktion, die vom Schlüssel und einem sogenannten Rundenschlüssel abhängt. Das Ergebnis dieser Funktion wird mit dem linken Halbblock exklusiv-oder-verknüpft und zum neuen rechten Halbblock. Diese Berechnung wird über mehrere Runden hinweg wiederholt. Die Rundenschlüssel sind für jede Runde verschieden und werden aus dem Schlüssel berechnet. Durch die Struktur des Netzwerks an sich ist sichergestellt, dass aus einem Geheimtext-Block mit Kenntnis des Schlüssels auch umgekehrt wieder der zugehörige Klartext-Block berechnet werden kann.

Ein Feistel-Netzwerk ist die Basis für den im Jahr 1976 veröffentlichen Data Encryption Standard (DES). Der DES-Algorithmus verschlüsselt Blöcke von 64 Bit Länge in 16 Runden mit Hilfe eines 56 Bit langen Schlüssels.

Die eigentliche Verschlüsselungsfunktion F (siehe Diagramm oben) ist etwas komplexer und basiert unter anderem auf einer fest definierten Substitution von Bitfolgen nach sogenannten S-Boxen, die in Abhängigkeit eines aus dem Schlüssel berechneten Rundenschlüssels ausgewählt werden. Eine genauere Beschreibung würde den Rahmen dieses Artikels sprengen, kann aber in der einschlägigen Literatur (siehe unten) oder auch im Wikipedia-Artikel zum Data Encrpytion Standard nachgelesen werden, denn wie alle guten Algorithmen ist auch der DES komplett offengelegt. Auch für die modernen Verfahren gilt nämlich selbstverständlich der Grundsatz, dass es keine Sicherheit durch Geheimhaltung des Verfahrens gibt („security through obscurity“), sondern dass nur der Schlüssel (und selbstverständlich der Klartext) geheim gehalten werden müssen.

Bei der Entwicklung war interessanterweise auch der heutzutage aus den Schlagzeilen bekannte US-Geheimdienst NSA beteiligt. Die NSA wollte eine kürzere Schlüssellänge, was ein Knacken der Verschlüsselung durch simples Ausprobieren aller möglichen Schlüssel („brute-force-Angriff“) natürlich vereinfacht. Aber abgesehen davon muss man davon ausgehen, dass die NSA nicht etwa versucht hat, durch Einflussnahme den Algorithmus zu schwächen. Vielmehr ist es so, dass die NSA bei den S-Boxen sogar die Resistenz gegen eine damals noch nicht öffentlich, wohl aber IBM und der NSA bekannte Art von Angriffen, der differentiellen Kryptanalyse, gesteigert hat.

NSA

DES gilt heute insbesondere wegen der für heutige Verhältnisse recht kurzen Schlüssellänge und der Weiterentwicklung der Technik nicht mehr als ausreichend sicher, allerdings wird die Variante „Triple-DES“ mit 112 Bit langen Schlüsseln noch stellenweise verwendet.

Der aktuelle Standard heißt AES, Advanced Encryption Standard. Der Algorithmus wurde 1998 unter dem Namen Rijndael (nach den Nachnamen seiner Entwickler Joan Daemen und Vincent Rijmen) entwickelt, setzte sich im Rahmen eines Wettbewerbs durch und wurde 2000 vom US National Institute of Standards and Technology (NIST). AES ist anders als DES kein Feistel-Netzwerk, sondern ein sogenanntes Substitutions-Permutations-Netzwerk. Der grundlegende Ablauf ist aber ähnlich: Es wird ein Block über mehrere Runden hinweg verschlüsselt und dabei S-Boxen (Substitution) und bei AES noch sogenannte P-Boxen (Permutation) verwendet.

AES verschlüsselt 128 Bit lange Blöcke, die Schlüssellänge beträgt 128, 192 oder 256 Bit und die Anzahl der Runden ist abhängig von der Schlüssellänge 10, 12 oder 14. Wie DES ist auch AES offengelegt, über einen langen Zeitraum hinweg von Wissenschaftlern öffentlich diskutiert, analysiert und für sicher befunden worden.

Da DES und AES jeweils Klartext-Blöcke verschlüsseln, spricht man auch von Blockchiffren. Streng genommen handelt es sich also dabei um eine monoalphabetische Substitution, nur dass nicht einzelne Zeichen (oder sagen wir 8 Bit-Blöcke), sondern längere Blöcke subsitutiert werden. Wird eine Blockchiffre so verwendet, spricht man vom ECB– oder Electronic-Codebook-Modus.

Tatsächlich ist es nun so, dass zwar statistische Angriffe, wie sie im zweiten und dritten Teil dieser Serie genannt wurden, zwar durch die längere Blockgröße (oder sagen wir das größere Alphabet) deutlich erschwert werden, aber je nach Klartext nicht völlig unmöglich gemacht werden. Insbesondere bei der Verschlüsselung von unkomprimierten Bilddateien werden Muster nur unzureichend verwischt, wie das Bildbeispiel bei Wikipedia eindrücklich zeigt.

Um diese Schwäche zu vermeiden, setzt man verkettete Verschlüsselungsmodi ein.

Cipher Block Chaining
Cipher Block Chaining

Vor der eigentlichen Verschlüsselung mit der Blockchiffre (also z.B. AES) wird der Klartext-Block mit dem vorhergehenden Geheimtext-Block exklusiv-oder-verknüpft. Da es beim ersten Block noch keinen vorhergehenden Geheimtext-Block gibt, wird stattdessen ein sogenannter Initialisierungsvektor verwendet, der als zusätzlicher Teil des Schlüssels aufgefasst werden kann. Diese Art der verketteten Verschlüsselung nennt man Cipher Block Chaining Mode oder kurz CBC.

Eine solche Verkettung kann auch auf andere Arten geschehen. Besondere Beachtung verdient dabei noch der Output Feedback Mode, kurz OFB.

Output Feedback
Output Feedback

Das Bemerkenswerte hier ist, dass der Klartext gar nicht mit der Blockchiffre verschlüsselt wird! Schaut man sich das Schema einmal genauer an, stellt man fest, dass der eigentliche Verschlüsselungsalgorithmus ausschließlich dazu benutzt wird, eine Pseudo-Zufallszahlenfolge zu erzeugen, die dann mit dem Klartext exklusiv-oder-verknüpft wird. Dieses Vorgehen sollte aus dem dritten und vierten Teil dieser Serie bekannt vorkommen: Aus einem kurzen Schlüssel wird ein langer erzeugt, die eigentliche Verschlüsselung ist dann im Stil eines One-Time-Pads. Im Gegensatz zum echten One-Time-Pad ist aber keine absolute Sicherheit gegeben, da die erzeugte Bit-Folge ja nicht echt zufällig, sondern nur pseudo-zufällig ist.

Beachtenswert ist auch, dass zum Entschlüsseln eines mit einer Blockchiffre im OFB-Modus verschlüsselten Textes die Entschlüsselung der Blockchiffre gar nicht benötigt wird, sondern nur die Verschlüsselung. Die Blockchiffre dient schließlich nur dazu, eine Zufalls-Bitfolge zu erzeugen, die den Schlüssel für die eigentliche Ver- bzw. Entschlüsselung bildet.

Eine kleine Abwandlung des OFB ist der Cipher Feedback Mode CFB.

Cipher Feedback
Cipher Feedback

Vergleichen wir die drei bisher gezeigten Feedback-Modi, so stellt man folgendes fest: Beim OFB und beim CFB kommt der Klartext gar nicht mit dem eigentlichen Chiffrieralgorithmus in Berührung. Der Chiffrieralgorithmus dient in diesen Fällen nur dazu, eine Zufallszahlenfolge zu erzeugen und braucht auch gar nicht zu entschlüsseln. Es kann also statt einer echten Blockchiffre auch eine andere Einwegfunktion verwendet werden.

Beim CBC und CFB wird der Geheimtext als Feedback benutzt. Dies ist dann entscheidend, wenn auf dem Weg vom Sender zum Empfänger Datenblöcke verloren gehen. Beim OFB muss der Empfänger genau wissen, der wievielte Block gerade entschlüsselt werden soll. Beim CBC und CFB reicht es aus, den vorausgegangenen Geheimtextblock zu kennen, um ab diesem Punkt die Nachricht weiter entschlüsseln zu können.

Als letztes betrachten wir noch den Counter Mode (CTR).

Counter
Counter

Statt eines Feedbacks wird dem Initialisierungsvektor (Nonce) lediglich ein Zähler hinzugefügt, aber wie beim CFB und OFB wird die Blockchiffre nur zur Erzeugung des eigentlichen Schlüssels verwendet. Der Vorteil gegenüber den anderen Verkettungsmodi besteht darin, dass alle Blöcke parallel verarbeitet werden können und entsprechend auch komplett unabhängig voneinander wieder dechiffriert werden können, wenn bekannt ist, um welchen Block es sich handelt.

Um den heutigen Artikel noch kurz zusammenzufassen: Die standardisierten Verschlüsselungsverfahren DES und der moderne AES sind sogenannte Blockchiffren, die Blöcke einer bestimmten Länge verschlüsseln und dafür mehrere Runden benötigen. Blockchiffren können entweder direkt blockweise im Electronic-Codebook-Modus verwendet werden, was aber nicht empfehlenswert ist, da Muster im Klartext ähnlich wie bei einer monoalphabetischen Chiffre nur unzureichend verwischt werden. Besser ist, einen verketteten Modus wie die hier gezeigten CBC, CFB, OFB oder CTR zu verwenden.

Die bisher gezeigten Verfahren haben alle die Eigenschaft, dass Sender und Empfänger einer verschlüsselten Nachricht vorher einen gemeinsamen Schlüssel getauscht haben müssen und nur mit Kenntnis des geheimen Schlüssels sowohl ver- als auch entschlüsselt werden kann. Wie man verschlüsselt kommunizieren kann, auch ohne dass man vorher persönlich einen Schlüssel ausgetauscht haben muss, werden wir in der nächsten Folge betrachten.

Quellen und weiterführende Literatur:

[1] Reinhard Wobst: “Abenteuer Kryptologie”

Spaß mit <img>

Das HTML-Tag <img> ist eine tolle Sache. Ohne es gäbe es keine Bilder auf Webseiten. In dem Tag gibt man die URL an, an der sich die anzuzeigende Bilddatei befindet. Meistens befindet sich das Bild auf dem selben Web-Server wie die Seite, aber nicht immer. Man kann sogar fremde Bilder auf eigene Seiten einbinden. Und genau dort beginnt der Spaß!

Triskel
Ein Triskel

Vor einigen Jahren, als ich noch Doktorand in Dublin war, habe ich mal für meine Forschung einen Algorithmus mit dem Namen Triskel geschrieben. Das Triskel (oder die Triskele) ist ein dreiteiliges Zeichen, dass sich in Irland vielfach findet, zum Beispiel an der steinzeitlichen Anlage in Newgrange. Später wurde es von den Kelten verwendet und noch später von Christen als Dreifaltigkeitssymbol gedeutet. Weil die Zahl 3 bei meinem Algorithmus eine Rolle spielt, habe ich den Namen gewählt und zur Illustration ein Bild (siehe oben) gezeichnet, das man immer noch auf meiner Homepage findet.

Das Triskel als keltisches Symbol erfreut sich auch als Avatar in einschlägigen Internetforen einer gewissen Beliebtheit. Und weil ein Teilnehmer eines französischsprachigen Forums mein Triskel wohl ganz gut fand, hat er es verwendet. Und zwar, indem er direkt das Bild von meiner Seite aus eingebunden hat, wie ich schon vor einiger Zeit in meinen Server-Logs gesehen haben. Da das <img>-Tag nun einmal so funktioniert wie es funktioniert, hat das auch ganz gut geklappt. Zumindest bis heute Abend. Heute Mittag sah das Forum jedenfalls noch so aus:

Screenshot: Französisches Rollenspiel-Forum mit von mir gezeichnetem Triskel
Screenshot: Französisches Rollenspiel-Forum mit von mir gezeichnetem Triskel

Bis jetzt hat mich das auch nicht weiter gestört. Heute habe ich aber mal wieder meine Logfiles durchgesehen und festgestellt, dass mein Triskel jetzt auch in einem Blog verwendet wird, das sich mit Esoterik und vor allem Tarot befasst.

Screenshot: Französisches Tarot-Blog mit meinem Triskel
Screenshot: Französisches Tarot-Blog mit meinem Triskel

Und jetzt war mir nach ein bisschen Spaß. 🙂 Die Gefahr, wenn man als Web-Autor ein Bild von einer fremden Seite einbindet, besteht offensichtlich darin, dass man diese Bilddatei nicht unter Kontrolle hat. Zum Beispiel könnte das Bild aus dem Netz genommen werden. Dann ist es weg. Aber das Bild könnte auch unter dem selben Namen mit etwas völlig anderem ersetzt werden. Und so hat man auf einmal einen Katzen-Avatar…

Screenshot: Foreneintrag mit Grumpy Cat-Avatar
Screenshot: Foreneintrag mit Grumpy Cat-Avatar

… oder Strauchratten-Content auf seiner Webseite.

Screenshot: Französisches Tarot-Blog mit Degu
Screenshot: Französisches Tarot-Blog mit Degu

Schlimmstenfalls kommen sogar kubanische Revolutionäre zu Besuch und zerschießen einem das Layout.

Estudio, Trabajo, Fusil (Studieren, Arbeiten, Schießen!)
Estudio, Trabajo, Fusil (Studieren, Arbeiten, Schießen!)

Und die Moral von der Geschicht: Fremde Bilder linkt man nicht! 🙂

Wer sich den aktuellen Zustand des Dramas anschauen will, schaue dort:

 

Computer benutzen und verstehen

We live in a society exquisitely dependent on science and technology, in which hardly anyone knows anything about science and technology. — Carl Sagan

Dieser Satz des amerikanischen Astronomen bringt es auf den Punkt: Die meisten Menschen verstehen zu wenig von den Dingen, von denen sie abhängen. Der Grund, warum ich dies, was ich ja eigentlich schon anlässich eines früheren Zitates des Tages angesprochen hatte, noch einmal aufzeigen will, ist nicht nur, dass es so wichtig ist, sondern auch ganz konkret, weil ich über einen Artikel eines anderen Blogs gestolpert bin: „Kids Can’t Use Computers… And This Is Why It Should Worry You“. (Danke an Anne Schüßler für den Link!)

Der Autor vertritt die These, dass selbst die Mitglieder der jungen Generation, von denen gemeinhin angenommen wird, dass sie sich mit Computern auskennen, das in Wahrheit nicht tun. Und das deckt sich auch mit meinen eigenen Beobachtungen. Die Notwendigkeit, sich im Detail mit seinem Arbeitsgerät zu befassen, ist heute in vielen Fällen schlicht nicht mehr da. Wir benutzen unsere Programme und gut is. Dass wir dabei oft nicht wissen, was dahinter vorgeht, ist nicht nur, aber am offenkundigsten dann ein Problem, wenn mal was nicht funktioniert. Der Autor greift auch auf, dass es leider nur zu oft gesellschaftlich akzeptiert ist, wenn man sich mit Wissenschaft und Technik nicht auskennt. Ein Problem, das schon anlässlich der Veröffentlichung von Schwanitz‘ Buch „Bildung. Alles, was man wissen muß“ diskutiert wurde, aber offenbar nicht mit nachhaltiger Wirkung.

Wer halbwegs Englisch versteht, sollte den Artikel unbedingt lesen. Wem das zu lang ist, der schaue sich wenigstens „I Fucking Love Science“ auf Facebook an.

Kryptographie, Teil 4: Enigma

Im dritten Teil der Serie über Kryptographie wurde unter anderem die Vigenère-Chiffre besprochen. Die große Gefahr und die Anfälligkeit dieses Algorithmus für Angriffe, bei denen ein Teil des Klartextets bekannt ist, begründeten sich durch die verhältnismäßig kurze Schlüssellänge. Bei der One-Time-Pad-Verschlüsselung wird das Problem dadurch umgangen, dass der Schlüssel genau so lang wie der Klartext gewählt wird. Bei allen damit verbundenen praktischen Problemen ist dies jedoch in den meisten Fällen kein anwendbares Verfahren.

Enigma
Detailaufnahme einer Enigma-Maschine mit Tastatur, Ausgabe-Lämpchen und Steckbrett

Ein Lösungsansatz ist der Versuch, vereinfacht gesprochen aus einem kurzen Schlüssel einen langen zu machen. Das One-Time-Pad ist deswegen sicher, weil eine lange Folge von Zufallswerten als Schlüssel dient. Ein praxistaugliches Verschlüsselungsverfahren nach diesem Prinzip muss also darauf basieren, aus einem kurzen Schlüssel eine lange Folge von Pseudo-Zufallszahlen zu generieren. Diese müssen sich deterministisch aus dem Schlüssel ergeben, sonst wäre auch mit Kenntnis des Schlüssels ein Dechiffrieren unmöglich.

Anfang des 20. Jahrhunderts gab es erste Entwicklungen, dieses Problem elektromechanisch zu lösen. Bei diesen elektrisch betriebenen Maschinen wurde über eine Schreibmaschinentastatur der Klartext eingegeben und über Lämpchen bei jedem Tastendruck der entsprechende Buchstabe des Geheimtexts angezeigt. Die Maschinen sind mit elektrisch betriebenen Walzen, sogenannten Rotoren, ausgestattet, die sich bei jedem Tastendruck weiter drehen, bei jeder Stellung eine andere Verdrahtung haben und somit für jeden Tastendruck eine andere Zuordnung von Klartext- zu Geheimtext-Buchstaben hervorrufen. In Abhängigkeit von der Stellung der Rotoren vor Beginn des Verschlüsselungsvorgangs ergibt sich bei diesen Rotormaschinen eine verschiedene, sehr lange Folge von unterschiedlichen Verdrahtungen. Aus einem kurzen Schlüssel, nämlich der Grundstellung der Rotoren, ergibt sich quasi eine Vigenère-Verschlüsselung mit einem sehr langen Schlüssel.

Engima
Zwei Varianten der Enigma-Maschine im Museum für Kommunikation in Frankfurt am Main

Eine Vertreterin dieser Klasse ist die 1918 entwickelte Enigma-Maschine, die ihre große Bekanntheit ihrer Verwendung durch die deutsche Wehrmacht, insbesondere der Marine, im 2. Weltkrieg verdankt. Die Enigma wurde in mehreren Varianten mit 3 oder 4 Rotoren und einer zusätzlichen Verwürfelung über die freie Verkabelung eines Steckbretts eingesetzt.

Schon bei der Ausführung mit 3 Rotoren erzeugt die Enigma eine Verschlüsselung, die sich erst nach über 17.000 Zeichen wiederholt. Dies stellt einen erheblichen Sicherheitsgewinn gegenüber einer simplen Vigenère-Chiffre dar. Dennoch konnte die Enigma-Verschlüsselung durch die Briten (nach Vorarbeit durch Polen) unter Führung des Mathematikers Alan Turing gebrochen werden.

Skulptur Alan Turings
Skulptur Alan Turings, Foto von Jon Callas, CC BY 2.0

Die Enigma hatte einige Schwächen, die für Angriffe ausgenutzt werden konnten. So wurde zum Beispiel niemals ein Klartext-Buchstabe im Geheimtext auf den selben Buchstaben abgebildet, also ein „A“ im Klartext wurde niemals ein „A“ im Geheimtext, ein „B“ niemals ein „B“, und so weiter. Was auf den ersten Blick wie eine gute Idee aussieht, ermöglicht in Wahrheit einen Angriff über eine sogenannte negative Mustersuche. Ist beispielsweise bekannt, dass das Wort „UBOOT“ irgendwo im Klartext stehen muss, kann man versuchen, die Stelle im Geheimtext zu bestimmten, an der dieses Wort steht. Man muss dazu wie im folgenden Beispiel nach Übereinstimmungen von Klartext- und Geheimtext-Buchstaben suchen und kann bestimmte Positionen ausschließen.

 Geheimtext: NVGOXUBNKSLTPT
Wahrscheinliches Wort: UBOOT
 UBOOT 
  UBOOT 
   UBOOT 
    UBOOT 
     UBOOT 
      UBOOT 
       UBOOT 
        UBOOT 
         UBOOT

Nur an den bestimmten Stellen, hier kursiv dargestellt, kann das Wort „UBOOT“ im Klartext stehen, an den anderen Stellen gibt es mindestens eine Übereinstimmung eines Klartext- mit einem Geheimtextbuchstaben, was bei der Konstruktion der Enigma aber nicht vorkommen kann.

Durch diese Schwachstelle allein kann die Verschlüsselung der Enigma noch nicht gebrochen werden, allerdings kann, wenn die Position eines Wortes erst einmal bekannt ist, mit anderen Angriffen fortgefahren werden, zum Beispiel mit der im 3. Teil gezeigten known-plaintext-Angriff. Dieser gestaltet sich immer noch schwieriger als bei Vigenère, da sich, wie schon gesagt, der Schlüssel erst nach über 17.000 Zeichen wiederholt, aber da die Erzeugung der Verschlüsselung über die Rotoren auch wieder bestimmten Gesetzmäßigkeiten unterliegt, konnte sich die Gruppe um Turing Schritt für Schritt zur Entschlüsselung vorarbeiten. Turing konstruierte zur vollständigen Entschlüsselung des Geheimtextes elektromechanische Maschinen, die einen Schlüsselraum systematisch durchsuchten. Diese Maschinen wurden wegen ihres charakteristischen Tickens auch als Turing-Bomben bezeichnet. Die Menge der auszuprobierenden Schlüssel konnte durch Analysen wie die eben beschrieben negative Mustersuche stark eingeschränkt werden, was ein effektives Brechen der Verschlüsselung erst ermöglichte.

Enigma mit drei Walzen
Detail einer Enigma-Maschine mit drei Rotoren

Übrigens wurden teilweise von den Allierten sogar gezielt Maßnahmen durchgeführt, um bestimmte Funksprüche auszulösen, die dann einen bekannten Klartext beinhalteten, der dann für Angriffe wie die oben beschriebenen ausgenutzt wurde. So wird berichtet, dass gezielt Leuchtbojen bombardiert wurden, um Funksprüche wie „Leuchttonne ist erloschen“ zu provozieren. [1] [2] Ein solches Vorgehen führt zu einem in der Kryptologie auch als chosen plaintext attack bezeichneten Angriff; also ein Angriff basierend auf durch den Angreifer ausgesuchten Klartext.

Doch was können wir aus diesen Betrachtungen über Rotormaschinen wie die Enigma für heute ableiten? Folgende Punkte haben nach wie vor Gültigkeit:

  • Viele Verschlüsselsalgorithmen basieren darauf, aus einem relativ kurzen Schlüssel eine lange Folge von Pseudo-Zufallszahlen zu erzeugen.
  • Nicht jede vermeintliche Verbesserung führt tatsächlich zu einer Erhöhung der Sicherheit, sondern manchmal sogar zu einer Verschlechterung.
  • Ein Verschlüsselungsalgorithmus ist schlecht, wenn es Angriffe gibt, die bedeutend effektiver sind als ein banales Ausprobieren aller möglichen Schlüssel. Gute Verschlüsselungsverfahren müssen gegen viele Arten von Angriffen resistent sein, darunter auch chosen plaintext attacks.

Wegen des zweiten Punktes gelten aktuelle Verschlüsselungsalgorithmen nur dann als sicher, wenn sie offengelegt sind und jahrelang von Wissenschaftlern auf mögliche Schwachstellen untersucht wurden.

In den kommenden Folgen werden wir uns neueren Verschlüsselungsverfahren der Gegenwart widmen.

Quellen und weiterführende Literatur:

[1] Reinhard Wobst: „Abenteuer Kryptologie“

[2] Friedrich L. Bauer: „Kryptologie : Methoden und Maximen“

 

Kryptographie, Teil 3: Vigenère und One-Time-Pad

In der vorherigen Folge haben wir uns zunächst mit Chiffren beschäftigt, bei denen die Buchstaben der Klartext-Nachricht nicht geändert, sondern lediglich anders angeordnet wurden: den Transpositionschiffren. Außerdem ging es um klassische Geheimschriften, bei denen die Buchstaben des Klartextes durch andere Zeichen ersetzt wurden: Substitutionschiffren.

Bei der Substitution, die bisher betrachtet wurde, handelt es sich um eine eingeschränkte Form: Jedes bestimmte Zeichen des Klartexts wird im Geheimtext stets durch das selbe Geheim-Zeichen ersetzt. Aus „A“ wird immer „C“, aus „B“ wird immer „D“ und so weiter. Man spricht daher von einer monoalphabetischen Substitution. Wie bereits besprochen, lässt sich eine solche Chiffre leicht durch eine statistische Analyse aushebeln.

Verschlüsselung
Ein verschlüsselter Rechner

Eine Verbesserung lässt sich nun dadurch erreichen, dass ein Klar-Zeichen nicht immer durch das gleiche, sondern durch verschiedene Geheim-Zeichen ersetzt wird. Man spricht dann von einer polyalphabetischen Substitution. Die einfachste Variante ist, häufig vorkommenden Buchstaben wie dem „E“ oder anderen Vokalen mehr als nur ein Geheimzeichen zuzuordnen und nach dem Zufallsprinzip mal das eine und mal das andere zu verwenden. Ziel ist es, eine all zu einfache statistische Analyse auszuhebeln. Dieses Verfahren wird homophone Chiffre genannt. Aber auch mit diesem Verfahren gibt es immer noch genügend Möglichkeiten, allein durch eine statistische Analyse des Geheimtextes den Klartext wiederherzustellen. Es gibt schließlich nicht nur eine Statistik über die Häufigkeit einzelner Buchstaben, man kann auch Buchstabenpaare, Besonderheiten am Wortanfang oder -ende und häufig vorkommende Worte oder Phrasen zur Analyse heranziehen.

Ein Weg, der etwas mehr bringt, ist in Abhängigkeit von der Position eines Klartextzeichens jeweils ein anderes Geheimtextzeichen zu verwenden. Beim Vigenère-Verfahren, benannt nach Blaise de Vigenère (1523–1596), wird in Abhängigkeit eines Passworts für jeden Buchstaben des Klartexts eine andere Caesar-Chiffre verwendet. Ist der Klartext länger als das Passwort, wird das Passwort wiederholt. Am deutlichsten wird das anhand eines Beispiels:

Klartext:   UND DAS WAR ES WORUEBER SIE SPRACHEN
Passwort:   HANSHANSHANSHANSHANSHANSHANSHANSHANS
Geheimtext: COR LBW EBF MT PWSIXJFF AJS AQPTKISG

Zu jedem Klartext-Buchstaben wird beim Verschlüsseln sozusagen ein Buchstabe des Passworts addiert, zum Entschlüsseln geht man umgekehrt vor.

Besonders sicher ist dieser Algorithmus aber immer noch nicht. Der Geheimtext lässt sich nämlich immer noch statistisch analysieren. Ist erst einmal die Länge des Passworts bekannt, ist das sogar sehr leicht, denn dann folgen alle Zeichen, die mit dem selben Passwort-Buchstaben verschlüsselt wurden (im Beispiel also jeder vierte Buchstabe), wieder der selben charakteristischen Häufigkeitsverteilung. Die Länge des Passworts lässt sich durch andere statistische Verfahren, die hier aber nicht erklärt werden sollen (wer möchte, kann nachschlagen, zum Beispiel in dem bereits in der letzten Folge erwähnten Buch von Beutelspacher), oder ganz simpel durch Ausprobieren herausbekommen.

Ein anderer Angriff ist jedoch viel gefährlicher und führt einen Bösewicht, der eine verschlüsselte Nachricht abfangen will, auf einem viel schnelleren Weg zum Ziel. In der Praxis ist es nämlich oft so, dass einem Angreifer Teile des Klartextes schon bekannt sind. Vielleicht ist es der Name eines Ortes oder einer Person oder sonst irgendein Wort, das im Text vorkommt. Hält man sich noch einmal vor Augen, wie beim Vigenère-Verfahren der Geheimtext aus Klartext und Passwort berechnet wird, so wird klar, dass sich umgekehrt aus Geheim- und Klartext auch das Passwort trivial durch Subtraktion berechnen lässt. Im folgenden Beispiel sind die dem Angreifer bisher unbekannten Zeichen des Klartexts noch Fragezeichen, ein Wort und der dazugehörige Geheimtext sind ihm aber bekannt. Das Passwort kann dann an der fraglichen Stelle leicht zurückberechnet werden:

Klartext:   ??? ??? ??? ?? WORUEBER ??? ????????
Passwort:                  SHANSHAN 
Geheimtext: COR LBW EBF MT PWSIXJFF AJS AQPTKISG

Da das Passwort üblicherweise kürzer als der Klartext ist, kann man schon an der entscheidenen Stelle erkennen, dass es sich hier wiederholt. Ist dem Angreifer das Passwort erst einmal bekannt, kann er natürlich jetzt auch den Rest des Geheimtextes entziffern.

Diese Art des Angriffs, bei der dem Angreifer ein Teil des Klartexts bekannt ist, nennt man known plaintext attack. Im Gegensatz dazu heißt ein Angriff, bei dem nur der Geheimtext abgefangen wurde, known ciphertext attack oder auch ciphertext only attack. Bis hier können wir also zusammenfassen, dass sich die einfache monoalphabetische Codierung bereits mit einem known ciphertext-Angriff auf Basis von Statistik sehr leicht brechen lässt. Auch die Vigenère-Chiffre ist anfällig für einen solchen statistischen Angriff, wenn er auch etwas schwieriger durchzuführen ist. Bei einem known plaintext-Angriff dagegen bricht die Sicherheit beider Verfahren direkt zusammen.

Würde man eine Vigenère-Chiffre heutzutage einsetzen und dabei ganze Dateien verschlüsseln, haben wir übrigens geradezu trivialerweise eine known plaintext-Situation vorliegen: Dateien vieler bekannter Dateiformate starten mit sogenannten magic numbers oder sonstigen Zeichenfolgen, die die Art der Datei oder die Versionsnummer des Formats oder ähnliches beschreiben. Ist das Dateiformat der zu entschlüsselnden Datei bekannt, ist also sofort auch ein Teil des Klartextes bekannt und das Vigenère-Verfahren somit völlig wertlos.

Doch warum sind die bisher besprochenen Angriffe bei der Vigenère-Chiffre so gefährlich? Wie bereits erwähnt, besteht die Gefahr darin, dass das Passwort, also der Schlüssel, im Vergleich zum Klartext recht kurz ist und sich daher wiederholen muss. Nur durch die Wiederholung konnten die statistische Analyse und auch der oben gezeigte known plaintext-Angriff überhaupt erst erfolgreich sein: Ist der Schlüssel an einer Stelle berechnet, kann er an allen anderen Stellen eingesetzt werden.

Blaise de Vigenère
Blaise de Vigenère

Doch was wäre, wenn sich das Schlüsselwort nicht wiederholt, wenn also der Schlüssel genau so lang wie der Klartext ist?

In diesem Fall hätten wir durch unsere obigen Angriffe rein gar nichts gewonnen! Eine statistische Analyse wäre nicht möglich, da die einzelnen Zeichen im Geheimtext keiner Häufigkeitsverteilung mehr folgen und eine Zurückberechnung des Schlüsselworts an einer Stelle wie beim known plaintext-Angriff würde zu nichts führen, eben weil sich der Schlüssel ja nirgends wiederholt!

Auf diese Art wird aus dem unsicheren Vigenère-Algorithmus das einzige Verschlüsselungsverfahren, das wirklich unknackbar ist, was man sogar mathematisch beweisen kann: Das One-Time-Pad!

Damit die Sicherheit des One-Time-Pads gewährleistet ist, müssen aber einige Bedinungen erfüllt sein: Zunächst einmal muss der Schlüssel mindestens genau so lang wie der Klartext sein, damit an keiner Stelle eine Wiederholung auftritt. Der Schlüssel selbst sollte außerdem kein Wort oder natürlicher Text sein. Der Grund ist simpel: Die Buchstaben eines Textes folgen ja wie schon bereits besprochen einer statistischen Verteilung und die kann man für einen Angriff ausnutzen.

Der Schlüssel muss also zufällig erzeugt werden. Das ist gar nicht so leicht, wie es sich auf den ersten Blick anhört. Denn wie erzeugt man eine so große Menge an Zufallswerten? Wer etwas programmieren kann, könnte vielleicht auf die Idee kommen, den Zufallsgenerator des Computers in der favorisierten Programmiersprache zu benutzen. Aber Vorsicht: Die Zahlen, die dieser ausspuckt, sind alles andere als zufällig. Sie wiederholen sich irgendwann und folgen einem – wenn auch auf den ersten Blick schwer zu durchschauenden – Muster, sind also für ein Verschlüsselungsverfahren nicht geeignet. Der einzige Weg, echte Zufallszahlen zu erzeugen, ist, sich physikalische Effekte zu nutze zu machen. Man könnte zum Beispiel das Rauschen eines Wasserfalls aufnehmen.

Und der entscheidende Punkt ist: Der Schlüssel des One-Time-Pads darf nur ein einziges Mal verwendet werden! Daher kommt schließlich auch das „One Time“ im Namen des Algorithmus. Das Verfahren hat einen Einmalschlüssel.

Hat man endlich einen Schlüssel, der den Anforderungen entspricht, muss man diesen zu guter letzt noch vor der eigentlichen Kommunikation dem Gesprächspartner zukommen lassen. Das muss über einen sicheren Kanal geschehen, es muss absolut ausgeschlossen sein, dass ein Angreifer eine Kopie des Schlüssels anfertigen kann. Es führt also kein Weg daran vorbei, den Schlüssel vor Ort und persönlich zu übergeben.

Diese vier Anforderungen, die erfüllt sein müssen, um die Sicherheit zu gewährleisten, zeigen eines: Nachweisbar unknackbare Verschlüsselung ist zwar in der Theorie nicht kompliziert, aber in der Durchführung ausgesprochen unhandlich. Und das ist auch der Grund, warum die One-Time-Pad-Verschlüsselung im Internet so gut wie keine Rolle spielt: Sie ist in der Praxis kaum durchführbar. Es gibt allerdings Ausnahmen, nämlich im militärischen Hochsicherheitsbereich. So war zum Beispiel das „rote Telefon“ zwischen den USA und den UdSSR zu Zeiten des kalten Krieges mit einem One-Time-Pad gesichert.

Das grüne Telefon
Das rote Telefon (Abbildung ähnlich)

Trotz der bekannten Unsicherheiten des Vigenère-Verfahrens wurden übrigens Abwandlungen davon noch sehr lange eingesetzt, zum Beispiel Ende der 1990er-Jahre im populären Textverarbeitungsprogramm WordPerfect. Und wahrscheinlich gibt es auch heute noch die ein oder andere von Ahnungslosen geschriebene Software, die diese „Verschlüsselung“ nutzt. Natürlich gibt es heutzutage besseres, aber dazu kommen wir in einer der nächsten Folgen.

Die wichtigsten Punkte der heutigen Folge noch einmal zusammengefasst:

  • Es gibt sogenannte polyalphabetische Verschlüsselungen, zu denen das Vigenère-Verfahren gehört.
  • In der Praxis spielen known plaintext-Angriffe eine große Rolle.
  • Die Vigenère-Chiffre ist äußerst unsicher gegen known plaintext-Angriffe.
  • Das One-Time-Pad oder Einmalschlüssel-Verfahren ist das einzige beweisbar sichere Verfahren, aber in der Praxis nur schwer durchzuführen.

In den nächsten Folgen werden wir uns immer weiter in Richtung Gegenwart bewegen und dabei auch das interessante Thema der Verschlüsselung zu Zeiten des zweiten Weltkriegs betrachten.

 

Kryptographie, Teil 2: Griechisch-Römisch

Was bedeutet eigentlich Kryptographie? Das Wort kommt aus dem griechischen und bedeutet „geheim schreiben“. Geheimschriften im Schein der Lampe sind also angesagt. Schon die alten Griechen haben sich damit beschäftigt, wie man Nachrichten so verschlüsseln kann, dass ein Feind, dem diese Nachricht in die Hände fällt, nichts damit anfangen kann. Bei den alten Griechen soll auch dieser Artikel anfangen, denn tatsächlich sind einige Grundbegriffe und Prinzipien immer noch die selben, auch wenn sich selbstverständlich die Methoden bedeutend verändert haben.

Doch nun zu dem, was die alten Griechen seinerzeit getan haben, um geheim zu schreiben. Diese benutzten das älteste bekannte Verschlüsselungsinstrument: Die sogenannte „Skytale„. Eine Skytale ist letztlich nichts anderes als ein Stab, allerdings mit einem genau definierten Durchmesser. Auf diesen Stab wurde nun spiralförmig ein Pergamentstreifen aufgezogen. Auf den Streifen auf der Rolle wurde nun von links nach rechts der zu verschlüsselnde Text geschrieben, so dass auf jeder Streifenbahn jeweils ein Buchstabe des zu verschlüsselnden Textes stand. Die Abbildung illustriert eine solche Skytale, auf deren Pergament „Dieser Text …“ geschrieben wurde.

Skytale
Eine Skytale

Nimmt man nun den Streifen wieder von der Skytale ab, kann man den Text nicht mehr lesen, sondern sieht nur eine auf den ersten Blick unsinnige Buchstabenfolge, die von oben nach unten verläuft. Nur wenn der Streifen wieder auf eine Skytale mit genau dem selben Durchmesser aufgezogen wird, kann man die Nachricht wieder von links nach rechts ablesen. Schon kleinere Abweichungen führen dazu, dass zusammengehörige Buchstaben auf der Rolle nicht mehr nebeneinander stehen. Ein Versuch unter Verwendung neuzeitlicher Klopapierrollen als Skytale verdeutlicht das Prinzip: Rollen verschiedener Marken haben einen unterschiedlichen Durchmesser, mit Hakle kann man keinen Charmin-Code entschlüsseln und mit Zewa schon gar nicht. Der Durchmesser ist der Schlüssel!

Eine moderne Skytale
Eine Klopapierrolle neuzeitliche Skytale

Und damit haben wir auch schon gleich einen der Grundbegriffe genannt, nämlich eben diesen Schlüssel. Nur mit Kenntnis des Schlüssels können wir verschlüsseln und nur mit Kenntnis des Schlüssels können wir einen verschlüsselten Text, den Geheimtext also, entschlüsseln und wieder zurück in Klartext umwandeln.

Kryptosystem
Ein allgemeines Kryptosystem mit Klartext, Schlüssel und Geheimtext

Was genau hat man also jetzt mit der Verschlüsselung gewonnen? Die Skytale versetzte die alten Griechen in die Lage, Nachrichten über unsichere Kanäle auszutauschen. Fällt die übermittelte Nachricht dem Feind in die Hände, so kann dieser nichts damit anfangen, da er den Schlüssel nicht kennt. Anders als der Name vielleicht nahelegt braucht der Geheimtext, auch Kryptogramm genannt, nämlich gerade nicht geheim gehalten zu werden! Ebenso wenig geheim sollte das verwendete Verschlüsselungsverfahren sein. Man sollte als jemand, der Nachrichten verschlüsselt verschicken will, stets davon ausgehen, dass einem Angreifer das verwendete Verfahren bekannt ist oder dass es zumindest irgendwann bekannt wird. Fanden die Feinde der alten Griechen bei einem abgefangenen Reiter einen Pergamentstreifen, so konnten sie wohl wissen, dass es sich um einen mit einer Skytale verschlüsselten Geheimtext handelte. Ohne Kenntnis des Schlüssels nutzte ihnen das dennoch nichts. Dieser Grundsatz hat sich bis heute gehalten: Es gibt keine „security through obscurity“! Ein vernünftiges Kryptosystem darf seine Sicherheit nicht darauf aufbauen, dass das genaue Verfahren unbekannt ist.

Doch gehen wir erst mal wieder zurück in die Antike und schauen uns an, was wir da eigentlich gerade mit unserem Klartext gemacht haben und was es noch so gibt. So geheim haben wir doch eigentlich gar nicht geschrieben: Die Buchstaben im Geheimtext sind immer noch die selben, sie sind nur durch das Abrollen von der Skytale auf eine andere Position gerutscht. Man spricht also bei solchen Verfahren wie der Skytale von einer Transpositionschiffre: Die Buchstaben bleiben was sie sind, sie bleiben nur nicht, wo sie sind. Viel einfacher als mit einer Skytale kann man übrigens eine Transpositionschiffre auch aufbauen, indem man einen Klartext auf einem Blatt Papier einfach mal von oben nach unten aufschreibt und dann von links nach rechts überträgt. Genau das haben wir hier gemacht. Der Schlüssel ist dabei die Anzahl der Zeilen. Alles klar?

Adsrepdesaek
lisq,eir d n
seeu re FeSa
 Se kt iastd
stürleRhh re
irbtanärrwil
eaetp dericn

Aber nicht nur die Griechen, auch die Römer haben natürlich fleißig verschlüsselt. Und einem der bekanntesten Römer wird eins der bekanntesten und simpelsten Verschlüsselungsverfahren zugeschrieben.

Gaius Iulius Caesar
Büste von Gaius Iulius Caesar, Altes Museum Berlin

Beim Caesar-Code handelt es sich um eine Substitutionschiffre: Jeder Buchstabe wird durch einen anderen ersetzt! Beim original Caesar-Code wird einfach das Alphabet um drei Buchstaben verschoben: Aus A wird C, aus B wird D, aus C wird E und so weiter. Der schöne Satz von oben mit den Stricknadeln würde dann mit dieser Ersetzungstabelle verschlüsselt werden:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
C D E F G H I J K L M N O P Q R S T U V W X Y Z A B

Das Ergebnis lautet dann:

Cnu ukg fkg Uvtcuug wgdgtswgtvgp, mncrrgtgp
fkg Tcgfgt kjtgu Hcjttcfgt ykg Uvtkempcfgnp.

Natürlich ist man nicht gezwungen, diese Ersetzung genau so vorzunehmen, ist es ist auch möglich, die Buchstaben irgendwie anders zu tauschen oder gleich ganz andere Zeichen zu verwenden. Dann haben wir eine ganz klassische Geheimschrift. Der Schlüssel dieses Kryptosystems ist die jeweilige Ersetzungsvorschrift.

Geheimschrift
Eine Geheimschrift

Wirklich sicher ist das ganze aber nicht. Wenn man weiß, dass der meist verwendete Buchstabe das „E“ ist, kommt man schon recht schnell darauf, welchem Zeichen das wohl entsprechen muss. Überhaupt folgt jede Sprache einer ganz charakteristischen Buchstabenverteilung. Auch Buchstabenpaare wie „en“ am Wortende oder dergleichen kommen häufig vor und können zur Entschlüsselung ausgenutzt werden.

Bevor wir uns in der nächsten Folge etwas moderneren Verfahren zuwenden, seien hier noch einmal die wichtigsten Grundsätze zusammengefasst, die sich seit der Antike nicht geändert haben:

  • Ein Kryptosystem besteht aus dem Klartext, dem Geheimtext, dem Schlüssel und dem Verschlüsselungsverfahren.
  • Nur der Klartext und der Schlüssel sind geheim, das verwendete Verfahren nicht (keine „security through obscurity“).

Wer sich bis zur nächsten Folge weiterbilden will, dem sei das Buch „Kryptologie: eine Einführung in die Wissenschaft vom Verschlüsseln, Verbergen und Verheimlichen; ohne alle Geheimniskrämerei, aber nicht ohne hinterlistigen Schalk, dargestellt zum Nutzen und Ergötzen des allgemeinen Publikums“ von Albrecht Beutelspacher ans Herz gelegt.

Kryptographie, Teil 1

Verschlüsselte Kommunikation spielt heute eine große Rolle. Im Internet benutzen wir sie allerorten, oft ohne dass wir uns überhaupt Gedanken darüber machen und manchmal auch ohne dass wir uns dessen überhaupt bewusst sind. Im Homebanking-Bereich wird noch am ehesten für Jedermann sichtbar, wie wichtig verschlüsselte Kommunikation ist, denn niemand möchte seine Bankzugangsdaten der Gefahr des Missbrauchs aussetzen. Aber auch sonst sollten wir uns überlegen, ob es eine gute Idee ist, Passwörter über eine unsichere Verbindung zu übermitteln. Nicht zuletzt im aktuellen Kontext der Ausspähaffären ist gelegentlich von Verschlüsselung als einem Werkzeug des Schutzes gegen Abhören und Mitlesen die Rede. Dennoch beschäftigen sich nur sehr wenige Internetnutzer mit der Verschlüsselung von privater Kommunikation und noch sehr viel weniger haben ein Verständnis davon, was dabei eigentlich vor sich geht. Mit der kommenden Serie von Artikeln soll versucht werden, das zu ändern! Dabei sollen folgende Fragen beantwortet werden:

  • Was ist überhaupt Kryptographie?
  • Wie kann man die verschiedenen Verfahren grob einteilen und
    welche Bedeutung hat dies für die heutige Praxis?
  • Wie kann man sichere von unsicheren Verfahren
    auseinanderhalten und wo bestehen Angriffsmöglichkeiten?
  • Welche Verfahren und welche Software kann man konkret zum Schutz
    der Privatsphäre einsetzen?

Geraffel2w

Damit dabei der Spaß nicht zu kurz kommt, wird es auch ein kleines Rätsel und ein wenig historisches Hintergrundwissen geben. Mit letzterem soll es heute los gehen, ganz nebenbei werden dabei auch noch ein paar Grundbegriffe erklärt. Diese Artikelreihe basiert zum Teil auf einer Vorlesung, die ich im Rahmen der Erstsemesterveranstaltung „Einführung in die Wirtschaftsinformatik“ zuletzt im Wintersemester 2012/2013 gehalten habe sowie auf einer Seminararbeit, die ich 1998 verfasst habe, als mein Platz im Hörsaal noch auf der anderen Seite war.