notes/school/intro-crypto/uebung/05/05.tex

374 lines
11 KiB
TeX
Raw Permalink Normal View History

2018-11-27 22:28:37 +01:00
\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<65>rten IBM an.
\item Auf einen Feistel Netz mit einer Blockgr<67><72>e von 64 bit und einer Schl<68>ssell<6C>nge von 128 bit
\item Die Schl<68>ssell<6C>nge von Lucifer ist 128 bit
\item Die Schl<68>ssell<6C>nge des DES ist 56 bit und das Sicherheitsniveau ist 56 bit.
\item Es werden 64 bit in einer DES Operation verschl<68>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
2018-11-28 17:07:26 +01:00
\includegraphics[width=\textwidth/2]{school/intro-crypto/uebung/05/a1i2.jpg}
2018-11-27 22:28:37 +01:00
\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<69>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<65>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}
2018-11-28 17:07:26 +01:00
\begin{enumerate}[a)]
2018-11-27 22:28:37 +01:00
2018-11-28 17:07:26 +01:00
\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}
2018-11-27 22:28:37 +01:00
2018-11-28 17:07:26 +01:00
\begin{align*}
L_0 &= 11111111111111111111111111111111 \\
R_0 &= 11111111111111111111111111111101 = L_1
\end{align*}
2018-11-27 22:28:37 +01:00
2018-11-28 17:07:26 +01:00
Das zu beobachtende Bit steht an Position $31$.
2018-11-27 22:28:37 +01:00
2018-11-28 17:07:26 +01:00
\begin{align*}
E(R_0) &= 111111111111111111111111111111111111111111111011
\end{align*}
2018-11-27 22:28:37 +01:00
2018-11-28 17:07:26 +01:00
Auswirkungen:
2018-11-27 22:28:37 +01:00
$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$
2018-11-28 17:07:26 +01:00
Ausgabe nach allen S-Boxen:
2018-11-27 22:28:37 +01:00
2018-11-28 17:07:26 +01:00
\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*}
2018-11-27 22:28:37 +01:00
2018-11-28 17:07:26 +01:00
\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}
2018-11-27 22:28:37 +01:00
\begin{align*}
2018-11-28 17:07:26 +01:00
L_0 &= 11111111111111111111111111111111 \\
R_0 &= 11111111111111111111111111111111 = L_1 \\
E(R_0) &= 111111111111111111111111111111111111111111111111 \\
E(R_0) &\oplus 111111111111111111111111111111111111111111111111 \\
&= 000000000000000000000000000000000000000000000000
2018-11-27 22:28:37 +01:00
\end{align*}
2018-11-28 17:07:26 +01:00
Einzige <20>nderung in S-Box $S_8$:
2018-11-27 22:28:37 +01:00
\begin{align*}
2018-11-28 17:07:26 +01:00
S_8(000000) &= 13 = 1101 \\
s &= 11101111101001110010110001001101 \\
P(s) &= 10000010011110011101011110111011 \\
\\
L_1 = R_0 &= 11111111111111111111111111111111 \\
R_1 &= 01111101100001100010100001000100 \\
2018-11-27 22:28:37 +01:00
\end{align*}
2018-11-28 17:07:26 +01:00
Anzahl ge<67>nderter Bits: In $L_1$: 1, in $R_1$: 2. Insgesamt 3 ge<67>nderte Bits
2018-11-27 22:28:37 +01:00
\end{enumerate}
\section*{Aufgabe 4}
2018-11-28 17:07:26 +01:00
Aufbau einer Runde DES:
Input: 64 Bit Daten unterteilt in $L_{n-1}, R_{n-1}$ und der Schl<68>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<69>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<6E>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<65>nderung aus $R_{n-1}$ <20>bernommen wird, gilt weiter:
\begin{align*}
\overline{L_n} &= \overline{R_{n-1}}
\end{align*}
F<EFBFBD>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<6E>ren Input also komplement<6E>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}
2018-11-27 22:28:37 +01:00
\end{document}