Projekt Crypt Einfache kryptografische Verfahren zum selber programmieren
Projekt Crypt Einfache kryptografische Verfahren zum selber programmieren. von Torsten Zuther
Inhalt Seite 1 1. Einfache klassische Verfahren 1. 1. 1. 2. 1. 3. 1. 4. 1. 5. 1. 6. 1. 7. Cäsarverfahren – altes Prinzip modernisiert Multiplikationsverfahren Tausch-Chiffre Lineare Schieberegister Vigenére-Chiffre Aufblähen-Algorithmus XOR-Verschlüsselung
Inhalt Seite 2 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) o Index Alphabet Chiffriertes Alphabet (s = 4) 1 A E 2 B F … … … 26 Z D
1. 1. Cäsar modernisiert Beispiel: Schlüssel = 11 o aus „CAESAR“ wird „NLPDC“
1. 1. Cäsar modernisiert o 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 o 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 Schlüssel)
1. 2. Multiplikationsverfahren o 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 o 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 o Besteht aus n Bits (Zellen) und einem Index m (die markierte Zelle) Beispiel: 0 0 1 1 1 0 1 1 m=4 n Register wird 2 – 1 mal nach rechts verschoben
1. 4. Lineare Schieberegister 0 0 1. . . 0 0 0. . . 1 1 0 0 0. . . Schlüssel = 11011. . . 1 1 1 0 0. . . 0 1 1 1 0. . . 1 0 1 1 1. . . 1 1 0 1 1. . .
1. 4. Lineare Schieberegister Beispiel Klartext = 01101111; Schlüssel = 11101100 o Verschlüsselt = Klartext xor Schlüssel 01101111 ++11101100 10000011 Ciphertext
1. 5. Vigenére-Chiffre o Ähnlich dem Cäsarverfahren, aber mit mehreren versch. Schlüsseln zu einem Passwort zusammengefügt: Klartext = "CAESAR" Passwort = "TEST" Verschlüsselung: C A E T(s=20) E(s=5) S(s=19) S A R T(s=20) E(s=5)
1. 5. Vigenére-Chiffre o Garantiert 100%ige Sicherheit, wenn Passwortlänge = Klartextlänge Keine Häufigkeitenanalyse One-Time-Pad
1. 6. Aufblähen-Algorithmus o Klartext = "Test" = c 0 + c 1 + c 2 + c 3 Verschlüsseln durch Verwirbelung Ciphertext = c 1 + R 0 + c 3 + R 1 + c (Vertauschen von je zwei Zeichen und Einfügen eines Zufallszeichens in deren Mitte)
1. 7. XOR-Verschlüsselung o o Einfachstes symmetrisches Verfahren Schwacher Schutz Jedes Klartextzeichen wird XOR mit dem Schlüssel verknüpft. Entschlüsseln = Verschlüsseln
2. 1. Das RSA-Verfahren o o o 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 q q 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. Gg. T(e, [p-1]*[q-1]) = 1 d = die Inverse von e im Modul (p-1)*(q-1)
2. 1. Das RSA-Verfahren o 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 o Klartext = 2 c = 2^e mod n = 2 ^ 7 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
2. 1. Das RSA-Verfahren o Angriffsmöglichkeiten: Brute. Force-Attacke (aussichtslos) Primfaktorzerlegung von n um auf d zu schließen (bei n >= 1000 Bits aussichtslos)
2. 2. Der Data Encryption Standard (DES) o 64 Bit Daten werden mit einem 64 Bit Schlüssel verschlüsselt (bzw. 56 Bit) Symmetrisches Verfahren o Grafische Darstellung (nächste Seite) o
Beispiel Permutationstabelle: type TPTab = array[1. . 64] of Byte; const IPTab: 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: type SBox = array[0. . 3, 0. . 15] of Byte; const S 1: 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, 06, 13)); { BEISPIEL: Input : 6 Bits: "101011" Output : 4 Bits: Zeile 11 b = 3; Spalte 0101 b = 5 }
Quellen: http: //goethe. ira. uka. de/seminare/dzs/ec/des 2. png http: //dud. inf. tu-dresden. de/~pfitza/DSu. Krypt. pdf Lehr- und Übungsbuch Mathematik für Informatiker (Prof. Dr. Aulenbacher, Prof. Dr. Meyer, Dipl. -Math. Wabel-Frenk, Prof. Dr. Wenisch; Fachbuchverlag Leipzig) ENDE
- Slides: 28