Prof. Dr. V. Strehl, Informatik 8 WS 2007/08 15. Januar 2008 Übungen zu Theoretische Informatik 3 Si fuerit N ad x numerus primes et n numerus partium an N primarum, tum potestas xn unitate minuta semper per numerum N erit divisibilis. L. Euler, “Theoremata arithmetica nova methodo demonstrata”, Novi comentarii academiae scientiarum Petropolitanae 8 (1760), 74–104. • Aufgabe 34: Verschlüsselung und RSA-System In dieser Aufgabe seien die 26 Buchstaben des Alphabets mit den numerischen Werten von 0 bis 25 codiert, also A ↔ 00, B ↔ 01, C ↔ 02, . . . , Z ↔ 25. Je drei Buchstaben einer Text-Nachricht werden zusammengefasst, ergeben also eine sechsstellige Dezimalzahl. Eine Nachricht wird also als Folge von sechstelligen Zahlen codiert, also z.B. FAU ↔ 050020. Sollte die Buchstaben-Länge einer Nachricht nicht durch 3 teilbar sein, wird mit ein oder zwei beliebigen Zeichen aufgefüllt. 1. Die Zahl p = 4578971 ist eine Primzahl. Weiter werde der Exponent e = 3317271 zum Verschlüsseln benutzt, d.h E : M 7→ M e (mod p) für Zahlen M mit 0 ≤ M < p. Verschlüsselt werden also jeweils Blöcke von 7 Dezimalzahlen übertragen, die eine Zahl < p darstellen. Entschlüsseln Sie die verschlüsselte Nachricht 4137884 438421 3227477 233970 2. Ein Teilnehmer an einem public-key RSA-Kryptosystem hat seine Systemparameter p = 1733, q = 2347, also n = 4067351 gewählt. Als Verschlüsselungsexponenten gibt er e = 31 öffentlich bekannt. (a) Welches ist der Entschlüsselungsexponent d? (b) Der Teilnehmer erhält die Nachricht 2721372 3969831 2416419 1795753 2110079 0242624 0889174 Wie lautet der Klartext? • Aufgabe 35: Eine Variante des RSA-Systems Die hier beschriebene Variante des RSA.-Kryptosystems ist in der Tat ein Vorläufer, nämlich das von James Ellis und Clifford Cocke vom britischen Nachrichtendienst GCHQ entwickelte Protokoll. Wie üblich geht es darum, dass jede(r) Teilnehmer(in) (Alice, Bob, Claire, . . . ) für sich Daten berechnet und diese teilweise öffentlich bekannt gibt. Diese öffentlichen Daten sind für die Verschlüsselung zu verwenden, wenn man ihm/ihr geheimzuhaltende Nachrichten schicken will. Die von dem Teilnehmer privat gehaltenen Daten werden bei der Entschlüsselung verwendet. Es geht bei der folgenden Beschreibung wie üblich um die Nachrichtenübertragung von Alice and Bob. – Bob 1. wählt zwei (grosse) Primzahlen p, q, wobei p - q − 1 und q - p − 1; 2. berechnet r = p−1 mod (q − 1), s = q −1 mod (p − 1), u = p−1 mod q, v = q −1 mod p; 3. berechnet N = p · q, gibt N öffentlich bekannt und hält (p, q, r, s, u, v) als private Daten geheim. 1 – Alice will eine Nachricht an Bob schicken. Sie codiert diese Nachricht numerisch als eine Folge von Zahlen M mit 0 ≤ M < N , berechnet jeweils C = M N mod N und schickt C an Bob. – Bob nimmt die empfangene Zahl C, berechnet zunächst a = C s mod p und b = C r mod q und dann M 0 = u · b · p + v · a · q mod N 1. Bob wählt p = 5, q = 7. Berechnen Sie die übrigen Parameter N, r, s, u, v für Bob. Welche verschlüsselte Nachricht C schickt Alice and Bob, wenn sie ihm M = 10 mitteilen möchte? Vollziehen Sie Bobs Entschlüsselung in diesem Fall nach. 2. Beweisen Sie, dass dieses Protokoll korrekt ist, d.h., dass stets M 0 = M gilt. 3. Diskutieren Sie die Effizienz und die Sicherheit dieses Protokolls! Aufgabe 36: Eine RSA-Schwachstelle Bob hat RSA-Parameter (N, e) öffentlich bekanntgegeben. Alice möchte an Bob eine Nachricht M mit 0 ≤ M < N schicken. Dummerweise ist ihr beim Lesen des Verschlüsselungsexponenten 0 e ein einzelnes bit gekippt, was sie aber nicht bemerkt. Sie schickt also C 0 = M e mod N an Bob. Der bemerkt beim Entschlüsseln, dass da etwas nicht stimmen kann und bittet Alice, die Nachricht nochmal, aber mit der korrekten Verschlüsselung zu schicken. Alice macht das, berechnet also C = M e mod N und schickt dies an Bob. Eve bekommt mit, dass Bob zweimal dieselbe (!) Nachricht M verschlüsselt und an Bob geschickt hat. Wie kann sie aus der Kenntnis von C und C 0 die Nachricht M ermitteln? 2