Kryptologie - praktische Anwendung ausgewählter Verfahren in JavaScript


Pre-University Paper, 2000

42 Pages, Grade: gut


Excerpt


Inhaltsverzeichnis

1 Klassische und moderne Kryptologie

2 Wissenschaft der Kryptologie
2.1 Terminologie
2.1.1 Kryptologie
2.1.2 Kryptographie und grundsätzliche Verschlüsselungsmethoden
2.1.3 Kryptoanalyse und ihre Angriffsmöglichkeiten
2.2 Kryptosysteme
2.2.1 Definition und Begriffe
2.2.2 Relativitätstheorie nach Shannon
2.2.3 Schwache Schlüssel eines Kryptosystems
2.2.4 Blockchiffrierung
2.2.5 Stromchiffrierung
2.2.6 Varianten

3 Symmetrische Kryptosysteme
3.1 Definition
3.2 Monographische Substitution nach G. J. Caesar
3.2.1 Geschichtlicher Hintergrund
3.2.2 Umsetzung der additiven Chiffre
3.2.3 affine Chiffren
3.2.4 Kryptoanalyse
3.3 polyalphabetische Chiffre nach Vigenère
3.3.1 Anwendung des Vigenère-Tableau
3.3.2 Varianten der Vigenère-Chiffrierung
3.3.4 Umsetzung in JavaScript
3.3.4 Kryptoanalyse nach Kasiski und Friedman
3.4 Transposition nach dem Vorbild der Griechen
3.4.1 Skytala von Sparta
3.4.2 Spalten- und Blocktransposition
3.4.3 Spaltentransposition in JavaScript
3.4.4 Mögliche Kryptoanalysemethoden

4 Asymmetrische Kryptosysteme
4.1 Entwicklung der Falltürfunktion
4.2 Aufbau und Eigenschaften
4.3 Verschlüsselung nach Rivest, Shamir und Adleman
4.2.1 Erste Kryptosysteme mit öffentlichen Schlüssel
4.2.2 Schlüsselerzeugung in JavaScript
4.3.3 Ver- und Entschlüsselung über eine Einwegfunktion
4.2.4 Eingeschränkte Sicherheit durch man-in-the-middle-Angriff
4.2.5 Praktische Anwendung und Hybridsysteme
4.2.6 Faktorisierungsproblem

5 Moderne Algorithmen und ihre Auswirkungen

6 Literatur- und Quellenverzeichnis:

8 Weiterführende Informationen im Internet

Anhang
A Quelltext Substitutionsalgorithmen
B Quelltext Transpositionsalgorithmen
C Quelltext RSA-Algorithmus

1 Klassische und moderne Kryptologie

Die ersten Verschlüsselungsverfahren entwickelten sich im 5. Jhd. vor Christus in Griechenland aufgrund der benötigten Sicherheit in Politik und Diplomatie. Ebenso gebrauchte Ceasar auf seinen Feldzügen ein System der Geheimhaltung, welches zwar simpel aber für die Zeit fortschrittlich war. Diese Sicherheit schätzte man auch im 2. Weltkrieg, welche den Deutschen durch die Chiffriermaschine ENIGMA (griechisch für Geheimnis) gewährleistet wurde und ihnen gegenüber den Briten lange Zeit einen kryptographischen Vorsprung gab. Einzig und allein die Verschlüsselung nach Ceasar, die als Grundidee für die ENIGMA diente, gab ihnen diesen Vorteil. Selbst in modernen Verfahren der Geheimhaltung werden klassische einbezogen und kombiniert. Um nun deren Funktionsweise verstehen zu können, sollte man sich auch für das Verständnis der kryptologischen Anfänge Zeit nehmen. Aus diesem Grunde werden im folgenden die wichtigsten klassischen Verfahren in der jungen Internetprogrammiersprache JavaScript realisiert und auch der Versuch unternommen, eine vereinfachte Form einer modernen Methode zu konzipieren und umzusetzen.

2 Wissenschaft der Kryptologie

2.1 Terminologie

2.1.1 Kryptologie

