Kapitel 6: Restklassenringe und komplexe Zahlen 6.1 6.2 6.3 6.4 6.5 Rechnen modulo n Das RSA-Public-Key-Cryptosystem Prüfzeichencodierung Der Chinesische Restsatz Der Körper der komplexen Zahlen Invertieren modulo n — Algorithmus 6.1.8 • Eingabe: n ∈ N und a ∈ Z mit ggT(a, n) = 1; • Ausgabe: y ∈ {1, ..., n − 1} mit ay ≡ 1 mod n; • wende den erweiterten Euklidischen Algorithmus auf (a, n) an und erhalte (α, β) mit αa + βn = 1, setze y := α mod n, gebe y aus. 2 Square-and-Multiply —- Algorithmus 6.1.9 • Eingabe: g ∈ Z und n, m ∈ N∗; • Ausgabe: g m mod n; • x := 1, y := g, k := m, (∗ g m ≡ xy k mod n ∗) while k > 0 do if k mod 2 = 1 then x := xy mod n, k := k − 1 end-if, y := y 2 mod n, k := k div 2 (∗ g m ≡ xy k mod n ∗) end-do, (∗ g m ≡ xy m mod n, m = 0 ∗) Ausgabe von x. Grundlagen des RSA-Systems — 6.2.2 Jeder Schlüssel K hat hier die Form K = (n, a, b, p, q). 1. n = pq; 2. p und q sind zwei verschiedene Primzahlen; 3. ab ≡ 1 mod ϕ(n), wobei ϕ die Euler-Funktion ist. Demnach müssen a und b invertierbar modulo ϕ(n) sein. 4. Der öffentliche Teil eK des Schlüssels entspricht dem Paar (n, b). 5. Der geheime Teil dK entspricht dem Tripel (p, q, a). 6. Will man K eine Nachricht x zukommen lassen, so sendet man y = eK (x) := xb mod n. 7. Der Empfänger K entschlüsselt die empfangene Nachricht y zu dK (y) := y a mod n = xab mod n. 2 Bemerkungen zum RSA-System — 6.2.5 1. Wie kann ein neuer Teilnehmer des Verbundsystems seinen Schlüssel K = (n, a, b, p, q) wählen? 2. Ist die Berechnung von eK (x) und dK (y) überhaupt effizient durchführbar? 3. Wie steht es mit der Sicherheit? Ist eK eine Einwegfunktion mit Falltür?