%
% Zum Umwandeln der EPS in PDF ``epstopdf'' verwenden, nicht ps2pdf!
%     for i in *eps; do epstopdf $i; done
% Compile: makepdf presentation noPSforPDF; xpdf presentation.PDF.pdf
%

\documentclass{beamer}
\mode<presentation>
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
%\usepackage[pdftex]{graphics}
\usepackage[english]{babel}
\usepackage{times}
\usepackage{listings}

\title{AES -- Eine Einführung in Cryptography}

\author{Andreas Hofmeier}

\date{15.01.2006}

\subject{AES -- Eine Einführung in Cryptography}

%\DeclareGraphicsRule{*}{mps}{*}{}

\begin{document}

\begin{frame}
  \titlepage
\end{frame}

\begin{frame}
  \frametitle{Übersicht}
  \tableofcontents
\end{frame}

\section{Einführung: Was ist Cryptography? Warum brauchen wir das?}
\begin{frame}
  \frametitle{Einführung: Was ist Cryptography? Warum brauchen wir das?}
  \begin{itemize}[<+->]
    \item Ein Verfahren um Daten vor unbefugtem Zugriff zu schützen.
    \item Öffentliches Netzwerk kann mit Postkarten verglichen werden
    \item Einfaches Kopieren
    \item Kopieren/Lesen hinterlässt keine Spuren
    \item mathematische Algorithmus, abhängig von Schlüssel
    \item symmetrische Verschlüsselung
  \end{itemize}
\end{frame}



\section{Grundlegende Verfahren}
\subsection{Summenverfahren}
\begin{frame}
  \frametitle{Summenverfahren}
Beispiel 1:

\begin{itemize}[<+->]
\item Verschlüsselung\\
Klartext ({\tt 6124627}) + Schlüssel ({\tt 4531773})

\begin{center}
\begin{tabular}{r}
$6124627$ \\
$+4531773$ \\
\hline
$10656400$ \\
\end{tabular}
\end{center}

Ergebnis: Chiffre ({\tt 10656400})

\item Entschlüsselung\\Chiffre ({\tt 10656400}) minus Schlüssel ({\tt
4531773})

\begin{center}
\begin{tabular}{r}
$10656400$ \\
$-4531773$ \\
\hline
$6124627$ \\
\end{tabular}
\end{center}

Ergebnis: Klartext ({\tt 6124627})
\end{itemize}

\end{frame}


\begin{frame}
  \frametitle{Summenverfahren}
Beispiel 2:

\begin{itemize}[<+->]
\item Verschlüsselung\\
Klartext ({\tt ``TREFFEN UM SIEBEN''}) + Schlüssel ({\tt ``ZEBRA''})

\includegraphics[width=10cm]{RST_AES_0Sum0}

\item Jeder Buchstabe der Nachricht wird einzeln verschlüsselt.
\item Jedem Buchstabe wird aufgrund seine Position im Alphabet eine
Zahl zugeordnet: {\tt A = 0, B = 1, ... Z = 25, Freiraum = 26}.
\item Ist die Nachricht länger als der Schlüssel, wird dieser
wiederholt angewendet.

\end{itemize}
\end{frame}



\begin{frame}
  \frametitle{Summenverfahren}

\begin{itemize}[<+->]

\item Verschlüsseln
\includegraphics[width=10cm]{RST_AES_0Sum1}

\item Zahlenstrahl
\includegraphics[width=10cm]{RST_AES_1Zahlen}

\item Eigenschaft der Rechenwerke: Nur dass Ergebnis muss im
Zahlenbereich liegen, damit die Rechnung korrekt ist.

\item Entschlüsseln
\includegraphics[width=10cm]{RST_AES_0Sum2}

\end{itemize}

\end{frame}



\begin{frame}
  \frametitle{Summenverfahren}
\begin{itemize}[<+->]
\item Summenverfahren auf Bit-Ebene
\includegraphics[width=10cm]{RST_AES_2XOR}
\end{itemize}
\end{frame}



