Finish exercise 5
This commit is contained in:
parent
f1e3b888bd
commit
a606520494
@ -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}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user