Das RSA-Kryptosystem - mathematik

Werbung
www.mathematik-netz.de
© Copyright, Page 1 of 12
Das RSA-Kryptosystem
Um dieses Dokument verstehen zu können benötigt der Leser nur grundlegende Kenntnisse der Algebra
und ein gewisses mathematisches Verständnis. Notwendige Sätze werden erläutert und mit Beispielen
verdeutlicht, insofern sollte es dem Leser keine Mühe bereiten den Gedankengängen zu folgen.
1.0
Motivation und Überblick
Ein Kryptosystem ist ein grundsätzliches Verfahren der Datenverschlüsselung, wir werden beide Wörter
synonym verwenden.
Mathematiker haben die schöne Angewohnheit alles und jedes klassifizieren zu wollen. Folgerichtig kann
man auch die Datenverschlüsselung in zwei grundsätzliche Verfahren aufgliedern, den
- symmetrischen und den
- asymmetrischen Kryptosystemen.
Bei einer symmetrischen Datenverschlüsselung wird für die Verschlüsselung und die Entschlüsselung
der gleiche Schlüssel eingesetzt. Damit lassen sich Nachrichten mit hoher Geschwindigkeit chiffrieren und
dechiffrieren. Von Nachteil ist, dass der Schlüssel dem Empfänger übermittelt werden muss, womit ein
Sicherheitsrisiko verbunden ist. Beispiele für symmetrische Verfahren sind DES, IDEA und RC4.
Bei einer asymmetrischen Datenverschlüsselung (auch Public-Key-Verfahren genannt) werden
verschiedene Schlüssel zum Ver- und Entschlüsseln verwendet. Zum Verschlüsseln dient der sog.
öffentliche Schlüssel (engl. public key), der von einem potenziellen Empfänger ohne Geheimhaltung
bekannt gegeben wird, zum Entschlüsseln der Privatschlüssel (engl. private key), der von seinem Besitzer
sorgfältig verwahrt werden muss und auf den sonst niemand Zugriff haben darf.
Der große Nachteil bei symmetrischen Kryptosystemen ist der große Vorteil bei den asymmetrischen
Kryptosystemen, denn bei diesen Verfahren ist es nicht notwendig die Schlüssel vor einer geschützten
Übertragung auszutauschen.
Wenn man sich ein großes Netzwerk von N Teilnehmern vorstellt, in dem eine vertrauliche Kommunikation
zwischen je zwei Teilnehmern realisiert werden soll, so hat die Symmetrie (beide Teilnehmer haben
denselben Schlüssel) unmittelbare Konsequenzen:
ƒ
ƒ
ƒ
ƒ
Jeder Teilnehmer muss (N-1) Schlüssel geheim halten, insgesamt müssen also O(N)=N2 Schlüssel
geheim gehalten werden.
Kommt ein Teilnehmer hinzu, so müssen alle N Teilnehmer die Schlüsseldatei aktualisieren.
Sender und Empfänger müssen einen gemeinsamen Schlüssel vereinbaren (insg. O(N)=N2 mal).
Sender und Empfänger müssen sich gegenseitig darin vertrauen, dass keiner den geheimen
Schlüssel preisgibt.
Aufgrund des quadratisch wachsenden Aufwands wären symmetrische Verfahren in der Praxis mit einem
relativ hohen Verwaltungsaufwand verbunden.
Es stellt sich also heraus, dass bei einem Public-Key-Kryptosystem jeder Teilnehmer T ein Paar von
Schlüsseln hat:
ƒ
ƒ
einen öffentlichen Schlüssel E=ET („Encryption“) zur Verschlüsselung und
einen privaten (geheimen) Schlüssel D=DT („Decrypton“) zum Entschlüsseln.
Natürlich ergibt diese Aufteilung in öffentlichen und privaten Schlüssel erst und nur dann einen Sinn,
wenn man von dem öffentlichen Schlüssel nicht auf den privaten Schlüssel schließen kann. Also muss bei
einem Public-Key-Verfahren gelten:
ƒ
Aus der Kenntnis des öffentlichen Schlüssels ET ist der private Schlüssel DT nicht zu erschließen.
www.mathematik-netz.de
© Copyright, Page 2 of 12
Alle öffentlichen Schlüssel sind in einer allgemein zugänglichen Datei untergebracht, während die
privaten Schlüssel gut gehütete Geheimnisse des Eigentümers sind bzw. sein sollten.
Die wichtigsten Vertreter der Public-Key-Verfahren
sind der RSA-Algorithmus, welcher hier näher
untersucht wird, und die Diffie-HellmanSchlüsselvereinbarung bzw. die ElGamalVerschlüsselung, deren Arithmetik auf großen
Zahlen beruht.
Verschlüsselung
Asymmetrische Verfahren haben auch Nachteile:
Erstens gibt es im Vergleich zu den symmetrischen Verfahren nur sehr wenige Public-KeyVerschlüsselungsverfahren, deren Sicherheit zudem auf ähnlichen mathematischen Annahmen beruht.
Wenn sich eines dieser Verfahren als unischer herausstellen sollte, kann man im Unterschied zu den
symmetrischen Verschlüsselungsverfahren nicht so leicht auf eine Alternative zurückgreifen.
Zweitens sind alle bis heute bekannten Verfahren zur asymmetrischen Verschlüsselung wegen der
Arithmetik großer Zahlen sehr langsam, wohingegen sich die symmetrischen Verfahren sehr effizient
implementieren lassen.
Symmetrische Kryptosysteme
I.d.R. sehr gut
Sehr viele
Kann sehr gut sein
Ja
Verschlüsselung
O(n) = n2 bei n Teilnehmern
vs.
Performance
Anzahl
Sicherheit
Vorheriger
Schlüsselaustausch
notwendig
Typisches
Einsatzgebiet
Verwaltungsaufwand
Asymetrische Kryptosysteme
Nicht gut
Sehr wenige
Sehr gut
Nein
Signaturen, Schlüsselaustausch
O(n) = n bei n Teilnehmern
Es stehen sich also zwei Verfahren (mit Vor- und Nachteilen) gegenüber, und frei nach Kant (Synthese!)
versucht man in der Praxis die Vorteile beider Verfahren in sog. Hybridverfahren zu nutzen. Dabei wird
zur Übermittlung eines symmetrischen Schlüssels ein asymmetrisches Verfahren benutzt.
Beweisbar sichere Public-Key-Kryptosysteme sind bisher unbekannt. Üblicherweise kann man zeigen,
dass z.B. die Berechnung des geheimen aus dem öffentlichen Schlüssel genauso schwer ist wie ein
mathematisches Problem, etwa (Prim-)Faktorisierung einer großen Zahl n.
Nachdem Whitfield Diffie und Martin Hellman eine Theorie zur Public-Key-Kryptographie veröffentlicht
hatten, versuchten die drei Mathematiker Rivest, Shamir und Adleman, die Annahmen von Diffie und
Hellmann zu widerlegen. Nachdem sie den Beweis bei verschiedenen Verfahren durchführen konnten,
stießen sie schließlich auf eines, bei dem sie keinerlei Angriffspunkte fanden. Hieraus entstand das RSAKryptosystem.
Das RSA-Kryptosystem ist ein asymmetrisches Kryptosystem, d. h. es verwendet verschiedene Schlüssel
zum Ver- und Entschlüsseln. Das Verfahren wurde 1977 entwickelt.
Seine Sicherheit beruht auf der Schwierigkeit große! Zahlen zu faktorisieren. Die Zerlegung einer Zahl in
(mindestens zwei) (Prim-)Faktoren ist zumind. bei sehr großen Zahlen sehr aufwändig, während die
Erzeugung einer Zahl durch Multiplikation zweier Primzahlen trivial ist.
Wenn nun eine Nachricht einem Empfänger verschlüsselt zugeleitet werden soll, generiert dieser einen
öffentlichen Schlüssel (durch die Mulitplikation zweier Primzahlen). Der Nachrichtenabsender verwendet
diesen öffentlich bekanntgemachten Schlüssel, indem er damit seine Botschaft verschlüsselt. Nur der
www.mathematik-netz.de
© Copyright, Page 3 of 12
Empfänger kann diese "decodieren", da nur er die Faktorisierung des von ihm erzeugten (öffentlichen)
Schlüssels kennt.
2.0
Mathematische Grundlagen der Arithmetik und Zahlentheorie
Folgender Satz sichert nicht nur die Existenz sondern auch die Eindeutigkeit der darin vorkommenden
Zahlen q und r. Es wird sich zeigen, dass die Eindeutigkeit mindestens so wichtig ist, wie die Existenz.
Satz 2.1:
Seien a, b ∈ ] mit a ≠ 0. Dann gibt es eindeutig bestimmte ganze Zahlen q und r mit
b = qa+r,
und 0 ≤ r<|a|.
Die Eindeutigkeit hängt übrigens wesentlich von der Bedingung 0 ≤ r<|a| ab.
Beweis:
Angenommen, es sind Zahlenpaare (q,r) und (q’,r’) ∈ ] 2 gegeben mit
b = qa+r
b = q’a+r’
mit
mit
0 ≤ r<|a|
0 ≤ r’<|a|.
und
Setzen wir die Gleichungen gleich und formen etwas um, so ergibt sich
qa+r = q’a+r’
(q-q’)a = r’ – r.
Also teilt a die Zahl r’-r und da r’ als auch r zwischen 0 und |a|-1 liegen, liegt die Zahl r’-r zwischen
–(|a|-1) und |a|-1. Aufgrund der gegebenen Bedingungen kann a die Zahl (r-r’) jedoch nur dann teilen,
wenn r’-r = 0 gilt. Da a ≠ 0 gilt folgt damit unmittelbar die Identität r=r’ und damit q=q’.
Die Existenz wird nicht bewiesen.
,
In vielen Fällen interessiert uns nicht so sehr der Divisor q, sondern vor allem der Rest r. Aus diesem
Grund erhält der Rest eine spezielle Bezeichnung.
Definition:
Seien a und b ganze Zahlen mit a ≠ 0. Seien q und r die eindeutig bestimmten ganzen Zahlen mit
b = qa +r
und
0 ≤ r<|a|.
Dann wird die Zahl r mit b mod a bezeichnet.
,
Das bedeutet:
b mod a ist eine Zahl, und zwar die kleinste nichtnegative Zahl r, so dass b-r durch a teilbar ist. Wir
können auch schreiben b= qa + (b mod a).
Eine eng damit verwandte Definition ist die folgende.
Definition:
Seien a und b ganze Zahlen, und sei m eine positive ganze Zahl. Wir schreiben a ≡ b [mod m], wenn m die
Zahl (b-a) teilt.
,
www.mathematik-netz.de
© Copyright, Page 4 of 12
Dabei wird a ≡ b [mod m] gelesen als „a ist kongruent zu b, modulo m“. Die Zahl m wird der Modulus
genannt.
Um diese beiden Definitionen in Zusammenhang zu bringen, teilen wir a und b durch m mit Rest:
Wir erhalten a=qm+r und b=q’m+r’, wobei q und q’ ganze Zahlen sind und r und r’ wieder die
entsprechende Ungleichung von oben erfüllen.
Bemerkung:
Es gilt a ≡ b [mod m] ⇔ r=r’.
Definition:
Wenn wir a durch a mod m ersetzen, sagen wir, dass a reduziert wird modulo m.
,
Beispiel:
(a)
(b)
(c)
8 mod 3 = 5, d.h. wir reduzieren 8 modulo 3.
–2 mod 5 = 3
Für jede natürliche Zahl a, mit a<b gilt a mod b = a.
Zu (b) sei angemerkt, dass die Bedingung 0 ≤ r’<|a| nicht vergessen werden darf, d.h. r bzw. a mod b ist
positiv!
,
Es sei erwähnt, dass mit Hilfe der Modulo-Rechnung als Verknüpfung ein bedeutender Ring, nämlich der
Ring ] /n ] definiert werden kann. Die zugrunde gelegte Menge der Restklassen R:={0, …,n-1} ist
endlich.
Im Folgenden notieren wir die natürliche Zahl ‚größten gemeinsamen Teiler’ zweier ganzer Zahlen a und b
(die nicht beide 0 sind) mit ggT(a, b). Erinnerlich berechnet man den ggT(a,b) mit Hilfe des euklidischen
Algorithmus.
Beispiel:
Wir berechnen den ggT(4711, 1024) mit dem euklidischen Algorithmus:
4711 = 4 ⋅ 1024 +615
1024 = 1 ⋅ 615 +409
615 = 1 ⋅ 409 +206
409 = 1 ⋅ 206 +203
206 = 1 ⋅ 203 +3
203 = 67 ⋅ 3 +2
3 = 1 ⋅ 2 +1
2 = 2 ⋅ 1 +0
ggT(4711, 1024)=ggT(1024, 615)
ggT(1024, 615)=ggT(615, 409)
ggT(615, 409)=ggT(409, 206)
ggT(409, 206)=ggT(206, 203)
ggT(206, 203)=ggT(203, 3)
ggT(203, 67)=ggT(3, 2)
ggT(3, 2)=ggT(2, 1)
ggT(2, 1)=ggT(1, 0)= 1.
⇒ Die Zahlen 4711 und 1024 sind teilerfremd.
,
Ferner nennen wir zwei ganze Zahlen a und b teilerfremd, falls ihr ggT(a, b)=1 ist, insbesondere ist jede
ganze Zahl a ∈ ] \{pi} (i ∈ ` ) zu einer beliebigen Primzahl p teilerfremd.
Beispiel:
Sei a=210 und b=-2002. Die ganzen Zahlen, die a und b teilen sind
T:={-14, -7, -2, -1, 1, 2, 7, 14}.
Die negativen Zahlen kommen als ggT nicht in Frage. Die Zahl 14 ist positiv, teilt 210 und -2002 und
wird von allen Teilern von 210 und –2002 geteilt. Es ist also ggT(210, -2002)=ggT(-2002, 210)=14.
,
Wie bereits öfter erwähnt kommt den Primzahlen beim RSA-Algorithmus eine entscheidende Rolle zu,
deshalb untersuchen wir zunächst die natürlichen Zahlen etwas genauer:
www.mathematik-netz.de
© Copyright, Page 5 of 12
Definition:
Eine natürliche Zahl p > 1 heißt Primzahl, wenn sie genau zwei positive Teiler hat, nämlich 1 und p.
,
Die erste und einzige gerade Primzahl ist 2, weitere Primzahlen sind dann bspw. 3; 5; 7; 11; 13; 17; 19;
23; 29; 31; 37; 41; 43; 47; 53.
Definition:
Eine zusammengesetzte Zahl n ist eine natürliche Zahl aus der Menge ` \( P ∪ {0,1}).
,
Satz 2.1: (Zusammengesetzte Zahlen)
Sei a ∈ ` \ ( P ∪ {0,1}). Dann hat a einen Primteiler.
Beweis:
Wir führen Induktion über a. Für a = 2 ist die Behauptung richtig, denn 2 ist prim. Wir nehmen nun a > 2
an. Ist a ∈ P , so ist nichts zu zeigen. Wir können also annehmen, dass a nicht prim ist, d.h. a ist
zusammengesetzt. Es existiert also eine Zahl b mit 1 < b < a und b|a.
Nach Induktionsvoraussetzung hat b einen Primteiler, welcher dann auch Primteiler von a ist (da b|a).
,
Die Primzahlen, die in einer solchen Produkt-Darstellung von n auftreten, heißen Primfaktoren der Zahl
n, die Produktdarstellung selbst heißt Primfaktorzerlegung. Mit Ausnahme der Zahlen 0 und 1, welche
gerade die neutralen Elemente der Verknüpfungen Addition bzw. Multiplikation sind, ist jede natürliche
Zahl entweder eine Primzahl oder zusammengesetzt.
Beispiel:
Die ersten 10 zusammengesetzten Zahlen und ihre Primfaktorzerlegungen sind:
,
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
4=2 ⋅ 2
6=2 ⋅ 3
8=23
9=32
10=2 ⋅ 5
12=22 ⋅ 3
14=2 ⋅ 7
15=3 ⋅ 5
16=24
18=2 ⋅ 32
Wie aus der Zahlentheorie bekannt, kann jede natürliche Zahl n>1 in seine Primfaktoren zerlegt werden.
Satz 2.2: (Hauptsatz der elementaren Zahlentheorie)
Jede natürliche Zahl a > 1 kann als Produkt von Primzahlen geschrieben werden. Bis auf die Reihenfolge
ist diese Primfaktorzerlegung eindeutig.
Beweis:
Wir beschränken uns auf den Beweis der Existenz einer Primfaktorzerlegung.
Wir führen Induktion über a, für a = 2 ist die Behauptung richtig, sei also a > 2. Nach Satz 2.1 hat a
einen Primteiler p. Ist a = p, so sind wir fertig. Wir können also wieder annhemen, dass a
zusammengesetzt ist. Es existiert also wieder eine natürliche Zahl b, welche a teilt. Also muss
a
b
∈ ` \ {0,1} sein – diese Zahl besitzt nach Induktionsvoraussetzung eine Zerlegung in Primfaktoren,
womit die Existenz einer Zerlegung von a gezeigt ist.
,
www.mathematik-netz.de
© Copyright, Page 6 of 12
Wenn n>1 ist, gibt es mindestens eine Primzahl, die n teilt. Ist n eine Primzahl, so existiert genau eine
Primzahl, welche n teilt, nämlich n selbst. Dagegen ist n ein Vielfaches einer Primzahl, so ist n eine
zusammengesetzte Zahl.
Die Sicherheit des RSA-Algorithmus beruht auf dem Problem der Faktorisierung einer (großen)
zusammengesetzten Zahl. Man nutzt also dabei aus, dass es leicht ist, Zahlen zu multiplizieren, dass man
aber keinen Algorithmus kennt, der effizient die Primfaktorzerlegung einer beliebigen Zahl angeben kann.
Weiterhin wäre die Sicherheit des RSA-Algorithmus nicht gewährleistet, gäbe es nur endlich viele
Primzahlen (warum?). Einer der wichtigsten Sätze über Primzahlen, und gleichzeitig einer der ältesten und
damit ersten Sätze der Mathematik ist der Folgende:
Satz 2.3: (Anzahl Primzahlen)
Es gibt unendlich viele Primzahlen. Anders ausgedrückt: Die Folge der Primzahlen endet nie, es gibt keine
größte Primzahl.
Beweis:
Für eine beliebige endliche Menge {p1, …, pr} von Primzahlen sei n:=p1p2…pr+1 und p ein Primteiler von
n. Eigentlich müsste nun gelten, dass p in {p1, …, pr} liegt, da angeblich alle Primzahlen in einer endlichen
Menge liegen. Dies kann jedoch nicht sein, da p von allen pi verschieden ist, denn ansonsten müsste n
p1p2…pr teilen und die 1, was offenbar nicht möglich ist. Widerspruch zur Voraussetzung, dass des endlich
viele Primzahlen gibt.
,
Der eben geführte Beweis ist ein absoluter Klassiker und wohl einer der ersten mathematischen Beweise
die jemals geführt wurden. Im „Buch der Beweise“ kann man die schönsten Beweise (insgesamt 6
verschiedene Versionen) zu diesem Satz finden.
Man kann die Frage nach der Anzahl der Primzahlen noch konkretisieren:
Wie viele Primzahlen existieren, welche kleiner oder gleich einer natürlichen Zahl x sind?
Satz 2.4: (Primzahlsatz)
Es gilt
π (x) ≈
x
ln(x)
.
Das bedeutet: Die Anzahl der Primzahlen kleiner oder gleich x ist ungefähr x/ln(x).
Der Beweis ist viel zu aufwendig, dass er in diesem Dokument Platz finden würde.
Ein Ergebnis, welches besagt, dass im Durchschnitt jede ln(x)-te Zahl kleiner oder gleich x eine Primzahl
ist. Es ist klar, dass also die Wahrscheinlichkeit eine Primzahl zu treffen mit steigenden Werten immer
kleiner wird, da ln(x) eine monoton wachsende Funktion ist. Dies hat zur Folge, dass die Primzahlen nach
„oben hin immer dünner“ werden.
Lemma 4.1 (Vielfachsummendarstellung von Bézout):
Seien a, b ∈ ] und sei d:=ggT(a,b). Dann gibt es ganze Zahlen a’ und b’ mit
d = aa’ + bb’.
Insbesondere gilt :
Wenn a und b teilerfremd sind, d.h. 1=ggT(a,b), gibt es ganze Zahlen a’ und b’ mit
1 = aa’ +bb’.
www.mathematik-netz.de
© Copyright, Page 7 of 12
Um diese Erkenntnisse zu festigen, werden wir vor dem eigentlichen Beweis einige Beispiele betrachten:
Beispiel:
Es ist der ggT(8,5)=1. Mit a’=2 und b’=-3 folgt 1 = 2 ⋅ 8+(-3) ⋅ 5.
Wir bemerken: Wenn a und b positiv sind, dann muss eine der Zahlen a’, b’ negativ sein.
,
Beweis:
Den Beweis kann man relativ einfach und sehr konstruktiv führen.
Sei ohne Einschränkung a ≠ 0. Falls b=q1a mit q1 ∈ ] , so ist |a|=ggT(a, b). Dann sind t=0 und s=1 oder
s=-1 die gesuchten Zahlen. Anderenfalls führen wir den Euklidischen Algorithmus durch und erhalten die
Gleichung:
b
a
r1
=
=
=
rn-2
rn-1
=
=
q1a+r1
q2r1+r2
q3r2+r3
#
qnrn-1+rn
qn+1rn
, 0<r1<|a|
, 0<r2< r1
, 0<r3< r2
, 0<rn< rn-1
,
Obiges Lemma verrät noch nicht, wie man die Zahlen a’ und b’ konkret ausrechnen kann. Dies ist mit dem
sog. erweiterten euklidischen Algorithmus möglich. Wir wollen uns dieses Verfahren an einem
Beispiel klar machen.
Beispiel:
Sei etwa a=35 und b=101. Das Verfahren besteht aus zwei Großschritten. Der erste Schritt besteht darin,
mit Hilfe des euklidischen Algorithmus den ggT von a und b zu berechnen:
101 = 2 ⋅ 35 +31
35 = 1 ⋅ 31 +4
31 = 7 ⋅ 4 +3
4 = 1 ⋅ 3 +1
3 = 3 ⋅ 1 +0
ggT(101, 35)= ggT(35, 31)
ggT(35, 31)= ggT(31, 4)
ggT(31, 4)= ggT(4, 3)
ggT(4, 3)= ggT(3, 1)
ggT(3, 1)= ggT(1, 0)=1
Im zweiten Schritt gehen wir jetzt vom ggT aus und dröseln die obigen Gleichungen „von unten nach
oben“ der Reihe nach auf.
Stellen wir obige Gleichungen auf der linken Seite um, so erhalten wir
101 -2 ⋅ 35 = 31
35 -1 ⋅ 31 = 4
31 -7 ⋅ 4 = 3
4 -1 ⋅ 3 = 1
und daraus kann man durch wiederholte Substitution gewinnen:
⇒
1 = 4 -1 ⋅ 3 = 4 -1 ⋅ (31-7 ⋅ 4)
1 = -1 ⋅ 31+8 ⋅ 4
Nach der Substitution ist es entscheidend, dass man die gemeinsamen Faktoren zusammenfasst und erst
dann weiter substituiert. Dies ist nun in jedem weiteren Schritt notwendig.
⇒
⇒
1 = -1 ⋅ 31+8 ⋅ (35 -1 ⋅ 31)
1 = -9 ⋅ 31+8 ⋅ 35
Schließlich fassen wir die 31 als Rest der ersten Gleichung auf und erhalten durch Einsetzen:
www.mathematik-netz.de
© Copyright, Page 8 of 12
1 = -9 ⋅ (101 -2 ⋅ 35)+8 ⋅ 35
1 = -9 ⋅ 101 +18 ⋅ 35 +8 ⋅ 35
1 = -9 ⋅ 101 +26 ⋅ 35.
⇒
⇒
⇒
Der erweiterte euklidische Algorithmus liefert also die Werte a’=26 und b’=-9.
,
Aus dem Lemma von Bézout folgt eine Aussage, die v.a. in der Algebra von großem Nutzen sein wird.
Satz: (Modulare Inverse)
Seien a und n teilerfremde positive Zahlen. Dann gibt es eine ganze Zahl a’ ∈ {1, 2, …, n-1} mit
aa’ ≡ 1 (mod n).
Man nennt a’ die modulare Inverse bez. der Multiplikation von a modulo n.
Beweis:
Da ggT(a, n)=1 ist, existieren nach dem Lemma von Bézout ganze Zahlen a’ und n’ mit aa’+nn’=1. Wenn
wir diese modulo n lesen, ergibt sich aa’=1 mod n.
,
Beispiel:
Es ist ggT(26, 7) = 1, deshalb folgt mit dem Lemma von Bézout, dass es ganze Zahlen a’ bzw. b’ gibt, so
dass gilt:
1 = 26a’ + 7b’
Setzen wir a’:=3 und b’:=-11, so erhalten wir in der Tat die Vielfachsummendarstellung
1 = 26 ⋅ 3 +7(-11) = 78 -77=1.
Nun müssen wir diese Gleichung nur noch mod lesen, dann erhalten wir:
1 = 7(-11) mod 26
⇒
1 = -77 mod 26,
da für ganzes k 26k mod 26 = 0 ist. D.h. -11=15 mod 26
ist das modulare Inverse zu 7.
,
3.0
Konkrete Anwendung des RSA-Kryptosystems
Bob möchte Alice die Nachricht M:=“BN“ (Kennzeichen der Stadt Bonn) über einen nicht sicheren Kanal
zukommen lassen, ohne, dass ein Dritter diese Nachricht lesen kann.
Der private Schlüssel der Empfängerin Alice wird mit dA bezeichnet, den öffentlichen Schlüssel notieren
wir mit eA. Entsprechend betiteln wir den privaten Schlüssel von Bob mit dB und den Öffentlichen mit eB.
Zunächst zeigen wir, wie Alice Ihren privaten und öffentlichen Schlüssel generiert. Dazu geht Sie in
folgenden Schritten vor:
1. Alice wählt zufällig (und stochastisch unabhängig) zwei (große) Primzahlen p und q
www.mathematik-netz.de
© Copyright, Page 9 of 12
2. Alice berechnet n=pq und ϕ (n):=(p-1)(q-1).
3. Alice berechnet einen Verschlüsselungs-Exponenten e – es muss gelten ggT(e, ϕ (n)) = 1.
4. Alice berechnet einen Entschlüsselungs-Exponenten d, wobei d gerade das modulare Inverse von e
ist.
5. Alice veröffentlicht das Paar (n, e) und hält das Tupel (pq=n, d) als privaten Schlüssel geheim.
Nun also hat Alice Ihre Schlüssel erzeugt und Bob ist in die Lage versetzt Ihr eine verschlüsselte Nachricht
M zukommen zu lassen. Der Text wird in das numerische Äquivalent übersetzt, bspw: „BN“ 0113.
Die Verschlüsselung der Nachricht M ergibt sich durch Berechnung von
e
S:= M mod n.
Die Entschlüsselung der Nachricht M’ ergibt sich durch Potenzieren mit d, also
d
M = S mod n.
4.0
Mathematische Grundlagen des RSA-Kryptosystems
Um RSA-Kryptosystem vollständig beschreiben zu können, benötigen wir ein klein wenig mehr
Mathematik, insbesondere einen Satz des schweizer Mathematikers Leonhard Euler (1707 – 1783) über
eine Eigenschaft der natürlichen Zahlen.
Der RSA-Algorithmus stellt eine Anwendung des Satzes von Euler bzw. des kleinen Satzes von Fermat
dar. Um diesen jedoch formulieren zu können benötigen wir die so genannte eulersche ϕ -Funktion.
Definition:
Für n ∈ ` sei der Wert der eulerschen ϕ -Funktion gegeben durch
,
ϕ (n) = | {a ∈ ` : 1 ≤ a ≤ n, ggT(a,n)=1 } |.
In Worten könnte man die eulersche ϕ -Funktion wie folgt definieren:
Für eine natürliche Zahl n definieren wir den Funktionswert ϕ (n) als die Anzahl der zu n teilerfremden
(d.h. ggT(a, n) = 1) natürlichen Zahlen, die nicht größer als n sind.
Ein Beispiel wird dieser scheinbar schwierigen Funktion leben einhauchen.
Beispiel:
Wir berechnen einige Funktionswerte der ϕ -Funktion:
ϕ (1) = 1, ϕ (2) = 1, ϕ (3) = 2, ϕ (4) = 2, ϕ (5) = 4, ϕ (6) = 2 und ϕ (15) = 8.
ϕ (4) = 2, da gilt ggT(1, 4)=ggT(3,4)=1. Insgesamt sind also 2 natürliche Zahlen kleinergleich 4
teilerfremd zu 4.
,
Insbesondere gilt folgender
Satz 4.1: (Multiplikative Funktion)
Die eulersche ϕ -Funktion ist multiplikativ. Sind die natürlichen Zahlen n und m teilerfremd
(d.h. ggT(n,m)=1), so gilt die Funktionsgleichung:
f(mn)=f(m)f(n)
www.mathematik-netz.de
© Copyright, Page 10 of 12
Ein Beweis ist recht umfangreich, wir verweisen deshalb auf das Skript „Mathematische Grundlagen der
Kryptographie“ von Frau Prof. Dr. Luise Unger, Satz 4.4.5, o.a.
Bemerkungen:
(i)
Für jede Primzahl p gilt: ϕ (p) = (p-1).
(ii)
Für jede natürliche Potenz einer Primzahl p gilt: ϕ (pn) = pn-1(p-1).
(iii)
Hat man die Primfaktorzerlegung von m=
r
∏ pν
k =1
r
r
( ) ∏ p ν (p
ϕ (m) = ∏ ϕ pkνk =
k =1
k −1
k =1
k
k
k
k
(pk verschiedene Primzahlen, νk ∈ ` ), so ist
− 1) . D.h. will man den Funktionswertes ϕ (m) einer beliebigen
natürlichen Zahl m bestimmen, so ist es notwendig vorher die Primfaktorzerlegung zu
bestimmen.
,
Nun also kommen wir zum zentralen Satz des Dokumentes und der entscheidenden Folgerung, welche
uns verrät, warum der RSA-Algorithmus funktioniert.
Satz 4.2: (Kleiner Satz von Fermat)
Sei p eine Primzahlen, und sei a ∈ ` mit ggT(a, p)=1. Dann gilt
p-1
a
mod p = 1
⇔
p-1
p | (a
-1)
Der kleine Satz von Fermat kann mit dem Satz von Euler bewiesen werden, denn Satz 4.2 ist ein Speziall
dieses Satzes.
Wir erinnern uns nochmals an die Verschlüsselung und Entschlüsselung der Nachricht M:
e
Verschlüsselung:
Entschlüsselung:
⇒
d
e d
S:= M
d
M=S
ed
S = (M ) = M .
Nun müssen wir uns noch daran erinnern, dass d –nach Voraussetzungen- das modulare Inverse zu e ist,
genauer gilt:
ed mod ϕ (n) = ed mod(p-1)(q-1) = 1.
Der Wert ed ist also in der Restklasse 1 von ] / ϕ(n)] enthalten. Deshalb ist ed ein Vielfaches von
k ϕ (n)+1 und deshalb gilt auch
ed mod ϕ (n) = [k ϕ (n)+1] mod ϕ (n) = [k(p-1)(q-1)+1] mod ϕ (n).
Nun ist klar, warum der nun folgende Satz beweist, dass die Entschlüsselung funktioniert.
Folgerung 4.3: (RSA)
Seien p und q zwei verschiedene Primzahlen, und sei m eine natürliche Zahl ≤ pq. Dann gilt für jede
natürliche Zahl k:
Mk(p-1)(q-1)+1 mod pq = M.
www.mathematik-netz.de
© Copyright, Page 11 of 12
Beweis:
Wir zeigen die Behauptung in zwei Schritten. Zunächst beweisen wir, dass
-
Mk(p-1)(q-1)+1 mod p = M
Mk(p-1)(q-1)+1 mod q = M
und
unter obigen Voraussetzungen gilt.
Die Behauptung Mk(p-1)(q-1)+1 mod pq = M folgt dann durch Zusammenführung beider Gleichungen, dies
erledigen wir im dritten Schritt.
Schritt p:
Mk(p-1)(q-1)+1
= M ⋅ Mk(p-1)(q-1)
= M ⋅ (M(p-1))k(q-1)
= M ⋅ (M(p-1))k(q-1)
| Potenzregel:
| Potenzregel:
xa+1 = x ⋅ xa
xab = (xa)b
An dieser Stelle halten wir kurz inne, und erinnern uns an die Aussage des kleinen fermat’schen Satzes.
Dieser proklamiert, dass für eine Primzahl p und eine natürliche Zahl M, welche stets teilerfremd sein
p-1
geteilt durch p stets den Rest 1 ergibt. Es gilt offensichtlich ggT(M, p)=1
müssen, die Zahl a
(warum?).
Teilen wir also unsere letzte Gleichung durch p so erhalten wir:
= M ⋅ 1k(q-1) mod p
mod p
=M
Schritt q:
| kleiner Satz von Fermat
| 1a = 1 ⋅ 1 ⋅ … ⋅ 1 (a –mal) = 1
Dieser Schritt verläuft analog zu Schritt p. Tausche in Schritt p überall p mit q – fertig.
Schritt n=pq:
In diesem Schritt führen wir nun die gewonnen Erkenntnisse zusammen. Dazu sei h:= k(p-1)(q-1)+1,
dann gilt
-
Mh mod p = M
Mh mod q = M.
und
Addieren wir -M zu beiden Gleichungen, so folgt daraus
-
(Mh mod p) – M = 0
(Mh mod q) – M = 0.
und
Diese Gleichung sagt aus, dass bei einer Division mit p bzw. q der Rest 0 überbleibt, wenn man nach
Division –M zur entstandenen Gleichung addiert. D.h. im Umkehrschluss, dass p|(Mh – M) und q|(Mh – M).
Die beiden Primzahlen p und q teilen also dieselbe Zahl. Da p und q verschiedene Primzahlen sind, muss
dann auch ihr Produkt pq die Zahl z teilen. Wenn wir das wieder zurückübersetzen, erhalten wir die
Aussage
,
(Mh – M) mod pq = 0
⇔ Mh mod pq = M.
Wir fassen also zusammen:
Erzeugung der Schlüssel des Empfängers (Alice):
1. Alice wählt sich zufällig zwei große Primzahlen p und q. Dies ist nach dem Primzahlsatz (2.4) mit
effizient möglich.
2. Daraus berechnet Alice das Produkt n=pq und ϕ (n)=(p-1)(q-1).
3. Alice wählt zufällig den Verschlüsselungs-Exponenten e, so dass gilt ggT(e, n)=1. Auch diese
Berechnung ist effizient möglich.
www.mathematik-netz.de
© Copyright, Page 12 of 12
4. Alice stellt den öffentlichen Schlüssel (n, e) zur Verfügung.
5. Alice erzeugt den Entschlüsselungs-Exponenten d, dabei muss d gerade das Inverse [modulo n]
sein. Zur Berechnung verwenden wir den erweiterten euklidischen Algorithmus, welcher auf dem
Lemma von Bézout basiert.
6. Alice bewahrt ihren privaten Schlüssel (pq=n, d).
Chiffrierung der Nachricht M durch den Absender (Bob):
1. Erzeugung des numerischen Äquivalents.
e
2. Berechnung von: S:= M , wobei e gerade der Verschlüsselungs-Exponent von Alice ist.
Dechiffrierung der Nachricht S durch den Empfänger (Alice):
e d
ed
1. Berechnung von: Sd = (M ) = M .
2. Zurückübersetzung des numerischen Äquivalents.
Weiterhin viel Spaß mit der Mathematik!
http://www.mathematik-netz.de
http://www.mathering.de
Herunterladen