\subsection{Permutationsverfahren}
\begin{frame}
  \frametitle{Permutationsverfahren}
\pause
\begin{itemize}[<+->]
\item Verschlüsseln
\includegraphics[width=10cm]{RST_AES_3Matrix_A}
\end{itemize}
\end{frame}


\begin{frame}
  \frametitle{Permutationsverfahren}
\begin{itemize}[<+->]
\item Entschlüsseln
\includegraphics[width=10cm]{RST_AES_3Matrix_B}
\end{itemize}
\end{frame}


\begin{frame}
  \frametitle{Permutationsverfahren}
\begin{itemize}[<+->]
\item Beispiel aus der Geschichte
\item (Vorführung!)
\item Die Regierung von Sparta zur hat bereits 500 v. Chr. mit Hilfe
eines Holzstabes (Skytale) verschlüsselt.
\includegraphics[width=10cm]{RST_AES_3Skytale}
\end{itemize}
\end{frame}



\subsection{Substitutionsverfahren}
\begin{frame}
  \frametitle{Substitutionsverfahren}

\begin{itemize}[<+->]
\item Ersetzen einzelner Symbole durch andere.
\item Historisches Beispiel: Cäsar-Chiffre

{\tt A B C D E F G H I L M N O P Q R S T U V X}\\
{\tt U V X A B C D E F G H I L M N O P Q R S T}\\
(Das Lateinischen Alphabet verfügt nicht über die Buchstaben J, K, W,
Y und Z.)

\item
{\tt TREFFEN UM SIEBEN} $\leftarrow$ Klartext\\
{\tt QOBCCBI RH PFBVBI} $\leftarrow$ Chiffre

\end{itemize}
\end{frame}


\section{Advanced Encryption Standard (AES)}
\subsection{Geschichte und Auswahl des Algorithmus}
\begin{frame}
  \frametitle{Advanced Encryption Standard (AES)}
  \begin{itemize}[<+->]
    \item öffentliches Auswahlverfahren der U.S. National Institute of
          Standards and Technology (NIST.gov)
    \item Nachfolger von Data Encryption Standards (DES), da DES
          angreifbar geworden ist
    \item Öffentlich, d.h., jeder konnte Kandidaten oder Ergebnisse einreichen

  \end{itemize}
\end{frame}


\subsection{Anforderungen an AES}
\begin{frame}
  \frametitle{Anforderungen an AES}
  \begin{itemize}[<+->]
     \item wichtigste Auswahlkriterium: Sicherheit
     \begin{itemize}
       \item Sicherheit ist nicht beweisbar
       \item Brute-Force-Attack als Vergleich
    \end{itemize}
  \item Kosten
  \begin{itemize}
    \item Der Algorithmus sollte vollkommen (kosten-) frei verwendbar
          sein. (Frei von Patent- oder anderen Ansprüchen der Entwickler)
    \item Die Implementierung und das Ver- bzw. Entschlüsseln sollte so
          billig wie möglich sein.
  \end{itemize}
\end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Anforderungen an AES II}
  \begin{itemize}[<+->]

  \item Eigenschaften der Implementierung
  \begin{itemize}
    \item Der Algorithmus sollte sowohl in Hardware als auch in Software
mit geringsten möglichen Mitteln umgesetzt werden können, also
Platformunabhängig gestaltet sein.
    \item Die Schlüssellänge sollte zwischen 128, 192 und 256 Bit gewählt
werden können.
    \item Die Blockgröße sollte 128 Bit betragen.
    \item Das Verfahren sollte einfach und verständlich sein.
  \end{itemize}
  \end{itemize}
\end{frame}


\begin{frame}
  \frametitle{Das Auswahlverfahren}
  \begin{itemize}[<+->]

  \item Alle Kandidaten mussten bis zum 15. Mai 1998 eingereicht werden.
  \item August begann dann die erste Runde, welche im März 1999 mit der Auswahl der Finalisten endete.
  \item Am 2. Oktober 2000, nach einer weiteren Auswahl-Runde, wurde schließlich der Gewinner gekürt: Rijndael.

  \item Viele Beobachter waren darüber erstaunt, dass ein Algorithmus
