Was bisher geschah Symmetrische Verschlüsselung I klassische Verfahren: Substitutionschiffren, Transpositionschiffren I perfektes Verschlüsselungsverfahren: One-Time-Pad I Kerckhoffs-Prinzip I moderne Verfahren: Feistel-Chiffren, DES, AES, IDEA Zahlentheoretische Grundlagen I Teiler I Primzahlen I Kongruenz modulo I Rechnen in Restklassen +n , ·n I Inverse Elemente in Restklassen −a, a−1 Wiederholung: größter gemeinsamer Teiler Z mit ax = b existiert I Teilerrelation: a|b gdw. ein x ∈ I Primzahlen: n ∈ I n = {ni | i ∈ } Menge aller Vielfachen von n größter gemeinsamer Teiler ggT(a, b) = d mit I Z Z N mit genau zwei Teilern 1. d|a und d|b und 2. für jeden Teiler t mit t|a und t|b gilt t|d I Operation ggT ist kommutativ, assoziativ (Minimum in |-Ordnung auf natürlichen Zahlen) Berechnung des ggT mit Hilfe der folgenden Eigenschaften: 1. ggT(a, a) = a 2. ggT(a, b) = ggT(b, a) 3. für a > b gilt ggT(a, b) = ggT(a − b, b) (Euklidischer Algorithmus) Beipiel: ggT(60, 25) Kleiner Satz von Fermat zur Berechnung der multiplikativen Inversen a−1 in Primzahlen n Satz 4.1 Für jede Primzahl n ∈ a ∈ n \ {0} gilt Z Zn für N und jede Zahl (Restklasse) an−1 ≡n 1 Beispiele: I 26 ≡7 64 ≡7 1 I 25 ≡6 32 ≡6 2 ≡ 6 6 1 (6 ist keine Primzahl!) Folgerung 1 N Für jede Primzahl n ∈ und jede Zahl (Restklasse) a ∈ n \ {0} gilt an ≡n a. Z Folgerung 2 N Für jede Primzahl n ∈ und jede Zahl (Restklasse) a ∈ n \ {0} gilt a−1 ≡n an−2 . Beispiel: 6−1 ≡11 69 ≡11 2 Z Eine Verallgemeinerung des kleinen Satz von Fermat Erweiterung (Euler): Für Produkte n = pq zweier Primzahlen p, q und jede Zahl (Restklasse) a ∈ n \ {0} gilt Z a(p−1)(q−1) ≡n 1 und damit Beispiel: Für p = 5, q = 3, a = 2 gilt 2−1 ≡15 24·2−1 ≡15 27 ≡15 8 a(p−1)(q−1)−1 ≡n a−1 Umkehroperation zur Multiplikation Für alle a, b, c ∈ Z gilt: ab−1 ≡n c gdw. a ≡n cb Beispiele: 5 · 2−1 ≡7 6, weil 5 ≡7 6 · 2 Fakt 1 Z Für jede Primzahl n ist in n für alle Zahlen die Division durch jede Zahl i ∈ {1, . . . , n − 1} ohne Rest möglich. Erweiterter Euklidischer Algorithmus Z zur Berechnung der multiplikativen Inversen a−1 in n (für a, n relativ prim, aber n nicht notwendig Primzahl) gegeben: Primzahl n, a ∈ {1, . . . , n − 1} gesucht: a−1 , so dass gilt: a · a−1 ≡n 1 Beispiele: 2−1 ≡3 ?, 5−1 ≡12 , Fakt 2 Z Z Für je zwei Zahlen a, b ∈ existieren Zahlen x, y ∈ , so dass gilt ggT(a, b) = d = xa + yb Anwendung des erweiterten Euklidischen Algorithmus zur Berechnung der multiplikativen Inversen von a in n : Berechnung von x = a−1 in ax ≡n 1 durch ggT(a, n) = 1 = ax + ny Z Erweiterter Euklidischer Algorithmus N Eingabe: A, B ∈ Ausgabe: ganze Zahlen g, p, q, r , s ∈ Z mit g = ggT(A, B) = Ap + Bq = Ar + Bs int p = 1; int q = int r = 0; int s = while (a != b) { if (a > b) { a = a - b; } else { b = b - a; } 0; 1; p = p - r; q = q - s; r = r - p; s = s - q; Invariante: I ggT(a, b) = ggT(A, B) und I Ap + Bq = a und Ar + Bs = b Beispiel: A = 15, B = 11, ggT(A, B) =?, x =?, y =? in Ax + By = ggT(A, B) Erweiterter Euklidischer Algorithmus – Anwendung Z Berechnung des multiplikativen Inversen a−1 in n (für a, n relativ prim, aber n nicht notwendig Primzahl) durch aa−1 ≡n 1 gdw. aa−1 + yn = 1 = ggT(a, n) Erweiterter Euklidischer Algorithmus für Eingaben a, n berechnet x, y mit ax + ny = ggT(a, n) Erweiterter Euklidischer Algorithmus eignet sich zur Bestimmung von x = a−1 in n mit ggT(a, n) = 1 Z Beispiele: 7−1 ≡15 ?, 11−1 ≡14 ?, 9−1 ≡13 ?, 8−1 ≡21 ?