Kapitel 3.5

Kapitel 3.5 Kapitel 3.5

www2.fh.rosenheim.de
von www2.fh.rosenheim.de Mehr von diesem Publisher
29.10.2013 Aufrufe

108 3 Codierung ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ 3.5 Verschlüsselung 3.5.1 Vorbemerkungen Definitionen Zu allen Zeiten strebte man danach, Informationen zuverlässig und vertraulich über unsichere Kanäle zu senden. Übermittelt beispielsweise Alice eine unverschlüsselte Nachricht an Bob, so könnte eine unbefugte Person, vielleicht Cleo (oft auch Mallory), diese Nachricht abfangen, mitlesen und eventuell auch verändern. Cleo könnte sogar eine erfundene Nachricht an Bob senden und vorgeben, Alice zu sein. Um den Nachrichtenaustausch sicherer zu gestalten, kann man Nachrichten verschlüsseln, d.h. so codieren, dass die darin enthaltene Information verborgen ist und dass die Decodierung ohne den Schlüssel sehr schwierig, im Idealfall sogar unmöglich ist. Das Verschlüsseln (Encipherment, Encryption) einer im Klartext gegebenen Nachricht x∈A* mit Alphabet A wird durch eine Funktion y=C(x,keyc) vermittelt, das Entschlüsseln (Decipherment, Decryption) durch eine Funktion x=D(y,keyd). Beim Verschlüsseln wird ein Schlüssel keyc verwendet, beim Entschlüsseln ein Schlüssel keyd. Sind die Schlüssel keyc und keyd identisch, so spricht man von einem symmetrischen Verschlüsselungsverfahren, andernfalls von einem asymmetrischen. Die effiziente Verschlüsselung und Entschlüsselung von Nachrichten ist das Aufgabengebiet der Kryptographie, die ein Teilbereich der Kryptologie ist (siehe [Bau00] und [Beu02]). Viele C-Programme zu diesem Thema findet man in [Schn96]. Zur Kryptologie rechnet man ferner die Steganographie, das ist die Technik des Verbergens der bloßen Existenz von Nachrichten durch technische oder linguistische Methoden. Eine abgefangene oder mitgehörte Nachricht zu entziffern (Kryptanalyse) oder zu verändern ist nicht ohne weiteres möglich. Man kann z.B. versuchen, durch eine Häufigkeitsanalyse den verschlüsselten Text zu entziffern, was jedoch bei modernen Verfahren praktisch unmöglich ist. Es ist aber zu bedenken, dass theoretisch zwar absolut sichere Verschlüsselungsmethoden (z.B. das Vernam-Verfahren) möglich, aber praktisch kaum einsetzbar sind. Man muss daher auf eine absolute Sicherheit verzichten und sich stattdessen mit einer praktischen Sicherheit zufrieden geben. Als größtes Sicherheitsrisiko verbleibt, dass Cleo von dem geheimen Schlüssel Kenntnis erhält und dadurch in der Lage wäre, geheime Nachrichten zu lesen und zu fälschen. Forderung an ein sicheres Kommunikationssystem Miteinander kommunizierende Partner werden also vier wesentliche Forderungen an ein sicheres System stellen: • Einem Unbefugten soll es nicht möglich sein, ausgetauschte Nachrichten zu entschlüsseln und mitzulesen (Geheimhaltung, Vertraulichkeit, Confidentiality). • Einem Unbefugten soll es nicht möglich sein, abgefangene Nachrichten zu verändern (Integrität, Integrity). • Sender und Empfänger wollen die Gewissheit über die Identität des Kommunikationspartners haben (Authentizität, Authenticity). • Die Art und Weise wie Schlüssel erzeugt, verwahrt, weitergegeben und wieder gelöscht werden, muss sicher sein (Key Management).

108 3 Codierung<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

<strong>3.5</strong> Verschlüsselung<br />

<strong>3.5</strong>.1 Vorbemerkungen<br />

Definitionen<br />

Zu allen Zeiten strebte man danach, Informationen zuverlässig und vertraulich über unsichere<br />

Kanäle zu senden. Übermittelt beispielsweise Alice eine unverschlüsselte Nachricht an<br />

Bob, so könnte eine unbefugte Person, vielleicht Cleo (oft auch Mallory), diese Nachricht<br />

abfangen, mitlesen und eventuell auch verändern. Cleo könnte sogar eine erfundene Nachricht<br />

an Bob senden und vorgeben, Alice zu sein. Um den Nachrichtenaustausch sicherer zu<br />

gestalten, kann man Nachrichten verschlüsseln, d.h. so codieren, dass die darin enthaltene<br />

Information verborgen ist und dass die Decodierung ohne den Schlüssel sehr schwierig, im<br />

Idealfall sogar unmöglich ist. Das Verschlüsseln (Encipherment, Encryption) einer im Klartext<br />

