150 likes | 276 Views
Kryptographie - ein Exkurs Kodieren/Dekodieren, Verschlüsseln/Entschlüsseln, Chiffrieren/Dechiffrieren zum Zweck der Geheimhaltung, zur Authentifizierung, zum Signieren, non repudiation ... e-commerce passwords, ChipCards, e-cash, e-banking, ... ECC .
E N D
Kryptographie - ein ExkursKodieren/Dekodieren, Verschlüsseln/Entschlüsseln, Chiffrieren/Dechiffrieren zum Zweck der Geheimhaltung, zur Authentifizierung, zum Signieren, non repudiation ... e-commercepasswords, ChipCards, e-cash, e-banking, ...ECC ...
Albrecht Beutelspacher: Kryptologie; Vieweg 1991 Wilfried Dankmeier: Codierung; Vieweg 1994 Otto Forster: Algorithmische Zahlentheorie; Vieweg 1996 Rudolph Kippenhahn: Verschlüsselte Botschaften - Geheimschrift, Enigma und Chipkarte; Rowohlt 1997 David Kahn: The Codebreakers; New York 1967 Euklid (ca 300 c.Chr.), Gaius Julius Caesar (), Johannes Trithemius (1462-1516), Blaise de Vigenère (1523-1596), Pierre de Fermat (1601-1665), Leonhard Euler (1707-1783), Friedrich W. Kasiski (1805-1881), Alan M. Turing (1912-1952), Ronald L. Rivest, Adi Shamir, Leonard Adleman, Diffie, Martin E. Hellmann, Philipp (Phil) Zimmermann, usw. data encryption standard (DES), RSA, PGP, IDEA etc.
Caesar Mit der Verschlüsselungsvorschrift (encryption) e:chr(chr+key) mod 26 oder tabellarisch etwa chr a b c d e f g h i j k l m e(chr) D E F G H I J K L M N O P chr n o p q r s t u v w x y z e(chr) Q R S T U V W X Y Z A B C (key=?) wird Klartext chiffriert, z.B. t r a u e n i e m a n d W U D X H Q L H P D Q G bzw. Chiffriertext mit (decryption) d:chr(chr-key) mod 26 dechiffriert. Leerzeichen evtl. als eigenen Buchstabe auffassen! Realisierung durch Buchstaben-Scheibe.
Trithemius • 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 • ... • 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
führt auf eine die Häufigkeit verschleiernde Kodierung, beispielsweise e i n e i a l l e i n e E J P H M F R S M R X P Vigenère DieVigenère-Verschlüsselung ist eine Trithemius-Verschlüsselung mit Schlüsselwort. Schlüssel-Raum? brute force attack? Entscheidend ist die Kenntnis der Länge des Schlüsselwortes, die mit der Methode von Kasiski zu bestimmen ist: gleiche Buchstabenfolgen im Chiffriertext (von denselben Klartext-Wort(-Teilen) stammend) haben im Geheimtext ein Vielfaches der Schlüssel-Länge als Abstand.
Data Encryption Standard (DES) • symmetrisch, d.h. derselbe Schlüssel für Codierung wie für Decodierung • hardware-nah u.a. durch iterierte bit-Operationen, also schnell und sparsam (Realisierung auf Prozessor-Chip-Karten) • Entwicklung der IBM in USA, 1977 standardisiert vom NBS, Verbesserungen (triple DES etc), Export-Beschränkungen ...
RSA RSA (Rivest, Shamir, Adleman: A Method for Obtaining Digital Signatures and Public-Key Cryptosystems; CACM 21 (Feb 1978), 120-126) ist ein asymmetrisches Verfahren, d.h. mit verschiedenen Schlüsseln zum Chiffrieren und Dechiffrieren. Dabei ist ein Schlüssel öffentlich (public key). Def.: Für nN heißt (n)=kN:k<n, ggt(k,n)=1 Euler-Funktion. z.B.: (5)=1,2,3,4=4 und (18)=1,5,7,11,13,17=6 Der Euklid'sche Algorithmus berechnet den größten gemeinsamen Teiler ggt(x,y) von x und y entweder rekursiv oder iterativ.
rekursiv unsigned gcd(int x, int y) { // wegen x=(x/y)*y+x\%y if (y==0) return abs(x); else return gcd(y,x%y); } // end gcd iterativ unsigned gcd(int x, int y) { // wegen x=(x/y)*y+x\%y while (y!=0) { int temp=y; y=x%y; x=temp; } return abs(x); } // end gcd
Die Umkehrung des Algorithmus erlaubt die Berechnung des modularen Inversen. Bem.: Für jede Primzahl p gilt (p)=1,2,...,p-1=p-1. Für alle Primzahlen p und q gilt (pq)=(p-1)(q-1), da ja (pq)=1,2,...,pq-1=1,2,...,pq-1-1p,2p,...,(q-1)p- 1q,2q,...,(p-1)q=pq-1-(q-1)-(p-1)=(p-1)(q-1). Satz: (kleiner Satz von Fermat) Sei p prim und a nicht durch p teilbar. Dann gilt ap-1mod p=1. z.B.: 53-1mod 3 = 25 mod 3 = 1, 35-1 mod 5 = 81 mod 5 = 1 großer Satz von Fermat: x²+y²=z² hat Lösungen in N, aber xn+yn=zn für n>2 nicht!
Satz: (Euler) Sei 1<nN und a N zu n teilerfremd, also ggt(a,n)=1. Dann gilt a(n)mod n=1. z.B.: (18)=1,5,7,11,13,17=6,5(18)mod 18 = 56 mod 18 = 15625 mod 18 = (18*868+1) mod 18 = 1 Sei nun n=pq für zwei Primzahlen p und q. Sei e zu (n) teilerfremd und seien e und d zueinander modulo (n) invers, d.h. ed mod (n)=1. Das Paar e und n bildet den öffentlichen Schlüssel, das Paar d (und n) bildet den geheimen Schlüssel. Verschlüsseln des Klartextes K durch Ke mod n liefert den Geheimtext G. Entschlüsseln des Geheimtextes G durch Gd mod n liefert den Klartext K.
Da e und d modulo (n) invers zueinander, gilt (ed) mod (n) =1 oder eben ed= v (n)+1 für ein vN. Also ist Gd mod n = (Ke mod n)d mod n = Ked mod n = Kv(n)+1mod n = K (K(n) mod n)v mod n = K 1v mod n = K mod n = K Entschlüsseln des Geheimtextes liefert den Klartext zurück!
Beispiel Sei n = pq = 5*7. Dann ist (n)=(p-1)(q-1) = 4*6 = 24 und e=11 ist teilerfremd zu (n) = 24, etwa zu verifizieren mit dem Euklid'schen Algorithmus. Ebenso mit dem Euklid'schen Algorithmus bestimmt man das modulo (n) Inverse d = 11 von e mit (ed) mod (n) = 1. Der Klartext K = 13 < 35 = n wird zum Geheimtext G = Ke mod n = 1311 mod 35 = 13(132 mod 35)5 mod 35 = 13 295 mod 35 = 13 29 (292 mod 35)2 mod 35 = 13 29 12 mod 35 = 13 29 mod 35 = 27 chiffriert. Der Geheimtext G = 27 wird wieder zum Klartext K = Gd mod n = 2711 mod 35 = 27(272 mod 35)5 mod 35 = 27 295 mod 35 = 27 29 (292 mod 35)2 mod 35 = 27 29 12 mod 35 = 27 29 mod 35 = 13 dechiffriert.
Weitere Zahlen-Beispiele Dankmeier S.242, Risse Kippenhahn S.277 Dankmeier S.241 Kippenhahn S.341 q 5 5 577 48611 q 7 17 419 1009 n 35 85 241763 49048499 (n) 24 64 240768 48998880 e 11 5 1264763 61 d 11 13 221747 2409781 K 13 24 1223 18151905 G 27 79 96883 10697935 Ein Beispiel mit 40- bzw. 41-stelligen Primzahlen in Forster, S.125ff.
Anwendungen S(ender) möchte R(eciever) den Klartext K vertraulich senden: e=eR und n=nR sind öffentlich. S versendet den Geheimtext G = Ke mod n, den nur R zum Klartext K = Gd mod n entschlüsseln kann. S(ender) möchte einen Klartext K signieren: S kodiert K oder zu G = Kd mod n oder erzeugt zu K explizit die Digitale Signatur Sig(K)= (hash(K))d mod n. R(eciever) hat mit K = Ge mod n bzw. hash(K) = (Sig(K))e mod n nicht nur das Dokument K sondern auch seine gesicherte Echtheit (Authenizität).