gewonnen hat, der weder aus den USA stammt noch von einer Firma aus dem
Verschlüsselungsgeschäft entwickelt wurde. Von vielen Seiten wurde aus
diesem Grund auf ein objektives Auswahlverfahren geschlossen, welches
am Schluss den besten Algorithmus zum Gewinner kürte.
  \end{itemize}
\end{frame}




\begin{frame}
  \frametitle{Anwärter auf AES}
\begin{footnotesize}
\begin{tabular}{|l|l|l|l|l|}
\hline
Name & eingereicht von & & aus. Runde \\
\hline
CAST-256 & Entrust (CA) & Company & 1$^1$ \\
Crypton & Future Systems (KR) & Company & 1$^2$ \\
DEAL & Outerbride, Knudsen (USA-DK) & Forscher & 1$^{sp}$ \\
DFC & ENS-CNRS (FR) & Forscher & 1$^3$ \\
E2 & NTT (JP) & Company & 1$^4$\\
Frog & TecApro (CR) & Company & 1$^s$ \\
HPC & Schroeppel (USA) & Forscher & 1$^s$ \\
LOKI97 & Brown et al. (AU) & Forscher & 1$^s$ \\
Magenta & Deutsche Telekom (DE) & Company & 1$^{sp}$ \\
Mars & IBM (USA) & Company & 2 \\
RC6 & RSA (USA) & Company & 2 \\
{\bf Rijndael} & {\bf Daemen and Rijmen (BE)} & {\bf Forscher} & {\bf WINNER} \\
SAFER+ & Cylink (USA) & Company & 1$^p$ \\
Serpent & Anderson, Biham, Kundsen (UK-IL-DK) & Forscher & 2 \\
Twofish & Counterpane (USA) & Company & 2 \\
\hline
\end{tabular}

1) Ausw. 5 im März 1999
2) 2. Oktober 2000
$^s$) Sicherheits
$^p$) Performace\\
$^1$) $\approx$ Serpent, impl. aufw.
$^2$) $\approx$ Rijndael, Twofish, $^s$
$^3$) $^s$, $\ne$ 64-Bit
$^4$) $\approx$ Rijndael,  Twofish, impl. aufw.
\end{footnotesize}
\end{frame}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\subsection{Aufbau von AES}
\begin{frame}
  \frametitle{Aufbau von AES II}
  \begin{itemize}[<+->]
\item Übersicht
\includegraphics[width=10cm]{RST_AES_6Aufb0Over}

\item Anzahl der Runden
\begin{footnotesize}
\begin{tabular}{|c||c|c|c|c|c|}
\hline
 & \multicolumn{5}{c|}{Länge des Schlüssels} \\
Länge des Datenblockes & {\bf 128} & 160 & {\bf 192} & 224 & {\bf 256} \\
\hline
\hline
{\bf 128} & {\bf 10} & 11 & {\bf 12} & 13 & {\bf 14} \\
     160  &      11  & 11 &      12  & 13 &      14 \\
     192  &      12  & 12 &      12  & 13 &      14  \\
     224  &      13  & 13 &      13  & 13 &      14 \\
     256  &      14  & 14 &      14  & 14 &      14  \\
\hline
\end{tabular}
\end{footnotesize}
\end{itemize}
\end{frame}



%\subsection{Betrachtungsweise der Daten}
\begin{frame}
  \frametitle{Betrachtungsweise der Daten}

\begin{itemize}[<+->]
\item AES betrachtet die Blöcke in der folgenden Weise: Es werden
jeweils vier Bytes von oben nach unten geschrieben. Beim fünften Byte
wird nach rechts weitergegangen und wieder oben angefangen:

\includegraphics[width=10cm]{RST_AES_6Aufb1Block}

\end{itemize}
\end{frame}

\subsection{Verwendung des Schlüssels}
\begin{frame}
  \frametitle{Verwendung des Schlüssels}

