23.12.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 . . .

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!