Die Wissenschaft der Kryptologie (von griech. kryptos: geheim und logos: Wort, Sinn) lässt sich heute in die drei Bereiche der Kryptographie, -analyse und Steganographie untergliedern.

Letzterer spielt eher eine Nebenrolle, da dessen Metier das bloße Verschleiern beziehungsweise Verstecken von Information darstellt. Dazu gehören Geheimtinten, die erst bei chemischer Behandlung erscheinen, ebenso wie digitale Wasserzeichen, die sich unsichtbar in einer Grafikdatei verbergen.[1]

2.1.2 Kryptographie und grundsätzliche Verschlüsselungsmethoden

Kryptographie (von griech. graphein: schreiben) benennt die Wissenschaft, die sich mit der Entwicklung von Kryptosystemen beschäftigt. Eine nicht abgesicherte Nachricht, der Klartext, wird über eine Reihe von Verfahren, dem sogenannten Algorithmus, in eine abgesicherte Nachricht übergeführt, den Geheimtext.[2] +[3]

Grundsätzlich ist dies über zwei verschiedene Methoden möglich, der Substitution oder der Transposition. Die Substitution ersetzt entweder jedes Klartextzeichen einzeln (mono-graphisch) oder jeweils ganze Zeichenfolgen (polygraphisch). Eine Untergruppe der monographischen Chiffren sind die der polyalphabetischen Substitution, welche Vigenère im 16. Jhd. verwandt und damit jedes Zeichen in Abhängigkeit von seiner Position im Klartext unterschiedlich verschlüsselte. Unter polygraphische Chiffren fällt zum Beispiel die Playfair-Chiffre, die je zwei Buchstaben nach ihrer Position in einer 5x5-Felder großer Matrix auf je ein anderes Buchstabenpaar abbildet.

2.1.3 Kryptoanalyse und ihre Angriffsmöglichkeiten

Kryptoanalyse dagegen bezeichnet die Kunst, einen chiffrierten Text ohne Kenntnis des Schlüssels zu lesen. Der Vorgang heißt auch Codebreaking oder Kompromittierung. Wenn ein Algorithmus der Kryptoanalyse nicht standhält, sagt man auch, er sei gebrochen oder kompromittiert.

„Die ‘Philosophie’ der modernen Kryptoanalyse wird durch das Prinzip von Kerckhoff beschrieben und lautet: „Die Sicherheit eines Kryptosystems darf nicht von der Geheimhaltung des Algorithmus abhängen. Die Sicherheit gründet sich nur auf die Geheimhaltung des Schlüssels.“[4] Es wurde erstmals in dem Buch ‘La cryptographie militaire’ (1883) des niederländischen Philologen Kerckhoffs von Nieuwenhof (...) formuliert (...).“[5] Der Kryptoanalytiker sollte deshalb immer davon ausgehen, dass der Gegner den Algorithmus kennt und auch Zugang zu Geheim- und Klartexten hat.

Daraus ergeben sich für ihn folgende Angriffsmöglichkeiten um den Schlüssel herauszufinden. Kennt der Kryptoanalytiker ein relativ langes Stück Geheimtext, so kann er mit Hilfe von Häufigkeitsanalysen in Bezug auf Buchstaben, Bi- und Trigrammen der jeweiligen Sprache versuchen, die Chiffrierung zu kompromittieren (ciphertext only attack).

Weitaus effektiver gestaltet sich die Kryptoanalyse, falls der Angreifer zusammengehörigen Klar- und Geheimtext besitzt. „Diese Hypothese ist realistischer als sie auf den ersten Blick erscheint“[6], da die übertragenen Botschaften meist bestimmte Schlagworte oder standardisierte Eröffnungs- und Schlussfloskeln enthalten (known plaintext attack).

„Hat der Kryptoanalytiker Zugang zum Verschlüsselungsalgorithmus (...), so kann er, um den Schlüssel zu erschließen, auch selbstgewählte Stücke Klartext verschlüsseln und versuchen, aus dem erhaltenen Geheimtext Rückschlüsse auf die Struktur des Schlüssels zu ziehen (chosen plaintext attack).“[7]

2.2 Kryptosysteme