\begin{itemize}[<+->]
\item Schlüssellänge: 128, 192 und 256 Bit (16, 24 und 32 Byte)
\item {\tt KeyExpansion()} erweitert den Schlüssel auf\\ (Runden + 1) * Blockgröße
\item und erzeugt recht unvorhersagbare aber reproduzierbare Werte
aus dem Schlüssel:\\
{\tt\tiny
%\begin{lstlisting}
00000000,00000000,00000000,00000000\\
62636363,62636363,62636363,62636363\\
9b9898c9,f9fbfbaa,9b9898c9,f9fbfbaa\\
90973450,696ccffa,f2f45733,0b0fac99\\
ee06da7b,876a1581,759e42b2,7e91ee2b\\
7f2e2b88,f8443e09,8dda7cbb,f34b9290\\
ec614b85,1425758c,99ff0937,6ab49ba7\\
21751787,3550620b,acaf6b3c,c61bf09b\\
0ef90333,3ba96138,97060a04,511dfa9f\\
b1d4d8e2,8a7db9da,1d7bb3de,4c664941\\
b4ef5bcb,3e92e211,23e951cf,6f8f188e
%\end{lstlisting}
}

\item {\tt AddRoundKey()} XORt die erweiterten Schlüssel mit dem Datenstrom
\end{itemize}
\end{frame}



\subsection{Permutationsschritt}
\begin{frame}
  \frametitle{Permutationsschritt}

\begin{itemize}[<+->]
\item {\tt ShiftRows()} verschiebt die Zeilen in einem Datenblock:
\includegraphics[width=10cm]{RST_AES_7ShiftRow}

\item Die Verschiebungsweite ist durch folgende Tabelle definiert:
{\footnotesize
\begin{tabular}{|c||c|c|c|c|c|}
\hline
 & \multicolumn{5}{c|}{Länge des Datenblockes} \\
Zeile & {\bf 128} & 160 & 192 & 224 & 256 \\
\hline
\hline
1 & {\bf 0} & 0 & 0 & 0 & 0 \\
2 & {\bf 1} & 1 & 1 & 1 & 1 \\
3 & {\bf 2} & 2 & 2 & 2 & 3 \\
4 & {\bf 3} & 3 & 3 & 4 & 4 \\
\hline
\end{tabular}
}

\item Die inverse Funktion ({\tt InvShiftRows()}) schiebt die Zeilen
um die gleiche Anzahl von Bytes in die entgegengesetzte Richtung.

\end{itemize}
\end{frame}



\subsection{Substitutionsschritte}
%\subsection{Substitutionsschritt 1: {\tt SubBytes()}}
\begin{frame}
  \frametitle{Substitutionsschritt 1: {\tt SubBytes()}}

\begin{itemize}[<+->]
\item Substitution ist fest vorgeschrieben, nicht durch Schlüssel
beeinflusst.
\item {\tt SubBytes()} verarbeitet jedes Byte im Datenblock einzeln
\includegraphics[width=10cm]{RST_AES_8SubBytes}

\end{itemize}
\end{frame}


\begin{frame}
  \frametitle{Substitutionsverfahren: {\tt SubBytes()}}

\begin{itemize}[<+->]
\item Dies Substitution ist durch den
folgenden mathematischen Zusammenhang bestimmt:
\begin{itemize}[<+->]
\item Die Bits ($a_7$ bis $a_0$) in dem Byte (a) werden als Polynom betrachtet:

$a = a_7a_6a_5a_4a_3a_2a_1a_0 \ne 0$ $\Rightarrow$ $f(x) = a_7x^7 +
a_6x^6 + a_5x^5 + a_4x^4 + a_3x^3 + a_2x^2 + a_1x^ + a_0$

\item Die Inverse dieses Polynoms wird in $GF(2^8) \Leftrightarrow
GF(256)$ gebildet.

$g(x) = f(x)^{-1}$

\item Das Polynom wird jetzt wieder als Byte betrachtet:

