Lösungen zu Aufgabe 8

This commit is contained in:
wieerwill 2022-03-13 12:40:15 +01:00
parent d6e3aa3b39
commit 173c3d1dc9
2 changed files with 73 additions and 49 deletions

BIN
Kryptographie - Prüfungsvorbereitung.pdf (Stored with Git LFS)

Binary file not shown.

View File

@ -601,19 +601,19 @@
Der ,,Chinesische Restsatz'' besagt im Wesentlichen, dass für teilerfremde Zahlen $m$ und $n$ die Strukturen $\mathbb{Z}_m \times\mathbb{Z}_n$ (mit komponentenweisen Operationen) und $\mathbb{Z}_{mn}$ isomorph sind.
$m$ und $n$ seien teilerfremd. Dann ist die Abbildung $\Phi:\mathbb{Z}_{mn} \owns x \rightarrow (x\ mod\ m, x\ mod\ n)\in\mathbb{Z}_m\times\mathbb{Z}_n$ bijektiv. Weiterhin: Wenn $\Phi(x)=(x_1,x_2)$ und $\Phi(y)=(y_1,y_2)$, dann gilt:
\begin{enumerate}
\begin{enumerate}
\item $\Phi(x+_{mn} y) = (x_1 +_m y_1 , x_2 +_n y_2)$
\item $\Phi(x*_{mn} y) = (x_1 *_m y_1 , x_2 *_n y_2)$
\item $\Phi(1) = (1,1)$
\end{enumerate}
\end{enumerate}
(Dabei bezeichnen $+_j$ und $*_j$ die Addition und die Multiplikation modulo $j$.)
(Dabei bezeichnen $+_j$ und $*_j$ die Addition und die Multiplikation modulo $j$.)
\end{solution}
\part Vervollständige den kleinen Satz von Fermat:
Wenn $p$ ... ist und $a$ in ... liegt, dann gilt: ...
\begin{solution}
Wenn $p$ eine Primzahl ist und $a\in\mathbb{Z}^*_p$ liegt, dann gilt $a^{p-1}\ mod\ p= 1$
Wenn $p$ eine Primzahl ist und $a\in\mathbb{Z}^*_p$ liegt, dann gilt $a^{p-1}\ mod\ p= 1$
\end{solution}
\part Vervollständige den Satz von Euler:
@ -627,12 +627,12 @@
\begin{parts}
\part Definiere den Begriff ,,$a$ ist ein F-Lügner'' (für $N$): $N$ ist ... und es gilt ... .
\begin{solution}
Sei $N\geq 3$ ungerade und zusammengesetzt.
Eine Zahl $a\in\{1,...,N-1\}$ heißt \textbf{F-Zeuge} für $N$, wenn $a^{N-1} mod\ N\not= 1$ gilt.
Eine Zahl $a\in\{1,...,N-1\}$ heißt \textbf{F-Lügner} für $N$, wenn $a^{N-1} mod\ N=1$ gilt.
Sei $N\geq 3$ ungerade und zusammengesetzt.
Eine Zahl $a\in\{1,...,N-1\}$ heißt \textbf{F-Zeuge} für $N$, wenn $a^{N-1} mod\ N\not= 1$ gilt.
Eine Zahl $a\in\{1,...,N-1\}$ heißt \textbf{F-Lügner} für $N$, wenn $a^{N-1} mod\ N=1$ gilt.
Die Menge der F-Lügner nennen wir $L^F_N$.
\end{solution}
@ -650,7 +650,7 @@
\part Definiere: $b\in\{1,...,N-1\}$ heißt nichttriviale Quadratwurzel der 1 modulo $N$, wenn...
\begin{solution}
Eine Zahl $b\in\{2,...,N-2\}$ mit $b^2\ mod\ N=1$ heißt eine nicht triviale Quadratwurzel der $1$ modulo $N$. Bei Primzahlen gibt es solche Zahlen nicht.
Eine Zahl $b\in\{2,...,N-2\}$ mit $b^2\ mod\ N=1$ heißt eine nicht triviale Quadratwurzel der $1$ modulo $N$. Bei Primzahlen gibt es solche Zahlen nicht.
\end{solution}
\part Wenn man eine nichttriviale Quadratwurzel $b$ der 1 modulo $N$ gefunden hat, weiß man sicher, dass $N$.... ist.
@ -663,10 +663,10 @@
Bilde die Folge $b_0=...,b_1=...,...,b_k=...$.
$a$ heißt dann ein MR-Lügner (für $N$), falls ...
\begin{solution}
Sei $N\geq 3$ ungerade und zusammengesetzt.
Wir schreiben $N-1=u*2^k$, für $u$ ungerade, $k\geq 1$.
Eine Zahl $a, 1\leq a < N$, heißt ein MR-Zeuge für $N$, wenn $b_0=1$ oder in der Folge $b_0,...,b_{k-1}$ zu $a$ kommt $N-1$ vor nicht gilt, d. h. $a^u\not\equiv 1$ und $a^{u*2^i}\not\equiv N-1 (mod\ N)$ für alle $i$ mit $0\leq i < k$ (Fälle 3 und 4).
Eine Zahl $a, 1\leq a < N$, heißt ein MR-Lügner für N, wenn $b_0=1$ oder in der Folge $b_0,...,b_{k-1}$ zu $a$ kommt $N-1$ vor gilt, $a^u\equiv 1$ oder $a^{u*2^i}\equiv N-1 (mod\ N)$ für ein $i$ mit $0\leq i < k$ (Fälle 1 und 2).
Sei $N\geq 3$ ungerade und zusammengesetzt.
Wir schreiben $N-1=u*2^k$, für $u$ ungerade, $k\geq 1$.
Eine Zahl $a, 1\leq a < N$, heißt ein MR-Zeuge für $N$, wenn $b_0=1$ oder in der Folge $b_0,...,b_{k-1}$ zu $a$ kommt $N-1$ vor nicht gilt, d. h. $a^u\not\equiv 1$ und $a^{u*2^i}\not\equiv N-1 (mod\ N)$ für alle $i$ mit $0\leq i < k$ (Fälle 3 und 4).
Eine Zahl $a, 1\leq a < N$, heißt ein MR-Lügner für N, wenn $b_0=1$ oder in der Folge $b_0,...,b_{k-1}$ zu $a$ kommt $N-1$ vor gilt, $a^u\equiv 1$ oder $a^{u*2^i}\equiv N-1 (mod\ N)$ für ein $i$ mit $0\leq i < k$ (Fälle 1 und 2).
Die Menge der MR-Lügner nennen wir $L^{MR}_N$.
\end{solution}
@ -683,17 +683,17 @@
return
\begin{solution}
Der Miller-Rabin-Primzahltest
\begin{itemize}
\item Bestimme $u$ ungerade und $k\geq 1$ mit $N-1 =u*2^k$
\item wähle zufällig ein $a$ aus $\{1 ,...,N-1\}$
\item $b \leftarrow a^u\ mod\ N$ // mit schnellem Potenzieren
\item if $b\in\{1,N-1\}$ then return $0$
\item for $j$ from $1$ to $k-1$ do //,,wiederhole (k-1)-mal''
\item $b\leftarrow b^2\ mod\ N$
\item if $b=N-1$ then return $0$
\item if $b=1$ then return $1$
\item return $1$
\end{itemize}
\begin{itemize}
\item Bestimme $u$ ungerade und $k\geq 1$ mit $N-1 =u*2^k$
\item wähle zufällig ein $a$ aus $\{1 ,...,N-1\}$
\item $b \leftarrow a^u\ mod\ N$ // mit schnellem Potenzieren
\item if $b\in\{1,N-1\}$ then return $0$
\item for $j$ from $1$ to $k-1$ do //,,wiederhole (k-1)-mal''
\item $b\leftarrow b^2\ mod\ N$
\item if $b=N-1$ then return $0$
\item if $b=1$ then return $1$
\item return $1$
\end{itemize}
\end{solution}
\part Was kann man über das Ein-/Ausgabeverhalten des Miller-Rabin-Algorithmus auf Eingabe $N\geq 5$ (ungerade) sagen?
@ -712,7 +712,7 @@
\part Formuliere den Primzahlsatz:
\begin{solution}
Primzahlsatz: $lim_{x\rightarrow \infty} \frac{\pi(x)}{x\backslash ln\ x}= 1$.
Primzahlsatz: $lim_{x\rightarrow \infty} \frac{\pi(x)}{x\backslash ln\ x}= 1$.
Mit $\pi(x)$ bezeichnen wir die Anzahl der Primzahlen, die nicht größer als $x$ sind.
\end{solution}
@ -738,33 +738,33 @@
\part Schlüsselerzeugung: Wähle .... und berechne $N=...$ sowie $\varphi(N)=...$. Der öffentliche Schlüssel von Bob ist $(N,e)$, wobei $e$ die Bedingung ... erfüllt. Der geheime Schlüssel von Bob ist $(N,d)$, mit ... . $d$ lässt sich mit folgendem Algorithmus berechnen: ...
\begin{solution}
Die Schlüssellänge ist festzulegen (etwa $l= 1024, 2048$ oder $4096$ Bits).
Die Schlüssellänge ist festzulegen (etwa $l= 1024, 2048$ oder $4096$ Bits).
Danach werden zwei (zufällige, verschiedene) Primzahlen $p$ und $q$ bestimmt, deren Bitlänge die Hälfte der Schlüssellänge ist.
Nun wird das Produkt $N=pq$ berechnet. Die Zahl $N$ hat $l$ oder $l-1$ Bits. Weiter wird $\varphi(N) = (p-1)(q-1)$ berechnet.
Es wird eine Zahl $e\in\{3,...,\varphi(N)-1\}$ mit $ggT(e,\varphi(N)) = 1$ gewählt.
Dann wird das multiplikative Inverse $d<\varphi(N) modulo\ \varphi(N)$ von $e$ bestimmt, so dass also $ed\ mod\ \varphi(N) = 1$ gilt. (Man beachte, dass nur ungerade $e$ in Frage kommen, weil $\varphi(N)$ gerade ist.
Nun wird das Produkt $N=pq$ berechnet. Die Zahl $N$ hat $l$ oder $l-1$ Bits. Weiter wird $\varphi(N) = (p-1)(q-1)$ berechnet.
Es wird eine Zahl $e\in\{3,...,\varphi(N)-1\}$ mit $ggT(e,\varphi(N)) = 1$ gewählt.
Dann wird das multiplikative Inverse $d<\varphi(N) modulo\ \varphi(N)$ von $e$ bestimmt, so dass also $ed\ mod\ \varphi(N) = 1$ gilt. (Man beachte, dass nur ungerade $e$ in Frage kommen, weil $\varphi(N)$ gerade ist.
Man weiß, dass die Anzahl der geeigneten Werte $e$ mindestens $\frac{\varphi(N)}{log(\varphi(N))}$ ist, so dass die erwartete Anzahl von Versuchen $O(log(\varphi(N)))=O(logN)$ ist.)
Der erwartete Berechnungsaufwand für die Schlüsselerzeugung ist $O((log\ N)^4) =O(l^4)$, weil dies die Kosten der Primzahlerzeugung sind.
Bob erhält aus seiner Rechnung $N$, $e$ und $d$. Aus diesen wird das Schlüsselpaar $(k,\hat{k})$ gebildet:
\begin{itemize}
\item Der öffentliche Schlüssel $k$ ist das Paar $(N,e)$. Dieser wird bekanntgegeben.
\item Der geheime Schlüssel $\hat{k}$ ist $(N,d)$. (Natürlich ist nur der Teil $d$ wirklich geheim.)
\end{itemize}
Bob erhält aus seiner Rechnung $N$, $e$ und $d$. Aus diesen wird das Schlüsselpaar $(k,\hat{k})$ gebildet:
\begin{itemize}
\item Der öffentliche Schlüssel $k$ ist das Paar $(N,e)$. Dieser wird bekanntgegeben.
\item Der geheime Schlüssel $\hat{k}$ ist $(N,d)$. (Natürlich ist nur der Teil $d$ wirklich geheim.)
\end{itemize}
\end{solution}
\part Verschlüsseln von $x\in ... :y=... $.
\begin{solution}
$x\in X= [N]: y=E(x,(N,e)) :=x^e\ mod\ N$
(Zu berechnen mit schneller Exponentiation, Rechenzeit $O((log\ N)^3) =O(l^3)$)
\end{solution}
\part Entschlüsseln von $y\in ... :z=... $.
\begin{solution}
$y\in Y: z=D(y,(N,d)) :=y^d\ mod\ N$
(Zu berechnen mit schneller Exponentiation, Rechenzeit $O((log\ N)^3) =O(l^3)$)
\end{solution}
@ -776,6 +776,8 @@
\part Beschreibe eine Strategie für RSA-basierte Systeme, mit der verhindert werden kann, dass zwei identische Klartextblöcke bei Verwendung desselben Schlüsselpaars gleich verschlüsselt werden.
\begin{solution}
Verwendung von Prä- und Postblöcken, die vor und nach dem zu verschlüsselnden Textblock angehängt werden mit randomisiertem (Zufallsbits) oder zeitlich abhängigem (Zeitstempel) Inhalt.
Es ist Empfohlen, beim Arbeiten mit RSA den Klartext $x$ durch das Anhängen eines nicht ganz kurzen Zufallsstrings zu randomisieren. Wenn dieser angehängte Zufallsstring die gleiche Länge wie $x$ hat, ist der Chiffretext genauso lang wie bei ElGamal.
\end{solution}
\end{parts}
@ -803,10 +805,10 @@
Genauso sieht man, dass $s\equiv x(mod\ q)$ oder $q-s\equiv x(mod\ q)$ gilt.
Mit der konstruktiven Variante des chinesischen Restsatzes können wir nun vier Zahlen $z_1,...,z_4 \in [N]$ berechnen, die die folgenden Kongruenzen erfüllen
\begin{itemize}
\item $z_1 \equiv r (mod\ p)$ und $z_1 \equiv s (mod\ q)$
\item $z_2 \equiv r (mod\ p)$ und $z_2 \equiv q-s (mod\ q)$
\item $z_3 \equiv p-r (mod\ p)$ und $z_3 \equiv s (mod\ q)$
\item $z_4 \equiv p-r (mod\ p)$ und $z_4 \equiv q-s (mod\ q)$
\item $z_1 \equiv r (mod\ p)$ und $z_1 \equiv s (mod\ q)$
\item $z_2 \equiv r (mod\ p)$ und $z_2 \equiv q-s (mod\ q)$
\item $z_3 \equiv p-r (mod\ p)$ und $z_3 \equiv s (mod\ q)$
\item $z_4 \equiv p-r (mod\ p)$ und $z_4 \equiv q-s (mod\ q)$
\end{itemize}
Wegen der obigen Überlegung ist $x\in\{z_1,...,z_4\}$. Wir wählen eine dieser vier Möglichkeiten.
@ -819,10 +821,10 @@
Welche der oberen Möglichkeiten die richtige (ausgewählte) ist, hängt vom Zufall ab, der die Auswahl von $x$ steuert. Jede der 4 Quadratwurzeln von $y$ hat dieselbe Wahrscheinlichkeit $1/4$, als $x$ gewählt worden zu sein.
\begin{enumerate}
\item Fall: $x=z$, Misserfolg.
\item Fall: $0<|x-z|< N$ und $x-z$ durch $p$ teilbar, woraus $ggT(x-z,N) =p$ folgt: Erfolg!
\item Fall: $0<|x-z|< N$ und durch $q$ teilbar, woraus $ggT(x-z,N) =q$ folgt: Erfolg!
\item Fall: $x+z=N$, also $x-z\equiv 2x(mod\ N)$. Weil $2x$ teilerfremd zu $N$ ist, ergibt sich $ggT(x-z,N)=1$, Misserfolg.
\item Fall: $x=z$, Misserfolg.
\item Fall: $0<|x-z|< N$ und $x-z$ durch $p$ teilbar, woraus $ggT(x-z,N) =p$ folgt: Erfolg!
\item Fall: $0<|x-z|< N$ und durch $q$ teilbar, woraus $ggT(x-z,N) =q$ folgt: Erfolg!
\item Fall: $x+z=N$, also $x-z\equiv 2x(mod\ N)$. Weil $2x$ teilerfremd zu $N$ ist, ergibt sich $ggT(x-z,N)=1$, Misserfolg.
\end{enumerate}
Eva muss also nur $ggT(x-z,N)$ berechnen! Damit gelingt es ihr mit Wahrscheinlichkeit $1/2$, die Faktoren von $N$ zu ermitteln. Durch l-fache Wiederholung desselben Experiments lässt sich die Erfolgswahrscheinlichkeit auf $1-\frac{1}{2^l}$ erhöhen.
@ -842,27 +844,49 @@
\part Um die Schlüssel festzulegen, wählt Bob zufällig eine geheime Zahl $b\in...$. Der öffentliche Schlüssel ist ... mit $B=$...
\begin{solution}
Es wird eine zyklische Gruppe $(G,\circ,e)$ mit einem erzeugenden Element $g$ benötigt, sowie $N=|G|$, so dass das zugehörige DH-Problem schwer zu lösen ist. Ein Element $b$ wird zufällig aus $\{2 ,...,|G|-2\}$ gewählt, und es wird mittels schneller Exponentiation $B=g^b$ berechnet. Der öffentliche Schlüssel ist $k_{pub}= (G,g,B)$, der geheime Schlüssel ist $b$ bzw. $k_{priv}=(G,g,b)$.
\end{solution}
\part Verschlüsselung von Klartextblock $x\in$... mit öffentlichem Schlüssel: ...
\begin{solution}
Wir nehmen an, dass die Menge der möglichen Botschaften (Binärstrings) eine Teilmenge von $G$ ist. Um eine Botschaft $x\in G$ zu verschlüsseln, wählt Alice eine Zufallszahl $a$ aus $\{2,...,|G|-2\}$ und berechnet $A=g^a$. Weiter berechnet sie $y:=B^a \circ x$. Der Chiffretext ist $(A,y)$.
\end{solution}
\part Entschlüsselung von Chiffretext $... \in ... $ mithilfe von $b$: ...
\begin{solution}
Bob kennt die Gruppe $G$ und $g$, sowie $A$ und $y$ (von Alice) sowie seinen geheimen Schlüssel $b$. Er berechnet $A^b= (g^a)^b=k$. Dann berechnet er das Gruppenelement $z=k^{-1}\circ y$, mit Hilfe der effizienten Invertierung und Gruppenoperation in $G$.
\end{solution}
\part Gebe das Diffie-Hellman-Problem (DH-Problem) an:
Zu Input, ..., ... finde ... .
Zu Input ..., ... finde ... .
\begin{solution}
Die Idee dabei ist, dass $k=g^{ab}$ ist, wo nur Alice $a$ kennt und nur Bob $b$. Über den öffentlichen Kanal laufen die Gruppenelemente $g^a$ und $g^b$. Eva hat also das Problem, aus $g^a$ und $g^b$ den Wert $g^{ab}$ zu berechnen.
Zu Input $k=g^{ab}$, wobei nur Alice $a$ kennt und nur Bob $b$ kennt, finde $g^a$ und $g^b$.
\end{solution}
\part Zur Sicherheit des ElGamal-Kryptosystems lässt sich feststellen: Eve kann alle bzgl. $G$ und $g$ verschlüsselten Nachrichten effizient entschlüsseln genau dann wenn ...
\begin{solution}
\begin{enumerate}
\item Eva kann alle mit dem ElGamal-Verfahren bzgl. $G$ und $g$ verschlüsselten Nachrichten effizient entschlüsseln, also aus $B$, $A$ und $y$ die Nachricht $x$ berechnen, die zum Chiffretext $(A,y)$ geführt hat.
\item Eva kann das DH-Problem für $G$ lösen.
\end{enumerate}
Wenn Eva diskrete Logarithmen bezüglich $G$ und $g$ berechnen kann, gelten natürlich 1. und 2. Wir beweisen die Äquivalenz.
\begin{itemize}
\item ,,1.$\Rightarrow$2.'': Eva hat $B=g^b$ und $A=g^a$ vorliegen und möchte $k=g^{ab}$ bestimmen. Sie wendet ihr Entschlüsselungsverfahren auf $B$, $A$ und $y=1$ an. Es ergibt sich ein Wert $x$ mit $g^{ab}\circ x=k\circ x=y=1$. Es gilt also $x=k^{-1}$, und Eva kann $k$ durch Invertierung von $x$ in $G$ berechnen.
\item ,,2.$\Rightarrow$1.'': Eva hat $B=g^b$,$A=g^a$,$y=g^{ab}\circ x$ vorliegen. Weil sie das DH-Problem lösen kann, kann sie $k=g^{ab}$ berechnen und damit natürlich $x=k^{-1}\circ y$ bestimmen.
\end{itemize}
\end{solution}
\part Wieso verwendet man in der Praxis lieber Systeme, die auf elliptischen Kurven basieren, als solche, die auf diskreten Logarithmen beruhen?
\begin{solution}
\begin{itemize}
\item wesentlich kleinere Schlüsselmenge bei deutlich höherer Komplexität
\item Bisher kein Verfahren zum ,,zurück-rechnen'' vom Öffentlichen zum Privaten Schlüssel bekannt
\item nur durch Brute Force möglich zu knacken
\item geringer Aufwand bei hoher Sicherheit
\end{itemize}
\end{solution}
\end{parts}