2.2.1 Definition und Begriffe

Ein Kryptosystem ist eindeutig definiert durch die verwendeten Algorithmen und die Kombination untereinander. Ausgangspunkt eines jeden Systems ist der Klartext (engl. plaintext) mit der Bezeichnung M (engl. messages). Diesen soll der Sender mit dem Verschlüsselungsalgorithmus E (engl. encrypt) und dem Schlüssel K (engl. key) chiffrieren. Hieraus bekommt er das Chiffrat, den Geheimtext C (engl. ciphertext). Über einen sicheren Kanal gelangt der Geheimtext zum Empfänger. Seine Aufgabe besteht darin, mit der Entschlüsselungsfunktion D (von decrypt) und dem Schlüssel K den Klartext wieder zu enthüllen. Formelhaft läßt sich der Sachverhalt folgendermaßen darstellen, wobei E und D als Funktionen oder Algorithmen mit einer Reihe von Parametern betrachtet werden können:

C=E(M,K)

Aus E mit den Parametern M und K ergibt sich der Geheimtext, auch Chiffretext oder Kryptogramm genannt.

M=D(C,K)

Symmetrisch resultiert aus der Funktion D mit den Parametern C und K der Klartext. Hierbei muss beachtet werden, dass der Klartext häufig als eine endliche Zeichenkette von Symbolen aus einer endlichen Menge S von Zeichen betrachtet wird. Diese Menge bezeichnet die Sprache des Systems und besteht meist aus den Buchstaben des Alphabets und dem ‘Leerzeichen’. Um die Anwendung von Computerchiffren zu ermöglichen, verwendet man die Menge der Binärzeichen 1 und 0, der beiden Werte eines Bits.

Um die Zusammenhänge in einem Kryptosystem zu veranschaulichen, wählt man oft die graphische Darstellung mittels Zeichenobjekten und Linien ähnlich folgendem Beispiel:

Abbildung in dieser Leseprobe nicht enthalten[8]

Der Klartext muss gleich dem dechiffrierten Chiffretext sein. Falls diese Bedingung nicht erfüllt ist, kann das Kryptosystem als wertlos angesehen werden. „Formal definieren wir ein Kryptosystem als Tripel (M, K, C), wobei M und C Mengen sind (...) und K ist die finite Menge von Schlüsseln mit der zusätzlichen Annahme, dass es Funktionen (oder Algorithmen) E und D gibt, so dass

Abbildung in dieser Leseprobe nicht enthalten

ist und daß für jedes Abbildung in dieser Leseprobe nicht enthalten

Abbildung in dieser Leseprobe nicht enthalten

gilt.“[9]

Jedes Kryptosystem muss weiterhin dem Angriff des Kryptoanalytikers (A) standhalten, der meist Zugang zu größeren Abschnitten Geheimtext hat.

2.2.2 Relativitätstheorie nach Shannon

Kryptosysteme sind nur relativ sicher. Dies geht aus der Definition der absoluten Sicherheit (von C. Shannon 1949) hervor. Sie liegt vor, wenn ein „exakter mathematischer Beweis für die Unangreifbarkeit eines Verfahrens existiert“[10]. In der Praxis ist nur die komplexitätstheoretische oder praktische Sicherheit wichtig: „Falls die zum Brechen eines Verfahrens notwendigen Ressourcen die gesamte Materie des Universums übersteigen oder eine beliebig aufwendige Maschine dafür mehr Zeit als die verbleibende Lebensdauer unserer Sonne braucht, dann kann dieser Algorithmus getrost als sicher gelten. Die praktische Sicherheit begnügt sich

Abbildung in dieser Leseprobe nicht enthalten[11]

sogar mit dem Nachweis, dass - jetzt und in absehbarer Zukunft - ‘verfügbare’ Ressourcen nicht ausreichen.“[12]

Der einzige Algorithmus, der die ‘absoluten Sicherheit’ erfüllt, ist das One-Time-Pad oder nach seinem Erfinder Gilbert Vernam auch Vernam-Chiffre genannt. Diese verwendet eine Folge von einem zufällig gewählten 5-Bit-Schlüssel der bitweise modulo 2 zum Klartext addiert wird. Jedes Zeichenpaar wird über ein ‘exklusives Oder’ (XOR) verknüpft:

