EXKURS: PRIMZAHLEN UND KRYPTOLOGIE In diesem Exkurs

Werbung
EXKURS: PRIMZAHLEN UND KRYPTOLOGIE
In diesem Exkurs wollen wir uns mit dem RSA-Verschlüsselungsverfahren beschäftigen. Um dieses Verfahren zu verstehen, benötigen wir jedoch einige Kenntnisse über
Primzahlen, was wir als Motivation nehmen wollen, um uns vorab etwas mit diesen
Zahlen und deren speziellen Teilbarkeitseigenschaften zu beschäftigen.
Erinnerung/Definition: An dieser Stelle sei noch einmal daran erinnert, dass
eine Zahl a ∈ Z genau dann durch eine Zahl n ∈ N>0 teilbar ist, wenn es eine Zahl
b ∈ Z mit a = n · b gibt. Wir lassen hier also lediglich positive Teiler n von a zu und
schreiben dafür dann n|a. Mit Ta = {n ∈ N>0 | a = n · b für ein b ∈ Z} bezeichnen
wir die Teilermenge von a. Besitzen a und b ausser der Zahl 1 keine gemeinsamen
Teiler, d.h. ist Ta ∩ Tb = {1}, so nennt man sie teilerfremd.
Natürliche Zahlen, deren Teilermengen aus genau zwei Elementen bestehen haben besondere Eigenschaften. Sie bilden gewissermaßen die Atome“, d.h. die ele”
mentaren Bausteine, bezüglich Teilbarkeit in Z.
Definition: Eine natürliche Zahl p > 1, die nur durch sich selbst und durch 1
teilbar ist, heißt Primzahl. Die Menge der Primzahlen bezeichnen wir mit P.
Fragestellungen im Bereich der Primzahlen sind meistens sehr leicht zu formulieren und unmittelbar (auch Nichtmathematikern“) zugänglich. Dennoch sind viele,
”
teils sehr alte, Vermutungen, wie z.B. die bereits erwähnte Goldbachvermutung:
Jede gerade Zahl größer als 2 ist die Summe zweier Primzahlen“ bis heute nicht
”
bewiesen.
Eine der ersten Fragen, die sich über Primzahlen stellt, nämlich wie viele solcher
speziellen Zahlen es gibt, konnte allerdings bereits (grob) von Euklid beantwortet
werden.
Satz: (Euklid, ca. 300 v.Chr.) Es gibt unendlich viele Primzahlen.
Beweis: Angenommen, es gäbe nur endlich viele Primzahlen p1 , . . . , pn . Dann setzen wir p := p1 · . . . · pn + 1. Da dann p > pi für alle i gilt, kann p keine Primzahl
sein. Somit gibt es eine Zahl a mit 1 < a < p, die p teilt. Wir nehmen an, dass a
die kleinste solche Zahl sei. Dann muss a selbst eine Primzahl sein, denn ansonsten
hätte a einen Teiler b mit 1 < b < a, der dann ebenfalls p teilt, was aufgrund der
Minimalität von a nicht möglich ist. Somit muss a mit einem pi übereinstimmen
und teilt somit das Produkt p1 ·. . .·pn , nicht aber die 1. Dann kann a = pi aber nicht
p teilen, was der Wahl von a widerspricht. Also muss es unendlich viel Primzahlen
geben.
Bemerkung: Fragen über die genauere Verteilung von Primzahlen sind auch heute
noch Gegenstand der Forschung. Beispielsweise kann die Abbildung π : N → N,
definiert durch
π(n) = |{p ∈ P | p ≤ n}|,
dazu verwendet werden, die Verteilung der Primzahlen zu untersuchen. Der Primzahlsatz besagt dann z.B., dass diese Funktion asymptotisch durch lnxx beschrieben
wird, d.h. dass für das Wachstum gilt
lim
x→∞
π(x)
x
ln x
= 1.
Definition: Für a, b ∈ Z mit (a, b) 6= (0, 0) ∈ Z2 nennen wir die Zahl c ∈ N>0
den größten gemeinsamen Teiler von a und b, wenn gilt c|a und c|b und für jeden
weiteren gemeinsamen Teiler d von a und b gilt d ≤ c, d.h. wenn gilt c = max(Ta ∩
Tb ), wobei wir mit max(M ) das größte Element einer endlichen Teilmenge M ⊂ Z
bezeichnen. Den größten gemeinsamen Teiler zweier Zahlen a, b ∈ Z bezeichnen wir
im Folgenden mit ggT(a, b).
Bemerkung: Es gilt stets
(
a, falls a ≤ b,
1 ≤ ggT(a, b) ≤ min(a, b) =
b, falls b ≤ a.
Zur Bestimmung des ggT kann man den sogenannten Euklidischen Algorithmus
verwenden.
Satz: (Euklidischer Algorithmus) Es seien a und b natürliche Zahlen mit a ≥ b > 0.
Wir setzen b = r0 und definieren sukzessive
a = q0 · r0 + r1 mit q0 ∈ Z, 0 ≤ r1 < r0 ,
r0 = q1 · r1 + r2 mit q1 ∈ Z, 0 ≤ r2 < r1 ,
r1 = q2 · r2 + r3 mit q2 ∈ Z, 0 ≤ r3 < r3 ,
..
.
Dann gibt es wegen b = r0 > r1 > r2 > . . . ≥ 0 einen ersten Index n mit rn > 0
und rn+1 = 0, d.h. rn−1 = qn · rn + 0. Für diesen letzten Divisor rn gilt dann
rn = ggT(a, b).
Beweis: Es gilt a ≥ b = r0 > r1 > r2 > . . . ≥ 0 und b = r0 ≥ 1. Somit gibt es
einen ersten Index n mit rn > 0 und rn+1 = 0, d.h. die (n + 1)-te Gleichung lautet
rn−1 = qn · rn . Durchläuft man die Reihe der Gleichungen dann von unten nach
oben, so sieht man rn−2 = qn−1 · rn−1 + rn = qn−1 · qn · rn + rn = (qn−1 · qn + 1) · rn
sowie ganz analog rn−3 = . . . = bn−3 ·rn mit bn−3 ∈ Z und ganz allgemein ri = bi ·rn
mit bi ∈ Z, d.h. rn |ri für alle 0 ≤ i ≤ n. Insbesondere ist rn ∈ Ta ∩ Tb . Durchläuft
man hingegen die Reihe der Gleichungen von oben nach unten, so folgt für jeden
gemeinsamen Teiler c von a und b nacheinander c|a, c|b, c|r1 , c|r2 , . . . , c|rn . Somit
ist c ≤ rn , d.h. rn = ggT(a, b).
Der ggT(a, b) kann immer als ganzzahlige Linearkombination von a und b geschrieben werden.
Lemma von Bézout: Es seien a, b ∈ Z mit (a, b) 6= (0, 0) ∈ Z2 . Dann gibt es
Zahlen x, y ∈ Z mit ggT(a, b) = x · a + y · b.
Beweis: Es seien a, b ∈ Z gegeben und es bezeichne L = {x · a + y · b | x, y ∈ Z} die
Menge der ganzahligen Linearkombinationen von a und b. Dann gibt es in der Menge
L ∩ N>0 ein kleinstes Element, das wir mit m bezeichnen. Wir werden nun zeigen,
dass m = ggT(a, b) gilt. Hierfür bemerken wir zunächst, dass aus der Tatsache, dass
ggT(a, b) die Zahlen a und b teilt, folgt, dass ggT(a, b) auch jedes Element der Form
x · a + y · b, also jedes Element in L teilt. Insbesondere teilt ggT(a, b) auch jedes
Element in L ∩ N>0 und damit auch m, was impliziert, dass ggT(a, b) ≤ m gilt.
Um zu sehen, dass auch ggT(a, b) ≥ m (und damit ggT(a, b) = m) gilt, schreiben
wir a = z · m + r mit 0 ≤ r ≤ m − 1. Dann ist r = a − z · m ∈ L ∩ N und somit
r = 0 aufgrund der Minimalität von m in L ∩ N>0 , d.h. m|a. Genauso zeigt man
m|b, also auch m ≤ ggT(a, b) aufgrund der Defintion von ggT(a, b). Somit folgt die
Behauptung.
Eine der fundamentalen Eigenschaften von Primzahlen wird im folgenden Lemma
von Euklid formuliert, das daher manchmal auch als Fundamentallemma bezeichnet
wird. Im Beweis dieses Lemmas benötigen wir erstmals das Lemma von Bézout.
Lemma von Euklid: Teilt eine Primzahl p ein Produkt a·b zweier Zahlen a, b ∈ N,
so teilt p einen der Faktoren.
Bemerkung:
(i) Mithilfe der zyklischen Gruppe Zp lässt sich das Lemma wie folgt umformulieren: Für eine Primzahl p ∈ P ist genau dann a · b ≡ 0 mod p, wenn
a ≡ 0 mod p oder b ≡ 0 mod p gilt.
(ii) Das Lemma gilt auch für a, b ∈ Z und für beliebig viele Faktoren.
Beweis des Lemmas: Gilt p|a, so gilt die Behauptung. Es gelte also p - a. Dann
ist ggT(a, p) = 1, da p keine weiteren Teiler ausser 1 besitzt. Daher gibt es nach
dem Lemma von Bézout x, y ∈ Z mit 1 = x · a + y · p, also b = x · (a · b) + (b · y) · p.
Da dann aber beide Summanden nach Annahme durch p teilbar sind, ist in diesem
Fall b durch p teilbar.
Der folgende Hauptsatz der elemtaren Zahlentheorie/Fundamentalsatz der Arithmetik begründet die zu Beginn des Abschnitts erwähnte Interpretation der Primzahlen als Atome der Teilbarkeit“.
”
Fundamentalsatz der Arithmetik: Jede natürliche Zahl n > 1 besitzt eine
eindeutige Darstellung n = p1 · . . . · pk , die sogenannte Primfaktorzerlegung, als
Produkt endlich vieler Primzahlen p1 ≤ . . . ≤ pk . Anders ausgedrückt kann man n
schreiben als
Y
n=
pνp (n)
p∈P
mit nur endlich vielen Vielfachheiten νp (n) 6= 0.
Bemerkung: Die im Satz auftauchenden Vielfachheiten νp (n) geben gerade an,
wie oft“ die Zahl n durch p teilbar ist.
”
Beweis des Fundamentalsatzes: Für den Nachweis der Existenz einer solchen
Zerlegung sei n ≥ 2 die kleinste natürliche Zahl, die sich nicht als Produkt von
Primzahlen schreiben lässt. Dann kann n selbst keine Primzahl sein. Somit gibt es
a, b ≥ 2 mit n = a · b. Insbesondere sind dann a, b < n und es gibt Zerlegungen
a = p1 ·. . .·pk und b = q1 ·. . .·ql in Primzahlen. Also ist n = a·b = p1 ·. . .·pk ·q1 ·. . .·ql
ebenfalls ein Produkt von Primzahlen, was unserer Wahl von n widerspricht. Somit
kann es eine solche Zahl n nicht geben, d.h. jede natürliche Zahl größer als 1 besitzt
eine Primfaktorzerlegung.
Um die Eindeutigkeit einer solchen Primfaktorzerlegung wie in der Behauptung zu
zeigen, nehmen wir an, n ≥ 2 sei die kleinste Zahl, die zwei verschiedene solcher
Zerlegungen n = p1 · . . . · pk = q1 · . . . · ql besitzt. Dann gilt p1 |n = q1 · . . . · ql
und daher p1 |qj für ein j ∈ {1, . . . , l} nach dem Lemma von Euklid. Dann ist aber
p1 = qj , da qj selbst eine Primzahl ist. Damit ist
n/p1 = p2 · . . . · pk = q1 · . . . · qj−1 · qj+1 · . . . · ql < n
und besitzt daher nach Annahme eine eindeutige Primfaktorzerlegung (bis auf Anordnung der Faktoren). Es folgt, dass k −1 = l −1, bzw. k = l, gilt und die Faktoren
(bis auf Umordnung) gleich sind. Dann sind aber auch die Faktoren in p1 · . . . · pk
und q1 · . . . · ql gleich, was erneut unserer Wahl von n widerspricht. Somit folgt die
Behauptung.
Die Menge der Einheiten in Zm , d.h. der Elemente in Zm mit multiplikativem Inversen, hatten wir wie üblich mir Z∗m bezeichnet. Das folgende Lemma liefert hierzu
äquivalente Charakterisierungen, die wir für spätere Überlegungen benötigen.
Lemma: Für a ∈ Z und m ∈ N>0 sind folgende Aussagen paarweise äquivalent:
(i) a ∈ Z∗m ,
(ii) ggT(a, m) = 1,
(iii) Die Abbildung fa : Zm → Zm , fa (x) = a · x, ist bijektiv.
Beweis: Zum Beweis der Behauptung zeigen wir (i)⇔(ii) und (i)⇔(iii).
(i)⇔(ii): Ist a ∈ Z∗m , so gibt es ein x ∈ Zm mit x·a = x · a = 1, d.h. x·a = 1+m·y bzw.
1 = x·a−m·y für ein y ∈ Z. Aus dem Beweis vom Lemma von Bézout wissen
wir, dass wir den ggT(a, m) gerade als die kleinste positive ganzzahlige
Linearkombination von a und m erhalten. Aus der obigen Gleichung folgt
daher ggT(a, m) = 1.
Gilt umgekehrt ggT(a, m) = 1, so folgt wieder mit dem Lemma von Bézout
die Existenz von Zahlen x, y ∈ Z mit 1 = x · a + y · m bzw. x · a = 1 − y · m.
Dann ist aber x · a = x · a = 1 − y · m = 1, d.h. a ∈ Z∗m .
(i)⇔(iii): Ist fa bijektiv, also insbesondere surjektiv, so gibt es ein x ∈ Zm mit
fa (x) = a · x = 1 und daher a ∈ Z∗m .
Ist umgekehrt a ∈ Z∗m und a · b = b · a = 1, so ist
(fa ◦ fb )(c) = fa (fb (c)) = a · (b · c) = (a · b) · c = 1 · c = c
und analog (fb ◦ fa )(c) = c für alle c ∈ Zm , d.h. fa ◦ fb = fb ◦ fa = idZm .
Insbesondere ist fa bijektiv.
Definition: Die Eulersche-Phi-Funktion, ϕ : N>0 → N>0 , ist definiert durch
ϕ(n) = |{a ∈ N>0 | 1 ≤ a ≤ n ∧ ggT(a, n) = 1}|
d.h. sie gibt an wie viele zu n teilerfremde natürliche Zahlen es gibt, die (für n 6= 1)
kleiner als n sind.
Satz: Es gelten die folgenden Eigenschaften der Eulerschen-Phi-Funktion:
(i)
(ii)
(iii)
(iv)
(v)
Ist ggT(m, n) = 1, so gilt ϕ(m · n) = ϕ(m) · ϕ(n).
Es gilt ϕ(n) = |Z∗n |.
Ist p ∈ P, so ist ϕ(p) = p − 1.
Ist p ∈ P, so ist ϕ(pk ) = (p − 1) · pk−1 .
Ist n = pn1 1 · pn2 2 · . . . · pnk k mit pi ∈ P und ni > 0 die Primfaktorzerlegung
der Zahl n, so ist
ϕ(n) = (p1 − 1) · pn1 1 −1 · (p2 − 1) · p2n2 −1 · . . . · (pk − 1) · pnk k −1 .
Beweis: Die Eigenschaft (i) wird hier nicht bewiesen. Eigenschaft (ii) folgt direkt
aus dem letzten Lemma und die Eigenschaft (iii) direkt aus der Definition einer
Primzahl. Zum Nachweis der Behauptung (iv) bemerken wir, dass pk lediglich p
als Primfaktor hat und somit für a ≤ pk gilt, dass Ta ∩ Tpk 6= {1} äquivalent zu
a = m · p für m ∈ {1, . . . , pk−1 } ist. Somit ist ϕ(pk ) = pk − pk−1 = (p − 1) · pk−1 .
Die Behauptung (v) folgt dann direkt aus den Eigenschaften (i) und (iv).
Satz von Euler-Fermat: Sind a und m teilerfremd, d.h. ggT(a, m) = 1, so gilt
aϕ(m) ≡ 1 mod m.
Bemerkung: Als Spezialfall erhält man hieraus den kleinen Satz von Fermat: Ist
p eine Primzahl, die die Zahl a nicht teilt, so ist ap−1 ≡ 1 mod p.
Beweis des Satzes von Euler-Fermat: Es sei Z∗m = {r1 , . . . , rϕ(m) } die Menge
der Einheiten in Zm . Wegen ggT(a, m) = 1 ist a = ri für ein i und die Abbildung
fa : Zm → Zm , fa (x) = a · x bijektiv. Ferner gilt fa (Z∗m ) = Z∗m , denn Z∗m ist
abgeschlossen bezüglich der Multiplikation in Zm ((Z∗m , ·) ist sogar eine Gruppe).
Somit gilt wegen der Kommutativität
r1 · . . . · rϕ(m) = (a · r1 ) · . . . · (a · rϕ(m) ) = aϕ(m) · r1 · . . . · rϕ(m)
und somit aϕ(m) = 1, da r1 · . . . · rϕ(m) ∈ Z∗m .
RSA-Verfahren
Basierend auf dem Satz von Euler-Fermat entwickelten Ronald Linn Rivest,
Adi Shamir und Leonard Adleman vom MIT 1977 das nach ihnen benannte RSAVerfahren, das zum Verschlüsseln von Nachrichten verwendet werden kann.
Dieses Verfahren funktioniert wie folgt:
(1) Es werden zwei große Primzahlen p 6= q (p, q > 10100 ) ausgewählt und
daraus p · q =: m sowie ϕ(m) = ϕ(p) · ϕ(q) = (p − 1) · (q − 1) berechnet.
(2) Es wird eine weitere Zahl c (Codierschlüssel ) mit 1 < c < ϕ(m) und
ggT(c, ϕ(m)) = 1 gewählt. Wegen ggT(c, ϕ(m)) = 1 gibt es dann eine
Zahl d (Dekodierschlüssel ) mit 1 < d < ϕ(m) und c · d ≡ 1 mod ϕ(m) bzw.
c · d = 1 + k · ϕ(m) für ein k ∈ Z.
(3) Die Zahlen p, q und ϕ(m) werden sicherheitshalber gelöscht, da sie im Folgenden nicht mehr benötigt werden.
(4) Das Paar (c, m) wird als öffentlicher Schlüssel bekanntgegeben und der
Empfänger E der Nachricht bekommt den geheimen Schlüssel d.
(5) Mithilfe des öffentlichen Schlüssels kann nun eine verschlüsselte Nachricht
an E gesendet werden. Hierfür wird der Text in Ziffern t mit 1 ≤ t ≤ 10100
konvertiert, z.B. über den ASCII-Code (bei der Verwendung von Rechnern werden diese Zahlen noch in einen Binärcode umgewandelt). Die Verschlüsselung von t erfolgt dann durch Potenzieren mit c in Zm , d.h.
g ≡ tc mod m
ist die verschlüsselte Ziffer. Diese wird an E gesendet.
(6) Der Empfänger E verwendet nun den geheimen Schlüssel d zur Entschlüsselung der Ziffer g durch erneutes Potenzieren in Zm
g d ≡ (tc )d ≡ tc·d ≡ t1+k·ϕ(m) ≡ t · (tϕ(m) )k ≡ t · 1k ≡ t mod m.
Also g d ≡ t mod m, d.h. man erhält wegen 1 ≤ t ≤ 10100 < m die ursprüngliche Ziffer.
Bemerkung: Grundsätzlich gibt es zwei verschiedene Arten von Angriffen bei
diesem Verfahren. Entweder der geheime Schlüssel d wird aus dem öffentlichen
Schlüssel (c, m) erschlossen oder der Geheimtext wird ohne Kenntnis des geheimen
Schlüssels dechiffriert. Prinzipiell erfolgsversprechender sind Angriffe der ersten Art.
Dazu wird der Wert ϕ(m) benötigt und der geheime Schlüssel dann mithilfe des
Euklidischen Algorithmus bestimmt. Es ist allerdings praktisch nicht möglich ohne
die Kenntnis von p und q den Wert ϕ(m) alleine mithilfe von m zu bestimmen,
sofern p und q hinreichend groß gewählt werden, da bisher kein (polynomieller)
Faktorisierungsalgorithmus zur Bestimmung der Primfaktorzerlegung bekannt ist.
Herunterladen