280 likes | 428 Views
Projekt Crypt . Einfache kryptografische Verfahren zum selber programmieren. von Torsten Zuther. Inhalt Seite 1. Einfache klassische Verfahren 1.1. Cäsarverfahren – altes Prinzip modernisiert 1.2. Multiplikationsverfahren 1.3. Tausch-Chiffre
E N D
Projekt Crypt Einfache kryptografische Verfahren zum selber programmieren. von Torsten Zuther
Inhalt Seite 1 • Einfache klassische Verfahren 1.1. Cäsarverfahren – altes Prinzip modernisiert 1.2. Multiplikationsverfahren 1.3. Tausch-Chiffre 1.4. Lineare Schieberegister 1.5. Vigenére-Chiffre 1.6. Aufblähen-Algorithmus 1.7. XOR-Verschlüsselung
Inhalt Seite 2 • Schwer invertierbare Verfahren 2.1. Das RSA-Verfahren 2.2. Der Data Encryption Standard(DES)
1.1. Cäsar modernisiert • Idee von Cäsar: (Verschiebung des Alphabets um s Einheiten)
1.1. Cäsar modernisiert • Beispiel: Schlüssel = 11 aus „CAESAR“ wird „NLPDC“
1.1. Cäsar modernisiert • Das Alphabet hier besteht aus 256 Zeichen (ASCII-Zeichensatz). • 0 < s < 256 255 Schlüssel
1.1. Cäsar modernisiert Beispiel (s = 46):
1.2. Multiplikationsverfahren • Starke Verwandtschaft mit dem Cäsarverfahren Jedes Zeichen wird im Modul 256 mit t multipliziert. (t ist der Schlüssel) K = 44 (Klartext) M = 256 (das Modul, der ASCII-Zeichensatz) T = 11 (t, der Multiplikator oder der Schlüssel)
1.2. Multiplikationsverfahren • Beispiel: Verschlüsselung: (K * t) mod m = (44 * 11) mod 256 = 484 mod 256 C (Ciphertext)= 228 Entschlüsselung: (modulare Inverse von t ausrechen – mit dem euklidischen Algorithmus) (C * inv t) mod m = (228 * 163) mod 256 = K = 37164 mod 256 = 44
1.3. Tausch-Chiffre • Kapselt Cäsar- und Multiplikationsverfahren Verschlüsselung: c = [(k + s) * t] mod m Entschlüsselung: k = [(c * inv t) – s] mod m
1.4. Lineare Schieberegister • Besteht aus n Bits (Zellen) und einem Index m (die markierte Zelle) Beispiel: 0 0 1 1 1 0 1 1 m = 4 Register wird 2n – 1 mal nach rechts verschoben
1.4. Lineare Schieberegister Schlüssel = 11011...
1.4. Lineare Schieberegister • Beispiel Klartext = 01101111; Schlüssel = 11101100 Verschlüsselt = Klartext xor Schlüssel 01101111 ++11101100 10000011 Ciphertext
1.5. Vigenére-Chiffre • Ähnlich dem Cäsarverfahren, aber mit mehreren versch. Schlüsseln zu einem Passwort zusammengefügt: Klartext = "CAESAR" Passwort = "TEST" Verschlüsselung:
1.5. Vigenére-Chiffre • Garantiert 100%ige Sicherheit, wenn Passwortlänge = Klartextlänge • Keine Häufigkeitenanalyse • One-Time-Pad
1.6. Aufblähen-Algorithmus • Klartext = "Test" = c0 + c1 + c2 + c3 Verschlüsseln durch Verwirbelung • Ciphertext = c1 + R0 + c0 + c3 + R1 + c (Vertauschen von je zwei Zeichen und Einfügen eines Zufallszeichens in deren Mitte)
1.7. XOR-Verschlüsselung • Einfachstes symmetrisches Verfahren • Schwacher Schutz Jedes Klartextzeichen wird XOR mit dem Schlüssel verknüpft. Entschlüsseln = Verschlüsseln
2.1. Das RSA-Verfahren • Beruht auf dem Problem der Primfaktorenzerlegung, das bei großen Zahlen (>512 Bit) enormen Rechenaufwand verursacht. • Asymmetrisches Verfahren • 3 Schlüssel (2 öffentliche, 1 geheimer): öffentlich: das Modul n, der Encryptor e geheim : der Decryptor d
2.1. Das RSA-Verfahren • Zunächst Schlüsselerzeugung • p und q (beide prim) bilden das Modul n: • n = p * q • e ist teilerfremd zu (p-1)*(q-1), d.h. GgT(e,[p-1]*[q-1]) = 1 • d = die Inverse von e im Modul (p-1)*(q-1)
2.1. Das RSA-Verfahren • Nun kann verschlüsselt werden (Beispiel): p = 17; q = 31 n = p * q = 527 e muss teilerfremd zu (p-1) * (q-1) sein z.B.e =7 d = inv e (im Modul (17-1)*(31-1) = 480) d =343
2.1. Das RSA-Verfahren • Klartext = 2 c = 2^e mod n = 2 ^ 7 mod 527 = 128 mod 527 = 128
2.1. Das RSA-Verfahren Entschlüsseln Klar = 128^d mod n = 128^343 mod 527 = 128256 * 12864 * 12816 * 1284 * 1282* 1281 mod 527 = 35 * 256 * 35 * 101 * 47 * 128 mod 527 = 2 mod 527 = 2
2.1. Das RSA-Verfahren • Angriffsmöglichkeiten: BruteForce-Attacke (aussichtslos) Primfaktorzerlegung von n um auf d zu schließen (bei n >= 1000 Bits aussichtslos)
2.2. Der Data Encryption Standard (DES) • 64 Bit Daten werden mit einem 64 Bit Schlüssel verschlüsselt (bzw. 56 Bit) • Symmetrisches Verfahren • Grafische Darstellung (nächste Seite)
Beispiel Permutationstabelle:typeTPTab = array[1..64] of Byte; constIPTab: TPTab =(58,50,42,34,26,18,10,02,60,52,44,36,28,20,12,04, 62,54,46,38,30,22,14,06,64,56,48,40,32,24,16,08, 57,49,41,33,25,17,09,01,59,51,43,35,27,19,11,03, 61,53,45,37,29,21,13,05,63,55,47,39,31,23,15,07);
Beispiel Sbox:typeSBox = array[0..3,0..15] of Byte;const S1: SBox =((14,04,13,01,02,15,11,08,03,10,06,12,05,09,00,07), (00,15,07,04,14,02,13,01,10,06,12,11,09,05,03,08), (04,01,14,08,13,06,02,11,15,12,09,07,03,10,05,00), (15,12,08,02,04,09,01,07,05,11,03,14,10,00,06,13));{ BEISPIEL: Input : 6 Bits: "101011" Output : 4 Bits: Zeile 11b = 3; Spalte 0101b = 5 }
Quellen:http://goethe.ira.uka.de/seminare/dzs/ec/des2.pnghttp://dud.inf.tu-dresden.de/~pfitza/DSuKrypt.pdfLehr- und Übungsbuch Mathematik für Informatiker (Prof. Dr. Aulenbacher, Prof. Dr. Meyer, Dipl.-Math. Wabel-Frenk, Prof. Dr. Wenisch; Fachbuchverlag Leipzig)ENDE