Finish exercise 5

This commit is contained in:
Valentin Brandl 2018-11-28 17:07:26 +01:00
parent f1e3b888bd
commit a606520494
No known key found for this signature in database
GPG Key ID: 30D341DD34118D7D

View File

@ -79,7 +79,7 @@
\end{figure} \end{figure}
\begin{figure}[h!] \begin{figure}[h!]
\centering \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} \caption{Struktur einer Feistel Runde}
\label{feist_round} \label{feist_round}
\end{figure} \end{figure}
@ -158,25 +158,30 @@
\section*{Aufgabe 3} \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)] \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_1\ \square$
$S_2\ \square$ $S_2\ \square$
@ -224,29 +229,145 @@ $E(R_0) = 111111111111111111111111111111111111111111111011$
S-Box $S_8$: $08 = 1000$ S-Box $S_8$: $08 = 1000$
Ausgabe nach allen S-Boxen: $s = 11101111101001110010110001001000$ Ausgabe nach allen S-Boxen:
$P(s) = 10000010010110011101011100111011$ (berechnet mit Code im Anhang)
$P(s) \oplus L_0 = 01111101101001100010100011000100 = R_1$
\begin{align*} \begin{align*}
L_1 = R_0:\\ s &= 11101111101001110010110001001000 \\
11111111111111111111111111111101 \\ P(s) &= 10000010010110011101011100111011 \\
R_1:\\ P(s) \oplus L_0 &= 01111101101001100010100011000100 = R_1 \\
01111101101001100010100011000100 \\
L_1 = R_0 &= 11111111111111111111111111111101 \\
R_1 &= 01111101101001100010100011000100
\end{align*} \end{align*}
\item \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*} \begin{align*}
L_1:\\ L_0 &= 11111111111111111111111111111111 \\
R_1:\\ R_0 &= 11111111111111111111111111111111 = L_1 \\
E(R_0) &= 111111111111111111111111111111111111111111111111 \\
E(R_0) &\oplus 111111111111111111111111111111111111111111111111 \\
&= 000000000000000000000000000000000000000000000000
\end{align*} \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} \end{enumerate}
\section*{Aufgabe 4} \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} \end{document}