Merge branch 'master' of https://git.2li.ch/ibz/math_rsa
* 'master' of https://git.2li.ch/ibz/math_rsa: various math fixes move comma after parentheses correct inline math fix typo fix exponents correct line lengths
This commit is contained in:
commit
2edc944c43
104
main.tex
104
main.tex
|
@ -37,17 +37,17 @@ empfohlene Grösse bei 4096 Bit liegt.
|
|||
|
||||
\subsection{Geschichte}
|
||||
|
||||
Im Jahre 1976 wurde von Whitfield Diffie und Martin Hellman eine
|
||||
Theorie zu Publickey-Kryptographie veröffentlicht \cite{ref4}. In welcher sie
|
||||
ein Konzept Namens "Falltür" präsentieren. Dabei handelt es sich um
|
||||
mathematische Probleme welche in eine Richtung sehr aufwändig und in die andere
|
||||
Richtung viel einfacher zu lösen sind.
|
||||
Im Jahre 1976 wurde von Whitfield Diffie und Martin Hellman eine Theorie zu
|
||||
Publickey-Kryptographie veröffentlicht \cite{ref4}. In welcher sie ein Konzept
|
||||
Namens "Falltür" präsentieren. Dabei handelt es sich um mathematische Probleme
|
||||
welche in eine Richtung sehr aufwändig und in die andere Richtung viel einfacher
|
||||
zu lösen sind.
|
||||
|
||||
Ronald L. Rivest, Adi Shamir und Leonard Adleman wollten nach der
|
||||
Veröffentlichung der Theorie von Herrn Diffie und Herrn Hellman beweisen das
|
||||
Veröffentlichung der Theorie von Herrn Diffie und Herrn Hellman beweisen das
|
||||
solche Falltüren nicht existieren. Dabei entdeckten sie jedoch genau solch eine
|
||||
Falltür daraus entwickelten sie dann den RSA Algorithmus welchen sie 1977
|
||||
vorstellten \cite{ref5}. RSA steht dabei für die Anfangsbuchstaben ihrer
|
||||
vorstellten \cite{ref5}. RSA steht dabei für die Anfangsbuchstaben ihrer
|
||||
Familiennamen.
|
||||
|
||||
Im Jahre 2002 erhielten sie den Turing-Award für ihre Arbeit auf dem Gebiet der
|
||||
|
@ -65,8 +65,8 @@ wie die Authentifizierung gegenüber den Bankautomaten funktioniert.
|
|||
|
||||
\textbf{HTTPS (TLS und X.509-Zertifikate)}
|
||||
|
||||
HTTPS garantiert das die Zugriffe auf Website welche es unterstützen,
|
||||
vor Manipulationen sowie Spionage von Unbefugten geschützt sind. Dies ist
|
||||
HTTPS garantiert das die Zugriffe auf Website welche es unterstützen, vor
|
||||
Manipulationen sowie Spionage von Unbefugten geschützt sind. Dies ist
|
||||
insbesondere bei eBanking oder Websiten mit Logins essentiel wichtig. Ansonsten
|
||||
ist es ein Leichtes Konten zu übernehmen.
|
||||
|
||||
|
@ -96,14 +96,10 @@ Verschlüsseln der eigentlichen Daten.
|
|||
|
||||
|
||||
\section{Öffentlicher und Privater Schlüssel}
|
||||
|
||||
|
||||
|
||||
|
||||
Als erster Schritt muss ein öffentlicher und privater Schlüssel,(sozusagen ein Schlüsselpaar) konstruiert werden.
|
||||
Dazu wählen wir 2 zwei zufällie Primzahlen die wir in unserem Beispiel zur einfachheit halber klein halten und fangen mit der Konstruktion an.
|
||||
|
||||
|
||||
Als erster Schritt muss ein öffentlicher und privater Schlüssel (sozusagen ein
|
||||
Schlüsselpaar), konstruiert werden. Dazu wählen wir 2 zwei zufällie Primzahlen
|
||||
die wir in unserem Beispiel zur einfachheit halber klein halten und fangen mit
|
||||
der Konstruktion an.
|
||||
|
||||
\subsection{Schlüsselkontruktion}
|
||||
% ------------------------------------------- Makro Definitionen -------------------------------------------
|
||||
|
@ -112,18 +108,18 @@ Dazu wählen wir 2 zwei zufällie Primzahlen die wir in unserem Beispiel zur ein
|
|||
\def\varphipxphiq{\varphi \textit{(p)} \cdot \varphi\textit{(q)}} % IH | ich definiere "phi p x phi q" \varphipxphiq
|
||||
\def\pmineinsxqmineins{(\textit{p}-1) \cdot (\textit{q}-1)} % IH | ich definiere "p min eins x q min eins" \pmineinsxqmineins
|
||||
% ------------------------------------------- Makro Definitionen -------------------------------------------
|
||||
\textit In den folgenden Seiten berechnen wir : \\
|
||||
In den folgenden Seiten berechnen wir : \\
|
||||
\textit{N} = Privatschlüsselanteil \\
|
||||
\textit{p} = primzahl \\
|
||||
\textit{q} = primzahl \\
|
||||
\textit{p} = primzahl \\
|
||||
\textit{q} = primzahl \\
|
||||
\textit{e} = Teilerfremder Wert \\
|
||||
\textit{d} = modular inverse \\
|
||||
\ In dem e+n den öffentlichen und d+n den privaten Schlüssel bilden. \\
|
||||
|
||||
|
||||
\subsection{Konstruktion \textit{N}}
|
||||
Es werden zwei verschiedene Primzahlen p = 7 und q = 11 gewählt und das Produkt daraus
|
||||
gerechnet, welches wir N nennen.
|
||||
Es werden zwei verschiedene Primzahlen p = 7 und q = 11 gewählt und das Produkt
|
||||
daraus gerechnet, welches wir N nennen.
|
||||
\begin{align*}
|
||||
\textit{N} & = \pq \\
|
||||
77 & = 7 \cdot 11 \\
|
||||
|
@ -132,9 +128,10 @@ gerechnet, welches wir N nennen.
|
|||
|
||||
|
||||
\subsection{Konstruktion \textit{m}}
|
||||
Danach rechnen wir Phi von N um die Anzahl der teilerfremden Zahlen zu
|
||||
berechnen. Da p und q Primzahlen sind wissen wir das Phi von \(p=p-1\) und Phi
|
||||
von \(q=q-1\) ist.
|
||||
|
||||
Danach rechnen wir Phi von N um die Anzahl der teilerfremden Zahlen zu berechnen.
|
||||
Da p und q Primzahlen sind wissen wir das Phi von p = p-1 und Phi von q = q-1 ist.
|
||||
\begin{align*}
|
||||
\varphi \textit{(N)} & = \m \\
|
||||
\varphi \textit{(N)} & = \varphipxphiq \\
|
||||
|
@ -143,17 +140,23 @@ Da p und q Primzahlen sind wissen wir das Phi von p = p-1 und Phi von q = q-1 is
|
|||
\varphi \textit{(N)} & = 60
|
||||
\end{align*}
|
||||
|
||||
|
||||
\subsection{Konstruktion \textit{e}}
|
||||
Wir bestimmen eine zu \textit{m} = 60 teilerfremde Primzahl mit 1<
|
||||
\textit{e} < \textit{m} mit dem ggT(e,m)=1 \\
|
||||
\ Wir nehmen in unserem Beispiel 7 da sie nicht durch 60 teilbar ist und beide den ggT 1 besitzten. \\
|
||||
Wir bestimmen eine zu \textit{m} = 60 teilerfremde Primzahl mit \(1<
|
||||
\textit{e}<\textit{m}\) mit dem ggT(e,m)=1 \\
|
||||
Wir nehmen in unserem Beispiel 7 da sie nicht durch 60 teilbar ist und beide den
|
||||
ggT 1 besitzten.
|
||||
|
||||
|
||||
\subsection{Konstruktion \textit(d)}
|
||||
Zuvor haben wir e mit der Eigenschaft ( ggT( e,\varphi (N)\) = 1 ) bestummen, dies bedeutet, wenn wir ( mod \varphi (N)\) rechnen, hat e einen inversis. \\
|
||||
Wir bestimmen d mit e*d \equiv 1 mod $\varphi (N) $ und formen dies nach d = e^(-1) mod $\varphi (N) $ \
|
||||
Aus e^(-1) mod $\varphi (N) $ \ \equiv 7^-1 mod $\varphi (77) $ berechnen wir die inverse, indem wir erstmal aus 60 und 7 den euklidischen Algorithmus formen, als wollten wir den ggT dieser Zahlen ermitteln. Wir wissen schon dass der ggT(60,7) 1 ist.
|
||||
%evtl würde es Sinn machen wenn wir das hier in equations packen? Wäre
|
||||
%übersichtlicher.
|
||||
Zuvor haben wir e mit der Eigenschaft ( \(ggT(e,\varphi(N)=1\) ) bestummen,
|
||||
dies bedeutet, wenn wir ( \(mod\varphi(N)\) ) rechnen, hat e einen inversis. \\
|
||||
Wir bestimmen d mit \(e*d \equiv 1 mod \varphi (N)\) und formen dies nach \(d =
|
||||
e^{-1} mod \varphi (N)\) Aus \(e^{-1} mod \varphi (N)\ \equiv 7^{-1} mod
|
||||
\varphi (77)\) berechnen wir die inverse, indem wir erstmal aus 60 und 7 den
|
||||
euklidischen Algorithmus formen, als wollten wir den ggT dieser Zahlen
|
||||
ermitteln. Wir wissen schon dass der ggT(60,7) 1 ist.
|
||||
|
||||
|
||||
\begin{align*}
|
||||
|
@ -163,7 +166,10 @@ Aus e^(-1) mod $\varphi (N) $ \ \equiv 7^-1 mod $\varphi (77) $ berechnen wir d
|
|||
3 & = 3 \cdot 1 + 0
|
||||
\end{align*}
|
||||
|
||||
Der erweiterte euklidische Algorithmus besteht nun darin, ausgehend von der vorletzten Zeite, diese Rechenschritte "von unten nach oben" in der folgenden Weise aufzurollen, indem die einzelnen Zeilen nach den Resten aufgelöst und diese nacheinander eingesetzt werden:
|
||||
Der erweiterte euklidische Algorithmus besteht nun darin, ausgehend von der
|
||||
vorletzten Seite, diese Rechenschritte ''von unten nach oben'' in der folgenden
|
||||
Weise aufzurollen, indem die einzelnen Zeilen nach den Resten aufgelöst und
|
||||
diese nacheinander eingesetzt werden:
|
||||
|
||||
\begin{align*}
|
||||
1 & = 4 - 1 \cdot 3 \\
|
||||
|
@ -172,20 +178,24 @@ Der erweiterte euklidische Algorithmus besteht nun darin, ausgehend von der vorl
|
|||
1 & =(-1) \cdot 7 + 2 \cdot 4 \\
|
||||
1 & = (-1) \cdot 7 + 2 \cdot (60-8 \cdot 7)\\
|
||||
\end{align*}
|
||||
Zu beachten ist, dass wir alle Klammern, jedoch nicht alle Produkte ausmultiplizieren\\
|
||||
Zu beachten ist, dass wir alle Klammern, jedoch nicht alle Produkte
|
||||
ausmultiplizieren\\
|
||||
|
||||
Da unsere Inverse positiv und kleiner 60 sein soll, addieren wir 60*7 auf der linken Seite.
|
||||
Die rechte Seite verändert sich nicht, da wir mod 60 rechnen.\\
|
||||
Da unsere Inverse positiv und kleiner 60 sein soll, addieren wir \(60*7\) auf
|
||||
der linken Seite. Die rechte Seite verändert sich nicht, da wir mod 60 rechnen.
|
||||
|
||||
\begin{align*}
|
||||
1 & = 2 \cdot 60 -17 \cdot 7 \,\mid (mod)\\
|
||||
1 & = 43 \cdot 7 \, mod 60 \,\mid (60 - 17 = 43)\\
|
||||
1 & = \textit{d} ^\textit{e} \, mod \, \textit{n} \, \slash \, \,\mid Umformen \, nach \, \textit{d} \, \\
|
||||
% IH | in Formeln werden leerzeichen ignoriert darum kann mit " \, " , " \: " , " \; " erstellt einen "schmalen", "mittleren" und "breiten" Leerschlag. Es geht auch mit \thinspace, \medspace oder \thickspace...
|
||||
1 & = \textit{d} ^\textit{e} \, mod \, \textit{n} \, \slash \, \,\mid Umformen \, nach \, \textit{d} \, \\
|
||||
% IH | in Formeln werden leerzeichen ignoriert darum kann mit " \, " , " \: " ,
|
||||
%" \; " erstellt einen "schmalen", "mittleren" und "breiten" Leerschlag. Es geht
|
||||
%auch mit \thinspace, \medspace oder \thickspace...
|
||||
\textit{d} & = 7^{-1} \, mod \, 60 \\
|
||||
\textit{d} & = 43
|
||||
\textit{d} & = 43
|
||||
\end{align*}
|
||||
Danach lösen wir die Gleichung nach d auf . \\
|
||||
|
||||
Danach lösen wir die Gleichung nach d auf.
|
||||
|
||||
\section{Verschlüsselung}
|
||||
Im Beispiel der Schlüsselkonstruktion werden die Variablen e und N als
|
||||
|
@ -194,15 +204,15 @@ den dafür entsprechenden Empfänger zu verschlüsseln. Mit der daraus
|
|||
resultierenden Zahl sowie dem privaten Schlüssel, welcher aus den Variablen d
|
||||
und N besteht, kann die Nachricht wieder entschlüsselt werden.
|
||||
|
||||
In unserem Beispiel lautet der private Schlüssel also: 43 + 77
|
||||
und der öffentliche Schlüssel: 7 + 77
|
||||
In unserem Beispiel lautet der private Schlüssel also: \(43+77\)
|
||||
und der öffentliche Schlüssel: \(7+77\)
|
||||
|
||||
\subsection {Der eigentliche Akt der Verschlüsselung}
|
||||
Wollen wir nun eine Nachricht mit dem öffentlichen Schlüssel verschlüsseln, so
|
||||
das sie also nur noch für den Empfänger mit dem entsprechenden privaten
|
||||
Schlüssel zu entschlüsseln ist, gehen wir folgendermassen vor:
|
||||
|
||||
Wir kennen die beiden Zahlen des öffentlichen Schlüssels: 7 + 77
|
||||
Wir kennen die beiden Zahlen des öffentlichen Schlüssels: \(7+77\)
|
||||
|
||||
Unsere zu verschlüsselnde Nachricht x: 45 (muss kleiner sein als N)
|
||||
(Wie bereits in einem früheren Kapitel erwähnt sind solche öffentliche
|
||||
|
@ -212,9 +222,10 @@ Primzahlen verwenden müssen wir diesen Punkt beachten um sicherzustellen das
|
|||
wir auch ein korrektes Ergebnis erhalten.)
|
||||
|
||||
Die Nachricht wird nun mit folgender Formel verschlüsselt:
|
||||
|
||||
\begin{align*}
|
||||
y & = x ^a mod n \\
|
||||
y & = 45^43 mod 77 \\
|
||||
y & = 45^{43} mod 77 \\
|
||||
y & = 45 \\
|
||||
\end{align*}
|
||||
|
||||
|
@ -232,9 +243,10 @@ Unsere gesuchte Zahl lautet demnach 43 (d)
|
|||
|
||||
Da nun alle benötigten Variablen bekannt sind kann die Nachricht mit folgender
|
||||
Formel entschlüsselt werden.
|
||||
|
||||
\begin{align*}
|
||||
x & = y ^d mod n \\
|
||||
x & = 45^43 mod 77 \\
|
||||
x & = y^d mod n \\
|
||||
x & = 45^{43} mod 77 \\
|
||||
x & = 45 \\
|
||||
\end{align*}
|
||||
|
||||
|
@ -248,7 +260,7 @@ stellen wir die Wichtigsten Methoden vor.
|
|||
Die Methode alle möglichen Primzahlen von $\varphi=\pmineinsxqmineins$
|
||||
auszuprobieren gilt als nicht einfacher als \textit{N} zu Faktorisieren.
|
||||
|
||||
\subsection{Fakturierung durch die Kenntnis von \textit{N} }
|
||||
\subsection{Fakturierung durch die Kenntnis von \textit{N}}
|
||||
Weil die Faktoren von \textit{N} den $\varphi$\textit{N} ermitteln lassen kann
|
||||
auch \textit{d} ermittelt werden. Die Erfinder RSA selbst, berechneten anhand
|
||||
eines Algorithmus von Richard Schroeppel und der Annahme das ein
|
||||
|
|
Loading…
Reference in New Issue