ATEC-Systems - Krypto Workshop

Werbung
Schulungsbeispiel: Kryptologie [Zurück]
Verschlüsselung im Informationszeitalter Skript zum Workshop am 28. Oktober 1996
1. Public-Key-Kryptosysteme - Workshop
1.1. Übersicht
Im ersten Teil werden Ihnen die Public Key Kryptosysteme - in einem Vergleich zu den "klassischen"
Kryptosystemen - etwas näher gebracht. Zweitens wird ein bekannter Vertreter, das RSA Verfahren, vorgestellt.
Drittens können mit dem Kryptologiespiel erste, spielerische Erfahrungen mit einem Public Key System gemacht
werden.
1.2. Lernziele
Das Bedürfnis nach Datensicherheit bei der Speicherung und Übertragung von Daten ist heute sowohl im
kommerziellen als auch im militärischen Bereich, sehr groß. Der Kryptologie kommt deshalb eine große Bedeutung
zu. Erst in neuerer Zeit wurden die sogenannten Public Key Kryptosysteme entwickelt, welche sehr nützliche
Eigenschaften haben.
Am Ende des Workshops wissen Sie, was Public Key Kryptosysteme sind. Sie haben ein bekanntes Kryptosystem,
das RSA Verfahren, kennengelernt und damit gearbeitet.
1.3. Theorie
1.3.1. Klassische Kryptosysteme
Kryptosysteme sind Verfahren, mit welchen man Daten zwecks Geheimhaltung, verschlüsseln kann. Die
Verschlüsselung wird auch Chiffrierung oder Codierung, die Entschlüsselung auch Dechiffrierung oder Decodierung
genannt.
Durch eine Verschlüsselungsfunktion wird eine Nachricht (Klartext) in einen unleserlichen Code (Schlüsseltext)
übersetzt. Dabei braucht die Verschlüsselungsfunktion einen Schlüssel als einen der Eingangswerte. Die
Entschlüsselung geschieht mit einer entsprechenden Entschlüsselungsfunktion. Nur mit dem richtigen Schlüssel wird
dabei aus dem Code wieder die ursprüngliche Nachricht. Sender und Empfänger müssen im Geheimen vereinbaren,
welchen Schlüssel sie verwenden.
Typische Eigenschaften von klassischen Verschlüsselungsverfahren:
Sie verwenden denselben Schlüssel für die Verschlüsselung und die Entschlüsselung.
Die Funktion für die Entschlüsselung D(x) ist die Umkehrfunktion der Verschlüsselungsfunktion E(x):
D(x) = E -1 (x).
Die Funktionen sind nicht geheim.
Der Schlüssel muß auf einem sicheren Kommunikationsweg mitgeteilt werden.
Klassische Kryptosysteme sind nicht weniger sicher als moderne. Es gibt Verfahren, welche in theoretischer als auch
praktischer Hinsicht als absolut sicher zu betrachten sind. Je sicherer ein Verfahren ist, umso aufwendiger ist es
meistens. Wer ein Kryptosystem knacken will, probiert durch Untersuchungen von Schlüsseltexten Kenntnis vom
Schlüssel zu erlangen. Diese sogenannte Kryptoanalysis ist eine komplizierte mathematische Angelegenheit!
1.3.2. Public Key Kryptosysteme
Public Key Kryptosysteme arbeiten mit verschiedenen Schlüsseln für die Verschlüsselung und die Entschlüsselung.
Wer Nachrichten chiffriert empfangen möchte, veröffentlicht den Schlüssel, mit welchem die Sender die Nachrichten
verschlüsseln sollen. Der Schlüssel, welcher für die Entschlüsselung benötigt wird, behält er geheim. Natürlich darf
vom öffentlichen Schlüssel nicht auf den geheimen geschlossen werden können.
Typische Eigenschaften von Public Key Kryptosystemen:
Sie verwenden verschiedene Schlüssel für die Verschlüsselung und die Entschlüsselung.
Die Funktion für die Entschlüsselung D(x) ist oft dieselbe wie die Verschlüsselungsfunktion E(x): D(x) =
E(x).
Die Funktionen sind nicht geheim.
Ein Schlüssel wird veröffentlicht, der andere wird geheim gehalten.
Public Key Kryptosysteme sind nicht von vornherein sicherer als klassische Systeme. Es ist sogar praktisch immer
bekannt, wie sie theoretisch geknackt werden können. Praktisch ist dies jedoch nur mit nicht machbarem oder nicht
sinnvollem Aufwand möglich. Der entscheidende Vorteil von Public Key Kryptosystemen besteht darin, daß der
sinnvollem Aufwand möglich. Der entscheidende Vorteil von Public Key Kryptosystemen besteht darin, daß der
Austausch von Schlüsseln auf einem unbedingt sicheren Kommunikationsweg entfällt. Public Key Systeme können
nicht nur eingesetzt werden, wenn Nachrichten nur vom rechtmässigen Empfänger gelesen werden sollen. Man
kann damit auch sicherstellen, daß eine Nachricht nur von einem bestimmten Absender kommen kann. Zu diesem
Zweck veröffentlicht der Sender von Nachrichten den Schlüssel für die Dechiffrierung. Den Schlüssel für die
Chiffrierung behält er für sich. Wenn der dechiffrierte Code eine sinnvolle Nachricht ergibt, so kommt diese sicher
von ihm. Die Verschlüsselung ist sozusagen die Unterschrift des Senders.
1.3.3. Das RSA Public Key Kryptosystem
Das RSA Kryptosystem ist das erste praktisch einsetzbare Public Key Verfahren, welches realisiert wurde. Es wurde
1977 entwickelt und ist nach den Initialen seiner Erfinder, Rivest, Shamir und Adleman, benannt.
Die Sicherheit dieses Verfahrens beruht darauf, daß eine große Zahl, wenn man sie geeignet wählt, nur mit großem
Aufwand in Primfaktoren zerlegt werden kann.
1.3.3.1. Grundlagen aus der Zahlentheorie
Hier werden die Grundlagen für das RSA Verfahren kurz dargestellt, ohne daß genauer auf die Sätze und deren
Beweise aus der Zahlentheorie eingegangen wird.
Zuerst eine Erklärung von Notationen und Begriffen:
(a,b) steht für grösster gemeinschaftlicher Teiler von a und b.
a | b bedeutet a teilt b. a == b (mod n) bedeutet: n | (a - b).
Im weiteren sind mit Zahlen immer ganze Zahlen gemeint.
Die Eulerfunktion PHI(n) nennt die Anzahl positiver ganzer Zahlen, welche im zwischen 1 und n liegen, und zu n
relativ prim sind. Nach einem Theorem von Euler gilt: Sind n und b zwei positive, zueinander relativ prime Zahlen
(d.h. (n,b) = 1), dann ist b PHI(n) == 1 (mod n). Daraus folgt b PHI(n)+1 = b bPHI (n) == b (mod n).Findet man zwei
Zahlen e und d, beide zwischen 0 und n-1, für welche e d == 1 (mod PHI(n)) gilt, so ist auch b e d == b (mod n).
Es gilt: b e d == b (mod n) <=> (b e ) d == b (mod n) <=> (b d ) e == b (mod n).
1.3.3.2. Das RSA Verfahren
Im Folgenden wird erklärt, wie man ein Kryptosystem nach dem RSA Verfahren initialisiert. 1) Man wählt zwei
verschiedene, große Primzahlen p, q. Dann bildet man ihr Produkt n = p q. Weil p und q prim sind, ist PHI(n) = (p1) (q-1). 2) Es müssen zwei Zahlen e und d gefunden werden, für welche e d == 1 (mod PHI(n)) gilt.
Man wählt zuerst d so, daß d relativ prim zu PHI(n) ist. Ideal ist eine Primzahl d > max(p,q) und d < PHI(n)-1. Um
e zu finden, muß man eine Lösung mit ganzzahligen x und y für die Gleichung x d + y PHI(n) = 1 finden.
Es gilt x d == 1 (mod PHI(n)). Setzt man e = x mod PHI(n), dann ist auch e d == 1 (mod PHI(n)). 3) e und d
sind die Schlüssel, n der sogenannte Modul. Die Verschlüsselungsfunktion ist E(x) = x e mod n, die
Entschlüsselungsfunktion ist D(x) = x d mod n. Da bei den Funktionen E(x) und D(x) modulo n gerechnet wird, muß
x < n sein.
Jede Nachricht X muß so in Blöcke x1, x2, ... unterteilt werden, daß x1, x2, ... < n sind.
1.3.3.3. Regeln für die Sicherheit
Um das Verfahren möglichst sicher zu machen, müssen folgende Regeln befolgt werden:
Zu 1) Damit die Faktorisierung von n = p q schwierig genug ist:
p q sollen grösser sein als 10 100 ,
p und q sollen in der Länge um einige Stellen variieren.
(p-1) und (q-1) sollen große Primfaktoren enthalten.
Der kleinste gemeinsame Teiler von (p-1) und (q-1) sollte möglichst klein sein.
Zu 2) Es ist sinnvoll, eine möglichst große Zahl d, mit d < PHI(n)-1, zu wählen, damit d nicht so schnell ermittelt
werden kann.
1.4. Anleitung zum Kryptologiespiel
Jeder Teilnehmer baut sich sein Verschlüsselungssystem nach dem RSA Verfahren. Sie oder er geht dabei gemäss
folgenden Anweisungen vor. Dann tauschen alle untereinander Nachrichten aus. In einer Schlüsselliste veröffentlicht
jeder den Schlüssel e und den Modul n für die Verschlüsselung. n und d notiert sich jeder selber, um später die an
ihn gerichteten Nachrichten entschlüsseln zu können. Dabei muß d geheim bleiben! Normalerweise wird beim RSA
Verfahren mit Zahlen gerechnet, welche über hundert Stellen haben. Für dieses Spiel beschränken wir uns auf
Zahlen mit weniger als zehn Stellen, damit wir mit einfachen Mitteln rechnen können. Bestimmung der Schlüssel für
das RSA Kryptosystem:
1) Wähle zwei verschiedene Primzahlen p, q und bilde ihr Produkt n = p q. Für n soll gelten: 16384 < n < 50000.
2) Berechne PHI(n) = (p-1) (q-1).
3) Wähle d so, daß d relativ prim zu PHI(n) ist. Ideal ist eine Primzahl d > max(p,q) und d < PHI(n)-1.
4) Finde eine Lösung mit ganzzahligen x und y für die Gleichung x d + y PHI(n) = 1. Bestimme e = x mod PHI(n).
Auf dem Rechner befindet sich das Programm "Euler", mit welchem dieser Schritt ausgeführt werden kann!
5) Trage e und n zusammen mit Deinem Namen in die Schlüsselliste ein.
Beispiel:
1) p = 233, q = 83, n = p q = 19339
2) PHI(n) = (p-1) (q-1) = 19024
3) 743 ist prim und max(p,q) < 743 < 19023, d = 743
4) x . 743 + y . 19024 = 1, x = 3559, y = -139, e = 3559
Verschlüsseln von Nachrichten:
1) Denke Dir eine Nachricht aus und schreibe sie auf.
2) Setze jedes Zeichen der Nachricht mit Hilfe der ASCII-Codetabelle in Dezimalcodes um.
3) Fasse je zwei Zeichen zu einem Block zusammen und verschlüssle diesen mit der Funktion E(x) = x e mod n.
Auf dem Rechner befindet sich das Programm "Power and Modulo" für die Verschlüsselung.
4) Schreibe die verschlüsselte Nachricht mit dem Namen des Adressaten in die Nachrichtenliste ein.
Beispiel:
1) Die Nachricht lautet: "Public Key".
2) P u
b
l
i
c
80 117 98 108 105
K
e
y
99 32 75 101 121
3) E(x) = x 3559 mod 19339
80 117 98 108 105
1 101 142 93 26
4)Ergebnis:
99 32 75 101 121
57 24 28 7
37
1, 101, 142, 93, 26, 57, 24, 28, 7, 37
Entschlüsseln von Nachrichten:
1) Fasse je zwei Zahlen einer Nachricht zu einem Block zusammen und entschlüssle diesen mit der Funktion D(x) =
x d mod n.
x d mod n.
Auf dem Rechner befindet sich das Programm "Power and Modulo" für die Entschlüsselung.
2) Setze jede Zahl mit Hilfe der ASCII-Codetabelle in ein Zeichen der Nachricht um.
1)Beispiel: 21, 61, 130, 21, 34, 4, 115, 22, 64, 52
D(x) = x 743 mod 19339
21 61 130 21
121 101 75 32
2) 121 101 75
y e
K
32
c
34
99
4 115 22 64 52
105 108 98 117 80
99
105 108 98
i l
b
u
P
117 80
3) Die Nachricht lautet: "yeK cilbuP".
1.5. Vorbereitete Programme und Hilfsmittel
1.5.1. Programm EULER
Mit dem Programm "Euler" wird zur Zahl d ein e, 0 < e < PHI(n), gefunden, so daß e d == 1 (mod PHI(n)) erfüllt
ist. Dazu wird die Gleichung x d + y PHI(n) = 1 gelöst. Es wird eine Lösung mit ganzzahligen x und y errechnet,
bei welcher 0 < x < PHI(n) ist. x entspricht dem gesuchten e. Programmablauf:
1. Eingabe von PHI(n) und d.
2. x und y werden angezeigt.
3. Zur Kontrolle werden x und y in die Gleichung x d + y PHI(n) = (d, PHI(n)) eingesetzt. Falls das Resultat der
Gleichung nicht 1 ist, so waren d und PHI(n) nicht relativ prim!
4. Ausgabe von e.
5. Das Programm ist wieder bereit für die Eingabe von PHI(n) und d (1. Schritt). Es kann mit der
Tastenkombination <Ctrl - c> abgebrochen werden.
1.5.2. Programm RSA
Mit dem Programm "RSA" kann die Funktion y = x e mod n (bzw. y = x d mod n) berechnet werden. Das ist die
Chiffrierfunktion (bzw. Dechiffrierfunktion) des RSA Kryptosystems. Der verwendete Algorithmus berechnet x n mod
m mit der Technik "wiederholtes Quadrieren und Multiplizieren" mit Aufwand O(log n). Durch die Reduktion modulo
m nach jedem Multiplizieren werden die Zwischenresultate nicht zu hoch.
Das Programm ist für einen Zeichencode mit maximal 128 Zeichen ausgelegt. Jedem Zeichen muß eine Codezahl
zwischen 0 und 127 zugeordnet werden. Es werden jeweils zwei Zeichen x1 und x2 miteinander verschlüsselt:
x = 128 x1 + x2. Der Modul n muß so gewählt werden, daß PHI(n) >= 1282 = 16384 ist. Programmablauf:
1.
2.
3.
4.
5.
Eingabe des Schlüssels e oder d.
Eingabe des Moduls n.
Eingabe der Codezahlen für das erste und das zweite Zeichen.
Ausgabe der übersetzten zwei Codezahlen.
Das Programm ist wieder bereit für die Eingabe der Codezahlen (3.Schritt). Es kann mit der
Tastenkombination <Ctrl - c> abgebrochen werden.
1.5.3.1. Die ersten 10000 Primzahlen (10000.TXT)
1.5.3.2. Die ersten 10000 Primzahlen (10000.ZIP)
1.5.3.3. Ascii Zeichen Tabelle
2. Hot-Links
2.1. Kryptologie
RSA Data Security, Inc
Crypt NewsLetter's Homepage
Security Server der Fachgruppe Nachrichtenübermittlung
2.2. Kryptologie - Technik
THE PRIME PAGE - the prime source for information about prime numbers
2.3. PGP
Pretty Good Privacy, Inc. (PGP)
PGP Rechtsfragen
2.4. Kryptoanalyse
HACKERS
3.1. Begriffe
3.1.1. Kryptologie
Die Kryptologie ist die Lehre von der Ver- und Entschlüsselung von Daten. Die Kryptographie ist die Lehre
von der Verschlüsselung, Kryptoanalyse die der Entschlüsselung durch Unbefugte. Beides wird in der
Kryptologie zusammengefaßt.
Die Grundsätzliche Aufgabe der Kryptographie als Wissenschaft ist, Verschlüsselungsmethoden zu entwickeln
und ihre Sicherheit gegen unberechtigte Entschlüsselung mathematisch abzusichern.
Zu Erwähnen sind dabei die drei Grundprobleme der Kryptographie: Die Vertraulichkeit, der Echtheitsnachweis
sowie die Anonymität.
3.1.2. Chiffriermethoden
Monoalphabetische Chiffrierung
Jeder Verschlüsselung liegt ein Alphabet zu Grunde, in dem Klartext und Geheimtext abgefaßt sind. Bei der
monoalphabetischen Chiffrierung wird der Klartext stets auf den gleichen Geheimtextbuchstaben abgebildet.
In der klassischen Kryptologie verwendet man meist das Alphabet aus den 26 Buchstaben. Will man
elektronische Dateien verschlüsseln, ist es zweckmäßig, als Alphabet die Menge der 256 Bytes von
(hexadezimal) 00 bis FF zu betrachten. Die bekanntesten monoalphabetischen Algorithmen sind:
Der Transpositionsalgorithmus (Skytale) , bei dem die Positionen der Zeichen vertauscht werden und der Der
Substitutionsalgorithmus (Caesar) , bei dem die Klartextzeichen durch andere substituiert werden.
Monoalphabetische Chiffrierung ist für statistische Methoden äußerst anfällug und daher keine sichere
Technik.
Polyalphabetische Chiffrierung
Bei der polyalphabetischen Chiffrierung wird ein Klartextbuchstabe nicht stets auf den gleichen
Geheimtextbuchstaben abgebildet. Vorstellen kann man sich das so, daß man monoalphabetisch mit ständig
wechselndem Schlüssel chiffriert. Das Ziel dabei ist, die Häufigkeit der einzelnen Buchstaben zu verschleiern,
um somit die gängigen Attacken durch Häufigkeitsanalysen hinfällig zu machen.Ein Beispiel dafür ist der
VIGENERE-Code .
Buchstabenwurm
Als einen perfekten Chiffrieralgorithmus mann man den Buchstabenwurm ansehen. Hier umfaßt der Schlüssel
ebensoviele Zeichen wie der Klartext und jeder Buchstabe des Klartext wird mit jeweils einem Buchstaben des
Schlüssels codiert. Problematisch ist bei dieser Technik allerdings der Schlüsselaustausch der auf sicherem
Wege erfolgen muß.
RSA
Der RSA-Algorithmus wurde 1977 von RIVES, SHAMIR und ADLEMAN entwickelt. Es gilt als sicher. RSA ist
zwar vor einigen Jahren von einem 21jährigen Elektronik-Student am MIT (Derek Atkins) geknackt worden aber inzwischen werden bei diesem Verfahren zu große Zahlen verwendet, daß deren Zerlegung in
Primfaktoren - als gängige Methode zum Knacken des Codes - aussichtlos erscheint.
3.1.3. Kryptoanalytische Attacken
Die Kryptoanalyse ist ein Teil der mathematischen Systemanalyse, d.h. sie dient dazu, Schwachstellen von
Chiffriersystemen aufzudecken. Hier gibt es nun verschiedene Kryptoanalytische Attacken:
Nur-Geheimtext-Attacke, 'known ciphertext attack'
Schlüssel-Durchprobier-Attacke
Klartextstück-Attacke, 'known plaintext attack'
Angriff mit bekanntem Klartext
Probeverschlüsselungs-Attacke, 'chosen plaintext attack'
Angriff mit ausgewähltem Klartext
4. Literatur
[1] Beutelspacher, A.: Cryptology. Braunschweig 1987 (Vieweg). Deutsch. "Eine Einführung in die Wissenschaft vom
Verschlüsseln, Verbergen und Verheimlichen, ohne alle Geheimniskrämerei, aber nicht ohne hinterlistigen Schalk,
dargestellt zu Nutzen und Ergötzen des Publikums" (ETHICS Kurzinformation 1995).
[2] Horster, P.: Cryptology. Mannheim - Wien - Zürich 1985 (Bibliographisches Institut). Deutsch. Überblick über die
Methoden und Verfahren der klassischen und modernen Cryptology. Schwerpunkt moderne Cryptology, Public Key
Cryptosystems. Wissenschaftlich, anspruchsvoll.
[3] Bressoud, D. M.: Factorization and Primality Testing. New York 1989 (Springer). Englisch. Erschienen in der
Reihe "Undergraduate Texts in Mathematics". Konzentriert sich auf das Thema Faktorisierung großer ganzer Zahlen
und Beweis der Primeigenschaft. Kapitel über das RSA Cryptosystem. Wissenschaftlich, leicht verständlich.
[4] Salomaa, A.: Public-Key Cryptography. Berlin - Heidelberg 1990 (Springer). Englisch. Umfassendes Werk über
Public Key Cryptosystems. Wissenschaftlich, anspruchsvoll.
[5] Kranakis, E.: Primality and Cryptography. Stuttgart 1986 (Teubner). Englisch. Werk über neue mathematischen
Erkenntnisse (Zahlentheorie, Primzahlen) im Zusammenhang mit moderner Cryptology (Public Key Cryptosystems,
Pseudozufallszahlen-Generatoren). Wissenschaftlich, anspruchsvoll.
© Copyright 1996 by Chris Ahrweiler
[email protected]
Herunterladen