Das Rechnen mit Resten und seine Anwendung in der Kryptographie
Das Rechnen mit Resten und seine Anwendung in der Kryptographie
Das Rechnen mit Resten und seine Anwendung in der Kryptographie
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Das</strong> <strong>Rechnen</strong> <strong>mit</strong> <strong>Resten</strong><br />
<strong>und</strong> <strong>se<strong>in</strong>e</strong> <strong>Anwendung</strong> <strong>in</strong> <strong>der</strong> <strong>Kryptographie</strong><br />
Eva Zerz
Restklassenarithmetik<br />
Beispiel: Uhrzeit 23 + 4 ≡ 24 3<br />
W<strong>in</strong>kel 300 + 90 ≡ 360 30
Restklassenarithmetik<br />
Beispiel: Uhrzeit 23 + 4 ≡ 24 3<br />
W<strong>in</strong>kel 300 + 90 ≡ 360 30<br />
Addition: a + b ≡ n c ⇔<br />
es gibt e<strong>in</strong> k <strong>mit</strong> a + b − kn = c ⇔<br />
a + b − c ist e<strong>in</strong> Vielfaches von n
Restklassenarithmetik<br />
Beispiel: Uhrzeit 23 + 4 ≡ 24 3<br />
W<strong>in</strong>kel 300 + 90 ≡ 360 30<br />
Addition: a + b ≡ n c ⇔<br />
es gibt e<strong>in</strong> k <strong>mit</strong> a + b − kn = c ⇔<br />
a + b − c ist e<strong>in</strong> Vielfaches von n<br />
Multiplikation: a · b ≡ n c ⇔<br />
es gibt e<strong>in</strong> k <strong>mit</strong> a · b − kn = c ⇔<br />
a · b − c ist e<strong>in</strong> Vielfaches von n<br />
2 von 10
Modulo-Dividieren? Kehrwerte bilden?<br />
Def<strong>in</strong>ition: Gilt a · b ≡ n 1, so ist b <strong>der</strong> Kehrwert von a modulo n.<br />
Wenn es so e<strong>in</strong> b gibt, dann nennt man a umkehrbar (<strong>in</strong>vertierbar)<br />
modulo n.
Modulo-Dividieren? Kehrwerte bilden?<br />
Def<strong>in</strong>ition: Gilt a · b ≡ n 1, so ist b <strong>der</strong> Kehrwert von a modulo n.<br />
Wenn es so e<strong>in</strong> b gibt, dann nennt man a umkehrbar (<strong>in</strong>vertierbar)<br />
modulo n.<br />
Beispiel:<br />
• 2 ist nicht <strong>in</strong>vertierbar modulo 4, denn<br />
2 · 0 ≡ 4 0, 2 · 1 ≡ 4 2, 2 · 2 ≡ 4 0, 2 · 3 ≡ 4 2
Modulo-Dividieren? Kehrwerte bilden?<br />
Def<strong>in</strong>ition: Gilt a · b ≡ n 1, so ist b <strong>der</strong> Kehrwert von a modulo n.<br />
Wenn es so e<strong>in</strong> b gibt, dann nennt man a umkehrbar (<strong>in</strong>vertierbar)<br />
modulo n.<br />
Beispiel:<br />
• 2 ist nicht <strong>in</strong>vertierbar modulo 4, denn<br />
2 · 0 ≡ 4 0, 2 · 1 ≡ 4 2, 2 · 2 ≡ 4 0, 2 · 3 ≡ 4 2<br />
• 2 <strong>in</strong>vertierbar modulo 5, denn es gilt 2 · 3 ≡ 5 1<br />
3 von 10
Satz: a ist modulo n <strong>in</strong>vertierbar ⇔<br />
a <strong>und</strong> n s<strong>in</strong>d teilerfremd, das heißt, ggT(a, n) = 1
Satz: a ist modulo n <strong>in</strong>vertierbar ⇔<br />
a <strong>und</strong> n s<strong>in</strong>d teilerfremd, das heißt, ggT(a, n) = 1<br />
Beweis (“leichte” Richtung): Sei a · b ≡ n 1. Dann gibt es k <strong>mit</strong><br />
ab − kn = 1.<br />
Sei g = ggT(a, n).<br />
Dann ist g auch e<strong>in</strong> Teiler von ab − kn, also von 1.<br />
Es folgt g = 1. □
Satz: a ist modulo n <strong>in</strong>vertierbar ⇔<br />
a <strong>und</strong> n s<strong>in</strong>d teilerfremd, das heißt, ggT(a, n) = 1<br />
Beweis (“leichte” Richtung): Sei a · b ≡ n 1. Dann gibt es k <strong>mit</strong><br />
ab − kn = 1.<br />
Sei g = ggT(a, n).<br />
Dann ist g auch e<strong>in</strong> Teiler von ab − kn, also von 1.<br />
Es folgt g = 1. □<br />
An<strong>der</strong>e Richtung: Euklidischer Algorithmus<br />
Beispiel: 4 ist modulo 6 7 ist modulo 15
Satz: a ist modulo n <strong>in</strong>vertierbar ⇔<br />
a <strong>und</strong> n s<strong>in</strong>d teilerfremd, das heißt, ggT(a, n) = 1<br />
Beweis (“leichte” Richtung): Sei a · b ≡ n 1. Dann gibt es k <strong>mit</strong><br />
ab − kn = 1.<br />
Sei g = ggT(a, n).<br />
Dann ist g auch e<strong>in</strong> Teiler von ab − kn, also von 1.<br />
Es folgt g = 1. □<br />
An<strong>der</strong>e Richtung: Euklidischer Algorithmus<br />
Beispiel: 4 ist modulo 6 7 ist modulo 15<br />
nicht <strong>in</strong>vertierbar <strong>in</strong>vertierbar: 7 · 13 ≡ 15 1<br />
4 von 10
Eulersche phi-Funktion<br />
ϕ(n) = Anzahl <strong>der</strong> Zahlen m <strong>mit</strong> 1 ≤ m ≤ n <strong>und</strong> ggT(m, n) = 1<br />
Beispiel: ϕ(5) = 4, ϕ(7) = 6
Eulersche phi-Funktion<br />
ϕ(n) = Anzahl <strong>der</strong> Zahlen m <strong>mit</strong> 1 ≤ m ≤ n <strong>und</strong> ggT(m, n) = 1<br />
Beispiel: ϕ(5) = 4, ϕ(7) = 6<br />
Allgeme<strong>in</strong>: ϕ(p) = p − 1 für Primzahlen p
Eulersche phi-Funktion<br />
ϕ(n) = Anzahl <strong>der</strong> Zahlen m <strong>mit</strong> 1 ≤ m ≤ n <strong>und</strong> ggT(m, n) = 1<br />
Beispiel: ϕ(5) = 4, ϕ(7) = 6<br />
Allgeme<strong>in</strong>: ϕ(p) = p − 1 für Primzahlen p<br />
Beispiel:<br />
ϕ(4) =
Eulersche phi-Funktion<br />
ϕ(n) = Anzahl <strong>der</strong> Zahlen m <strong>mit</strong> 1 ≤ m ≤ n <strong>und</strong> ggT(m, n) = 1<br />
Beispiel: ϕ(5) = 4, ϕ(7) = 6<br />
Allgeme<strong>in</strong>: ϕ(p) = p − 1 für Primzahlen p<br />
Beispiel:<br />
ϕ(4) = 2<br />
ϕ(6) =
Eulersche phi-Funktion<br />
ϕ(n) = Anzahl <strong>der</strong> Zahlen m <strong>mit</strong> 1 ≤ m ≤ n <strong>und</strong> ggT(m, n) = 1<br />
Beispiel: ϕ(5) = 4, ϕ(7) = 6<br />
Allgeme<strong>in</strong>: ϕ(p) = p − 1 für Primzahlen p<br />
Beispiel:<br />
ϕ(4) = 2<br />
ϕ(6) = 2<br />
ϕ(8) =
Eulersche phi-Funktion<br />
ϕ(n) = Anzahl <strong>der</strong> Zahlen m <strong>mit</strong> 1 ≤ m ≤ n <strong>und</strong> ggT(m, n) = 1<br />
Beispiel: ϕ(5) = 4, ϕ(7) = 6<br />
Allgeme<strong>in</strong>: ϕ(p) = p − 1 für Primzahlen p<br />
Beispiel:<br />
ϕ(4) = 2<br />
ϕ(6) = 2<br />
ϕ(8) = 4<br />
ϕ(9) =
Eulersche phi-Funktion<br />
ϕ(n) = Anzahl <strong>der</strong> Zahlen m <strong>mit</strong> 1 ≤ m ≤ n <strong>und</strong> ggT(m, n) = 1<br />
Beispiel: ϕ(5) = 4, ϕ(7) = 6<br />
Allgeme<strong>in</strong>: ϕ(p) = p − 1 für Primzahlen p<br />
Beispiel:<br />
ϕ(4) = 2<br />
ϕ(6) = 2<br />
ϕ(8) = 4<br />
ϕ(9) = 6<br />
5 von 10
Satz von Euler <strong>und</strong> Fermat<br />
Seien a, n teilerfremd. Dann gilt<br />
a ϕ(n) ≡ n 1<br />
Beispiel:<br />
• n = 5, ϕ(5) = 4<br />
1 4 ≡ 5 1, 2 4 ≡ 5 1, 3 4 ≡ 5 1, 4 4 ≡ 5 1
Satz von Euler <strong>und</strong> Fermat<br />
Seien a, n teilerfremd. Dann gilt<br />
a ϕ(n) ≡ n 1<br />
Beispiel:<br />
• n = 5, ϕ(5) = 4<br />
1 4 ≡ 5 1, 2 4 ≡ 5 1, 3 4 ≡ 5 1, 4 4 ≡ 5 1<br />
• n = 10, ϕ(10) = 4<br />
1 4 ≡ 10 1, 3 4 ≡ 10 1, 7 4 ≡ 10 1, 9 4 ≡ 10 1<br />
6 von 10
Beweisskizze zum Satz von Euler <strong>und</strong> Fermat:<br />
Sei M die Menge aller modulo n <strong>in</strong>vertierbaren Elemente.<br />
M hat ϕ(n) Elemente.
Beweisskizze zum Satz von Euler <strong>und</strong> Fermat:<br />
Sei M die Menge aller modulo n <strong>in</strong>vertierbaren Elemente.<br />
M hat ϕ(n) Elemente.<br />
Da ggT(a, n) = 1, ist a modulo n <strong>in</strong>vertierbar.<br />
Daher M = {m 1 , . . . , m ϕ(n) } = {am 1 , . . . , am ϕ(n) } <strong>und</strong>
Beweisskizze zum Satz von Euler <strong>und</strong> Fermat:<br />
Sei M die Menge aller modulo n <strong>in</strong>vertierbaren Elemente.<br />
M hat ϕ(n) Elemente.<br />
Da ggT(a, n) = 1, ist a modulo n <strong>in</strong>vertierbar.<br />
Daher M = {m 1 , . . . , m ϕ(n) } = {am 1 , . . . , am ϕ(n) } <strong>und</strong><br />
m 1 · · · m ϕ(n) ≡ n am 1 · · · am ϕ(n) ≡ n a ϕ(n) m 1 · · · m ϕ(n)<br />
<strong>und</strong> so<strong>mit</strong> 1 ≡ n a ϕ(n) .<br />
□<br />
7 von 10
Verschlüsseln von geheimen Botschaften<br />
A wählt n = p · q, wobei p ≠ q große Primzahlen<br />
Es gilt ϕ(n) = (p − 1)(q − 1)
Verschlüsseln von geheimen Botschaften<br />
A wählt n = p · q, wobei p ≠ q große Primzahlen<br />
Es gilt ϕ(n) = (p − 1)(q − 1)<br />
A wählt e <strong>mit</strong> ggT(e, ϕ(n)) = 1 <strong>und</strong> berechnet d <strong>mit</strong> e · d ≡ ϕ(n) 1<br />
A gibt n <strong>und</strong> e bekannt (public key)
Verschlüsseln von geheimen Botschaften<br />
A wählt n = p · q, wobei p ≠ q große Primzahlen<br />
Es gilt ϕ(n) = (p − 1)(q − 1)<br />
A wählt e <strong>mit</strong> ggT(e, ϕ(n)) = 1 <strong>und</strong> berechnet d <strong>mit</strong> e · d ≡ ϕ(n) 1<br />
A gibt n <strong>und</strong> e bekannt (public key)<br />
B will Botschaft a senden, berechnet a e ≡ n c <strong>und</strong> schickt c an A<br />
A berechnet c d ≡ n (a e ) d ≡ n a ed ≡ n a 1+kϕ(n) ≡ n a<br />
8 von 10
Sicherheit<br />
Berechnung von n = p · q <strong>und</strong> ϕ(n) = (p − 1)(q − 1) aus p, q<br />
ist leicht (Multiplikation)<br />
Berechnung von d <strong>mit</strong> e · d ≡ ϕ(n) 1 aus e ist leicht<br />
(Euklidischer Algorithmus)
Sicherheit<br />
Berechnung von n = p · q <strong>und</strong> ϕ(n) = (p − 1)(q − 1) aus p, q<br />
ist leicht (Multiplikation)<br />
Berechnung von d <strong>mit</strong> e · d ≡ ϕ(n) 1 aus e ist leicht<br />
(Euklidischer Algorithmus)<br />
Berechnung von p, q aus n ist sehr schwer<br />
(Primfaktorzerlegung großer Zahlen)<br />
Daher: trotz Bekanntgabe von n, e kommt e<strong>in</strong> Lauscher<br />
nur schwer an p, q, ϕ(n), d heran<br />
9 von 10
Fazit<br />
Methoden von<br />
• Euklid (ca. 360-280 v.Chr.)<br />
• Fermat (1607–1665)<br />
• Euler (1707–1783) . . .
Fazit<br />
Methoden von<br />
• Euklid (ca. 360-280 v.Chr.)<br />
• Fermat (1607–1665)<br />
• Euler (1707–1783) . . .<br />
haben <strong>Anwendung</strong>en<br />
• am Bankautomaten<br />
• bei Kartenzahlung<br />
• bei <strong>der</strong> sicheren Datenübertragung im Internet . . .