Abbildung in dieser Leseprobe nicht enthalten[13]

Bei einer echten Zufallsfolge ist dieses System auch absolut sicher, jedoch sind die Einsatzmöglichkeiten durch die Länge des Schlüssels eingeschränkt[14], da dieser auch vollständig übertragen werden muss.

2.2.3 Schwache Schlüssel eines Kryptosystems

„Bei einigen Algorithmen (...) existieren systembedingt bestimmte Schlüssel, die Teilfunktionen des Algorithmus wirkungslos machen und daher die kryptographische Stärke des Verfahrens mindern. Von semischwachen Schlüsseln ist die Rede, wenn verschiedene Schlüssel dasselbe Chiffrat ergeben.“[15]

2.2.4 Blockchiffrierung

Verschlüsselungsalgorithmen können auf zwei verschiedene Arten arbeiten. Bei einer Blockchiffre werden Klartext bzw. Geheimtext in Blöcke der Länge n geteilt, die durch den Algorithmus mit dem immer gleichen Schlüssel chiffriert werden. Im Computereinsatz wird n häufig auf 64 Bit gesetzt und die Möglichkeit der Rückkopplung genutzt, d.h. das Chiffrat eines Blockes beeinflusst die Chiffrierung des nächsten.[16] +[17]

Abbildung in dieser Leseprobe nicht enthalten[18]

2.2.5 Stromchiffrierung

Stromchiffren nutzen eine kontinuierliche Verschlüsselung, bei der in Abhängigkeit von einem geheimen Schlüssel ein Byte- oder auch Bitstrom erzeugt und dieser per XOR mit dem Klartext bzw. Geheimtext verknüpft wird. Der Bitstrom heißt auch Schlüsselstrom und wird wie ein individueller Schlüssel (One-Time-Pad) verwendet.[19]

Abbildung in dieser Leseprobe nicht enthalten[20]

2.2.6 Varianten

In der Kryptographie gibt es grundsätzlich zwei Hauptarten von Kryptosystemen. Symmetrische Verfahren, auch private key-Verfahren genannt, gehen davon aus, dass zwei Partner einen gemeinsamen sowie geheimen Schlüssel vereinbart haben, mit dem es beiden möglich ist, zu ver- und entschlüsseln. Im Gegensatz dazu verwenden die wesentlich moderneren asymmetrischen Verfahren einen öffentlichen Schlüssel. Dieser ermöglicht jedem Partner, auch dem Außenstehenden, die Chiffrierung, jedoch nur dem Besitzer des privaten Schlüssels die Dechiffrierung.

3 Symmetrische Kryptosysteme

3.1 Definition

Beim symmetrischen Chiffrieren bestimmt der gemeinsame Schlüssel den Chiffrier- wie auch Dechiffrierschritt. Zu beachten ist hierbei, dass beim Ver- und Entschlüsseln der gleiche Schlüssel verwendet wird. Die Sicherheit hängt einzig und allein von der Geheimhaltung des Schlüssels ab. „In diesem Fall muss der Schlüsselaustausch zwischen den Kommunikationsteilnehmern über einen sicheren Kanal (etwa einen vertrauenswürdigen Kurier) abgewickelt werden.“[21]

Abbildung in dieser Leseprobe nicht enthalten[22]

3.2 Monographische Substitution nach G. J. Caesar

3.2.1 Geschichtlicher Hintergrund

Die berühmteste aller Verschlüsselungsmethoden ist die einfache Substitution. Erdacht vom römischen Staatsmann und Feldherrn Gaius Julius Caesar im 1. Jh. vor Christus, wurde diese Chiffriermethode zu militärischen und politischen Zwecken eingesetzt. Sueton schrieb über Caesar folgendes: „Wenn jemand das entziffern und den Inhalt erkennen wollte, so musste er den vierten Buchstaben des Alphabets, also D, für A einsetzen, und so mit den andern.“[23] Einfacher ausgedrückt, ist das Geheimtextalphabet eine Permutation des Klartextalphabets.

