6i-Theorie-Kryptographie

Werbung
Informatik Programmieren 6.Klasse
Inhalt
1.
Kryptologie ........................................................................................................................................... 1
2.
Substitutionsverfahren ........................................................................................................................ 2
3.
Vigenère-Chiffre................................................................................................................................... 3
4.
Hashing ................................................................................................................................................ 4
5.
MD5 ..................................................................................................................................................... 4
6.
PGP? ..................................................................................................................................................... 4
Wie arbeitet PGP? ................................................................................................................................... 5
7.
Delphi – Programme ............................................................................................................................ 6
7.1.
Vigénere Verschlüsselung ............................................................................................................ 6
1. Kryptologie
Kryptologie spielt in unserer heutigen Zeit eine immer wichtiger werdende Rolle. Dies ist in dem
Wandel von der Industrie- zur Informationsgesellschaft begründet. Täglich hat jeder von uns mit
kryptologischen Technologien bewusst oder unbewusst zu tun. Sei es das bargeldlose Bezahlen
mittels EC-Karte, das Benutzen von Kartentelefonen oder Handys, der Umgang mit Computern am
Arbeitsplatz oder die Nutzung von Bezahl-Fernsehen (Pay-TV). Die Entwicklung und die
Bedeutung der Kryptologie herauszustellen, sowie Anregungen für die tiefere Beschäftigung mit
dieser Materie zu geben, soll das erklärte Ziel dieser Publikation sein.
Grundbegriffe
Zunächst einige Worte zur Terminologie. Die Begriffe Kryptologie und Kryptographie sind aus den
griechischen Wörtern kryptos (geheim) logos (das Wort, der Sinn), und graphein (schreiben)
gebildet. Meist wird mit Kryptologie die Gesamtheit der Kryptoanalyse und Kryptographie
bezeichnet, wobei die Kryptographie sich mit der Verheimlichung von Nachrichten und die
Kryptoanalyse mit dem Brechen von geheimen Nachrichten beschäftigt.
Ein Klartext ist die Information, die der Empfänger erhalten soll. Ein Geheimtext ist ein
verschlüsselter Klartext, das heißt für Andere nicht mehr lesbar. Den Vorgang der Verschlüsselung
bezeichnet man auch als Chiffrierung, den der Entschlüsselung als Dechiffrierung. Die Begriffe
Chiffre oder Code bezeichnen das Verfahren, das der Chiffrierung bzw. der Dechiffrierung
zugrunde liegt. Die geheime Information, die zur Verschlüsselung und Entschlüsselung dient, nennt
man Schlüssel. Wird zum Chiffrieren und Dechiffrieren der gleiche Schlüssel benutzt, so spricht
man von einem symmetrischem Verfahren. Dem gegenüber gibt es Verfahren, bei denen zwei oder
mehr Schlüssel verwendet werden, das heißt der Chiffrierschlüssel ist ein anderer, als der
Dechiffrierschlüssel. Diese Verfahren sind asymmetrisch und werden auch als public-keyVerfahren bezeichnet.
[1]
Unter einem Angreifer versteht man einen unbefugten Dritten, der sich den Klartext und/oder
Schlüssel beschaffen will. Ein aktiver Angriff erfolgt, wenn die verschlüsselte Nachricht
abgefangen und gegen eine gefälschte Version ausgetauscht und als echt deklariert wird. Ein
passiver Angriff bezeichnet den Vorgang des Abhörens bzw. das Entschlüsseln der Nachricht.
Die Kryptographie teilt sich grob in die drei Aufgabenbereiche der Geheimhaltung, Integrität und
Authentizität auf, wobei sich letztere mit der Übertragungs- und Fälschungssicherheit
beschäftigen.
2. Substitutionsverfahren
Die Grundidee dieser Gruppe von Verfahren ist es, die Buchstaben des Klartextes mit Hilfe einer
Zuordnungstabelle durch andere Symbole zu ersetzen. Diese Symbole können Sonderzeichen,
Buchstaben oder Zahlen sein. Man unterscheidet monoalphabetische Chiffren, bei denen der
gesamte Text mit einer festen Zuordnungstabelle verschlüsselt wird und polyalphabetische
Chiffren, die mehrere Zuordnungstabellen im Wechsel verwenden. Im folgenden werden
verschiedene praktisch verwendete monoalphabetische Chiffren erläutert. Der Vigère-Code als
Repräsentant für polyalphabetische Chiffren wird weiter unten dargestellt.
Beispiel:
A B C D E F
L
D T
A I
G H I
J
K L M N O P
N G U X H O S
Z
Q R S
R B C E
F
J
T U V W X Y Z
K M P
Q V W Y
MEIN NAME IST HASE
ZIXR RLZI XJK ULJI
Werden als Geheimzeichen Zahlen verwendet, ergibt sich z.B. folgende Tabelle:
A B C D E F
G H I
J
1
7
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
2
3
4
5
6
8
9
K L M N O P
Q R S
T U V W X Y Z
M E I N N A M E I S T H A S E
13/5/9/14/ /14/1/13/5/ /9/19/20/ /8/1/19/5
Eines der bekanntesten klassischen Verschlüsselungsverfahren wurde nach Cäsar benannt. Dieser
benutze es für den Briefwechsel mit seinen Statthaltern, Generälen und Konsuln.
Die Nachricht wird verschlüsselt indem man jeweils eine bestimmte Anzahl von Buchstaben im
Alphabet weitergeht.
Angabe der Methode: 𝐴 = 𝐵, 𝐴 = 𝐶, 𝐴 = 𝐷, . . .
Bildung der Schlüsselzeile:
z.B.: 𝐴 = 𝐷, 𝑠 = 4
A B C D E F
G H I
J
D E
J
M N O P
F
G H I
K L
K L M N O P
Q R S
Q R S
T
T U V W X Y Z
U V W X Y Z
A B C
PROJEKT MACHT SPASS
SURMHNW PDFKW VSDVV,A=D
[2]
3. Vigenère-Chiffre
Die Vigenère-Verschlüsselung ist die bekannteste unter allen polyalphabetischen Chiffren. Sie
wurde im Jahre1586 von dem französischen Diplomaten Blaise de Vigenère (1523 bis 1596) der
Öffentlichkeit zugänglich gemacht. Der Hauptgedanke dieser Methode ist, verschiedene
monoalphabetische Chiffren im Wechsel zu benutzen. Zur Chiffrierung der Nachrichten nach dem
Algorithmus von Vigenère braucht man unbedingt ein Schlüsselwort und das Vigenère-Quadrat.
Ohne Schlüsselwort kann man nicht sagen, welche Geheimtextzeichen den Klartextzeichen
entsprechen. Dabei kann das Schlüsselwort jede beliebige Buchstabenfolge sein.
Um diese Verschlüsselungsmethode zu demonstrieren nehmen wir ein Beispiel. Wir wählen ein
beliebiges Schlüsselwort, z.B. „HALLO“ und schreiben dieses Wort zeichenweise über den
Klartext, und zwar so lange, bis die Länge des Klartextes erreicht ist:
Schlüsselwort: H A L L O H A L L O H A L
Klartext:
k r y p t o g r a p h i e
Geheimtext:
R R J A H V G C L D O I P
Das Schreiben des Geheimtextes ist wie folgt zu erklären: Der über einem bestimmten
Klartextzeichen stehende Schlüsselwortbuchstabe und der direkt darunterliegende
Klartextbuchstabe bestimmen anhand des Vigenère-Quadrates das Chiffre-Alphabet, mit dem der
Klartextbuchstabe zu verschlüsseln ist.[BEUTLSP]
Also: den ersten Geheimtextbuchstaben „R“ bekommen wir, wenn wir im Vigenère-Quadrat in der
Zeile „H“ und der Spalte „k“ nachschauen. Weiter suchen wir in der Zeile „A“ den Buchstabe in
der Spalte „r“; dieser ist ebenfalls ein „R“. (Das ist nur ein Zufall, daß zwei gleiche
Geheimtextbuchstaben hintereinander stehen.) In gleicher Weise führen wir die Verschlüsselung
weiter durch.
Aufbau des Vigenère-Quadrates:
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Z A B C D E F C H I J K L M N O P Q R S T U V W X Y
[3]
Die Verschlüsselungsmethode von Vigenère wurde bereits in den frühen Jahren geknackt. Der erste
Angriff wurde 1863 von dem preussischen Infanteriemajor Friedrich Wilhelm Kasiski (1805 bis
1881) veröffentlicht. Der zweite wurde im Jahr 1925 von Colonel William Frederick Friedman
(1891 bis 1969) entwickelt. Die beiden Verfahren, der Kasiski-Test und der Friedman-Test, gelten
als äußerst wichtig in der Kryptoanalyse.
4. Hashing
Unter Hashing versteht man allgemein das Berechnen einer Prüfsumme.
Eigenschaften:
-
Sollte im Idealfall eindeutig sein (muss aber nicht)
ist allgemein kürzer als die Nachricht selbst
Die berechnete Prüfsumme wird mit „Hashwert“ oder „Hash“ bezeichnet.
Das Verfahren mit dem der Hash berechnet wird heißt „Hashfunktion“
Der Hashwert wird auch als Fingerprint bezeichnet. Er stellt eine nahezu eindeutige Kennzeichnung
einer größeren Datenmenge dar.
Die Hash – Funktion berechnet zu einer Datenmenge einen Hashwert.
Ziel: „Es soll nicht möglich sein, von der Signatur auf die ursprüngliche Nachricht zu schließen.“
5. MD5
Ist eine weit verbreitet Kryptologische – Hashfunktion. MD5 erzeugt aus einer beliebigen Nachricht
einen 128 Bit Hashwert. Es wurde 1991 von Ronald L. Rivest entwickelt und gilt heute als nicht
mehr sicher. Es ist mit wenig Aufwand möglich, unterschiedliche Nachrichten zu erzeugen, die
dieselbe MD5 – Prüfsumme aufweisen.
6. PGP?
PGP (ausgeschrieben "Pretty Good Privacy" (ziemlich
Computerprogramm, das Daten verschlüsselt und entschlüsselt.
gute
Privatsphäre))
ist
ein
Wer benutzt PGP Verschlüsselung (oder andere RSA-basierte Systeme)?
Leute, die Wert auf ihre Privatsphäre legen; Politiker, die Wahlkampagnen durchstehen;
Steuerzahler, die ihre Steuererklärung abspeichern; Ärtze, die Patientendaten schützen;
Unternehmer, die Firmengeheimnisse wahren müssen; Journalisten, die ihre Informanten schützen,
und Menschen, die Kontakte suchen, sind nur einige wenige der gesetzestreuen Bürger, die PGP
benutzen, um ihre Dateien und eMail geheim zu halten.
Geschäftleute benutzen ebenfalls PGP. Stell Dir vor, Du bist ein Geschäftsführer und musst per
eMail einen Angestellten nach seinem Vorankommen befragen. Du könntest gesetzlich verpflichtet
sein, diese eMails geheim zuhalten. Stell Dir vor, Du bist eine Verkäuferin und Du musst mit
Deiner Zentrale über ein öffentliches Computernetzwerk hinweg, deine Kundenliste pflegen. Deine
Firma und der Gesetzgeber kann fordern, dass diese Liste geheim bleibt. Dies sind nur einige
wenige Gründe weswegen im Geschäftsleben Verschlüsselung zum Schutz der Kunden, der
Angestellten und der Firmen selbst eingesetzt wird.
PGP hilft auch bei sicheren Finanzübertragungen. Bspw. die Electronic Frontier Foundations (EFF)
benutzt PGP zur Verschlüsselung von Mitgliedernummern, so dass die Mitglieder per eMail ihre
Beiträge bezahlen können.
[4]
Viele Regierungen, Firmen und Gesetzeshüter benutzen Verschlüsselung um ihre Operationen zu
verstecken. Ja, einige Kirminelle benutzen auch Verschlüsselung. Kriminelle benutzen aber
häufiger Autos, Handschuhe und Masken, um zu entkommen.
PGP ist "Verschlüsselung für die Massen". Es gestattet dem gesetzestreuen Durchschnittsbürger
einige der Schutzmaßnahmen, die die Regierungen und Firmen für sich beanspruchen.
Wie arbeitet PGP?
PGP ist "öffentliches Schlüsselsystem" (public key cryptography). Wenn Du PGP bzw. GnuPG das
erste Mal startest, generiert es zwei "Schlüssel", die nur zu Dir gehören. Stell Dir diese Schlüssel
wie ein Gegenstück zu den Schlüsseln deiner Tasche vor. Ein PGP-Schlüssel ist der geheime
Schlüssel und bleibt auf Deinem Rechner. Der andere Schlüssel ist öffentlich. Du gibst diesen
öffentlichen Schlüssel Deinen Gesprächspartnern. Hier ist ein Beispiel eines öffentlichen
Schlüssels:
-----BEGIN PGP PUBLIC KEY BLOCK----Version: 2.7
mQA9Ai2wD2YAAAEBgJ18cV7rMAFv7P3eBd/cZayI8EEO6XGYkhEO9SLJOw+DFyHg
Px5o+IiR2A6Fh+HguQAFEbQZZGVtbyA8ZGVtb0B3ZWxsLnNmLmNhLnVzPokARQIF
EC2wD4yR2A6Fh+HguQEB3xcBfRTi3D/2qdU3TosScYMAHfgfUwCelbb6wikSxoF5
ees9DL9QMzPZXCioh42dEUXP0g==
=sw5W
-----END PGP PUBLIC KEY BLOCK----Stell Dir vor, der öffentliche Schlüssel gehört zu Dir und Du mailst ihn mir. Ich kann Deinen
öffentlichen Schlüssel in meiner PGP Software speichern und benutze Deinen öffentlichen
Schlüssel, eine Nachricht zu verschlüsseln, die nur Du lesen kannst. Einer der Vorteile von PGP ist,
dass Du mir diesen Schlüssel geben kannst, wie Deine Telefonnummer. Wenn ich Deine
Telefonnummer habe, kann ich Dich anrufen; aber ich kann Dein Telefon nicht abheben. Ähnlich
ist es mit dem öffentlichen Schlüssel: Ich kann Dir eine Nachricht verschlüsseln; Ich kann sie aber
nicht lesen.
[5]
7. Delphi – Programme
7.1. Vigénere Verschlüsselung
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := encryptVigenere(convert(edit1.text), convert(edit4.Text))
Edit3.Text := decryptVigenere(convert(edit2.text), convert(edit4.Text))
end; //zur Chiffrierung -> Großbuchstaben umwandeln, Text, key
function TForm1.encryptVigenere(text,wortkey: String): string;
var
krypted, foo: string;
i,z,zahlkey,zahltext,zahlkrypt: integer;
begin
z := 1;
for i := 1 to length(text) do begin
zahlkey := ord(wortkey[z]);
z := z+1;
if z = length(wortkey) then z := 1;
//key wieder von anfang
zahltext := ord(text[i]);
zahlkrypt := zahltext+zahlkey-65;
if zahlkrypt >90 then zahlkrypt := zahlkrypt-26;
if zahlkrypt < 65 then zahlkrypt := zahlkrypt+26;
krypted := chr(zahlkrypt);
foo := foo + krypted;
end;
encryptVigenere := foo;
end;
function TForm1.decryptVigenere(text,wortkey: String): string;
var
foo, dekrypted: string;
i,z,zahlkey,zahltext,zahlkrypt: integer;
begin
z := 1;
for i := 1 to length(text) do begin
zahlkey := ord(wortkey[z]);
z := z+1;
if z = length(wortkey) then z := 1;
//key wieder von anfang
zahltext := ord(text[i]);
zahlkrypt := zahltext-zahlkey+65;
if zahlkrypt >90 then zahlkrypt := zahlkrypt-26;
if zahlkrypt < 65 then zahlkrypt := zahlkrypt+26;
dekrypted := chr(zahlkrypt);
foo := foo + dekrypted;
end;
decryptVigenere := foo;
end;
function TForm1.convert(astring: Ansistring): string;
//Umlaute umwandeln und nicht Buchdtaben löschen
Var
//todo: Sonderzeichen
umwandeln
tmp: string; i: integer;
begin
tmp := UpperCase(astring);
for i := length(tmp) downto 1 do
//alle nicht Buchastaben löschen
begin
if (tmp[i]<'A') or (tmp[i]>'Z') then
delete(tmp,i,1);
end;
result := tmp;
//Rückgabe
end;
[6]
Herunterladen