gegebenen Nachricht x∈A* mit Alphabet A wird durch eine Funktion y=C(x,keyc) vermittelt,<br />

das Entschlüsseln (Decipherment, Decryption) durch eine Funktion x=D(y,keyd). Beim Verschlüsseln<br />

wird ein Schlüssel keyc verwendet, beim Entschlüsseln ein Schlüssel keyd. Sind<br />

die Schlüssel keyc und keyd identisch, so spricht man von einem symmetrischen Verschlüsselungsverfahren,<br />

andernfalls von einem asymmetrischen. Die effiziente Verschlüsselung und<br />

Entschlüsselung von Nachrichten ist das Aufgabengebiet der Kryptographie, die ein Teilbereich<br />

der Kryptologie ist (siehe [Bau00] und [Beu02]). Viele C-Programme zu diesem Thema<br />

findet man in [Schn96]. Zur Kryptologie rechnet man ferner die Steganographie, das ist die<br />

Technik des Verbergens der bloßen Existenz von Nachrichten durch technische oder linguistische<br />

Methoden.<br />

Eine abgefangene oder mitgehörte Nachricht zu entziffern (Kryptanalyse) oder zu verändern<br />

ist nicht ohne weiteres möglich. Man kann z.B. versuchen, durch eine Häufigkeitsanalyse<br />

den verschlüsselten Text zu entziffern, was jedoch bei modernen Verfahren praktisch unmöglich<br />

ist. Es ist aber zu bedenken, dass theoretisch zwar absolut sichere Verschlüsselungsmethoden<br />

(z.B. das Vernam-Verfahren) möglich, aber praktisch kaum einsetzbar sind.<br />

Man muss daher auf eine absolute Sicherheit verzichten und sich stattdessen mit einer praktischen<br />

Sicherheit zufrieden geben. Als größtes Sicherheitsrisiko verbleibt, dass Cleo von<br />

dem geheimen Schlüssel Kenntnis erhält und dadurch in der Lage wäre, geheime Nachrichten<br />

zu lesen und zu fälschen.<br />

Forderung an ein sicheres Kommunikationssystem<br />

Miteinander kommunizierende Partner werden also vier wesentliche Forderungen an ein<br />

sicheres System stellen:<br />

• Einem Unbefugten soll es nicht möglich sein, ausgetauschte Nachrichten zu entschlüsseln<br />

und mitzulesen (Geheimhaltung, Vertraulichkeit, Confidentiality).<br />

• Einem Unbefugten soll es nicht möglich sein, abgefangene Nachrichten zu verändern (Integrität,<br />

Integrity).<br />

• Sender und Empfänger wollen die Gewissheit über die Identität des Kommunikationspartners<br />

haben (Authentizität, Authenticity).<br />

• Die Art und Weise wie Schlüssel erzeugt, verwahrt, weitergegeben und wieder gelöscht<br />

werden, muss sicher sein (Key Management).


3 Codierung 109<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

Anwendungsbereiche<br />

Mit der zunehmenden Bedeutung der Datenfernübertragung in Kommunikationsnetzen wird<br />

auch deren Sicherheit immer wichtiger. Ein Beispiel dafür ist die Abwicklung von Bankgeschäften<br />

oder die Bestellung und Bezahlung von Waren und Dienstleistungen in öffentlichen<br />

Netzen (E-Commerce). Verschlüsselungs-Protokolle sind daher auch Bestandteil des OSI-<br />

Schichtenmodells (von Open Systems Interconnection, siehe <strong>Kapitel</strong> 13.1.4) sowie anderer<br />

Kommunikations-Standards. Wichtig ist dabei der Schutz lokaler Netze, die an übergeordnete<br />

offene Netze (insbesondere das Internet) angeschlossen sind, vor unerwünschtem Zugriff<br />

von außen. Zu diesem Zweck werden Firewall-Systeme eingesetzt, die in einer Kombination<br />

aus Hardware und Software den Datenfluss zwischen lokalen Netzen und der Außenwelt<br />

kontrollieren und protokollieren. Zu erwähnen ist ferner die Bedeutung von Verschlüsselungssystemen<br />

im Zusammenhang mit den Anforderungen von Datenschutz (siehe Bundesdatenschutzgesetz<br />

<strong>Kapitel</strong> 8.3.7) und Datensicherheit (siehe <strong>Kapitel</strong> 8.3.8).<br />

Geheime und öffentliche Schlüssel<br />

Einige Möglichkeiten zur Verschlüsselung werden im Folgenden vorgestellt. Dabei wird, wie<br />

in Abb. <strong>3.5</strong>.1 erläutert, zwischen symmetrischen Verschlüsselungsverfahren mit geheimen<br />

Schlüsseln (Secret-Key Cryptosystems) und asymmetrischen Verfahren mit öffentlichen<br />

Schlüsseln (Public-Key Cryptosystems) unterschieden.<br />

Alice<br />

y=C(x,key)<br />

