\documentclass[a4paper,12pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{graphicx} %BIlder einbinden
\usepackage{amsmath} %erweiterte Mathe-Zeichen
\usepackage{amsfonts} %weitere fonts
\usepackage[utf8]{inputenc} %Umlaute & Co
\usepackage{hyperref} %Links
\usepackage{ifthen} %ifthenelse
\usepackage{enumerate}

\usepackage{color}
\usepackage{algpseudocode} %Pseudocode
\usepackage{dsfont} % schöne Zahlenräumezeichen
\usepackage{amssymb, amsthm} %noch stärker erweiterte Mathe-Zeichen
\usepackage{tikz} %TikZ ist kein Zeichenprogramm
\usetikzlibrary{trees,automata,arrows,shapes}
\usepackage{pgfplots}

\pagestyle{empty}


\topmargin-50pt

\newcounter{aufgabe}
\def\tand{&}

\newcommand{\makeTableLine}[2][0]{%
\setcounter{aufgabe}{1}%
\whiledo{\value{aufgabe} < #1}%
{%
#2\tand\stepcounter{aufgabe}%
}
}

\newcommand{\aufgTable}[1]{
\def\spalten{\numexpr #1 + 1 \relax}
\begin{tabular}{|*{\spalten}{p{1cm}|}}
\makeTableLine[\spalten]{A\theaufgabe}$\Sigma$~~\\ \hline
\rule{0pt}{15pt}\makeTableLine[\spalten]{}\\
\end{tabular}
}

\def\header#1#2#3#4#5#6#7{\pagestyle{empty}
\begin{minipage}[t]{0.47\textwidth}
\begin{flushleft}
{\bf #4}\\
#5
\end{flushleft}
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\begin{flushright}
#6 \vspace{0.5cm}\\
%                 Number of Columns    Definition of Columns      second empty line
% \begin{tabular}{|*{5}{C{1cm}|}}\hline A1&A2&A3&A4&$\Sigma$\\\hline&&&&\\\hline\end{tabular}\\\vspace*{0.1cm}
\aufgTable{#7}
\end{flushright}
\end{minipage}
\vspace{1cm}
\begin{center}
{\Large\bf Blatt #1}

{(Abgabe #3)}
\end{center}
}



%counts the exercisenumber
\newcounter{n}

%Kommando für Aufgaben
%\Aufgabe{AufgTitel}{Punktezahl}
\newcommand{\Aufgabe}[2]{\stepcounter{n}
\textbf{Aufgabe \arabic{n}: #1} (#2 Punkte)}

\newcommand{\textcorr}[1]{\textcolor{red}{#1}}
\newenvironment{corr}{\color{red}}{\color{black}}
\newcommand{\ok}{\begin{corr}
      $\checkmark$
  \end{corr}}

\begin{document}
%\header{BlattNr}{Tutor}{Abgabedatum}{Vorlesungsname}{Namen}{Semester}{Anzahl Aufgaben}
\header{1}{}{2015-10-21}{Kommunikationsnetze}{\textit{Jonas Jaszkowic, 3592719}\\\textit{Jan-Peter Hohloch, 3908712}}{WS 15/16}{2}
\vspace{1cm}
\Aufgabe{Grundlagen}{5+15+10+10+10+5+5+5}
    \begin{enumerate}
        \item \begin{enumerate}[1.]
            \item Physical Layer (Bitübertragungsschicht): Übertragung der Information in bits
            \item Data Link Layer (Datensicherungsschicht): Prüfsummen zur Kontrolle der Übertragung, Teilung in Datenblöcke
            \item Network Layer (Vermittlungsschicht): Routing, Netzwerkadressen
            \item Transport Layer (Transportschicht): Datenkapselung, Portzuteilung
            \item Session Layer (Sitzungsschicht): Datenaustausch zwischen Systemen durch Check Points
            \item Presentation Layer (Darstellungsschicht): Datenkompression und Verschlüsselung, systemabhängige Darstellung \begin{corr}
                mögliches Beispiel wäre xml, allerdings auch nicht ganz typisch
            \end{corr}
            \item Application Layer (Anwendungsschicht): Daten-Ein-/Ausgabe
        \end{enumerate}
        \item \begin{enumerate}
            \item[2.] Data Link Layer: WEP\begin{corr}, WPA(2)\\
            umfasst alles auf höheren Schichten, lassen sich gut in Hardware implementieren ($\rightarrow$ hohe Performance, aber auch hoher Aufwand), endet an Netzwerkgrenzen
            \end{corr}
            \item[3.] Network Layer: IPsec\\\begin{corr} umfasst alles auf höheren Schichten, gilt Ende-Ende-Ende (zumindest Host zu Host); allerdings Eingriffe in Netzwerkstack zur Implementierung, muss im OS vorhanden sein\end{corr}
            \item[4.] Transport Layer: SSL \begin{corr}TLS, TCPcrypt, CurveCP\\
            meist in Standardbibliotheken, Rücksicht auf layer4 Protokoll nötig (z.B. TLS für TCP)\end{corr}
            \item[7.] Application Layer: PGP \begin{corr}, OTR, DNSSEC\\ man kennt die Anwendung, man weiß welche Daten zu schützen sind (Optimierung); muss alles selbst implementiert werden und ist nicht übertragbar\end{corr}
            \item[$\rightarrow$] Je tiefer das geschützte Layer, desto weniger kann ein Angreifer erschließen welche Art von Daten verschickt werden, da nur die einzelnen Pakete, nicht aber der größere Kontext angegriffen wird. Allerdings werden auch nur die einzelnen kleinen Pakete mit einer Checksum verstehen, es kann also nicht über die Grenzen der kleinen Pakete hinweg verifiziert werden, solange nicht auch die höhere Schicht geschützt wird.
        \end{enumerate}
        \item \begin{enumerate}
            \item \textbf{Vertraulichkeit und Abhörsicherheit}: Der Sender verschlüsselt die Nachricht, der Empfänger entschlüsselt die Nachricht. Nur diese beiden Parteien sollten die Nachricht im Klartext lesen können.
            \item \textbf{Integrität der Nachricht}: Der Sender und der Empfänger müssen sicherstellen, dass die Nachricht weder beim Versand noch danach unbemerkt verändert werden kann.
            \item \textbf{Authentizität}:
            \begin{itemize}
                \item Authentizität der Kommunikationspartner: Sender und Empfänger müssen ihre Identität dem jeweils anderen bestätigen.
                \item Authentizität der Daten: Daten wurden wirklich vom Sender und niemand anderem verschickt worden sein. Wichtig um Verbindlichkeit (z.B. vor Gericht) zu sichern.
            \end{itemize}
            \item \textbf{Verfügbarkeit}: Die Dienste müssen den Benutzern für die Dauer der Kommunikation zur Verfügung stehen und benutzt werden können.
        \end{enumerate}
        \item Wird beispielsweise eine Überweisung getätigt, so kann diese per replay wiederholt werden. es wird also die doppelte Menge überwiesen. \\
        Vermieden werden können replay attacks durch laufende Nummern, sodass Nachrichten die Gültigkeit verlieren nachdem sie einmal versandt worden sind. Replay von gesamten Sessions kann durch eine nonce verhindert werden. Eine einmalig verwendete zusätzliche Zahl, die zur Identifizierung mitverwendet wird.
        \item Symmetrische Verschlüsselung basiert auf einem einzigen Schlüssel. Mit diesem wird ver- und entschlüsselt. Im Gegensatz dazu wird bei asymmetrischer Verschlüsselung ein Schlüsselpaar verwendet, ein Schlüssel zu Ver- und einer zum Entschlüsseln (Public- und PrivateKey).\\
        Bei symmetrischen Verfahren muss der Schlüssel mit ausgetauscht werden, soll dies sicher erfolgen, so benötigt man weiteren Aufwand (Diffie-Hellman). Dafür sind symmetrische Verfahren meist schneller, da sie kürzere Schlüssel für die gleiche Sicherheit benötigen.\\
        Asymmetrische Verfahren kommen ohne den direkten Austausch von Schlüsseln aus, allerdings ist hier das Problem, dass sichergestellt werden muss, dass der öffentliche Schlüssel tatsächlich der richtigen Person gehört. Außerdem sind asymmetrische Verfahren meist langsamer, da sie längere Schlüssel benötigen um Sicherheit zu gewähren.\\
        \begin{corr}
            Maximale Blocklänge bei asymmetrischer Verschlüsselung (abhängig von Schlüssellänge)
        \end{corr}
        \item Es existiert ein geteiltes Geheimnis (shared secret), dieses wird an die Nachricht angehängt und mit gehashed. Hash und Nachricht (ohne secret) werden versandt. Der Empfänger hasht die NAchricht, nachdem er das Geheimnis angehängt hat und vergleicht das Ergebnis mit dem übermittelten Hash. Sind sie gleich, so wurde die Nachricht vom erwarteten Sender übermittelt, da niemand sonst das Geheimnis kennt.
        \item Der Sender hasht die Nachricht und verschlüsselt den Hashwert mit seinem privaten Schlüssel. Der Empfänger hasht die Nachricht ebenfalls und entschlüsselt außerdem den übermittelten verschlüsselten Hashwert mit dem PublicKey des Senders. Stimmen die Ergebnisse überein, so kann der Empfänger davon ausgehen, dass die Nachricht tatsächlich so vom Sender kam.
        \item Signaturen erlauben non-repudiation, MACs jedoch nicht, da bei MACs immer zwei Personen dasselbe Geheimnis kennen.
    \end{enumerate}
\Aufgabe{Blockchiffren}{6+6+6+6+11}
    \begin{enumerate}
        \item DES (überholt, da Schlüssel zu kurz), beruht auf Feistel-Chiffre. Vorgehensweise: Es gibt einen Key der Länge 56bit. Initiale Permutation des 64bit langen Inputs, danach iterativ 16 identische Durchläufe mit der gleichen Verschlüsselungsfunktion aber einem anderem 48bit langem Key, der aus dem ursprünglichen Key generiert wird. Am Schluss nochmal eine letzte Permutation. \\
        AES (ersetzt DES), erlaubt Schlüssel größerer Länge und kann an Rechenzeiten angepasst werden. Hier werden Klartextblöcke mit einer Länge von 128bit verarbeitet.
        \item Identische Klartextblöcke werden identisch verschlüsselt.
        \item Kommt ein Block mehr als einmal im Klartext vor, so wird auch der verschlüsselte Text an diesen Stellen identisch sein. Das erlaubt Angriffe beruhend auf Blockhäufigkeiten, wenn gezählt wird wie oft welcher verschlüsselte Block vorkommt. Durch das 1-1 Mapping hat jeder Block also nur Auswirkungen auf sein verschlüsseltes Äquivalent, nicht aber auf die anderen Blöcke bzw. Bits.
        \item Wiederholungen können beispielsweise durch den Cipher Block Chaining Mode vom Klartext unabhängig werden.
        \item  Hierbei wird der veschlüsselte letzte Block per xor mit dem aktuellen Klartext kombiniert und dann verschlüsselt. Für den ersten Block benötigt man einen Initialisierungsvektor, dieser kann öffentlich sein. Wenn der Initialisierungsvektor bei jeder Session geändert wird, so ergibt sich auch bei identischer Nachricht jedesmal ein komplett anderer Ciphertext.
    \end{enumerate}
\end{document}

