notes/school/intro-crypto/uebung/05/05.tex
2018-11-28 17:07:26 +01:00

374 lines
11 KiB
TeX

\documentclass[12pt,a4paper,german]{article}
\usepackage{url}
%\usepackage{graphics}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{pifont}
\usepackage{ngerman}
\usepackage{float}
\usepackage{diagbox}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{delarray}
% \usepackage{minted}
\usepackage{csquotes}
\usepackage{graphicx}
\usepackage{epsfig}
\usepackage{longtable}
\usepackage{paralist}
\geometry{left=2.0cm,textwidth=17cm,top=3.5cm,textheight=23cm}
\graphicspath{.}
%%%%%%%%%% Fill out the the definitions %%%%%%%%%
\def \name {Valentin Brandl} %
\def \matrikel {108018274494} %
% \def \pname {Vorname2 Nachname2} %
% \def \pmatrikel {Matrikelnummer2} %
\def \gruppe {Gruppe 193} %
\def \uebung {5} %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% DO NOT MODIFY THIS HEADER
\newcommand{\hwsol}{
\vspace*{-2cm}
\noindent \matrikel \quad \name \hfill Gruppe:\gruppe \\
% \noindent \pmatrikel \quad \pname \\
\begin{center}{\Large \bf L\"osung f\"ur \"Ubung \# \uebung}\end{center}
}
\newcommand{\cmark}{\ding{51}}%
\newcommand{\xmark}{\ding{55}}%
\newcommand{\csquare}{\text{\rlap{$\checkmark$}}\square}%
\begin{document}
%Import header
\hwsol
\section*{Aufgabe 1}
\begin{enumerate}[a)]
\item Das National Bureau of Standards (NBS) (heute National Institute of Standards and Technology (NIST)) hat die
Entwicklung des DES ausgeschrieben.
\item DES wurde 1977 standardisiert.
\item Die National Security Agency (NSA) hat an der Entwicklung des DES mitgewirkt.
\item Die Kryptographen, die den Kandidaten eingereicht haben, gehörten IBM an.
\item Auf einen Feistel Netz mit einer Blockgröße von 64 bit und einer Schlüssellänge von 128 bit
\item Die Schlüssellänge von Lucifer ist 128 bit
\item Die Schlüssellänge des DES ist 56 bit und das Sicherheitsniveau ist 56 bit.
\item Es werden 64 bit in einer DES Operation verschlüsselt.
\item Abbildung \ref{feist_alg} und \ref{feist_round}
\begin{figure}[h!]
\centering
\includegraphics[scale=0.5]{./build/school/intro-crypto/uebung/05/a1i.png}
\caption{Allgemeine Struktur eines Feistel Netzes}
\label{feist_alg}
\end{figure}
\begin{figure}[h!]
\centering
\includegraphics[width=\textwidth/2]{school/intro-crypto/uebung/05/a1i2.jpg}
\caption{Struktur einer Feistel Runde}
\label{feist_round}
\end{figure}
\end{enumerate}
\section*{Aufgabe 2}
\begin{enumerate}[a)]
\item
\begin{tabular}{|c|ccccc|}
\hline
$S_4$ & 0 & 1 & 2 & 3 & 4 \\\hline
0 & 07 & 13 & 14 & 03 & 00 \\\hline
1 & 13 & 08 & 11 & 05 & 06 \\\hline
\end{tabular}
\begin{tabular}{|c|ccccc|}
\hline
& 0 & 1 & 2 & 3 & 4 \\\hline
$(y_1,y_2,y_3,y_4)$ & 0111 & 1101 & 1110 & 0011 & 0000 \\\hline
$(y_2,y_1,y_4,y_3)$ & 1011 & 1110 & 1101 & 0011 & 0000 \\\hline
$(y_2,y_1,y_4,y_3) \oplus (0,1,1,0)$ & 1101 & 1000 & 1011 & 0101 & 0110 \\\hline
Dezimal & 13 & 8 & 11 & 5 & 6 \\\hline
\end{tabular}
Das Ergebnis entspricht genau der 1. Zeile in der S-Box $S_4$.
\item
\begin{tabular}{|c|ccccc|}
\hline
$S_4$ & 0 & 1 & 2 & 3 & 4 \\\hline
2 & 10 & 06 & 09 & 00 & 12 \\\hline
3 & 03 & 15 & 00 & 06 & 10 \\\hline
\end{tabular}
Tabelle in binär:
\begin{tabular}{|c|ccccc|}
\hline
$S_4$ & 0 & 1 & 2 & 3 & 4 \\\hline
2 & 1010 & 0110 & 1001 & 0000 & 1100 \\\hline
3 & 0011 & 1111 & 0000 & 0110 & 1010 \\\hline
\end{tabular}
Gesucht:
\begin{itemize}
\item Permutationsfunktion $f : (y_1,y_2,y_3,y_4) \to (y_1',y_2',y_3',y_4')$
\item xor Parameter $x = (x_1,x_2,x_3,x_4)$
\end{itemize}
Der Ausgangswert von Spalte 3 (0000) bleibt von der Permutationsfunktion unverändert: $f(0000) = 0000 \Rightarrow x
= 0000 \oplus 0110 = 0110$
\begin{tabular}{|c|ccccc|}
\hline
$S_4$ & 0 & 1 & 2 & 3 & 4 \\\hline
3 & 0011 & 1111 & 0000 & 0110 & 1010 \\\hline
Zeile $3 \oplus 0110$ & 0101 & 1001 & 0110 & 0000 & 1100 \\\hline
2 & 1010 & 0110 & 1001 & 0000 & 1100 \\\hline
\end{tabular}
Man kann sehen, dass wieder $y_1$ mit $y_2$ und $y_3$ mit $y_4$ vertauscht werden.
$\Rightarrow$ Ableitung von Zeile 2 zu 3:
\begin{align*}
(y_1,y_2,y_3,y_4) \to (y_2,y_1,y_4,y_3) \oplus (0,1,1,0)
\end{align*}
\end{enumerate}
\section*{Aufgabe 3}
\begin{enumerate}[a)]
\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$
$S_3\ \square$
$S_4\ \square$
$S_5\ \square$
$S_6\ \square$
$S_7\ \square$
$S_8\ \csquare$
Eingangsbits: $E(R_0) \oplus 111111111111111111111111111111111111111111111111$
S-Box $S_1$: $000000$
S-Box $S_2$: $000000$
S-Box $S_3$: $000000$
S-Box $S_4$: $000000$
S-Box $S_5$: $000000$
S-Box $S_6$: $000000$
S-Box $S_7$: $000000$
S-Box $S_8$: $000100$
\item
Ausgabe der S-Boxen:
S-Box $S_1$: $14 = 1110$
S-Box $S_2$: $15 = 1111$
S-Box $S_3$: $10 = 1010$
S-Box $S_4$: $07 = 0111$
S-Box $S_5$: $02 = 0010$
S-Box $S_6$: $12 = 1100$
S-Box $S_7$: $04 = 0100$
S-Box $S_8$: $08 = 1000$
Ausgabe nach allen S-Boxen:
\begin{align*}
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_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}