$g(x) = b_7x^7 + b_6x^6 + b_5x^5 + b_4x^4 + b_3x^3 + b_2x^2 + b_1x^ + b_0$ $\Rightarrow$ $b = b_7b_6b_5b_4b_3b_2b_1b_0$

\item Für den nicht definierten Fall, dass a gleich 0 ist, wird angenommen,
dass b ebenfalls 0 ist.

\item ...
\end{itemize}
\end{itemize}
\end{frame}


\begin{frame}
  \frametitle{Substitutionsschritt 1: {\tt SubBytes()}}

\begin{itemize}[<+->]
\item ...
\begin{itemize}[<+->]
\item Das so gewonnene Bytes wird als Bit-Vektor betrachtet:

{\tiny
$c = \left[ \begin{matrix} c_7 \\
c_6\\
c_5\\
c_4\\
c_3\\
c_2\\
c_1\\
c_0
\end{matrix} \right] = \left[ \begin{matrix} 1&1&1&1&1&0&0&0 \\
0&1&1&1&1&1&0&0\\
0&0&1&1&1&1&1&0\\
0&0&0&1&1&1&1&1\\
1&0&0&0&1&1&1&1\\
1&1&0&0&0&1&1&1\\
1&1&1&0&0&0&1&1\\
1&1&1&1&0&0&0&1
\end{matrix} \right]
\times \left[ \begin{matrix} b_7 \\
b_6\\
b_5\\
b_4\\
b_3\\
b_2\\
b_1\\
b_0
\end{matrix} \right] \oplus \left[ \begin{matrix} 0\\
1\\
1\\
0\\
0\\
0\\
1\\
1
\end{matrix} \right]
$}

\item Die {\tt InvSubBytes()} macht den so eben beschriebenen
folgendermaßen Vorgang rückgängig:

{\tiny
$b = \left[ \begin{matrix} b_7 \\
b_6\\
b_5\\
b_4\\
b_3\\
b_2\\
b_1\\
b_0
\end{matrix} \right] = \left[ \begin{matrix} 0&1&0&1&0&0&1&0 \\
0&0&1&0&1&0&0&1\\
1&0&0&1&0&1&0&0\\
0&1&0&0&1&0&1&0\\
0&0&1&0&0&1&0&1\\
1&0&0&1&0&0&1&0\\
0&1&0&0&1&0&0&1\\
1&0&1&0&0&1&0&0
\end{matrix} \right]
\times \left[ \begin{matrix} c_7 \\
c_6\\
c_5\\
c_4\\
c_3\\
c_2\\
c_1\\
c_0
\end{matrix} \right] \oplus \left[ \begin{matrix} 0\\
0\\
0\\
0\\
0\\
1\\
0\\
1
\end{matrix} \right]
$}

\item Das Ergebnis wird als Polynom betrachtet und
invertiert.
\end{itemize}
\item Behandlung als Array:
{\tt\footnotesize
output = S[input];
}

\end{itemize}
\end{frame}


%\subsection{Substitutionsschritt 2: {\tt MixColums()}}
\begin{frame}
  \frametitle{Substitutionsschritt 2: {\tt MixColums()}}

\begin{itemize}[<+->]
\item {\tt MixColums()} wird jeweils auf eine 4-Bytes-Spalte
angewendet und führt die folgende Substitution aus:
{\footnotesize
$b = \left[ \begin{matrix} b_{0,i} \\
b_{1,i}\\
b_{2,i}\\
b_{3,i}
\end{matrix} \right] = \left[ \begin{matrix} 02 & 03 & 01 & 01 \\
01 & 02 & 03 & 01 \\
01 & 01 & 02 & 03 \\
03 & 01 & 01 & 02
\end{matrix} \right]
\times \left[ \begin{matrix} a_{0,i} \\
a_{1,i}\\
a_{2,i}\\
a_{3,i}
\end{matrix} \right]
$}
\includegraphics[width=10cm]{RST_AES_9MixColums}
\end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Substitutionsschritt 2: {\tt MixColums()}}