Cleo<br />

Unsicherer Kanal<br />

(Nachricht)<br />

Bob<br />

x=D(y,key)<br />

Sicherer Kanal (Schlüsselaustausch)<br />

Cleo<br />

symmetrisches<br />

Kryptosystem<br />

Alice<br />

y=C(x,keyc)<br />

Cleo<br />

Cleo<br />

Unsicherer Kanal<br />

(Nachricht)<br />

Öffentliches<br />

Schlüsselverzeichnis<br />

asymmetrisches<br />

Kryptosystem<br />

Bob<br />

x=D(y,keyd)<br />

Abbildung <strong>3.5</strong>.1:<br />

Links: Modell eines symmetrischen Kryptosystems. Alice verschlüsselt ihre Nachricht x mit dem Verfahren<br />

y=C(x,key) und sendet den verschlüsselten Text y über einen möglicherweise unsicheren Kanal<br />

an den Empfänger Bob. Dieser entschlüsselt mittels x=D(y,key) die Nachricht und erhält den Klartext<br />

x. Da ein unsicherer Kanal verwendet wird, könnte Cleo in den Besitz der verschlüsselten Nachricht<br />

gelangen. Ohne Kenntnis des Schlüssels key kann sie die Nachricht jedoch praktisch nicht entschlüsseln.<br />

Eine Entschlüsselung ist praktisch nur möglich, wenn es Cleo gelingen sollte, trotz der Verwendung<br />

eines sicheren Kanals den zwischen Alice und Bob ausgetauschten Schlüssel abzufangen.<br />

Rechts: Modell eines asymmetrischen Kryptosystems. Alice verschlüsselt ihre Nachricht x mit dem<br />

Verfahren y=C(x,keyc) und sendet den verschlüsselten Text y über einen möglicherweise unsicheren<br />

Kanal an den Empfänger Bob. Den zur Verschlüsselung für an Bob gerichtete Nachrichten zu verwendenden<br />

Schlüssel entnimmt Alice aus dem öffentlichen Schlüsselverzeichnis. Bob entschlüsselt<br />

unter Verwendung des nur ihm bekannten privaten Schlüssels keyd mittels x=D(y,keyd) die Nachricht<br />

und erhält den Klartext x. Auch hier kann Cleo ohne Kenntnis des Schlüssels eventuell abgefangene<br />

Nachricht praktisch nicht entschlüsseln. Da jedoch ein Schlüsselaustausch entfällt, kann Cleo kaum in<br />

den Besitz des Schlüssels privaten Schlüssels gelangen. Nicht ganz unproblematisch ist allerdings<br />

die Verwaltung der öffentlichen Schlüssel, auf die ja auch ein Angreifer uneingeschränkten Zugriff hat.


110 3 Codierung<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

Bei Verfahren mit geheimen Schlüsseln wird zum Verschlüsseln und zum Entschlüsseln derselbe<br />

Schlüssel verwendet; es handelt sich also um symmetrische Verfahren. Der Schwachpunkt<br />

ist dabei der Schlüsselaustausch, da n Partner, die miteinander kommunizieren wollen,<br />

sich zuvor unter Verwendung sicherer Kanäle über bis zu n(n-1)/2 geheime Schlüssel verständigen<br />

müssen. Für symmetrische Verfahren hat sich der 1977 entwickelte Data Encryption<br />

Standard (DES) durchgesetzt.<br />

Bei Verfahren mit öffentlichen Schlüsseln wird zum Verschlüsseln ein öffentlicher Schlüssel<br />

verwendet und zum Entschlüsseln ein davon verschiedener, privater Schlüssel. Es handelt<br />

sich dabei also um asymmetrische Verfahren, so dass der riskante Austausch geheimer<br />

Schlüssel entfällt. Als De-Facto-Standard hat sich das 1977 von Rivest, Shamir und Adleman<br />

[Riv78] beschriebene und nach ihnen benannte RSA-Verfahren durchgesetzt.<br />

<strong>3.5</strong>.2 Substitutions-Chiffren<br />

Eine sehr nahe liegende allgemeine Methode zur Verschlüsselung ist das Ersetzen von Zeichen<br />

des Klartextes durch Chiffre-Zeichen, die für gewöhnlich aus demselben Alphabet<br />

stammen. Man nennt solche Verschlüsselungsverfahren Tausch-Chiffren oder Substitutions-<br />

Chiffren. Beim Ersetzen einzelner Zeichen spricht man von einer monographischen, beim<br />

Ersetzen von Zeichengruppen von einer polygraphischen Substitution.<br />

Der Cäsar-Code<br />

Die einfachsten Substitutions-Chiffren sind Verschiebe-Chiffren. Ein Zeichen xi des n Zeichen<br />

umfassenden Alphabets A wird dabei nach folgender Vorschrift ersetzt:<br />

xi → x(i+d) mod n<br />