Klartextalphabet: abcdefghijklmnopqrstuvwxyz

Geheimtextalphabet: DEFGHIJKLMNOPQRSTUVWXYZABC

Ein Klartext wird chiffriert, wenn man jeden einzelnen Buchstaben durch den in der Tabelle darunterstehenden ersetzt, also substituiert. Der Dechiffrierschritt erfolgt entsprechend umgekehrt.

Abbildung in dieser Leseprobe nicht enthalten[24]

Da bei Caesar das Geheimtextalphabet nur eine Verschiebung des ursprünglichen Alphabets um den Faktor 3 war, nennt man dieses Verfahren auch additive- oder Verschiebechiffren. Um die einfache Substitution möglichst schnell zu realisieren bediente man sich passender Tabellen. „Bereits 1470 hat das italienische Universalgenie Leon Battista Alberti (...), der völlig zu Recht ‘Vater der modernen Kryptologie’ genannt wird, eine Maschine erfunden, die das Verschlüsseln mechanisiert.“[25] Sie besteht aus zwei Scheiben unterschiedlicher Größe, wobei die kleinere das Klartextalphabet enthält und drehbar ist.

3.2.2 Umsetzung der additiven Chiffre

„Wie die Bezeichnung ‘additive Chiffre’ schon vermuten lässt, kann dieses Verschlüsselungsverfahren mit Hilfe einer arithmetischen Operation beschrieben werden. Diese Operation ist die Addition modulo der Mächtigkeit des Klartextalphabets.“[26] Über die ASCII-Zeichencodes werden die n Symbole des zugrundeliegenden Alphabets mit den Zahlen 1, 2, ..., n identifiziert. In einer ASCII-Tabelle erkennt man die Ordnungszahlen der kleinen Buchstaben als Zahlen von 097=a bis 122=z[27]. JavaScript stellt die Objekteigenschaft charCodeAt() bereit, mit welcher man den ASCII-Code eines bestimmten Buchstabens in einem String (=Zeichenkette) abrufen kann. Damit obige Zuweisung stimmt, erfolgt die Umrechnung über diese Zuweisung:

a = text.charCodeAt(i) - 97;[28]

Die Chiffrierung eines Klartextzeichens m mit einem Schlüssel k kann damit durch folgende Operation beschrieben werden:

Abbildung in dieser Leseprobe nicht enthalten für Abbildung in dieser Leseprobe nicht enthalten entspricht in JavaScript: (m+k)%n=c;

Entsprechend erfolgt der Dechiffrierschritt:

Abbildung in dieser Leseprobe nicht enthalten für Abbildung in dieser Leseprobe nicht enthalten entspricht in JavaScript: (c-k)%n=m;

Eine Ausgabe mit kleinen Buchstaben als Zeichensatz ist nur möglich, wenn danach wieder die entsprechenden ASCII-Codes berechnet werden.

Da der Schlüssel eine Verschiebung um 0, dem trivialen oder semischwachen Schlüssel, bis 25 sein kann und der Dechiffrierschritt damit für das Klartextzeichen c einen Wert zwischen -25 und 25 ausgibt, muss zu dieser Zahl noch ein Vielfaches der Alphabetlänge addiert werden, um ASCII-Werte kleiner 97 zu vermeiden. Danach erfolgt die Übersetzung in ASCII-Zeichen über die Objekteigenschaft fromCharCode() des Objektes String.

text2 += String.fromCharCode((c+26) % 26 + 97);[29]

3.2.3 affine Chiffren

„Analog zur obigen Definition der Addition auf einem beliebigen endlichen Alphabet kann auch die Multiplikation und damit eine multiplikative Chiffre definiert werden. (...) Durch die Kombination dieser beiden arithmetischen Operationen erhält man die Klasse der sogenannten affinen Chiffren. Der Schlüssel einer affinen Chiffre ist ein Paar (s,t), mit dem wie folgt aus einem Klartextzeichen a das Chiffretextzeichen c berechnet wird (...):“[30]

Abbildung in dieser Leseprobe nicht enthalten

