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]