Der Index i läuft von 1 bis n und nummeriert die Zeichen des Alphabets, wobei der Index 0<br />

dem Index n entspricht. Der Schlüssel ist hier einfach eine Distanz d, die bestimmt, durch<br />

welchen Buchstaben das Zeichen xi zu ersetzen ist. Durch die Modulo-Division wird sichergestellt,<br />

dass die Ersetzung alle Zeichen des Alphabets erfassen kann, aber auf dieses beschränkt<br />

bleibt. Man kann die Schlüssel bzw. Distanzen auch durch dem verwendeten Alphabet<br />

entnommene Schlüsselzeichen ausdrücken. Im Falle des lateinischen Alphabets erhält<br />

man dementsprechend A für d=0, B für d=1 etc. Dieses Verfahren wurde mit d=3 bereits<br />

durch Gaius Julius Cäsar (100 bis 44 v. Chr.) für militärische Zwecke eingesetzt; es ist daher<br />

als Cäsar-Code bekannt.<br />

Beispiel<br />

Es werden nur die 26 Buchstaben des lateinischen Alphabets verwendet. Der Schlüssel sei<br />

d=12, entsprechend dem Buchstaben M. Interpunktionen und Zwischenräume bleiben unberücksichtigt.<br />

Zur besseren Übersichtlichkeit schreibt man den Klartext in Kleinbuchstaben<br />

und den verschlüsselten Geheimtext in Großbuchstaben. Aus dem Klartext „Legionen nach<br />

Rom!“ wird also unter Verwendung des dem Schlüsselzeichens M:<br />

Klartext: legionennachrom<br />

Geheimtext: XQSUAZQZZMOTDAY<br />

Kryptanalyse<br />

Einfache Substitutions-Chiffren wie der Cäsar-Code sind durch eine Häufigkeitsanalyse<br />

leicht zu entschlüsseln. Man muss zur Kryptanalyse nur für die empfangenen Zeichen einer<br />

(möglichst langen) verschlüsselten Nachricht deren Auftrittshäufigkeiten tabellieren und mit<br />

den für die jeweilige Sprache typischen Werten vergleichen. Bei dem obigen Beispiel tritt im<br />

chiffrierten Text der Buchstabe Z am häufigsten auf, nämlich drei mal. Die Buchstaben Q und


3 Codierung 111<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

A treten je zweimal auf. Für einen durchschnittlichen deutschen Text gelten folgende relative<br />

Häufigkeiten für das Auftreten der häufigsten Zeichen (siehe Kap. 2.5.2):<br />

we = 0.147, wn = 0.0884, wr = 0.0686, wi = 0.0638, ws = 0.0539, wt = 0.0473 etc.<br />

Man wird also in dem obigen Beispiel zunächst versuchen, Z mit E zu identifizieren und<br />

dementsprechend für den Schlüssel d=21 einsetzen. Dies ergibt jedoch keinen vernünftigen<br />

Klartext. Bereits die nächste sinnvolle Annahme, nämlich die Identifikation von Z mit N, führt<br />

aber schon zum korrekten Ergebnis d=12.<br />

Eine weitere Möglichkeit der kryptanalytischen Atacke ist das exhaustive Durchsuchen des<br />

gesamten Schlüsselraumes, d.h. des Ausprobierens aller prinzipiell möglichen Schlüssel. Im<br />

Falle von Cäsar-Codes können bei einem zu Grunde liegenden Alphabet mit 26 Zeichen ja<br />

nur 25 verschiedene Schlüssel existieren, so dass ein Knacken dieses Codes selbst per<br />

Hand sehr einfach ist.<br />

Eine für Cleo günstige Situation für einen kryptanalytischen Angriff ist der Known-Plaintext-<br />

Angriff, bei dem ihr zu einem abgefangenen Text auch der Klartext in die Hände fällt. Beim<br />

Cäsar-Codes genügt offenbar ein einziges verschlüsseltes Zeichen mit dem zugehörigen<br />

Klartextzeichen zur sofortigen Bestimmung des Schlüssels.<br />

Vigenère-Codes<br />

Um die Sicherheit der Substitutions-Verschlüsselung zu erhöhen, kann man längere<br />

mehrstellige Schlüssel einsetzen. Diese werden aus mehreren Teilschlüsseln d1,d2...dm zusammengesetzt<br />

und auf jeweils m benachbarte Zeichen angewendet.<br />

Beispiel<br />

Als Beispiel soll wieder der Text „Legionen nach Rom!“ verwendet werden. Als Schlüssel diene<br />

das Wort NEW, entsprechend den Distanzen d1=13, d2=4, d3=22, wobei die Zählung mit A=0<br />

beginnt. Bei der Verschlüsselung ergibt sich nacheinander l+N → Y, e+E → I, g+W → C, i+N<br />

→ V, o+E → S usw.<br />

Klartext: legionennachrom<br />

