finished chapter Blockverschlüsselungsverfahren
This commit is contained in:
@@ -116,7 +116,7 @@
|
||||
Aus ihm werden Rundenschlüssel $k_i$ mit $i\in\{1,...,r\}$ abgeleitet, welche bei jeder Runde mit in die Berechnung einfließen.
|
||||
Bei einer Entschlüsselung wird das durch die Runden beschriebene Verfahren einfach rückwärts angewandt.
|
||||
|
||||
\section{DES und Tripple-DES}
|
||||
\section{DES}
|
||||
Das einfach DES wurde 1977 veröffentlicht und 2005 zurückgezogen.
|
||||
Sowohl die Blöcke als auch die Schlüssel setzten sich jeweils aus 8 Bytes zusammen:
|
||||
$$\begin{aligned}
|
||||
@@ -141,4 +141,104 @@
|
||||
\end{aligned}$$
|
||||
Die 3-DES Entschlüsselungsfunktion definiert sich durch:
|
||||
$$E((k^{(1)},k^{(2)},m)) := E_{DES}\left(k^{(1)},D_{DES}\left(k^{(2)},E_{DES}\left(k^{(1)},m \right)\right)\right)$$
|
||||
\includegraphics[scale=0.8]{3DES.png}
|
||||
\includegraphics[scale=0.8]{3DES.png}
|
||||
|
||||
\section{Meet-in-the-Middle-Angriff}
|
||||
Aufgrund des Meet-in-the-Middle-Angriffs führt eine \textbf{zweifache} Hintereinanderreihung von Verschlüsselungsfunktionen nur zu einer kleinen Vergrößerung des Schlüsselraums.
|
||||
Bei diesem Angriff handelt es sich um einen known-plaintext-Angriff (siehe \ref{known-plaintext}).
|
||||
Es wird angenommen, dass es ein $2E_{k_1,k_2}$ verfahren gibt, dass sich wie folgt definiert:\\
|
||||
\includegraphics{meet-in-the-middle.png}\\
|
||||
Es wird zudem angenommen, dass genügend Speicher zur Verfügung steht um alle $\tilde{k}_1\in\mathscr K$ zusammen mit den jeweiligen $c_{\tilde{k}_1}(m_1):=E(\tilde{k}_1,m_1)$ in eine Tabelle zu schreiben:
|
||||
\begin{center}
|
||||
\begin{tabular}{c|c}
|
||||
$\tilde{k}_1$ & $c_{\tilde{k}_1}(m_1):=E(\tilde{k}_1,m_1)$\\
|
||||
\hline
|
||||
0101010101010101 & 8A549EC56733AB66\\
|
||||
0101010101010102 & 653148AE6B688132\\
|
||||
\vdots & \vdots \\
|
||||
FEFEFEFEFEFEFEFE & CE55464B6485684E
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
Anschließend wird die Tabelle nach der zweiten Spalte sortiert.
|
||||
Beim Ausprobieren alle Möglichkeiten von $\tilde{k}_2 \in\mathscr K$ kann für $D_{\tilde{k}_2}(c_1)$ nachgeschlagen werden, ob sich dieser in der Tabelle befindet.
|
||||
Hierdurch ergeben sich dann $(\tilde{k}_1,\tilde{k}_2)$ Paare, für die gilt:
|
||||
$$2E_{\tilde{k}_1,\tilde{k}_2}(m_{\color{red}{\mathbf{1}}})=c_{\color{red}{\mathbf{1}}}$$
|
||||
Durchschnittlich ist mit $1+\frac{|\mathscr K|}{|\mathscr M|}$ solcher Paare zu rechnen.
|
||||
Die Paare können nun durch Ausprobieren der anderen bekannten Nachrichten $\{m_i\setminus m_1\}$ schnell ausgeschlossen werden.
|
||||
|
||||
\section{AES (Advanced Encryption Standard)}
|
||||
Der AES ist für Schlüssel mit den Bitlängen 128, 192 und 256 definiert.
|
||||
Im folgenden wird AES-128 als Synonym für alle möglichen Schlüssellängen verwendet.
|
||||
|
||||
\subsection{AES-128}
|
||||
Sowohl die Blöcke als auch die Schlüssel setzen sich aus jeweils 16 Bytes zusammen:
|
||||
$$\begin{aligned}
|
||||
\mathscr M =& ({\mathbb{Z}_2}^8)^{16}=\{(m_1,...m_{16})\mid m_i\in{\mathbb{Z}_2}^8\}\\
|
||||
\mathscr K =& ({\mathbb{Z}_2}^8)^{16}=\{(k_1,...k_{16})\mid k_i\in{\mathbb{Z}_2}^8\}\\
|
||||
\end{aligned}$$
|
||||
Blöcke werden in Form von Matrizen dargestellt, die als State-Array bezeichnet werden:
|
||||
$$S=\begin{pmatrix}
|
||||
s_{0,0} & s_{0,1} &s_{0,2} &s_{0,3}\\
|
||||
s_{1,0} & s_{1,1} &s_{1,2} &s_{1,3}\\
|
||||
s_{2,0} & s_{2,1} &s_{2,2} &s_{2,3}\\
|
||||
s_{3,0} & s_{3,1} &s_{3,2} &s_{3,3}\\
|
||||
\end{pmatrix}:=\begin{pmatrix}
|
||||
m_1 &m_5 & m_9 & m_{13}\\
|
||||
m_2 &m_6 & m_{10} & m_{14}\\
|
||||
m_3 &m_7 & m_{11} & m_{15}\\
|
||||
m_4 & m_8 & m{12} & m_{16}
|
||||
\end{pmatrix}$$
|
||||
\vspace{5mm}
|
||||
Im AES gibt es 4 elementare Operationen auf den State-Arrays:
|
||||
\begin{enumerate}
|
||||
\item SubBytes()\\
|
||||
Es wird auf Basis der folgenden Tabelle eine Substitution von jedem Element des State-Arrays durchgeführt.\\
|
||||
\includegraphics[scale=0.8]{AES S-Box.png}
|
||||
\item ShiftRows()\\
|
||||
auf dem S-Array wird die folgende Transposition durchgeführt:
|
||||
$$\begin{pmatrix}
|
||||
s_{0,0} & s_{0,1} &s_{0,2} &s_{0,3}\\
|
||||
s_{1,0} & s_{1,1} &s_{1,2} &s_{1,3}\\
|
||||
s_{2,0} & s_{2,1} &s_{2,2} &s_{2,3}\\
|
||||
s_{3,0} & s_{3,1} &s_{3,2} &s_{3,3}\\
|
||||
\end{pmatrix}
|
||||
\mapsto
|
||||
\begin{pmatrix}
|
||||
s_{0,0} & s_{0,1} &s_{0,2} &s_{0,3}\\
|
||||
s_{1,1} & s_{1,2} &s_{1,3} &s_{1,0}\\
|
||||
s_{2,2} & s_{2,3} &s_{2,0} &s_{2,1}\\
|
||||
s_{3,3} & s_{3,0} &s_{3,1} &s_{3,2}\\
|
||||
\end{pmatrix}$$
|
||||
\item MixColumns()\\
|
||||
auf dem S-Array wird eine Substitution ausgeführt, die durch die folgende Multiplikation definiert ist:
|
||||
$$S\mapsto M\cdot S\hspace{5mm} \text{mit }M=
|
||||
\begin{pmatrix}
|
||||
02 & 03& 01& 01\\
|
||||
01 & 02 & 03 & 01 \\
|
||||
01 & 01 & 02 & 03 \\
|
||||
03 & 02 & 01 & 02 \\
|
||||
\end{pmatrix}$$
|
||||
Hierbei ist wichtig anzumerken, dass die Multiplikation nicht in $\mathbf{Z}_{256}$ berechnet wird.
|
||||
Stattdessen wird sind die Elemente als Elemente des Körpers $\mathbf{F}_{256}$ aufzufassen (siehe \ref{endliche Körper})
|
||||
\item AddRoundKey()\\
|
||||
Es wird eine XOR-Operation der Einträge des S-Arrays mit den entsprechenden Einträgen aus \textbf{K} durchgeführt.
|
||||
Dies entspricht einer Matrixaddition in $\mathbb{F}_{256}$:
|
||||
$$ \textbf{S}\mapsto\textbf{K}+\textbf{S}$$
|
||||
\end{enumerate}
|
||||
\vspace{2mm}
|
||||
AES-128 führt die zuvor beschriebenen Schritte nach dem folgenden Algorithmus aus:
|
||||
\texttt{
|
||||
\begin{tabbing}
|
||||
AES\_ENCRYPT(\textbf{S},$\textbf{K}_0,...,\textbf{K}_10$)\{\\
|
||||
\hspace{5mm}\=AddRoundKey(\textbf{S},$\textbf{K}_0$)\\
|
||||
\>for( int i = 1; i < 10; ++i)\{\\
|
||||
\>\hspace{5mm}\=SubBytes(\textbf{S});\\
|
||||
\>\>ShiftRows(\textbf{S});\\
|
||||
\>\>MixColumns(\textbf{S});\\
|
||||
\>\>AddRoundKey(\textbf{S},$\textbf{K}_0$)\\
|
||||
\>\}\\
|
||||
\>SubBytes(\textbf{S});\\
|
||||
\>ShiftRows(\textbf{S});\\
|
||||
\>AddRoundKey(\textbf{S},$\textbf{K}_0$)\\
|
||||
\}
|
||||
\end{tabbing}}
|
||||
1
chapters/Endliche Körper.tex
Normal file
1
chapters/Endliche Körper.tex
Normal file
@@ -0,0 +1 @@
|
||||
\chapter{Endliche Körper $\mathbb{F}_{p^n}$} \label{endliche Körper}
|
||||
Reference in New Issue
Block a user