\begin{itemize}[<+->]
\item Um diese Umwandlung rückgängig zu machen, wurde die Funktion {\tt
InvMixColums()} entwickelt, die folgende mathematische Operation
ausführt:


$a = \left[ \begin{matrix} a_{0,i} \\
a_{1,i}\\
a_{2,i}\\
a_{3,i}
\end{matrix} \right] = \left[ \begin{matrix} 02 & 03 & 01 & 01 \\
0E & 0B & 0D & 09 \\
09 & 0E & 0B & 0D \\
0B & 0D & 09 & 0E
\end{matrix} \right]
\times \left[ \begin{matrix} b_{0,i} \\
b_{1,i}\\
b_{2,i}\\
b_{3,i}
\end{matrix} \right]
$
\end{itemize}
\end{frame}


\subsection{Entschlüsselung}
\begin{frame}
  \frametitle{Entschlüsselung}
\begin{itemize}[<+->]
\item Anwendung der {\tt Inv*()}-Funktionen:
\includegraphics[width=10cm]{RST_AES_EntSchl}
\item {\tiny Wer erkennt die vermeintliche Unstimmigkeit?}
\item {\tiny {\tt SubBytes()} und {\tt ShiftRows()} Vertauscht? Kein Problem,
da ersteres auf jedes Byte einzeln angewendet wird. Dabei ist es egal,
ob die Bytes verschoben wurden.}
\end{itemize}
\end{frame}


\section{Anwendung von AES}
%\subsection{Grundlegende Modies}
\subsection{Blockverfahren (ECB und CBC), Key-Stream-Generatoren}
\begin{frame}
  \frametitle{ECB -- Electronic Code Book}

\begin{itemize}[<+->]
\item Datenstrom in Blöcke aufgeteilt. Anwendung des Algorithmus auf
jeden Block einzeln
\item Betrachtung als Substitution: $2^{128} \approx 3.4 * 10^{38}$
verschiedene Symbole.
\item Nachricht muss vielfaches der Blockgröße lang sein.
\item Problem des ``elektronischen Codebooks''
\end{itemize}
\end{frame}


\begin{frame}
  \frametitle{ECB -- Electronic Code Book}
\includegraphics[width=10cm]{RST_AES_M0ECB}
\end{frame}



%\subsection{CBC -- Cipher Block Chaining}
\begin{frame}
  \frametitle{CBC -- Cipher Block Chaining}
\begin{itemize}[<+->]
\item Datenstrom in Blöcke aufgeteilt. Anwendung des Algorithmus auf
jeden Block einzeln. Ergebnis vom vorherigen Block wird mit einbezogen
\item Jeder Chiffre-Block ist von Passwort, dem Klartext-Block und
allen vorherigen Blöcken abhängig.
\item Erster Block ist von IV (Initial Vector = Anfangswert), Passwort,
und dem Klartext-Block abhängig.
\item Da der letzte Block von allen Blöcken abhängig ist, kann dieser
als HASH-Wert angesehen werden.
\item Alle vorherigen Blöcke müssen vorhanden sein, um die Nachricht
zu entschlüsseln.
\end{itemize}
\end{frame}


%\subsection{CBC -- Cipher Block Chaining}
\begin{frame}
  \frametitle{CBC -- Cipher Block Chaining}
\includegraphics[width=10cm]{RST_AES_M1CBC}
\end{frame}



\begin{frame}
  \frametitle{Key-Stream-Generatoren}
\begin{itemize}[<+->]
\item AES wird benutzt um einen Schlüssel-Stream zu erzeugen
\item Dieser Key-Stream ist abhängig vom Passwort und vom IV (Initial Vector = Anfangswert)
\item Die Daten werden durch XOR mit dem Schlüssel-Stream
verschlüsselt.
\item AES-Entschlüsselungsalgorithmus wird nicht gebraucht.
\item Nachrichten können beliebige Längen aufweisen
\end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Key-Stream-Generatoren (Generelle Beispiel)}
\includegraphics[width=10cm]{RST_AES_M2KeyStream}
\end{frame}





\section{Konkrete Anwendung: Linux CryptoLOOP}