Schlüssel: NEWNEWNEWNEWNEW<br />

Geheimtext: YICVSJRRJNGDESI<br />

Die Verschlüsselung ist zwar etwas aufwendiger als im Falle des Cäsar-Codes, doch mit<br />

Hilfe des weiter unten tabellierten Vigenère-Tableau ohne große Mühe durchführbar.<br />

Der Kasiski-Test<br />

Zur Kryptanalyse von Texten, für welche ein Vigenère-Code vermutet wird, gilt es als erstes,<br />

die Schlüssellänge zu ermitteln. Eine einfache und effiziente Methode dazu ist der Kasiski-<br />

Test. Man nutzt dabei aus, dass für zwei identische Klartextzeichen auch die Geheimtextzeichen<br />

identisch sein müssen, wenn die zugehörigen Schlüsselzeichen gleich sind. Die Distanzen<br />

sich wiederholender Zeichen oder Zeichengruppen im Geheimtext sind daher mit<br />

hoher Wahrscheinlichkeit Vielfache der Schlüssellänge, die sich somit als die am häufigsten<br />

auftretende gemeinsame Primfaktor verschiedener Distanzen ergibt. Allerdings können Übereinstimmungen<br />

auch durch Zufall entstehen. Im obigen Beispiel YICVSJRRJNGDESI<br />

kommen die Zeichen I, S, J und R je zweimal vor. Die Distanzen dI=13, dS=9=3·3, dJ=3 und<br />

dR=1 legen die (hier korrekte) Schlüssellänge 3 nahe.<br />

Nun ordnet man den Geheimtext in Zeichengruppen mit der Schlüssellänge d an, hier also<br />

YIC VSJ RRJ NGD ESI. Die häufigsten Zeichen sind an zweiter Position S und an dritter Position<br />

J. Über die erste Position ist keine Aussage möglich. Immerhin kann man so das zweite<br />

oder dritte Schlüsselzeichen am ehesten mit dem häufigsten Klartextzeichen e identifizieren.


112 3 Codierung<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

Weitere statistische Aussagen sind hier jedoch nicht möglich und wegen der Kürze des Textes<br />

auch nicht zu erwarten.<br />

Tabelle <strong>3.5</strong>.1: Das Vigenère-Tableau.<br />

Mit Hilfe einer quadratischen Tabelle der Zeichen des verwendeten Alphabets lassen sich die Verschlüsselung<br />

und Entschlüsselung bequem per Hand durchführen. Aus dem Klartextzeichen c wird<br />

beispielsweise mit dem Schlüssel E gemäß der Zeile d=4 das Geheimtextzeichen G.<br />

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<br />

d =0 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<br />

1 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 A<br />

2 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<br />

3 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 C<br />

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

25 Z 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<br />

Die beschriebenen einfachen Verfahren sind heute nur noch zur Einführung in die Thematik<br />

von Interesse. Ihre frühere Bedeutung haben sie längst verloren, da sie heutzutage keine<br />

ausreichende Sicherheit mehr bieten.<br />

<strong>3.5</strong>.3 Transpositions-Chiffren und Enigma<br />

Definition von Transpositions-Chiffren<br />

Mehr Sicherheit als Verschiebe-Chiffren bieten die sog. Transpositions-Chiffren. Man versteht<br />

darunter Permutationen des Klartextes. Die Zeichen xi eines Alphabets A mit n Zeichen<br />

werden bei einer allgemeinen Permutation nach der Vorschrift<br />

xi → x(k·i+d) mod n<br />

auf Zeichen desselben Alphabets abgebildet. Dabei müssen der multiplikative Schlüssel k<br />

und der additive Schlüssel d beide kleiner als n sein. Außerdem dürfen n und k keine gemeinsamen<br />

Faktoren haben, der größte gemeinsamen Teiler ggT(k,n) muss also 1 sein. Im<br />

Folgenden wird auf diese Bedingung noch detaillierter eingegangen. Man sieht, dass der<br />

Cäsar-Code mit k=1 als ein Spezialfall in der Klasse der Transpositions-Chiffren enthalten ist.<br />

Ein weiterer Sonderfall liegt vor, wenn der additive Schlüssel d=0 ist; man spricht dann von<br />

Produkt-Chiffren.


3 Codierung 113<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

Da derartige Verfahren für den manuellen Gebrauch zu komplex und damit zu fehleranfällig<br />

sind, konnten sie sich erst mit der Verfügbarkeit elektromechanischer Verschlüsselungsautomaten<br />

durchsetzen.<br />

Die Funktionsweise von Enigma<br />

Das erste im großen Stil verwendete, auf Transpositions-Chiffren aufbauende Kryptosystem<br />

war das elektromechanische Verschlüsselungsgerät mit dem Namen Enigma (von Altgriechisch<br />

„Rätsel“) [Dew88]. Es diente der deutschen Wehrmacht im zweiten Weltkrieg insbesondere<br />

