diff --git a/school/intro-crypto/uebung/05/05.tex b/school/intro-crypto/uebung/05/05.tex index 6a40f56..da1ef54 100644 --- a/school/intro-crypto/uebung/05/05.tex +++ b/school/intro-crypto/uebung/05/05.tex @@ -79,7 +79,7 @@ \end{figure} \begin{figure}[h!] \centering - \includegraphics[width=\textwidth]{school/intro-crypto/uebung/05/a1i2.jpg} + \includegraphics[width=\textwidth/2]{school/intro-crypto/uebung/05/a1i2.jpg} \caption{Struktur einer Feistel Runde} \label{feist_round} \end{figure} @@ -158,25 +158,30 @@ \section*{Aufgabe 3} -\begin{tabular}{|c|ccccccccc|} - \hline - & $x_1$ & $x_2$ & ... & $x_{56}$ & $x_{57}$ & $x_{58}$ & ... & $x_{63}$ & $x_{64}$ \\\hline - Eingabe $x$ & 1 & 1 & ... & 1 & 0 & 1 & ... & 1 & 1 \\\hline - $IP(x)$ & 1 & 1 & ... & 1 & 1 & 1 & ... & 0 & 1 \\\hline -\end{tabular} - -$L_0 = 11111111111111111111111111111111$ - -$R_0 = 11111111111111111111111111111101 = L_1$ - -Das zu beobachtende Bit steht an Position $31$. - -$E(R_0) = 111111111111111111111111111111111111111111111011$ \begin{enumerate}[a)] - \item Auswirkungen: + \item + \begin{tabular}{|c|ccccccccc|} + \hline + & $x_1$ & $x_2$ & ... & $x_{56}$ & $x_{57}$ & $x_{58}$ & ... & $x_{63}$ & $x_{64}$ \\\hline + Eingabe $x$ & 1 & 1 & ... & 1 & 0 & 1 & ... & 1 & 1 \\\hline + $IP(x)$ & 1 & 1 & ... & 1 & 1 & 1 & ... & 0 & 1 \\\hline + \end{tabular} + + \begin{align*} + L_0 &= 11111111111111111111111111111111 \\ + R_0 &= 11111111111111111111111111111101 = L_1 + \end{align*} + + Das zu beobachtende Bit steht an Position $31$. + + \begin{align*} + E(R_0) &= 111111111111111111111111111111111111111111111011 + \end{align*} + + Auswirkungen: $S_1\ \square$ $S_2\ \square$ @@ -224,29 +229,145 @@ $E(R_0) = 111111111111111111111111111111111111111111111011$ S-Box $S_8$: $08 = 1000$ - Ausgabe nach allen S-Boxen: $s = 11101111101001110010110001001000$ - - $P(s) = 10000010010110011101011100111011$ (berechnet mit Code im Anhang) - - $P(s) \oplus L_0 = 01111101101001100010100011000100 = R_1$ + Ausgabe nach allen S-Boxen: \begin{align*} - L_1 = R_0:\\ - 11111111111111111111111111111101 \\ - R_1:\\ - 01111101101001100010100011000100 + s &= 11101111101001110010110001001000 \\ + P(s) &= 10000010010110011101011100111011 \\ + P(s) \oplus L_0 &= 01111101101001100010100011000100 = R_1 \\ + \\ + L_1 = R_0 &= 11111111111111111111111111111101 \\ + R_1 &= 01111101101001100010100011000100 \end{align*} \item + \begin{tabular}{|c|ccccccccc|} + \hline + & $x_1$ & $x_2$ & ... & $x_{56}$ & $x_{57}$ & $x_{58}$ & ... & $x_{63}$ & $x_{64}$ \\\hline + Eingabe $x$ & 1 & 1 & ... & 1 & 1 & 1 & ... & 1 & 1 \\\hline + $IP(x)$ & 1 & 1 & ... & 1 & 1 & 1 & ... & 1 & 1 \\\hline + \end{tabular} \begin{align*} - L_1:\\ - R_1:\\ + L_0 &= 11111111111111111111111111111111 \\ + R_0 &= 11111111111111111111111111111111 = L_1 \\ + E(R_0) &= 111111111111111111111111111111111111111111111111 \\ + E(R_0) &\oplus 111111111111111111111111111111111111111111111111 \\ + &= 000000000000000000000000000000000000000000000000 \end{align*} + Einzige Änderung in S-Box $S_8$: + + \begin{align*} + S_8(000000) &= 13 = 1101 \\ + s &= 11101111101001110010110001001101 \\ + P(s) &= 10000010011110011101011110111011 \\ + \\ + L_1 = R_0 &= 11111111111111111111111111111111 \\ + R_1 &= 01111101100001100010100001000100 \\ + \end{align*} + + Anzahl geänderter Bits: In $L_1$: 1, in $R_1$: 2. Insgesamt 3 geänderte Bits + \end{enumerate} \section*{Aufgabe 4} +Aufbau einer Runde DES: + +Input: 64 Bit Daten unterteilt in $L_{n-1}, R_{n-1}$ und der Schlüssel $k_n$ + +Output: $L_n$ und $R_n$, der Input für die nächst Feistel Runde + +Eine Runde im Feistel Netz sei beschrieben durch + +\begin{align*} + F &: (L_{n-1}, R_{n-1}, k_n) \to (L_n, R_n) \\ +\end{align*} + +mit + +\begin{align*} + L_n &= R_{n-1} \\ + R_n &= f(k_n, R_{n-1}) \oplus L_{n-1} \\ + f(k, x) &= P(S(E(x) \oplus k)) +\end{align*} + +mit den S-Boxen beschrieben in $S$, der E-Box $E$ und der abschließenden P-Box $P$ + +Einschub: $a \oplus b = \overline{a} \oplus \overline{b}$ \\ + +\begin{tabular}{|c|c|c|c|c|c|} + \hline + $a$ & $b$ & $\overline{a}$ & $\overline{b}$ & $a \oplus b$ & $\overline{a} \oplus \overline{b}$ \\\hline + 0 & 0 & 1 & 1 & 0 & 0 \\ + 0 & 1 & 1 & 0 & 1 & 1 \\ + 1 & 0 & 0 & 1 & 1 & 1 \\ + 1 & 1 & 0 & 0 & 0 & 0 \\\hline +\end{tabular} + +Da $E$ nichts berechnet sondern nur deterministisch manche Bits kopiert, gilt $E(\overline{x}) = \overline{E(x)}$ + +$\Rightarrow$ Der Input für die S-Boxen ist also + +\begin{align*} + s &= E(\overline{x}) \oplus \overline{k} = \\ + &= \overline{E(x)} \oplus \overline{k} = \\ + &= E(x) \oplus k +\end{align*} + +Da der Input der S-Boxen für $f(k, x)$ und $f(\overline{k}, \overline{x})$ gleich ist, ist auch der Output gleich + +\begin{align*} + \Rightarrow f(k, x) &= f(\overline{k}, \overline{x}) +\end{align*} + +Einschub: $a \oplus \overline{b} = \overline{a \oplus b}$ \\ + +\begin{tabular}{|c|c|c|c|c|} + \hline + $a$ & $b$ & $\overline{b}$ & $a \oplus b$ & $a \oplus \overline{b}$ \\\hline + 0 & 0 & 1 & 0 & 1 \\\hline + 0 & 1 & 0 & 1 & 0 \\\hline + 1 & 0 & 1 & 1 & 0 \\\hline + 1 & 1 & 0 & 0 & 1 \\\hline +\end{tabular} \\ + +Da der Output von $f$ gleich bleibt für komplementären Input: + +\begin{align*} + R_n &= f(k_n, R_{n-1}) \oplus L_{n-1} \\ + \\ + \overline{R_n} &= f(\overline{k_n}, \overline{R_{n-1}}) \oplus \overline{L_{n-1}} \\ + &= f(k_n, R_{n-1}) \oplus \overline{L_{n-1}} \\ +\end{align*} + +Da $L_n$ ohne Veränderung aus $R_{n-1}$ übernommen wird, gilt weiter: + +\begin{align*} + \overline{L_n} &= \overline{R_{n-1}} +\end{align*} + +Für jede einzelne Runde im Feistel Netz gilt also + +\begin{align*} + F(\overline{L_{n-1}}, \overline{R_{n-1}}, \overline{k_n}) &= \overline{F(L_{n-1}, R_{n-1}, k_n)} +\end{align*} + +Da auch die Ein- und Ausgangspermutation $IP$ und $IP^{-1}$ nur Bits auf eine deterministische Weise vertauschen, gilt: + +\begin{align*} + \overline{i(x)} = i(\overline{x}) \forall i \in \{IP, IP^{-1}\} +\end{align*} + +Ein- und Ausgangspermutation geben für komplementären Input also komplementären Output, genauso wie jede Runde im +Feistel Netz und damit der gesamte DES Algorithmus + +$\Rightarrow$ Wenn $y = DES_k(x)$, dann $\overline{y} = DES_{\overline{k}}(\overline{x})$ + +% \section*{Code} + +% \inputminted{rust}{./school/intro-crypto/uebung/05/p/src/main.rs} + \end{document}