\begin{frame}
  \frametitle{Konkrete Anwendung: Linux CryptoLOOP}
\includegraphics[width=10cm]{RST_AES_O0Loop}
\begin{itemize}[<+->]
\item Dateisysteme nur auf Block Devices
\item Loop wandelt Dateien in Blockdevices (Images mounten)
\item Loop-Treiber kann AES
\end{itemize}
\end{frame}


\begin{frame}
  \frametitle{Eigenschaften von CryptoLOOP}
\begin{itemize}[<+->]
\item Blockgröße 512 Bytes
\item Verschlüsselung jedes Blockes in CBC-Mode
\item Optimierung in Assembler
\item Im ``normalem'' Modus Password SHA gehasht
\item Wiederholtes verschlüsseln des Passwortes
\end{itemize}
\end{frame}


\begin{frame}
  \frametitle{Geschwindigkeit}

\begin{itemize}[<+->]
\item Pentium III 850 MHz: 11485591 Byte/Sekunde ca. 11 MByte/s.
\item $\Rightarrow$ 22411 512-Byte-Blöcke/s $\Rightarrow$ 717152
16-Byte-(128-Bit)-Blöcke/s.
\item Brute-Force-Attack: $\frac{2^{256} Moeglichkeiten}{717152
 \frac{16-Byte-(128-Bit)-Bloecke}{s}} * \frac{1}{60*60*24*7*53} \approx
5 * 10^{63} Jahre$ 
\end{itemize}
\end{frame}


\section{Bibliographie und Referenzen}
\begin{frame}
  \frametitle{Bibliographie und Referenzen}
\begin{itemize}
\item Bibliographie und Referenzen
\item Vorführung
\end{itemize}
\end{frame}



\end{document}



Deters, D. 2002 Systematisierung der symmetrischen
kryptographischen Verfahren Available at http://www.informatik.hu-berlin.de/Forschung\_Lehre/algorithmenII/
Lehre/SS2002/Ana\_krypt\_Alg/02Systematisierung/Systematisierung.html
accessed 20. December 2005

{\bf Daemen, J.; Rijmen, V.} 2002 The Design of Rijndael. Berlin
Heidelberg: Springer-Verlag. ISBN 3-540-42580-2.


{\bf Wilkin, C} 2004 Der Algorithmus der ``Advanced Encryption
Standard''. Available at {\tt
http://www.ainformatik.fh-trier.de/~scheerhorn/
accessed 20. December 2005

{\bf  van Rees, J} 2005 Introduction to Cryptography and
Cryptosystems: Assignments Available at {\tt
http://www.cs.umanitoba.ca/~cs414/assignments/test2output.txt}
accessed 26. December 2005

{\bf Ruusu, J} 2004 ``README'' von Loop-AES. Available at {\tt
http://loop-aes.sourceforge.net/loop-AES.README}


\subsection{Substitutionsverfahren}
\begin{frame}
  \frametitle{Substitutionsverfahren}

\begin{itemize}[<+->]
\item foo
\end{itemize}
\end{frame}











\subsection{Aufbau von AES}
\begin{frame}
  \frametitle{Aufbau von AES I}
{\tt\footnotesize
%\begin{lstlisting}
Rijndael(Data, Key) \{\\
  KeyExpansion(Key, ExpandedKey);\\
  AddRoundKey(Data, ExpandedKey[0]);\\
  for (i = 0; i < N; i++) \{\\
    Round(Data, ExpandedKey[i]);\\
  \}\\
  FinalRound(Data, ExpandedKey[N]);\\
)\\
\\
Round(Data, ExpandedKey) \{\\
  SubBytes(Data);\\
  ShiftRows(Data);\\
  MixColums(Data);\\
  AddRoundKey(Data, ExpandedKey);\\
\}\\
\\
FinalRound(Data, ExpandedKey) \{\\
  SubBytes(Data);\\
  ShiftRows(Data);\\
  AddRoundKey(Data, ExpandedKey);\\
\}
%\end{lstlisting}
}
\end{frame}