zur Kommunikation mit der U-Boot-Flotte. Mit Enigma konnten die 26 Buchstaben<br />

des lateinischen Alphabets verschlüsselt und entschlüsselt werden.<br />

Die Maschine bestand in ihrer ersten Variante aus zwei feststehenden Scheiben und drei<br />

beweglichen, auswechselbaren Zahnrädern, die über jeweils 26 Schleifkontakte miteinander<br />

verbunden waren. Die erste, feststehende Scheibe arbeitete als Transpositionsschlüssel;<br />

durch steckbare Kabel konnte eine beliebige Permutation eingestellt werden. Die Verdrahtung<br />

der drei beweglichen Zahnräder war dagegen fest, es konnten jedoch drei Räder aus<br />

einem Vorrat von fünf verschiedenen Rädern ausgewählt werden.<br />

+2 +1<br />

A<br />

B<br />

C<br />

D<br />

Permutator Rad1 Rad2 Rad3 Reflektor<br />

In dieser Stellung ergeben sich bei der<br />

Verschlüsselung und bei der Entschlüsselung<br />

die Zuordnungen:<br />

A→B, B→A, C→D, D→C<br />

A<br />

B<br />

C<br />

D<br />

Permutator Rad1 Rad2 Rad3 Reflektor<br />

Rad 1 wurde um zwei Positionen im Uhrzeigersinn bewegt<br />

und Rad 2 um eine Position. Die Stellung von Rad<br />

3 blieb unverändert. Jetzt ergeben sich die Zuordnungen:<br />

A→C, B→D, C→A, D→B<br />

Abbildung <strong>3.5</strong>.2: Enigma bestand aus einer feststehenden Permutator-Scheibe, drei drehbaren<br />

Zahnrädern und einer ebenfalls feststehenden Reflektor-Scheibe. In diesem vereinfachten Modell<br />

werden nur die vier Buchstaben A, B, C und D codiert. Links ist die Ausgangsstellung angegeben,<br />

daneben eine Stellung, in der Rad 1 um zwei Positionen und Rad 2 um eine Position weiterbewegt<br />

wurde.<br />

Jedes Zahnrad realisierte durch die interne Verkabelung eine umkehrbar eindeutige Abbildung<br />

auf das Alphabet {A, B, . . . Z}. Sowohl bei der Verschlüsselung als auch bei der Entschlüsselung<br />

wird das erste Zahnrad bei jedem Zeichen um eine Position weitergedreht.<br />

Nach 26 Schritten wird das zweite Rad um eine Position weitergedreht und nach 26 Schritten<br />

des zweiten Rades schließlich das dritte Rad. Insgesamt ergibt dies 26⋅26⋅26=17576 verschiedene<br />

Stellungen, entsprechend einem Code mit dieser Schlüssellänge. Die letzte<br />

Scheibe ist als Reflektor geschaltet, so dass der Signalfluss die Maschine zunächst in Vorwärtsrichtung<br />

und dann durch den Reflektor wieder zurück in der Gegenrichtung durchläuft.<br />

Wegen dieser Symmetrie kann in derselben Anordnung ein Text sowohl verschlüsselt als<br />

auch entschlüsselt werden; die Symmetrie bedingt aber auch, dass mit der Codierung x→y<br />

auch y→x gilt. Der für die Verschlüsselung und für die Entschlüsselung zu übermittelnde<br />

Schlüssel besteht also nur aus der Auswahl der drei Zahnräder und deren Anfangsstellung.<br />

Abbildung <strong>3.5</strong>.2 zeigt die Funktionsweise von Enigma.


114 3 Codierung<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

Zur Analyse des Codes ist für einen Angreifer der Besitz einer Enigma-Maschine von Vorteil,<br />

zumindest aber die Kenntnis der Verschaltung der feststehenden Scheiben und der Zahnräder.<br />

In den letzten Jahren des zweiten Weltkriegs ist den Engländern ein Exemplar der Enigma<br />

samt Bedienungsanleitung in die Hände gefallen. Unter Leitung von Alan Turing gelang es<br />

dann englischen Wissenschaftlern, den Enigma-Code zu brechen. Der U-Boot-Krieg war<br />

damit entschieden.<br />

Multiplikative Schlüssel<br />

Die Enigma-Verschlüsselung beruht im Wesentlichen auf den am Anfang dieses Abschnitts<br />

definierten Transpositions-Chiffren, die jetzt etwas genauer untersucht werden sollen. Während<br />

Verschiebungen, wie im vorigen <strong>Kapitel</strong> beschrieben, Schlüssel-Additionen entsprechen,<br />

benötigt man für allgemeine Transpositionen auch Produkte. Geht man von einem<br />

Alphabet A mit n Zeichen aus, so multipliziert man die Position eines Zeichens mit dem<br />

Schlüssel k und berechnet so Modulo n die Position des chiffrierten Zeichens. Durch die Modul-Arithmetik<br />