„Additive und multiplikative Chiffren können damit als spezielle affine Chiffren aufgefasst werden; sie werden durch Schlüssel des Typs (1,t) bzw. (s,0) charakterisiert. Die Dechiffrierung eines Chiffretextzeichens c entspricht bei einer affinen Chiffre der Operation“[31]:

Abbildung in dieser Leseprobe nicht enthalten

[...]


[1] Microsoft Encarta Enzyklopädie 2000 plus: c’t-Artikel: Kryptologische Begriffe und Verfahren

[2] Albrecht Beutelspacher; Kryptologie 3. Auflage, Friedr. Vieweg & Sohn Verlagsgesellschaft mbH Braunschweig/Wiesbaden 1992 (3. Auflage 1993) S. 10

[3] Wolfgang Kopp; Rechtsfragen der Kryptographie und der digitalen Signatur, http://www.wolfgang-kopp.de/krypto.html (28.1.2000)

[4] s.o. A. Beutelspacher S. 23

[5] s.o. A. Beutelspacher S. 23

[6] s.o. A. Beutelspacher S. 24

[7] s.o. A. Beutelspacher S. 24

[8] ähnlich Dominic Welsh; Codes und Kryptographie, VCH Verlagsgesellschaft mbH Weinheim 1991 S. 139 und W. Fumy / H. P. Rieß ;Kryptographie - Entwurf, Einsatz und Analyse symmetrischer Kryptoverfahren 2. Auflage, R. Oldenburg Verlag GmbH München 1994 (Band 6, 2. Auflage) S. 16

[9] s.o. D. Welsh S. 133-134

[10] s.o. c’t Artikel

[11] s.o. A. Beutelspacher S. 66

[12] s.o. c’t Artikel

[13] s.o. A. Beutelspacher S. 64

[14] s.o. W. Fumy S.56

[15] s.o. c’t Artikel

[16] Reinhard Wobst; Abenteuer Kryptologie - Methoden, Risiken und Nutzen der Datenverschlüsselung 2. Auflage, Addison Wesley Longman Verlag GmbH 1998 S. 175

[17] s.o. c’t Artikel

[18] s.o. R. Wobst S. 118

[19] s.o. R. Wobst S. 373

[20] s.o. R. Wobst S. 118

[21] s.o. W. Fumy S. 17

[22] ähnlich s.o. D. Welsh S. 139 und s.o. W. Fumy S. 16

[23] s.o. A. Beutelspacher S.13

[24] s.o. F. L. Bauer S. 42

[25] s.o. A. Beutelspacher S.13

[26] s.o. W. Fumy S. 26

[27] Winfried Kassera / Volker Kassera; Turbo Pascal 7.0 - Das Kompendium Limitierte Sonderausgabe, Markt und Technik Buch- und Software-Verlag Haar bei München 1996 S. 659

[28] Stefan Münz; Sefthtml (HTML-Dateien selbst erstellen) Version 7.0, http://www.netzwelt.com/selfhtml/ (23.11.1999)

[29] s.o. S. Münz

[30] s.o. W. Fumy S. 29

[31] s.o. W. Fumy S. 29

Excerpt out of 42 pages

Details

Title
Kryptologie - praktische Anwendung ausgewählter Verfahren in JavaScript
Grade
gut
Author
Year
2000
Pages
42
Catalog Number
V153553
ISBN (eBook)
9783640675821
ISBN (Book)
9783656817215
File size
916 KB
Language
German
Keywords
Kryptologie, Java, script, skript, javascript, viginere, rot13, enigma, rsa
Quote paper
Michael Wiehl (Author), 2000, Kryptologie - praktische Anwendung ausgewählter Verfahren in JavaScript, Munich, GRIN Verlag, https://www.grin.com/document/153553

Comments

  • No comments yet.
Look inside the ebook
Title: Kryptologie - praktische Anwendung ausgewählter Verfahren in JavaScript



Upload papers

Your term paper / thesis:

- Publication as eBook and book
- High royalties for the sales
- Completely free - with ISBN
- It only takes five minutes
- Every paper finds readers

Publish now - it's free