\chapter{Substitionsverfahren}
    \section{Skytale}
        Ein Streifen wird um einen Stock gewickelt und dann beschrieben. 
        Nach dem abwickeln erhält man den entsprechenden Code. 
        Durch aufwickeln auf einen Stock mit dem gleichen Umfang lässt sich die Nachricht wieder entschlüsseln.\\
        \includegraphics[width=1.0\textwidth]{Skytale.png}\\
        \noindent\textbf{Tipp:}\\
        Zum entschlüsseln der Nachricht am PC ist der Editor mit automatischen Zeilen-Wrap gut geeignet

    \section{Monoalphabetische Substitionsverfahren} \label{monoalphabet}
        Jeder Buchstabe wird bijektiv durch einen anderen Buchstaben des gleichen Alphabets ersetzt.\\
        \begin{tabbing}
            Alphabet: \hspace{35mm}\=$\mathscr{Z} := \{A,B,...,Z\}$\\
            Schlüsselraum: \>$\mathscr{K} := \{k:\mathscr{Z}\rightarrow\mathscr{Z} | k \text{ ist bijektiv}\}$\\
            Verschlüsselung von $z\in \mathscr{Z}$: \>$k(z)$\\
            Entschlüsselung: \> $E(z) := k(z)$
        \end{tabbing}

        \subsection{Caesar-Verschlüsselung}
            Alle Buchstaben des Alphabets werden um einen konstanten Wert verschoben.
            \newline
            \noindent\textbf{Beispiel:}\\
            \noindent\textbf{Code:} $n=2$ \\
            \noindent\textbf{Verschlüsselung:} jeder Buchstabe wird durch den übernächsten Buchstaben im Alphabet ersetzt ($E(m)=(m+3) \mod 26$).\\
            \noindent\textbf{Entschlüsselung:} jeder Buchstabe wird durch den vor-vorherigen Buchstaben ersetzt.
        
        \subsection{Häufigkeitsanalyse} \label{häufigkeit}
            Monoalphabetische Substitionsverfahren lassen sich mit moderner Technik sehr einfach durch die Verwendung von Häufigkeitsanalysen entschlüsseln.
            In jeder Sprache gibt es Buchstaben die deutlich häufiger vorkommen als andere.
            Durch einer Analyse der Häufigkeit der einzelnen Buchstaben im Geheimtext lassen sich diese den Ausgangsbuchstaben zuordnen.
    
    \section{Polyalphabetische Substitutionsverfahren}
        Damit sich ein Geheimtext nicht durch eine Häufigkeitsanalyse (\ref{häufigkeit}) entschlüsseln lässt wird bei polyalphabetischen Verschlüsselungsverfahren der Schlüssel regelmäßig gewechselt.
        Hierbei wird der Schlüsselwechsel meist selbst durch ein Schlüsselwort kodiert.

        \subsection{Vignère-Verfahren}
            \begin{tabbing}
                Alphabet: \hspace{35mm}\=$\mathscr{Z} := \{A,B,...,Z\}$\\
                Menge aller Wörter: \>$\mathscr{W} = \mathscr{Z}^{>0} := \bigcup_{n\in\mathbb{N}} \mathscr{Z}^n = \{(m_1,m_2,...,m_n)|m_i\in\mathscr{Z},n\in\mathbb{N}\}$\\
                Schlüsselraum: \>$\mathscr{K} := \Sigma_\mathscr{Z} \times \mathscr{W}$
            \end{tabbing}
            Ein Schlüssel $k = (f,w)\in \mathscr{K}$ besteht aus einer Permutation $f\in \Sigma_\mathscr{Z}$ (siehe \ref{monoalphabet}) und einem Schlüsselwort $w$.\\
            Das Vignère-Verfahren ist ein Blockverschlüsselungsverfahren, bei dem jeweils ein Block von Zeichen (im Beispiel 4) nach dem gleichen Verfahren verschlüsselt wird.
            Wenn die Blockgröße klein genug oder die Textlänge groß genug sind lässt sich ein solches Verfahren ebenfalls durch eine Häufigkeitsanalyse (siehe \ref{häufigkeit}) knacken.

            \subsubsection{Verschlüsselung}
                Der Schlüssel $f$ wird zyklisch mithilfe des Schlüsselwortes $w$ verschoben.\\
                \noindent\textbf{Beispiel:}\\
                $f=\text{VEYZNTCWOMFQPRGDXIABHULKJS}$ und $w=\text{SKAT}$\\
                \includegraphics[width=0.75\textwidth]{Vignère-Verfahren.png}\\
    
        \subsection{One-Time-Pad}\label{otp}
            Bei dem One-Time-Pad handelt es sich um ein absolut sicheres Substitionsverfahren 
            (Nachrichten, bei denen sich Informationen von der Länge der Nachricht ableiten lassen müssen auf eine konstante Länge gebracht werden).

            \subsubsection{Verschlüsselung}
                \begin{tabbing}
                    Annahme: \hspace{30mm}\= Klar- und Geheimtext sind eine Folge von Zeichen der Menge $\mathscr{Z} = \mathbb{Z}$ ($n\in\mathbb{N}$)\\
                    Klartextnachricht: \>$m=(m_1,m_2,...m_l)\in {\mathbb{Z}_n}^l$\\
                    One-Time-Pad (zufällig): \>$k=(k_1,k_2,...k_l)\in {\mathbb{Z}_n}^l$\\
                    Geheimtext: \>$E(m) := m+k := (m_1+k_1,m_2+k_2,...,m_l+k_l)$\\
                \end{tabbing}
            
            \subsubsection{Perfekte Sicherheit}
                Wenn die Zeichen $k_i$ des Schlüssels mit einem perfekten Zufallsgenerator erzeugt lassen sich \textbf{keine} Rückschlüsse auf die Klartextnachricht ziehen (außer Länge).\\
                Allerdings darf ein One-Time-Pad nur ein einziges Mal für die Verschlüsselung verwendet werden.
                Andernfalls könnte durch eine Berechnung der Differenz der mit dem gleichen OTP verschlüsselten Nachrichten Informationen gewonnen werden.
                So kann eine Häufigkeitsanalyse (siehe \ref{häufigkeit}) oder sogar eine komplette Entschlüsselung (falls Klartext einer Nachricht bekannt ist) möglich werden.

    \section{algebraische Substitionsverfahren}
        \subsection{Hill-Verfahren}
            Das Hill-Verfahren ver- und entschlüsselt die Nachrichten mithilfe einer \textbf{invertierbaren} Matrix.
             
            \subsubsection{Verschlüsselung}
                \begin{tabbing}
                    Annahme: \hspace{35mm}\=$n,k\in\mathbb{N}$ sind vorgegeben\\
                    Klartextnachricht: \> Menge von Blöcken $\mathscr{B}={\mathbb{Z}_n}^k$\\
                    Schlüssel: \> \textbf{invertierbare} ($k,k$)-Matrix $K$\\
                    Geheimtext: \> $E_K(b) := K\cdot b$ \hspace{5mm} ($b\in\mathscr{B}$)\\
                \end{tabbing}
            
            \subsubsection{Entschlüsselung}
                \begin{tabbing}
                    Annahme: \hspace{35mm}\= gleiche Bedingungen wie bei der Verschlüsselung \\
                    Geheimtextnachricht: \> Menge von Blöcken $\mathscr{C}={\mathbb{Z}_n}^k$\\
                    Klartext: \>$E_K(c) := K^{-1}\cdot c$ \hspace{5mm} ($c\in\mathscr{C}$)\\
                \end{tabbing}