wird sichergestellt, dass die Abbildungen auf die zulässigen Zeichen des Alphabets<br />

A beschränkt bleiben, dass also die Position 0 wieder der Position n entspricht, die<br />

Position 1 der Position n+1 usw. Es zeigt sich jedoch, dass nicht beliebige Kombinationen<br />

aus Schlüssel k und Modul n zu einer eindeutigen Abbildung führt. Betrachtet man als Beispiel<br />

wieder die lateinischen Buchstaben mit n=26 und den multiplikativen Schlüssel k=4, so<br />

ergibt das die folgende Zuordnung von Klarzeichen zu Chiffre-Zeichen:<br />

Position: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26<br />

Klarzeichen: 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<br />

Chiffrezeichen: D H L P T X B F J N R V Z D H L P T X B F J N R V Z<br />

Offenbar wiederholt sich die Folge der verschlüsselten Zeichen ab dem unterstrichenen Zeichen<br />

D an Position 14. Diese Abbildung ist daher nicht eindeutig und somit für eine Verschlüsselung<br />

untauglich. Für eine brauchbare Kombination (k, n) muss man fordern, dass<br />

mit k⋅x = k⋅y mod n auch x = y mod n gilt. Damit ist gleich bedeutend, dass k und n teilerfremd<br />

sind, bzw. dass der größte gemeinsame Teiler ggT(k,n)=1 ist. Daraus folgt weiter, dass genau<br />

diejenigen Schlüssel k für eine Chiffrierung taugen, die eine modulare Inverse k -1 haben.<br />

Die Inverse k -1 einer Zahl k bezüglich der Multiplikation ist üblicherweise durch k⋅k -1 =<br />

1 definiert. In Analogie dazu definiert man die modulare Inverse durch k⋅k -1 mod n = 1.<br />

Für die oben probeweise als Schlüssel gewählte Zahl k=4 gilt 4⋅3 = 4⋅16 mod 26 = 12 aber<br />

offenbar nicht 3 = 16 mod 26, so dass also die obige Bedingung nicht erfüllt ist. Daraus folgt,<br />

dass k=4 nicht als Schlüssel geeignet ist. Man sieht auch sofort, dass der Schlüssel k=4 und<br />

der Modulus n=26 den gemeinsamen Teiler 2 haben, also nicht teilerfremd sind. Außerdem<br />

kann es keine bezüglich 26 modular Inverse zu k=4 geben, was sich schon daran erweist,<br />

dass die Gleichung 4⋅k -1 =1 mod 26 keine Lösung haben kann, weil 4⋅k -1 eine ungerade Zahl<br />

sein müsste, damit bei der Division durch 26 der Rest 1 verbleiben könnte. Da aber 4 gerade<br />

ist, ist dies auch 4⋅k -1 . Damit ist auch klar, dass für den Schlüssel k keine geraden Zahlen in<br />

Frage kommen und dass nur der Bereich 1


3 Codierung 115<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

Position: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26<br />

Klarzeichen: 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<br />

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

Kombination multiplikativer und additiver Schlüssel<br />

Durch Kombination von multiplikativen und additiven Schlüsseln ergeben sich effiziente Verschlüsselungsverfahren,<br />

wofür Enigma ein Beispiel gibt.<br />

Im einfachsten Fall kann man einen multiplikativen Schlüssel k mit einem additiven Schlüssel<br />

s verknüpfen, was jedoch mit n=26 keinen wirksamen Schutz bietet, da nur n⋅[φ(n)-1], hier<br />

also 26⋅11=286 Schlüsselkombinationen bestehen, so dass eine exhaustive Suche mit Computer-Hilfe<br />

kein Problem ist. Auch die Known-Plaintext-Attacke führt mit nur zwei bekannten<br />

Zeichen schon zum Ziel. Die Methode soll noch durch ein Beispiel verdeutlicht werden.<br />

Beispiel<br />

Alice wählt den multiplikativen Schlüssel k=7 und den additiven Schlüssel d=5. Die Verschlüsselung<br />

des Textes „liebling“ ergibt mit den n=26 lateinischen Buchstaben:<br />

Klartext: l i e b l i n g<br />

Multiplikation mit k=7: F K I N F K T W<br />

Verschiebung um d=5: K P N S K P Y B<br />

Zur Entschlüsselung wendet Bob die entsprechenden inversen Operationen an. Er subtrahiert<br />

also zunächst d=5 und müsste danach durch k=7 dividieren. Dieser Division entspricht<br />

die Multiplikation mit der modularen Inversen k -1 von k, nämlich k -1 =15. Offenbar ist 7⋅15 mod<br />

26 =105 mod 26 =1, so dass 15 tatsächlich die gesuchte Inverse ist. Bob rechnet also:<br />

Verschlüsselter Text: K P N S K P Y B<br />

Verschiebung um -d=-5: F K I N F K T W<br />

Multiplikation mit k -1 =15: l i e b l i n g<br />

Die Known-Plaintext-Attacke für Transpositions-Chiffren<br />

Verwendet man nur einen multiplikativen Schlüssel k und einen additiven Schlüssel d, so<br />

genügt für eine erfolgreiche Known-Plaintext-Attacke die Kenntnis von zwei Klartext-Zeichen<br />

mit den Positionen x1 und x2 und deren Chiffre-Zeichen mit den Positionen y1 und y2. Man<br />

erhält damit zwei Gleichungen mit den beiden Unbekannten k und s und rechnet folgendermaßen:<br />

Gegeben sind die beiden Gleichungen:<br />

y1 = (x1⋅k + d) mod n und y2 = (x2⋅k + d) mod n<br />

Im Folgenden sei angenommen, dass alle Rechnungen mod n erfolgen, so dass mod n weggelassen<br />

werden kann. Zunächst berechnet man nun den Schlüssel k:<br />

y1 - y2 = x1⋅k - x2⋅k = (x1 - x2⋅)⋅k also k = (y1 - y2) ⋅ (x1 - x2) -1<br />

Bei der Bildung der Differenzen (x1 - x2) und (y1 - y2) ist ggf. n zu addieren, damit diese im<br />

erlaubten Bereich von 1 bis n bleiben. Für d findet man dann mit dem schon bekannten k:<br />

d = y1 - x1⋅k


116 3 Codierung<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

Beispiel<br />

Greift man aus dem obigen Beispiel willkürlich b→S und i→P heraus, also x1=2, y1=19, x2=9<br />

und y2=16, so erhält man die beiden Gleichungen:<br />

y1 = x1⋅k + d → 19 = 2⋅k + d<br />

y2 = x2⋅k + d → 16 = 9⋅k + d<br />

Also: k = (19 - 16)⋅(2 - 9) -1 mod 26 = 3⋅(-7) -1 mod 26 = 3⋅19 -1 mod 26 = 3⋅11 mod 26 = 7<br />

Damit ist das richtige Ergebnis k=7 gefunden. Es war zu beachten, dass -7 äquivalent mit 26-<br />

7=19 ist und dass 11 die modular Inverse von 19 ist. Existiert keine Inverse, so führt direkte<br />

Division zum Ziel. Für den additiven Schlüssel d folgt nun sofort: d = 19 - 2⋅7 = 5.<br />

Der Euklid’sche ggT-Algorithmus und die Berechnung der modular Inversen<br />

Die bisherigen Ausführungen zeigen, dass für den Umgang mit Transpositions- bzw. Tausch-<br />

Chiffren zwei Operationen wesentlich sind:<br />

• man muss feststellen, ob zwei Zahlen teilerfremd sind<br />

• und man muss die modular Inverse bestimmen<br />

Beides ist mit dem Euklid’schen ggT-Algorithmus zur Bestimmung des größten gemeinsamen<br />

Teilers zweier natürlicher Zahlen n und k sehr effizient zu erledigen. Der Algorithmus<br />

lässt sich folgendermaßen rekursiv formulieren:<br />

ggT(n,k) = ggT(k, n mod k) für k>0<br />

ggT(n,0) = n<br />

Beispiel<br />

Der größte gemeinsame Teiler der Zahlen n=455 und k=20 ist zu ermitteln.<br />

ggT(455,20)=ggT(20,15)=ggT(15,5)=ggT(5,0)=5<br />

Explizit rechnet man: 455:20 = 22 (Rest 15), 20:15 = 1 (Rest 5), 15:5 = 3 (Rest 0)<br />

Die Zahlen k=20 und n=455 haben also den größten gemeinsamen Teiler 5 und sind damit<br />

nicht teilerfremd.<br />

Bei jedem Rechenschritt halbieren sich die Zahlenwerte der verbleibenden Reste ungefähr,<br />

so dass die Anzahl der Rechenschritte mit zunehmendem n nur sehr langsam ansteigt, nämlich<br />

in etwa wie log(n). Man sagt, die Komplexität des Algorithmus sei von der Ordnung<br />

log(n). Details zum Thema Komplexität folgen in <strong>Kapitel</strong> 10.2.<br />

Um die modular Inverse k -1 einer Zahl k zu ermitteln, geht man von der Definitionsgleichung<br />

k -1 ⋅k mod n = 1 aus. Man kann also k -1 aus der Gleichung k -1 =(n⋅i + 1)/k ermitteln, indem man<br />

die natürliche Zahl i mit 1 beginnend bis maximal n so lange erhöht, bis sich für k -1 schließlich<br />

eine ganzzahlige Lösung ergibt. Findet man keine Lösung, so besitzt k keine modular Inverse.<br />

Für k=7 und n=26 ermittelt man bereits mit i=4 die Lösung k -1 =(26⋅4+1)/7=105/7=15.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!