17288 lines
		
	
	
		
			769 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			17288 lines
		
	
	
		
			769 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| \documentclass[a4paper]{article}
 | |
| \usepackage[ngerman]{babel}
 | |
| \usepackage[utf8]{inputenc}
 | |
| \usepackage{multicol}
 | |
| \usepackage{calc}
 | |
| \usepackage{ifthen}
 | |
| \usepackage[landscape]{geometry}
 | |
| \usepackage{amsmath,amsthm,amsfonts,amssymb}
 | |
| \usepackage{color,graphicx,overpic}
 | |
| \usepackage{xcolor, listings}
 | |
| \usepackage[compact]{titlesec} %less space for headers
 | |
| \usepackage{mdwlist} %less space for lists
 | |
| \usepackage{pdflscape}
 | |
| \usepackage{verbatim}
 | |
| \usepackage[most]{tcolorbox}
 | |
| \usepackage[hidelinks,pdfencoding=auto]{hyperref}
 | |
| \usepackage{bussproofs}
 | |
| \usepackage{fancyhdr}
 | |
| \usepackage{lastpage}
 | |
| \pagestyle{fancy}
 | |
| \fancyhf{}
 | |
| \fancyhead[L]{Network Security}
 | |
| \fancyfoot[L]{\thepage/\pageref{LastPage}}
 | |
| \renewcommand{\headrulewidth}{0pt} %obere Trennlinie
 | |
| \renewcommand{\footrulewidth}{0pt} %untere Trennlinie
 | |
| 
 | |
| \pdfinfo{
 | |
|  /Title (Network Security - Cheatsheet)
 | |
|  /Creator (TeX)
 | |
|  /Producer (pdfTeX 1.40.0)
 | |
|  /Author (Robert Jeutter)
 | |
|  /Subject ()
 | |
| }
 | |
| 
 | |
| %%% Code Listings
 | |
| \definecolor{codegreen}{rgb}{0,0.6,0}
 | |
| \definecolor{codegray}{rgb}{0.5,0.5,0.5}
 | |
| \definecolor{codepurple}{rgb}{0.58,0,0.82}
 | |
| \definecolor{backcolour}{rgb}{0.95,0.95,0.92}
 | |
| \lstdefinestyle{mystyle}{
 | |
|  backgroundcolor=\color{backcolour}, 
 | |
|  commentstyle=\color{codegreen},
 | |
|  keywordstyle=\color{magenta},
 | |
|  numberstyle=\tiny\color{codegray},
 | |
|  stringstyle=\color{codepurple},
 | |
|  basicstyle=\ttfamily,
 | |
|  breakatwhitespace=false, 
 | |
| }
 | |
| \lstset{style=mystyle, upquote=true}
 | |
| 
 | |
| %textmarker style from colorbox doc
 | |
| \tcbset{textmarker/.style={%
 | |
|  enhanced,
 | |
|  parbox=false,boxrule=0mm,boxsep=0mm,arc=0mm,
 | |
|  outer arc=0mm,left=2mm,right=2mm,top=3pt,bottom=3pt,
 | |
|  toptitle=1mm,bottomtitle=1mm,oversize}}
 | |
| 
 | |
| % define new colorboxes
 | |
| \newtcolorbox{hintBox}{textmarker,
 | |
|  borderline west={6pt}{0pt}{yellow},
 | |
|  colback=yellow!10!white}
 | |
| \newtcolorbox{importantBox}{textmarker,
 | |
|  borderline west={6pt}{0pt}{red},
 | |
|  colback=red!10!white}
 | |
| \newtcolorbox{noteBox}{textmarker,
 | |
|  borderline west={3pt}{0pt}{green},
 | |
|  colback=green!10!white}
 | |
| 
 | |
| % define commands for easy access
 | |
| \renewcommand{\note}[2]{\begin{noteBox} \textbf{#1} #2 \end{noteBox}}
 | |
| \newcommand{\warning}[1]{\begin{hintBox} \textbf{Warning:} #1 \end{hintBox}}
 | |
| \newcommand{\important}[1]{\begin{importantBox} \textbf{Important:} #1 \end{importantBox}}
 | |
| 
 | |
| % This sets page margins to .5 inch if using letter paper, and to 1cm
 | |
| % if using A4 paper. (This probably isn't strictly necessary.)
 | |
| % If using another size paper, use default 1cm margins.
 | |
| \ifthenelse{\lengthtest { \paperwidth = 11in}}
 | |
|  { \geometry{top=.5in,left=.5in,right=.5in,bottom=.5in} }
 | |
|  {\ifthenelse{ \lengthtest{ \paperwidth = 297mm}}
 | |
|  {\geometry{top=1.3cm,left=1cm,right=1cm,bottom=1.2cm} }
 | |
|  {\geometry{top=1.3cm,left=1cm,right=1cm,bottom=1.2cm} }
 | |
|  }
 | |
| 
 | |
| % Redefine section commands to use less space
 | |
| \makeatletter
 | |
| \renewcommand{\section}{\@startsection{section}{1}{0mm}%
 | |
|  {-1ex plus -.5ex minus -.2ex}%
 | |
|  {0.5ex plus .2ex}%x
 | |
|  {\normalfont\large\bfseries}}
 | |
| \renewcommand{\subsection}{\@startsection{subsection}{2}{0mm}%
 | |
|  {-1explus -.5ex minus -.2ex}%
 | |
|  {0.5ex plus .2ex}%
 | |
|  {\normalfont\normalsize\bfseries}}
 | |
| \renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{0mm}%
 | |
|  {-1ex plus -.5ex minus -.2ex}%
 | |
|  {1ex plus .2ex}%
 | |
|  {\normalfont\small\bfseries}}
 | |
| \makeatother
 | |
| 
 | |
| % Don't print section numbers
 | |
| \setcounter{secnumdepth}{0}
 | |
| 
 | |
| \setlength{\parindent}{0pt}
 | |
| \setlength{\parskip}{0pt plus 0.5ex} 
 | |
| % compress space
 | |
| \setlength\abovedisplayskip{0pt}
 | |
| \setlength{\parskip}{0pt}
 | |
| \setlength{\parsep}{0pt}
 | |
| \setlength{\topskip}{0pt}
 | |
| \setlength{\topsep}{0pt}
 | |
| \setlength{\partopsep}{0pt}
 | |
| \linespread{0.5}
 | |
| \titlespacing{\section}{0pt}{*0}{*0}
 | |
| \titlespacing{\subsection}{0pt}{*0}{*0}
 | |
| \titlespacing{\subsubsection}{0pt}{*0}{*0}
 | |
| 
 | |
| \begin{document}
 | |
| 
 | |
| \raggedright
 | |
| \begin{multicols}{3}\scriptsize
 | |
|     % multicol parameters
 | |
|     % These lengths are set only within the two main columns
 | |
|     %\setlength{\columnseprule}{0.25pt}
 | |
|     \setlength{\premulticols}{1pt}
 | |
|     \setlength{\postmulticols}{1pt}
 | |
|     \setlength{\multicolsep}{1pt}
 | |
|     \setlength{\columnsep}{2pt}
 | |
| 
 | |
|     \section{Einleitung}
 | |
|     \subsection{Was ist eine Bedrohung in einem  Kommunikationsnetz?}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item Abstrakte Definition
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine Bedrohung in einem Kommunikationsnetz ist ein mögliches
 | |
|                         Ereignis oder eine Folge von Aktionen, die zu einer Verletzung eines
 | |
|                         oder mehrerer Sicherheitsziele führen können.
 | |
|                   \item
 | |
|                         Die tatsächliche Realisierung einer Bedrohung wird als Angriff
 | |
|                         bezeichnet.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Beispiele
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein Hacker bricht in einen Firmencomputer ein
 | |
|                   \item
 | |
|                         Offenlegung von E-Mails während der Übertragung
 | |
|                   \item
 | |
|                         Jemand ändert Finanzbuchhaltungsdaten
 | |
|                   \item
 | |
|                         Ein Hacker, der eine Website vorübergehend außer Betrieb setzt
 | |
|                   \item
 | |
|                         Jemand, der Dienstleistungen in Anspruch nimmt oder Waren im Namen
 | |
|                         anderer bestellt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Was sind Sicherheitsziele?
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sicherheitsziele können definiert werden
 | |
|                   \item
 | |
|                         in Abhängigkeit von der Anwendungsumgebung oder
 | |
|                   \item
 | |
|                         auf eine allgemeinere, technische Weise
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Sicherheitsziele in Abhängigkeit von der
 | |
|         Anwendungsumgebung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Bankwesen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schutz vor betrügerischen oder versehentlichen Änderungen von
 | |
|                         Transaktionen
 | |
|                   \item
 | |
|                         Identifizierung von Kunden bei Privatkundentransaktionen
 | |
|                   \item
 | |
|                         Schutz von PINs vor Offenlegung
 | |
|                   \item
 | |
|                         Sicherstellung der Privatsphäre der Kunden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Elektronischer Handel
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sicherstellung der Herkunft und Integrität von Transaktionen
 | |
|                   \item
 | |
|                         Schutz der Privatsphäre von Unternehmen
 | |
|                   \item
 | |
|                         Rechtsverbindliche elektronische Signaturen für Transaktionen
 | |
|                         bereitstellen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Regierung
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schutz vor Offenlegung sensibler Informationen
 | |
|                   \item
 | |
|                         Bereitstellung elektronischer Signaturen für Regierungsdokumente
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Öffentliche Telekommunikationsanbieter
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beschränken Sie den Zugang zu Verwaltungsfunktionen auf
 | |
|                         autorisiertes Personal
 | |
|                   \item
 | |
|                         Schutz vor Dienstunterbrechungen
 | |
|                   \item
 | |
|                         Schutz der Privatsphäre der Teilnehmer
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Firmen-/Privatnetzwerke
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schutz der Privatsphäre von Unternehmen/Personen
 | |
|                   \item
 | |
|                         Sicherstellung der Authentizität von Nachrichten
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Alle Netzwerke
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verhinderung des Eindringens von außen (wer will schon Hacker?)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Manchmal werden Sicherheitsziele auch als Sicherheitsvorgaben
 | |
|               bezeichnet
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Sicherheitsziele technisch
 | |
|         definiert}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               \textbf{Vertraulichkeit (Confidentiality)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Übertragene oder gespeicherte Daten sollten nur einem bestimmten
 | |
|                         Personenkreis zugänglich gemacht werden.
 | |
|                   \item
 | |
|                         Die Vertraulichkeit von Entitäten wird auch als Anonymität
 | |
|                         bezeichnet.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Integrität der Daten (Data Integrity)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Es sollte möglich sein, jede Veränderung von Daten zu erkennen.
 | |
|                   \item
 | |
|                         Dies setzt voraus, dass der Ersteller bestimmter Daten identifiziert
 | |
|                         werden kann.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Rechenschaftspflicht (Accountability)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Es sollte möglich sein, die für ein Kommunikationsereignis
 | |
|                         verantwortliche Stelle zu identifizieren.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Verfügbarkeit (Availability)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Dienste sollten verfügbar sein und korrekt funktionieren.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Kontrollierter Zugang (Controlled Access)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Nur autorisierte Stellen sollten auf bestimmte Dienste oder
 | |
|                         Informationen zugreifen können.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Technisch definierte
 | |
|         Bedrohungen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               \textbf{Maskerade (oder Man-in-the-Middle-Angriff, Masquerade)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine Entität gibt sich als eine andere Entität aus
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Lauschangriff (Eavesdropping)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine Entität liest Informationen, die sie nicht lesen soll
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Verletzung der Berechtigung (Authorization Violation)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine Entität nutzt einen Dienst oder Ressourcen, für die sie nicht
 | |
|                         vorgesehen ist
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Verlust oder Veränderung} von (übertragenen) Informationen
 | |
|               (Loss or Modification of (transmitted) Information)
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Daten werden verändert oder zerstört
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Verweigerung von Kommunikationsakten (Denial of Communication
 | |
|                   Acts, Repudiation)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein Unternehmen leugnet fälschlicherweise seine Teilnahme an einer
 | |
|                         Kommunikationshandlung
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Fälschung von Informationen (Forgery of Information)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein Unternehmen erstellt neue Informationen im Namen eines anderen
 | |
|                         Unternehmens
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Sabotage (oder Denial-of-Service-Angriffe)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Jede Aktion, die darauf abzielt, die Verfügbarkeit und/oder das
 | |
|                         ordnungsgemäße Funktionieren von Diensten oder Systemen zu
 | |
|                         beeinträchtigen.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Bedrohungen und technische
 | |
|         Sicherheitsziele}
 | |
| 
 | |
|     Diese Bedrohungen werden oft kombiniert, um einen Angriff durchzuführen!
 | |
| 
 | |
|     %\begin{longtable}[]{@{}llllllll@{}}
 | |
|     %    \toprule
 | |
|     %    Technische Sicherheitsziele & Maskerade                                        & Abhören       &
 | |
|     %    Autorisierungsverletzung    & Verlust oder Modifikation von (übertragenen)
 | |
|     %    Informationen               & Denial of Communication-Aktionen                 & Fälschung von
 | |
|     %    Informationen               & Sabotage (z.B. durch Überlastung)\tabularnewline
 | |
|     %    \midrule
 | |
|     %    \endhead
 | |
|     %    Vertraulichkeit             & x                                                & x             & x &   &   &   & \tabularnewline
 | |
|     %    Datenintegrität             & x                                                &               & x & x & x & x & \tabularnewline
 | |
|     %    Rechenschaftspflicht        & x                                                &               & x &   & x & x & \tabularnewline
 | |
|     %    Verfügbarkeit               & x                                                &               & x & x &   &   & x\tabularnewline
 | |
|     %    Kontrollierter Zugriff      & x                                                &               & x &   &   & x & \tabularnewline
 | |
|     %    \bottomrule
 | |
|     %\end{longtable}
 | |
| 
 | |
| 
 | |
|     \subsection{Analyse der
 | |
|         Netzwerksicherheit}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Um geeignete Gegenmaßnahmen gegen Bedrohungen ergreifen zu können,
 | |
|               müssen diese für eine gegebene Netzkonfiguration angemessen bewertet
 | |
|               werden.
 | |
|         \item
 | |
|               Daher ist eine detaillierte Netzsicherheitsanalyse erforderlich, die
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         das Risikopotenzial der allgemeinen Bedrohungen für die ein Netz
 | |
|                         nutzenden Einheiten bewertet und
 | |
|                   \item
 | |
|                         den Aufwand (Ressourcen, Zeit usw.) abschätzt, der zur Durchführung
 | |
|                         bekannter Angriffe erforderlich ist.
 | |
|                   \item
 | |
|                         Achtung! Es ist im Allgemeinen unmöglich, unbekannte Angriffe zu
 | |
|                         bewerten!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Eine detaillierte Sicherheitsanalyse einer bestimmten
 | |
|               Netzkonfiguration / spezifischen Protokollarchitektur
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         kann auch erforderlich sein, um die Finanzkontrolleure eines
 | |
|                         Unternehmens davon zu überzeugen, Mittel für
 | |
|                         Sicherheitsverbesserungen bereitzustellen, und
 | |
|                   \item
 | |
|                         kann besser nach den feinkörnigeren Angriffen auf der
 | |
|                         Nachrichtenebene strukturiert werden.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Angriffe auf die Kommunikation auf der
 | |
|         Nachrichtenebene}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Passive Angriffe
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Lauschangriff
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Aktive Angriffe
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verzögerung von PDUs (Protocol Data Units)
 | |
|                   \item
 | |
|                         Wiederholung von PDUs
 | |
|                   \item
 | |
|                         Löschung von PDUs
 | |
|                   \item
 | |
|                         Modifikation von PDUs
 | |
|                   \item
 | |
|                         Einfügung von PDUs
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die erfolgreiche Durchführung eines der oben genannten Angriffe
 | |
|               erfordert
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Es gibt keine erkennbaren Nebeneffekte auf andere Kommunikationen
 | |
|                         (Verbindungen/verbindungslose Übertragungen)
 | |
|                   \item
 | |
|                         Es gibt keine Nebenwirkungen auf andere PDUs der gleichen
 | |
|                         Verbindung/verbindungslosen Datenübertragung zwischen den gleichen
 | |
|                         Entitäten
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Eine Sicherheitsanalyse einer Protokollarchitektur muss diese Angriffe
 | |
|               entsprechend den Schichten der Architektur analysieren
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Schutzmaßnahmen gegen Bedrohungen der
 | |
|         Informationssicherheit}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Physische Sicherheit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schlösser oder andere physische Zugangskontrollen
 | |
|                   \item
 | |
|                         Manipulationssicherung empfindlicher Geräte
 | |
|                   \item
 | |
|                         Umweltkontrollen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Personelle Sicherheit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Identifizierung von sensiblen Positionen
 | |
|                   \item
 | |
|                         Verfahren zur Überprüfung der Mitarbeiter
 | |
|                   \item
 | |
|                         Sicherheitsschulung und -bewusstsein
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Administrative Sicherheit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kontrolle des Imports von Fremdsoftware
 | |
|                   \item
 | |
|                         Verfahren zur Untersuchung von Sicherheitsverstößen
 | |
|                   \item
 | |
|                         Überprüfung von Prüfpfaden
 | |
|                   \item
 | |
|                         Überprüfung von Kontrollen der Rechenschaftspflicht
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Strahlungssicherheit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kontrolle von Funkfrequenzen und anderen elektromagnetischen
 | |
|                         Abstrahlungen
 | |
|                   \item
 | |
|                         Bezeichnet als TEMPEST-Schutz
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Mediensicherheit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Absicherung der Speicherung von Informationen
 | |
|                   \item
 | |
|                         Kontrolle der Kennzeichnung, Vervielfältigung und Vernichtung von
 | |
|                         sensiblen Informationen
 | |
|                   \item
 | |
|                         Sicherstellen, dass Medien mit sensiblen Informationen sicher
 | |
|                         vernichtet werden
 | |
|                   \item
 | |
|                         Scannen von Medien auf Viren
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Lebenszyklus-Kontrollen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vertrauenswürdiger Systementwurf, -implementierung, -bewertung und
 | |
|                         -übernahme
 | |
|                   \item
 | |
|                         Programmierstandards und -kontrollen
 | |
|                   \item
 | |
|                         Kontrollen der Dokumentation
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Computer-Sicherheit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schutz von Informationen während der Speicherung/Verarbeitung in
 | |
|                         einem Computersystem
 | |
|                   \item
 | |
|                         Schutz der Datenverarbeitungsgeräte selbst
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sicherheit der Kommunikation
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schutz von Informationen während des Transports von einem System zu
 | |
|                         einem anderen
 | |
|                   \item
 | |
|                         Schutz der Kommunikationsinfrastruktur selbst
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Kommunikationssicherheit: Einige
 | |
|         Terminologie}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Sicherheitsdienst
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein abstrakter Dienst, der eine bestimmte Sicherheitseigenschaft
 | |
|                         gewährleisten soll.
 | |
|                   \item
 | |
|                         Ein Sicherheitsdienst kann sowohl mit Hilfe von kryptografischen
 | |
|                         Algorithmen und Protokollen als auch mit herkömmlichen Mitteln
 | |
|                         realisiert werden
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Man kann ein elektronisches Dokument auf einem USB-Stick
 | |
|                                   vertraulich halten, indem man es in einem verschlüsselten Format
 | |
|                                   auf dem Datenträger speichert und den Datenträger in einem Tresor
 | |
|                                   wegschließt.
 | |
|                             \item
 | |
|                                   In der Regel ist eine Kombination aus kryptografischen und anderen
 | |
|                                   Mitteln am effektivsten
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kryptographischer Algorithmus
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine mathematische Umwandlung von Eingabedaten (z. B. Daten,
 | |
|                         Schlüssel) in Ausgabedaten
 | |
|                   \item
 | |
|                         Kryptografische Algorithmen werden in kryptografischen Protokollen
 | |
|                         verwendet.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kryptografisches Protokoll
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine Reihe von Schritten und der Austausch von Nachrichten zwischen
 | |
|                         mehreren Einheiten, um ein bestimmtes Sicherheitsziel zu erreichen
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Sicherheitsdienste -
 | |
|         Überblick}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               \textbf{Authentifizierung (Authentication)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der grundlegendste Sicherheitsdienst, der sicherstellt, dass eine
 | |
|                         Entität tatsächlich die Identität besitzt, die sie vorgibt zu haben
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Integrität (Integrity)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         In gewisser Weise der "kleine Bruder" des
 | |
|                         Authentifizierungsdienstes, da er sicherstellt, dass Daten, die von
 | |
|                         bestimmten Entitäten erstellt wurden, nicht unentdeckt verändert
 | |
|                         werden können
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Vertraulichkeit (Confidentiality)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der beliebteste Sicherheitsdienst, der die Geheimhaltung der
 | |
|                         geschützten Daten gewährleistet
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Zugriffskontrolle (Access Control)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kontrolliert, dass jede Identität nur auf die Dienste und
 | |
|                         Informationen zugreift, zu denen sie berechtigt ist
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \textbf{Nicht-Abstreitbarkeit (Non Repudiation)}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schützt davor, dass an einem Kommunikationsaustausch beteiligte
 | |
|                         Entitäten später fälschlicherweise abstreiten können, dass der
 | |
|                         Austausch stattgefunden hat
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Sicherheitsunterstützende
 | |
|         Mechanismen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Allgemeine Mechanismen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schlüsselverwaltung: Alle Aspekte des Lebenszyklus von
 | |
|                         kryptografischen Schlüsseln
 | |
|                   \item
 | |
|                         Zufallszahlengenerierung: Generierung von kryptographisch sicheren
 | |
|                         Zufallszahlen
 | |
|                   \item
 | |
|                         Ereigniserkennung / Sicherheitsprüfpfad: Erkennung und Aufzeichnung
 | |
|                         von Ereignissen, die zur Erkennung von Angriffen oder Bedingungen,
 | |
|                         die von Angriffen ausgenutzt werden könnten, verwendet werden können
 | |
|                   \item
 | |
|                         Erkennung von Eindringlingen: Analyse der aufgezeichneten
 | |
|                         Sicherheitsdaten, um erfolgreiche Einbrüche oder Angriffe zu
 | |
|                         erkennen
 | |
|                   \item
 | |
|                         Beglaubigung: Registrierung von Daten durch eine vertrauenswürdige
 | |
|                         dritte Partei, die später bestimmte Eigenschaften (Inhalt,
 | |
|                         Ersteller, Erstellungszeitpunkt) der Daten bestätigen kann
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kommunikationsspezifische Mechanismen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Traffic Padding \& Cover Traffic: Erzeugung von gefälschtem Verkehr,
 | |
|                         um die Analyse des Verkehrsflusses zu verhindern
 | |
|                   \item
 | |
|                         Routing-Kontrolle: Beeinflussung des Routings von PDUs in einem
 | |
|                         Netzwerk
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Kryptologie - Definition und
 | |
|         Terminologie}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Kryptologie
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wissenschaft, die sich mit sicherer und meist geheimer Kommunikation
 | |
|                         beschäftigt
 | |
|                   \item
 | |
|                         Der Begriff leitet sich von den griechischen Wörtern kryptós
 | |
|                         (verborgen) und lógos (Wort) ab.
 | |
|                   \item
 | |
|                         Kryptologie umfasst
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Kryptographie ( gráphein = schreiben): die Lehre von den
 | |
|                                   Prinzipien und Techniken, mit denen Informationen in
 | |
|                                   verschlüsseltem Text verborgen und später von legitimen Nutzern
 | |
|                                   mit Hilfe eines geheimen Schlüssels offengelegt werden können
 | |
|                             \item
 | |
|                                   Kryptoanalyse ( analýein = lýsen, losbinden): die Wissenschaft
 | |
|                                   (und Kunst) der Wiedergewinnung von Informationen aus Chiffren
 | |
|                                   ohne Kenntnis des Schlýssels
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Chiffre (Quelle Encyclopaedia Britannica)
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Methode zur Umwandlung einer Nachricht (Klartext), um ihre Bedeutung
 | |
|                         zu verschleiern
 | |
|                   \item
 | |
|                         Wird auch als Synonym für den verborgenen Chiffretext verwendet.
 | |
|                   \item
 | |
|                         Chiffren sind eine Klasse von kryptografischen Algorithmen
 | |
|                   \item
 | |
|                         Die Umwandlung erfolgt in der Regel mit der Nachricht und einem
 | |
|                         (geheimen) Schlüssel als Eingabe
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Kryptologie - einige historische
 | |
|         Anmerkungen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               400 v. Chr.: Die Spartaner verwenden ein Chiffriergerät namens Scytale
 | |
|               für die Kommunikation zwischen militärischen Befehlshabern.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Scytale bestand aus einem spitz zulaufenden Stab, um den
 | |
|                         spiralförmig ein Streifen Pergament oder Leder gewickelt war, auf
 | |
|                         den die Nachricht geschrieben wurde
 | |
|                   \item
 | |
|                         Beim Aufwickeln wurden die Buchstaben der Reihe nach durcheinander
 | |
|                         gewürfelt und bildeten die Chiffre.
 | |
|                   \item
 | |
|                         Wurde der Streifen um einen anderen Stab mit den gleichen
 | |
|                         Proportionen wie das Original gewickelt, kam der Klartext wieder zum
 | |
|                         Vorschein
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Im 4. Jahrhundert v. Chr:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Aeneas Tacticus (Grieche) schreibt "Über die Verteidigung von
 | |
|                         Festungen", wobei ein Kapitel der Kryptographie gewidmet ist
 | |
|                   \item
 | |
|                         Polybius (Grieche) erfindet eine Methode zur Kodierung von
 | |
|                         Buchstaben in Symbolpaaren mit Hilfe eines Geräts namens
 | |
|                         Polybius-Schachbrett, das eine bi-literale Substitution ermöglicht
 | |
|                         und viele Elemente späterer Kryptosysteme vorwegnimmt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Römer verwendeten eine monoalphabetische Substitution mit
 | |
|               einfacher zyklischer Verschiebung des Alphabets:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Julius Caesar verwendete eine Verschiebung von drei Buchstaben (A
 | |
|                         ergibt D, ..., Z ergibt C)
 | |
|                   \item
 | |
|                         Augustus Caesar verwendete eine einzige Verschiebung (A ergibt B,
 | |
|                         ...)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Araber waren die ersten, die die Prinzipien der Kryptographie
 | |
|               verstanden und die Anfänge der Kryptoanalyse entdeckten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Entwurf und Verwendung von Substitutions- und
 | |
|                         Transpositions-Chiffren
 | |
|                   \item
 | |
|                         Entdeckung der Verwendung von Buchstabenhäufigkeitsverteilungen und
 | |
|                         wahrscheinlichen Klartexten in der Kryptoanalyse
 | |
|                   \item
 | |
|                         Bis 1412 n. Chr. enthält Al-Kalka-Shandi in seiner Enzyklopädie Subh
 | |
|                         al-a'sha eine elementare und respektable Behandlung mehrerer
 | |
|                         kryptographischer Systeme und ihrer Kryptoanalyse
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Europäische Kryptographie:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Entwicklung begann im Kirchenstaat und in den italienischen
 | |
|                         Stadtstaaten im Mittelalter
 | |
|                   \item
 | |
|                         Die ersten Chiffren verwendeten nur Vokalsubstitutionen
 | |
|                   \item
 | |
|                         1397: Gabriele de Lavinde von Parma verfasst das erste europäische
 | |
|                         Handbuch zur Kryptographie, das eine Zusammenstellung von Chiffren
 | |
|                         sowie eine Reihe von Schlüsseln für 24 Korrespondenten enthält und
 | |
|                         Symbole für Buchstaben, Zahlen und mehrere zweistellige
 | |
|                         Codeäquivalente für Wörter und Namen umfasst
 | |
|                   \item
 | |
|                         Code-Vokabulare, Nomenklatoren genannt, wurden für mehrere
 | |
|                         Jahrhunderte zur Hauptstütze der diplomatischen Kommunikation der
 | |
|                         meisten europäischen Regierungen
 | |
|                   \item
 | |
|                         1470: Leon Battista Alberti veröffentlicht Trattati In Cifra, in
 | |
|                         denen er die erste Chiffrierscheibe beschreibt und bereits
 | |
|                         vorschreibt, die Scheibe regelmäßig neu einzustellen, wobei er den
 | |
|                         Begriff der Polyalphabetizität entwickelt
 | |
|                   \item
 | |
|                         1563: Giambattista della Porta liefert eine abgewandelte Form einer
 | |
|                         quadratischen Tabelle und das früheste Beispiel einer digraphischen
 | |
|                         Chiffre (2-Buchstaben-Substitution)
 | |
|                   \item
 | |
|                         1586: Blaise de Vigenère veröffentlicht Traicté des chiffres, das
 | |
|                         die ihm zugeschriebene quadratische Tabelle enthält
 | |
|                   \item
 | |
|                         Bis 1860 wurden große Codes für die diplomatische Kommunikation
 | |
|                         verwendet, und Chiffren wurden nur in der militärischen
 | |
|                         Kommunikation eingesetzt (außer auf hoher Kommandoebene), da es
 | |
|                         schwierig war, Codebücher im Feld zu schützen.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Entwicklungen während der Weltkriege 1 und 2:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Während des 1. Weltkriegs: Chiffriersysteme wurden hauptsächlich für
 | |
|                         die taktische Kommunikation verwendet und die Kommunikation auf
 | |
|                         hoher Ebene wurde durch Codes geschützt.
 | |
|                   \item
 | |
|                         1920: Die Kommunikationsbedürfnisse der Telekommunikation und die
 | |
|                         Weiterentwicklung der elektromechanischen Technik führen zu einer
 | |
|                         wahren Revolution bei den Verschlüsselungsgeräten - der Entwicklung
 | |
|                         von Rotor-Chiffriermaschinen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Das Rotorprinzip wird unabhängig voneinander von E. E. Hebern
 | |
|                                   (USA), H. A. Koch (Niederlande) und A. Scherbius (Deutschland)
 | |
|                                   entdeckt
 | |
|                             \item
 | |
|                                   Rotor-Chiffriermaschinen kaskadieren eine Sammlung von
 | |
|                                   Chiffrierscheiben, um eine polyalphabetische Substitution von
 | |
|                                   hoher Komplexität zu realisieren
 | |
|                             \item
 | |
|                                   Die Kryptoanalyse der taktischen Kommunikation spielt während des
 | |
|                                   Zweiten Weltkriegs eine sehr wichtige Rolle. Die größten Erfolge
 | |
|                                   sind die britische und polnische Lösung der deutschen Enigma- und
 | |
|                                   der beiden Fernschreiber-Chiffren sowie die amerikanische
 | |
|                                   Kryptoanalyse der japanischen Chiffren.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Entwicklungen nach dem 2. Weltkrieg:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die moderne Elektronik ermöglicht noch komplexere Chiffren, die
 | |
|                         zunächst den Rotorprinzipien folgen (und deren Schwächen
 | |
|                         einbeziehen)
 | |
|                   \item
 | |
|                         Die meisten Informationen über elektronische Chiffriermaschinen, die
 | |
|                         von verschiedenen nationalen Kryptodiensten verwendet wurden, sind
 | |
|                         nicht öffentlich zugänglich.
 | |
|                   \item
 | |
|                         Ende der 1960er Jahre war die kommerziell verfügbare Kryptographie
 | |
|                         kaum bekannt, und starke Kryptographie war den nationalen Behörden
 | |
|                         vorbehalten
 | |
|                   \item
 | |
|                         1973-1977: Entwicklung des Data Encryption Standard (DES)
 | |
|                   \item
 | |
|                         1976-1978: Entdeckung der Public-Key-Kryptografie
 | |
|                   \item
 | |
|                         1976: W. Diffie und M. Hellman veröffentlichen "New Directions in
 | |
|                         Cryptography" (Neue Wege in der Kryptographie), in dem sie die
 | |
|                         Konzepte der Public-Key-Kryptographie einführen und ein Verfahren
 | |
|                         zum Austausch von Schlüsseln über unsichere Kanäle beschreiben.
 | |
|                   \item
 | |
|                         R. Merkle entdeckt unabhängig das Prinzip des öffentlichen
 | |
|                         Schlüssels, seine ersten Veröffentlichungen erscheinen jedoch erst
 | |
|                         1978, da der Veröffentlichungsprozess langsam ist
 | |
|                   \item
 | |
|                         1978: R. L. Rivest, A. Shamir und A. M. Adleman veröffentlichen "A
 | |
|                         Method for Obtaining Digital Signatures and Public Key
 | |
|                         Cryptosystems", das den ersten funktionierenden und sicheren
 | |
|                         Public-Key-Algorithmus RSA enthält
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Grundlagen der
 | |
|       Kryptographie}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Überblick über kryptografische Algorithmen
 | |
|         \item
 | |
|               Angriffe auf die Kryptographie
 | |
|         \item
 | |
|               Eigenschaften von Verschlüsselungsalgorithmen
 | |
|         \item
 | |
|               Klassifizierung von Verschlüsselungsalgorithmen
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Kryptographische Algorithmen:
 | |
|         Überblick}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               In diesem Kurs stehen zwei Hauptanwendungen kryptographischer
 | |
|               Algorithmen im Mittelpunkt des Interesses
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verschlüsselung von Daten: Umwandlung von Klartextdaten in
 | |
|                         Chiffretext, um deren Bedeutung zu verbergen
 | |
|                   \item
 | |
|                         Signierung von Daten: Berechnung eines Prüfwerts oder einer
 | |
|                         digitalen Signatur für einen gegebenen Klartext oder Geheimtext, der
 | |
|                         von einigen oder allen Stellen, die auf die signierten Daten
 | |
|                         zugreifen können, überprüft werden kann
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Einige kryptografische Algorithmen können für beide Zwecke verwendet
 | |
|               werden, andere sind nur für einen der beiden Zwecke sicher und/oder
 | |
|               effizient.
 | |
|         \item
 | |
|               Hauptkategorien von kryptografischen Algorithmen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Symmetrische Kryptografie, die 1 Schlüssel für die
 | |
|                         Ver-/Entschlüsselung oder die Signierung/Prüfung verwendet
 | |
|                   \item
 | |
|                         Asymmetrische Kryptografie mit 2 verschiedenen Schlüsseln für die
 | |
|                         Ver-/Entschlüsselung oder die Unterzeichnung/Prüfung
 | |
|                   \item
 | |
|                         Kryptografische Hash-Funktionen mit 0 Schlüsseln (der "Schlüssel"
 | |
|                         ist keine separate Eingabe, sondern wird an die Daten "angehängt"
 | |
|                         oder mit ihnen "vermischt").
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Angriff auf die
 | |
|         Kryptographie}
 | |
| 
 | |
| 
 | |
|     \subsection{Kryptoanalyse}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Kryptoanalyse ist der Versuch, den Klartext und/oder den Schlüssel
 | |
|               herauszufinden.
 | |
|         \item
 | |
|               Arten der Kryptoanalyse
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Nur Chiffretext: bestimmte Muster des Klartextes können im
 | |
|                         Chiffretext erhalten bleiben (Häufigkeit von Buchstaben, Digraphen
 | |
|                         usw.)
 | |
|                   \item
 | |
|                         Bekannte Chiffretext-Klartext-Paare
 | |
|                   \item
 | |
|                         Gewählter Klartext oder gewählter Chiffretext
 | |
|                   \item
 | |
|                         Differentielle Kryptoanalyse und lineare Kryptoanalyse
 | |
|                   \item
 | |
|                         Neuere Entwicklung: verwandte Schlüsselanalyse
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kryptoanalyse der Public-Key-Kryptographie
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Tatsache, dass ein Schlüssel öffentlich zugänglich ist, kann
 | |
|                         ausgenutzt werden
 | |
|                   \item
 | |
|                         Die Kryptoanalyse öffentlicher Schlüssel zielt eher darauf ab, das
 | |
|                         Kryptosystem selbst zu knacken und ist näher an der reinen
 | |
|                         mathematischen Forschung als an der klassischen Kryptoanalyse.
 | |
|                   \item
 | |
|                         Wichtige Richtungen
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Berechnung von diskreten Logarithmen
 | |
|                             \item
 | |
|                                   Faktorisierung von großen ganzen Zahlen
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Brute-Force-Angriff}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der Brute-Force-Angriff probiert alle möglichen Schlüssel aus, bis er
 | |
|               einen verständlichen Klartext findet
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Jeder kryptographische Algorithmus kann theoretisch mit Brute Force
 | |
|                         angegriffen werden
 | |
|                   \item
 | |
|                         Im Durchschnitt muss die Hälfte aller möglichen Schlüssel
 | |
|                         ausprobiert werden
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Durchschnittlich benötigte Zeit für erschöpfende Schlüsselsuche
 | |
| 
 | |
|     %\begin{longtable}[]{@{}llll@{}}
 | |
|     %    \toprule
 | |
|     %    Schlüsselgröße {[}bit{]}                                       & Anzahl der Schlüssel                                   & Benötigte Zeit bei 1
 | |
|     %    \$Verschlüsselung/\textbackslash mu\$s                         & Zeitbedarf bei 10\^{}6
 | |
|     %    Verschlüsselung /\$\textbackslash mu\$s\tabularnewline
 | |
|     %    \midrule
 | |
|     %    \endhead
 | |
|     %    56                                                             & \$2\^{}\{56\} = 7,2\textbackslash times 10\^{}\{16\}\$ &
 | |
|     %    \$2\^{}\{55\}\textbackslash mu s = 1142\$ Jahre                & \$10,01\$
 | |
|     %    Stunden\tabularnewline
 | |
|     %    128                                                            & \$2\^{}\{128\} = 3,4 x 10\^{}\{38\}\$                  &
 | |
|     %    \$2\^{}\{127\}\textbackslash mu s = 5,4 x 10\^{}\{24\}\$ Jahre & \$5,4 x
 | |
|     %    10\^{}\{18\}\$ Jahre\tabularnewline
 | |
|     %    256                                                            & \$2\^{}\{256\} = 1.2 x 10\^{}\{77\}                    &
 | |
|     %    \$2\^{}\{255\}\textbackslash mu s = 3,7 x 10\^{}\{63\}\$ Jahre & \$3,7 x
 | |
|     %    10\^{}\{57\}\$ Jahre\tabularnewline
 | |
|     %    \bottomrule
 | |
|     %\end{longtable}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Wie groß ist groß?}
 | |
| 
 | |
|     Referenzzahlen zum Vergleich relativer Größenordnungen \textbar{}
 | |
|     Referenz \textbar{} Größe \textbar{} \textbar{}
 | |
|     -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-
 | |
|     \textbar{}
 | |
|     -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-
 | |
|     \textbar{} \textbar{} Sekunden in einem Jahr \textbar{} ca. \$3 x
 | |
|     10\^{}7\$ \textbar{} \textbar{} Sekunden seit der Entstehung des
 | |
|     Sonnensystems \textbar{} ca. \$2 x 10\^{}\{17\}\$ \textbar{} \textbar{}
 | |
|     Taktzyklen pro Jahr (50 MHz Computer) \textbar{} ca. \$1,6 x
 | |
|     10\^{}\{15\}\$ \textbar{} \textbar{} Binäre Zeichenketten der Länge 64
 | |
|     \textbar{} \$2\^{}\{64\}\$ ca. \$1,8 x 10\^{}\{19\}\$ \textbar{}
 | |
|     \textbar{} Binäre Zeichenfolgen der Länge 128 \textbar{}
 | |
|     \$2\^{}\{128\}\$ ca. \$3,4 x 10\^{}\{38\}\$ \textbar{} \textbar{} Binäre
 | |
|     Zeichenfolgen der Länge 256 \textbar{} \$2\^{}\{256\}\$ ca. \$1,2 x
 | |
|     10\^{}\{77\}\$ \textbar{} \textbar{} Anzahl der 75-stelligen Primzahlen
 | |
|     \textbar{} \$5,2 x 10\^{}\{72\}\$ \textbar{} \textbar{} Elektronen im
 | |
|     Universum \textbar{} \$8,37 x 10\^{}\{77\}\$ \textbar{}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Wichtige Eigenschaften von
 | |
|         Verschlüsselungsalgorithmen}
 | |
| 
 | |
|     Nehmen wir an, ein Absender verschlüsselt Klartextnachrichten \$P\_1,
 | |
|     P\_2, ...\$ zu Chiffretextnachrichten \$C\_1, C\_2, ...\$
 | |
| 
 | |
|     Dann sind die folgenden Eigenschaften des Verschlüsselungsalgorithmus
 | |
|     von besonderem Interesse
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Fehlerfortpflanzung charakterisiert die Auswirkungen von
 | |
|               Bit-Fehlern bei der Übertragung von Chiffretext zu rekonstruiertem
 | |
|               Klartext \$P\_1', P\_2', ...\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Je nach Verschlüsselungsalgorithmus können pro fehlerhaftem
 | |
|                         Chiffretext-Bit ein oder mehrere fehlerhafte Bits im rekonstruierten
 | |
|                         Klartext vorhanden sein
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Synchronisierung charakterisiert die Auswirkungen verlorener
 | |
|               Chiffretext-Dateneinheiten auf den rekonstruierten Klartext
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Einige Verschlüsselungsalgorithmen können sich nicht von verlorenem
 | |
|                         Chiffretext erholen und benötigen daher eine explizite
 | |
|                         Neusynchronisierung im Falle verlorener Nachrichten
 | |
|                   \item
 | |
|                         Andere Algorithmen führen eine automatische Neusynchronisierung nach
 | |
|                         0 bis n (n je nach Algorithmus) Chiffretextbits durch.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Klassifizierung von Verschlüsselungsalgorithmen: Drei
 | |
|         Dimensionen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Art der Operationen, die zur Umwandlung von Klartext in
 | |
|               Chiffretext verwendet werden
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Substitution, die jedes Element des Klartextes (Bit, Buchstabe,
 | |
|                         Gruppe von Bits oder Buchstaben) in ein anderes Element umwandelt
 | |
|                   \item
 | |
|                         Transposition, die die Elemente des Klartextes neu anordnet
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Anzahl der verwendeten Schlüssel
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Symmetrische Chiffren, die denselben Schlüssel für die Ver- und
 | |
|                         Entschlüsselung verwenden
 | |
|                   \item
 | |
|                         Asymmetrische Chiffren, bei denen unterschiedliche Schlüssel für die
 | |
|                         Ver- und Entschlüsselung verwendet werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Art und Weise, in der der Klartext verarbeitet wird
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Stromchiffren arbeiten mit Bitströmen und verschlüsseln ein Bit nach
 | |
|                         dem anderen
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Viele Stromchiffren basieren auf der Idee der linearen
 | |
|                                   rückgekoppelten Schieberegister, und bei vielen Algorithmen dieser
 | |
|                                   Klasse wurden Schwachstellen entdeckt, da es eine tiefgreifende
 | |
|                                   mathematische Theorie zu diesem Thema gibt.
 | |
|                             \item
 | |
|                                   Die meisten Stromchiffren verbreiten keine Fehler, sind aber
 | |
|                                   anfällig für den Verlust der Synchronisation.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Blockchiffren arbeiten mit Blöcken der Breite b, wobei b vom
 | |
|                         jeweiligen Algorithmus abhängt.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Kryptographische Algorithmen -
 | |
|         Überblick}
 | |
| 
 | |
|     Kryptografische Algorithmen
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Überblick
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eigenschaften
 | |
|                   \item
 | |
|                         Kryptoanalyse
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Symmetrische Ver-/Entschlüsselung
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Funktionsweisen
 | |
|                   \item
 | |
|                         DES
 | |
|                   \item
 | |
|                         AES
 | |
|                   \item
 | |
|                         RC4
 | |
|                   \item
 | |
|                         KASUMI
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Asymmetrische Ver-/Entschlüsselung
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Hintergrund
 | |
|                   \item
 | |
|                         RSA
 | |
|                   \item
 | |
|                         Diffie-Hellman
 | |
|                   \item
 | |
|                         ElGamal
 | |
|                   \item
 | |
|                         ECC
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kryptographische Hash-Funktionen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         MDCs/MACs
 | |
|                   \item
 | |
|                         MD
 | |
|                   \item
 | |
|                         SHA-1/2/
 | |
|                   \item
 | |
|                         CBC-MAC
 | |
|                   \item
 | |
|                         GCM-MAC
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Symmetrische Kryptographie}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Modi der Verschlüsselung
 | |
|         \item
 | |
|               Datenverschlüsselungsstandard (DES)
 | |
|         \item
 | |
|               Erweiterter Verschlüsselungsstandard (AES)
 | |
|         \item
 | |
|               Die Blockchiffre RC
 | |
|         \item
 | |
|               KASUMI
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Symmetrische
 | |
|         Verschlüsselung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Allgemeine Beschreibung
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Derselbe Schlüssel KA,B wird für die Verschlüsselung und
 | |
|                         Entschlüsselung von Nachrichten verwendet
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Schreibweise
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn P die Klartextnachricht bezeichnet, bezeichnet \$E(K\_\{A,B\},
 | |
|                         P)\$ den Chiffretext und es gilt \$D(K\_\{A,B\}, E(K\_\{A,B\}, P)) =
 | |
|                         P\$
 | |
|                   \item
 | |
|                         Alternativ schreibt man manchmal \$\{P\}\emph{\{K}\{A,B\}\}\$ oder
 | |
|                         \$E\_\{K\_\{A,B\}\}(P)\$ für \$E(K\_\{A,B\}, P)\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Beispiele: DES, 3DES, AES, ...
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Symmetrische Blockchiffren -
 | |
|         Verschlüsselungsarten}
 | |
| 
 | |
|     Allgemeine Bemerkungen \& Notation
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Ein Klartext P wird in Blöcke \$P\_1, P\_2, ...\$ der Länge b bzw. j
 | |
|               zerlegt, wobei b die Blockgröße des Verschlüsselungsalgorithmus
 | |
|               bezeichnet und j \textless{} b
 | |
|         \item
 | |
|               Der Chiffretext C ist die Kombination von \$C\_1, C\_2, ...\$, wobei
 | |
|               \$c\_i\$ das Ergebnis der Verschlüsselung des i-ten Blocks der
 | |
|               Klartextnachricht bezeichnet
 | |
|         \item
 | |
|               Die Stellen, die eine Nachricht verschlüsseln und entschlüsseln, haben
 | |
|               sich auf einen Schlüssel K geeinigt.
 | |
|     \end{itemize}
 | |
| 
 | |
|     Elektronischer Codebuch-Modus (Electronic Code Book Mode: ECB)
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Jeder Block Pi der Länge b wird unabhängig verschlüsselt: \$C\_i =
 | |
|               E(K, p\_i)\$
 | |
|         \item
 | |
|               Ein Bitfehler in einem Chiffretextblock \$C\_i\$ führt zu einem völlig
 | |
|               falsch wiederhergestellten Klartextblock \$P\_i'\$
 | |
|         \item
 | |
|               Der Verlust der Synchronisation hat keine Auswirkungen, wenn
 | |
|               ganzzahlige Vielfache der Blockgröße b verloren gehen. Geht eine
 | |
|               andere Anzahl von Bits verloren, ist eine explizite Neusynchronisation
 | |
|               erforderlich.
 | |
|         \item
 | |
|               Nachteil: identische Klartextblöcke werden zu identischem Chiffretext
 | |
|               verschlüsselt!
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-electronic-code-book-mode.png}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Cipher Block Chaining Modus (Cipher Block Chaining Mode: CBC)
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Vor der Verschlüsselung eines Klartextblocks pi wird dieser mit dem
 | |
|               vorangegangenen Chiffretextblock \$C\_\{i-1\}\$ XOR-verknüpft ()
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$C\_i = E(K, C\_\{i-1\} \textbackslash oplus p\_i)\$
 | |
|                   \item
 | |
|                         \$P\_\{i'\} = C\_\{i-1\} \textbackslash oplus D(K, C\_i)\$
 | |
|                   \item
 | |
|                         Um \$C\_1\$ zu berechnen, einigen sich beide Parteien auf einen
 | |
|                         Anfangswert (IV) für \$C\_0\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Eigenschaften
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Fehlerfortpflanzung: Ein verfälschter Chiffretextblock führt zu zwei
 | |
|                         verfälschten Klartextblöcken, da \$P\_i'\$ mit \$C\_\{i-1\}\$ und
 | |
|                         \$C\_i\$ berechnet wird
 | |
|                   \item
 | |
|                         Synchronisation: Wenn die Anzahl der verlorenen Bits ein
 | |
|                         ganzzahliges Vielfaches von b ist, wird ein zusätzlicher Block
 | |
|                         \$P\_\{i+1\}\$ verzerrt, bevor die Synchronisation wiederhergestellt
 | |
|                         wird. Wenn eine andere Anzahl von Bits verloren geht, ist eine
 | |
|                         explizite Neusynchronisation erforderlich.
 | |
|                   \item
 | |
|                         Vorteil: identische Klartextblöcke werden zu nicht-identischem
 | |
|                         Chiffretext verschlüsselt.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-cipher-block-chaining-mode.png}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Chiffretext-Feedback-Modus (Ciphertext Feedback Mode: CFB)
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Ein Blockverschlüsselungsalgorithmus, der mit Blöcken der Größe b
 | |
|               arbeitet, kann in einen Algorithmus umgewandelt werden, der mit
 | |
|               Blöcken der Größe \$j (j\textless b)\$ arbeitet.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$S(j, x)\$ bezeichnen die \$j\$ höherwertigen Bits von \$x\$
 | |
|                   \item
 | |
|                         \$P\_i\$, \$C\_i\$ den \$i\$-ten Block von Klartext und Geheimtext
 | |
|                         der Länge \$j\$ bezeichnen
 | |
|                   \item
 | |
|                         IV ist ein Anfangswert, auf den sich beide Parteien geeinigt haben
 | |
|                   \item
 | |
|                         \$R\_1 = IV\$
 | |
|                   \item
 | |
|                         \$R\_n = (R\_\{n-1\}*2\^{}j\textbackslash{} mod\textbackslash{}
 | |
|                         2\^{}b)\textbackslash oplus C\_\{n-1\}\$
 | |
|                   \item
 | |
|                         \$C\_n = S(j,E\_K(R\_n))\textbackslash oplus P\_n\$
 | |
|                   \item
 | |
|                         \$S(j,E\_K(R\_n))\textbackslash oplus C\_n =
 | |
|                         S(j,E\_K(R\_n))\textbackslash oplus
 | |
|                         S(j,E\_K(R\_n))\textbackslash oplus P\_n\$
 | |
|                   \item
 | |
|                         \$S(j,E\_K(R\_n))\textbackslash oplus C\_n = P\_n\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ein gängiger Wert für j ist 8 für die Verschlüsselung von einem
 | |
|               Zeichen pro Schritt
 | |
|         \item
 | |
|               Eigenschaften von CFB
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Fehlerfortpflanzung: Da die Chiffretextblöcke schrittweise durch das
 | |
|                         Register geschoben werden, verfälscht ein fehlerhafter Block
 | |
|                         \$C\_i\$ den wiederhergestellten Klartextblock \$P\_i'\$ sowie die
 | |
|                         folgenden \$\textbackslash lceil b / j\textbackslash rceil\$-Blöcke
 | |
|                   \item
 | |
|                         Synchronisation: Wenn die Anzahl der verlorenen Bits ein
 | |
|                         ganzzahliges Vielfaches von j ist, werden \$\textbackslash lceil b /
 | |
|                         j\textbackslash rceil\$ zusätzliche Blöcke verfälscht, bevor die
 | |
|                         Synchronisation wiederhergestellt ist. Wenn eine beliebige andere
 | |
|                         Anzahl von Bits verloren geht, ist eine explizite
 | |
|                         Neusynchronisierung erforderlich.
 | |
|                   \item
 | |
|                         Nachteil: Die Verschlüsselungsfunktion E muss häufiger berechnet
 | |
|                         werden, da eine Verschlüsselung von b Bit durchgeführt werden muss,
 | |
|                         um j Bit des Klartextes zu verbergen. Beispiel: Bei Verwendung von
 | |
|                         DES mit Verschlüsselung von jeweils einem Zeichen
 | |
|                         \$\textbackslash Rightarrow\$ muss die Verschlüsselung 8-mal
 | |
|                         häufiger durchgeführt werden
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Output-Feedback-Modus (OFB)
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der Blockverschlüsselungsalgorithmus wird zur Erzeugung einer
 | |
|               Pseudozufallsfolge \$R\_i\$ verwendet, die nur von \$K\$ und \$IV\$
 | |
|               abhängt.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$S(j, x)\$ bezeichnen die \$j\$ höherwertigen Bits von \$x\$
 | |
|                   \item
 | |
|                         \$P\_i\$, \$C\_i\$ bezeichnen den \$i\$-ten Block von Klartext und
 | |
|                         Chiffretext der Länge \$j\$
 | |
|                   \item
 | |
|                         \$IV\$ sei ein Anfangswert, auf den sich beide Parteien geeinigt
 | |
|                         haben
 | |
|                   \item
 | |
|                         \$R\_1 = IV\$
 | |
|                   \item
 | |
|                         \$R\_n = (R\_\{n-1\}* 2\^{}j\textbackslash{} mod\textbackslash{}
 | |
|                         2\^{}b )\textbackslash oplus S(j,E\_K(R\_\{n-1\}))\$ // j-bit
 | |
|                         Linksverschiebung + verschlüsselter alter Wert
 | |
|                   \item
 | |
|                         \$C\_n = S(j,E\_K(R\_n))\textbackslash oplus P\_n\$
 | |
|                   \item
 | |
|                         \$S(j,E\_K(R\_n))\textbackslash oplus C\_n =
 | |
|                         S(j,E\_K(R\_n))\textbackslash oplus
 | |
|                         S(j,E\_K(R\_n))\textbackslash oplus P\_n\$
 | |
|                   \item
 | |
|                         \$S(j,E\_K(R\_n))\textbackslash oplus C\_n = P\_n\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Klartext wird mit der Pseudo-Zufallssequenz XOR-verknüpft, um den
 | |
|               Chiffretext zu erhalten und umgekehrt
 | |
|         \item
 | |
|               Eigenschaften von OFB
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Fehlerfortpflanzung: Einzelbitfehler führen nur zu Einzelbitfehlern
 | |
|                         \$\textbackslash rightarrow\$ keine Fehlermultiplikation
 | |
|                   \item
 | |
|                         Synchronisierung: Wenn einige Bits verloren gehen, ist eine
 | |
|                         explizite Re-Synchronisation erforderlich.
 | |
|                   \item
 | |
|                         Vorteil: Die Pseudo-Zufallsfolge kann vorberechnet werden, um die
 | |
|                         Auswirkungen der Verschlüsselung auf die Ende-zu-Ende-Verzögerung
 | |
|                         gering zu halten
 | |
|                   \item
 | |
|                         Nachteile
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wie bei CFB muss die Verschlüsselungsfunktion E häufiger berechnet
 | |
|                                   werden, da eine Verschlüsselung von b Bit durchgeführt werden
 | |
|                                   muss, um j Bit des Klartextes zu verbergen
 | |
|                             \item
 | |
|                                   Es ist für einen Angreifer möglich, bestimmte Bits des Klartextes
 | |
|                                   zu manipulieren
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-output-feedback-mode.png}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Algorithmus-Übersicht
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Datenverschlüsselungsstandard (DES)
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Alter amerikanischer Standard aus den 70er Jahren
 | |
|                   \item
 | |
|                         Unsicher wegen der Schlüssel- und Blocklänge
 | |
|                   \item
 | |
|                         Grundlegender Aufbau
 | |
|                   \item
 | |
|                         Dreifache Verschlüsselung mit einer Blockchiffre, z.B. Triple-DES
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Erweiterter Verschlüsselungsstandard (AES)
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Offener Standardisierungsprozess mit internationaler Beteiligung
 | |
|                   \item
 | |
|                         Im Oktober 2000 wurde ein Algorithmus namens Rijndael für AES
 | |
|                         vorgeschlagen
 | |
|                   \item
 | |
|                         Ankündigung des AES-Standards im November 2001
 | |
|                   \item
 | |
|                         Siehe auch \href{http://www.nist.gov/aes/}{http://www.nist.gov/aes/}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Andere populäre Algorithmen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         RC
 | |
|                   \item
 | |
|                         KASUMI
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Der Datenverschlüsselungsstandard
 | |
|         (DES)}
 | |
| 
 | |
|     Geschichte
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               1973 veröffentlichte das National Bureau of Standards (NBS, heute
 | |
|               National Institute of Standards and Technology, NIST) eine
 | |
|               Aufforderung zur Einreichung von Vorschlägen für einen nationalen
 | |
|               Verschlüsselungsstandard und forderte von dem Algorithmus, dass er
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         ein hohes Maß an Sicherheit bieten,
 | |
|                   \item
 | |
|                         vollständig spezifiziert und leicht zu verstehen sein,
 | |
|                   \item
 | |
|                         Sicherheit nur durch seinen Schlüssel und nicht durch seine eigene
 | |
|                         Geheimhaltung bieten,
 | |
|                   \item
 | |
|                         für alle Benutzer verfügbar sein,
 | |
|                   \item
 | |
|                         für den Einsatz in verschiedenen Anwendungen anpassbar sein,
 | |
|                   \item
 | |
|                         wirtschaftlich in elektronischen Geräten implementierbar sein,
 | |
|                   \item
 | |
|                         effizient in der Anwendung sein,
 | |
|                   \item
 | |
|                         validiert werden können und
 | |
|                   \item
 | |
|                         exportierbar sein.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Keine der Einreichungen auf diese erste Aufforderung erfüllte diese
 | |
|               Kriterien auch nur annähernd.
 | |
|         \item
 | |
|               Auf eine zweite Aufforderung hin reichte IBM seinen Algorithmus
 | |
|               LUCIFER ein, eine symmetrische Blockchiffre, die mit Blöcken der Länge
 | |
|               128 Bit unter Verwendung von Schlüsseln der Länge 128 Bit arbeitet;
 | |
|               dies war der einzige vielversprechende Kandidat.
 | |
|         \item
 | |
|               Die NBS bat die National Security Agency (NSA) um Hilfe bei der
 | |
|               Bewertung der Sicherheit des Algorithmus
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die NSA reduzierte die Blockgröße auf 64 Bit, die Größe des
 | |
|                         Schlüssels auf 56 Bit und änderte Details in den
 | |
|                         Substitutionsfeldern des Algorithmus.
 | |
|                   \item
 | |
|                         Viele der Gründe der NSA für diese Änderungen wurden erst in den
 | |
|                         frühen 1990er Jahren deutlich, lösten aber in den späten 1970er
 | |
|                         Jahren große Besorgnis aus.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Trotz aller Kritik wurde der Algorithmus 1977 als ,,Data Encryption
 | |
|               Standard'' in die Reihe der Federal Information Processing Standards
 | |
|               (FIPS PUB 46) aufgenommen und für die Verwendung in der gesamten nicht
 | |
|               klassifizierten Regierungskommunikation zugelassen.
 | |
|         \item
 | |
|               DES hat sich in den folgenden Jahren weithin durchgesetzt
 | |
|     \end{itemize}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-des-algorithm.png}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-des-single-iteration.png}
 | |
| 
 | |
| 
 | |
|     \subsubsection{DES - Einzelne
 | |
|         Iteration}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die rechten 32 Bit der zu verschlüsselnden Daten werden mit Hilfe
 | |
|               einer Expansions-/Permutationstabelle auf 48 Bit erweitert.
 | |
|         \item
 | |
|               Sowohl die linken als auch die rechten 28 Bit des Schlüssels (auch
 | |
|               Subkeys genannt) werden zirkulär nach links verschoben und der
 | |
|               resultierende Wert wird mit Hilfe einer
 | |
|               Permutations-/Kontraktionstabelle auf 48 Bit verkürzt.
 | |
|         \item
 | |
|               Die beiden oben genannten Werte werden XOR-verknüpft und in eine
 | |
|               Auswahl- und Ersetzungsbox eingegeben
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Intern wird diese Operation durch 8 so genannte s-Boxen realisiert,
 | |
|                         von denen jede einen Sechs-Bit-Wert auf einen Vier-Bit-Wert gemäß
 | |
|                         einer boxspezifischen Tabelle abbildet, was insgesamt zu einem
 | |
|                         32-Bit-Ausgang führt
 | |
|                   \item
 | |
|                         Das Design dieser s-boxes wurde von der NSA verstärkt, was in den
 | |
|                         1970er Jahren zu intensiven Diskussionen führte und in den 1990er
 | |
|                         Jahren nach der Entdeckung der differentiellen Kryptoanalyse
 | |
|                         verstanden wurde
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Ausgang des obigen Schritts wird erneut permutiert und mit den
 | |
|               linken 32 Bit der Daten XOR-verknüpft, was zu den neuen rechten 32 Bit
 | |
|               der Daten führt
 | |
|         \item
 | |
|               Die neuen linken 32 Bit der Daten sind der rechte Wert der vorherigen
 | |
|               Iteration
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{DES - Entschlüsselung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Unter Verwendung der Abkürzung f(R, K) kann der
 | |
|               Verschlüsselungsprozess wie folgt geschrieben werden
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$L\_i = R\_\{i-1\}\$
 | |
|                   \item
 | |
|                         \$R\_i = L\_\{i-1\}\textbackslash oplus f(R\_\{i-1\}, K\_i)\$
 | |
|                   \item
 | |
|                         Dieses Konzept (Aufteilung der Daten in zwei Hälften und
 | |
|                         Organisation der Verschlüsselung gemäß den obigen Gleichungen) wird
 | |
|                         in vielen Blockchiffren verwendet und wird als Feistel-Netzwerk
 | |
|                         bezeichnet (nach seinem Erfinder H. Feistel)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der DES-Entschlüsselungsprozess ist im Wesentlichen derselbe wie die
 | |
|               Verschlüsselung. Er verwendet den Chiffretext als Eingabe für den
 | |
|               Verschlüsselungsalgorithmus, wendet aber die Unterschlüssel in
 | |
|               umgekehrter Reihenfolge an
 | |
|         \item
 | |
|               Die Ausgangswerte sind also
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$L\_0' \textbar\textbar{} R\_0' =\$ InitialPermutation
 | |
|                         (Chiffretext)
 | |
|                   \item
 | |
|                         chiffretext = InverseInitialPermutation (\$R\_\{16\}
 | |
|                         \textbar\textbar{} L\_\{16\}\$)
 | |
|                   \item
 | |
|                         \$L\_0' \textbar\textbar{} R\_0' =\$ InitialPermutation
 | |
|                         (InverseInitialPermutation
 | |
|                         (\$R\_\{16\}\textbar\textbar L\_\{16\}))=R\_\{16\}\textbar\textbar L\_\{16\}\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nach einem Schritt der Entschlüsselung
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$L\_1' = R\_0' = L\_\{16\} = R\_\{15\}\$
 | |
|                   \item
 | |
|                         \$R\_1' = L\_0' \textbackslash oplus f(R\_0',
 | |
|                         K\_\{16\})=R\_\{16\}\textbackslash oplus
 | |
|                         f(R\_\{15\},K\_\{16\})={[}L\_\{15\}\textbackslash oplus
 | |
|                         f(R\_\{15\},K\_\{16\}){]}\textbackslash oplus f(R\_\{15\},K\_\{16\})
 | |
|                         =L\_\{15\}\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Diese Beziehung gilt für den gesamten Prozess als
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$R\_\{i-1\} = L\_i\$
 | |
|                   \item
 | |
|                         \$L\_\{i-1\} = R\_i\textbackslash oplus f(R\_\{i-1\}, K\_i) =
 | |
|                         R\_i\textbackslash oplus f(L\_i, K\_i)\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Ausgang der letzten Runde ist schließlich
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$L\_\{16\}' \textbar\textbar{} R\_\{16\}' = R\_0 \textbar\textbar{}
 | |
|                         L\_0\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nach der letzten Runde führt DES einen 32-Bit-Tausch und die inverse
 | |
|               Anfangspermutation durch
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         InverseInitialPermutation(\$L\_0\textbar\textbar R\_0\$) =
 | |
|                         InverseInitialPermutation(InitialPermutation(Klartext)) = Klartext
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{DES - Sicherheit}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Schwächen der Schlüssel
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schwache Schlüssel: Vier Schlüssel sind schwach, da sie
 | |
|                         Unterschlüssel erzeugen, die entweder alle 0 oder alle 1 enthalten.
 | |
|                   \item
 | |
|                         Halbschwache Schlüssel: Es gibt sechs Schlüsselpaare, die Klartext
 | |
|                         zu identischem Chiffriertext verschlüsseln, da sie nur zwei
 | |
|                         verschiedene Unterschlüssel erzeugen
 | |
|                   \item
 | |
|                         Möglicherweise schwache Schlüssel: Es gibt 48 Schlüssel, die nur
 | |
|                         vier verschiedene Unterschlüssel erzeugen
 | |
|                   \item
 | |
|                         Insgesamt werden 64 Schlüssel von \$72057594037927936\$ als schwach
 | |
|                         angesehen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Algebraische Struktur
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wäre DES geschlossen, dann gäbe es für jedes \$K\_1,K\_2\$ ein
 | |
|                         \$K\_3\$, so dass: \$E(K\_2,E(K\_1,M))=E(K\_3,M)\$, also wäre die
 | |
|                         doppelte Verschlüsselung nutzlos
 | |
|                   \item
 | |
|                         Wäre DES rein, dann gäbe es für jedes \$K\_1,K\_2,K\_3\$ ein
 | |
|                         \$K\_4\$, so dass \$E(K\_3,E(K\_2,E(K\_1,M)))=E(K\_4,M)\$, also wäre
 | |
|                         die dreifache Verschlüsselung nutzlos
 | |
|                   \item
 | |
|                         DES ist weder geschlossen noch rein, daher kann ein
 | |
|                         Mehrfachverschlüsselungsschema verwendet werden, um die
 | |
|                         Schlüssellänge zu erhöhen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Differentielle Kryptoanalyse
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Im Jahr 1990 veröffentlichten E. Biham und A. Shamir diese
 | |
|                         Analysemethode
 | |
|                   \item
 | |
|                         Sie sucht gezielt nach Unterschieden in Chiffretexten, deren
 | |
|                         Klartexte bestimmte Unterschiede aufweisen, und versucht, daraus den
 | |
|                         richtigen Schlüssel zu erraten
 | |
|                   \item
 | |
|                         Der grundlegende Ansatz benötigt einen ausgewählten Klartext
 | |
|                         zusammen mit seinem Chiffretext
 | |
|                   \item
 | |
|                         DES mit 16 Runden ist gegen diesen Angriff immun, da der Angriff
 | |
|                         \$2\^{}\{47\}\$ gewählte Klartexte oder (bei "Umwandlung" in einen
 | |
|                         Angriff mit bekannten Klartexten) \$2\^{}55\$ bekannte Klartexte
 | |
|                         benötigt.
 | |
|                   \item
 | |
|                         Die Entwickler von DES erklärten in den 1990er Jahren, dass sie in
 | |
|                         den 1970er Jahren über diese Art von Angriffen Bescheid wussten und
 | |
|                         dass die s-Boxen entsprechend entworfen wurden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Schlüssellänge
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Da ein 56-Bit-Schlüssel in \$10,01\$ Stunden durchsucht werden kann,
 | |
|                         wenn man \$10\^{}6\$ Verschlüsselungen / \$\textbackslash mu s\$
 | |
|                         durchführen kann (was heute möglich ist), kann DES nicht mehr als
 | |
|                         ausreichend sicher angesehen werden.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Erweiterung der Schlüssellänge von DES durch
 | |
|         Mehrfachverschlüsselung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Doppelter DES: Da DES nicht geschlossen ist, führt die doppelte
 | |
|               Verschlüsselung zu einer Chiffre, die 112-Bit-Schlüssel verwendet
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Leider kann sie mit einem Aufwand von \$2\^{}\{56\}\$ angegriffen
 | |
|                         werden.
 | |
|                   \item
 | |
|                         Da \$C=E(K\_2,E(K\_1,P))\$ haben wir \$X:=E(K\_1,P)=D(K\_2,C)\$
 | |
|                   \item
 | |
|                         Wenn ein Angreifer ein bekanntes Klartext/Chiffretext-Paar erhalten
 | |
|                         kann, kann er zwei Tabellen erstellen (meet-in-the-middle-attack)
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Tabelle 1 enthält die Werte von \$X\$, wenn \$P\$ mit allen
 | |
|                                   möglichen Werten von \$K\$ verschlüsselt ist
 | |
|                             \item
 | |
|                                   Tabelle 2 enthält die Werte von \$X\$, wenn \$C\$ mit allen
 | |
|                                   möglichen Werten von \$K\$ entschlüsselt wird
 | |
|                             \item
 | |
|                                   Sortiere die beiden Tabellen und konstruiere Schlüssel
 | |
|                                   \$K\_\{T1\}\textbar\textbar K\_\{T2\}\$ für alle Kombinationen von
 | |
|                                   Einträgen, die den gleichen Wert ergeben.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Da es für jeden beliebigen Klartext \$2\^{}\{64\}\$ mögliche
 | |
|               Chiffretext-Werte gibt, die mit Double-DES erzeugt werden könnten,
 | |
|               gibt es beim ersten bekannten Klartext/Chiffretext-Paar
 | |
|               durchschnittlich \$2\^{}\{112\}/2\^{}\{64\}=2\^{}\{48\}\$ Fehlalarme.
 | |
|         \item
 | |
|               Jedes weitere Klartext/Chiffretext-Paar verringert die Chance, einen
 | |
|               falschen Schlüssel zu erhalten, um den Faktor \$1/2\^{}\{64\}\$, so
 | |
|               dass bei zwei bekannten Blöcken die Chance \$2\^{}\{-16\}\$ beträgt.
 | |
|         \item
 | |
|               Der Aufwand, der erforderlich ist, um Double DES zu knacken, liegt
 | |
|               also in der Größenordnung von \$2\^{}\{56\}\$, was nur geringfügig
 | |
|               besser ist als der Aufwand von \$2\^{}\{55\}\$, der erforderlich ist,
 | |
|               um Single DES mit einem Angriff mit bekanntem Klartext zu knacken, und
 | |
|               weit entfernt von den \$2\^{}\{111\}\$, die wir von einer Chiffre mit
 | |
|               einer Schlüssellänge von 112 Bit erwarten würden!
 | |
|         \item
 | |
|               Diese Art von Angriff kann durch die Verwendung eines dreifachen
 | |
|               Verschlüsselungsschemas umgangen werden, wie es 1979 von W. Tuchman
 | |
|               vorgeschlagen wurde
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$C=E(K\_3,D(K\_2,E(K\_1,P)))\$
 | |
|                   \item
 | |
|                         Die Verwendung der Entschlüsselungsfunktion D in der Mitte
 | |
|                         ermöglicht die Verwendung von Dreifachverschlüsselungsgeräten mit
 | |
|                         Gegenstellen, die nur Einfachverschlüsselungsgeräte besitzen, indem
 | |
|                         \$K\_1=K\_2=K\_3\$ gesetzt wird.
 | |
|                   \item
 | |
|                         Dreifachverschlüsselung kann mit zwei (Einstellung \$K\_1=K\_3\$)
 | |
|                         oder drei verschiedenen Schlüsseln verwendet werden
 | |
|                   \item
 | |
|                         Bislang sind keine praktischen Angriffe gegen dieses Verfahren
 | |
|                         bekannt
 | |
|                   \item
 | |
|                         Nachteil: die Leistung beträgt nur \$1/3\$ der einfachen
 | |
|                         Verschlüsselung, so dass es besser sein könnte, gleich eine andere
 | |
|                         Chiffre zu verwenden, die eine größere Schlüssellänge bietet
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Der fortgeschrittene Verschlüsselungsstandard
 | |
|         AES}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Jan. 1997: Das National Institute of Standards and Technology (NIST)
 | |
|               der USA kündigt die Entwicklung des AES an.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Das übergeordnete Ziel ist die Entwicklung eines Federal Information
 | |
|                         Processing Standard (FIPS), der einen Verschlüsselungsalgorithmus
 | |
|                         spezifiziert, der in der Lage ist, sensible Regierungsinformationen
 | |
|                         bis weit ins nächste Jahrhundert hinein zu schützen.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sep. 1997: Offizieller Aufruf zur Einreichung von Algorithmen, offen
 | |
|               für jeden auf der Welt
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         AES würde einen nicht klassifizierten, öffentlich zugänglichen
 | |
|                         Verschlüsselungsalgorithmus bzw. -algorithmen spezifizieren, der
 | |
|                         weltweit lizenzgebührenfrei erhältlich ist.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Aug. 1998: Erste AES-Kandidatenkonferenz
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         NIST gibt die Auswahl von 15 Kandidatenalgorithmen bekannt
 | |
|                   \item
 | |
|                         Aufforderung zu öffentlichen Kommentaren
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               April 1999:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Anhand der eingegangenen Analysen und Kommentare wählt das NIST fünf
 | |
|                         Algorithmen als Kandidaten für die Endauswahl aus: MARS, RC6,
 | |
|                         Rijndael, Serpent und Twofish
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Oktober 2000: Rijndael wird als Vorschlag des NIST für AES bekannt
 | |
|               gegeben
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \begin{enumerate}
 | |
|                             \def\labelenumi{\arabic{enumi}.}
 | |
|                             \setcounter{enumi}{25}
 | |
|                             \item
 | |
|                                   November 2001: offizielle Ankündigung des AES-Standards
 | |
|                         \end{enumerate}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Rundenbasierte symmetrische Chiffre
 | |
|         \item
 | |
|               Keine Feistel-Struktur (unterschiedliche Verschlüsselungs- und
 | |
|               Entschlüsselungsfunktionen)
 | |
|         \item
 | |
|               Schlüssel- und Blocklängen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schlüssellänge: 128, 192, oder 256 Bit
 | |
|                   \item
 | |
|                         Blocklänge: 128, 192 oder 256 Bit (nur 128-Bit-Version
 | |
|                         standardisiert)
 | |
|                   \item
 | |
|                         Anzahl der Runden: 10, 12, 14
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Standardisierte AES-Konfigurationen \textbar{} Schlüsselgröße {[}bit{]}
 | |
|     \textbar{} Blocklänge {[}bit{]} \textbar{} \# Runden \textbar{}
 | |
|     \textbar{} -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-
 | |
|     \textbar{} -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/- \textbar{}
 | |
|     -\/-\/-\/-\/-\/-\/-\/- \textbar{} \textbar{} 128 \textbar{} 128
 | |
|     \textbar{} 10 \textbar{} \textbar{} 192 \textbar{} 128 \textbar{} 12
 | |
|     \textbar{} \textbar{} 256 \textbar{} 128 \textbar{} 14 \textbar{}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der Algorithmus arbeitet mit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$state{[}4, 4{]}\$: ein Byte-Array mit 4 Zeilen und 4 Spalten (für
 | |
|                         128-Bit-Blockgröße)
 | |
|                   \item
 | |
|                         \$key{[}4, 4{]}\$: ein Array mit 4 Zeilen und 4 Spalten (für
 | |
|                         128-Bit-Schlüsselgröße)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Verschlüsselung: (für eine Block- und Schlüsselgröße von 128 Bit) in
 | |
|               den Runden \$1-9\$ werden vier verschiedene Operationen verwendet
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         ByteSub: eine nicht-lineare Byte-Substitution durch eine feste
 | |
|                         Tabelle (im Grunde eine s-Box)
 | |
|                   \item
 | |
|                         ShiftRow: die Zeilen des Zustands werden zyklisch um verschiedene
 | |
|                         Offsets verschoben
 | |
|                   \item
 | |
|                         MixColumn: die Spalten von \$state{[}{]}\$ werden als Polynome über
 | |
|                         \$GF(2\^{}8)\$ betrachtet und modulo \$x\^{}4+1\$ mit einer festen
 | |
|                         Matrix multipliziert: \$\textbackslash begin\{pmatrix\}
 | |
|                         02\&03\&01\&01\textbackslash01\&02\&03\&01\textbackslash\textbackslash{}
 | |
|                         01\&01\&02\&03\textbackslash\textbackslash{}
 | |
|                         03\&01\&01\&02\textbackslash end\{pmatrix\}\$
 | |
|                   \item
 | |
|                         RoundKey: ein Round-Key wird mit dem Status XORiert
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Round 10 macht keinen Gebrauch von der Operation MixColumn
 | |
|     \end{itemize}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-rijndael-one-round.png}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Entschlüsselung
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Rundenschlüssel und Operationen werden in umgekehrter Reihenfolge
 | |
|                         angewendet
 | |
|                   \item
 | |
|                         Der MixColumn-Schritt kann nur durch Multiplikation mit der inversen
 | |
|                         Matrix (auch über \$GF(2\^{}8)\$) invertiert werden
 | |
|                   \item
 | |
|                         \$\textbackslash begin\{pmatrix\} 0e\&0b\&0d\&09\textbackslash{}
 | |
|                         09\&0e\&0b\&0d\textbackslash{} 0d\&09\&0e\&0b\textbackslash{}
 | |
|                         0b\&0d\&09\&0e \textbackslash end\{pmatrix\}\$
 | |
|                   \item
 | |
|                         Oft werden tabellarische vorberechnete Lösungen verwendet, die aber
 | |
|                         mehr Platz benötigen
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{AES - Sicherheit}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die einfache mathematische Struktur von AES ist der Hauptgrund für
 | |
|               seine Geschwindigkeit, führte aber auch zu Kritik
 | |
|         \item
 | |
|               Nur die ByteSub-Funktion ist wirklich nichtlinear und verhindert eine
 | |
|               effektive Analyse
 | |
|         \item
 | |
|               AES kann als eine große Matrix-Operation beschrieben werden
 | |
|         \item
 | |
|               Bereits während der Standardisierung wurden Angriffe für reduzierte
 | |
|               Versionen entwickelt
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein Angriff mit \$2\^{}\{32\}\$ gewähltem Klartext gegen eine
 | |
|                         7-Runden-Version von AES {[}GM00{]}
 | |
|                   \item
 | |
|                         Signifikante Reduktion der Komplexität auch für eine
 | |
|                         9-Runden-Version von AES mit 256-Schlüsselgröße mit einem
 | |
|                         zugehörigen Schlüsselangriff
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               2011 wurde der erste Angriff gegen einen vollständigen AES bekannt
 | |
|               {[}BKR11{]}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schlüsselwiederherstellung in \$2\^{}\{126.1\}\$ für AES mit 128
 | |
|                         Bit, \$2\^{}\{189.7\}\$ für AES mit 192 Bit, \$2\^{}\{254.4\}\$ für
 | |
|                         AES mit 256 Bit
 | |
|                   \item
 | |
|                         "Praktischer" Angriff (geht nicht von verwandten Schlüsseln aus),
 | |
|                         aber
 | |
|                   \item
 | |
|                         nur ein kleiner Kratzer in Anbetracht von 10 Jahren
 | |
|                         kryptographischer Forschung
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Der Stromchiffre-Algorithmus
 | |
|         RC4}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               RC4 ist eine Stromchiffre, die 1987 von Ron Rivest erfunden wurde.
 | |
|         \item
 | |
|               Sie war bis 1994 urheberrechtlich geschützt, als jemand sie anonym in
 | |
|               eine Mailingliste einstellte.
 | |
|         \item
 | |
|               RC4 wird im Output-Feedback-Modus (OFB) betrieben
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Verschlüsselungsalgorithmus erzeugt eine Pseudozufallsfolge
 | |
|                         \$RC4(IV,K)\$, die nur vom Schlüssel K und einem
 | |
|                         Initialisierungsvektor IV abhängt
 | |
|                   \item
 | |
|                         Der Klartext \$P\_i\$ wird dann mit der Pseudozufallssequenz
 | |
|                         XOR-verknüpft, um den Chiffretext zu erhalten und umgekehrt
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   \$C\_1 = P\_1\textbackslash oplus RC4 (IV\_1,K)\$
 | |
|                             \item
 | |
|                                   \$P\_1 = C\_1\textbackslash oplus RC4 (IV\_1,K)\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Pseudo-Zufallsfolge wird oft auch als Keystream bezeichnet
 | |
|                   \item
 | |
|                         Entscheidend für die Sicherheit ist, dass der Keystream niemals
 | |
|                         wiederverwendet wird!!!
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wenn der Keystream wiederverwendet wird (d.h. \$IV\_1=IV\_2\$ mit
 | |
|                                   demselben \$K\$), dann kann das XOR zweier Klartexte erhalten
 | |
|                                   werden: \$C\_1\textbackslash oplus C\_2= P\_1\textbackslash oplus
 | |
|                                   RC4(IV, K)\textbackslash oplus P\_2\textbackslash oplus RC4(IV,K)
 | |
|                                   = P\_1\textbackslash oplus P\_2\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               RC4 verwendet einen Schlüssel variabler Länge bis zu 2048 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eigentlich dient der Schlüssel als Seed für einen
 | |
|                         Pseudo-Zufallsgenerator
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               RC4 arbeitet mit zwei 256-Byte-Arrays: \$S{[}0,255{]}, K{[}0,255{]}\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schritt 1: Initialisierung der Arrays
 | |
| 
 | |
|                         %\begin{Shaded}
 | |
|                         %    \begin{Highlighting}[]
 | |
|                         %        \ControlFlowTok{for}\NormalTok{ (i = }\DecValTok{0}\NormalTok{; i \textless{} }\DecValTok{256}\NormalTok{; i++)\{}
 | |
|                         %        \NormalTok{    S[i] = i; }\CommentTok{// Array S[] mit 0 bis 255 füllen}
 | |
|                         %        \NormalTok{\}}
 | |
|                         %        \CommentTok{// Füllen des Arrays K[] mit dem Schlüssel und IV durch Wiederholung, bis K[] gefüllt ist}
 | |
|                         %        \NormalTok{n = }\DecValTok{0}\NormalTok{;}
 | |
|                         %        \ControlFlowTok{for}\NormalTok{ (i =}\DecValTok{0}\NormalTok{; i \textless{} }\DecValTok{256}\NormalTok{; i++) \{}
 | |
|                         %        \NormalTok{    n = (n + S[i] + K[i]) MOD }\DecValTok{256}\NormalTok{; swap(S[i], S[n]); }
 | |
|                         %        \NormalTok{\}}
 | |
|                         %    \end{Highlighting}
 | |
|                         %\end{Shaded}
 | |
|                   \item
 | |
|                         Schritt 2: Erzeugen des Schlüsselstroms (nach Initialisierung \$i =
 | |
|                         0; n = 0;\$)
 | |
| 
 | |
|                         %\begin{Shaded}
 | |
|                         %    \begin{Highlighting}[]
 | |
|                         %        \NormalTok{i = (i + }\DecValTok{1}\NormalTok{) MOD }\DecValTok{256}\NormalTok{; n = (n + S[i]) MOD }\DecValTok{256}\NormalTok{;}
 | |
|                         %        \NormalTok{swap(S[i], S[n]);}
 | |
|                         %        \NormalTok{t = (S[i] + S[n]) MOD }\DecValTok{256}\NormalTok{;}
 | |
|                         %        \NormalTok{Z = S[t]; }\CommentTok{// Z enthält 8 Bit des durch eine Iteration erzeugten Schlüsselstroms}
 | |
|                         %    \end{Highlighting}
 | |
|                         %\end{Shaded}
 | |
|                   \item
 | |
|                         Schritt 3: XOR-Verknüpfung des Schlüsselstroms mit dem Klartext oder
 | |
|                         Chiffretext
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sicherheit von RC4
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sicherheit gegen Brute-Force-Angriffe (Ausprobieren aller möglichen
 | |
|                         Schlüssel)
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die variable Schlüssellänge von bis zu 2048 Bit erlaubt es, sie
 | |
|                                   unpraktisch zu machen (zumindest mit den in unserem Universum
 | |
|                                   verfügbaren Ressourcen)
 | |
|                             \item
 | |
|                                   Allerdings kann RC4 durch Verringerung der Schlüssellänge auch
 | |
|                                   beliebig unsicher gemacht werden!
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         RSA Data Security, Inc. behauptet, RC4 sei immun gegen
 | |
|                         differentielle und lineare Kryptoanalyse, und es seien keine kleinen
 | |
|                         Zyklen bekannt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               RC4 mit 40-Bit-Schlüsseln hatte einen besonderen Exportstatus, selbst
 | |
|               als andere Chiffren nicht aus den USA exportiert werden durften
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Secure Socket Layer (SSL) verwendet RC4 mit 40-Bit-Schlüsseln als
 | |
|                         Standardalgorithmus
 | |
|                   \item
 | |
|                         Die Schlüssellänge von 40 Bit ist nicht immun gegen
 | |
|                         Brute-Force-Angriffe.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Je nach Schlüsselplanungsmethode kann RC4 jedoch stark verwundbar
 | |
|               sein! {[}FMS01a, Riv01a, SIR01a{]}
 | |
|         \item
 | |
|               Es wird empfohlen, mindestens die ersten 3072 Bytes des
 | |
|               Schlüsselstroms zu verwerfen {[}Mir02, Kle08{]}
 | |
|         \item
 | |
|               Sollte eigentlich nicht mehr verwendet werden, auch nicht bei längeren
 | |
|               Schlüsseln
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{KASUMI}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Verwendet zur Verschlüsselung von Anrufen in GSM und UMTS,
 | |
|               implementiert f(8) und f(9) (auch A5/3, UEA1, UIA1 genannt)
 | |
|         \item
 | |
|               Ursprünglich standardisiert durch 3GPP im Jahr 2000 {[}ETS12{]} und
 | |
|               basierend auf MISTY1 von Mitsubishi
 | |
|         \item
 | |
|               Entwickelt für Hardware-Implementierung
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schnelle Implementierung möglich
 | |
|                   \item
 | |
|                         \$\textless10k\$ Gatter
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               64-Bit-Blockgröße
 | |
|         \item
 | |
|               128-Bit-Schlüssellänge
 | |
|         \item
 | |
|               8 Runden Feistel-Netzwerk
 | |
|         \item
 | |
|               Sicherheitsspanne nicht sehr groß
 | |
|     \end{itemize}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-kasumi-singe-iteration.png}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die linken 32 Bit der zu verschlüsselnden Daten werden durch zwei
 | |
|               nichtlineare Funktionen FO und FL verändert, die beide
 | |
|               Schlüsselmaterial verwenden
 | |
|         \item
 | |
|               Die Reihenfolge, in der FO und FL angewendet werden, hängt von der
 | |
|               Rundenzahl ab
 | |
|         \item
 | |
|               FL teilt die Daten in 16-Bit-Wörter auf, die mit Schlüsselmaterial
 | |
|               kombiniert, permutiert und mit den Originalwerten XOR-verknüpft werden
 | |
|         \item
 | |
|               FO ist ein 3-Runden-Feistel-Netzwerk mit einer Modifizierungsfunktion
 | |
|               FI, die selbst ein Feistel-ähnliches Netzwerk ist, das zwei s-Boxen
 | |
|               verwendet.
 | |
|         \item
 | |
|               Der Ausgang des obigen Schritts wird mit den rechten 32 Bit der Daten
 | |
|               XOR-verknüpft, was zu den neuen rechten 32 Bit der Daten führt
 | |
|         \item
 | |
|               Das neue linke 32-Bit der Daten ist der rechte Wert der vorherigen
 | |
|               Iteration
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{KASUMI -
 | |
|         Sicherheitsdiskussion}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Eine reduzierte Version von KASUMI (6 Runden) kann durch sogenannte
 | |
|               unmögliche differentielle Kryptoanalyse angegriffen werden, bei der
 | |
|               unmögliche Zustände der Chiffre aus Chiffretext/Klartext-Paaren
 | |
|               abgeleitet werden
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Erste Veröffentlichung bereits ein Jahr nach der Standardisierung
 | |
|                   \item
 | |
|                         Zeitkomplexität von \$2\^{}\{100\}\$ {[}Kue01{]}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Für eine Vollversion von KASUMI sind verwandte Schlüsselangriffe
 | |
|               möglich
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ausgewählter Klartextangriff, bei dem der Angreifer dieselben Daten
 | |
|                         mit mehreren "verwandten" Schlüsseln verschlüsseln kann
 | |
|                   \item
 | |
|                         Zeitkomplexität von \$2\^{}\{76.1\}\$ {[}BDN05{]} und
 | |
|                         \$2\^{}\{32\}\$ im besten Fall {[}DKS10{]}
 | |
|                   \item
 | |
|                         Allerdings sind die Bedingungen, unter denen Angreifer Zugang zu
 | |
|                         verwandten Schlüsseln in 3G-Netzen haben, sehr selten
 | |
|                   \item
 | |
|                         Interessanterweise ist MISTY von diesen Angriffen nicht betroffen!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               ETSI hat jedoch SNOW 3G (UEA2 und UIA2) {[}ETS06{]} eingeführt, um auf
 | |
|               eine vollständige Verletzung von KASUMI vorbereitet zu sein
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Stromchiffre basierend auf LFSR, kann in 7.500 ASIC-Gattern
 | |
|                         implementiert werden
 | |
|                   \item
 | |
|                         Aber auch anfällig für verwandte Schlüsselangriffe {[}KY11{]}.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Asymmetrische
 | |
|       Kryptographie}
 | |
| 
 | |
|     Eine vorherige Beschäftigung mit der diskreten Mathematik wird dem Leser
 | |
|     jedoch helfen, die hier vorgestellten Konzepte zu verstehen.'' E.
 | |
|     Amoroso in einem anderen Zusammenhang {[}Amo94{]}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Allgemeine Idee:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verwenden Sie zwei verschiedene Schlüssel \$-K\$ und \$+K\$ für die
 | |
|                         Ver- und Entschlüsselung
 | |
|                   \item
 | |
|                         Bei einem zufälligen Chiffretext \$c=E(+K, m)\$ und \$+K\$ sollte es
 | |
|                         nicht möglich sein, \$m = D(-K, c) = D(-K, E(+K, m))\$ zu berechnen.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dies impliziert, dass die Berechnung von \$-K\$ bei \$+K\$ nicht
 | |
|                                   möglich sein sollte.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Der Schlüssel \$-K\$ ist nur einer Entität A bekannt und wird A's
 | |
|                         privater Schlüssel \$-K\_A\$ genannt
 | |
|                   \item
 | |
|                         Der Schlüssel \$+K\$ kann öffentlich bekannt gegeben werden und wird
 | |
|                         A's öffentlicher Schlüssel \$+K\_A\$ genannt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Anwendungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verschlüsselung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wenn B eine Nachricht mit dem öffentlichen Schlüssel \$+K\_A\$ von
 | |
|                                   A verschlüsselt, kann er sicher sein, dass nur A sie mit \$-K\_A\$
 | |
|                                   entschlüsseln kann.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Signieren:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wenn A eine Nachricht mit seinem eigenen privaten Schlüssel
 | |
|                                   \$-K\_A\$ verschlüsselt, kann jeder diese Signatur verifizieren,
 | |
|                                   indem er sie mit A's öffentlichem Schlüssel \$+K\_A\$
 | |
|                                   entschlüsselt
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Achtung! Entscheidend ist, dass jeder nachprüfen kann, dass er
 | |
|                         wirklich den öffentlichen Schlüssel von A kennt und nicht den
 | |
|                         Schlüssel eines Gegners!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Entwurf von asymmetrischen Kryptosystemen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schwierigkeit: Finde einen Algorithmus und eine Methode, zwei
 | |
|                         Schlüssel \$-K\$, \$+K\$ so zu konstruieren, dass es nicht möglich
 | |
|                         ist, \$E(+K, m)\$ mit der Kenntnis von \$+K\$ zu entschlüsseln
 | |
|                   \item
 | |
|                         Beschränkungen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die Schlüssellänge sollte ,,überschaubar'' sein
 | |
|                             \item
 | |
|                                   Verschlüsselte Nachrichten sollten nicht beliebig länger sein als
 | |
|                                   unverschlüsselte Nachrichten (wir würden einen kleinen konstanten
 | |
|                                   Faktor tolerieren)
 | |
|                             \item
 | |
|                                   Ver- und Entschlüsselung sollten nicht zu viele Ressourcen
 | |
|                                   verbrauchen (Zeit, Speicher)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Grundlegende Idee: Man nehme ein Problem aus dem Bereich der
 | |
|                         Mathematik/Informatik, das schwer zu lösen ist, wenn man nur \$+K\$
 | |
|                         kennt, aber leicht zu lösen, wenn man \$-K\$ kennt
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Knapsack-Probleme: Grundlage der ersten funktionierenden
 | |
|                                   Algorithmen, die sich leider fast alle als unsicher erwiesen haben
 | |
|                             \item
 | |
|                                   Faktorisierungsproblem: Grundlage des RSA-Algorithmus
 | |
|                             \item
 | |
|                                   Diskreter-Logarithmus-Problem: Grundlage von Diffie-Hellman und
 | |
|                                   ElGamal
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Einige mathematische
 | |
|         Hintergründe}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Sei \$\textbackslash mathbb\{Z\}\$ die Menge der ganzen Zahlen, und
 | |
|               \$a,b,n\textbackslash in\textbackslash mathbb\{Z\}\$
 | |
|         \item
 | |
|               Wir sagen, \$a\$ teilt \$b(a\textbar b)\$, wenn es eine ganze Zahl
 | |
|               \$k\textbackslash in\textbackslash mathbb\{Z\}\$ gibt, so dass
 | |
|               \$a\textbackslash times k=b\$
 | |
|         \item
 | |
|               \$a\$ ist prim, wenn es positiv ist und die einzigen Teiler von a
 | |
|               \$1\$ und \$a\$ sind.
 | |
|         \item
 | |
|               \$r\$ ist der Rest von a geteilt durch \$n\$, wenn
 | |
|               \$r=a-\textbackslash lfloor a / n
 | |
|               \textbackslash rfloor\textbackslash times n\$, wobei
 | |
|               \$\textbackslash lfloor x\textbackslash rfloor\$ die größte ganze Zahl
 | |
|               kleiner oder gleich \$x\$ ist.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiel: 4 ist der Rest von 11 geteilt durch 7 als
 | |
|                         \$4=11-\textbackslash lfloor
 | |
|                         11/7\textbackslash rfloor\textbackslash times 7\$
 | |
|                   \item
 | |
|                         Wir können dies auch anders schreiben: \$a=q\textbackslash times n +
 | |
|                         r\$ mit \$q=\textbackslash lfloor a/n\textbackslash rfloor\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Für den Rest \$r\$ der Division von a durch n schreiben wir
 | |
|               \$a\textbackslash{} MOD\textbackslash{} n\$
 | |
|         \item
 | |
|               Wir sagen, b ist kongruent \$a\textbackslash{} mod\textbackslash{}
 | |
|               n\$, wenn es bei der Division durch n den gleichen Rest wie a hat.
 | |
|               Also teilt n \$(a-b)\$, und wir schreiben \$b\textbackslash equiv
 | |
|               a\textbackslash{} mod\textbackslash{} n\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiele: \$4\textbackslash equiv 11\textbackslash{}
 | |
|                         mod\textbackslash{} 7\$, \$25\textbackslash equiv 11\textbackslash{}
 | |
|                         mod\textbackslash{} 7\$, \$11\textbackslash equiv 25\textbackslash{}
 | |
|                         mod\textbackslash{} 7\$, \$11\textbackslash equiv 4\textbackslash{}
 | |
|                         mod\textbackslash{} 7\$, \$-10\textbackslash equiv 4\textbackslash{}
 | |
|                         mod\textbackslash{} 7\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Da der Rest r der Division durch n immer kleiner als n ist, stellt man
 | |
|               manchmal die Menge \$\{x\textbackslash{} MOD\textbackslash{} n
 | |
|               \textbar{} x\textbackslash in\textbackslash mathbb\{Z\}\}\$ durch
 | |
|               Elemente der Menge \$\textbackslash mathbb\{Z\}\_n=\{0, 1, ...,
 | |
|               n-1\}\$ dar
 | |
|     \end{itemize}
 | |
| 
 | |
|     %\begin{longtable}[]{@{}ll@{}}
 | |
|     %    \toprule
 | |
|     %    Eigenschaft       & Ausdruck\tabularnewline
 | |
|     %    \midrule
 | |
|     %    \endhead
 | |
|     %    Kommutativgesetze & \$(a + b)\textbackslash{} MOD\textbackslash{} n = (b
 | |
|     %    + a)\textbackslash{} MOD\textbackslash{} n\$\tabularnewline
 | |
|     %                      & \$(a \textbackslash times b)\textbackslash{} MOD\textbackslash{} n =
 | |
|     %    (b \textbackslash times a)\textbackslash{} MOD\textbackslash{}
 | |
|     %    n\$\tabularnewline
 | |
|     %    Assoziativgesetze & \${[}(a + b) + c{]}\textbackslash{}
 | |
|     %    MOD\textbackslash{} n = {[}a + (b + c){]}\textbackslash{}
 | |
|     %    MOD\textbackslash{} n\$\tabularnewline
 | |
|     %                      & \${[}(a \textbackslash times b) \textbackslash times
 | |
|     %    c{]}\textbackslash{} MOD\textbackslash{} n = {[}a \textbackslash times
 | |
|     %    (b \textbackslash times c){]}\textbackslash{} MOD\textbackslash{}
 | |
|     %    n\$\tabularnewline
 | |
|     %    Distributivgesetz & \${[}a \textbackslash times (b +
 | |
|     %    c){]}\textbackslash{} MOD\textbackslash{} n = {[}(a \textbackslash times
 | |
|     %    b) + (a \textbackslash times c){]}\textbackslash{} MOD\textbackslash{}
 | |
|     %    n\$\tabularnewline
 | |
|     %    Identitäten       & \$(0 + a)\textbackslash{} MOD\textbackslash{} n =
 | |
|     %    a\textbackslash{} MOD\textbackslash{} n\$\tabularnewline
 | |
|     %                      & \$(1 \textbackslash times a)\textbackslash{} MOD\textbackslash{} n =
 | |
|     %    a\textbackslash{} MOD\textbackslash{} n\$\tabularnewline
 | |
|     %    Inverse           & \$\textbackslash forall a \textbackslash in
 | |
|     %    \textbackslash mathbb\{Z\}n: \textbackslash exists (-a)
 | |
|     %    \textbackslash in \textbackslash mathbb\{Z\}n : a + (-a)
 | |
|     %    \textbackslash equiv 0\textbackslash{} mod\textbackslash{}
 | |
|     %    n\$\tabularnewline
 | |
|     %                      & p is prime \$\textbackslash Rightarrow \textbackslash forall a
 | |
|     %    \textbackslash in \textbackslash mathbb\{Z\}p: \textbackslash exists
 | |
|     %    (a-1) \textbackslash in \textbackslash mathbb\{Z\}p: a
 | |
|     %    \textbackslash times (a-1) \textbackslash equiv 1\textbackslash{}
 | |
|     %    mod\textbackslash{} p\$\tabularnewline
 | |
|     %    \bottomrule
 | |
|     %\end{longtable}
 | |
| 
 | |
|     Größter gemeinsamer Teiler
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               \$c = gcd(a, b) :\textbackslash Leftrightarrow ( c \textbar{} a)
 | |
|               \textbackslash wedge ( c \textbar{} b) \textbackslash wedge
 | |
|               {[}\textbackslash forall d: ( d \textbar{} a ) \textbackslash wedge (
 | |
|               d \textbar{} b) \textbackslash Rightarrow ( d \textbar{} c ){]}\$ und
 | |
|               \$gcd(a, 0 ) : = \textbar{} a \textbar\$
 | |
|         \item
 | |
|               Der gcd-Rekursionssatz :
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$\textbackslash forall a, b \textbackslash in
 | |
|                         \textbackslash mathbb\{Z\}\^{}+: gcd(a, b) = gcd(b,
 | |
|                         a\textbackslash{} MOD\textbackslash{} b)\$
 | |
|                   \item
 | |
|                         Beweis:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Da \$gcd(a, b)\$ sowohl a als auch b teilt, teilt es auch jede
 | |
|                                   Linearkombination von ihnen, insbesondere \$(a-
 | |
|                                   \textbackslash lfloor a / b \textbackslash rfloor
 | |
|                                   \textbackslash times b) = a\textbackslash{} MOD\textbackslash{}
 | |
|                                   b\$, also \$gcd(a, b) \textbar{} gcd(b, a\textbackslash{}
 | |
|                                   MOD\textbackslash{} b)\$
 | |
|                             \item
 | |
|                                   Da \$gcd(b, a\textbackslash{} MOD\textbackslash{} b)\$ sowohl b
 | |
|                                   als auch \$a\textbackslash{} MOD\textbackslash{} b\$ teilt, teilt
 | |
|                                   es auch jede Linearkombination von beiden, insbesondere
 | |
|                                   \$\textbackslash lfloor a / b \textbackslash rfloor
 | |
|                                   \textbackslash times b + (a\textbackslash{} MOD\textbackslash{} b)
 | |
|                                   = a\$, also \$gcd(b, a\textbackslash{} MOD\textbackslash{} b)
 | |
|                                   \textbar{} gcd(a, b)\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Euklidischer Algorithmus:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der euklidische Algorithmus berechnet aus a, b \$gcd(a, b)\$
 | |
|               \end{itemize}
 | |
| 
 | |
|               %\begin{Shaded}
 | |
|               %    \begin{Highlighting}[]
 | |
|               %        \DataTypeTok{int}\NormalTok{ Euclid(}\DataTypeTok{int}\NormalTok{ a, b)\{}
 | |
|               %        \ControlFlowTok{if}\NormalTok{ (b = }\DecValTok{0}\NormalTok{) \{ }\ControlFlowTok{return}\NormalTok{(a); \}}
 | |
|               %        \NormalTok{  \{}\ControlFlowTok{return}\NormalTok{(Euclid(b, a\textbackslash{} MOD\textbackslash{} b);\} }
 | |
|               %        \NormalTok{\}}
 | |
|               %    \end{Highlighting}
 | |
|               %\end{Shaded}
 | |
|         \item
 | |
|               Erweiterter euklidischer Algorithmus:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Algorithmus ExtendedEuclid berechnet für a, b d, m, n so, dass:
 | |
|                         \$d = gcd(a, b) = m \textbackslash times a + n \textbackslash times
 | |
|                         b\$
 | |
|               \end{itemize}
 | |
| 
 | |
|               %\begin{Shaded}
 | |
|               %    \begin{Highlighting}[]
 | |
|               %        \KeywordTok{struct}\NormalTok{\{}\DataTypeTok{int}\NormalTok{ d, m, n\} ExtendedEuclid(}\DataTypeTok{int}\NormalTok{ a, b)}
 | |
|               %%        \NormalTok{\{ }\DataTypeTok{int}\NormalTok{ d, d}\CharTok{\textquotesingle{},}\ErrorTok{ m, m}\CharTok{\textquotesingle{}}\NormalTok{, n, n}\CharTok{\textquotesingle{};}
 | |
|               %        \ControlFlowTok{if}\NormalTok{ (b = }\DecValTok{0}\NormalTok{) \{}\ControlFlowTok{return}\NormalTok{(a, }\DecValTok{1}\NormalTok{, }\DecValTok{0}\NormalTok{); \}}
 | |
|               %        \NormalTok{  (d}\CharTok{\textquotesingle{},}\ErrorTok{ m}\CharTok{\textquotesingle{}}\NormalTok{, n}\CharTok{\textquotesingle{})}\ErrorTok{ = ExtendedEuclid(b, a MOD b);}
 | |
|               %        \NormalTok{  (d, m, n) = (d}\CharTok{\textquotesingle{},}\ErrorTok{ n}\CharTok{\textquotesingle{}}\NormalTok{, m}\CharTok{\textquotesingle{} }\ErrorTok{{-} \textbackslash{}lfloor a / b \textbackslash{}rfloor \textbackslash{}times n}\CharTok{\textquotesingle{}}\NormalTok{);}
 | |
|               %        \ControlFlowTok{return}\NormalTok{(d, m, n); \}}
 | |
|               %    \end{Highlighting}
 | |
|               %\end{Shaded}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beweis: (durch Induktion)
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Grundfall \$(a,0): gcd(a, 0) = a = 1 \textbackslash times a + 0
 | |
|                                   \textbackslash times 0\$
 | |
|                             \item
 | |
|                                   Induktion von \$(b, a\textbackslash{} MOD\textbackslash{} b)\$ auf
 | |
|                                   \$(a, b)\$:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             ExtendedEuclid berechnet \$d', m', n'\$ korrekt
 | |
|                                             (Induktionshypothese)
 | |
|                                       \item
 | |
|                                             \$d=d'=m'\textbackslash times b+n'\textbackslash times
 | |
|                                             (a\textbackslash{} MOD\textbackslash{} b)=m'\textbackslash times
 | |
|                                             b+n'\textbackslash times (a-\textbackslash lfloor
 | |
|                                             a/b\textbackslash rfloor\textbackslash times
 | |
|                                             b)=n'\textbackslash times a+(m'-\textbackslash lfloor
 | |
|                                             a/b\textbackslash rfloor\textbackslash times
 | |
|                                             n')\textbackslash times b\$
 | |
|                                   \end{itemize}
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Laufzeit von \$Euclid(a, b)\$ und \$ExtendedEuclid(a, b)\$ ist
 | |
|                         von \$O(log\textbackslash{} b)\$
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Beweis: siehe {[}Cor90a{]}, Abschnitt 33.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Lemma 1: Sei \$a,b\textbackslash in\textbackslash mathbb\{N\}\$ und
 | |
|                         \$d=gcd(a,b)\$. Dann gibt es
 | |
|                         \$m,n\textbackslash in\textbackslash mathbb\{N\}\$ so, dass:
 | |
|                         \$d=m\textbackslash times a+n \textbackslash times b\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Theorem 1 (Euklid): Wenn eine Primzahl das Produkt zweier ganzer
 | |
|               Zahlen teilt, dann teilt sie mindestens eine der ganzen Zahlen:
 | |
|               \$p\textbar(a\textbackslash times b)\textbackslash Rightarrow
 | |
|               (p\textbar a)\textbackslash times(p\textbar b)\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Beweis: Es sei \$p\textbar(a\textbackslash times b)\$
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wenn \$p\textbar a\$ dann sind wir fertig.
 | |
|                             \item
 | |
|                                   Wenn nicht, dann \$gcd(p,a) = 1
 | |
|                                   \textbackslash Rightarrow\textbackslash exists m,
 | |
|                                   n\textbackslash in\textbackslash mathbb\{N\}:1=m\textbackslash times
 | |
|                                   p+n\textbackslash times a \textbackslash Leftrightarrow
 | |
|                                   b=m\textbackslash times p \textbackslash times b + n
 | |
|                                   \textbackslash times a \textbackslash times b\$
 | |
|                             \item
 | |
|                                   Da \$p\textbar(a\textbackslash times b)\$, teilt p beide Summanden
 | |
|                                   der Gleichung und somit auch die Summe, die b ist
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Theorem 2 (Fundamentalsatz der Arithmetik): Die Faktorisierung in
 | |
|               Primzahlen ist bis zur Ordnung eindeutig.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Beweis:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wir werden zeigen, dass jede ganze Zahl mit einer nicht
 | |
|                                   eindeutigen Faktorisierung einen eigenen Teiler mit einer nicht
 | |
|                                   eindeutigen Faktorisierung hat, was zu einem klaren Widerspruch
 | |
|                                   führt, wenn wir schließlich auf eine Primzahl reduziert haben.
 | |
|                             \item
 | |
|                                   Nehmen wir an, dass n eine ganze Zahl mit einer nicht eindeutigen
 | |
|                                   Faktorisierung ist: \$n=p\_1\textbackslash times
 | |
|                                   p\_2\textbackslash times ...\textbackslash times p\_r=q\_1
 | |
|                                   \textbackslash times q\_2\textbackslash times ...
 | |
|                                   \textbackslash times q\_s\$. Die Primzahlen sind nicht
 | |
|                                   notwendigerweise verschieden, aber die zweite Faktorisierung ist
 | |
|                                   nicht einfach eine Umordnung der ersten. Da \$p\_1\$ n dividiert,
 | |
|                                   dividiert es auch das Produkt \$q\_1\textbackslash times
 | |
|                                   q\_2\textbackslash times ... \textbackslash times q\_s\$. Durch
 | |
|                                   wiederholte Anwendung von Satz 1 zeigen wir, dass es mindestens
 | |
|                                   ein \$q\_i\$ gibt, das durch \$p\_1\$ teilbar ist. Gegebenenfalls
 | |
|                                   ordnen wir die \$q\_i\$'s so, dass es \$q\_1\$ ist. Da sowohl
 | |
|                                   \$p\_1\$ als auch \$q\_1\$ Primzahlen sind, müssen sie gleich
 | |
|                                   sein. Wir können also durch \$p\_1\$ dividieren und haben, dass
 | |
|                                   \$n/p\_1\$ eine nicht-eindeutige Faktorisierung hat.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Wir verwenden Theorem 2, um die folgende Korollarie 1 zu beweisen
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wenn \$gcd(c,m)=1\$ und \$(a\textbackslash times
 | |
|                                   c)\textbackslash equiv(b\textbackslash times c)mod\textbackslash{}
 | |
|                                   m\$, dann \$a\textbackslash equiv b\textbackslash{}
 | |
|                                   mod\textbackslash{} m\$
 | |
|                             \item
 | |
|                                   Der Beweis: Da \$(a\textbackslash times
 | |
|                                   c)\textbackslash equiv(b\textbackslash times c)mod\textbackslash{}
 | |
|                                   m\textbackslash Rightarrow\textbackslash exists
 | |
|                                   n\textbackslash in\textbackslash mathbb\{N\}:(a\textbackslash times
 | |
|                                   c)-(b\textbackslash times c)=n\textbackslash times m\$
 | |
|                             \item
 | |
|                                   \$\textbackslash Leftrightarrow ( a - b ) \textbackslash times c =
 | |
|                                   n \textbackslash times m\$
 | |
|                             \item
 | |
|                                   \$\textbackslash Leftrightarrow p\_1\textbackslash times
 | |
|                                   ...\textbackslash times p\_i\textbackslash times
 | |
|                                   q\_1\textbackslash times ...\textbackslash times
 | |
|                                   q\_j=r\_1\textbackslash times ...\textbackslash times
 | |
|                                   r\_k\textbackslash times s\_1\textbackslash times
 | |
|                                   ...\textbackslash times s\_l\$
 | |
|                             \item
 | |
|                                   Man beachte, dass die \$p\$'s, \$q\$'s, \$r\$'s und \$s\$'s
 | |
|                                   Primzahlen sind und nicht verschieden sein müssen, aber da
 | |
|                                   \$gcd(c,m)=1\$, gibt es keine Indizes g, h, so dass \$q\_g =
 | |
|                                   s\_h\$.
 | |
|                             \item
 | |
|                                   Wir können also die Gleichung fortlaufend durch alle q's teilen,
 | |
|                                   ohne jemals ein \$s\$ zu ,,eliminieren'' und erhalten schließlich
 | |
|                                   etwas wie \$\textbackslash Leftrightarrow p\_1\textbackslash times
 | |
|                                   ...\textbackslash times p\_i=r\_1\textbackslash times
 | |
|                                   ...\textbackslash times r\_o\textbackslash times
 | |
|                                   s\_1\textbackslash times ...\textbackslash times s\_l\$ (beachten
 | |
|                                   Sie, dass es weniger r's geben wird)
 | |
|                             \item
 | |
|                                   \$\textbackslash Leftrightarrow(a-b)=r\_1\textbackslash times
 | |
|                                   ...\textbackslash times r\_o\textbackslash times
 | |
|                                   m\textbackslash Rightarrow a \textbackslash equiv
 | |
|                                   b\textbackslash{} mod\textbackslash{} m\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Bezeichne \$\textbackslash phi(n)\$ die Anzahl der positiven ganzen
 | |
|                         Zahlen, die kleiner als n und relativ zu n prim sind
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Beispiele: \$\textbackslash phi(4) = 2\$,
 | |
|                                   \textbackslash phi(6)=2\$, \$\textbackslash phi(7)=6\$,
 | |
|                                   \$\textbackslash phi(15)=8\$
 | |
|                             \item
 | |
|                                   Wenn p eine Primzahl ist
 | |
|                                   \$\textbackslash Rightarrow\textbackslash phi(p)=p-1\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Theorem 3 (Euler): Seien n und b positive und relativ primäre ganze
 | |
|               Zahlen, d.h. \$gcd(n, b) = 1 \textbackslash Rightarrow b
 | |
|               \textbackslash phi(n) \textbackslash equiv 1\textbackslash{}
 | |
|               mod\textbackslash{} n\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beweis:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Sei \$t=\textbackslash phi(n)\$ und \$a\_1,...a\_t\$ seien die
 | |
|                                   positiven ganzen Zahlen kleiner als \$n\$, die relativ zu \$n\$
 | |
|                                   prim sind. Definieren Sie \$r\_1,...,r\_t\$ als die Residuen von
 | |
|                                   \$b\textbackslash times a\_1\textbackslash{} mod\textbackslash{} n
 | |
|                                   , ..., b\textbackslash times a\_t\textbackslash{}
 | |
|                                   mod\textbackslash{} n\$, d.h.: \$b\textbackslash times a\_i
 | |
|                                   \textbackslash equiv r\_i\textbackslash{} mod\textbackslash{} n\$.
 | |
|                             \item
 | |
|                                   Beachten Sie, dass \$i\textbackslash not= j
 | |
|                                   \textbackslash Rightarrow r\_i\textbackslash not= r\_j\$. Wäre
 | |
|                                   dies nicht der Fall, hätten wir \$b\textbackslash times
 | |
|                                   a\_i\textbackslash equiv b\textbackslash times
 | |
|                                   a\_j\textbackslash{} mod\textbackslash{} n\$ und da
 | |
|                                   \$gcd(b,n)=1\$, würde Korollar 1 \$a\_i\textbackslash equiv
 | |
|                                   a\_j\textbackslash{} mod\textbackslash{} n\$ implizieren, was
 | |
|                                   nicht sein kann, da \$a\_i\$ und \$a\_j\$ per Definition
 | |
|                                   verschiedene ganze Zahlen zwischen 0 und n sind
 | |
|                             \item
 | |
|                                   Wir wissen auch, dass jedes \$r\_i\$ relativ prim zu n ist, denn
 | |
|                                   jeder gemeinsame Teiler k von \$r\_i\$ und \$n\$ , d.h.
 | |
|                                   \$n=k\textbackslash times m\$ und \$r\_i=p\_i\textbackslash times
 | |
|                                   k\$, müsste auch \$a\_i\$ teilen,
 | |
|                             \item
 | |
|                                   da \$b\textbackslash times a\_i\$gleich (p\_i\textbackslash times
 | |
|                                   k)\textbackslash{} mod\textbackslash{} (k\textbackslash times
 | |
|                                   m)\textbackslash Rightarrow\textbackslash exists
 | |
|                                   s\textbackslash in\textbackslash mathbb\{N\}:(b\textbackslash times
 | |
|                                   a\_i)-(p\_i\textbackslash times k)=s\textbackslash times
 | |
|                                   k\textbackslash times m \textbackslash Leftrightarrow
 | |
|                                   (b\textbackslash times a\_i)=s\textbackslash times
 | |
|                                   k\textbackslash times m+(p\_i\textbackslash times k)\$
 | |
|                             \item
 | |
|                                   Da k jeden der Summanden auf der rechten Seite dividiert und k
 | |
|                                   nicht durch b dividiert (n und b sind relativ prim), müsste es
 | |
|                                   auch \$a\_i\$ dividieren, das relativ prim zu n sein soll
 | |
|                             \item
 | |
|                                   Somit ist \$r\_1, ...,r\_t\$ eine Menge von
 | |
|                                   \$\textbackslash phi(n)\$ verschiedenen ganzen Zahlen, die relativ
 | |
|                                   prim zu \$n\$ sind. Das bedeutet, dass sie genau dasselbe sind wie
 | |
|                                   \$a\_1,...a\_t\$, nur dass sie in einer anderen Reihenfolge
 | |
|                                   stehen. Insbesondere wissen wir, dass \$r\_1\textbackslash times
 | |
|                                   ...\textbackslash times r\_t=a\_1\textbackslash times
 | |
|                                   ...\textbackslash times a\_t\$
 | |
|                             \item
 | |
|                                   Wir verwenden nun die Kongruenz \$r\_1\textbackslash times
 | |
|                                   ...\textbackslash times r\_t\textbackslash equiv
 | |
|                                   b\textbackslash times a\_1\textbackslash times
 | |
|                                   ...\textbackslash times b\textbackslash times a\_t\textbackslash{}
 | |
|                                   mod\textbackslash{} n\$ \$\textbackslash Leftrightarrow
 | |
|                                   r\_1\textbackslash times ...\textbackslash times
 | |
|                                   r\_t\textbackslash equiv b\_t\textbackslash times
 | |
|                                   a\_1\textbackslash times ...\textbackslash times
 | |
|                                   a\_t\textbackslash{} mod\textbackslash{} n\$
 | |
|                                   \$\textbackslash Leftrightarrow r\_1\textbackslash times
 | |
|                                   ...\textbackslash times r\_t\textbackslash equiv
 | |
|                                   b\_\textbackslash times r\_1\textbackslash times
 | |
|                                   ...\textbackslash times r\_t\textbackslash{} mod\textbackslash{}
 | |
|                                   n\$
 | |
|                             \item
 | |
|                                   Da alle \$r\_i\$ relativ prim zu \$n\$ sind, können wir Korollar 1
 | |
|                                   anwenden und durch ihr Produkt dividieren: \$1\textbackslash equiv
 | |
|                                   b\_t\textbackslash{} mod\textbackslash{} n
 | |
|                                   \textbackslash Leftrightarrow 1\textbackslash equiv
 | |
|                                   b\textbackslash phi(n)\textbackslash{} mod n\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Satz 4 (Chinese Remainder Theorem):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Seien \$m\_1,...,m\_r\$ positive ganze Zahlen, die paarweise relativ
 | |
|                         prim sind,
 | |
|                   \item
 | |
|                         d.h. \$ganz i\textbackslash not= j:gcd(m\_i, m\_j) = 1\$. Seien
 | |
|                         \$a\_1,...,a\_r\$ beliebige ganze Zahlen.
 | |
|                   \item
 | |
|                         Dann gibt es eine ganze Zahl a derart, dass:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   \$a\textbackslash equiv a\_1\textbackslash{} mod\textbackslash{}
 | |
|                                   m\_1\$
 | |
|                             \item
 | |
|                                   \$a\textbackslash equiv a\_2\textbackslash{} mod\textbackslash{}
 | |
|                                   m\_2\$
 | |
|                             \item
 | |
|                                   ...
 | |
|                             \item
 | |
|                                   \$a\textbackslash equiv a\_r\textbackslash{} mod\textbackslash{}
 | |
|                                   m\_r\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Außerdem ist a eindeutig modulo \$M := m\_1\textbackslash times
 | |
|                         ...\textbackslash times m\_r\$
 | |
|                   \item
 | |
|                         Beweis:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Für alle \$i\textbackslash in\{1,...,r\}\$ definieren wir
 | |
|                                   \$M\_i:=(M/m\_i)\textbackslash phi(m\_i)\$
 | |
|                             \item
 | |
|                                   Da \$M\_i\$ per Definition relativ prim zu \$m\_i\$ ist, können
 | |
|                                   wir Theorem 3 anwenden und wissen, dass \$M\_i\textbackslash equiv
 | |
|                                   1\textbackslash{} mod\textbackslash{} m\_i\$
 | |
|                             \item
 | |
|                                   Da \$M\_i\$ durch \$m\_j\$ für jedes \$j\textbackslash not= i\$
 | |
|                                   teilbar ist, haben wir \$\textbackslash forall
 | |
|                                   j\textbackslash not= i:M\_i\textbackslash equiv 0\textbackslash{}
 | |
|                                   mod\textbackslash{} m\_j\$
 | |
|                             \item
 | |
|                                   Wir können nun die Lösung konstruieren, indem wir definieren:
 | |
|                                   \$a:= a\_1\textbackslash times M\_1+a\_2\textbackslash times
 | |
|                                   M\_2+...+a\_r\textbackslash times M\_r\$
 | |
|                             \item
 | |
|                                   Die beiden oben angeführten Argumente bezüglich der Kongruenzen
 | |
|                                   der \$M\_i\$ implizieren, dass a tatsächlich alle Kongruenzen
 | |
|                                   erfüllt.
 | |
|                             \item
 | |
|                                   Um zu sehen, dass a eindeutig modulo \$M\$ ist, sei b eine
 | |
|                                   beliebige andere ganze Zahl, die die r Kongruenzen erfüllt. Da
 | |
|                                   \$a\textbackslash equiv c\textbackslash{} mod\textbackslash{} n\$
 | |
|                                   und \$b\textbackslash equiv c\textbackslash{} mod\textbackslash{}
 | |
|                                   n \textbackslash Rightarrow a \textbackslash equiv
 | |
|                                   b\textbackslash{} mod\textbackslash{} n\$ haben wir
 | |
|                                   \$\textbackslash forall
 | |
|                                   i\textbackslash in\{1,...,r\}:a\textbackslash equiv
 | |
|                                   b\textbackslash{} mod\textbackslash{}
 | |
|                                   m\_i\textbackslash Rightarrow\textbackslash forall
 | |
|                                   i\textbackslash in\{1,. ...,r\}:m\_i\textbar(a-b)
 | |
|                                   \textbackslash Rightarrow M\textbar(a-b)\$, da die \$m\_i\$
 | |
|                                   paarweise relativ prim sind \$\textbackslash Leftrightarrow
 | |
|                                   a\textbackslash equiv b\textbackslash{} mod\textbackslash{} M\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Lemma 2:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn \$gcd(m,n)=1\$, dann ist
 | |
|                         \$\textbackslash phi(m\textbackslash times
 | |
|                         n)=\textbackslash phi(m)\textbackslash times \textbackslash phi(n)\$
 | |
|                   \item
 | |
|                         Der Beweis:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Sei a eine positive ganze Zahl, die kleiner als und relativ prim
 | |
|                                   zu \$m\textbackslash times n\$ ist. Mit anderen Worten: a ist eine
 | |
|                                   der ganzen Zahlen, die von
 | |
|                                   \$\textbackslash phi(m\textbackslash times n)\$ gezählt werden.
 | |
|                             \item
 | |
|                                   Betrachten Sie die Entsprechung
 | |
|                                   \$a\textbackslash rightarrow(a\textbackslash{} MOD\textbackslash{}
 | |
|                                   m, a\textbackslash{} MOD\textbackslash{} n)\$. Die ganze Zahl a
 | |
|                                   ist relativ prim zu m und relativ prim zu n (andernfalls würde sie
 | |
|                                   \$m \textbackslash times n\$ teilen). Also ist
 | |
|                                   \$(a\textbackslash{} MOD\textbackslash{} m)\$ relativ prim zu m
 | |
|                                   und \$(a\textbackslash{} MOD\textbackslash{} n)\$ ist relativ prim
 | |
|                                   zu n, da: \$a=\textbackslash lfloor
 | |
|                                   a/m\textbackslash rfloor\textbackslash times m +
 | |
|                                   (a\textbackslash{} MOD\textbackslash{} m)\$, wenn es also einen
 | |
|                                   gemeinsamen Teiler von \$m\$ und \$(a\textbackslash{}
 | |
|                                   MOD\textbackslash{} m)\$ gäbe, würde dieser Teiler auch a teilen.
 | |
|                                   Somit entspricht jede Zahl a, die durch
 | |
|                                   \$\textbackslash phi(m\textbackslash times n )\$ gezählt wird,
 | |
|                                   einem Paar von zwei ganzen Zahlen \$(a\textbackslash{}
 | |
|                                   MOD\textbackslash{} m,a\textbackslash{} MOD\textbackslash{} n)\$,
 | |
|                                   wobei die erste durch \$\textbackslash phi(m)\$ und die zweite
 | |
|                                   durch \$\textbackslash phi(n)\$ gezählt wird.
 | |
|                             \item
 | |
|                                   Aufgrund des zweiten Teils von Satz 4 ist die Einzigartigkeit der
 | |
|                                   Lösung \$a\textbackslash{} mod\textbackslash{}
 | |
|                                   (m\textbackslash times n)\$ der simultanen Kongruenzen: \$a
 | |
|                                   \textbackslash equiv(a\textbackslash{} mod\textbackslash{}
 | |
|                                   m)\textbackslash{} mod\textbackslash{} m\$ \$a
 | |
|                                   \textbackslash equiv(a\textbackslash{} MOD\textbackslash{}
 | |
|                                   n)\textbackslash{} mod\textbackslash{} n\$ können wir ableiten,
 | |
|                                   dass verschiedene ganze Zahlen, die durch
 | |
|                                   \$\textbackslash phi(m\textbackslash times n)\$ gezählt werden,
 | |
|                                   verschiedenen Paaren entsprechen:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             Um dies zu sehen, nehmen wir an, dass \$a\textbackslash not=b\$,
 | |
|                                             gezählt durch \$\textbackslash phi(m\textbackslash times n)\$,
 | |
|                                             demselben Paar \$(a\textbackslash{} MOD\textbackslash{} m,
 | |
|                                             a\textbackslash{} MOD\textbackslash{} n)\$ entspricht. Dies
 | |
|                                             führt zu einem Widerspruch, da b auch die Kongruenzen erfüllen
 | |
|                                             würde: \$b\textbackslash equiv (a\textbackslash{}
 | |
|                                             MOD\textbackslash{} m)\textbackslash{} mod\textbackslash{} m\$
 | |
|                                             \$b\textbackslash equiv (a\textbackslash{} MOD\textbackslash{}
 | |
|                                             n)\textbackslash{} mod\textbackslash{} n\$ aber die Lösung
 | |
|                                             dieser Kongruenzen ist eindeutig modulo \$(m
 | |
|                                             \textbackslash times n)\$
 | |
|                                       \item
 | |
|                                             Daher ist \$\textbackslash phi(m \textbackslash times n)\$
 | |
|                                             höchstens die Anzahl solcher Paare: \$\textbackslash phi(m
 | |
|                                             \textbackslash times n)\textbackslash leq
 | |
|                                             \textbackslash phi(m)\textbackslash times
 | |
|                                             \textbackslash phi(n)\$
 | |
|                                   \end{itemize}
 | |
|                             \item
 | |
|                                   Betrachten wir nun ein Paar von ganzen Zahlen \$(b,c)\$, von denen
 | |
|                                   eine mit \$\textbackslash phi(m)\$ und die andere mit
 | |
|                                   \$\textbackslash phi(n)\$ gezählt wird: Mit Hilfe des ersten Teils
 | |
|                                   von Satz 4 können wir eine einzige positive ganze Zahl a
 | |
|                                   konstruieren, die kleiner als und relativ prim zu
 | |
|                                   \$m\textbackslash times n\$ ist: \$a\textbackslash equiv
 | |
|                                   b\textbackslash{} mod\textbackslash{} m\$ und
 | |
|                                   \$a\textbackslash equiv c\textbackslash{} mod\textbackslash{} n\$.
 | |
|                                   Die Anzahl solcher Paare ist also höchstens \$\textbackslash phi(m
 | |
|                                   \textbackslash times n):\textbackslash phi(m \textbackslash times
 | |
|                                   n)\textbackslash leq\textbackslash phi(m)\textbackslash times\textbackslash phi(n)\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Der RSA Public Key
 | |
|         Algorithmus}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der RSA-Algorithmus wurde 1977 von R. Rivest, A. Shamir und L. Adleman
 | |
|               {[}RSA78{]} erfunden und basiert auf Theorem 3.
 | |
|         \item
 | |
|               Seien \$p, q\$ verschiedene große Primzahlen und
 | |
|               \$n=p\textbackslash times q\$. Nehmen wir an, wir haben auch zwei
 | |
|               ganze Zahlen e und d, so dass: \$d\textbackslash times e
 | |
|               \textbackslash equiv 1\textbackslash{} mod\textbackslash{}
 | |
|               \textbackslash phi(n)\$
 | |
|         \item
 | |
|               M sei eine ganze Zahl, die die zu verschlüsselnde Nachricht darstellt,
 | |
|               wobei M positiv, kleiner als und relativ prim zu n ist.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiel: Verschlüsseln mit = 99, A = 10, B = 11, ..., Z = 35. Somit
 | |
|                         würde ,,HELLO'' als 1714212124 kodiert werden. Falls erforderlich,
 | |
|                         ist M in Blöcke kleinerer Nachrichten aufzuteilen: 17142 12124
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zum Verschlüsseln berechnen Sie: \$E = M\^{}e\textbackslash{}
 | |
|               MOD\textbackslash{} n\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Dies kann mit dem Quadrat- und Multiplikationsalgorithmus effizient
 | |
|                         durchgeführt werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zum Entschlüsseln berechnet man: \$M'=E\^{}d\textbackslash{}
 | |
|               MOD\textbackslash{} n\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Da \$d\textbackslash times e\textbackslash equiv 1\textbackslash{}
 | |
|                         mod\textbackslash{}
 | |
|                         \textbackslash phi(n)\textbackslash Rightarrow\textbackslash exists
 | |
|                         k\textbackslash in\textbackslash mathbb\{Z\}:(d\textbackslash times
 | |
|                         e)-1=k\textbackslash times\textbackslash phi(n)\textbackslash Leftrightarrow(d\textbackslash times
 | |
|                         e)=k\textbackslash times\textbackslash phi(n)+1\$
 | |
|                   \item
 | |
|                         haben wir: \$M'\textbackslash equiv E\^{}d\textbackslash equiv
 | |
|                         M\^{}\{e\textbackslash times d\}\textbackslash equiv
 | |
|                         M\^{}\{k\textbackslash times\textbackslash phi(n)+1\}\textbackslash equiv
 | |
|                         1\^{}k\textbackslash times M\textbackslash equiv M\textbackslash{}
 | |
|                         mod\textbackslash{} n\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Da \$(d\textbackslash times e)=(e\textbackslash times d)\$
 | |
|               funktioniert die Operation auch in umgekehrter Richtung, d.h. man kann
 | |
|               mit d verschlüsseln und mit e entschlüsseln
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Diese Eigenschaft erlaubt es, die gleichen Schlüssel d und e zu
 | |
|                         verwenden:
 | |
|                   \item
 | |
|                         den Empfang von Nachrichten, die mit dem eigenen öffentlichen
 | |
|                         Schlüssel verschlüsselt wurden
 | |
|                   \item
 | |
|                         Senden von Nachrichten, die mit dem eigenen privaten Schlüssel
 | |
|                         signiert wurden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               So richten Sie ein Schlüsselpaar für RSA ein:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wählen Sie zufällig zwei Primzahlen \$p\$ und \$q\$ (mit jeweils 100
 | |
|                         bis 200 Ziffern)
 | |
|                   \item
 | |
|                         Berechne \$n=p\textbackslash times
 | |
|                         q,\textbackslash phi(n)=(p-1)\textbackslash times (q-1)\$ (Lemma 2)
 | |
|                   \item
 | |
|                         Wähle zufällig \$e\$, so dass \$gcd(e,\textbackslash phi(n))=1\$
 | |
|                   \item
 | |
|                         Berechne mit dem erweiterten euklidischen Algorithmus d und c, so
 | |
|                         dass: \$e\textbackslash times
 | |
|                         d+\textbackslash phi(n)\textbackslash times c = 1\$, wobei zu
 | |
|                         beachten ist, dass dies impliziert, dass \$e\textbackslash times
 | |
|                         d\textbackslash equiv 1\textbackslash{} mod\textbackslash{}
 | |
|                         \textbackslash phi(n)\$
 | |
|                   \item
 | |
|                         Der öffentliche Schlüssel ist das Paar \$(e, n)\$
 | |
|                   \item
 | |
|                         Der private Schlüssel ist das Paar \$(d, n)\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Sicherheit des Verfahrens liegt in der Schwierigkeit der
 | |
|               Faktorisierung von \$n=p\textbackslash times q\$, da es einfach ist,
 | |
|               \$\textbackslash phi(n)\$ und dann \$d\$ zu berechnen, wenn \$p\$ und
 | |
|               \$q\$ bekannt sind.
 | |
|         \item
 | |
|               In diesem Kurs wird nicht gelehrt, warum es schwierig ist, große n zu
 | |
|               faktorisieren, da dies einen tiefen Einblick in die Mathematik
 | |
|               erfordern würde.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn p und q bestimmte Eigenschaften erfüllen, sind die besten
 | |
|                         bekannten Algorithmen exponentiell zur Anzahl der Ziffern von n
 | |
|                   \item
 | |
|                         Bitte beachten Sie, dass es bei einer unglücklichen Wahl von p und q
 | |
|                         Algorithmen geben könnte, die effizienter faktorisieren können, und
 | |
|                         dass Ihre RSA-Verschlüsselung dann nicht mehr sicher ist:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Daher sollten p und q ungefähr die gleiche Bitlänge haben und
 | |
|                                   ausreichend groß sein
 | |
|                             \item
 | |
|                                   \$(p-q)\$ sollte nicht zu klein sein
 | |
|                             \item
 | |
|                                   Wenn man einen kleinen Verschlüsselungsexponenten, z.B. 3, wählen
 | |
|                                   will, kann es zusätzliche Einschränkungen geben, z.B. \$gcd(p-1,
 | |
|                                   3) = 1\$ und \$gcd(q-1,3)=1\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Sicherheit von RSA hängt auch davon ab, dass die erzeugten
 | |
|                         Primzahlen wirklich zufällig sind (wie jede Methode zur
 | |
|                         Schlüsselerzeugung bei jedem Algorithmus).
 | |
|                   \item
 | |
|                         Moral: Wenn Sie RSA selbst implementieren wollen, bitten Sie einen
 | |
|                         Mathematiker oder besser einen Kryptographen, Ihren Entwurf zu
 | |
|                         überprüfen.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Einige weitere mathematische
 | |
|         Hintergründe}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Definition: endliche Gruppen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine Gruppe ( S , \textbackslash oplus) ist eine Menge S zusammen
 | |
|                         mit einer binären Operation \textbackslash oplus, für die die
 | |
|                         folgende Eigenschaften gelten:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Geschlossenheit: Für alle a, b \textbackslash in S , haben wir a
 | |
|                                   \textbackslash oplus b \textbackslash in S
 | |
|                             \item
 | |
|                                   Identität: Es gibt ein Element e \textbackslash in S , so dass e
 | |
|                                   \textbackslash oplus a = a \textbackslash oplus e = a für alle a
 | |
|                                   \textbackslash in S
 | |
|                             \item
 | |
|                                   Assoziativität: Für alle a, b, c \textbackslash in S , gilt ( a
 | |
|                                   \textbackslash oplus b ) \textbackslash oplus c = a
 | |
|                                   \textbackslash oplus ( b \textbackslash oplus c )
 | |
|                             \item
 | |
|                                   Inversen: Für jedes a \textbackslash in S , gibt es ein einziges
 | |
|                                   Element b \textbackslash in S , so dass dass a
 | |
|                                   \textbackslash oplus b = b \textbackslash oplus a = e
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Erfüllt eine Gruppe ( S , \textbackslash oplus) das Kommutativgesetz
 | |
|                         \textbackslash forall a, b \textbackslash in S : a
 | |
|                         \textbackslash oplus b = b \textbackslash oplus a dann nennt man sie
 | |
|                         eine abelsche Gruppe
 | |
|                   \item
 | |
|                         Wenn eine Gruppe ( S , \textbackslash oplus) nur eine endliche Menge
 | |
|                         von Elementen hat, d.h. \textbar S\textbar{} \textless{}
 | |
|                         \textbackslash infty, dann wird sie eine endliche Gruppe genannt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Beispiele:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$(\textbackslash mathbb\{Z\}\_n , +\_n)\$
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   mit
 | |
|                                   \$\textbackslash mathbb\{Z\}\_n:=\{{[}0{]}\_n,{[}1{]}\_n,...,{[}n-1{]}\_n\}\$
 | |
|                             \item
 | |
|                                   wobei \${[}a{]}\_n:=\{b \textbackslash in
 | |
|                                   \textbackslash mathbb\{Z\} \textbar{} b \textbackslash equiv a mod
 | |
|                                   n\}\$ und
 | |
|                             \item
 | |
|                                   \$+\_n\$ ist so definiert, dass
 | |
|                                   \${[}a{]}\_n+\_n{[}b{]}\_n={[}a+b{]}\_n\$
 | |
|                             \item
 | |
|                                   eine endliche abelsche Gruppe ist. Für den Beweis siehe die
 | |
|                                   Tabelle mit den Eigenschaften der modularen Arithmetik
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         \$(\textbackslash mathbb\{Z\}\^{}*\_n , \textbackslash times\_n)\$
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   mit \$\textbackslash mathbb\{Z\}\^{}*\_n
 | |
|                                   :=\{{[}a{]}\_n\textbackslash in \textbackslash mathbb\{Z\}\_n
 | |
|                                   \textbar{} gcd(a,n)=1\}\$, und
 | |
|                             \item
 | |
|                                   \$\textbackslash times\_n\$ ist so definiert, dass
 | |
|                                   \${[}a{]}\_n\textbackslash times\_n
 | |
|                                   {[}b{]}\_n={[}a\textbackslash times b{]}\_n\$
 | |
|                             \item
 | |
|                                   eine endliche abelsche Gruppe ist. Man beachte, dass
 | |
|                                   \$\textbackslash mathbb\{Z\}\^{}*\_n\$ nur die Elemente von
 | |
|                                   \$\textbackslash mathbb\{Z\}\_n\$ enthält, die eine multiplikative
 | |
|                                   Inverse modulo n haben. Zum Beweis siehe Eigenschaften der
 | |
|                                   modularen Arithmetik
 | |
|                             \item
 | |
|                                   Beispiel:
 | |
|                                   \$\textbackslash mathbb\{Z\}\^{}*\emph{\{15\}=\{{[}1{]}}\{15\},{[}2{]}\emph{\{15\},{[}4{]}}\{15\},{[}7{]}\emph{\{15\},{[}8{]}}\{15\},{[}11{]}\emph{\{15\},{[}13{]}}\{15\},{[}14{]}\_\{15\}\}\$,
 | |
|                                   als \$1\textbackslash times 1\textbackslash equiv 1 mod 15\$, \$2
 | |
|                                   \textbackslash times 8 \textbackslash equiv 1 mod 15\$, \$4
 | |
|                                   \textbackslash times 4 \textbackslash equiv 1 mod 15\$, \$7
 | |
|                                   \textbackslash times 13 \textbackslash equiv 1 mod 15\$, \$11
 | |
|                                   \textbackslash times 11 \textbackslash equiv 1 mod 15\$, \$14
 | |
|                                   \textbackslash times 14 \textbackslash equiv 1 mod 15\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wenn klar ist, dass es sich um \$(\textbackslash mathbb\{Z\}\_n,
 | |
|               +\_n)\$ oder \$(\textbackslash mathbb\{Z\}\^{}*\_n,
 | |
|               \textbackslash times\_n)\$ handelt, werden Äquivalenzklassen
 | |
|               \${[}a{]}\_n\$ oft durch ihre repräsentativen Elemente a dargestellt
 | |
|               und \$+\_n\$ und \$\textbackslash times\_n\$ durch \$+\$ bzw.
 | |
|               \$\textbackslash times\$ bezeichnet.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Definition: endliche Felder
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Ein Feld \$(S,\textbackslash oplus, \textbackslash otimes)\$ ist
 | |
|                                   eine Menge S zusammen mit zwei Operationen
 | |
|                                   \$\textbackslash oplus\$, \$\textbackslash otimes\$, so dass
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             \$(S,\textbackslash oplus)\$ und
 | |
|                                             \$(S\textbackslash backslash\{e\_\{\textbackslash oplus\}\},\textbackslash otimes)\$
 | |
|                                             sind kommutative Gruppen, d.h. nur das Identitätselement
 | |
|                                             bezüglich der Operation \$\textbackslash oplus\$ muss kein
 | |
|                                             Inverses bezüglich der Operation \$\textbackslash otimes\$ haben
 | |
|                                       \item
 | |
|                                             Für alle \$a,b,c\textbackslash in S\$ haben wir ein
 | |
|                                             \$\textbackslash otimes(b\textbackslash oplus
 | |
|                                             c)=(a\textbackslash otimes
 | |
|                                             b)\textbackslash oplus(a\textbackslash otimes c)\$
 | |
|                                   \end{itemize}
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Wenn \$\textbar S\textbar\textless\textbackslash infty\$ dann heißt
 | |
|                         \$(S,\textbackslash oplus,\textbackslash otimes)\$ ein endliches
 | |
|                         Feld
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Beispiel: \$(\textbackslash mathbb\{Z\}\_p, +\_p,
 | |
|               \textbackslash times\_p)\$ ist ein endliches Feld für jede Primzahl p
 | |
|         \item
 | |
|               Definition: Primitive Wurzel, Generator
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sei \$(S,\textbackslash circ)\$ eine Gruppe, \$g\textbackslash in
 | |
|                         S\$ und \$g\^{}a:=g\textbackslash circ
 | |
|                         g\textbackslash circ...\textbackslash circ g\$ (a mal mit
 | |
|                         \$a\textbackslash in\textbackslash mathbb\{Z\}\^{}+\$)
 | |
|                   \item
 | |
|                         Dann heißt g eine primitive Wurzel oder ein Generator von
 | |
|                         \$(S,\textbackslash circ):\textbackslash Leftrightarrow\{g\^{}a\textbar1\textbackslash leq
 | |
|                         a\textbackslash leq \textbar S\textbar\}=S\$
 | |
|                   \item
 | |
|                         Beispiele:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   1 ist eine primitive Wurzel von \$(\textbackslash mathbb\{Z\}\_n,
 | |
|                                   +\_n)\$
 | |
|                             \item
 | |
|                                   3 ist eine Primitivwurzel von
 | |
|                                   \$(\textbackslash mathbb\{Z\}\^{}*\_7, \textbackslash times\_7)\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Nicht alle Gruppen haben Primitivwurzeln, und diejenigen, die sie
 | |
|                         haben, nennt man zyklische Gruppen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Theorem 5:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$(\textbackslash mathbb\{Z\}\^{}*\_n, \textbackslash times\_n)\$
 | |
|                         hat eine primitive Wurzel \$\textbackslash Leftrightarrow
 | |
|                         n\textbackslash in\{2,4,p,2\textbackslash times p\^{}e\}\$, wobei p
 | |
|                         eine ungerade Primzahl ist und
 | |
|                         \$e\textbackslash in\textbackslash mathbb\{Z\}\^{}+\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Theorem 6:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn \$(S,\textbackslash circ)\$ eine Gruppe ist und
 | |
|                         \$b\textbackslash in S\$, dann ist \$(S',\textbackslash circ)\$ mit
 | |
|                         \$S'=\{b\^{}a\textbar a\textbackslash in\textbackslash mathbb\{Z\}\^{}+\}\$
 | |
|                         ebenfalls eine Gruppe.
 | |
|                   \item
 | |
|                         Da \$S'\textbackslash subseteq S, heißt (S',\textbackslash circ)\$
 | |
|                         eine Untergruppe von \$(S,\textbackslash circ)\$
 | |
|                   \item
 | |
|                         Wenn b eine Urwurzel von \$(S,\textbackslash circ)\$ ist, dann ist
 | |
|                         \$S'=S\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Definition: Ordnung einer Gruppe und eines Elements
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sei \$(S,\textbackslash circ)\$ eine Gruppe, \$e\textbackslash in
 | |
|                         S\$ ihr Identitätselement und \$b\textbackslash in S\$ irgendein
 | |
|                         Element von \$S\$:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dann heiße \$\textbar S\textbar\$ die Ordnung von
 | |
|                                   \$(S,\textbackslash circ)\$
 | |
|                             \item
 | |
|                                   Sei \$c\textbackslash in\textbackslash mathbb\{Z\}\^{}+\$ das
 | |
|                                   kleinste Element, so dass \$b\^{}c=e\$ ist (falls ein solches c
 | |
|                                   existiert, falls nicht, setze \$c=\textbackslash infty\$). Dann
 | |
|                                   wird c die Ordnung von b genannt.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Theorem 7 (Lagrange):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ist G eine endliche Gruppe und H eine Untergruppe von G , so ist
 | |
|                         \$\textbar H\textbar\$ Teiler von \$\textbar G\textbar\$.
 | |
|                   \item
 | |
|                         Wenn also \$b in G\$ ist, dann ist die Ordnung von b Teiler von
 | |
|                         \$\textbar G\textbar\$.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Theorem 8:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ist G eine zyklische endliche Gruppe der Ordnung n und d ist Teiler
 | |
|                         von n, dann hat G genau \$\textbackslash phi(d)\$ Elemente der
 | |
|                         Ordnung \$d\$. Insbesondere hat G \$\textbackslash phi(n)\$-Elemente
 | |
|                         der Ordnung n.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Theoreme 5, 7 und 8 sind die Grundlage des folgenden Algorithmus,
 | |
|               der eine zyklische Gruppe \$\textbackslash mathbb\{Z\}\^{}*\_p\$ und
 | |
|               eine Urwurzel g davon findet:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Man wählt eine große Primzahl q, so dass \$p=2q+1\$ eine Primzahl
 | |
|                         ist.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Da \$p\$ prim ist, besagt Satz 5, dass
 | |
|                                   \$\textbackslash mathbb\{Z\}\^{}*\_p\$ zyklisch ist.
 | |
|                             \item
 | |
|                                   Die Ordnung von \$\textbackslash mathbb\{Z\}\^{}*\_p\$ ist
 | |
|                                   \$2\textbackslash times q\$ und
 | |
|                                   \$\textbackslash phi(2\textbackslash times
 | |
|                                   q)=\textbackslash phi(2)\textbackslash times
 | |
|                                   \textbackslash phi(q)=q-1\$, da \$q\$ prim ist.
 | |
|                             \item
 | |
|                                   Die Wahrscheinlichkeit, dass eine Primitivwurzel zufällig
 | |
|                                   ausgewählt wird, beträgt also \$(q-1)/2q \textbackslash approx
 | |
|                                   1/2\$.
 | |
|                             \item
 | |
|                                   Um effizient zu prüfen, ob ein zufällig gewähltes g eine Urwurzel
 | |
|                                   ist, müssen wir nur prüfen, ob \$g\^{}2\textbackslash equiv 1 mod
 | |
|                                   p\$ oder \$g\^{}q\textbackslash equiv 1 mod p\$ ist. Wenn nicht,
 | |
|                                   dann muss seine Ordnung
 | |
|                                   \$\textbar\textbackslash mathbb\{Z\}\^{}\emph{\_p\textbar\$ sein,
 | |
|                                   da Satz 7 besagt, dass die Ordnung von g
 | |
|                                   \$\textbar\textbackslash mathbb\{Z\}\^{}}\_p\textbar\$ teilen muss
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Definition: diskreter Logarithmus
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sei p eine Primzahl, g eine Urwurzel von
 | |
|                         \$(\textbackslash mathbb\{Z\}\^{}\emph{\_p,\textbackslash times\_p)\$
 | |
|                         und c ein beliebiges Element von
 | |
|                         \$\textbackslash mathbb\{Z\}\^{}}\_p\$. Dann gibt es z so, dass:
 | |
|                         \$g\^{}z\textbackslash equiv c mod p\$
 | |
|                   \item
 | |
|                         z wird der diskrete Logarithmus von c modulo p zur Basis g genannt
 | |
|                   \item
 | |
|                         Beispiel 6 ist der diskrete Logarithmus von 1 modulo 7 zur Basis 3
 | |
|                         als \$3\^{}6\textbackslash equiv 1 mod 7\$
 | |
|                   \item
 | |
|                         Die Berechnung des diskreten Logarithmus z bei gegebenem g, c und p
 | |
|                         ist ein rechnerisch schwieriges Problem, und die asymptotische
 | |
|                         Laufzeit der besten bekannten Algorithmen für dieses Problem ist
 | |
|                         exponentiell zur Bitlänge von p
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Diffie-Hellman-Schlüsselaustausch}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der Diffie-Hellman-Schlüsselaustausch wurde erstmals in der
 | |
|               bahnbrechenden Arbeit {[}DH76{]} veröffentlicht, in der auch die
 | |
|               Grundidee der asymmetrischen Kryptographie vorgestellt wurde
 | |
|         \item
 | |
|               Der DH-Austausch in seiner Grundform ermöglicht es zwei Parteien A und
 | |
|               B, sich über einen öffentlichen Kanal auf ein gemeinsames Geheimnis zu
 | |
|               einigen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Öffentlicher Kanal bedeutet, dass ein potentieller Angreifer E (E
 | |
|                         steht für Eavesdropper) alle zwischen A und B ausgetauschten
 | |
|                         Nachrichten lesen kann
 | |
|                   \item
 | |
|                         Es ist wichtig, dass A und B sicher sein können, dass der Angreifer
 | |
|                         nicht in der Lage ist, Nachrichten zu verändern, da er in diesem
 | |
|                         Fall einen Man-in-the-Middle-Angriff starten könnte
 | |
|                   \item
 | |
|                         Die mathematische Grundlage für den DH-Austausch ist das Problem,
 | |
|                         diskrete Logarithmen in endlichen Feldern zu finden.
 | |
|                   \item
 | |
|                         Der DH-Austausch ist kein asymmetrischer
 | |
|                         Verschlüsselungsalgorithmus, wird aber dennoch hier vorgestellt, da
 | |
|                         er gut zum mathematischen Charakter dieser Vorlesung passt...
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wenn Alice (A) und Bob (B) sich auf ein gemeinsames Geheimnis s
 | |
|               einigen wollen und ihr einziges Kommunikationsmittel ein öffentlicher
 | |
|               Kanal ist, können sie wie folgt vorgehen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         A wählt eine Primzahl p, eine primitive Wurzel g von
 | |
|                         \$\textbackslash mathbb\{Z\}\^{}*\_p\$ und eine Zufallszahl q:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   A und B können sich vor der Kommunikation auf die Werte p und g
 | |
|                                   einigen, oder A wählt p und g und sendet sie mit seiner ersten
 | |
|                                   Nachricht
 | |
|                             \item
 | |
|                                   A berechnet \$v=g\^{}q\textbackslash{} MOD\textbackslash{} p\$ und
 | |
|                                   sendet an \$B:\{p,g,v\}\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         B wählt eine Zufallszahl r:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   B berechnet \$w=g\^{}r\textbackslash{} MOD\textbackslash{} p\$ und
 | |
|                                   sendet an \$A:\{p,g,w\}\$ (oder einfach \$\{w\}\$)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Beide Seiten errechnen das gemeinsame Geheimnis:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   A errechnet \$s=w\^{}q\textbackslash{} MOD\textbackslash{} p\$
 | |
|                             \item
 | |
|                                   B errechnet \$s'=v\^{}r\textbackslash{} MOD\textbackslash{} p\$
 | |
|                             \item
 | |
|                                   Da \$g\^{}\{q\textbackslash times r\}\textbackslash{}
 | |
|                                   MOD\textbackslash{} p = g\^{}\{r \textbackslash times
 | |
|                                   q\}\textbackslash{} MOD\textbackslash{} p\$ ist, gilt: \$s=s'\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Ein Angreifer Eve, der den öffentlichen Kanal abhört, kann das
 | |
|                         Geheimnis s nur berechnen, wenn er entweder q oder r berechnen kann,
 | |
|                         die die diskreten Logarithmen von v, w modulo p zur Basis g sind.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wenn der Angreifer Eve in der Lage ist, Nachrichten auf dem
 | |
|               öffentlichen Kanal zu verändern, kann er einen
 | |
|               Man-in-the-Middle-Angriff starten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eve generiert zwei Zufallszahlen \$q'\$ und \$r'\$: Eve berechnet
 | |
|                         \$v'=g\^{}\{q'\}\textbackslash{} MOD\textbackslash{} p\$ und
 | |
|                         \$w'=g\^{}\{r'\}\textbackslash{} MOD\textbackslash{} p\$
 | |
|                   \item
 | |
|                         Wenn A \$\{p,g,v\}\$ sendet, fängt sie die Nachricht ab und sendet
 | |
|                         an \$B:\{p,g,v'\}\$
 | |
|                   \item
 | |
|                         Wenn B \$\{p,g,w\}\$ sendet, fängt sie die Nachricht ab und sendet
 | |
|                         an \$A:\{p,g,w'\}\$
 | |
|                   \item
 | |
|                         Wenn das angebliche ,,gemeinsame Geheimnis'' berechnet wird,
 | |
|                         erhalten wir:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   A berechnet \$s\_1=w'\^{}q\textbackslash{} MOD\textbackslash{} p =
 | |
|                                   v\^{}\{r'\}\textbackslash{} MOD\textbackslash{} p\$, letzteres
 | |
|                                   berechnet von E
 | |
|                             \item
 | |
|                                   B berechnet \$s\_2=v'\^{}r\textbackslash{} MOD\textbackslash{} p =
 | |
|                                   w\^{}\{q'\}\textbackslash{} MOD\textbackslash{} p\$, letzteres
 | |
|                                   berechnet von E
 | |
|                             \item
 | |
|                                   A und E haben sich also auf ein gemeinsames Geheimnis \$s\_1\$
 | |
|                                   geeinigt, und E und B haben sich auf ein gemeinsames Geheimnis
 | |
|                                   \$s\_2\$ geeinigt.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Wenn das ,,gemeinsame Geheimnis'' nun von A und B verwendet wird, um
 | |
|                         Nachrichten zu verschlüsseln, die über den öffentlichen Kanal
 | |
|                         ausgetauscht werden sollen, kann E alle Nachrichten abfangen und
 | |
|                         ent- bzw. wiederverschlüsseln, bevor er sie zwischen A und B
 | |
|                         weiterleitet.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zwei Gegenmaßnahmen gegen den Man-in-the-Middle-Angriff:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Das gemeinsame Geheimnis wird ,,authentifiziert'', nachdem es
 | |
|                         vereinbart worden ist.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wir werden dies im Abschnitt über die Schlüsselverwaltung
 | |
|                                   behandeln
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         A und B verwenden ein sogenanntes Interlock-Protokoll, nachdem sie
 | |
|                         sich auf ein gemeinsames Geheimnis geeinigt haben:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dazu müssen sie Nachrichten austauschen, die E weiterleiten muss,
 | |
|                                   bevor sie sie entschlüsseln bzw. wieder verschlüsseln kann.
 | |
|                             \item
 | |
|                                   Der Inhalt dieser Nachrichten muss von A und B überprüfbar sein.
 | |
|                             \item
 | |
|                                   Dies zwingt E dazu, Nachrichten zu erfinden, und sie kann entdeckt
 | |
|                                   werden.
 | |
|                             \item
 | |
|                                   Eine Technik, um zu verhindern, dass E die Nachrichten
 | |
|                                   entschlüsselt, besteht darin, sie in zwei Teile aufzuteilen und
 | |
|                                   den zweiten Teil vor dem ersten zu senden.
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             Wenn der verwendete Verschlüsselungsalgorithmus bestimmte
 | |
|                                             Eigenschaften verhindert, kann E den zweiten Teil nicht
 | |
|                                             verschlüsseln, bevor sie den ersten erhält.
 | |
|                                       \item
 | |
|                                             Da A den ersten Teil erst senden wird, nachdem er eine Antwort
 | |
|                                             (den zweiten Teil) von B erhalten hat, ist E gezwungen, zwei
 | |
|                                             Nachrichten zu erfinden, bevor sie die ersten Teile erhalten
 | |
|                                             kann.
 | |
|                                   \end{itemize}
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Bemerkung: In der Praxis muss die Zahl g nicht unbedingt eine Urwurzel
 | |
|               von p sein, es genügt, wenn sie eine große Untergruppe von
 | |
|               \$\textbackslash mathbb\{Z\}\^{}*\_p\$ erzeugt
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{ElGamal Algorithmus}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der ElGamal-Algorithmus kann sowohl für die Verschlüsselung als auch
 | |
|               für digitale Signaturen verwendet werden (siehe auch {[}ElG85a{]}).
 | |
|         \item
 | |
|               Wie der DH-Austausch basiert er auf der Schwierigkeit, diskrete
 | |
|               Logarithmen in endlichen Feldern zu berechnen
 | |
|         \item
 | |
|               Um ein Schlüsselpaar zu erstellen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wähle eine große Primzahl p, einen Generator g der multiplikativen
 | |
|                         Gruppe \$\textbackslash mathbb\{Z\}\^{}*\_p\$ und eine Zufallszahl
 | |
|                         v, so dass \$1\textbackslash leq v\textbackslash leq p - 2\$.
 | |
|                         Berechnen Sie: \$y=g\^{}v mod p\$
 | |
|                   \item
 | |
|                         Der öffentliche Schlüssel ist \$( y, g, p )\$
 | |
|                   \item
 | |
|                         Der private Schlüssel ist v
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               So signieren Sie eine Nachricht m :
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wähle eine Zufallszahl k so, dass k relativ prim zu \$p-1\$ ist.
 | |
|                   \item
 | |
|                         Berechne \$r=g\^{}k mod p\$
 | |
|                   \item
 | |
|                         Berechne mit dem erweiterten euklidischen Algorithmus
 | |
|                         \$k\^{}\{-1\}\$, den Kehrwert von \$k mod (p - 1)\$
 | |
|                   \item
 | |
|                         Berechne \$s=k\^{}\{-1\} \textbackslash times ( m - v
 | |
|                         \textbackslash times r) mod ( p - 1)\$
 | |
|                   \item
 | |
|                         Die Signatur über die Nachricht ist \$( r, s )\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Überprüfen einer Signatur \$( r , s )\$ über eine Nachricht m:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Bestätige, dass \$y\^{}r \textbackslash times r\^{}s\textbackslash{}
 | |
|                         MOD\textbackslash{} p = g\^{}m\textbackslash{} MOD\textbackslash{}
 | |
|                         p\$
 | |
|                   \item
 | |
|                         Der Beweis: Wir benötigen Folgendes
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Lemma 3: Sei p eine Primzahl und g ein Generator von
 | |
|                                   \$\textbackslash mathbb\{Z\}\^{}*\_p\$. Dann sei \$i
 | |
|                                   \textbackslash equiv j mod ( p -1) \textbackslash Rightarrow g i
 | |
|                                   \textbackslash equiv g j mod p\$
 | |
|                             \item
 | |
|                                   Beweis: \$i \textbackslash equiv j mod (p-1)
 | |
|                                   \textbackslash Rightarrow\$ es gibt \$k\textbackslash in
 | |
|                                   \textbackslash mathbb\{Z\}\^{}+\$ so, dass
 | |
|                                   \$(i-j)=(p-1)\textbackslash times k\$
 | |
|                             \item
 | |
|                                   Also \$g\^{}\{(i-j)\}=g\^{}\{(p-1)\textbackslash times k\}
 | |
|                                   \textbackslash equiv 1\^{}k\textbackslash equiv 1 mod p\$, wegen
 | |
|                                   Theorem 3 (Euler) \$\textbackslash Rightarrow g\^{}i
 | |
|                                   \textbackslash equiv g\^{}j mod p\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Als \$s\textbackslash equiv
 | |
|                         k\^{}\{-1\}\textbackslash times(m-v\textbackslash times r) mod
 | |
|                         (p-1)\$
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   \$\textbackslash Leftrightarrow k \textbackslash times
 | |
|                                   s\textbackslash equiv m-v\textbackslash times r mod (p-1)\$
 | |
|                             \item
 | |
|                                   \$\textbackslash Leftrightarrow m \textbackslash equiv
 | |
|                                   v\textbackslash times r+k\textbackslash times s mod (p-1)\$
 | |
|                             \item
 | |
|                                   \$\textbackslash Rightarrow g\^{}m \textbackslash equiv
 | |
|                                   g\^{}\{(v\textbackslash times r+ k\textbackslash times s)\} mod
 | |
|                                   p\$ mit Lemma 3
 | |
|                             \item
 | |
|                                   \$\textbackslash Leftrightarrow g\^{}m \textbackslash equiv
 | |
|                                   g\^{}\{(v\textbackslash times r)\}\textbackslash times
 | |
|                                   g\^{}\{(k\textbackslash times s)\} mod p\$
 | |
|                             \item
 | |
|                                   \$\textbackslash Leftrightarrow g\^{}m \textbackslash equiv
 | |
|                                   y\^{}r\textbackslash times r\^{}s mod p\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sicherheit von ElGamal-Signaturen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Da der private Schlüssel v benötigt wird, um s berechnen zu können,
 | |
|                         müsste ein Angreifer den diskreten Logarithmus von y modulo p zur
 | |
|                         Basis g berechnen, um Signaturen zu fälschen
 | |
|                   \item
 | |
|                         Entscheidend für die Sicherheit ist, dass für jede Nachricht eine
 | |
|                         neue Zufallszahl k gewählt wird, denn ein Angreifer kann das
 | |
|                         Geheimnis v berechnen, wenn er zwei Nachrichten zusammen mit ihren
 | |
|                         Signaturen auf der Basis des gleichen k erhält (siehe {[}Men97a{]},
 | |
|                         Anmerkung 11.66.ii)
 | |
|                   \item
 | |
|                         Um zu verhindern, dass ein Angreifer eine Nachricht M mit einer
 | |
|                         passenden Signatur erstellen kann, ist es notwendig, die Nachricht M
 | |
|                         nicht direkt zu signieren, sondern einen kryptographischen Hashwert
 | |
|                         \$m=h(M)\$ davon zu signieren (diese werden bald behandelt, siehe
 | |
|                         auch {[}Men97a{]}, Anmerkung 11.66.iii)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Um eine Nachricht m mit dem öffentlichen Schlüssel \$(y,g,p)\$ zu
 | |
|               verschlüsseln:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wähle einen zufälligen
 | |
|                         \$k\textbackslash in\textbackslash mathbb\{Z\}\^{}+\$ mit
 | |
|                         \$k\textless p-1\$
 | |
|                   \item
 | |
|                         Berechne \$r=g\^{}k\textbackslash{} MOD\textbackslash{} p\$
 | |
|                   \item
 | |
|                         Berechne \$s=m\textbackslash times y\^{}k\textbackslash{}
 | |
|                         MOD\textbackslash{} p\$
 | |
|                   \item
 | |
|                         Der verschlüsselte Text ist \$(r,s)\$, der doppelt so lang ist wie m
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Entschlüsseln der Nachricht \$(r,s)\$ mit v:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verwenden Sie den privaten Schlüssel v zur Berechnung von
 | |
|                         \$r\^{}\{(p-1-v)\}\textbackslash{} MOD\textbackslash{}
 | |
|                         p=r\^{}\{(-v)\}\textbackslash{} MOD\textbackslash{} p\$
 | |
|                   \item
 | |
|                         Wiederherstellung von m durch Berechnung von
 | |
|                         \$m=r\^{}\{(-v)\}\textbackslash times s\textbackslash{}
 | |
|                         MOD\textbackslash{} p\$
 | |
|                   \item
 | |
|                         Beweis: \$r\^{}\{(-v)\}\textbackslash times s\textbackslash equiv
 | |
|                         r\^{}\{(-v)\} \textbackslash times m \textbackslash times
 | |
|                         y\^{}k\textbackslash equiv g\^{}\{(-vk)\}\textbackslash times m
 | |
|                         \textbackslash times y\^{}k\textbackslash equiv g\^{}\{(-v
 | |
|                         \textbackslash times k)\} \textbackslash times m\textbackslash times
 | |
|                         g\^{}\{(v \textbackslash times k)\} \textbackslash equiv m mod p\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sicherheit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die einzige bekannte Möglichkeit für einen Angreifer, m
 | |
|                         wiederherzustellen, ist die Berechnung des diskreten Logarithmus v
 | |
|                         von y modulo p zur Basis g
 | |
|                   \item
 | |
|                         Für jede Nachricht wird ein neues zufälliges k benötigt
 | |
|                         ({[}Men97a{]}, Anmerkung 8.23.ii)
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Elliptische Kurven
 | |
|         Kryptographie}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die bisher vorgestellten Algorithmen wurden für die multiplikative
 | |
|               Gruppe \$(\textbackslash mathbb\{Z\}\^{}*\_p,\textbackslash times p)\$
 | |
|               bzw. das Feld \$(\textbackslash mathbb\{Z\}\_p, +\_p,
 | |
|               \textbackslash times\_p)\$ entwickelt.
 | |
|         \item
 | |
|               In den 1980er Jahren wurde festgestellt, dass sie verallgemeinert und
 | |
|               auch für andere Gruppen und Felder verwendet werden können
 | |
|         \item
 | |
|               Die Hauptmotivation für diese Verallgemeinerung ist:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Zahlreiche mathematische Forschungen auf dem Gebiet der
 | |
|                         Primzahlprüfung, der Faktorisierung und der Berechnung diskreter
 | |
|                         Logarithmen haben zu Techniken geführt, mit denen diese Probleme
 | |
|                         effizienter gelöst werden können, wenn bestimmte Eigenschaften
 | |
|                         erfüllt sind:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Als 1977 die RSA-129-Aufgabe gestellt wurde, ging man davon aus,
 | |
|                                   dass es etwa 40 Billiarden Jahre dauern würde, die 129-stellige
 | |
|                                   Zahl (\$\textbackslash approx 428\$ Bit) zu faktorisieren.
 | |
|                             \item
 | |
|                                   Im Jahr 1994 benötigte eine Gruppe von Computern, die über das
 | |
|                                   Internet vernetzt waren, 8 Monate, um die Zahl zu faktorisieren,
 | |
|                                   was etwa 5000 MIPS-Jahre entsprach.
 | |
|                             \item
 | |
|                                   Fortschritte bei den Faktorisierungsalgorithmen ermöglichten 2009
 | |
|                                   die Faktorisierung einer 232-stelligen Zahl (768 Bit) in etwa 1500
 | |
|                                   AMD64-Jahren {[}KAFL10{]}.
 | |
|                             \item
 | |
|                                   \$\textbackslash Rightarrow\$ die Schlüssellänge muss erhöht
 | |
|                                   werden (derzeit etwa 2048 Bit)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Einige der effizienteren Verfahren beruhen auf bestimmten
 | |
|                         Eigenschaften der algebraischen Strukturen
 | |
|                         \$(\textbackslash mathbb\{Z\}\^{}*\_p,\textbackslash times p)\$ und
 | |
|                         \$(\textbackslash mathbb\{Z\}\_p, +\_p, \textbackslash times\_p)\$
 | |
|                   \item
 | |
|                         Verschiedene algebraische Strukturen können daher die gleiche
 | |
|                         Sicherheit mit kürzeren Schlüssellängen bieten
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Eine sehr vielversprechende Struktur für die Kryptographie lässt sich
 | |
|               aus der Gruppe der Punkte auf einer elliptischen Kurve über einem
 | |
|               endlichen Feld gewinnen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die mathematischen Operationen in diesen Gruppen können sowohl in
 | |
|                         Hardware als auch in Software effizient implementiert werden.
 | |
|                   \item
 | |
|                         Das Problem des diskreten Logarithmus gilt in der allgemeinen
 | |
|                         Klasse, die sich aus der Gruppe der Punkte auf einer elliptischen
 | |
|                         Kurve über einem endlichen Feld ergibt, als schwierig
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Gruppenelemente}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Algebraische Gruppe bestehend aus
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Punkte auf der Weierstraß'schen Gleichung: \$y\^{}2 = x\^{}3 + ax +
 | |
|                         b\$
 | |
|                   \item
 | |
|                         Zusätzlicher Punkt O im ,,Unendlichen''
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kann über \$\textbackslash mathbb\{R\}\$ berechnet werden, aber in der
 | |
|               Kryptographie werden \$\textbackslash mathbb\{Z\}\_p\$ und
 | |
|               \$GF(2\^{}n)\$ verwendet
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schon in \$\textbackslash mathbb\{R\}\$ beeinflussen Argumente die
 | |
|                         Form erheblich:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   \$y\^{}2 = x\^{}3-3x+5\$
 | |
|                                   % \includegraphics{Assets/NetworkSecurity-ecc-1.png}
 | |
|                             \item
 | |
|                                   \$y\^{}2 = x\^{}3-40x+5\$
 | |
|                                   % \includegraphics{Assets/NetworkSecurity-ecc-2.png}
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Punktaddition}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Addition von Elementen = Addition von Punkten auf der Kurve
 | |
|         \item
 | |
|               Geometrische Interpretation:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Jeder Punkt \$P:(x,y)\$ hat einen Kehrwert \$-P:(x,-y)\$
 | |
|                   \item
 | |
|                         Eine Linie durch zwei Punkte P und Q schneidet sich normalerweise
 | |
|                         mit einem dritten Punkt R
 | |
|                   \item
 | |
|                         Im Allgemeinen ist die Summe von zwei Punkten P und Q gleich \$-R\$
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-ecc-3.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Addition (Sonderfälle)
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der zusätzliche Punkt O ist das neutrale Element, d.h. \$P+O=P\$
 | |
|                   \item
 | |
|                         \$P + (-P)\$:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wird der inverse Punkt zu P addiert, schneiden sich Linie und
 | |
|                                   Kurve im ,,Unendlichen''
 | |
|                             \item
 | |
|                                   Per Definition: \$P+(-P) = O\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         \$P+P\$: Die Summe zweier identischer Punkte P ist der Kehrwert des
 | |
|                         Schnittpunkts mit der Tangente durch P:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   % \includegraphics{Assets/NetworkSecurity-ecc-4.png}
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Grundlagen des ECC - Algebraische
 | |
|         Addition}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Wenn einer der Summanden O ist, ist die Summe der andere Summand
 | |
|         \item
 | |
|               Wenn die Summanden zueinander invers sind, ist die Summe O
 | |
|         \item
 | |
|               Für die allgemeineren Fälle ist die Steigung der Geraden:
 | |
|               \$\textbackslash alpha=\textbackslash begin\{cases\}
 | |
|               \textbackslash frac\{y\_Q-y\_P\}\{x\_Q-x\_P\}
 | |
|               \textbackslash quad\textbackslash text\{ for \} P\textbackslash not=-Q
 | |
|               \textbackslash keil P\textbackslash not=Q \textbackslash{}
 | |
|               \textbackslash frac\{3x\^{}2\_P +a\}\{2y\_P\}
 | |
|               \textbackslash quad\textbackslash text\{ for \} P=Q
 | |
|               \textbackslash end\{cases\}\$
 | |
|         \item
 | |
|               Ergebnis der Punktaddition, wobei \$(x\_r,y\_r)\$ bereits der
 | |
|               Spiegelpunkt \$(-R)\$ ist
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Multiplikation}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Multiplikation von natürlicher Zahl n und Punkt P durch mehrfache
 | |
|               wiederholte Additionen
 | |
|         \item
 | |
|               Zahlen werden in 2er-Potenzen gruppiert, um eine logarithmische
 | |
|               Laufzeit zu erreichen, z.B. \$25P = P + 8P + 16P\$
 | |
|         \item
 | |
|               Dies ist nur möglich, wenn das n bekannt ist!
 | |
|         \item
 | |
|               Wenn n für \$nP = Q\$ unbekannt ist, muss ein Logarithmus gelöst
 | |
|               werden, was möglich ist, wenn die Koordinatenwerte aus
 | |
|               \$\textbackslash mathbb\{R\}\$ gewählt werden
 | |
|         \item
 | |
|               Für \$\textbackslash mathbb\{Z\}\_p\$ und \$GF(2\^{}n)\$ muss das
 | |
|               diskrete Logarithmusproblem für elliptische Kurven gelöst werden, was
 | |
|               nicht effizient durchgeführt werden kann!
 | |
|         \item
 | |
|               Hinweis: Es ist nicht definiert, wie zwei Punkte multipliziert werden,
 | |
|               sondern nur eine natürliche Zahl n und der Punkt P
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Kurven über
 | |
|         \$\textbackslash mathbb\{Z\}\_p\$}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Über \$\textbackslash mathbb\{Z\}\_p\$ zerfällt die Kurve in eine
 | |
|               Menge von Punkten
 | |
|         \item
 | |
|               Für: \$y\^{}2=x\^{}3-3x+5\textbackslash{} mod\textbackslash{} 19\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-ecc-5.png}
 | |
|                   \item
 | |
|                         Hinweis: Für einige x-Werte gibt es keinen y-Wert!
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Berechnen Sie die y-Werte in
 | |
|         \$\textbackslash mathbb\{Z\}\_p\$}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Im Allgemeinen etwas problematischer: Bestimmen Sie die y-Werte für
 | |
|               ein gegebenes x (da sein quadratischer Wert berechnet wird) durch
 | |
|               \$y\^{}2\textbackslash equiv f(x)\textbackslash{} mod\textbackslash{}
 | |
|               p\$
 | |
|         \item
 | |
|               Daher wird p oft s.t. gewählt \$p\textbackslash equiv
 | |
|               3\textbackslash{} mod\textbackslash{} 4\$
 | |
|         \item
 | |
|               Dann wird y durch \$y\_1\textbackslash equiv
 | |
|               f(x)\^{}\{\textbackslash frac\{p+1\}\{4\}\}\$ und
 | |
|               \$y\_2\textbackslash equiv
 | |
|               -f(x)\^{}\{\textbackslash frac\{p+1\}\{4\}\}\$ berechnet, wenn und nur
 | |
|               wenn überhaupt eine Lösung existiert
 | |
|         \item
 | |
|               Kurzer Beweis:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Aus dem Euler-Theorem 3 wissen wir, dass
 | |
|                         \$f(x)\^{}\{p-1\}\textbackslash equiv 1\textbackslash{}
 | |
|                         mod\textbackslash{} p\$
 | |
|                   \item
 | |
|                         Die Quadratwurzel muss also 1 oder -1 sein
 | |
|                         \$f(x)\^{}\{\textbackslash frac\{p-1\}\{2\}\}\textbackslash equiv\textbackslash pm
 | |
|                         1\textbackslash{} mod\textbackslash{} p\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Fall 1:
 | |
|               \$f(x)\^{}\{\textbackslash frac\{p-1\}\{2\}\}\textbackslash equiv1\textbackslash{}
 | |
|               mod\textbackslash{} p\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Multiplizieren Sie beide Seiten mit f(x):
 | |
|                         \$f(x)\^{}\{\textbackslash frac\{p-1\}\{2\}\}\textbackslash equiv
 | |
|                         f(x)\textbackslash equiv y\^{}2\textbackslash{} mod\textbackslash{}
 | |
|                         p\$
 | |
|                   \item
 | |
|                         Da \$p + 1\$ durch 4 teilbar ist, können wir die Quadratwurzel
 | |
|                         ziehen, so dass
 | |
|                         \$f(x)\^{}\{\textbackslash frac\{p-1\}\{2\}\}\textbackslash equiv
 | |
|                         y\textbackslash{} mod\textbackslash{} p\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Fall 2: In diesem Fall existiert keine Lösung für den gegebenen x-Wert
 | |
|               (wie von Euler gezeigt)
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Addition und Multiplikation in
 | |
|         \$\textbackslash mathbb\{Z\}\_p\$}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Aufgrund des diskreten Strukturpunktes haben mathematische Operationen
 | |
|               keine geometrische Interpretation mehr, sondern
 | |
|         \item
 | |
|               Algebraische Addition ähnlich der Addition über
 | |
|               \$\textbackslash mathbb\{R\}\$
 | |
|         \item
 | |
|               Wird der inverse Punkt zu P addiert, schneiden sich Linie und
 | |
|               ,,Kurve'' immer noch im ,,Unendlichen''
 | |
|         \item
 | |
|               Alle x- und y-Werte werden mod p berechnet
 | |
|         \item
 | |
|               Division wird durch Multiplikation mit dem inversen Element des
 | |
|               Nenners ersetzt
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verwendung des erweiterten euklidischen Algorithmus mit w und p zur
 | |
|                         Ableitung der Inversen \$-w\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die algebraische Multiplikation einer natürlichen Zahl n und eines
 | |
|               Punktes P erfolgt ebenfalls durch wiederholte Addition von Summanden
 | |
|               der Potenz von 2
 | |
|         \item
 | |
|               Das Problem des diskreten Logarithmus ist die Bestimmung einer
 | |
|               natürlichen Zahl n in \$nP=Q\$ für zwei bekannte Punkte P und Q
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Foundations of ECC - Größe der erzeugten
 | |
|         Gruppen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Bitte beachten Sie, dass die Ordnung einer durch einen Punkt auf einer
 | |
|               Kurve über \$\textbackslash mathbb\{Z\}\_p\$ erzeugten Gruppe nicht
 | |
|               \$p-1\$ ist!
 | |
|         \item
 | |
|               Die Bestimmung der exakten Ordnung ist nicht einfach, kann aber mit
 | |
|               Schoofs Algorithmus {[}Sch85{]} in logarithmischer Zeit durchgeführt
 | |
|               werden (erfordert viel mehr mathematischen Hintergrund als hier
 | |
|               gewünscht)
 | |
|         \item
 | |
|               Der Satz von Hasse über elliptische Kurven besagt jedoch, dass die
 | |
|               Gruppengröße n zwischen: \$p+1 -
 | |
|               2\textbackslash sqrt\{p\}\textbackslash leq n\textbackslash leq
 | |
|               p+1+2\textbackslash sqrt\{p\}\$ liegen muss
 | |
|         \item
 | |
|               Wie bereits erwähnt: Es genügt, relativ große Gruppen zu erzeugen
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{ECDH}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der Diffie-Hellman-Algorithmus kann leicht an elliptische Kurven
 | |
|               angepasst werden
 | |
|         \item
 | |
|               Wenn Alice (A) und Bob (B) sich auf ein gemeinsames Geheimnis s
 | |
|               einigen wollen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         A und B einigen sich auf eine kryptographisch sichere elliptische
 | |
|                         Kurve und einen Punkt P auf dieser Kurve
 | |
|                   \item
 | |
|                         A wählt eine Zufallszahl q:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   A berechnet \$Q=qP\$ und überträgt Q an Bob
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         B wählt eine Zufallszahl r:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   B berechnet \$R=rP\$ und überträgt P an Alice
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Beide Seiten errechnen das gemeinsame Geheimnis:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   A errechnet \$S=qR\$
 | |
|                             \item
 | |
|                                   B errechnet \$S'=rQ\$
 | |
|                             \item
 | |
|                                   Da \$qrP=rqP\$ der geheime Punkt \$S=S'\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Angreifer, die den öffentlichen Kanal abhören, können S nur berechnen,
 | |
|               wenn sie entweder q oder r berechnen können, die die diskreten
 | |
|               Logarithmen von Q und R für den Punkt P sind
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{EC-Version des
 | |
|         ElGamal-Algorithmus}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Anpassung von ElGamal für elliptische Kurven ist für die
 | |
|               Verschlüsselungsroutine recht einfach
 | |
|         \item
 | |
|               Ein Schlüsselpaar einrichten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wählen Sie eine elliptische Kurve über einem endlichen Feld, einen
 | |
|                         Punkt G, der eine große Gruppe erzeugt, und eine Zufallszahl v, so
 | |
|                         dass \$1 \textless{} v \textless{} n\$, wobei n die Größe der
 | |
|                         induzierten Gruppe bezeichnet, Berechnen Sie: \$Y = vG\$
 | |
|                   \item
 | |
|                         Der öffentliche Schlüssel ist \$(Y,G,Kurve)\$
 | |
|                   \item
 | |
|                         Der private Schlüssel ist v
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Um eine Nachricht zu verschlüsseln:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wähle eine zufällige
 | |
|                         \$k\textbackslash in\textbackslash mathbb\{Z\}\^{}+\$ mit
 | |
|                         \$k\textless n-1\$, berechne \$R=kG\$
 | |
|                   \item
 | |
|                         Berechne \$S=M+kY\$, wobei M ein von der Nachricht abgeleiteter
 | |
|                         Punkt ist
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Problem: Die Interpretation der Nachricht m als x-Koordinate von M
 | |
|                                   ist nicht ausreichend, da der y-Wert nicht existieren muss
 | |
|                             \item
 | |
|                                   Lösung aus {[}Ko87{]}: Wähle eine Konstante c (z.B. 100) und
 | |
|                                   prüfe, ob \$cm\$ die x-Koordinate eines gültigen Punktes ist, wenn
 | |
|                                   nicht, versuche \$cm+1\$, dann \$cm+2\$ usw.
 | |
|                             \item
 | |
|                                   Um m zu entschlüsseln: nimm den x-Wert von M und führe eine
 | |
|                                   ganzzahlige Division durch c durch (der Empfänger muss c ebenfalls
 | |
|                                   kennen)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Der Chiffretext sind die Punkte \$(R,S)\$
 | |
|                   \item
 | |
|                         Doppelt so lang wie m, wenn sie in so genannter komprimierter Form
 | |
|                         gespeichert werden, d.h. nur die x-Koordinaten werden gespeichert
 | |
|                         und ein einziges Bit, das angibt, ob die größere oder kleinere
 | |
|                         entsprechende y-Koordinate verwendet werden soll
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Um eine Nachricht zu entschlüsseln:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ableitung von M durch Berechnung von \$S-vR\$
 | |
|                   \item
 | |
|                         Beweis: \$S-vR=M+kY-vR =M+kvG-vkG= M+O= M\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Eine Nachricht signieren:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wähle ein zufälliges
 | |
|                         \$k\textbackslash in\textbackslash mathbb\{Z\}\^{}+\$ mit
 | |
|                         \$k\textless n-1\$, berechne \$R = kG\$
 | |
|                   \item
 | |
|                         Berechne \$s=k\^{}\{-1\}(m+rv) mod\textbackslash{} n\$, wobei \$r\$
 | |
|                         der x-Wert von R ist
 | |
|                   \item
 | |
|                         Die Signatur ist \$(r,s)\$, wiederum etwa doppelt so lang wie n
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Überprüfen einer signierten Nachricht:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Prüfen, ob der Punkt \$P=ms\^{}\{-1\}G+rs\^{}\{-1\}Y\$ die
 | |
|                         x-Koordinate r hat
 | |
|                   \item
 | |
|                         Anmerkung: \$s\^{}\{-1\}\$ wird durch den Erweiterten Euklidischen
 | |
|                         Algorithmus mit den Eingaben s und n (der Ordnung der Gruppe)
 | |
|                         berechnet.
 | |
|                   \item
 | |
|                         Beweis: \$ms\^{}\{-1\}G+rs\^{}\{-1\}Y = ms\^{}\{-1\}G+rs\^{}\{-1\}vG
 | |
|                         = (m+rv)(s\^{}\{-1\})G = (ks)(s\^{}\{-1\})G = kG = R\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Diskussion zur Sicherheit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wie in der ursprünglichen Version von ElGamal ist es entscheidend, k
 | |
|                         nicht zweimal zu verwenden
 | |
|                   \item
 | |
|                         Nachrichten sollten nicht direkt signiert werden
 | |
|                   \item
 | |
|                         Weitere Prüfungen können erforderlich sein, d.h. G darf nicht O
 | |
|                         sein, ein gültiger Punkt auf der Kurve usw. (siehe {[}NIST09{]} für
 | |
|                         weitere Details)
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Sicherheit}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Sicherheit hängt stark von der gewählten Kurve und dem Punkt ab:
 | |
|         \item
 | |
|               Die Diskriminante der Kurve darf nicht Null sein, d.h.
 | |
|               \$4a\^{}3+27b\^{}2\textbackslash not\textbackslash equiv
 | |
|               0\textbackslash{} mod\textbackslash{} p\$ sonst ist die Kurve
 | |
|               degradiert (eine sogenannte ,,singuläre Kurve'' )
 | |
|         \item
 | |
|               Menezes et. al. haben einen subexponentiellen Algorithmus für
 | |
|               sogenannte ,,supersinguläre elliptische Kurven'' gefunden, der aber im
 | |
|               allgemeinen Fall nicht funktioniert {[}Men93a{]}
 | |
|         \item
 | |
|               Die konstruierten algebraischen Gruppen sollten so viele Elemente wie
 | |
|               möglich haben.
 | |
|         \item
 | |
|               In diesem Kurs wird nicht näher auf die Kryptographie elliptischer
 | |
|               Kurven eingegangen, da dies viel mehr Mathematik erfordert, als für
 | |
|               diesen Kurs erwünscht ist...
 | |
|         \item
 | |
|               Für Nicht-Kryptographen ist es am besten, sich auf vordefinierte
 | |
|               Kurven zu verlassen, z.B. {[}LM10{]} oder {[}NIST99{]} und Standards
 | |
|               wie ECDSA
 | |
|         \item
 | |
|               Viele Veröffentlichungen wählen die Parameter a und b so, dass sie
 | |
|               nachweislich durch einen Zufallsprozess gewählt werden (z.B.
 | |
|               veröffentlichen Sie x für \$h(x)=a\$ und \$y\$ für \$h(y) = b\$); so
 | |
|               soll sichergestellt werden, dass die Kurven keine kryptographische
 | |
|               Schwäche enthalten, die nur den Autoren bekannt ist
 | |
|         \item
 | |
|               Die Sicherheit ist abhängig von der Länge von p
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schlüssellängen mit vergleichbaren Stärken nach {[}NIST12{]}:
 | |
|                         \textbar{} Symmetrische Algorithmen \textbar{} RSA \textbar{} ECC
 | |
|                         \textbar{} \textbar{}
 | |
|                         -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-
 | |
|                         \textbar{} -\/-\/-\/-\/- \textbar{} -\/-\/-\/-\/-\/-\/- \textbar{}
 | |
|                         \textbar{} 112 \textbar{} 2048 \textbar{} 224-255 \textbar{}
 | |
|                         \textbar{} 128 \textbar{} 3072 \textbar{} 256-383 \textbar{}
 | |
|                         \textbar{} 192 \textbar{} 7680 \textbar{} 384-511 \textbar{}
 | |
|                         \textbar{} 256 \textbar{} 15360 \textbar{} \textgreater{} 512
 | |
|                         \textbar{}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Sicherheit hängt auch stark von der Implementierung ab!
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die verschiedenen Fälle (z.B. mit O) in der ECC-Berechnung können
 | |
|                         beobachtbar sein, d.h. Stromverbrauch und Zeitunterschiede
 | |
|                   \item
 | |
|                         Angreifer können Seitenkanalangriffe ableiten, wie in OpenSSL 0.9.8o
 | |
|                         {[}BT11{]}
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Ein Angreifer kann die Bitlänge eines Wertes k in \$kP\$ ableiten,
 | |
|                                   indem er die für den Quadrat- und Multiplikationsalgorithmus
 | |
|                                   benötigte Zeit misst
 | |
|                             \item
 | |
|                                   Der Algorithmus wurde in OpenSSL frühzeitig abgebrochen, wenn
 | |
|                                   keine weiteren Bits auf ,,1'' gesetzt wurden
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Angreifer könnten versuchen, ungültige Punkte zu generieren, um
 | |
|                         Fakten über den verwendeten Schlüssel abzuleiten, wie in OpenSSL
 | |
|                         0.9.8g, was zu einer Wiederherstellung eines vollen 256-Bit
 | |
|                         ECC-Schlüssels nach nur 633 Abfragen führte {[}BBP12{]}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Lektion gelernt: Machen Sie es nicht selbst, es sei denn, Sie müssen
 | |
|               es tun und wissen, was Sie tun!
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Weitere Anmerkungen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Wie bereits erwähnt, ist es möglich, kryptographische elliptische
 | |
|               Kurven über \$G(2\^{}n)\$ zu konstruieren, was in
 | |
|               Hardware-Implementierungen schneller sein kann.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wir haben auf Details verzichtet, da dies nicht viele neue
 | |
|                         Erkenntnisse gebracht hätte!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Elliptische Kurven und ähnliche algebraische Gruppen sind ein aktives
 | |
|               Forschungsgebiet und ermöglichen weitere fortgeschrittene Anwendungen,
 | |
|               z.B:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sogenannte Edwards-Kurven werden derzeit diskutiert, da sie robuster
 | |
|                         gegen Seitenkanalangriffe zu sein scheinen (z.B. {[}BLR08{]})
 | |
|                   \item
 | |
|                         Bilineare Paarungen ermöglichen
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Programme zu verifizieren, dass sie zur selben Gruppe gehören,
 | |
|                                   ohne ihre Identität preiszugeben (Secret Handshakes, z.B.
 | |
|                                   {[}SM09{]})
 | |
|                             \item
 | |
|                                   Öffentliche Schlüssel können strukturiert werden, z.B. ,,Alice''
 | |
|                                   als öffentlicher Schlüssel für Alice verwenden (Identitätsbasierte
 | |
|                                   Verschlüsselung, Grundlagen in {[}BF03{]})
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Bevor Sie elliptische Kurvenkryptographie in einem Produkt einsetzen,
 | |
|               stellen Sie sicher, dass Sie keine Patente verletzen, da es noch viele
 | |
|               gültige Patente in diesem Bereich gibt!
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Schlussfolgerung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Asymmetrische Kryptographie erlaubt es, zwei verschiedene Schlüssel zu
 | |
|               verwenden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verschlüsselung / Entschlüsselung
 | |
|                   \item
 | |
|                         Signieren / Überprüfen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die praktischsten Algorithmen, die immer noch als sicher gelten, sind:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         RSA, basierend auf der Schwierigkeit, diskrete Logarithmen zu
 | |
|                         faktorisieren und zu lösen
 | |
|                   \item
 | |
|                         Diffie-Hellman (kein asymmetrischer Algorithmus, sondern ein
 | |
|                         Schlüsselvereinbarungsprotokoll)
 | |
|                   \item
 | |
|                         ElGamal, wie DH basierend auf der Schwierigkeit, diskrete
 | |
|                         Logarithmen zu berechnen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Da ihre Sicherheit vollständig auf der Schwierigkeit bestimmter
 | |
|               mathematischer Probleme beruht, stellt der algorithmische Fortschritt
 | |
|               ihre größte Bedrohung dar.
 | |
|         \item
 | |
|               Praktische Überlegungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Asymmetrische kryptografische Operationen sind um Größenordnungen
 | |
|                         langsamer als symmetrische Operationen.
 | |
|                   \item
 | |
|                         Daher werden sie oft nicht für die Verschlüsselung/Signierung von
 | |
|                         Massendaten verwendet.
 | |
|                   \item
 | |
|                         Symmetrische Verfahren werden zur Verschlüsselung / Berechnung eines
 | |
|                         kryptografischen Hashwerts verwendet, während die asymmetrische
 | |
|                         Kryptografie nur zur Verschlüsselung eines Schlüssels / Hashwerts
 | |
|                         eingesetzt wird.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Modifikationsprüfwerte}
 | |
| 
 | |
| 
 | |
|     \subsection{Motivation}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               In der Datenkommunikation ist es üblich, eine Art Fehlererkennungscode
 | |
|               für Nachrichten zu berechnen, mit dem der Empfänger überprüfen kann,
 | |
|               ob eine Nachricht während der Übertragung verändert wurde.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiele: Parität, Bit-Interleaved Parity, Cyclic Redundancy Check
 | |
|                         (CRC)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Dies führt zu dem Wunsch, einen ähnlichen Wert zu haben, der es
 | |
|               ermöglicht zu überprüfen, ob eine Nachricht während der Übertragung
 | |
|               verändert wurde.
 | |
|         \item
 | |
|               Es ist jedoch ein großer Unterschied, ob man davon ausgeht, dass die
 | |
|               Nachricht durch mehr oder weniger zufällige Fehler oder absichtlich
 | |
|               verändert wird:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn jemand eine Nachricht, die mit einem CRC-Wert geschützt ist,
 | |
|                         absichtlich verändern will, kann er den CRC-Wert nach der
 | |
|                         Veränderung neu berechnen oder die Nachricht so verändern, dass sie
 | |
|                         den gleichen CRC-Wert ergibt.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ein Änderungsprüfwert muss also einige zusätzliche Eigenschaften
 | |
|               erfüllen, die es Angreifern unmöglich machen, ihn zu fälschen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Zwei Hauptkategorien von Modifikationsprüfwerten:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Modifikationserkennungscode (MDC)
 | |
|                             \item
 | |
|                                   Nachrichten-Authentifizierungs-Code (MAC)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Kryptographische
 | |
|         Hash-Funktionen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Definition: Hash-Funktion
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine Hash-Funktion ist eine Funktion h, die die folgenden zwei
 | |
|                         Eigenschaften hat:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Komprimierung: h bildet eine Eingabe x mit beliebiger endlicher
 | |
|                                   Bitlänge auf eine Ausgabe \$h(x)\$ mit fester Bitlänge n ab.
 | |
|                             \item
 | |
|                                   Einfachheit der Berechnung: Bei h und x ist es einfach, \$h(x)\$
 | |
|                                   zu berechnen.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Definition: kryptografische Hash-Funktion
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine kryptografische Hash-Funktion h ist eine Hash-Funktion, die
 | |
|                         zusätzlich unter anderem die folgenden Eigenschaften erfüllt:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Pre-Image-Resistenz: für im Wesentlichen alle vorgegebenen
 | |
|                                   Ausgaben y ist es rechnerisch nicht möglich, ein x zu finden, so
 | |
|                                   dass \$h(x)=y\$
 | |
|                             \item
 | |
|                                   \begin{enumerate}
 | |
|                                       \def\labelenumi{\arabic{enumi}.}
 | |
|                                       \setcounter{enumi}{1}
 | |
|                                       \item
 | |
|                                             Vorabbild-Resistenz: Bei x ist es rechnerisch nicht möglich,
 | |
|                                             eine zweite Eingabe \$x'\$ mit \$x\textbackslash not= x'\$ zu
 | |
|                                             finden, so dass \$h(x)=h(x')\$
 | |
|                                   \end{enumerate}
 | |
|                             \item
 | |
|                                   Kollisionssicherheit: Es ist rechnerisch nicht möglich, ein
 | |
|                                   beliebiges Paar \$(x,x')\$ mit \$x\textbackslash not= x'\$ zu
 | |
|                                   finden, so dass \$h(x)=h(x')\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Kryptographische Hash-Funktionen werden zur Berechnung von
 | |
|                         Modification Detection Codes (MDC) verwendet
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Nachrichten-Authentifizierungs-Codes
 | |
|         (MAC)}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Definition: Nachrichten-Authentifizierungs-Code
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein Message-Authentication-Code-Algorithmus ist eine Familie von
 | |
|                         Funktionen \$h\_k\$, die durch einen geheimen Schlüssel k
 | |
|                         parametrisiert sind und die folgenden Eigenschaften aufweisen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Komprimierung: hk bildet eine Eingabe x beliebiger endlicher
 | |
|                                   Bitlänge auf eine Ausgabe \$h\_k(x)\$ fester Bitlänge ab, genannt
 | |
|                                   MAC
 | |
|                             \item
 | |
|                                   Einfache Berechnung: Bei k, x und einer bekannten Funktionsfamilie
 | |
|                                   \$h\_k\$ ist der Wert \$h\_k(x)\$ einfach zu berechnen
 | |
|                             \item
 | |
|                                   Berechnungsresistenz: für jeden festen, erlaubten, aber
 | |
|                                   unbekannten Wert von k ist es bei null oder mehr Text-MAC-Paaren
 | |
|                                   \$(x\_i, h\_k(x\_i))\$ rechnerisch nicht möglich, ein
 | |
|                                   Text-MAC-Paar \$(x, h\_k(x))\$ für jede neue Eingabe
 | |
|                                   \$x\textbackslash not= x\_i\$ zu berechnen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Bitte beachten Sie, dass Rechenresistenz die Eigenschaft der
 | |
|                         Nicht-Wiederherstellung des Schlüssels impliziert, d.h. k kann nicht
 | |
|                         aus Paaren \$(x\_i,h\_k(x\_i))\$ wiederhergestellt werden, aber
 | |
|                         Rechenresistenz kann nicht aus der Nicht-Wiederherstellung des
 | |
|                         Schlüssels abgeleitet werden, da der Schlüssel k nicht immer
 | |
|                         wiederhergestellt werden muss, um neue MACs zu fälschen
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Ein einfacher Angriff gegen einen unsicheren
 | |
|         MAC}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Betrachten wir zur Veranschaulichung die folgende MAC-Definition:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eingabe: Nachricht \$m=(x\_1,x\_2,...,x\_n)\$, wobei \$x\_i\$
 | |
|                         64-Bit-Werte sind, und Schlüssel k
 | |
|                   \item
 | |
|                         Berechne \$\textbackslash delta(m):= x\_1\textbackslash oplus
 | |
|                         x\_2\textbackslash oplus...\textbackslash oplus x\_n\$, wobei
 | |
|                         \$\textbackslash oplus\$ die bitweise Exklusiv-Oder-Verknüpfung
 | |
|                         bezeichnet
 | |
|                   \item
 | |
|                         Ausgabe: MAC \$C\_k(m):= E\_k(\textbackslash delta(m))\$ mit
 | |
|                         \$E\_k(x)\$ für die DES-Verschlüsselung
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Schlüssellänge beträgt 56 Bit und die MAC-Länge 64 Bit, so dass
 | |
|               wir einen Aufwand von etwa \$2\^{}\{55\}\$ Operationen erwarten
 | |
|               würden, um den Schlüssel k zu erhalten und den MAC zu knacken (=
 | |
|               Nachrichten fälschen zu können).
 | |
|         \item
 | |
|               Leider ist die MAC-Definition unsicher:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Angenommen, ein Angreifer Eve, der die zwischen Alice und Bob
 | |
|                         ausgetauschten Nachrichten fälschen will, erhält eine Nachricht
 | |
|                         \$(m,C\_k(m))\$, die von Alice mit dem mit Bob geteilten geheimen
 | |
|                         Schlüssel k ,,geschützt'' wurde
 | |
|                   \item
 | |
|                         Eve kann eine Nachricht \$m'\$ konstruieren, die denselben MAC
 | |
|                         ergibt:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Sei \$y\_1,y\_2,...,y\_\{n-1\}\$ ein beliebiger 64-Bit-Wert
 | |
|                             \item
 | |
|                                   Definiere \$y\_n:= y\_1\textbackslash oplus
 | |
|                                   y\_2\textbackslash oplus...\textbackslash oplus
 | |
|                                   y\_\{n-1\}\textbackslash oplus \textbackslash delta(m)\$, und
 | |
|                                   \$m':=(y\_1,y\_2,...,y\_n)\$
 | |
|                             \item
 | |
|                                   Wenn Bob \$(m',C\_k(m))\$ von Eve erhält, die vorgibt, Alice zu
 | |
|                                   sein, wird er es als von Alice stammend akzeptieren, da
 | |
|                                   \$C\_k(m)\$ ein gültiger MAC für \$m'\$ ist
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Anwendungen für kryptographische Hash-Funktionen und
 | |
|         MACs}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Wichtigste Anwendung, die zum ursprünglichen Entwurf führte:
 | |
|               Integrität von Nachrichten
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein MDC stellt einen digitalen Fingerabdruck dar, der mit einem
 | |
|                         privaten Schlüssel signiert werden kann, z. B. mit dem RSA- oder
 | |
|                         ElGamal-Algorithmus, und es ist nicht möglich, zwei Nachrichten mit
 | |
|                         demselben Fingerabdruck zu erstellen, so dass ein bestimmter
 | |
|                         signierter Fingerabdruck von einem Angreifer nicht wiederverwendet
 | |
|                         werden kann
 | |
|                   \item
 | |
|                         Ein MAC über eine Nachricht m bescheinigt direkt, dass der Absender
 | |
|                         der Nachricht im Besitz des geheimen Schlüssels k ist und die
 | |
|                         Nachricht ohne Kenntnis dieses Schlüssels nicht verändert worden
 | |
|                         sein kann.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Andere Anwendungen, die eine gewisse Vorsicht erfordern:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Bestätigung von Wissen
 | |
|                   \item
 | |
|                         Schlüsselableitung
 | |
|                   \item
 | |
|                         Pseudo-Zufallszahlengenerierung
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Je nach Anwendung müssen weitere Anforderungen erfüllt werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Partielle Vorabbild-Resistenz: auch wenn nur ein Teil der Eingabe,
 | |
|                         z.B. t Bit, unbekannt ist, sollte es im Durchschnitt
 | |
|                         \$2\^{}\{t-1\}\$ Operationen benötigen, um diese Bits zu finden
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Angriffe basierend auf dem
 | |
|         Geburtstagsphänomen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Das Geburtstagsphänomen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wie viele Personen müssen sich in einem Raum befinden, damit die
 | |
|                         Wahrscheinlichkeit, dass es mindestens zwei Personen mit demselben
 | |
|                         Geburtstag gibt, größer als 0,5 ist?
 | |
|                   \item
 | |
|                         Der Einfachheit halber lassen wir den 29. Februar beiseite und
 | |
|                         nehmen an, dass jeder Geburtstag gleich wahrscheinlich ist
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Definieren Sie \$P(n,k):= Pr\${[}mindestens ein Duplikat in k
 | |
|               Elementen, wobei jedes Element einen von n gleich wahrscheinlichen
 | |
|               Werten zwischen 1 und n annehmen kann {]}
 | |
|         \item
 | |
|               Definieren Sie \$Q(n,k):= Pr\${[}kein Duplikat in k Artikeln, jeder
 | |
|               Artikel zwischen 1 und n {]}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wir können das erste Element aus n möglichen Werten wählen, das
 | |
|                         zweite Element aus \$n-1\$ möglichen Werten, usw.
 | |
|                   \item
 | |
|                         Die Anzahl der verschiedenen Möglichkeiten, k Elemente aus n Werten
 | |
|                         ohne Duplikate auszuwählen, ist also: \$N=n \textbackslash times
 | |
|                         (n-1)\textbackslash times ...\textbackslash times (n-k+1)=
 | |
|                         n!\textbackslash backslash(n-k)!\$
 | |
|                   \item
 | |
|                         Die Anzahl der verschiedenen Möglichkeiten, k Elemente aus n Werten
 | |
|                         auszuwählen, mit oder ohne Duplikate, ist: \$n\^{}k\$
 | |
|                   \item
 | |
|                         Also, \$Q(n,k)=N\textbackslash backslash
 | |
|                         n\^{}k=n!\textbackslash backslash((n-k)! \textbackslash times
 | |
|                         n\^{}k)\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wir haben:
 | |
|               \$P(n,k)=1-Q(n,k)=1-\textbackslash frac\{n!\}\{(n-k)!\textbackslash times
 | |
|               n\^{}k\}=1-\textbackslash frac\{n\textbackslash times(n-1)\textbackslash times...\textbackslash times(n-k+1)\}\{n\^{}k\}=1-{[}(1-\textbackslash frac\{1\}\{n\})\textbackslash times(1-\textbackslash frac\{2\}\{n\})\textbackslash times...\textbackslash times(1-\textbackslash frac\{k-1\}\{n\}){]}\$
 | |
|         \item
 | |
|               Wir werden die folgende Ungleichung verwenden: \$(1-x)
 | |
|               \textbackslash leq e\^{}\{-x\}\$ für alle \$x \textbackslash geq 0\$
 | |
|         \item
 | |
|               So:
 | |
|               \$P(n,k)\textgreater1-{[}(e\^{}\{-1/n\})\textbackslash times(e\^{}\{-2/n\})\textbackslash times...\textbackslash times(e\^{}\{-(k-1)/n\}){]}=1-e\^{}\{\textbackslash frac\{-k\textbackslash times(k-1)\}\{2n\}\}\$
 | |
|         \item
 | |
|               Im letzten Schritt haben wir die Gleichheit: \$1+2+...+(k-1)=(k\^{}2 -
 | |
|               k)\textbackslash backslash 2\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Übung: Beweisen Sie die obige Gleichheit durch Induktion
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kehren wir zu unserer ursprünglichen Frage zurück: Wie viele Personen
 | |
|               k müssen sich in einem Raum befinden, damit mindestens zwei Personen
 | |
|               mit demselben Geburtstag (von \$n=365\$ möglichen) mit der
 | |
|               Wahrscheinlichkeit \$\textbackslash geq 0,5\$ vorhanden sind?
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wir wollen also lösen:
 | |
|                         \$\textbackslash frac\{1\}\{2\}=1-e\^{}\{\textbackslash frac\{-k\textbackslash times(k-1)\}\{2n\}\}\textbackslash Leftrightarrow
 | |
|                         2=e\^{}\{\textbackslash frac\{k\textbackslash times(k-1)\}\{2n\}\}\textbackslash Leftrightarrow
 | |
|                         ln(2)=\textbackslash frac\{k\textbackslash times(k-1)\}\{2n\}\$
 | |
|                   \item
 | |
|                         Für große k können wir \$k\textbackslash times(k-1)\$ durch
 | |
|                         \$k\^{}2\$ approximieren, und wir erhalten:
 | |
|                         \$k=\textbackslash sqrt\{2 ln(2)n\}\textbackslash approx
 | |
|                         1,18\textbackslash sqrt\{n\}\$
 | |
|                   \item
 | |
|                         Für \$n=365\$ erhalten wir \$k=22,54\$, was der richtigen Antwort
 | |
|                         recht nahe kommt 23
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Was hat das mit MDCs zu tun?
 | |
|         \item
 | |
|               Wir haben gezeigt, dass bei n möglichen unterschiedlichen Werten die
 | |
|               Anzahl k der Werte, die man zufällig wählen muss, um mindestens ein
 | |
|               Paar identischer Werte zu erhalten, in der Größenordnung von
 | |
|               \$\textbackslash sqrt\{n\}\$ liegt.
 | |
|         \item
 | |
|               Betrachten wir nun den folgenden Angriff {[}Yuv79a{]}:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eve möchte, dass Alice eine Nachricht m1 signiert, die Alice
 | |
|                         normalerweise nie signieren würde. Eve weiß, dass Alice die Funktion
 | |
|                         MDC1(m) verwendet, um eine MDC von m zu berechnen, die eine Länge
 | |
|                         von r Bit hat, bevor sie diese MDC mit ihrem privaten Schlüssel
 | |
|                         signiert, was ihre digitale Signatur ergibt.
 | |
|                   \item
 | |
|                         Zunächst erzeugt Eve ihre Nachricht m1. Würde sie nun MDC1(m1)
 | |
|                         berechnen und dann versuchen, eine zweite harmlose Nachricht m2 zu
 | |
|                         finden, die zu demselben MDC führt, wäre ihr Suchaufwand im
 | |
|                         durchschnittlichen Fall in der Größenordnung von \$2\^{}\{(r-1)\}\$.
 | |
|                   \item
 | |
|                         Stattdessen nimmt sie eine beliebige harmlose Nachricht m2 und
 | |
|                         beginnt, Variationen m1' und m2' der beiden Nachrichten zu
 | |
|                         produzieren, z.B. durch Hinzufügen von -Kombinationen oder
 | |
|                         Variationen mit semantisch identischen Wörtern.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wie wir aus dem Geburtstagsphänomen gelernt haben, muss sie nur etwa
 | |
|               \$\textbackslash sqrt\{2\^{}r\}=2\^{}\{r/2\}\$ Variationen von jeder
 | |
|               der beiden Nachrichten produzieren, so dass die Wahrscheinlichkeit,
 | |
|               dass sie zwei Nachrichten m1' und m2' mit demselben MDC erhält,
 | |
|               mindestens 0,5 beträgt
 | |
|         \item
 | |
|               Da sie die Nachrichten zusammen mit ihren MDCs speichern muss, um eine
 | |
|               Übereinstimmung zu finden, liegt der Speicherbedarf ihres Angriffs in
 | |
|               der Größenordnung von \$2\^{}\{\textbackslash frac\{r\}\{2\}\}\$ und
 | |
|               der Rechenzeitbedarf in der gleichen Größenordnung
 | |
|         \item
 | |
|               Nachdem sie m1' und m2' mit \$MDC1(m1')=MDC1(m2')\$ gefunden hat,
 | |
|               fordert sie Alice auf, \$m2'\$ zu signieren. Eve kann dann diese
 | |
|               Unterschrift nehmen und behaupten, dass Alice \$m1'\$ unterschrieben
 | |
|               hat.
 | |
|         \item
 | |
|               Angriffe nach dieser Methode werden Geburtstagsangriffe genannt.
 | |
|         \item
 | |
|               Nehmen wir nun an, dass Alice RSA mit Schlüsseln der Länge 2048 Bit
 | |
|               und eine kryptographische Hashfunktion verwendet, die MDCs der Länge
 | |
|               96 Bit erzeugt.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eves durchschnittlicher Aufwand, zwei Nachrichten m1' und m2' wie
 | |
|                         oben beschrieben zu erzeugen, liegt in der Größenordnung von
 | |
|                         \$2\^{}\{48\}\$, was heute machbar ist. Das Knacken von
 | |
|                         RSA-Schlüsseln der Länge 2048 Bit ist mit den heutigen Algorithmen
 | |
|                         und Technologien bei weitem nicht möglich.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Übersicht über die gebräuchlichen
 | |
|         MDCs}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Kryptografische Hash-Funktionen zur Erstellung von MDCs:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Message Digest 5 (MD5):
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Erfunden von R. Rivest
 | |
|                             \item
 | |
|                                   Nachfolger von MD
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Sicherer Hash-Algorithmus 1 (SHA-1):
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Erfunden von der National Security Agency (NSA)
 | |
|                             \item
 | |
|                                   Der Entwurf wurde von MD inspiriert.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Sicherer Hash-Algorithmus 2 (SHA-2, auch SHA-256 und SHA-512)
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Ebenfalls von der National Security Agency (NSA) entwickelt
 | |
|                             \item
 | |
|                                   Auch Merkle-Dåmgard-Verfahren
 | |
|                             \item
 | |
|                                   Größere Blockgröße \& komplexere Rundenfunktion
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Sicherer Hash-Algorithmus 3 (SHA-3, Keccak)
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Gewinner eines offenen Wettbewerbs
 | |
|                             \item
 | |
|                                   Sogenannte Sponge-Konstruktion
 | |
|                             \item
 | |
|                                   Vielseitiger als frühere Hash-Funktionen
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nachrichten-Authentifizierungs-Codes (MACs):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         DES-CBC-MAC:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Verwendet den Data Encryption Standard im Cipher Block Chaining
 | |
|                                   Modus
 | |
|                             \item
 | |
|                                   Im Allgemeinen kann die CBC-MAC-Konstruktion mit jeder
 | |
|                                   Blockchiffre verwendet werden.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         MACs, die aus MDCs aufgebaut sind:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dieser sehr verbreitete Ansatz wirft einige kryptografische
 | |
|                                   Bedenken auf, da er einige implizite, aber nicht verifizierte
 | |
|                                   Annahmen über die Eigenschaften der MDCs trifft.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Authentifizierte Verschlüsselung mit zugehörigen Daten (AEAD)
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Galois-Counter-Verfahren (GCM)
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Verwendet eine Blockchiffre zur Verschlüsselung und
 | |
|                                   Authentifizierung von Daten
 | |
|                             \item
 | |
|                                   Schnell in Netzwerkanwendungen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Sponge Wrap
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Verwendet eine SHA-3 ähnliche Hash-Funktion zur Verschlüsselung
 | |
|                                   und Authentifizierung von Daten
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Gemeinsame Struktur von kryptografischen
 | |
|         Hash-Funktionen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               So wie viele der heutigen Blockchiffren der allgemeinen Struktur eines
 | |
|               Feistel-Netzwerks folgen, folgen auch viele der heute verwendeten
 | |
|               kryptografischen Hash-Funktionen einer gemeinsamen Struktur, der
 | |
|               sogenannten Merkle-Dåmgard-Struktur:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sei y eine beliebige Nachricht. Normalerweise wird die Länge der
 | |
|                         Nachricht an die Nachricht angehängt und auf ein Vielfaches einer
 | |
|                         Blockgröße b aufgefüllt. Bezeichnen wir
 | |
|                         \$(y\_0,y\_1,...,y\_\{L-1\})\$ die resultierende Nachricht, die aus
 | |
|                         L Blöcken der Größe b
 | |
|                   \item
 | |
|                         Die allgemeine Struktur ist wie folgt abgebildet:
 | |
|                         % \includegraphics{Assets/NetworkSecurity-feistel.png}
 | |
|                   \item
 | |
|                         CV ist ein Verkettungswert, mit \$CV\_0:= IV\$ und \$MDC(y) :=
 | |
|                         CV\_L\$
 | |
|                   \item
 | |
|                         f ist eine spezifische Kompressionsfunktion, die \$(n+b)\$ Bit auf n
 | |
|                         Bit komprimiert
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Hash-Funktion H lässt sich wie folgt zusammenfassen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$CV\_0 = IV =\$ anfänglicher n-Bit-Wert
 | |
|                   \item
 | |
|                         \$CV\_i = f(CV\_\{i -1\}, y\_\{i-1\})
 | |
|                         \textbackslash quad\textbackslash quad 1\textbackslash leq i
 | |
|                         \textbackslash leq L\$
 | |
|                   \item
 | |
|                         \$H(y) = CV\_L\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Es wurde gezeigt {[}Mer89a{]}, dass, wenn die Kompressionsfunktion f
 | |
|               kollisionssicher ist, die resultierende iterierte Hash-Funktion H
 | |
|               ebenfalls kollisionssicher ist.
 | |
|         \item
 | |
|               Die Kryptoanalyse kryptographischer Hash-Funktionen konzentriert sich
 | |
|               daher auf die interne Struktur der Funktion f und die Suche nach
 | |
|               effizienten Techniken zur Erzeugung von Kollisionen bei einer einzigen
 | |
|               Ausführung von f
 | |
|         \item
 | |
|               In erster Linie durch Geburtstagsangriffe motiviert, ist ein gängiger
 | |
|               Mindestvorschlag für n , die Bitlänge des Hashwerts, 160 Bit, da dies
 | |
|               einen Aufwand der Größenordnung \$2\^{}\{80\}\$ für einen Angriff
 | |
|               impliziert, der heute als undurchführbar gilt
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Der Message Digest 5}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               MD5 folgt der zuvor skizzierten allgemeinen Struktur (z. B.
 | |
|               {[}Riv92a{]}):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Nachricht y wird mit einer ,,1'' aufgefüllt, gefolgt von 0 bis
 | |
|                         511 ,,0'' Bits, so dass die Länge der resultierenden Nachricht
 | |
|                         kongruent 448 modulo 512 ist
 | |
|                   \item
 | |
|                         Die Länge der ursprünglichen Nachricht wird als 64-Bit-Wert
 | |
|                         hinzugefügt, so dass eine Nachricht entsteht, deren Länge ein
 | |
|                         ganzzahliges Vielfaches von 512 Bit ist.
 | |
|                   \item
 | |
|                         Diese neue Nachricht wird in Blöcke der Länge \$b=512\$ Bit
 | |
|                         unterteilt.
 | |
|                   \item
 | |
|                         Die Länge des Verkettungswertes ist \$n=128\$ Bit
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der Verkettungswert ist ,,strukturiert'' als vier 32-Bit-Register
 | |
|                                   A, B, C, D
 | |
|                             \item
 | |
|                                   Initialisierung:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             A := 0x 01 23 45 67
 | |
|                                       \item
 | |
|                                             B := 0x 89 AB CD EF
 | |
|                                       \item
 | |
|                                             C := 0x FE DC BA 98
 | |
|                                       \item
 | |
|                                             D := 0x 76 54 32 10
 | |
|                                   \end{itemize}
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Jeder Block der Nachricht \$y\_i\$ wird mit dem Verkettungswert
 | |
|                         \$CV\_i\$ mit der Funktion f verarbeitet, die intern durch 4 Runden
 | |
|                         zu je 16 Schritten realisiert ist
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Jede Runde ist ähnlich aufgebaut und verwendet eine Tabelle T, die
 | |
|                                   64 konstante Werte von je 32 Bit enthält,
 | |
|                             \item
 | |
|                                   Jede der vier Runden verwendet eine bestimmte logische Funktion g
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-md5.png}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Funktion g ist eine von vier verschiedenen logischen Funktionen
 | |
|                   \item
 | |
|                         \$y\_i{[}k{]}\$ bezeichnet das k-te\$ 32-Bit-Wort des
 | |
|                         Nachrichtenblocks i
 | |
|                   \item
 | |
|                         \$T{[}j{]}\$ ist der j-te Eintrag der Tabelle t, wobei j bei jedem
 | |
|                         Schritt modulo 64 inkrementiert wird
 | |
|                   \item
 | |
|                         CLS s bezeichnet die zyklische Linksverschiebung um s Bits, wobei s
 | |
|                         einem bestimmten Schema folgt.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der MD5-MDC über eine Nachricht ist der Inhalt des Verkettungswertes
 | |
|               CV nach Verarbeitung des letzten Nachrichtenblocks.
 | |
|         \item
 | |
|               Sicherheit von MD5:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Jedes Bit des 128-Bit-Hash-Codes ist eine Funktion eines jeden
 | |
|                         Eingabebits
 | |
|                   \item
 | |
|                         1996 veröffentlichte H. Dobbertin einen Angriff, der es erlaubt,
 | |
|                         eine Kollision für die Funktion f zu erzeugen (realisiert durch die
 | |
|                         oben beschriebenen 64 Schritte).
 | |
|                   \item
 | |
|                         Es dauerte bis 2004, bis eine erste Kollision gefunden wurde
 | |
|                         {[}WLYF04{]}.
 | |
|                   \item
 | |
|                         Inzwischen ist es möglich, Kollisionen innerhalb von Sekunden auf
 | |
|                         allgemeiner Hardware zu erzeugen {[}Kl06{]}.
 | |
|                   \item
 | |
|                         MD5 darf nicht in Betracht gezogen werden, wenn Kollisionssicherheit
 | |
|                         erforderlich ist!
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dies ist oft der Fall!
 | |
|                             \item
 | |
|                                   Beispiele: Zwei Postskripte mit unterschiedlichen Texten, aber
 | |
|                                   gleichen Hashes {[}LD05{]}, Zertifikate, eines für eine gesicherte
 | |
|                                   Domain und eines für eine eigene Zertifizierungsstelle
 | |
|                                   {[}LWW05{]}, Jede Nachricht, die erweiterbar ist {[}KK06{]}
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Resistenz gegen Preimage-Angriffe ist mit 2123.4 Berechnungen
 | |
|                         noch o.k{[}SA09{]}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Der sichere Hash-Algorithmus
 | |
|         SHA-1}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Auch SHA-1 folgt der gleichen Struktur wie oben beschrieben:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         SHA-1 arbeitet mit 512-Bit-Blöcken und erzeugt einen
 | |
|                         160-Bit-Hash-Wert.
 | |
|                   \item
 | |
|                         Da sein Design auch vom MD4-Algorithmus inspiriert wurde, ist seine
 | |
|                         Initialisierung im Grunde dieselbe wie die von MD5:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die Daten werden aufgefüllt, ein Längenfeld wird hinzugefügt und
 | |
|                                   die resultierende Nachricht wird als Blöcke der Länge 512 Bit
 | |
|                                   verarbeitet.
 | |
|                             \item
 | |
|                                   Der Verkettungswert ist als fünf 32-Bit-Register A, B, C, D, E
 | |
|                                   strukturiert
 | |
|                             \item
 | |
|                                   Initialisierung:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             A = 0x 67 45 23 01
 | |
|                                       \item
 | |
|                                             B = 0x EF CD AB 89
 | |
|                                       \item
 | |
|                                             C = 0x 98 BA DC FE
 | |
|                                       \item
 | |
|                                             D = 0x 10 32 54 76
 | |
|                                       \item
 | |
|                                             E = 0x C3 D2 E1 F
 | |
|                                   \end{itemize}
 | |
|                             \item
 | |
|                                   Die Werte werden im Big-Endian-Format gespeichert.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Jeder Block yi der Nachricht wird zusammen mit CVi in einem Modul
 | |
|                         verarbeitet, das die Kompressionsfunktion f in vier Runden zu je 20
 | |
|                         Schritten realisiert.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die Runden haben eine ähnliche Struktur, aber jede Runde verwendet
 | |
|                                   eine andere primitive logische Funktion \$f\_1, f\_2, f\_3,
 | |
|                                   f\_4\$.
 | |
|                             \item
 | |
|                                   Bei jedem Schritt wird eine feste additive Konstante \$K\_t\$
 | |
|                                   verwendet, die während einer Runde unverändert bleibt
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-sha1.png}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$t\textbackslash in\{0,...,15\}\textbackslash Rightarrow W\_t:=
 | |
|                         y\_i{[}t{]}\$
 | |
|                   \item
 | |
|                         \$t\textbackslash in\{16,...,79\}\textbackslash Rightarrow
 | |
|                         W\_t:=CLS\_1(W\_\{t-16\}\textbackslash oplus
 | |
|                         W\_\{t-14\}\textbackslash oplus W\_\{t-8\} \textbackslash oplus
 | |
|                         W\_\{t-3\})\$
 | |
|                   \item
 | |
|                         Nach Schritt 79 wird jedes Register A, B, C, D, E modulo
 | |
|                         \$2\^{}\{32\}\$ mit dem Wert des entsprechenden Registers vor
 | |
|                         Schritt 0 addiert, um \$CV\_\{i+1\}\$ zu berechnen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der SHA-1-MDC über eine Nachricht ist der Inhalt des Verkettungswertes
 | |
|               CV nach Verarbeitung des letzten Nachrichtenblocks.
 | |
|         \item
 | |
|               Vergleich zwischen SHA-1 und MD5:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Geschwindigkeit: SHA-1 ist etwa 25\% langsamer als MD5 (CV ist etwa
 | |
|                         25\% größer)
 | |
|                   \item
 | |
|                         Einfachheit und Kompaktheit: beide Algorithmen sind einfach zu
 | |
|                         beschreiben und zu implementieren und erfordern keine großen
 | |
|                         Programme oder Ersetzungstabellen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sicherheit von SHA-1:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Da SHA-1 MDCs der Länge 160 Bit erzeugt, wird erwartet, dass es eine
 | |
|                         bessere Sicherheit gegen Brute-Force- und Geburtstagsangriffe bietet
 | |
|                         als MD5.
 | |
|                   \item
 | |
|                         Einige inhärente Schwächen von Merkle-Dåmgard-Konstruktionen, z. B.
 | |
|                         {[}KK06{]}, sind vorhanden
 | |
|                   \item
 | |
|                         Im Februar 2005 veröffentlichten X. Wang et. al. einen Angriff, der
 | |
|                         es erlaubt, eine Kollision mit einem Aufwand von \$2\^{}\{69\}\$ zu
 | |
|                         finden, der in den folgenden Monaten auf \$2\^{}\{63\}\$ verbessert
 | |
|                         und in {[}WYY05a{]} veröffentlicht wurde
 | |
|                   \item
 | |
|                         Die Forschung ging weiter (z.B. {[}Man11{]}), und im Februar 2017
 | |
|                         wurde die erste tatsächliche Kollision gefunden (demonstriert mit
 | |
|                         einem veränderten PDF-Dokument)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               SHA-2-Familie
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Im Jahr 2001 veröffentlichte das NIST einen neuen Standard FIPS PUB
 | |
|                         180-2, der neue Varianten mit den Bezeichnungen SHA-256, SHA-384 und
 | |
|                         SHA-512 {[}NIST02{]} mit 256, 384 und 512 Bits enthält.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   SHA-224 wurde im Jahr 2004 hinzugefügt.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         SHA-224 und SHA-384 sind verkürzte Versionen von SHA-256 und SHA-512
 | |
|                         mit unterschiedlichen Initialisierungswerten
 | |
|                   \item
 | |
|                         SHA-2 verwendet ebenfalls die Merkle-Dåmgard-Konstruktion mit einer
 | |
|                         Blockgröße von 512 Bit (SHA-256) und 1024 Bit (SHA-512)
 | |
|                   \item
 | |
|                         Der interne Zustand ist in 8 Registern von 32 Bit (SHA-256) und 64
 | |
|                         Bit (SHA-512) organisiert
 | |
|                   \item
 | |
|                         64 Runden (SHA-256) oder 80 Runden (SHA-512)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ein Schritt
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-sha-2.png}
 | |
|                   \item
 | |
|                         \$t\textbackslash in\{0, ..., 15\}\textbackslash Rightarrow
 | |
|                         W\_t:=y\_i{[}t{]}\$
 | |
|                   \item
 | |
|                         \$t\textbackslash in\{16, ..., r\}\textbackslash Rightarrow
 | |
|                         W\_t:=W\_\{t-16\}\textbackslash oplus
 | |
|                         \textbackslash delta\_0(W\_\{t-15\})\textbackslash oplus
 | |
|                         W\_\{t-7\}\textbackslash oplus\textbackslash delta\_1(W\_\{t-2\})\$
 | |
|                   \item
 | |
|                         \$K\_t\$ ist der gebrochene Teil der Kubikwurzel aus der t-ten
 | |
|                         Primzahl
 | |
|                   \item
 | |
|                         Die ROTR- und Funktionen XOR-verknüpfen verschiedene Verschiebungen
 | |
|                         des Eingangswertes
 | |
|                   \item
 | |
|                         Ch und Maj sind logische Kombinationen der Eingabewerte
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               SHA-2-Familie
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Alles in allem sehr ähnlich zu SHA-1
 | |
|                   \item
 | |
|                         Aufgrund der Größe und der komplizierteren Rundungsfunktionen etwa
 | |
|                         30-50 Prozent langsamer als SHA-1 (variiert für 64-Bit- und
 | |
|                         32-Bit-Systeme!)
 | |
|                   \item
 | |
|                         Sicherheitsdiskussion:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Bereits 2004 wurde entdeckt, dass eine vereinfachte Version des
 | |
|                                   Algorithmus (mit XOR statt Addition und symmetrischen Konstanten)
 | |
|                                   hochkorrelierte Ausgaben erzeugt {[}GH04{]}
 | |
|                             \item
 | |
|                                   Für rundenreduzierte Versionen von SHA-2 gibt es
 | |
|                                   Pre-Image-Angriffe, die schneller sind als Brute-Force, aber sehr
 | |
|                                   unpraktisch (z.B. {[}AGM09{]})
 | |
|                             \item
 | |
|                                   Auch wenn Größe und Komplexität derzeit keine Angriffe zulassen,
 | |
|                                   ist die Situation unangenehm
 | |
|                             \item
 | |
|                                   Dies führte zur Notwendigkeit eines neuen SHA-3-Standards
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Der sichere Hash-Algorithmus
 | |
|         SHA-3}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Sicherheitsbedenken bezüglich SHA-1 und SHA-2 führten zu einem offenen
 | |
|               Wettbewerb des NIST, der 2007 begann
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         5 Finalisten ohne nennenswerte Schwächen
 | |
|                   \item
 | |
|                         Oktober 2012: NIST gibt bekannt, dass Keccak zu SHA-3 wird
 | |
|                   \item
 | |
|                         4 europäische Erfinder
 | |
|                   \item
 | |
|                         Einer davon ist Joan Daemen, der AES mitentwickelt hat
 | |
|                   \item
 | |
|                         SHA-3 ist sehr schnell, besonders in der Hardware
 | |
|                   \item
 | |
|                         Sehr gut dokumentiert und analysierbar
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Keccak basiert auf einer so genannten Schwammkonstruktion anstelle der
 | |
|               früheren Merkle-Dåmgard-Konstruktionen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vielseitiges Design, um fast alle symmetrischen kryptographischen
 | |
|                         Funktionen zu implementieren (allerdings ist nur das Hashing
 | |
|                         standardisiert)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Arbeitet normalerweise in 2 Phasen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         ,,Absorbieren'' von Informationen beliebiger Länge in 1600 Bit des
 | |
|                         internen Zustands
 | |
|                   \item
 | |
|                         ,,Auspressen'' (d.h. Ausgeben) von Hash-Daten beliebiger Länge (nur
 | |
|                         224, 256, 384 und 512 Bit standardisiert)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der interne Zustand ist in 2 Registern organisiert
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein Register der Größe r ist ,,public'': Eingabedaten werden in der
 | |
|                         Absorptionsphase mit XOR verknüpft, Ausgabedaten werden in der
 | |
|                         Quetschungsphase daraus abgeleitet
 | |
|                   \item
 | |
|                         Das Register der Größe c ist ,,privat''; Ein- und Ausgabe wirken
 | |
|                         sich nicht direkt auf es aus.
 | |
|                   \item
 | |
|                         In Keccak ist die Größe der Register 1600 Bits (d.h. \$c+r=1600\$
 | |
|                         Bits)
 | |
|                   \item
 | |
|                         Die Größe von c ist doppelt so groß wie die Länge des Ausgangsblocks
 | |
|                   \item
 | |
|                         Beide Register werden mit ,,0'' initialisiert
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Das Hashing erfolgt durch eine Funktion f, die die Register liest und
 | |
|               einen neuen Zustand ausgibt
 | |
|         \item
 | |
|               Sponge-Konstruktion
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-sha-3.png}
 | |
|                   \item
 | |
|                         Absorptionsphase: \$k + 1\$ Eingabeblöcke der Größe r werden in den
 | |
|                         Zustand gemischt
 | |
|                   \item
 | |
|                         Quetschphase: \$l + 1\$ Ausgangsblöcke der Größe r werden erzeugt
 | |
|                         (oft nur einer)
 | |
|                   \item
 | |
|                         Der letzte Eingabe- und Ausgabeblock kann aufgefüllt oder
 | |
|                         abgeschnitten werden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Funktion f
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Offensichtlich hängt die Sicherheit einer Sponge-Konstruktion von
 | |
|                         der Sicherheit von f
 | |
|                   \item
 | |
|                         Keccak verwendet 24 Runden von 5 verschiedenen Unterfunktionen
 | |
|                         \$(\textbackslash Sigma, \textbackslash ro,\textbackslash pi,$\chi$,$\iota$)\$,
 | |
|                         um f zu implementieren.
 | |
|                   \item
 | |
|                         Die Unterfunktionen operieren auf einem ,,dreidimensionalen''
 | |
|                         Bit-Array a \${[}5{]}{[}5{]}{[}w{]}\$, wobei w entsprechend der
 | |
|                         Größe r und c gewählt wird
 | |
|                   \item
 | |
|                         Alle Operationen werden über \$GF(2\^{}n)\$ durchgeführt.
 | |
|                   \item
 | |
|                         Jede der Unterfunktionen gewährleistet bestimmte Eigenschaften, z.B,
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Schnelle Diffusion der geänderten Bits im gesamten Zustand
 | |
|                                   (\$\textbackslash Sigma\$)
 | |
|                             \item
 | |
|                                   Langfristige Diffusion (\$\textbackslash pi\$)
 | |
|                             \item
 | |
|                                   Sicherstellung, dass f nichtlinear wird ($\chi$)
 | |
|                             \item
 | |
|                                   Rundenspezifische Substitution ($\iota$)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \$\textbackslash Sigma\$ wird zuerst ausgeführt, um sicherzustellen,
 | |
|               dass sich der geheime und der öffentliche Zustand schnell vermischen,
 | |
|               bevor andere Unterfunktionen angewendet werden.
 | |
|         \item
 | |
|               Sicherheit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Derzeit gibt es keine nennenswerten Schwachstellen in SHA-3
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die bekanntesten Pre-Image-Angriffe funktionieren nur mit einer
 | |
|                                   Funktion f mit bis zu 8 Runden
 | |
|                             \item
 | |
|                                   Zum Schutz vor internen Kollisionen sollten 11 Runden ausreichen.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Im Vergleich zu SHA-1 und SHA-2 werden zusätzliche
 | |
|                         Sicherheitseigenschaften garantiert, da der interne Zustand nie
 | |
|                         öffentlich gemacht wird
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Verhindert Angriffe, bei denen beliebige Informationen zu einer
 | |
|                                   gültigen geheimen Nachricht hinzugefügt werden
 | |
|                             \item
 | |
|                                   Bietet Chosen Target Forced Prefix (CTFP) Preimage-Resistenz
 | |
|                                   {[}KK06{]}, d.h. es ist nicht möglich, eine Nachricht
 | |
|                                   \$m=P\textbar\textbar S\$ zu konstruieren, wobei P fest und S
 | |
|                                   beliebig gewählt ist, s.t., \$H(m)=y\$
 | |
|                             \item
 | |
|                                   Für Merkle-Dåmgard-Konstruktionen ist dies nur so schwer wie die
 | |
|                                   Kollisionssicherheit
 | |
|                             \item
 | |
|                                   Keine schnelle Möglichkeit, Multikollisionen schnell zu erzeugen
 | |
|                                   {[}Jou04{]}
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Cipher Block Chaining Message Authentication
 | |
|         Codes}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Ein CBC-MAC wird berechnet, indem eine Nachricht im CBC-Modus
 | |
|               verschlüsselt wird und der letzte Chiffretextblock oder ein Teil davon
 | |
|               als MAC verwendet wird:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-CBC-mac.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Dieser MAC muss nicht mehr signiert werden, da er bereits mit einem
 | |
|               gemeinsamen Geheimnis K erzeugt wurde.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Es ist jedoch nicht möglich zu sagen, wer genau einen MAC erstellt
 | |
|                         hat, da jeder (Sender, Empfänger), der den geheimen Schlüssel K
 | |
|                         kennt, dies tun kann
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Dieses Verfahren funktioniert mit jeder Blockchiffre (DES, IDEA, ...)
 | |
|         \item
 | |
|               Sicherheit von CBC-MAC:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Da ein Angreifer K nicht kennt, ist ein Geburtstagsangriff sehr viel
 | |
|                         schwieriger (wenn nicht gar unmöglich) zu starten
 | |
|                   \item
 | |
|                         Ein Angriff auf einen CBC-MAC erfordert bekannte Paare (Nachricht,
 | |
|                         MAC)
 | |
|                   \item
 | |
|                         Dies ermöglicht kürzere MACs
 | |
|                   \item
 | |
|                         Ein CBC-MAC kann optional verstärkt werden, indem man sich auf einen
 | |
|                         zweiten Schlüssel \$K'\textbackslash not= K\$ einigt und eine
 | |
|                         dreifache Verschlüsselung des letzten Blocks durchführt:
 | |
|                         \$MAC:=E(K,D(K',E(K,C\_\{n-1\})))\$
 | |
|                   \item
 | |
|                         Dadurch verdoppelt sich der Schlüsselraum bei nur geringem
 | |
|                         Rechenaufwand
 | |
|                   \item
 | |
|                         Die Konstruktion ist nicht sicher, wenn die Nachrichtenlängen
 | |
|                         variieren!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Es gibt auch einige Vorschläge, MDCs aus symmetrischen Blockchiffren
 | |
|               zu erzeugen, indem der Schlüssel auf einen festen (bekannten) Wert
 | |
|               gesetzt wird:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wegen der relativ kleinen Blockgröße von 64 Bit der meisten gängigen
 | |
|                         Blockchiffren bieten diese Verfahren keine ausreichende Sicherheit
 | |
|                         gegen Geburtstagsangriffe.
 | |
|                   \item
 | |
|                         Da symmetrische Blockchiffren mehr Rechenaufwand erfordern als
 | |
|                         spezielle kryptografische Hash-Funktionen, sind diese Verfahren
 | |
|                         relativ langsam.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Konstruktion eines MAC aus einem
 | |
|         MDC}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Grund für die Konstruktion von MACs aus MDCs Kryptografische
 | |
|               Hash-Funktionen laufen im Allgemeinen schneller ab als symmetrische
 | |
|               Blockchiffren
 | |
|         \item
 | |
|               Grundidee: ,,mix'' einen geheimen Schlüssel K mit der Eingabe und
 | |
|               berechne einen MDC
 | |
|         \item
 | |
|               Die Annahme, dass ein Angreifer K kennen muss, um einen gültigen MAC
 | |
|               zu erzeugen, wirft dennoch einige kryptografische Probleme auf
 | |
|               (zumindest für Merkle-Dåmgard-Hash-Funktionen):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Konstruktion \$H(K\textbar\textbar m)\$ ist nicht sicher (siehe
 | |
|                         Anmerkung 9.64 in {[}Men97a{]})
 | |
|                   \item
 | |
|                         Die Konstruktion \$H(m\textbar\textbar K)\$ ist nicht sicher (siehe
 | |
|                         Bemerkung 9.65 in {[}Men97a{]})
 | |
|                   \item
 | |
|                         Die Konstruktion
 | |
|                         \$H(K\textbar\textbar p\textbar\textbar m\textbar\textbar K)\$, bei
 | |
|                         der p ein zusätzliches Auffüllfeld bezeichnet, bietet keine
 | |
|                         ausreichende Sicherheit (siehe Anmerkung 9.66 in {[}Men97a{]})
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die am häufigsten verwendete Konstruktion ist:
 | |
|               \$H(K\textbackslash oplus p\_1\textbar\textbar{}
 | |
|               H(K\textbackslash oplus p\_2\textbar\textbar{} m))\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Schlüssel wird mit 0's aufgefüllt, um den Schlüssel zu einem
 | |
|                         Eingabeblock der kryptographischen Hashfunktion aufzufüllen
 | |
|                   \item
 | |
|                         Zwei verschiedene konstante Muster \$p\_1\$ und \$p\_2\$ werden mit
 | |
|                         dem aufgefüllten Schlüssel XOR-verknüpft
 | |
|                   \item
 | |
|                         Dieses Schema scheint sicher zu sein (siehe Anmerkung 9.67 in
 | |
|                         {[}Men97a{]})
 | |
|                   \item
 | |
|                         Es wurde in RFC 2104 {[}Kra97a{]} standardisiert und wird HMAC
 | |
|                         genannt.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Authentifizierte Verschlüsselung mit zugehörigen Daten
 | |
|         (AEAD)
 | |
|         Modi}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Normalerweise sind die Daten nicht authentifiziert oder verschlüsselt,
 | |
|               sondern verschlüsselt UND authentifiziert (Blöcke \$P\_0...P\_n\$)
 | |
|         \item
 | |
|               Manchmal müssen zusätzliche Daten authentifiziert werden (z.B.
 | |
|               Paketköpfe), im Folgenden mit \$A\_0...A\_m\$ bezeichnet
 | |
|         \item
 | |
|               führte zur Entwicklung von AEAD-Betriebsarten
 | |
|         \item
 | |
|               Beispiele hierfür sind
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Galois/Zähler-Modus (GCM)
 | |
|                   \item
 | |
|                         Zähler mit CBC-MAC (CCM)
 | |
|                   \item
 | |
|                         Offset-Codebuch-Modus (OCM)
 | |
|                   \item
 | |
|                         SpongeWrap - eine Methode zur Verwendung von Keccak für den
 | |
|                         AEAD-Betrieb
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Galois/Zähler-Modus (GCM)
 | |
|     {[}MV04{]}}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Beliebter AEAD-Modus
 | |
|         \item
 | |
|               NIST-Standard, Teil von IEEE 802.1AE, IPsec, TLS, SSH usw.
 | |
|         \item
 | |
|               Frei von Patenten
 | |
|         \item
 | |
|               Wird wegen seiner hohen Geschwindigkeit hauptsächlich in
 | |
|               Netzwerkanwendungen eingesetzt
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Äußerst effizient in der Hardware
 | |
|                   \item
 | |
|                         Prozessorunterstützung auf neueren x86-CPUs
 | |
|                   \item
 | |
|                         Zeitintensive Aufgaben können vorberechnet und parallelisiert werden
 | |
|                   \item
 | |
|                         Keine Notwendigkeit für Auffüllungen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Verwendet konventionelle Blockchiffre mit 128-Bit-Blockgröße (z. B.
 | |
|               AES)
 | |
|         \item
 | |
|               Berechnet MAC durch Multiplikationen und Additionen in
 | |
|               \$GF(2\^{}\{128\})\$ über das irreduzible Polynom
 | |
|               \$x\^{}\{128\}+x\^{}\{7\}+x\^{}\{2\}+x+1\$
 | |
|         \item
 | |
|               Erfordert nur \$n+1\$ Blockchiffre-Aufrufe pro Paket (n = Länge der
 | |
|               verschlüsselten und authentifizierten Daten)
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-gcm.png}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$I\_0\$ wird mit dem IV und einem Padding oder einem Hash des IV
 | |
|                         initialisiert (wenn er nicht 96 Bit beträgt)
 | |
|                   \item
 | |
|                         \$\textbackslash circ H\$ ist \$GF(2\^{}\{128\})\$ Multiplikation
 | |
|                         mit \$H=E(K,0\^{}\{128\})\$
 | |
|                   \item
 | |
|                         Die Eingabeblöcke \$A\_m\$ und \$P\_n\$ werden auf 128 Bit
 | |
|                         aufgefüllt
 | |
|                   \item
 | |
|                         \$A\_m\$ und \$C\_n\$ werden vor der Ausgabe auf die Originalgröße
 | |
|                         gekürzt
 | |
|                   \item
 | |
|                         Die letzte Authentifizierung verwendet 64 Bit kodierte Bitlängen von
 | |
|                         A und C
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sicherheit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schneller Modus, erfordert aber einige Sorgfalt:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Erwiesenermaßen sicher (unter bestimmten Voraussetzungen, z. B.
 | |
|                                   wenn die verwendete Blockchiffre nicht von Zufallszahlen
 | |
|                                   unterscheidbar ist), aber die Konstruktion ist anfällig:
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         IVs MÜSSEN NICHT wiederverwendet werden, da sonst Datenströme
 | |
|                         XOR-verknüpft werden können und das XOR der Datenströme
 | |
|                         wiederhergestellt werden kann, was zu einer sofortigen
 | |
|                         Wiederherstellung des geheimen Werts ,,H'' führen kann
 | |
|                   \item
 | |
|                         H hat einen möglichen schwachen Wert \$0\^{}\{128\}\$, in diesem
 | |
|                         Fall wird die Authentifizierung nicht funktionieren, und wenn IVs
 | |
|                         mit einer anderen Länge als 96 Bits verwendet werden, wird \$C\_0\$
 | |
|                         immer gleich sein!
 | |
|                   \item
 | |
|                         Einige andere Schlüssel erzeugen Hash-Schlüssel mit einer niedrigen
 | |
|                         Ordnung, was vermieden werden muss... {[}Saa11{]}
 | |
|                   \item
 | |
|                         Erfolgreiche Fälschungsversuche können Informationen über H
 | |
|                         durchsickern lassen, daher MÜSSEN kurze MAC-Längen vermieden oder
 | |
|                         risikominimiert werden {[}Dwo07{]}
 | |
|                   \item
 | |
|                         Die erreichte Sicherheit ist nur \$2\^{}\{t-k\}\$ und nicht
 | |
|                         \$2\^{}t\$ (für MAC-Länge t und Anzahl der Blöcke \$2\^{}k\$), da
 | |
|                         Blöcke modifiziert werden können, um nur Teile des MAC zu ändern
 | |
|                         {[}Fer05{]}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Kleiner Exkurs: Rechenoperationen in
 | |
|     \$GF(2\^{}n)\$}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Galoisfeld-Arithmetik definiert über Termen (z.B.
 | |
|               \$a\_3x\^{}3+a\_2x\^{}2+a\_1x+a\_0\$)
 | |
|         \item
 | |
|               Koeffizienten sind Elemente des Feldes
 | |
|               \$\textbackslash matbb\{Z\}\_2\$, d.h. entweder 0 oder 1
 | |
|         \item
 | |
|               Oft werden nur die Koeffizienten gespeichert, so wird aus x\^{}4
 | |
|               +x\^{}2 +x\^{}1 0x16
 | |
|         \item
 | |
|               Die Addition in \$GF(2\^{}n)\$ ist einfach die Addition von Termen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Da gleiche Koeffizienten auf 0 abbilden, einfach XOR der Werte!
 | |
|                   \item
 | |
|                         Extrem schnell in Hard- und Software!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Multiplikation in \$GF(2\^{}n)\$ ist Polynommultiplikation und
 | |
|               anschließende Modulodivision durch ein irreduzibles Polynom vom Grad n
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Irreduzible Polynome sind nicht ohne Rest durch irgendein anderes
 | |
|                         Polynom teilbar, außer durch ,,1'', ähnlich wie Primzahlen in GF
 | |
|                   \item
 | |
|                         Kann durch eine Reihe von Verschiebe- und XOR-Operationen
 | |
|                         implementiert werden
 | |
|                   \item
 | |
|                         Sehr schnell in Hardware oder auf neueren Intel-CPUs (mit
 | |
|                         CLMUL-Operationen)
 | |
|                   \item
 | |
|                         Modulo-Operation kann wie bei einer regulären CRC-Berechnung
 | |
|                         durchgeführt werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Addition Beispiel:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$x\^{}3 +x+1 x\textbackslash oplus x\^{}2+x = x\^{}3 +x\^{}2 +1
 | |
|                         \textbackslash leftrightarrow\$ 0x0B XOR 0x06 = 0x0D
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Multiplikationsbeispiel (über \$x\^{}4 +x+1\$):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$x\^{}3 +x+1\textbackslash circ x\^{}2+x =
 | |
|                         x\^{}5+x\^{}3+x\^{}2\textbackslash oplus
 | |
|                         x\^{}4+x\^{}2+x\textbackslash{} MOD\textbackslash{}
 | |
|                         x\^{}4+x+1=x\^{}5+x\^{}4+x\^{}3+x\textbackslash{}
 | |
|                         MOD\textbackslash{} x\^{}4+x+1 = x\^{}3 +x\^{}2 +x+1\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Elemente von \$GF(2\^{}n)\$ (mit Ausnahme von 1 und dem irreduziblen
 | |
|               Polynom) können ein Generator für die Gruppe sein
 | |
|         \item
 | |
|               Beispiel für x und das Polynom
 | |
|               \$x\^{}4+x+1:x,x\^{}2,x\^{}3,x+1,x\^{}2+x,x\^{}3+x\^{}2,x\^{}3+x+1,x\^{}2
 | |
|               +1,x\^{}3+x,x\^{}2+x+1,x\^{}3+x\^{}2+x,x\^{}3+x\^{}2+x+1,x\^{}3+x\^{}2+1,x\^{}3+1,1,x,...\$
 | |
|         \item
 | |
|               Andere Konzepte endlicher Gruppen gelten ebenfalls, z. B. hat jedes
 | |
|               Element ein multiplikatives inverses Element
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kann durch eine angepasste Version des Erweiterten Euklidischen
 | |
|                         Algorithmus gefunden werden
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SpongeWrap}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Durch Verwendung von SHA-3 ist es auch möglich, ein AEAD-Konstrukt zu
 | |
|               implementieren {[}BDP11a{]}
 | |
|         \item
 | |
|               Die Konstruktion ist sehr einfach und vergleichsweise leicht zu
 | |
|               verstehen
 | |
|         \item
 | |
|               Verwendet den sogenannten Duplex-Modus für Sponge-Funktionen, bei dem
 | |
|               Schreib- und Leseoperationen verschachtelt werden
 | |
|         \item
 | |
|               Erfordert kein Auffüllen der Daten auf eine bestimmte Blockgröße
 | |
|         \item
 | |
|               Kann nicht parallelisiert werden
 | |
|         \item
 | |
|               Sicherheit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Noch nicht weit verbreitet, aber mehrere Aspekte haben sich als
 | |
|                         genauso sicher wie SHA-3 im standardisierten Modus erwiesen
 | |
|                   \item
 | |
|                         Wenn die authentifizierten Daten A keine eindeutige IV enthalten,
 | |
|                         wird derselbe Schlüsselstrom erzeugt (ermöglicht die
 | |
|                         Wiederherstellung eines Blocks XOR-verschlüsselter Daten)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-sponge-wrap.png}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vereinfachte Version, bei der die Länge von Schlüssel und MAC
 | |
|                         kleiner sein muss als die Blockgröße
 | |
|                   \item
 | |
|                         Auffüllungen mit einem einzelnen ,,0''- oder ,,1''-Bit stellen
 | |
|                         sicher, dass verschiedene Datenblocktypen gut voneinander getrennt
 | |
|                         sind
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Zufallszahlengenerierung}
 | |
| 
 | |
| 
 | |
|     \subsection{Aufgaben der
 | |
|         Schlüsselverwaltung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Erzeugung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Für die Sicherheit ist es von entscheidender Bedeutung, dass die
 | |
|                         Schlüssel mit einem wirklich zufälligen oder zumindest
 | |
|                         pseudozufälligen Generierungsverfahren erzeugt werden (siehe unten).
 | |
|                   \item
 | |
|                         Andernfalls könnte ein Angreifer den Schlüsselgenerierungsprozess
 | |
|                         reproduzieren und den zur Sicherung einer bestimmten Kommunikation
 | |
|                         verwendeten Schlüssel leicht finden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Verteilung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Verteilung einiger anfänglicher Schlüssel muss in der Regel
 | |
|                         manuell / "out of band" erfolgen.
 | |
|                   \item
 | |
|                         Die Verteilung von Sitzungsschlüsseln wird in der Regel während
 | |
|                         eines Authentifizierungsaustauschs durchgeführt.
 | |
|                   \item
 | |
|                         Beispiele: Diffie-Hellman, Otway-Rees, Kerberos, X.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Speicherung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schlüssel, insbesondere Authentifizierungsschlüssel, sollten sicher
 | |
|                         gespeichert werden:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   entweder verschlüsselt mit einer schwer zu erratenden Passphrase,
 | |
|                                   oder besser
 | |
|                             \item
 | |
|                                   in einem sicheren Gerät wie einer Smart-Card
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Entzug:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn ein Schlüssel kompromittiert wurde, sollte es möglich sein,
 | |
|                         diesen Schlüssel zu widerrufen, damit er nicht mehr missbraucht
 | |
|                         werden kann (vgl. X.509).
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Vernichtung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schlüssel, die nicht mehr verwendet werden (z. B. alte
 | |
|                         Sitzungsschlüssel), sollten sicher vernichtet werden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wiederherstellung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn ein Schlüssel verloren gegangen ist (z. B. defekte Chipkarte,
 | |
|                         Diskette, versehentliches Löschen), sollte er wiederhergestellt
 | |
|                         werden können, um Datenverluste zu vermeiden.
 | |
|                   \item
 | |
|                         Die Wiederherstellung von Schlüsseln ist nicht zu verwechseln mit
 | |
|                         der Schlüsselhinterlegung
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Hinterlegung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Mechanismen und Architekturen, die es staatlichen Stellen (und nur
 | |
|                         diesen) ermöglichen sollen, Sitzungsschlüssel zu erhalten, um zu
 | |
|                         Strafverfolgungszwecken die Kommunikation abzuhören / gespeicherte
 | |
|                         Daten zu lesen
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wenn ich meinen Schlüssel zurückbekomme, ist es
 | |
|                                   Schlüsselwiederherstellung, wenn du meinen Schlüssel
 | |
|                                   zurückbekommst, ist es Schlüsselhinterlegung...'')
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Zufalls- und
 | |
|         Pseudo-Zufallszahlengenerierung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Definition: ,,Ein Zufallsbitgenerator ist ein Gerät oder ein
 | |
|               Algorithmus, der eine Folge statistisch unabhängiger und
 | |
|               unverfälschter Binärziffern ausgibt.''
 | |
|         \item
 | |
|               Bemerkung: Ein Zufallsbitgenerator kann zur Erzeugung gleichmäßig
 | |
|               verteilter Zufallszahlen verwendet werden, z. B. kann eine zufällige
 | |
|               ganze Zahl im Intervall \${[}0,n{]}\$ erhalten werden, indem eine
 | |
|               zufällige Bitfolge der Länge \$\textbackslash lfloor lg
 | |
|               n\textbackslash rfloor+1\$ erzeugt und in eine Zahl umgewandelt wird.
 | |
|               Ist die resultierende ganze Zahl größer als n, so kann sie verworfen
 | |
|               werden, und der Vorgang wird so lange wiederholt, bis eine ganze Zahl
 | |
|               im gewünschten Bereich erzeugt worden ist.
 | |
|         \item
 | |
|               Definition: Ein Pseudo-Zufallsbitgenerator (PRBG) ist ein
 | |
|               deterministischer Algorithmus, der bei einer wirklich zufälligen
 | |
|               Binärfolge der Länge k eine Binärfolge der Länge
 | |
|               \$m\textgreater\textgreater k\$ ausgibt, die ,,zufällig'' erscheint.
 | |
|               Die Eingabe in den PRBG wird als Seed bezeichnet, die Ausgabe als
 | |
|               pseudozufällige Bitfolge.
 | |
|         \item
 | |
|               Bemerkungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Ausgabe eines PRBG ist nicht zufällig, tatsächlich ist die
 | |
|                         Anzahl der möglichen Ausgabesequenzen der Länge m höchstens ein
 | |
|                         kleiner Bruchteil \$2\^{}k/2\^{}m\$, da der PRBG immer dieselbe
 | |
|                         Ausgabesequenz für einen (festen) Seed erzeugt
 | |
|                   \item
 | |
|                         Die Motivation für die Verwendung einer PRBG ist, dass es zu teuer
 | |
|                         sein könnte, echte Zufallszahlen der Länge m zu erzeugen, z. B.
 | |
|                         durch Münzwurf, so dass nur eine kleinere Menge von Zufallsbits
 | |
|                         erzeugt wird und dann aus den k echten Zufallsbits eine
 | |
|                         pseudozufällige Bitfolge erzeugt wird
 | |
|                   \item
 | |
|                         Um Vertrauen in die ,,Zufälligkeit'' einer Pseudo-Zufallsfolge zu
 | |
|                         gewinnen, werden statistische Tests mit den erzeugten Folgen
 | |
|                         durchgeführt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Beispiel:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein linearer Kongruenzgenerator erzeugt eine Pseudo-Zufallsfolge von
 | |
|                         Zahlen \$y\_1,y\_2, ...\$ gemäß der linearen Rekursion \$y\_i=
 | |
|                         a\textbackslash times y\_\{i-1\} + b\textbackslash{}
 | |
|                         mod\textbackslash{} q\$, wobei \$a, b, q\$ Parameter sind, die den
 | |
|                         PRBG charakterisieren
 | |
|                   \item
 | |
|                         Leider ist dieser Generator auch dann vorhersehbar, wenn \$a, b\$
 | |
|                         und \$q\$ unbekannt sind, und sollte daher nicht für
 | |
|                         kryptographische Zwecke verwendet werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sicherheitsanforderungen an PRBGs für die Verwendung in der
 | |
|               Kryptographie:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Als Mindestsicherheitsanforderung sollte die Länge k des Seeds einer
 | |
|                         PRBG so groß sein, dass eine Brute-Force-Suche über alle Seeds für
 | |
|                         einen Angreifer nicht durchführbar ist
 | |
|                   \item
 | |
|                         Die Ausgabe einer PRBG sollte statistisch nicht von echten
 | |
|                         Zufallssequenzen unterscheidbar sein.
 | |
|                   \item
 | |
|                         Die Ausgabebits sollten für einen Angreifer mit begrenzten
 | |
|                         Ressourcen unvorhersehbar sein, wenn er den Seed nicht kennt.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Definition: Ein PRBG besteht alle statistischen Polynomialzeit-Tests,
 | |
|               wenn kein deterministischer Polynomialzeit-Algorithmus zwischen einer
 | |
|               Ausgangssequenz des Generators und einer echten Zufallssequenz
 | |
|               derselben Länge mit einer Wahrscheinlichkeit deutlich größer als 0
 | |
|               unterscheiden kann.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Polynomialzeit-Algorithmus bedeutet, dass die Laufzeit des
 | |
|                         Algorithmus durch ein Polynom in der Länge m der Sequenz begrenzt
 | |
|                         ist
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Definition: Ein PRBG besteht den Next-Bit-Test, wenn es keinen
 | |
|               deterministischen Polynomialzeit-Algorithmus gibt, der bei Eingabe der
 | |
|               ersten m Bits einer Ausgangssequenz \$s\$ das \$(m+1)\$-te Bit
 | |
|               \$s\_\{m+1\}\$ der Ausgangssequenz mit einer Wahrscheinlichkeit
 | |
|               deutlich größer als 0 vorhersagen kann.
 | |
|         \item
 | |
|               Theorem (Universalität des Next-Bit-Tests): Wenn eine PRBG den
 | |
|               Next-Bit-Test \$\textbackslash Leftrightarrow\$ besteht, dann besteht
 | |
|               sie alle statistischen Polynomialzeittests
 | |
|         \item
 | |
|               Definition: Ein PRBG, der den Next-Bit-Test besteht - möglicherweise
 | |
|               unter einer plausiblen, aber unbewiesenen mathematischen Annahme wie
 | |
|               der Unlösbarkeit des Faktorisierungsproblems für große ganze Zahlen -
 | |
|               wird als kryptographisch sicherer Pseudo-Zufallsgenerator (CSPRBG)
 | |
|               bezeichnet
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Zufallszahlengenerierung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Hardware-basierte Zufallsbit-Generatoren basieren auf physikalischen
 | |
|               Phänomenen, wie:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         die verstrichene Zeit zwischen der Emission von Teilchen beim
 | |
|                         radioaktiven Zerfall,
 | |
|                   \item
 | |
|                         thermisches Rauschen einer Halbleiterdiode oder eines Widerstandes,
 | |
|                   \item
 | |
|                         Frequenzinstabilität eines frei laufenden Oszillators,
 | |
|                   \item
 | |
|                         der Betrag, um den ein Metall-Isolator-Halbleiter-Kondensator
 | |
|                         während eines bestimmten Zeitraums aufgeladen wird,
 | |
|                   \item
 | |
|                         Luftturbulenzen in einem versiegelten Festplattenlaufwerk, die
 | |
|                         zufällige Schwankungen in den Sektor-Lese-Latenzen des
 | |
|                         Festplattenlaufwerks verursachen, und
 | |
|                   \item
 | |
|                         Ton von einem Mikrofon oder Videoeingang von einer Kamera
 | |
|                   \item
 | |
|                         der Zustand einer ungeraden Anzahl von kreisförmig verbundenen
 | |
|                         NOT-Gattern
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ein hardwarebasierter Zufallsbitgenerator sollte idealerweise in einer
 | |
|               manipulationssicheren Vorrichtung untergebracht und so vor möglichen
 | |
|               Angreifern geschützt sein.
 | |
|         \item
 | |
|               Softwarebasierte Zufallsbit-Generatoren können auf Prozessen basieren
 | |
|               wie
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         der Systemuhr,
 | |
|                   \item
 | |
|                         der verstrichenen Zeit zwischen Tastenanschlägen oder
 | |
|                         Mausbewegungen,
 | |
|                   \item
 | |
|                         Inhalt von Eingabe-/Ausgabepuffern
 | |
|                   \item
 | |
|                         Benutzereingaben und
 | |
|                   \item
 | |
|                         Werte des Betriebssystems wie Systemauslastung und
 | |
|                         Netzwerkstatistiken
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Idealerweise sollten mehrere Zufallsquellen ,,gemischt'' werden, z. B.
 | |
|               durch Verkettung ihrer Werte und Berechnung eines kryptografischen
 | |
|               Hashwerts für den kombinierten Wert, um zu verhindern, dass ein
 | |
|               Angreifer den Zufallswert erraten kann
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wird z. B. nur die Systemuhr als Zufallsquelle verwendet, könnte ein
 | |
|                         Angreifer die aus dieser Zufallsquelle gewonnenen Zufallszahlen
 | |
|                         erraten, wenn er weiß, wann sie erzeugt wurden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Verzerrung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Betrachten wir einen Zufallsgenerator, der verzerrte, aber
 | |
|                         unkorrelierte Bits erzeugt, z. B. 1en mit der Wahrscheinlichkeit
 | |
|                         \$p\textbackslash not= 0,5\$ und 0en mit der Wahrscheinlichkeit
 | |
|                         \$1-p\$, wobei p unbekannt, aber fest ist
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die folgende Technik kann verwendet werden, um eine Zufallsfolge zu
 | |
|               erhalten, die unkorreliert und unverzerrt ist:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Ausgangssequenz des Generators wird in Bitpaare gruppiert
 | |
|                   \item
 | |
|                         Alle Paare 00 und 11 werden verworfen.
 | |
|                   \item
 | |
|                         Für jedes Paar 10 erzeugt der unvoreingenommene Generator eine 1 und
 | |
|                         für jedes Paar 01 eine 0.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ein weiteres praktisches (wenn auch nicht beweisbares) Verfahren zur
 | |
|               Entzerrung ist die Weiterleitung von Sequenzen, deren Bits korreliert
 | |
|               oder verzerrt sind, durch eine kryptografische Hash-Funktion wie MD5
 | |
|               oder SHA-1
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Statistische Tests für
 | |
|         Zufallszahlen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Mit den folgenden Tests lässt sich überprüfen, ob eine generierte
 | |
|               Zufalls- oder Pseudozufallsfolge bestimmte statistische Eigenschaften
 | |
|               nicht erfüllt:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Monobit-Test: Gibt es gleich viele 1en wie 0en?
 | |
|                   \item
 | |
|                         Serieller Test (Zwei-Bit-Test): Gibt es gleich viele 00-, 01-, 10-,
 | |
|                         11-Paare?
 | |
|                   \item
 | |
|                         Poker-Test: Gibt es gleich viele Sequenzen ni der Länge q, die mit
 | |
|                         \$q\$ den gleichen Wert haben, so dass \$\textbackslash lfloor
 | |
|                         m/q\textbackslash rfloor\textbackslash geq 5\textbackslash times
 | |
|                         (2\^{}q)\$
 | |
|                   \item
 | |
|                         Test auf Durchläufe: Entspricht die Anzahl der Läufe (Sequenzen, die
 | |
|                         nur entweder 0 oder 1 enthalten) unterschiedlicher Länge den
 | |
|                         Erwartungen für Zufallszahlen?
 | |
|                   \item
 | |
|                         Autokorrelationstest: Gibt es Korrelationen zwischen der Sequenz und
 | |
|                         (nicht-zyklischen) verschobenen Versionen davon?
 | |
|                   \item
 | |
|                         Maurer's Universal Test: Kann die Sequenz komprimiert werden?
 | |
|                   \item
 | |
|                         NIST SP 800-22: Standardisierte Testsuite, umfasst die oben
 | |
|                         genannten und weitere fortgeschrittene Tests
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Sichere
 | |
|         Pseudo-Zufallszahlengenerierung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Es gibt eine Reihe von Algorithmen, die kryptografische
 | |
|               Hash-Funktionen oder Verschlüsselungsalgorithmen zur Erzeugung von
 | |
|               kryptografisch sicheren Pseudozufallszahlen verwenden.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Obwohl diese Verfahren nicht als sicher bewiesen werden können,
 | |
|                         scheinen sie für die meisten praktischen Situationen ausreichend
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ein solcher Ansatz ist der Generator ANSI X9.17:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eingabe: ein zufälliger und geheimer 64-Bit-Seed s, eine ganze Zahl
 | |
|                         m und ein 3-DES-Schlüssel K
 | |
|                   \item
 | |
|                         Ausgabe: m pseudo-zufällige 64-Bit-Strings \$y\_1,y\_2,...Y\_m\$
 | |
| 
 | |
|                         \begin{enumerate}
 | |
|                             \def\labelenumi{\arabic{enumi}.}
 | |
|                             \item
 | |
|                                   \$q = E(K, Date\_Time)\$
 | |
|                             \item
 | |
|                                   For i von 1 bis m do
 | |
| 
 | |
|                                   \begin{enumerate}
 | |
|                                       \def\labelenumii{\arabic{enumii}.}
 | |
|                                       \item
 | |
|                                             \$x\_i = E(K, (q\textbackslash oplus s)\$
 | |
|                                       \item
 | |
|                                             \$s = E(K, (x\_i\textbackslash oplus q)\$
 | |
|                                   \end{enumerate}
 | |
|                             \item
 | |
|                                   \$Return(x\_1,x\_2,...x\_m)\$
 | |
|                         \end{enumerate}
 | |
|                   \item
 | |
|                         Diese Methode ist eine vom U.S. Federal Information Processing
 | |
|                         Standard (FIPS) zugelassene Methode zur pseudozufälligen Erzeugung
 | |
|                         von Schlüsseln und Initialisierungsvektoren zur Verwendung mit DES
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Das RSA-PRBG ist ein CSPRBG unter der Annahme, dass das RSA-Problem
 | |
|               unlösbar ist:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ausgabe: eine pseudo-zufällige Bitfolge \$z\_1,z\_2,...,z\_k\$ der
 | |
|                         Länge k
 | |
|               \end{itemize}
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         Setup-Prozedur: Erzeuge zwei geheime Primzahlen \$p, q\$, die für
 | |
|                         die Verwendung mit RSA geeignet sind. Berechne
 | |
|                         \$n=p\textbackslash times q\$ und
 | |
|                         \$\textbackslash phi=(p-1)\textbackslash times(q-1)\$. Wähle eine
 | |
|                         zufällige ganze Zahl e so, dass
 | |
|                         \$1\textless e\textless\textbackslash phi\$ und
 | |
|                         \$gcd(e,\textbackslash phi)=1\$
 | |
|                   \item
 | |
|                         Wähle eine zufällige ganze Zahl \$y\_0\$ (den Keim) so, dass
 | |
|                         \$y\_0\textbackslash in {[}1,n{]}\$
 | |
|                   \item
 | |
|                         Für i von 1 bis k tun
 | |
| 
 | |
|                         \begin{enumerate}
 | |
|                             \def\labelenumii{\arabic{enumii}.}
 | |
|                             \item
 | |
|                                   \$y\_i=(y\_\{i-1\})\^{}e\textbackslash{} mod\textbackslash{} n\$
 | |
|                             \item
 | |
|                                   \$z\_i =\$ das niedrigstwertige Bit von \$y\_i\$
 | |
|                         \end{enumerate}
 | |
|               \end{enumerate}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Effizienz des Generators kann leicht verbessert werden, indem
 | |
|                         man die letzten j Bits von jedem \$y\_i\$ nimmt, wobei
 | |
|                         \$j=c\textbackslash times lg(lg(n))\$ und c eine Konstante ist
 | |
|                   \item
 | |
|                         Für eine gegebene Bitlänge m von n wurde jedoch noch kein
 | |
|                         Wertebereich für die Konstante c ermittelt, in dem der Algorithmus
 | |
|                         noch einen CSPRBG ergibt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Blum-Blum-Shub-PRBG ist ein CSPRBG unter der Annahme, dass das
 | |
|               Problem der ganzzahligen Faktorisierung unlösbar ist:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ausgabe: eine pseudo-zufällige Bitfolge \$z\_1,z\_2,...,z\_k\$ der
 | |
|                         Länge k
 | |
|               \end{itemize}
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         Setup-Prozedur: Erzeuge zwei große geheime und unterschiedliche
 | |
|                         Primzahlen \$p,q\$, so dass \$p,q\$ jeweils kongruent 3 modulo 4
 | |
|                         sind, und lass \$n=p\textbackslash times q\$
 | |
|                   \item
 | |
|                         Wähle eine zufällige ganze Zahl s (den Keim) so, dass
 | |
|                         \$s\textbackslash in {[}1, n-1{]}\$ liegt, so dass \$gcd(s,n)=1\$
 | |
|                         und \$y\_0=s\^{}2\textbackslash{} mod\textbackslash{} n\$
 | |
|                   \item
 | |
|                         Für i von 1 bis k tun
 | |
| 
 | |
|                         \begin{enumerate}
 | |
|                             \def\labelenumii{\arabic{enumii}.}
 | |
|                             \item
 | |
|                                   \$y\_i = (y\_\{i-1\})\^{}2\textbackslash{} mod\textbackslash{} n\$
 | |
|                             \item
 | |
|                                   \$z\_i =\$ das niedrigstwertige Bit von \$y\_i\$
 | |
|                         \end{enumerate}
 | |
|               \end{enumerate}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Effizienz des Generators kann mit der gleichen Methode wie beim
 | |
|                         RSA-Generator verbessert werden, wobei ähnliche Einschränkungen für
 | |
|                         die Konstante c gelten
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Dualer deterministischer Zufallsbitgenerator mit elliptischer Kurve:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Basierend auf der Unlösbarkeit des Problems des diskreten
 | |
|                         Logarithmus elliptischer Kurven
 | |
|                   \item
 | |
|                         Vereinfachte Version:
 | |
|                         % \includegraphics{Assets/NetworkSecurity-dual-elliptic-curve-deterministic-random-bit-generator.png}
 | |
|                   \item
 | |
|                         Der Zustand t wird mit einem Generator P multipliziert, der x-Wert
 | |
|                         des neuen Punktes wird zu t'
 | |
|                   \item
 | |
|                         Multiplikation mit einem anderen Punkt Q r Bits der Ausgabe können
 | |
|                         erzeugt werden, die Anzahl der Bits hängt von der Kurve ab (zwischen
 | |
|                         240 und 504 Bits)
 | |
|                   \item
 | |
|                         Teil der Norm NIST 800-90A
 | |
|                   \item
 | |
|                         Sicherheit:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Es wurde gezeigt, dass Angreifer den Zustand t ableiten können,
 | |
|                                   wenn P für eine Konstante e gleich eQ gewählt wird.
 | |
|                             \item
 | |
|                                   Wir wissen nicht, wie die vordefinierten Punkte P und Q in NIST
 | |
|                                   800-90A abgeleitet werden, also Vorsicht
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{CSPRNG-Sicherheit ist eine große
 | |
|         Sache!}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Im September 2006 wurde Debian versehentlich so verändert, dass nur
 | |
|               die Prozess-ID verwendet wurde, um den OpenSSL CSPRNG zu füttern
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Nur 32.768 mögliche Werte!
 | |
|                   \item
 | |
|                         Wurde bis Mai 2008 nicht entdeckt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ein Scan von etwa 23 Millionen TLS- und SSH-Hosts zeigte, dass
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Mindestens 0,34\% der Hosts teilten Schlüssel aufgrund fehlerhafter
 | |
|                         RNGs
 | |
|                   \item
 | |
|                         0,50\% der gescannten TLS-Schlüssel aufgrund einer geringen
 | |
|                         Zufälligkeit kompromittiert werden konnten
 | |
|                   \item
 | |
|                         und 1,06\% der SSH-Hosts...
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Überwachen Sie Ihren CSPRNG!
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Generieren Sie keine Zufallszahlen direkt nach dem Booten Ihres
 | |
|                         Systems
 | |
|                   \item
 | |
|                         Verwenden Sie blockierende RNGs, d.h. solche, die nicht fortfahren,
 | |
|                         bis sie genügend Entropie haben
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Kryptographische
 | |
|       Protokolle}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Definition: Ein kryptographisches Protokoll ist definiert als eine
 | |
|               Reihe von Schritten und der Austausch von Nachrichten zwischen
 | |
|               mehreren Einheiten, um ein bestimmtes Sicherheitsziel zu erreichen.
 | |
|         \item
 | |
|               Eigenschaften eines Protokolls (im Allgemeinen):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Jeder, der an dem Protokoll beteiligt ist, muss das Protokoll und
 | |
|                         alle zu befolgenden Schritte im Voraus kennen
 | |
|                   \item
 | |
|                         Jeder, der an dem Protokoll beteiligt ist, muss zustimmen, es zu
 | |
|                         befolgen.
 | |
|                   \item
 | |
|                         Das Protokoll muss eindeutig sein, d.h. jeder Schritt ist genau
 | |
|                         definiert, und es gibt keine Möglichkeit für Missverständnisse
 | |
|                   \item
 | |
|                         Das Protokoll muss vollständig sein, d. h. es gibt für jede mögliche
 | |
|                         Situation eine bestimmte Aktion.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zusätzliche Eigenschaft eines kryptographischen Protokolls:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Es sollte nicht möglich sein, mehr zu tun oder zu erfahren als das,
 | |
|                         was im Protokoll angegeben ist.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Anwendungen von kryptographischen
 | |
|         Protokollen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Schlüsselaustausch
 | |
|         \item
 | |
|               Authentifizierung
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Authentifizierung der Datenherkunft
 | |
|                   \item
 | |
|                         Authentifizierung von Entitäten
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kombinierte Authentifizierung und Schlüsselaustausch
 | |
|         \item
 | |
|               Aufteilung des Geheimnisses (alle Teile werden für die Rekonstruktion
 | |
|               benötigt)
 | |
|         \item
 | |
|               Gemeinsame Nutzung des Geheimnisses (m von n Teilen werden für die
 | |
|               Rekonstruktion benötigt)
 | |
|         \item
 | |
|               Zeitstempelung
 | |
|         \item
 | |
|               Schlüsselhinterlegung (Sicherstellung, dass nur eine befugte Stelle
 | |
|               Schlüssel wiederherstellen kann)
 | |
|         \item
 | |
|               Zero-Knowledge-Beweise (Nachweis der Kenntnis einer Information ohne
 | |
|               Offenlegung der Information)
 | |
|         \item
 | |
|               Blindsignaturen (nützlich für die Wahrung der Privatsphäre bei
 | |
|               Zeitstempeldiensten)
 | |
|         \item
 | |
|               Sichere Wahlen
 | |
|         \item
 | |
|               Elektronisches Geld
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Schlüsselaustausch}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Das vorgestellte Diffie-Hellman-Protokoll ist unser erstes Beispiel
 | |
|               für ein kryptographisches Protokoll zum Schlüsselaustausch
 | |
|         \item
 | |
|               Bitte beachten Sie, dass es keine Authentifizierung realisiert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Weder Alice noch Bob wissen nach einem Protokolldurchlauf, mit wem
 | |
|                         sie einen Schlüssel ausgetauscht haben
 | |
|                   \item
 | |
|                         Da dieser reine Schlüsselaustausch ohne Authentifizierung nicht
 | |
|                         einmal die Vertraulichkeit der Kommunikation nach dem Austausch
 | |
|                         garantieren kann, muss er mit Authentifizierung kombiniert werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Diese Trennung von Schlüsselaustausch und Authentifizierung des
 | |
|               Austauschs hat jedoch einen großen Vorteil, da sie es ermöglicht, die
 | |
|               Eigenschaft des perfekten Vorwärtsgeheimnisses (Perfect Forward
 | |
|               Secrecy, PFS) zu gewährleisten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn ein Schlüsselaustausch PFS gewährleistet, kann die
 | |
|                         Kompromittierung eines Schlüssels in der Zukunft keine Daten
 | |
|                         kompromittieren, die mit anderen Schlüsseln geschützt wurden, die
 | |
|                         vor dieser Kompromittierung ausgetauscht wurden.
 | |
|                   \item
 | |
|                         Beispiel: Stellen Sie sich vor, Alice und Bob signieren beide die
 | |
|                         zur Berechnung von sk ausgetauschten Daten mit ihren privaten
 | |
|                         Schlüsseln. Selbst die Kompromittierung eines privaten Schlüssels in
 | |
|                         der Zukunft wird es nicht ermöglichen, aufgezeichnete Daten zu
 | |
|                         entschlüsseln, die mit sk geschützt wurden.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Authentifizierung der
 | |
|         Datenherkunft}
 | |
| 
 | |
|     Definition: Die Datenursprungsauthentifizierung ist der
 | |
|     Sicherheitsdienst, der es Entitäten ermöglicht, zu überprüfen, ob eine
 | |
|     Nachricht von einer bestimmten Entität stammt und nicht nachträglich
 | |
|     verändert wurde. Ein Synonym für diesen Dienst ist Datenintegrität.
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Beziehung zwischen Datenintegrität und kryptografischen
 | |
|               Protokollen ist zweifach:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Es gibt kryptografische Protokolle zur Sicherstellung der
 | |
|                         Datenintegrität. Sie umfassen in der Regel nur einen
 | |
|                         Protokollschritt und sind daher nicht sehr ,,spannend'':
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Beispiel 1: Angenommen, jeder kennt den öffentlichen RSA-Schlüssel
 | |
|                                   von Alice und kann sicher sein, dass er den Schlüssel von Alice
 | |
|                                   wirklich kennt, dann kann Alice die Datenintegrität ihrer
 | |
|                                   Nachrichten sicherstellen, indem sie sie mit ihrem privaten
 | |
|                                   Schlüssel verschlüsselt.
 | |
|                             \item
 | |
|                                   Beispiel 2: Alice kann auch einen MDC über ihre Nachricht
 | |
|                                   berechnen und den mit ihrem privaten Schlüssel verschlüsselten MDC
 | |
|                                   an die Nachricht anhängen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Datenintegrität der ausgetauschten Nachrichten ist oft eine
 | |
|                         wichtige Eigenschaft in kryptografischen Protokollen, daher ist die
 | |
|                         Datenintegrität ein Baustein für kryptografische Protokolle
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Authentifizierung von
 | |
|         Entitäten}
 | |
| 
 | |
|     Definition: Entitätsauthentifizierung ist der Sicherheitsdienst, der es
 | |
|     Kommunikationspartnern ermöglicht, die Identität ihrer Peer-Entitäten zu
 | |
|     überprüfen.
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Entitätsauthentifizierung ist der grundlegendste
 | |
|               Sicherheitsdienst, da alle anderen Sicherheitsdienste auf ihr
 | |
|               aufbauen.
 | |
|         \item
 | |
|               Im Allgemeinen kann sie durch verschiedene Mittel erreicht werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wissen: z. B. Passwörter
 | |
|                   \item
 | |
|                         Besitz: z. B. physische Schlüssel oder Karten
 | |
|                   \item
 | |
|                         Unveränderliches Merkmal: z. B. biometrische Eigenschaften wie
 | |
|                         Fingerabdruck usw.
 | |
|                   \item
 | |
|                         Ort: Es wird der Nachweis erbracht, dass sich eine Entität an einem
 | |
|                         bestimmten Ort befindet (Beispiel: Menschen überprüfen selten die
 | |
|                         Authentizität von Agenten in einer Bank)
 | |
|                   \item
 | |
|                         Delegation der Authentizität: Die überprüfende Stelle akzeptiert,
 | |
|                         dass eine vertrauenswürdige Person die Authentifizierung bereits
 | |
|                         vorgenommen hat.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               In Kommunikationsnetzen ist die direkte Überprüfung der oben genannten
 | |
|               Mittel schwierig oder unsicher, weshalb kryptographische Protokolle
 | |
|               erforderlich sind.
 | |
|         \item
 | |
|               Der Hauptgrund, warum die Authentifizierung von Entitäten mehr ist als
 | |
|               ein Austausch von (datenherkunfts-) authentischen Nachrichten, ist die
 | |
|               Aktualität:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Selbst wenn Bob während einer Kommunikation authentische Nachrichten
 | |
|                         von Alice erhält, kann er nicht sicher sein, ob:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Alice zu diesem Zeitpunkt tatsächlich an der Kommunikation
 | |
|                                   teilnimmt, oder ob
 | |
|                             \item
 | |
|                                   Eve alte Nachrichten von Alice abspielt
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Dies ist von besonderer Bedeutung, wenn die Authentifizierung nur
 | |
|                         zum Zeitpunkt des Verbindungsaufbaus erfolgt:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Beispiel: Übermittlung einer (möglicherweise verschlüsselten) PIN
 | |
|                                   beim Einloggen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Zwei grundsätzliche Mittel zur Sicherstellung der Aktualität in
 | |
|                         kryptographischen Protokollen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Zeitstempel (erfordern mehr oder weniger synchronisierte Uhren)
 | |
|                             \item
 | |
|                                   Zufallszahlen (Challenge-Response-Austausch)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die meisten Authentifizierungsprotokolle erstellen auch einen geheimen
 | |
|               Sitzungsschlüssel zur Sicherung der Sitzung nach dem
 | |
|               Authentifizierungsaustausch
 | |
|         \item
 | |
|               Zwei Hauptkategorien von Protokollen für die Authentifizierung von
 | |
|               Entitäten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Arbitrierte Authentifizierung: ein Arbiter, auch vertrauenswürdige
 | |
|                         dritte Partei (TTP) genannt, ist direkt an jedem
 | |
|                         Authentifizierungsaustausch beteiligt
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Vorteile:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             Dies ermöglicht es zwei Parteien A und B, sich gegenseitig zu
 | |
|                                             authentifizieren, ohne ein vorher festgelegtes Geheimnis zu
 | |
|                                             kennen.
 | |
|                                       \item
 | |
|                                             Selbst wenn sich A und B nicht kennen, kann die symmetrische
 | |
|                                             Kryptographie verwendet werden.
 | |
|                                   \end{itemize}
 | |
|                             \item
 | |
|                                   Nachteilig:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             Das TTP kann zu einem Engpass werden, die Verfügbarkeit des TTP
 | |
|                                             ist entscheidend
 | |
|                                       \item
 | |
|                                             Der TTP kann alle Authentifizierungsaktivitäten überwachen.
 | |
|                                   \end{itemize}
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Direkte Authentifizierung: A und B authentifizieren sich direkt
 | |
|                         gegenseitig
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Vorteile: keine Online-Teilnahme einer dritten Partei erforderlich
 | |
|                                   und kein möglicher Leistungsengpass wird eingeführt
 | |
|                             \item
 | |
|                                   Nachteile: erfordert asymmetrische Kryptographie oder im Voraus
 | |
|                                   festgelegte geheime Schlüssel
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Notation kryptographischer
 | |
|         Protokolle}
 | |
| 
 | |
|     %\begin{longtable}[]{@{}ll@{}}
 | |
|     %    \toprule
 | |
|     %    Notation                           & Bedeutung\tabularnewline
 | |
|     %    \midrule
 | |
|     %    \endhead
 | |
|     %    \$A\$                              & Name von A , analog für B, E, TTP, CA\tabularnewline
 | |
|     %    \$CA\_A\$                          & Zertifizierungsstelle von A\tabularnewline
 | |
|     %    \$r\_A\$                           & Zufallswert, gewählt von A\tabularnewline
 | |
|     %    \$t\_A\$                           & Zeitstempel erzeugt von A\tabularnewline
 | |
|     %    \$(m\_1,...,m\_m)\$                & Verkettung von Nachrichten \$m\_1,
 | |
|     %    ...,m\_n\$\tabularnewline
 | |
|     %    \$A\textbackslash rightarrow B:m\$ & A sendet Nachricht m an
 | |
|     %    B\tabularnewline
 | |
|     %    \$K\_\{A,B\}\$                     & Geheimer Schlüssel, nur A und B bekannt\tabularnewline
 | |
|     %    \$+K\_A\$                          & Öffentlicher Schlüssel von A\tabularnewline
 | |
|     %    \$-K\_A\$                          & Privater Schlüssel von A\tabularnewline
 | |
|     %    \$\{m\}\_K\$                       & Nachricht m verschlüsselt mit Schlüssel K , Synonym für
 | |
|     %    \$E(K, m)\$\tabularnewline
 | |
|     %    \$H(m)\$                           & MDC über Nachricht m, berechnet mit Funktion H\tabularnewline
 | |
|     %    \$A{[}m{]}\$                       & Kurzschreibweise für
 | |
|     %    \$(m,\{H(m)\}\_\{-K\_A\})\$\tabularnewline
 | |
|     %    \$Cert\_\{-CK\_\{CA\}\}(+K\_A)\$   & Zertifikat der CA für den
 | |
|     %    öffentlichen Schlüssel \$+K\_A\$ von A, signiert mit dem privaten
 | |
|     %    Zertifizierungsschlüssel \$-CK\_\{CA\}\$\tabularnewline
 | |
|     %    \$CA\textless{}\textgreater\$      & Kurzschreibweise für
 | |
|     %    \$Cert\_\{-CK\_\{CA\}\}(+K\_A)\$\tabularnewline
 | |
|     %    \bottomrule
 | |
|     %\end{longtable}
 | |
| 
 | |
| 
 | |
|     \subsection{Das
 | |
|         Needham-Schroeder-Protokoll}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Erfunden im Jahr 1978 von Roger Needham und Michael Schroeder
 | |
|               {[}Nee78a{]}
 | |
|         \item
 | |
|               Das Protokoll basiert auf symmetrischer Verschlüsselung und nutzt eine
 | |
|               vertrauenswürdige dritte Partei (TTP)
 | |
|         \item
 | |
|               Angenommen, TTP teilt die geheimen Schlüssel KA,TTP und KB,TTP mit
 | |
|               Alice bzw. Bob:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         A erzeugt eine Zufallszahl rA und sendet die folgende Nachricht:
 | |
| 
 | |
|                         \begin{enumerate}
 | |
|                             \def\labelenumi{\arabic{enumi}.}
 | |
|                             \item
 | |
|                                   \$A\textbackslash rightarrow TTP: (A, B, r\_A)\$
 | |
|                         \end{enumerate}
 | |
|                   \item
 | |
|                         TTP erzeugt einen Sitzungsschlüssel KA,B für die sichere
 | |
|                         Kommunikation zwischen A und B und antwortet A: 2.
 | |
|                         \$TTP\textbackslash rightarrow A:\{r\_A, B, K\_\{A,B\},
 | |
|                         \{K\_\{A,B\}, A\}\emph{\{K}\{B,TTP\}\}\}\emph{\{K}\{A,TTP\}\}\$
 | |
|                   \item
 | |
|                         A entschlüsselt die Nachricht und extrahiert \$K\_\{A,B\}\$. Sie
 | |
|                         bestätigt, dass \$r\_A\$ mit der von ihr im ersten Schritt
 | |
|                         generierten Zahl identisch ist, so dass sie weiß, dass die Antwort
 | |
|                         eine neue Antwort von TTP ist. Dann sendet sie an B: 3.)
 | |
|                         \$A\textbackslash rightarrow B:\{K\_\{A,B\},
 | |
|                         A\}\emph{\{K}\{B,TTP\}\}\$
 | |
|                   \item
 | |
|                         Bob entschlüsselt die Nachricht und erhält \$K\_\{A,B\}\$. Er
 | |
|                         erzeugt dann eine Zufallszahl \$r\_B\$ und antwortet Alice: 4.)
 | |
|                         \$B\textbackslash rightarrow A:\{r\_B\}\emph{\{K}\{A,B\}\}\$
 | |
|                   \item
 | |
|                         Alice entschlüsselt die Nachricht, errechnet \$r\_\{B\}-1\$ und
 | |
|                         antwortet mit: 5.) \$A\textbackslash rightarrow
 | |
|                         B:\{r\_B-1\}\emph{\{K}\{A,B\}\}\$
 | |
|                   \item
 | |
|                         Bob entschlüsselt die Nachricht und prüft, ob sie \$r\_B-1\$
 | |
|                         enthält.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Diskussion:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Austausch von \$r\_B\$ und \$r\_\{B-1\}\$ soll sicherstellen,
 | |
|                         dass ein Angreifer, der versucht, sich als Alice auszugeben, keinen
 | |
|                         vollständigen Protokolldurchlauf mit nachgespielten Nachrichten
 | |
|                         durchführen kann
 | |
|                   \item
 | |
|                         Da jedoch alte Sitzungsschlüssel \$K\_\{A,B\}\$ gültig bleiben, kann
 | |
|                         ein Angreifer, Eve, der es schafft, einen Sitzungsschlüssel
 | |
|                         \$K\_\{A,B\}\$ in Erfahrung zu bringen, diesen später dazu
 | |
|                         verwenden, sich als Alice auszugeben:
 | |
| 
 | |
|                         \begin{enumerate}
 | |
|                             \def\labelenumi{\arabic{enumi}.}
 | |
|                             \item
 | |
|                                   \$E\textbackslash rightarrow B:\{K\_\{A,B\},
 | |
|                                   A\}\emph{\{K}\{B,TTP\}\}\$
 | |
|                             \item
 | |
|                                   \$B\textbackslash rightarrow A:\{r\_B\}\emph{\{K}\{A,B\}\}\$ Eve
 | |
|                                   muss diese Nachricht abfangen
 | |
|                             \item
 | |
|                                   \$E\textbackslash rightarrow B:\{r\_B -1\}\emph{\{K}\{A,B\}\}\$
 | |
|                         \end{enumerate}
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Eve gibt sich also als Alice aus, obwohl sie weder
 | |
|                                   \$K\_\{A,TTP\}\$ noch \$K\_\{B,TTP\}\$ kennt!
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Das Otway-Rees-Protokoll}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Das oben beschriebene Sicherheitsproblem sowie einige andere wurden
 | |
|               von Needham und Schroeder behandelt. Ihre Lösung {[}Nee87a{]} ist im
 | |
|               Wesentlichen die gleiche wie die von Otway und Rees in der gleichen
 | |
|               Zeitschrift {[}Otw87a{]} vorgeschlagene:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Alice generiert eine Nachricht, die eine Indexzahl \$i\_A\$, ihren
 | |
|                         Namen A, Bobs Namen B und die gleichen Informationen plus eine
 | |
|                         zusätzliche Zufallszahl \$r\_A\$ enthält, die mit dem Schlüssel
 | |
|                         \$K\_\{A,TTP\}\$ verschlüsselt ist, den sie mit TTP teilt, und
 | |
|                         sendet diese Nachricht an Bob:
 | |
| 
 | |
|                         \begin{enumerate}
 | |
|                             \def\labelenumi{\arabic{enumi}.}
 | |
|                             \item
 | |
|                                   \$A\textbackslash rightarrow B:(i\_A, A, B,\{r\_A, i\_A, A,
 | |
|                                   B\}\emph{\{K}\{A,TTP\}\})\$
 | |
|                         \end{enumerate}
 | |
|                   \item
 | |
|                         Bob erzeugt eine Zufallszahl \$r\_B\$, verschlüsselt sie zusammen
 | |
|                         mit \$i\_A\$, A und B mit dem Schlüssel \$K\_\{B,TTP\}\$, den er mit
 | |
|                         TTP teilt, und sendet die Nachricht an TTP: 2.
 | |
|                         \$B\textbackslash rightarrow TTP:(i\_A, A,
 | |
|                         B,\{r\_A,i\_A,A,B\}\emph{\{K}\{A,TTP\}\},\{r\_B,i\_A,A,B\}\emph{\{K}\{B,TTP\}\})\$
 | |
|                   \item
 | |
|                         TTP erzeugt einen neuen Sitzungsschlüssel KA,B und erstellt zwei
 | |
|                         verschlüsselte Nachrichten, eine für Alice und eine für Bob, und
 | |
|                         sendet sie an Bob: 3. \$TTP\textbackslash rightarrow
 | |
|                         B:(i\_A,\{r\_A,K\_\{A,B\}\}\emph{\{K}\{A,TTP\}\},\{r\_B,
 | |
|                         K\_\{A,B\}\}\emph{\{K}\{B,TTP\}\})\$
 | |
|                   \item
 | |
|                         Bob entschlüsselt seinen Teil der Nachricht, verifiziert rB und
 | |
|                         sendet Alices Teil der Nachricht an sie: 4.
 | |
|                         \$B\textbackslash rightarrow
 | |
|                         A:(i\_A,\{r\_A,K\_\{A,B\}\}\emph{\{K}\{A,TTP\}\})\$
 | |
|                   \item
 | |
|                         Alice entschlüsselt die Nachricht und überprüft, ob sich \$i\_A\$
 | |
|                         und \$r\_A\$ während des Austauschs nicht geändert haben. Wenn
 | |
|                         nicht, kann sie sicher sein, dass TTP ihr einen neuen
 | |
|                         Sitzungsschlüssel \$K\_\{A,B\}\$ für die Kommunikation mit Bob
 | |
|                         geschickt hat. Wenn sie nun diesen Schlüssel in einer
 | |
|                         verschlüsselten Kommunikation mit Bob verwendet, kann sie sich
 | |
|                         seiner Authentizität sicher sein.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Diskussion:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Indexzahl \$i\_A\$ schützt vor Replay-Attacken. Dies erfordert
 | |
|                         jedoch, dass TTP überprüft, ob \$i\_A\$ größer ist als das letzte
 | |
|                         \$i\_A\$, das er von Alice erhalten hat.
 | |
|                   \item
 | |
|                         Da TTP nur dann zwei Nachrichten generiert, wenn beide Teile der
 | |
|                         Nachricht, die er erhält, die gleiche Indexnummer \$i\_A\$ und die
 | |
|                         Namen \$A, B,\$ enthalten, können Alice und Bob sicher sein, dass
 | |
|                         sie sich beide während des Protokolllaufs gegenüber TTP
 | |
|                         authentifiziert haben.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Kerberos}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Kerberos ist ein Authentifizierungs- und Zugangskontrolldienst für
 | |
|               Workstation-Cluster, der in den späten 1980er Jahren am MIT entwickelt
 | |
|               wurde.
 | |
|         \item
 | |
|               Entwurfsziele:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sicherheit: Abhörer oder aktive Angreifer sollten nicht in der Lage
 | |
|                         sein, die notwendigen Informationen zu erhalten, um sich beim
 | |
|                         Zugriff auf einen Dienst als ein Benutzer auszugeben
 | |
|                   \item
 | |
|                         Zuverlässigkeit: Da jede Nutzung eines Dienstes eine vorherige
 | |
|                         Authentifizierung erfordert, sollte Kerberos höchst zuverlässig und
 | |
|                         verfügbar sein.
 | |
|                   \item
 | |
|                         Transparenz: Der Authentifizierungsprozess sollte für den Benutzer
 | |
|                         transparent sein und nicht nur die Eingabe eines Passworts
 | |
|                         erfordern.
 | |
|                   \item
 | |
|                         Skalierbarkeit: Das System sollte in der Lage sein, eine große
 | |
|                         Anzahl von Clients und Servern zu unterstützen.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Das Kerberos zugrunde liegende kryptografische Verfahren ist die
 | |
|               symmetrische Verschlüsselung (Kerberos V. 4 verwendet DES, V. 5
 | |
|               erlaubt andere Algorithmen).
 | |
|         \item
 | |
|               Eine gute Anleitung zu den Überlegungen hinter dem Kerberos-Design
 | |
|               findet sich in {[}Bry88a{]}, wo das Protokoll in einer Reihe von
 | |
|               fiktiven Dialogen entwickelt wird
 | |
|         \item
 | |
|               Das grundlegende Anwendungsszenario von Kerberos ist ein Benutzer,
 | |
|               Alice, der auf einen oder mehrere verschiedene Dienste zugreifen
 | |
|               möchte, die von verschiedenen Servern \$S\_1, S\_2, ...\$
 | |
|               bereitgestellt werden, die über ein unsicheres Netzwerk verbunden sind
 | |
|         \item
 | |
|               Kerberos befasst sich mit den folgenden Sicherheitsaspekten in diesem
 | |
|               Szenario:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Authentifizierung: Alice authentifiziert sich bei einem
 | |
|                         Authentifizierungsserver (AS), der eine zeitlich begrenzte
 | |
|                         Genehmigung für den Zugang zu Diensten erteilt. Diese Erlaubnis wird
 | |
|                         Ticket-granting ticket (TicketTGS) genannt und ist vergleichbar mit
 | |
|                         einem zeitlich begrenzten Reisepass.
 | |
|                   \item
 | |
|                         Zugangskontrolle: Durch Vorlage ihres TicketTGS kann Alice einen
 | |
|                         Ticket-gewährenden Server (TGS) anfordern, um Zugang zu einem Dienst
 | |
|                         zu erhalten, der von einem bestimmten Server S1 bereitgestellt wird.
 | |
|                         Der TGS entscheidet, ob der Zugang erlaubt wird und antwortet mit
 | |
|                         einem TicketS1 für den Server S.
 | |
|                   \item
 | |
|                         Schlüsselaustausch: Der Authentifizierungsserver stellt einen
 | |
|                         Sitzungsschlüssel für die Kommunikation zwischen Alice und TGS
 | |
|                         bereit, und der TGS stellt einen Sitzungsschlüssel für die
 | |
|                         Kommunikation zwischen Alice und S1 bereit. Die Verwendung dieser
 | |
|                         Sitzungsschlüssel dient auch der Authentifizierung.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Zugriff auf einen Dienst mit Kerberos - Protokollübersicht
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-Kerberos.png}
 | |
|         \item
 | |
|               Der Benutzer meldet sich an seiner Arbeitsstation an und fordert den
 | |
|               Zugriff auf einen Dienst an:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Workstation repräsentiert ihn im Kerberos-Protokoll und sendet
 | |
|                         die erste Nachricht an den Authentifizierungsserver AS, die seinen
 | |
|                         Namen, den Namen eines geeigneten Ticket-Granting-Servers TGS und
 | |
|                         einen Zeitstempel \$t\_A\$ enthält:
 | |
|               \end{itemize}
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$A\textbackslash rightarrow AS:(A, TGS, t\_A)\$
 | |
|               \end{enumerate}
 | |
|         \item
 | |
|               Der AS prüft, ob A sich für den Zugang zu den Diensten
 | |
|               authentifizieren darf, generiert aus A's Passwort (das ihm bekannt
 | |
|               ist) den Schlüssel KA, extrahiert die Arbeitsplatzadresse \$Addr\_A\$
 | |
|               der Anfrage, erstellt ein Ticket \$Ticket\_\{TGS\}\$ und einen
 | |
|               Sitzungsschlüssel \$K\_\{A,TGS\}\$ und sendet die folgende Nachricht
 | |
|               an A: 2. \$AS\textbackslash rightarrow A:\{K\_\{A,TGS\}, TGS,
 | |
|               t\_\{AS\}, LifetimeTicket\_\{TGS\}, Ticket\_\{TGS\}\}\emph{\{K\_A\}\$
 | |
|                   mit \$Ticket}\{TGS\}=\{K\_\{A,TGS\},A, Addr\_A, TGS, t\_\{AS\},
 | |
|               LifetimeTicket\_\{TGS\}\}\emph{\{K}\{AS,TGS\}\}\$
 | |
|         \item
 | |
|               Nach Erhalt dieser Nachricht fordert die Workstation Alice auf, ihr
 | |
|               Passwort einzugeben, berechnet daraus den Schlüssel \$K\_A\$ und
 | |
|               entschlüsselt die Nachricht mit diesem Schlüssel. Wenn Alice nicht ihr
 | |
|               ,,authentisches'' Passwort angibt, sind die extrahierten Werte
 | |
|               ,,Müll'' und der Rest des Protokolls schlägt fehl.
 | |
|         \item
 | |
|               Alice erstellt einen sogenannten Authenticator und sendet ihn zusammen
 | |
|               mit dem Ticket und dem Namen des Servers \$S1\$ an TGS: 3.
 | |
|               \$A\textbackslash rightarrow TGS:(S1, Ticket\_\{TGS\},
 | |
|               Authenticator\_\{A,TGS\})\$ mit Authenticator
 | |
|               \$A,TGS=\{A,Addr\_A,t'\emph{A\}}\{K\_\{A,TGS\}\}\$
 | |
|         \item
 | |
|               Nach Erhalt entschlüsselt TGS \$Ticket\_\{TGS\}\$, extrahiert daraus
 | |
|               den Schlüssel \$K\_\{A,TGS\}\$ und verwendet diesen Schlüssel zur
 | |
|               Entschlüsselung von \$Authenticator\_\{A,TGS\}\$. Wenn Name und
 | |
|               Adresse des Authentifikators und des Tickets übereinstimmen und der
 | |
|               Zeitstempel \$t'\emph{A\$ noch frisch ist, wird geprüft, ob A auf den
 | |
|                   Dienst S1 zugreifen darf, und die folgende Nachricht erstellt: 4.
 | |
|                   \$TGS\textbackslash rightarrow A:\{K}\{A,S1\}, S1, t\_\{TGS\},
 | |
|               Ticket\_\{S1\}\}\emph{\{K}\{A,TGS\}\}\$ mit
 | |
|               \$Ticket\_\{S1\}=\{K\_\{A,S1\}, A, Addr\_A, S1, t\_\{TGS\},
 | |
|               LifetimeTicket\_\{S1\}\}\emph{\{K}\{TGS,S\}\}\$
 | |
|         \item
 | |
|               Alice entschlüsselt die Nachricht und verfügt nun über einen
 | |
|               Sitzungsschlüssel für die sichere Kommunikation mit S1. Sie sendet nun
 | |
|               eine Nachricht an S1, um ihm ihr Ticket und einen neuen
 | |
|               Authentifikator zu zeigen: 5. \$A\textbackslash rightarrow
 | |
|               S1:(Ticket\_\{S1\}, Authenticator\_\{A,S1\})\$ mit
 | |
|               \$Authenticator\_\{A,S1\}=\{A,Addr\_A, t''\emph{A\}}\{K\_\{A,S1\}\}\$
 | |
|         \item
 | |
|               Nach Erhalt entschlüsselt S1 das Ticket mit dem Schlüssel
 | |
|               \$K\_\{TGS,S1\}\$, den er mit TGS teilt, und erhält den
 | |
|               Sitzungsschlüssel \$K\_\{A,S1\}\$ für die sichere Kommunikation mit A.
 | |
|               Mit diesem Schlüssel überprüft er den Authentifikator und antwortet A:
 | |
|               6. \$S1\textbackslash rightarrow A:\{t'\,'\emph{A+1\}}\{K\_\{A,S\}\}\$
 | |
|         \item
 | |
|               Durch Entschlüsselung dieser Nachricht und Überprüfung des enthaltenen
 | |
|               Wertes kann Alice nachweisen, dass sie wirklich mit S1 kommuniziert,
 | |
|               da nur er (neben TGS) den Schlüssel \$K\_\{TGS,S1\}\$ zur
 | |
|               Entschlüsselung von \$Ticket\_\{S1\}\$ kennt, der den
 | |
|               Sitzungsschlüssel \$K\_\{A,S1\}\$ enthält, und somit nur er in der
 | |
|               Lage ist, \$Authenticator\_\{A,S1\}\$ zu entschlüsseln und mit
 | |
|               \$t''\emph{\{A+1\}\$ verschlüsselt mit \$K}\{A,S\}\$ zu antworten
 | |
|         \item
 | |
|               Das oben beschriebene Protokoll ist der Kerberos-Dialog der Version 4.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         In diesem Protokoll wurden eine Reihe von Mängeln festgestellt, so
 | |
|                         dass eine neue Version 5 des Protokolls definiert wurde, auf die wir
 | |
|                         später eingehen werden...
 | |
|                   \item
 | |
|                         Wo liegt eigentlich das Problem?
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Kerberos für mehrere
 | |
|         Domänen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Stellen Sie sich eine Organisation mit Workstation-Clustern an zwei
 | |
|               verschiedenen Standorten vor, und stellen Sie sich vor, dass Benutzer
 | |
|               A von Standort 1 einen Server von Standort 2 benutzen möchte:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn beide Standorte ihre eigenen Kerberos-Server und
 | |
|                         Benutzerdatenbanken (mit Passwörtern) verwenden, gibt es in der Tat
 | |
|                         zwei verschiedene Domänen, in der Kerberos-Terminologie auch Realms
 | |
|                         genannt.
 | |
|                   \item
 | |
|                         Um zu vermeiden, dass der Benutzer A in beiden Realms registriert
 | |
|                         sein muss, ermöglicht Kerberos eine Inter-Realm-Authentifizierung.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Inter-Realm-Authentifizierung erfordert, dass die
 | |
|               Ticket-erteilenden Server beider Domänen einen geheimen Schlüssel
 | |
|               \$K\_\{TGS1,TGS2\}\$ teilen.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Grundidee ist, dass der TGS eines anderen Realms als normaler
 | |
|                         Server angesehen wird, für den der TGS des lokalen Realms ein Ticket
 | |
|                         ausstellen kann.
 | |
|                   \item
 | |
|                         Nachdem Alice das Ticket für den entfernten Realm erhalten hat,
 | |
|                         fordert sie ein Ticket für den Dienst beim entfernten TGS an.
 | |
|                   \item
 | |
|                         Dies bedeutet jedoch, dass der entfernte Realm dem
 | |
|                         Kerberos-Authentifizierungsdienst der Heimatdomäne eines
 | |
|                         ,,besuchenden'' Benutzers vertrauen muss!
 | |
|                   \item
 | |
|                         Skalierbarkeitsproblem: n Realms benötigen
 | |
|                         \$n\textbackslash times(n-1)/2\$ geheime Schlüssel!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-multi-domain-kerberos.png}
 | |
|         \item
 | |
|               Nachrichten, die während eines Protokolllaufs mit mehreren Domänen
 | |
|               ausgetauscht werden:
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$A\textbackslash rightarrow AS1:(A,TGS1, t\_A)\$
 | |
|                   \item
 | |
|                         \$AS1\textbackslash rightarrow A:\{K\_\{A,TGS1\}, TGS1, t\_\{AS\},
 | |
|                         LifetimeTicket\_\{TGS1\}, Ticket\_\{TGS1\}\}\emph{\{K\_A\}\$ mit
 | |
|                             \$Ticket}\{TGS1\}=\{K\_\{A,TGS1\}, A, Addr\_A, TGS1, t\_\{AS\},
 | |
|                         LifetimeTicket\_\{TGS1\}\}\emph{\{K}\{AS,TGS1\}\}\$
 | |
|                   \item
 | |
|                         \$A\textbackslash rightarrow
 | |
|                         TGS1:(TGS2,Ticket\_\{TGS1\},Authenticator\_\{A,TGS1\})\$ mit
 | |
|                         \$Authenticator\_\{A,TGS1\}=\{A,Addr\_A,t'\emph{A\}}\{K\_\{A,TGS1\}\}\$
 | |
|                   \item
 | |
|                         \$TGS1:\{K\_\{A,TGS2\}, TGS2, t\_\{TGS1\},
 | |
|                         Ticket\_\{TGS2\}\}\emph{\{K}\{A,TGS1\}\}\$ mit
 | |
|                         \$Ticket\_\{TGS2\}=\{K\_\{A,TGS2\}, A, Addr\_A, TGS2, t\_\{TGS1\},
 | |
|                         LifetimeTicket\_\{TGS2\}\}\emph{\{K}\{TGS1,TGS2\}\}\$
 | |
|                   \item
 | |
|                         \$A\textbackslash rightarrow
 | |
|                         TGS2:(S2,Ticket\_\{TGS2\},Authenticator\_\{A,TGS2\})\$ mit
 | |
|                         \$Authenticator\_\{A,TGS2\}=\{A,Addr\_A,t''\emph{A\}}\{K\_\{A,TGS2\}\}\$
 | |
|                   \item
 | |
|                         \$TGS2\textbackslash rightarrow
 | |
|                         A:\{K\_\{A,S2\},S2,t\_\{TGS2\},Ticket\_\{S2\}\}\emph{\{K}\{A,TGS2\}\}\$
 | |
|                         with \$Ticket\_\{S2\}=\{K\_\{A,S2\},A,Addr\_A,S2,t\_\{TGS2\},
 | |
|                         LifetimeTicket\_\{S2\}\}\emph{\{K}\{TGS2,S2\}\}\$
 | |
|                   \item
 | |
|                         S2:(Ticket\_\{S2\}, Authentifikator\_\{A,S2\})\$ mit
 | |
|                         \$Authentifikator\_\{A,S2\}=\{A,Addr\_A,t'''\emph{A\}}\{K\_\{A,S2\}\}\$
 | |
|                   \item
 | |
|                         \$S2\textbackslash rightarrow
 | |
|                         A:\{t'\,'\,'\emph{A+1\}}\{K\_\{A,S2\}\}\$
 | |
|               \end{enumerate}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Kerberos Version 5}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Letzter Standard von 2005 (RFC 4120)
 | |
|         \item
 | |
|               Entwickelt als Reaktion auf Schwachstellen, die bei Kerberos v4
 | |
|               bekannt wurden
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Enthält explizite Prüfsummen, um zu verifizieren, dass die
 | |
|                         Nachrichten nicht verändert wurden
 | |
|                   \item
 | |
|                         Unterstützt mehrere Chiffren (andere als das unsichere DES)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Einheitliches Nachrichtenformat - Nachrichten an den
 | |
|               Authentifizierungsserver und den Ticketvergabeserver sind sehr ähnlich
 | |
|         \item
 | |
|               Flexible ASN.1-Kodierung der Nachrichten, ermöglicht spätere
 | |
|               Erweiterungen
 | |
|         \item
 | |
|               Im Folgenden wird nur eine vereinfachte Version gezeigt, weit mehr
 | |
|               Funktionen sind standardisiert, z.B:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Client-zu-Client gegenseitige Authentifizierung
 | |
|                   \item
 | |
|                         Vorauthentifizierte Tickets
 | |
|                   \item
 | |
|                         Erneuerung von Tickets
 | |
|                   \item
 | |
|                         Multidomain Kerberos
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Authentifizierungsdialog in Kerberos Version 5 ist ähnlich wie in
 | |
|               Version 4
 | |
|         \item
 | |
|               Der Austausch des Authentifizierungsdienstes: Bei der ersten
 | |
|               Kontaktaufnahme sendet der Client A nicht nur Namen und Zeitstempel,
 | |
|               sondern auch eine Nonce n , die hilft, Wiederholungen zu vermeiden,
 | |
|               wenn sich die Zeit geändert hat; es ist auch möglich, mehrere Adressen
 | |
|               anzugeben
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$A\textbackslash rightarrow
 | |
|                         AS:(A,TGS,t\_\{start\},t\_\{end\},n,Addr\_A, ...)\$
 | |
|               \end{enumerate}
 | |
|         \item
 | |
|               Die Antwort enthält ein Klartext-Ticket und verschlüsselte
 | |
|               Informationen: 2. \$AS\textbackslash rightarrow A:
 | |
|               (A,Ticket\_\{TGS\},\{K\_\{A,TGS\},
 | |
|               LastRequest,n,t\_\{expire\},t\_\{AS\},t\_\{start\},t\_\{end\},t\_\{renew\},TGS,
 | |
|               Addr\_A\}\emph{\{K\_A\})\$ mit \$Ticket}\{TGS\}=(TGS,
 | |
|               \{K\_\{A,TGS\},A,transited, t\_\{AS\},
 | |
|               t\_\{start\},t\_\{end\},t\_\{renew\},Addr\_A,restrictions\}\emph{\{K}\{AS,TGS\}\})\$
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         LastRequest gibt den letzten Login des Benutzers an transited
 | |
|                         enthält die Vertrauenskette Multidomain Kerberos Restriktionen für
 | |
|                         den Benutzer können dem TGS und den Servern übergeben werden
 | |
|                         \$t\_\{expire\}\$ und \$t\_\{end\}\$ enthalten verschiedene Zeiten,
 | |
|                         um die Erneuerung von Tickets zu ermöglichen (wobei die Start- und
 | |
|                         Endzeit einfach aktualisiert werden können)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Dialog zum TGS ist mit dem Ausgangsdialog harmonisiert: Er enthält
 | |
|               zusätzlich Tickets und einen Authentifikator, der beweist, dass A
 | |
|               \$K\_\{A,TGS\}\$ kennt 3. \$Aufrechtes
 | |
|               TGS:(A,S1,t\_\{start\},t\_\{end\},n',Addr\_A,Authenticator\_\{A,TGS\},
 | |
|               Tickets,...)\$ mit \$Authenticator\_\{A,TGS\}=\{A, CheckSum,
 | |
|               t\_\{A'\}, K\_\{A,TGS'\}, Seq\#,...\}\emph{\{K}\{A,TGS\}\}\$ Hinweis:
 | |
|               Der Authentifikator enthält jetzt eine kryptographische Prüfsumme!
 | |
|         \item
 | |
|               Die Antwort an A ist völlig analog zu Nachricht 2: 4.
 | |
|               \$TGS\textbackslash rightarrow
 | |
|               A:(A,Ticket\_\{S1\},\{K\_\{A,S1\},LastRequest,
 | |
|               n',t\_\{expire\},t\_\{TGS\},t\_\{start\},t\_\{end\},t\_\{renew\},S1,Addr\_A\}\emph{\{K}\{A,TGS\}\})\$
 | |
|         \item
 | |
|               Der Austausch mit dem Server ist ebenfalls ähnlich wie bei Version 4,
 | |
|               aber mit dem Authentifikator ist eine explizite Prüfsumme möglich: 5.
 | |
|               \$A\textbackslash rightarrow S1:(Ticket\_\{S1\},
 | |
|               Authenticator\_\{A,S1\})\$ mit
 | |
|               \$Authenticator\_\{A,S1\}=\{A,CheckSum,t\_\{A''\},K\_\{A,S1\}', Seq\#,
 | |
|               ...\}\emph{\{K}\{A,S1\}\}\$
 | |
|         \item
 | |
|               Nach Erhalt entschlüsselt S1 das Ticket mit dem Schlüssel
 | |
|               \$K\_\{TGS,S1\}\$, den er mit TGS teilt, und erhält den
 | |
|               Sitzungsschlüssel \$K\_\{A,S1\}\$ für die sichere Kommunikation mit A.
 | |
|               Mit diesem Schlüssel überprüft er den Authentifikator und antwortet A:
 | |
|               6. \$S1\textbackslash rightarrow
 | |
|               A:\{t\_\{S1\},K\_\{A,S1\}',Seq\#,...\}\emph{\{K}\{A,S1\}\}\$
 | |
|         \item
 | |
|               Alles in allem behebt der Dialog mehrere potenzielle Schwachstellen,
 | |
|               während andere bestehen bleiben:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sequenznummern und Nonces ermöglichen eine zusätzliche
 | |
|                         Replay-Prüfung, wenn sich die Zeitbasis ändert
 | |
|                   \item
 | |
|                         Explizite Prüfsummen verhindern die Änderung von Daten innerhalb von
 | |
|                         Tickets
 | |
|                   \item
 | |
|                         Zentrale Server sind immer noch potentielle Single-Points-of-Failure
 | |
|                   \item
 | |
|                         Für den ersten Austausch ist immer noch eine gewisse
 | |
|                         Zeitsynchronisierung erforderlich.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Fortgeschrittene Methoden zur
 | |
|         Passwortauthentifizierung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Alle gezeigten Protokolle haben eine gemeinsame Schwäche:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Passwörter müssen leicht zu merken und leicht einzugeben sein
 | |
|                         \$\textbackslash rightarrow\$ Geringe Entropie
 | |
|                   \item
 | |
|                         Angreifer können schnell alle möglichen Kombinationen ausprobieren
 | |
|                   \item
 | |
|                         Offline, über Grafikkarten, Cloud-Computer, spezielle Hardware...
 | |
|                   \item
 | |
|                         Asymmetrische Situation
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Mögliche Lösungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schlüsselableitungsfunktionen
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Erschweren Brute-Force-Angriffe durch extrem häufiges Hashing
 | |
|                             \item
 | |
|                                   Erfordert auch Aufwand durch legitime Geräte
 | |
|                             \item
 | |
|                                   Nur linearer Sicherheitsgewinn
 | |
|                             \item
 | |
|                                   Bessere Funktionen verbrauchen viel Speicher, um Angriffe mit
 | |
|                                   Grafikkarten und spezieller Hardware undurchführbar zu machen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Passwort-authentifizierter Schlüsselaustausch (PAKE)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Passwortauthentifizierter Schlüsselaustausch (PAKE) - Grundlegende
 | |
|               Idee
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Durchführen eines Schlüsselaustauschs mit asymmetrischer
 | |
|                         Kryptographie
 | |
|                   \item
 | |
|                         Authentifizierung von Peers mit einem Passwort unter Verwendung
 | |
|                         eines Zero Knowledge Proofs
 | |
|                   \item
 | |
|                         Die Peers können nur feststellen, ob die Passwörter übereinstimmen
 | |
|                         oder nicht
 | |
|                   \item
 | |
|                         Keine weiteren Informationen, um effiziente Bruteforce-Suchen
 | |
|                         durchzuführen
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Würde das Lösen schwieriger Probleme erfordern, z. B. eine Art
 | |
|                                   DH-Problem
 | |
|                             \item
 | |
|                                   Macht Offline-Angriffe undurchführbar
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Online-Angriffe möglich, können aber entdeckt werden
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{PAKE-Schemata: EKE}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Ein einfaches erstes Protokoll ist Encrypted Key Exchange (EKE)
 | |
|               {[}BM92{]}
 | |
|         \item
 | |
|               Der Dialog beginnt damit, dass A ein privates/öffentliches
 | |
|               Schlüsselpaar zur einmaligen Verwendung erzeugt und den öffentlichen
 | |
|               Schlüssel \$+K\_\{ar\}\$ verschlüsselt mit dem Passwort \$K\_\{A,B\}\$
 | |
|               an B sendet
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$A\textbackslash rightarrow B:A,\{+K\_\{ar\}\}\emph{\{K}\{A,B\}\}\$
 | |
|               \end{enumerate}
 | |
|         \item
 | |
|               B wählt einen symmetrischen Sitzungsschlüssel \$K\_r\$ und sendet ihn
 | |
|               verschlüsselt mit dem öffentlichen Schlüssel und dem Passwort zurück
 | |
|               an A
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$B\textbackslash rightarrow
 | |
|                         A:\{\{K\_r\}\emph{\{+K}\{ar\}\}\}\emph{\{K}\{A,B\}\}\$
 | |
|               \end{enumerate}
 | |
|         \item
 | |
|               A und B teilen sich nun einen gemeinsamen Sitzungsschlüssel und
 | |
|               beweisen ihr Wissen darüber durch den Austausch von Nonces
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$A\textbackslash rightarrow B:\{r\_A\}\_\{K\_r\}\$
 | |
|                   \item
 | |
|                         \$B\textbackslash rightarrow A:\{r\_A,r\_B\}\_\{K\_r\}\$
 | |
|                   \item
 | |
|                         \$A\textbackslash rightarrow B:\{r\_B\}\_\{K\_r\}\$
 | |
|               \end{enumerate}
 | |
|         \item
 | |
|               Nach diesem Schritt ist sichergestellt, dass beide \$K\_\{A,B\}\$
 | |
|               gekannt haben müssen und es keinen Man-in-the-Middle-Angriff gegeben
 | |
|               hat
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Sicherheitsdiskussion}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Resistenz gegen Offline-Angriffe hängt davon ab, dass \$+K\_\{ar\}\$
 | |
|               nicht von Zufallszahlen zu unterscheiden ist
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Was bedeutet das für ECC?
 | |
|                   \item
 | |
|                         Für RSA schlagen die Autoren vor, e zu verschlüsseln und n im
 | |
|                         Klartext zu senden
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   n hat keine kleinen Primfaktoren und ist daher von Zufallszahlen
 | |
|                                   unterscheidbar
 | |
|                             \item
 | |
|                                   Immer noch unsicher gegen Man-in-the-Middle-Angriffe, da Angreifer
 | |
|                                   n mit besonderen Eigenschaften wählen können (z.B. \$p-1\$ und
 | |
|                                   \$q-1\$ teilbar durch 3)
 | |
|                             \item
 | |
|                                   Antwort von B ist von Zufallszahlen unterscheidbar
 | |
|                             \item
 | |
|                                   Details sind in {[}Par97{]} oder {[}SR14{]} zu finden.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Bietet keine perfekte Vorwärtsverschwiegenheit...
 | |
|         \item
 | |
|               Aber es gibt ein anderes Protokoll von den Autoren namens DH-EKE
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{DH-EKE}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               DH-EKE ist im Grunde ein DH-Austausch mit cleverer Authentifizierung
 | |
|         \item
 | |
|               A sendet DH-Austausch verschlüsselt mit dem Passwort \$K\_\{A,B\}\$
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$A\textbackslash rightarrow B:\{g\^{}\{ra\}\textbackslash{}
 | |
|                         mod\textbackslash{} p\}\emph{\{K}\{A,B\}\}\$
 | |
|               \end{enumerate}
 | |
|         \item
 | |
|               B antwortet mit seinem Teil des DH-Austauschs (verschlüsselt mit dem
 | |
|               Passwort \$K\_\{A,B\}\$) und verwendet den Sitzungsschlüssel
 | |
|               \$K\_S=g\^{}\{ra*rb\}\textbackslash{} mod\textbackslash{} p\$, um eine
 | |
|               verschlüsselte Nonce \$c\_b\$ zu senden 2.
 | |
|               \$B\textbackslash rightarrow A:\{g\^{}\{rb\}\textbackslash{}
 | |
|               mod\textbackslash{} p\}\emph{\{K}\{A,B\}\}\{c\_b\}\_\{K\_s\}\$
 | |
|         \item
 | |
|               Beide Parteien beweisen ihre Kenntnis von \$K\_S\$ 3.
 | |
|               \$A\textbackslash rightarrow
 | |
|               B:\{c\_a\textbar\textbar c\_b\}\emph{\{K\_s\} 4.
 | |
|                   \$B\textbackslash rightarrow A:\{c\_a\}}\{K\_s\}\$
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Sicherheitsdiskussion 2}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Wiederum müssen verschlüsselte Daten von Zufallsdaten ununterscheidbar
 | |
|               sein
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Wert p muss klug gewählt werden, d.h. \$p-1\$ muss nahe bei
 | |
|                         \$2\^{}\{8*n\}\$ für ausreichend große natürliche Zahlen n liegen
 | |
|                   \item
 | |
|                         Um Angriffe auf kleine Gruppen leicht zu verhindern, sollte
 | |
|                         \$(p-1)/2\$ ebenfalls eine Primzahl sein.
 | |
|                   \item
 | |
|                         ECC ist immer noch schwierig zu realisieren
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Bietet perfektes Vorwärtsgeheimnis
 | |
|         \item
 | |
|               Alles in allem ein nettes Verfahren, das jedoch patentiert werden
 | |
|               musste
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Keine breite Anpassung
 | |
|                   \item
 | |
|                         Führte zur Entwicklung zahlreicher anderer Verfahren
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{SRP}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Das heute am weitesten verbreitete Protokoll: Sicheres Fernkennwort
 | |
|               (SRP)
 | |
|         \item
 | |
|               Mehrere Versionen: Hier SRP-6a {[}Wu02{]}
 | |
|         \item
 | |
|               Initialisierung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Server B wählt eine Zufallszahl \$s\_\{A,B\}\$
 | |
|                   \item
 | |
|                         berechnet \$x=H(s\_\{A,B\} \textbar\textbar{} Benutzername
 | |
|                         \textbar\textbar{} Passwort)\$ und \$v=g\^{}x\textbackslash{}
 | |
|                         mod\textbackslash{} p\$
 | |
|                   \item
 | |
|                         Benutzer werden durch \$(Benutzername, s\_\{A,B\}, v)\$
 | |
|                         authentifiziert
 | |
|                   \item
 | |
|                         Der Server braucht das Passwort nicht zu speichern
 | |
|                         \$\textbackslash rightarrow\$ kann nicht leicht erlangt werden, wenn
 | |
|                         der Server kompromittiert wird!
 | |
|                   \item
 | |
|                         Server kann diese Werte auch nicht verwenden, um sich als Benutzer
 | |
|                         auf anderen Servern auszugeben
 | |
|                   \item
 | |
|                         Die Eigenschaft wird als erweitertes PAKE-Schema bezeichnet
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{SRP - Dialog}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               A initiiert die Verbindung durch Senden seines Benutzernamens
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$A\textbackslash rightarrow B: A\$
 | |
|               \end{enumerate}
 | |
|         \item
 | |
|               B antwortet mit ausgewählten kryptographischen Parametern und einem
 | |
|               Verifizierer v, der durch einen DH-Austausch ,,geblendet'' ist 2.
 | |
|               \$B\textbackslash rightarrow A: p, g, s\_\{A,B\}, (H(g
 | |
|               \textbar\textbar{} p)*v + g\^{}\{rb\})\textbackslash{}
 | |
|               mod\textbackslash{} p\$
 | |
|         \item
 | |
|               A berechnet den gemeinsamen Sitzungsschlüssel durch \$K\_S=(Y\_B-H(g
 | |
|               \textbar\textbar{} p)\emph{g\^{}x)\^{}\{ra+u}x\}\textbackslash{}
 | |
|               mod\textbackslash{} p\$, mit \$u=H(Y\_A\textbar\textbar Y\_B)\$, und
 | |
|               sendet seinen Teil des DH-Austauschs und eine Bestätigung zurück, dass
 | |
|               er \$K\_S\$ kennt 3. \$A\textbackslash rightarrow
 | |
|               B:g\^{}\{ra\}\textbackslash{} mod\textbackslash{} p,
 | |
|               H(Y\_A,Y\_B,K\_S)\$
 | |
|         \item
 | |
|               B berechnet \$K\_S'=(Y\_A v\^{}u)\^{}\{rb\}\textbackslash{}
 | |
|               mod\textbackslash{} p\$ und beweist seine Kenntnis 4.
 | |
|               \$B\textbackslash rightarrow A:H(Y\_A, H(Y\_A,Y\_B,K\_S),K\_S')\$
 | |
|         \item
 | |
|               \$K\_S'\$ und \$K\_S\$ stimmen überein, wenn es keinen
 | |
|               Man-in-the-Middle-Angriff gegeben hat
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{SRP - Diskussion}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Sicheres Schema
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Gegenseitige Authentifizierung zwischen Server und Client
 | |
|                   \item
 | |
|                         Erweiterung erhöht die Sicherheit in Client/Server-Szenarien
 | |
|                   \item
 | |
|                         Keine Unterstützung für ECC, da es Feldarithmetik erfordert
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Patentiert, aber frei zu verwenden
 | |
|         \item
 | |
|               Unterstützung für TLS, IPsec, ...
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{X.509 - Einführung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               X.509 ist eine internationale Empfehlung der ITU-T und gehört zur
 | |
|               X.500-Reihe, die Verzeichnisdienste definiert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die erste Version von X.509 wurde 1988 standardisiert.
 | |
|                   \item
 | |
|                         Eine zweite Version, die 1993 standardisiert wurde, löste einige
 | |
|                         Sicherheitsbedenken
 | |
|                   \item
 | |
|                         Eine dritte Version von X.509 wird derzeit von der IETF in RFC 4211
 | |
|                         gepflegt.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               X.509 definiert einen Rahmen für die Bereitstellung von
 | |
|               Authentifizierungsdiensten, der Folgendes umfasst:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Zertifizierung von öffentlichen Schlüsseln und Handhabung von
 | |
|                         Zertifikaten:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Zertifikatsformat
 | |
|                             \item
 | |
|                                   Zertifikats-Hierarchie
 | |
|                             \item
 | |
|                                   Zertifikatswiderrufslisten
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Drei verschiedene Dialoge für die direkte Authentifizierung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Einseitige Authentifizierung, erfordert synchronisierte Uhren
 | |
|                             \item
 | |
|                                   Gegenseitige Zwei-Wege-Authentifizierung, erfordert immer noch
 | |
|                                   synchronisierte Uhren
 | |
|                             \item
 | |
|                                   Gegenseitige Drei-Wege-Authentifizierung, die vollständig auf
 | |
|                                   Zufallszahlen basiert
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{X.509 - Zertifikate mit öffentlichem
 | |
|         Schlüssel}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-x509-certificates.png}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Ein Public-Key-Zertifikat ist eine Art Reisepass, der bescheinigt,
 | |
|               dass ein öffentlicher Schlüssel zu einem bestimmten Namen gehört
 | |
|         \item
 | |
|               Zertifikate werden von Zertifizierungsstellen (CA) ausgestellt.
 | |
|         \item
 | |
|               Wenn alle Nutzer den öffentlichen Schlüssel der CA kennen, kann jeder
 | |
|               Nutzer jedes von dieser CA ausgestellte Zertifikat überprüfen.
 | |
|         \item
 | |
|               Zertifikate können die Online-Teilnahme eines TTP verhindern
 | |
|         \item
 | |
|               Die Sicherheit des privaten Schlüssels der CA ist entscheidend für die
 | |
|               Sicherheit aller Nutzer!
 | |
|         \item
 | |
|               Notation eines Zertifikats, das einen öffentlichen Schlüssel \$+K\_A\$
 | |
|               an Benutzer A bindet, ausgestellt von der Zertifizierungsstelle CA
 | |
|               unter Verwendung ihres privaten Schlüssels \$-CK\_\{CA\}\$:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$Cert\_\{-CK\_\{CA\}\}(+K\_A) = CA{[}V, SN, AI, CA, T\_\{CA\}, A,
 | |
|                         +K\_A{]}\$ mit:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   V = Versionsnummer
 | |
|                             \item
 | |
|                                   SN = Seriennummer
 | |
|                             \item
 | |
|                                   AI = Algorithmus-Bezeichner des verwendeten Signatur-Algorithmus
 | |
|                             \item
 | |
|                                   CA = Name der Zertifizierungsstelle
 | |
|                             \item
 | |
|                                   \$T\_\{CA\}\$ = Gültigkeitsdauer dieses Zertifikats
 | |
|                             \item
 | |
|                                   A = Name, an den der öffentliche Schlüssel in diesem Zertifikat
 | |
|                                   gebunden ist
 | |
|                             \item
 | |
|                                   \$+K\_A\$ = öffentlicher Schlüssel, der an einen Namen gebunden
 | |
|                                   wird
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Kurzschreibweise \$CA{[}m{]}\$ steht für
 | |
|                         \$(m,\{H(m)\}\emph{\{-CK}\{CA\}\})\$
 | |
|                   \item
 | |
|                         Eine andere Kurzschreibweise für \$Cert\_\{-CK\_\{CA\}\}(+K\_A)\$
 | |
|                         ist \$CA\textless{}\textgreater\$
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{X.509 - Zertifikatsketten \&
 | |
|         Zertifikatshierarchie}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Betrachten wir nun zwei Benutzer Alice und Bob, die in verschiedenen
 | |
|               Ländern leben und sicher kommunizieren wollen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Wahrscheinlichkeit ist recht hoch, dass ihre öffentlichen
 | |
|                         Schlüssel von verschiedenen CAs zertifiziert sind
 | |
|                   \item
 | |
|                         Nennen wir die Zertifizierungsstelle von Alice CA und die von Bob CB
 | |
|                   \item
 | |
|                         Wenn Alice CB nicht vertraut oder gar kennt, dann ist Bobs
 | |
|                         Zertifikat \$CB\textless{}\textgreater\$ für sie nutzlos, dasselbe
 | |
|                         gilt in der anderen Richtung
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Eine Lösung für dieses Problem ist die Konstruktion von
 | |
|               Zertifikatsketten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Stellen Sie sich einmal vor, dass CA und CB einander kennen und
 | |
|                         einander vertrauen.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Ein Beispiel aus der realen Welt für dieses Konzept ist das
 | |
|                                   gegenseitige Vertrauen zwischen Ländern hinsichtlich ihrer
 | |
|                                   Passausgabestellen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Wenn CA den öffentlichen Schlüssel von CB mit einem Zertifikat
 | |
|                         \$CA\textless{}\textgreater\$ und CB den öffentlichen Schlüssel von
 | |
|                         CA mit einem Zertifikat \$CB\textless{}\textgreater\$ beglaubigt,
 | |
|                         können A und B ihre Zertifikate anhand einer Zertifikatskette
 | |
|                         überprüfen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Nachdem ihr \$CB\textless{}\textgreater\$ vorgelegt wurde,
 | |
|                                   versucht Alice herauszufinden, ob es ein Zertifikat
 | |
|                                   \$CA\textless{}\textgreater\$ gibt.
 | |
|                             \item
 | |
|                                   Sie überprüft dann die Kette: \$CA\textless{}\textgreater,
 | |
|                                   CB\textless{}\textgreater\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zertifikatsketten müssen nicht auf eine Länge von zwei Zertifikaten
 | |
|               beschränkt sein:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$CA\textless{}\textgreater, CC\textless{}\textgreater,
 | |
|                         CD\textless{}\textgreater, CE\textless{}\textgreater,
 | |
|                         CG\textless{}\$ würde es Alice erlauben, das von CG ausgestellte
 | |
|                         Zertifikat des Benutzers G zu überprüfen, auch wenn sie nur ihre
 | |
|                         eigene Zertifizierungsstelle CA kennt und ihr vertraut.
 | |
|                   \item
 | |
|                         Tatsächlich wird das Vertrauen von A in den Schlüssel +KG durch eine
 | |
|                         Vertrauenskette zwischen Zertifizierungsstellen hergestellt.
 | |
|                   \item
 | |
|                         Wenn Alice jedoch \$CG\textless{}\textgreater\$ vorgelegt wird, ist
 | |
|                         es nicht offensichtlich, welche Zertifikate sie zur Überprüfung
 | |
|                         benötigt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               X.509 schlägt daher vor, dass die Zertifizierungsstellen in einer
 | |
|               Zertifizierungshierarchie angeordnet werden, so dass die Navigation
 | |
|               einfach ist:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-x509-hierarchy.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Verbleibendes Problem:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Zertifizierungspfade können ziemlich lang werden
 | |
|                   \item
 | |
|                         Die Kompromittierung eines einzigen Zwischenzertifikats reicht aus,
 | |
|                         um die Sicherheit zu brechen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Führt zu zwei Entwicklungen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kreuzzertifizierung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Ermöglicht das Signieren von Stammzertifikaten untereinander
 | |
|                             \item
 | |
|                                   Erlaubt aber auch ,,Abkürzungen'' im Zertifikatswald
 | |
|                             \item
 | |
|                                   Macht die Navigation komplexer, aber potenziell mehrwegfähig
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Anheften von Zertifikaten:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Ermöglicht Anwendungen, z. B. Webbrowsern, zu lernen, dass Peers
 | |
|                                   nur Zertifikate von einer bestimmten CA verwenden
 | |
|                             \item
 | |
|                                   Wird z. B. von Google Chrome verwendet, nachdem
 | |
|                                   Man-in-the-Middle-Angriffe auf google.com bekannt wurden
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{X.509 -
 | |
|         Zertifikatssperrung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Nehmen wir nun an, dass der private Schlüssel von Alice kompromittiert
 | |
|               wurde, z.B. weil Eve in ihren Computer eingebrochen ist, ihren
 | |
|               privaten Schlüssel aus einer Datei gelesen und das Passwort geknackt
 | |
|               hat, das sie zum Schutz des privaten Schlüssels verwendet hat:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn Alice feststellt, dass ihr privater Schlüssel kompromittiert
 | |
|                         wurde, möchte sie unbedingt den Widerruf des entsprechenden
 | |
|                         Zertifikats für den öffentlichen Schlüssel beantragen.
 | |
|                   \item
 | |
|                         Wenn das Zertifikat nicht widerrufen wird, könnte sich Eve bis zum
 | |
|                         Ende der Gültigkeitsdauer des Zertifikats weiterhin als Alice
 | |
|                         ausgeben.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Eine noch schlimmere Situation tritt ein, wenn der private Schlüssel
 | |
|               einer Zertifizierungsstelle kompromittiert wird:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Dies bedeutet, dass alle mit diesem Schlüssel signierten Zertifikate
 | |
|                         widerrufen werden müssen!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Widerruf von Zertifikaten wird durch das Führen von
 | |
|               Zertifikatswiderrufslisten (CRL) realisiert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         CRLs werden im X.500-Verzeichnis gespeichert, oder Erweiterungen
 | |
|                         können auf eine URL verweisen
 | |
|                   \item
 | |
|                         Bei der Überprüfung eines Zertifikats muss auch geprüft werden, ob
 | |
|                         das Zertifikat noch nicht widerrufen wurde (Suche nach dem
 | |
|                         Zertifikat in der CRL)
 | |
|                   \item
 | |
|                         Der Widerruf von Zertifikaten ist ein relativ langsamer und teurer
 | |
|                         Vorgang
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{X.509 -
 | |
|         Authentifizierungsprotokolle}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Einweg-Authentifizierung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn nur Alice sich gegenüber Bob authentifizieren will, sendet sie
 | |
|                         folgende Nachricht an Bob:
 | |
|               \end{itemize}
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$(A{[}t\_A, r\_A, B, sgnData\_A, \{K\_\{A,B\}\}\emph{\{+KB\}{]},
 | |
|                         CA\textless{}\textgreater)\$, wobei \$sgnData\_A\$ optionale Daten
 | |
|                         darstellt, die von \$A signiert werden sollen,
 | |
|                         \{K}\{A,B\}\}\_\{+K\_B\}\$ ein optionaler Sitzungsschlüssel ist, der
 | |
|                         mit Bobs öffentlichem Schlüssel verschlüsselt wird, und
 | |
|                         \$CA\textless{}\textgreater\$ ebenfalls optional ist
 | |
|               \end{enumerate}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beim Empfang dieser Nachricht verifiziert Bob mit \$+K\_\{CA\}\$ das
 | |
|                         enthaltene Zertifikat, extrahiert Alices öffentlichen Schlüssel,
 | |
|                         überprüft Alices Signatur der Nachricht und die Aktualität der
 | |
|                         Nachricht \$(t\_A)\$ und entschlüsselt optional den enthaltenen
 | |
|                         Sitzungsschlüssel \$K\_\{A,B\}\$, den Alice vorgeschlagen hat
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zwei-Wege-Authentifizierung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn eine gegenseitige Authentifizierung erwünscht ist, dann
 | |
|                         erstellt Bob eine ähnliche Nachricht:
 | |
|               \end{itemize}
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \setcounter{enumi}{1}
 | |
|                   \item
 | |
|                         \$(B{[}t\_B, r\_B, A, r\_A, sgnData\_B,\{K\_\{B,A\}\}\_\{+K\_A\}{]},
 | |
|                         CA\textless{}\textgreater)\$ der enthaltene Zeitstempel \$t\_B\$ ist
 | |
|                         nicht wirklich erforderlich, da Alice überprüfen kann, ob die
 | |
|                         signierte Nachricht die Zufallszahl \$r\_A\$ enthält
 | |
|               \end{enumerate}
 | |
|         \item
 | |
|               Drei-Wege-Authentifizierung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn Alice und Bob nicht sicher sind, ob sie synchrone Uhren haben,
 | |
|                         sendet Alice die folgende Nachricht an Bob:
 | |
|               \end{itemize}
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \setcounter{enumi}{2}
 | |
|                   \item
 | |
|                         \$A{[}r\_B{]}\$
 | |
|               \end{enumerate}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Rechtzeitigkeit der Teilnahme von Alice am
 | |
|                         Authentifizierungsdialog wird also durch die Unterzeichnung der
 | |
|                         ,,frischen'' Zufallszahl \$r\_B\$ nachgewiesen.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Anmerkung zum Signaturalgorithmus:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wie aus der Verwendung von Zertifikaten ersichtlich, schlägt X.509
 | |
|                         vor, die Authentifizierungsnachrichten mit asymmetrischer
 | |
|                         Kryptographie zu signieren.
 | |
|                   \item
 | |
|                         Das Authentifizierungsprotokoll selbst kann jedoch auch mit
 | |
|                         symmetrischer Kryptographie eingesetzt werden:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   In diesem Fall müssen sich A und B vor jedem Protokolldurchlauf
 | |
|                                   auf einen geheimen Authentifizierungsschlüssel \$AK\_\{A,B\}\$
 | |
|                                   geeinigt haben, und
 | |
|                             \item
 | |
|                                   die Nachrichten werden durch Anhängen eines mit diesem Schlüssel
 | |
|                                   berechneten MAC signiert.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Formale Validierung von kryptographischen
 | |
|         Protokollen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Wie wir am Beispiel des Needham-Schroeder-Protokolls gesehen haben,
 | |
|               ist die Sicherheit eines kryptografischen Protokolls nicht einfach zu
 | |
|               beurteilen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Es gibt viele weitere Beispiele für Protokollfehler in
 | |
|                         kryptografischen Protokollen, die manchmal erst Jahre nach der
 | |
|                         Veröffentlichung des Protokolls entdeckt wurden
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Eine frühe Version des X.509-Standards enthielt einen Fehler, der
 | |
|                                   dem Fehler im Needham-Schroeder-Protokoll ähnlich war.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Daraus ergibt sich der Bedarf an formalen Methoden zur Analyse der
 | |
|                         Eigenschaften von kryptographischen Protokollen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kategorien von formalen Validierungsmethoden für kryptografische
 | |
|               Protokolle:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Allgemeine Ansätze zur Analyse spezifischer Protokolleigenschaften:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Beispiele: Finite-State-Machine-basierte Ansätze, Prädikatenkalkül
 | |
|                                   erster Ordnung, Allzweck-Spezifikationssprachen
 | |
|                             \item
 | |
|                                   Hauptnachteil: Sicherheit unterscheidet sich wesentlich von
 | |
|                                   Korrektheit, da für letztere keine böswillige Manipulation
 | |
|                                   angenommen werden muss
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kategorien von formalen Validierungsmethoden für kryptographische
 | |
|               Protokolle:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Expertensystembasierte Ansätze:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Das Wissen menschlicher Experten wird in deduktive Regeln
 | |
|                                   formalisiert, die von einem Protokolldesigner zur Untersuchung
 | |
|                                   verschiedener Szenarien verwendet werden können.
 | |
|                             \item
 | |
|                                   Hauptnachteil: nicht gut geeignet, um Schwachstellen in
 | |
|                                   kryptografischen Protokollen zu finden, die auf unbekannten
 | |
|                                   Angriffstechniken beruhen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Algebraische Ansätze:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Kryptografische Protokolle werden als algebraische Systeme
 | |
|                                   spezifiziert
 | |
|                             \item
 | |
|                                   Die Analyse wird durchgeführt, indem algebraische
 | |
|                                   Termumschreibungseigenschaften des Modells untersucht werden und
 | |
|                                   geprüft wird, ob das Modell bestimmte erwünschte oder unerwünschte
 | |
|                                   Zustände erreichen kann
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Spezifische logikbasierte Ansätze:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Ansätze dieser Klasse definieren einen Satz von Prädikaten und
 | |
|                                   eine Abbildung der während eines Protokolllaufs ausgetauschten
 | |
|                                   Nachrichten auf einen Satz von Formeln
 | |
|                             \item
 | |
|                                   Ein generischer Satz von Regeln erlaubt es dann, das Wissen und
 | |
|                                   den Glauben zu analysieren, der von den Peer-Entitäten eines
 | |
|                                   kryptographischen Protokolls während eines Protokolllaufs erlangt
 | |
|                                   wird (recht erfolgreicher Ansatz: GNY-Logik {[}GNY90a{]})
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Sichere
 | |
|       Gruppenkommunikation}
 | |
| 
 | |
| 
 | |
|     \section{Zugriffskontrolle}
 | |
| 
 | |
| 
 | |
|     \subsection{Was ist Zugangskontrolle?}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Definition: Die Zugriffskontrolle umfasst die Mechanismen, die die
 | |
|               Vermittlung von Subjektanfragen für den Zugriff auf Objekte, wie sie
 | |
|               in einer bestimmten Sicherheitspolitik definiert sind, erzwingen.
 | |
|         \item
 | |
|               Ein wichtiges konzeptuelles Modell in diesem Zusammenhang ist der
 | |
|               Referenzmonitor:
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-reference-monitor.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Sicherheitspolitik}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Um Entscheidungen über die Zugriffskontrolle treffen zu können, muss
 | |
|               der Referenzmonitor die Sicherheitspolitik des Systems kennen
 | |
|         \item
 | |
|               Definition: Die Sicherheitspolitik eines Systems definiert die
 | |
|               Bedingungen, unter denen Subjektzugriffe auf Objekte durch die
 | |
|               Funktionalität des Systemreferenzmonitors vermittelt werden
 | |
|         \item
 | |
|               Bemerkungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die obige Definition wird gewöhnlich im Zusammenhang mit der
 | |
|                         Sicherheit von Computern und Betriebssystemen gegeben.
 | |
|                   \item
 | |
|                         Der Referenzmonitor ist nur eine konzeptionelle Einheit, er muss
 | |
|                         nicht unbedingt ein physisches oder logisches Gegenstück in einem
 | |
|                         bestimmten System haben.
 | |
|                   \item
 | |
|                         Der Begriff Sicherheitspolitik wird oft auch in einem weiteren Sinne
 | |
|                         verwendet, um eine Spezifikation aller Sicherheitsaspekte eines
 | |
|                         Systems einschließlich Bedrohungen, Risiken, Sicherheitsziele,
 | |
|                         Gegenmaßnahmen usw. zu beschreiben.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Klassische Computersubjekte, Objekte und
 | |
|         Zugriffsarten}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Definition: Ein Subjekt ist eine aktive Entität, die eine Anfrage nach
 | |
|               Ressourcen initiieren und diese Ressourcen nutzen kann, um eine
 | |
|               Aufgabe zu erfüllen.
 | |
|         \item
 | |
|               Definition: Ein Objekt ist ein passives Repository, das zur
 | |
|               Speicherung von Informationen dient
 | |
|         \item
 | |
|               Die beiden obigen Definitionen stammen aus der klassischen
 | |
|               Computerwissenschaft:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Subjekte sind Prozesse, und Dateien, Verzeichnisse usw. sind
 | |
|                         Objekte.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Es ist jedoch nicht immer offensichtlich, Subjekte und Objekte im
 | |
|               Zusammenhang mit der Kommunikation zu identifizieren:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Stellen Sie sich vor, eine Einheit sendet eine Nachricht an eine
 | |
|                         andere Einheit: Ist die empfangende Einheit als Objekt zu
 | |
|                         betrachten?
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Außerdem müssen wir wissen, was ein Zugriff ist und welche Arten von
 | |
|               Zugriffen es gibt:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiele aus der klassischen Informatik für Zugriffsarten: Lesen,
 | |
|                         Schreiben, Ausführen
 | |
|                   \item
 | |
|                         Objektorientierte Sichtweise: Jede Methode eines Objekts definiert
 | |
|                         eine Art des Zugriffs
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Sicherheitskennzeichen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Definition: Eine Sicherheitsstufe wird als hierarchisches Attribut zu
 | |
|               Entitäten eines Systems definiert, um deren Sensibilitätsgrad zu
 | |
|               kennzeichnen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiele:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Militär: unklassifiziert \textless{} vertraulich \textless{}
 | |
|                                   geheim \textless{} streng geheim
 | |
|                             \item
 | |
|                                   Kommerziell: öffentlich \textless{} sensibel \textless{}
 | |
|                                   proprietär \textless{} eingeschränkt
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Definition: Eine Sicherheitskategorie ist definiert als eine
 | |
|               nicht-hierarchische Gruppierung von Entitäten, um den Grad ihrer
 | |
|               Sensibilität zu kennzeichnen.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiel (Wirtschaft): Abteilung A, Abteilung B, Verwaltung usw.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Definition: Eine Sicherheitskennzeichnung ist definiert als ein
 | |
|               Attribut, das mit Systemeinheiten verbunden ist, um deren
 | |
|               hierarchische Sensibilitätsstufe und Sicherheitskategorien zu
 | |
|               kennzeichnen.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         In Form von mathematischen Mengen: \$Labels = Levels
 | |
|                         \textbackslash times Powerset(Categories)\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sicherheitslabels, die die Sicherheitsempfindlichkeit von:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Subjekte werden Freigaben genannt
 | |
|                   \item
 | |
|                         Objekte werden Klassifizierungen genannt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ein wichtiges Konzept für die Spezifikation von Sicherheitspolitiken
 | |
|               sind binäre Relationen auf der Menge der Kennzeichnungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine binäre Relation auf einer Menge S ist eine Teilmenge des
 | |
|                         Kreuzprodukts \$S\textbackslash times S\$
 | |
|                   \item
 | |
|                         Beispiel:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dominiert: \$Labels \textbackslash times Labels\$
 | |
|                             \item
 | |
|                                   Dominiert \$=\{(b1,b2) \textbar{} b1, b2 \textbackslash in Labels
 | |
|                                   \textbackslash wedge level(b1) \textbackslash geq level(b2)
 | |
|                                   \textbackslash wedge categories(b2) \textbackslash subseteq
 | |
|                                   categories(b1)\}\$
 | |
|                             \item
 | |
|                                   Wenn \$(b1, b2) \textbackslash in Dominates\$, schreiben wir auch
 | |
|                                   b1 dominates b
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Spezifikation der
 | |
|         Sicherheitspolitik}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Formale Ausdrücke für Regeln der Sicherheitspolitik:
 | |
|         \item
 | |
|               Betrachten Sie die folgenden Zuordnungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$allow: Subjects \textbackslash times Accesses \textbackslash times
 | |
|                         Objects \textbackslash rightarrow boolean\$
 | |
|                   \item
 | |
|                         \$own: Subjects \textbackslash times Objects
 | |
|                         \textbackslash rightarrow boolean\$
 | |
|                   \item
 | |
|                         \$admin: Subjects \textbackslash rightarrow boolean\$
 | |
|                   \item
 | |
|                         \$dominates: Labels \textbackslash times Labels
 | |
|                         \textbackslash rightarrow boolean\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die oben genannten Zuordnungen können verwendet werden, um bekannte
 | |
|               Sicherheitsrichtlinien zu spezifizieren:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$ownership: \textbackslash forall s \textbackslash in Subjects, o
 | |
|                         \textbackslash in Objects, a \textbackslash in Accesses: allow(s, o,
 | |
|                         a) \textbackslash Leftrightarrow own(s, o)\$
 | |
|                   \item
 | |
|                         \$own\_admin: \textbackslash forall s \textbackslash in Subjects, o
 | |
|                         \textbackslash in Objects, a \textbackslash in Accesses: allow(s, o,
 | |
|                         a) \textbackslash Leftrightarrow own(s, o) \textbackslash wedge
 | |
|                         admin(s)\$
 | |
|                   \item
 | |
|                         \$dom: \textbackslash forall s \textbackslash in Subjects, o
 | |
|                         \textbackslash in Objects, a \textbackslash in Accesses: allow(s, o,
 | |
|                         a) \textbackslash Leftrightarrow dominates(label(s), label(o))\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die dom-Policy erfordert ein System zur Speicherung und Verarbeitung
 | |
|               von Sicherheitskennzeichnungen für jede Entität, erlaubt aber
 | |
|               komplexere Zugriffskontrollschemata als die ownership- und
 | |
|               own\_admin-Policy
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Arten von
 | |
|         Zugriffskontrollmechanismen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Ein Zugriffskontrollmechanismus ist eine konkrete Umsetzung des
 | |
|               Referenzmonitor-Konzepts
 | |
|         \item
 | |
|               Es gibt zwei Haupttypen von Zugriffskontrollmechanismen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Diskretionäre Zugriffskontrolle umfasst diejenigen Verfahren und
 | |
|                         Mechanismen, die die spezifizierte Vermittlung nach dem Ermessen der
 | |
|                         einzelnen Benutzer durchsetzen
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Beispiel: Das Unix-Betriebssystem ermöglicht es den Benutzern, die
 | |
|                                   Zugriffsrechte für Dateien, die ihnen gehören, zu erteilen oder zu
 | |
|                                   entziehen (Lesen, Schreiben, Ausführen).
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die obligatorische Zugriffskontrolle umfasst die Verfahren und
 | |
|                         Mechanismen, die die angegebene Vermittlung nach dem Ermessen einer
 | |
|                         zentralen Systemverwaltung durchsetzen.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Beide Arten können kombiniert werden, wobei die obligatorischen
 | |
|               Zugriffskontrollentscheidungen in den meisten Fällen Vorrang vor den
 | |
|               diskretionären Entscheidungen haben
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiel:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Verwendung einer diskretionären Zugangskontrolle auf
 | |
|                                   Personalcomputern kombiniert mit einer obligatorischen
 | |
|                                   Zugangskontrolle für die Kommunikation
 | |
|                                   (\$\textbackslash rightarrow\$ Firewalls)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Zugriffsmatrizen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Ein nützliches Konzept für die Beschreibung von
 | |
|               Zugangskontrollmechanismen ist die Zugangsmatrix:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         In einer Zugriffsmatrix für zwei Mengen von Subjekten und Objekten
 | |
|                         entspricht jede Zeile einem Subjekt und jede Spalte einem Objekt
 | |
|                   \item
 | |
|                         Jede Zelle der Matrix definiert die Zugriffsrechte des
 | |
|                         entsprechenden Subjekts auf das entsprechende Objekt
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     %\begin{longtable}[]{@{}lllll@{}}
 | |
|     %    \toprule
 | |
|     %              & Object 1 & Object 2 & ...             & Object M\tabularnewline
 | |
|     %    \midrule
 | |
|     %    \endhead
 | |
|     %    Subject 1 &          &          & ...             & \tabularnewline
 | |
|     %    Subject 2 &          &          & ...             & \tabularnewline
 | |
|     %    ...       & ...      & ...      & (Access Rights) & \tabularnewline
 | |
|     %    Subject N &          &          &                 & \tabularnewline
 | |
|     %    \bottomrule
 | |
|     %\end{longtable}
 | |
| 
 | |
| 
 | |
|     \subsection{Gemeinsame
 | |
|         Zugriffskontrollschemata}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Zugriffskontroll-Listen (ACL):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         ACLs sind die Grundlage für ein Zugriffskontrollschema, bei dem für
 | |
|                         jedes Objekt eine Liste gültiger Subjekte gespeichert wird, die
 | |
|                         Zugriff auf dieses Objekt haben könnten (möglicherweise zusammen mit
 | |
|                         der Art des erlaubten Zugriffs).
 | |
|                   \item
 | |
|                         ACLs werden in der Regel bei der diskretionären Zugriffskontrolle
 | |
|                         verwendet, da es zu viele ACLs gibt, als dass sie von einer
 | |
|                         zentralen Verwaltungseinrichtung verwaltet werden könnten.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Fähigkeiten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Capabilities sind gewissermaßen das Gegenkonzept zu ACLs, da bei
 | |
|                         Capabilities jedes Subjekt eine Liste von Zugriffsrechten auf
 | |
|                         Objekte besitzt
 | |
|                   \item
 | |
|                         Der Vorteil (und die Gefahr) von Capabilities ist, dass ein Subjekt
 | |
|                         einige seiner Capabilities an andere Subjekte weitergeben kann
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Label-basierte Zugriffskontrolle:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn Sicherheitslabels mit den Entitäten eines Systems gespeichert
 | |
|                         und verarbeitet werden, können sie zur Durchführung einer
 | |
|                         label-basierten Zugriffskontrolle verwendet werden
 | |
|                   \item
 | |
|                         Dieses Verfahren wird in der Regel als obligatorischer
 | |
|                         Zugriffskontrollmechanismus verwendet.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \$\textbackslash rightarrow\$ Die Datenintegrität von
 | |
|               Zugriffskontrolldatenstrukturen ist entscheidend!
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Integration von Sicherheitsdiensten in
 | |
|       Kommunikationsarchitekturen}
 | |
| 
 | |
| 
 | |
|     \subsection{Motivation: Was ist wo zu
 | |
|         tun?}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Analog zur Methodik der Sicherheitsanalyse gibt es zwei Dimensionen,
 | |
|               die bei der Integration von Sicherheitsdiensten in
 | |
|               Kommunikationsarchitekturen zu beachten sind:
 | |
|         \item
 | |
|               Dimension 1: Welcher Sicherheitsdienst soll in welchem Knoten
 | |
|               realisiert werden?
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-Security-service-dim-1.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Dimension 2: Welcher Sicherheitsdienst sollte in welcher Schicht
 | |
|               realisiert werden?
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-Security-service-dim-2.png}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Ein pragmatisches Modell für sicheres und vernetztes
 | |
|         Rechnen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-Sicheres-Netz-Modell.png}
 | |
|         \item
 | |
|               Anwendung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein Stück Software, das eine bestimmte Aufgabe erfüllt, z. B.
 | |
|                         elektronische E-Mail, Webdienst, Textverarbeitung, Datenspeicherung
 | |
|                         usw.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Endsystem:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein Gerät, das vom Personal Computer über den Server bis zum
 | |
|                         Großrechner reicht.
 | |
|                   \item
 | |
|                         Für Sicherheitszwecke hat ein Endsystem in der Regel eine einzige
 | |
|                         Richtlinienautorität.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Teilnetz:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine Sammlung von Kommunikationseinrichtungen, die unter der
 | |
|                         Kontrolle einer Verwaltungsorganisation stehen, z. B. ein LAN, ein
 | |
|                         Campusnetz, ein WAN usw.
 | |
|                   \item
 | |
|                         Für Sicherheitszwecke hat ein Teilnetz in der Regel eine
 | |
|                         Richtlinienkompetenz.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Internet:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine Sammlung von miteinander verbundenen Teilnetzen
 | |
|                   \item
 | |
|                         Im Allgemeinen haben die Teilnetze, die in einem Inter-Netzwerk
 | |
|                         verbunden sind, unterschiedliche Richtlinienautoritäten
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Es gibt vier Ebenen, auf denen unterschiedliche Anforderungen an
 | |
|               Sicherheitsprotokollelemente gestellt werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Anwendungsebene:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Sicherheitsprotokollelemente, die anwendungsabhängig sind
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Endsystem-Ebene:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Bereitstellung von Schutz auf einer Endsystem-zu-Endsystem-Basis
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Teilnetzebene:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Bereitstellung von Schutz über ein Teilnetz oder ein Zwischennetz,
 | |
|                                   das als weniger sicher gilt als andere Teile der Netzumgebung
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Verbindungsebene:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Bereitstellung von Schutz innerhalb eines Teilnetzes, z. B. über
 | |
|                                   eine Verbindung, die als weniger vertrauenswürdig gilt als andere
 | |
|                                   Teile der Teilnetzumgebung
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Beziehungen zwischen Schichten und
 | |
|         Anforderungsniveaus}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Beziehungen zwischen den Protokollschichten und den Stufen der
 | |
|               Sicherheitsanforderungen für die Protokollelemente sind nicht
 | |
|               eins-zu-eins:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sicherheitsmechanismen, die sowohl die Anforderungen der Endsystem-
 | |
|                         als auch der Teilnetzebene erfüllen, können entweder in der
 | |
|                         Transport- und/oder in der Netzwerkschicht realisiert werden.
 | |
|                   \item
 | |
|                         Die Anforderungen der Verbindungsebene können durch die Integration
 | |
|                         von Sicherheitsmechanismen oder durch die Verwendung von
 | |
|                         ,,speziellen Funktionen'' der Verbindungsschicht und/oder der
 | |
|                         physikalischen Schicht erfüllt werden.
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-Layer-relationship.png}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Allgemeine Überlegungen zur architektonischen
 | |
|         Platzierung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Verkehrsvermischung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Infolge des Multiplexing besteht auf niedrigeren Ebenen eine größere
 | |
|                         Tendenz, Datenelemente von verschiedenen Quell-/Ziel-Benutzern
 | |
|                         und/oder Anwendungen in einem Datenstrom zu vermischen
 | |
|                   \item
 | |
|                         Ein Sicherheitsdienst, der auf einer Schicht/Ebene realisiert wird,
 | |
|                         behandelt den Verkehr dieser Schicht/Ebene gleich, was zu einer
 | |
|                         unzureichenden Kontrolle der Sicherheitsmechanismen für Benutzer und
 | |
|                         Anwendungen führt.
 | |
|                   \item
 | |
|                         Wenn eine Sicherheitspolitik eine differenziertere Behandlung
 | |
|                         erfordert, sollte sie besser auf einer höheren Ebene realisiert
 | |
|                         werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wissen über die Route:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Auf niedrigeren Ebenen ist in der Regel mehr Wissen über die
 | |
|                         Sicherheitseigenschaften der verschiedenen Routen und Verbindungen
 | |
|                         vorhanden.
 | |
|                   \item
 | |
|                         In Umgebungen, in denen diese Merkmale stark variieren, kann die
 | |
|                         Platzierung von Sicherheit auf niedrigeren Ebenen Vorteile in Bezug
 | |
|                         auf Effektivität und Effizienz haben
 | |
|                   \item
 | |
|                         Geeignete Sicherheitsdienste können auf der Basis von Teilnetzen
 | |
|                         oder Verbindungen ausgewählt werden, so dass keine Kosten für
 | |
|                         Sicherheit anfallen, wenn der Schutz unnötig ist.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Anzahl der Schutzpunkte:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn die Sicherheit auf der Anwendungsebene angesiedelt wird, muss
 | |
|                         die Sicherheit in jeder sensiblen Anwendung und jedem Endsystem
 | |
|                         implementiert werden.
 | |
|                   \item
 | |
|                         Sicherheit auf der Verbindungsebene bedeutet, dass am Ende jeder
 | |
|                         Netzverbindung, die als weniger vertrauenswürdig gilt, Sicherheit
 | |
|                         implementiert werden muss.
 | |
|                   \item
 | |
|                         Wenn die Sicherheit in der Mitte der Architektur angesiedelt wird,
 | |
|                         müssen die Sicherheitsmerkmale an weniger Stellen installiert
 | |
|                         werden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Schutz der Protokoll-Header:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Sicherheitsschutz auf höheren Ebenen kann die Protokollköpfe der
 | |
|                         unteren Protokollschichten nicht schützen.
 | |
|                   \item
 | |
|                         Die Netzwerkinfrastruktur muss möglicherweise ebenfalls geschützt
 | |
|                         werden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Quelle/Senke-Bindung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sicherheitsdienste wie die Authentifizierung der Datenherkunft und
 | |
|                         die Unleugbarkeit hängen von der Zuordnung der Daten zu ihrer Quelle
 | |
|                         oder Senke ab.
 | |
|                   \item
 | |
|                         Dies wird am effizientesten auf höheren Ebenen erreicht,
 | |
|                         insbesondere auf der Anwendungsebene.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Überlegungen zu bestimmten
 | |
|         Ebenen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Anwendungsebene:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Diese Stufe kann die einzige geeignete Stufe sein, zum Beispiel
 | |
|                         weil:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Ein Sicherheitsdienst ist anwendungsspezifisch, z.B. die
 | |
|                                   Zugriffskontrolle für einen vernetzten Dateispeicher
 | |
|                             \item
 | |
|                                   Ein Sicherheitsdienst muss Anwendungs-Gateways durchqueren, z.B.
 | |
|                                   Integrität und/oder Vertraulichkeit von elektronischer Post
 | |
|                             \item
 | |
|                                   Die Semantik der Daten ist wichtig, z.B. für
 | |
|                                   Nichtabstreitbarkeitsdienste - Es liegt außerhalb der Reichweite
 | |
|                                   eines Benutzers/Anwendungsprogrammierers, Sicherheit auf einer
 | |
|                                   niedrigeren Ebene zu integrieren
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Endsystem-Ebene:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Diese Ebene ist geeignet, wenn davon ausgegangen wird, dass die
 | |
|                         Endsysteme vertrauenswürdig sind und das Kommunikationsnetz als
 | |
|                         nicht vertrauenswürdig angesehen wird.
 | |
|                   \item
 | |
|                         Weitere Vorteile der Sicherheit auf Endsystemebene:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die Sicherheitsdienste sind für die Anwendungen transparent.
 | |
|                             \item
 | |
|                                   Die Verwaltung von Sicherheitsdiensten kann leichter in die Hände
 | |
|                                   eines Systemadministrators gelegt werden.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Teilnetzebene:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Auch wenn die auf dieser Ebene implementierte Sicherheit in der
 | |
|                         gleichen Protokollschicht wie auf der Endsystemebene implementiert
 | |
|                         werden kann, sollten diese nicht verwechselt werden:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Mit der auf der Subnetzebene implementierten Sicherheit wird in
 | |
|                                   der Regel der gleiche Schutz für alle Endsysteme dieses Subnetzes
 | |
|                                   realisiert
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Es ist sehr üblich, dass ein Teilnetz in der Nähe eines Endsystems
 | |
|                         als ebenso vertrauenswürdig angesehen wird, da es sich in denselben
 | |
|                         Räumlichkeiten befindet und von denselben Behörden verwaltet wird.
 | |
|                   \item
 | |
|                         In den meisten Fällen gibt es weit weniger zu sichernde
 | |
|                         Teilnetz-Gateways als Endsysteme.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Verbindungsebene:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn es relativ wenige nicht vertrauenswürdige Verbindungen gibt,
 | |
|                         kann es ausreichend und zudem einfacher und kostengünstiger sein,
 | |
|                         das Netz auf der Verbindungsebene zu schützen.
 | |
|                   \item
 | |
|                         Darüber hinaus können auf der Verbindungsebene spezielle
 | |
|                         Schutztechniken eingesetzt werden, z. B. Spreizspektrum oder
 | |
|                         Frequenzsprungverfahren.
 | |
|                   \item
 | |
|                         Die Vertraulichkeit des Verkehrsflusses erfordert in der Regel einen
 | |
|                         Schutz auf Verbindungsebene.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Interaktionen zwischen menschlichen
 | |
|         Nutzern}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Einige Netzsicherheitsdienste beinhalten eine direkte Interaktion mit
 | |
|               einem menschlichen Benutzer, der wichtigste davon ist die
 | |
|               Authentifizierung.
 | |
|         \item
 | |
|               Solche Interaktionen passen in keine der bisher vorgestellten
 | |
|               Architekturoptionen, da der Benutzer außerhalb der
 | |
|               Kommunikationseinrichtungen steht.
 | |
|         \item
 | |
|               Die Kommunikation zur Unterstützung der Authentifizierung kann auf
 | |
|               eine der folgenden Weisen erfolgen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Örtlich:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der menschliche Benutzer authentifiziert sich gegenüber dem
 | |
|                                   lokalen Endsystem
 | |
|                             \item
 | |
|                                   Das Endsystem authentifiziert sich gegenüber dem entfernten
 | |
|                                   Endsystem und teilt die Identität des Benutzers mit
 | |
|                             \item
 | |
|                                   Das entfernte System muss dem lokalen Endsystem vertrauen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Unter Einbeziehung von Protokollelementen auf der Anwendungsschicht:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der Benutzer gibt einige Authentifizierungsinformationen an das
 | |
|                                   lokale System weiter, die sicher an das entfernte System
 | |
|                                   weitergeleitet werden
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Kombination der oben genannten Mittel:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Beispiel: Kerberos
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Integration in untere Protokollschichten vs.
 | |
|         Anwendungen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Vorteile der Integration von Sicherheitsdiensten in niedrigere
 | |
|               Netzwerkschichten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sicherheit:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Auch das Netz selbst muss geschützt werden
 | |
|                             \item
 | |
|                                   Sicherheitsmechanismen, die in den Netzelementen (insbesondere in
 | |
|                                   der Hardware) realisiert sind, sind für die Netznutzer oft
 | |
|                                   schwerer angreifbar
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Anwendungsunabhängigkeit:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Grundlegende Netzsicherheitsdienste müssen nicht in jede einzelne
 | |
|                                   Anwendung integriert werden
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Dienstgüte (QoS):
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die QoS-erhaltende Planung des Kommunikationssubsystems kann auch
 | |
|                                   die Verschlüsselung nebeneinander bestehender Datenströme planen.
 | |
|                             \item
 | |
|                                   Beispiel: gleichzeitiger Sprachanruf und FTP-Übertragung
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Effizienz:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Hardware-Unterstützung für rechenintensive Ver-/Entschlüsselung
 | |
|                                   kann leichter in die Protokollverarbeitung integriert werden
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Integration in Endsysteme vs.
 | |
|         Zwischensysteme}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Integration in Endsysteme:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kann im Allgemeinen entweder auf der Anwendungs- oder der
 | |
|                         Endsystemebene erfolgen
 | |
|                   \item
 | |
|                         In einigen speziellen Fällen kann auch ein Schutz auf
 | |
|                         Verbindungsebene angebracht sein, z. B. bei der Verwendung eines
 | |
|                         Modems zur Verbindung mit einem bestimmten Gerät
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Integration in Zwischensysteme
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kann auf allen vier Ebenen erfolgen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Anwendungs-/,,Endsystem"-Ebene: zur Sicherung der
 | |
|                                   Verwaltungsschnittstellen von Zwischenknoten, nicht zur Sicherung
 | |
|                                   des Nutzdatenverkehrs
 | |
|                             \item
 | |
|                                   Teilnetz-/Link-Ebene: zur Sicherung des Nutzdatenverkehrs
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Je nach den Sicherheitszielen kann eine Integration sowohl in
 | |
|               Endsystemen als auch in Zwischensystemen sinnvoll sein
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Beispiel: Authentifizierungsbeziehungen in
 | |
|         Inter-Netzwerken}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-Authentication-relation-in-inter-networks.png}
 | |
| 
 | |
|     %\begin{longtable}[]{@{}ll@{}}
 | |
|     %    \toprule
 | |
|     %    Authentication Relation                                            & Application for securing\tabularnewline
 | |
|     %    \midrule
 | |
|     %    \endhead
 | |
|     %    Endsystem \$\textbackslash leftrightarrow\$ Endsystem              & User
 | |
|     %    Channels\tabularnewline
 | |
|     %    Endsystem \$\textbackslash leftrightarrow\$ Intermediate System    &
 | |
|     %    Management Interfaces, Accounting\tabularnewline
 | |
|     %    Intermediate \$\textbackslash leftrightarrow\$ Intermediate System &
 | |
|     %    Network Operation: Signaling, Routing, Accounting, ...\tabularnewline
 | |
|     %    \bottomrule
 | |
|     %\end{longtable}
 | |
| 
 | |
| 
 | |
|     \subsection{Schlussfolgerung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Integration von Sicherheitsdiensten in Kommunikationsarchitekturen
 | |
|               wird von zwei Hauptfragen geleitet:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Welcher Sicherheitsdienst in welchem Knoten?
 | |
|                   \item
 | |
|                         Welcher Sicherheitsdienst in welcher Schicht?
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Diese Design-Entscheidungen können auch durch einen Blick auf ein
 | |
|               pragmatisches Modell der vernetzten Datenverarbeitung geleitet werden,
 | |
|               das vier verschiedene Ebenen unterscheidet, auf denen
 | |
|               Sicherheitsdienste realisiert werden können:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Anwendungs-/Endsystem-/Subnetz-/Link-Ebene
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Da es verschiedene Gründe für und gegen jede Option gibt, gibt es
 | |
|               keine einheitliche Lösung für dieses Designproblem.
 | |
|         \item
 | |
|               In diesem Kurs werden wir daher einige Beispiele für die Integration
 | |
|               von Sicherheitsdiensten in Netzarchitekturen untersuchen, um die
 | |
|               Auswirkungen der getroffenen Designentscheidungen besser zu verstehen
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Sicherheitsprotokolle der
 | |
|       Datenübertragungsschicht}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IEEE 802.1Q, IEEE 802.1X \& IEEE 802.1AE
 | |
|         \item
 | |
|               Point-to-Point Protocol (PPP)
 | |
|         \item
 | |
|               Point-to-Point Tunneling Protocol (PPTP)
 | |
|         \item
 | |
|               Layer 2 Tunneling Protocol (L2TP)
 | |
|         \item
 | |
|               Virtual Private Networks (VPN)
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Anwendungsbereich von Sicherheitsprotokollen der
 | |
|         Verbindungsschicht}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Nach dem klassischen Verständnis des OSI-Modells stellt die
 | |
|               Verbindungsschicht einen gesicherten Datenübertragungsdienst zwischen
 | |
|               zwei gleichrangigen Einheiten bereit, die direkt über ein
 | |
|               Kommunikationsmedium miteinander verbunden sind.
 | |
|         \item
 | |
|               Ihre Hauptaufgaben sind:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Fehlererkennung und -korrektur
 | |
|                   \item
 | |
|                         Medium Access Control (MAC, nicht zu verwechseln mit Message
 | |
|                         Authentication Code) für gemeinsam genutzte Medien, z. B. Ethernet
 | |
|                         usw.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nicht alle heutigen Netzwerktechnologien passen in dieses Modell:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Einwahlverbindungen zu einem Internetdienstanbieter
 | |
|                   \item
 | |
|                         Lösungen für virtuelle private Netzwerke (VPN)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               In diesem Kurs geben wir uns mit der folgenden Definition zufrieden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Zweck eines Link-Layer-Sicherheitsprotokolls besteht darin,
 | |
|                         bestimmte Sicherheitseigenschaften der Link-Layer-PDUs zu
 | |
|                         gewährleisten, d. h. der PDUs der Protokollschicht, die die PDUs der
 | |
|                         Netzwerkschicht (z. B. IP) tragen.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{IEEE 802.1}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Die IEEE 802.1 Standardfamilie: Hintergrund und
 | |
|         Ziele}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Das Institute of Electrical and Electronics Engineers (IEEE) 802
 | |
|               LAN/MAN Standards Committee entwickelt Standards für lokale Netzwerke
 | |
|               und Metropolitan Area Networks.
 | |
|         \item
 | |
|               Die am weitesten verbreiteten Standards sind:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ethernet-Familie (802.3, allgemein als CSMA/CD bezeichnet),
 | |
|                   \item
 | |
|                         Drahtloses LAN (802.11)
 | |
|                   \item
 | |
|                         WIMAX (802.16)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die IEEE 802.1-Standards:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Können mit verschiedenen IEEE 802.x Technologien verwendet werden
 | |
|                   \item
 | |
|                         Definieren unter anderem verschiedene explizite Sicherheitsdienste
 | |
|                         oder Dienste, die zur Erreichung von Sicherheitszielen verwendet
 | |
|                         werden können
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IEEE 802.1Q}
 | |
| 
 | |
|     Ziele und Dienste
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der Standard IEEE 802.1Q:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ermöglicht die Schaffung von ,,miteinander verbundenen
 | |
|                         IEEE-802-Standard-LANs mit unterschiedlichen oder identischen
 | |
|                         Methoden der Medienzugriffskontrolle'', d. h. die Schaffung
 | |
|                         separater virtueller lokaler Netzwerke (VLANs) über eine physische
 | |
|                         Infrastruktur
 | |
|                   \item
 | |
|                         Obwohl es sich nicht um einen echten Sicherheitsstandard handelt,
 | |
|                         wird er häufig verwendet, um verschiedene Benutzer und Dienste
 | |
|                         voneinander zu trennen, z. B. nicht vertrauenswürdige Gastcomputer
 | |
|                         von Unternehmensservern, ohne eine neue Infrastruktur einzurichten
 | |
|                   \item
 | |
|                         Wird verwendet, um Zugangskontrolle auf Verbindungsebene zu
 | |
|                         realisieren
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Grundlegende Funktionsweise
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Jedes Netzwerkpaket wird mit einem VLAN-Tag versehen, der eine
 | |
|               12-Bit-VLAN-ID enthält, die ein virtuelles Netzwerk identifiziert
 | |
|         \item
 | |
|               Switches stellen sicher, dass Pakete mit bestimmten VLAN-IDs nur an
 | |
|               bestimmte Netzwerk-Ports zugestellt werden, z.B. wird ein VLAN mit
 | |
|               internen Firmeninformationen nicht an einen öffentlich zugänglichen
 | |
|               Port zugestellt
 | |
|         \item
 | |
|               Die VLAN-ID ist nicht kryptografisch geschützt!
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         VLAN IDs müssen auf andere Weise, d.h. physikalisch, gesichert
 | |
|                         werden!
 | |
|                   \item
 | |
|                         Normalerweise werden VLAN-IDs am ersten vertrauenswürdigen Switch
 | |
|                         eingefügt und am letzten vertrauenswürdigen Switch auf dem Weg durch
 | |
|                         das Netzwerk entfernt
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Typisches Einführungsszenario
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Normalerweise wird das vertrauenswürdige innere Netzwerk durch
 | |
|               physische Mittel geschützt
 | |
|         \item
 | |
|               Verschiedene Ports zum vertrauenswürdigen Kern werden VLANs zugeordnet
 | |
|         \item
 | |
|               VLANs sind virtuell verbunden, dürfen aber nicht auf andere VLANs
 | |
|               zugreifen
 | |
|         \item
 | |
|               VLANs werden normalerweise gekoppelt durch
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Router, die mehrere Schnittstellen in den verschiedenen VLANs haben
 | |
|                   \item
 | |
|                         Router, die selbst zum vertrauenswürdigen Netzwerk gehören und
 | |
|                         selbst getaggte Frames empfangen und senden können (kann gefährlich
 | |
|                         sein, Wechselwirkung zwischen Routing und VLANs, siehe unten)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ieee802.1q-scenario.png}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Weitere Diskussion
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               802.1Q ermöglicht eine einfache Trennung verschiedener
 | |
|               Sicherheitsdomänen innerhalb eines vertrauenswürdigen Netzwerks
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ermöglicht auch die Priorisierung bestimmter VLANs (z. B. um die
 | |
|                         Verwaltung von Geräten zu ermöglichen, wenn der Rest des Netzes von
 | |
|                         einem Angreifer überflutet wird)
 | |
|                   \item
 | |
|                         VLAN-Tags können gestapelt werden, z. B. um verschiedene Kunden zu
 | |
|                         trennen, die eigene VLANs einrichten
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Diskussion über die Sicherheit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Sicherheit hängt davon ab, dass kein einziges Gerät in der
 | |
|                         vertrauenswürdigen Domäne kompromittiert wird!
 | |
|                   \item
 | |
|                         Alle Switches müssen korrekt konfiguriert sein, d.h. kein einziger
 | |
|                         Switch darf eingehenden Verkehr aus einem nicht vertrauenswürdigen
 | |
|                         Netz zulassen, der bereits getaggt ist
 | |
|                   \item
 | |
|                         Paketfluten in einem VLAN können sich auch auf andere VLANs
 | |
|                         auswirken
 | |
|                   \item
 | |
|                         Router, die an mehreren VLANs teilnehmen, können auf einer
 | |
|                         Schnittstelle Pakete aus verschiedenen VLANs empfangen, aber
 | |
|                   \item
 | |
|                         Anstatt ein striktes Routing zu einer anderen Schnittstelle (z. B.
 | |
|                         dem Internet) durchzuführen, könnte ein Angreifer diesen Router
 | |
|                         nutzen, um über dieselbe Schnittstelle zurück in ein anderes VLAN zu
 | |
|                         routen (sogenannter Layer-2-Proxy-Angriff)
 | |
|                   \item
 | |
|                         Kann sogar funktionieren, wenn VLAN 1 und VLAN 2 das gleiche
 | |
|                         IP-Subnetz nutzen!
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IEEE 802.1X}
 | |
| 
 | |
|     Ziele
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der Standard IEEE 802.1X:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ziel ist es, ,,den Zugang zu den von einem LAN angebotenen Diensten
 | |
|                         auf diejenigen Benutzer und Geräte zu beschränken, die diese Dienste
 | |
|                         nutzen dürfen''
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Definiert eine portbasierte Netzwerkzugriffskontrolle, um ein Mittel
 | |
|               zur ,,Authentifizierung und Autorisierung von Geräten bereitzustellen,
 | |
|               die an einen LAN-Port mit Punkt-zu-Punkt-Verbindungseigenschaften
 | |
|               angeschlossen sind''.
 | |
|     \end{itemize}
 | |
| 
 | |
|     Kontrollierte und unkontrollierte Ports
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IEEE 802.1X führt den Begriff der zwei logischen Ports ein:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der unkontrollierte Port ermöglicht die Authentifizierung eines
 | |
|                         Geräts
 | |
|                   \item
 | |
|                         Der kontrollierte Port ermöglicht es einem authentifizierten Gerät,
 | |
|                         auf LAN-Dienste zuzugreifen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ieee802.1X-ports.png}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Rollen
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Es werden drei Hauptrollen unterschieden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein Gerät, das den von einem IEEE 802.1X LAN angebotenen Dienst
 | |
|                         nutzen möchte, agiert als Supplicant, der den Zugriff auf den
 | |
|                         kontrollierten Port anfordert
 | |
|                   \item
 | |
|                         Der Anschlusspunkt an die LAN-Infrastruktur (z. B. eine MAC-Brücke)
 | |
|                         fungiert als Authentifikator, der den Supplicant auffordert, sich zu
 | |
|                         authentifizieren.
 | |
|                   \item
 | |
|                         Der Authentifikator prüft die vom Antragsteller vorgelegten
 | |
|                         Anmeldeinformationen nicht selbst, sondern leitet sie zur
 | |
|                         Überprüfung an seinen Authentifizierungsserver weiter.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zugriff auf ein LAN mit IEEE 802.1X Sicherheitsmaßnahmen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vor einer erfolgreichen Authentifizierung kann der Antragsteller auf
 | |
|                         den unkontrollierten Port zugreifen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der Port ist unkontrolliert in dem Sinne, dass er den Zugriff vor
 | |
|                                   der Authentifizierung erlaubt.
 | |
|                             \item
 | |
|                                   Dieser Port erlaubt jedoch nur einen eingeschränkten Zugriff
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Authentifizierung kann durch den Supplicant oder den
 | |
|                         Authenticator initiiert werden.
 | |
|                   \item
 | |
|                         Nach erfolgreicher Authentifizierung wird der kontrollierte Port
 | |
|                         geöffnet.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Sicherheitsprotokolle und Nachrichtenaustausch
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IEEE 802.1X definiert keine eigenen Sicherheitsprotokolle, sondern
 | |
|               befürwortet die Verwendung bestehender Protokolle:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Das Extensible Authentication Protocol (EAP) kann eine grundlegende
 | |
|                         Geräteauthentifizierung realisieren {[}RFC 3748{]}.
 | |
|                   \item
 | |
|                         Wenn die Aushandlung eines Sitzungsschlüssels während der
 | |
|                         Authentifizierung erforderlich ist, wird die Verwendung des EAP TLS
 | |
|                         Authentication Protocol empfohlen {[}RFC 5216{]}.
 | |
|                   \item
 | |
|                         Außerdem wird empfohlen, den Authentifizierungsserver mit dem Remote
 | |
|                         Authentication Dial In User Service (RADIUS) {[}RFC 2865{]} zu
 | |
|                         realisieren.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Austausch von EAP Nachrichten zwischen Supplicant und
 | |
|               Authenticator wird mit dem EAP over LANs (EAPOL) Protokoll realisiert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         EAPOL definiert die Verkapselungstechniken, die verwendet werden
 | |
|                         sollen, um EAP-Pakete zwischen Supplicant Port Access Entities (PAE)
 | |
|                         und Authenticator PAEs in einer LAN-Umgebung zu übertragen.
 | |
|                   \item
 | |
|                         EAPOL-Rahmenformate wurden für verschiedene Mitglieder der
 | |
|                         802.x-Protokollfamilie definiert, z. B. EAPOL für Ethernet, ...
 | |
|                   \item
 | |
|                         Zwischen Supplicant und Authenticator können RADIUS-Nachrichten
 | |
|                         verwendet werden
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Beispiel für eine
 | |
|     802.1X-Authentifizierung{]}(Assets/NetworkSecurity-ieee802.1X-example.png)
 | |
| 
 | |
| 
 | |
|     \subsubsection{IEEE 802.1AE}
 | |
| 
 | |
|     Ziele
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der Standard IEEE 802.1AE wird auch als MAC-Sicherheit (MACsec)
 | |
|               bezeichnet:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ermöglicht autorisierten Systemen, die sich an LANs in einem
 | |
|                         Netzwerk anschließen und diese miteinander verbinden, die
 | |
|                         Vertraulichkeit der übertragenen Daten zu wahren und Maßnahmen gegen
 | |
|                         Frames zu ergreifen, die von nicht autorisierten Geräten übertragen
 | |
|                         oder verändert werden. ''
 | |
|                   \item
 | |
|                         Schützt Pakete durch kryptografische Mittel zwischen Geräten, z. B.
 | |
|                         zwischen Switches oder einem Computer und einem Switch
 | |
|                   \item
 | |
|                         Setzt eine gültige Authentifizierung voraus und ist somit eine
 | |
|                         Erweiterung von 802.1X
 | |
|                   \item
 | |
|                         Kryptografische Schlüssel werden auch während der
 | |
|                         802.1X-Authentifizierungsphase abgeleitet
 | |
|                   \item
 | |
|                         Kann Datenursprungsauthentifizierung und optional Vertraulichkeit
 | |
|                         durchführen
 | |
|                   \item
 | |
|                         Unterstützt AES-128 und AES-256 in GCM, wobei die Unterstützung von
 | |
|                         AES-128-GCM obligatorisch ist!
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Frame-Format
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ieee802.1AE-frame.png}
 | |
|         \item
 | |
|               Quell- und Zieladressen werden im Klartext gesendet
 | |
|         \item
 | |
|               VLAN-Tag, Typfeld und Nutzdaten werden ebenfalls verschlüsselt
 | |
|         \item
 | |
|               Ein neuer 8-16 Byte langer SecTAG wird eingefügt
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beginnt mit 0x88e5, um ein Protokoll für ältere Geräte zu emulieren
 | |
|                   \item
 | |
|                         Enthält einen 4-Byte-Paketzähler (wird als IV verwendet, auch um
 | |
|                         Replay-Angriffe abzuwehren)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               FCS wird durch einen kryptografischen MAC von 8-16 Byte ersetzt und
 | |
|               von MACsec berechnet, optional kann ein zusätzlicher CRC-FCS für
 | |
|               ältere Geräte hinzugefügt werden
 | |
|     \end{itemize}
 | |
| 
 | |
|     Diskussion über Sicherheit
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               MACsec erlaubt es, Verbindungen zu sichern, z.B. zwischen Gebäuden auf
 | |
|               einem Campus
 | |
|         \item
 | |
|               Es bietet keinen Schutz gegen kompromittierte Geräte!
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn es in Kombination mit 802.1Q verwendet wird, kann die
 | |
|                         vertrauenswürdige Computerbasis immer noch ziemlich groß sein...
 | |
|                   \item
 | |
|                         Die Verwendung des GCM unterliegt den in Kapitel 5 beschriebenen
 | |
|                         potenziellen Problemen
 | |
|                   \item
 | |
|                         Derzeit unterstützen nur hochwertige Switches MACsec!
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Punkt-zu-Punkt-Protokoll}
 | |
| 
 | |
|     Zweck und Aufgaben
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Große Teile des Internets beruhen auf Punkt-zu-Punkt-Verbindungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wide Area Network (WAN)-Verbindungen zwischen Routern
 | |
|                   \item
 | |
|                         Einwahlverbindungen von Hosts über Modems und Telefonleitungen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Protokolle für diesen Zweck:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Serial Line IP (SLIP): keine Fehlererkennung, unterstützt nur IP,
 | |
|                         keine dynamische Adressvergabe, keine Authentifizierung {[}RFC
 | |
|                         1055{]}
 | |
|                   \item
 | |
|                         Point-to-Point Protocol (PPP): Nachfolger von SLIP, unterstützt IP,
 | |
|                         IPX, ...
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-Point-to-Point.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               PPP {[}RFC 1661/1662{]}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schicht-2-Rahmenformat mit Rahmenbegrenzung und Fehlererkennung
 | |
|                   \item
 | |
|                         Kontrollprotokoll (Link Control Protocol, LCP) für
 | |
|                         Verbindungsaufbau, -test, -aushandlung und -abbau
 | |
|                   \item
 | |
|                         Separate Netzwerkkontrollprotokolle (NCP) für unterstützte
 | |
|                         Schicht-3-Protokolle
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Packet Format
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Zeichenorientierte (statt bitorientierte)
 | |
|               \$\textbackslash Rightarrow\$ byteausgerichtete Rahmen
 | |
|         \item
 | |
|               Code-Transparenz wird durch Zeichenstuffing erreicht
 | |
|         \item
 | |
|               Normalerweise werden nur unnummerierte Frames übertragen, in Szenarien
 | |
|               mit hoher Fehlerwahrscheinlichkeit (drahtlose Kommunikation) kann
 | |
|               jedoch ein zuverlässigerer Modus mit Sequenznummern und erneuten
 | |
|               Übertragungen ausgehandelt werden
 | |
|         \item
 | |
|               Unterstützte Protokolle für das Nutzdatenfeld sind u.a.: IP, IPX,
 | |
|               Appletalk
 | |
|         \item
 | |
|               Wenn nicht anders ausgehandelt, beträgt die maximale Nutzdatengröße
 | |
|               1500 Byte.
 | |
|         \item
 | |
|               Zusätzliche Aushandlung unterstützt kleinere Paketköpfe
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-Punkt-zu-Punkt-Format.png}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Eine typische PPP-Verbindung
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Nutzungsszenario ,,Internetzugang eines PCs über Modem'':
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Benutzer ruft den Internet Service Provider (ISP) über ein Modem
 | |
|                         an und stellt eine ,,physikalische'' Verbindung über den ,,Plain Old
 | |
|                         Telephone Service'' (POTS) her.
 | |
|                   \item
 | |
|                         Anrufer sendet mehrere LCP-Pakete in PPP-Frames, um die gewünschten
 | |
|                         PPP-Parameter auszuwählen
 | |
|                   \item
 | |
|                         Sicherheitsspezifische Aushandlung (siehe unten)
 | |
|                   \item
 | |
|                         Austausch von NCP-Paketen zur Konfiguration der Netzwerkschicht:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   z.B. Konfiguration von IP einschließlich dynamischer Zuweisung
 | |
|                                   einer IP-Adresse über Dynamic Host Configuration Protocol (DHCP)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Der Anrufer kann wie jeder andere Host mit einer festen Verbindung
 | |
|                         zum Internet beliebige Internetdienste nutzen
 | |
|                   \item
 | |
|                         Beim Verbindungsabbau werden die zugewiesene IP-Adresse und die
 | |
|                         Netzschichtverbindung freigegeben
 | |
|                   \item
 | |
|                         Die Schicht-2-Verbindung wird über LCP freigegeben und das Modem
 | |
|                         baut die ,,physikalische'' Verbindung ab
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Link Control Protocol
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Rahmenformat des Link Control Protocol (LCP):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Code: configure-request, configure-ack, configure-nack,
 | |
|                         configure-reject, terminate-request, terminate-ack, code-reject,
 | |
|                         protocol-reject, echo-request, echo-reply, discard-request
 | |
|                   \item
 | |
|                         Länge: gibt die Länge des LCP-Pakets einschließlich des Codefelds
 | |
|                         usw. an
 | |
|                   \item
 | |
|                         Daten: null oder mehr Oktette befehlsspezifischer Daten
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-Point-to-Point-LCP.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Konfigurationsprimitive von LCP ermöglichen die Konfiguration der
 | |
|               Verbindungsschicht:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Es gibt verschiedene Optionen für dieses Primitiv zur Konfiguration
 | |
|                         verschiedener Aspekte (max. Empfangseinheit, Protokollkompression,
 | |
|                         Authentifizierung, ...)
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Sicherheitsdienste
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die ursprüngliche Version von PPP {[}RFC 1661{]} schlägt die optionale
 | |
|               Ausführung eines Authentifizierungsprotokolls nach der
 | |
|               Verbindungsaufbauphase vor:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Falls erforderlich, wird die Authentifizierung von einer
 | |
|                         Peer-Entität über einen LCP Configuration-Request am Ende der
 | |
|                         Verbindungsaufbauphase gefordert
 | |
|                   \item
 | |
|                         Ursprünglich sind zwei Authentifizierungsprotokolle definiert
 | |
|                         worden:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Passwort-Authentifizierungsprotokoll (PAP)
 | |
|                             \item
 | |
|                                   Challenge-Handshake-Authentifizierungsprotokoll (CHAP)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Inzwischen ist ein erweiterbares Protokoll definiert worden:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Erweiterbares Authentifizierungsprotokoll (EAP)
 | |
|                             \item
 | |
|                                   PPP EAP Transport Level Security Protocol (PPP-EAP-TLS)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Außerdem kann nach der Authentifizierung eine Verschlüsselung
 | |
|               ausgehandelt werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Protokolle:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Encryption Control Protocol (ECP) zur Aushandlung
 | |
|                             \item
 | |
|                                   PPP DES-Verschlüsselungsprotokoll (DESE)
 | |
|                             \item
 | |
|                                   PPP-Dreifach-DES-Verschlüsselungsprotokoll (3DESE)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Authentifizierungsprotokolle
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Passwort-Authentifizierungs-Protokoll (PAP):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         PAP wurde 1992 in RFC 1334 definiert.
 | |
|                   \item
 | |
|                         Das Protokoll ist sehr einfach:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Voraussetzung: der Authentifikator kennt das Passwort der
 | |
|                                   Peer-Entität
 | |
|                             \item
 | |
|                                   Am Ende der Verbindungsaufbauphase fordert eine Entität,
 | |
|                                   Authenticator genannt, die Peer-Entität auf, sich mit PAP zu
 | |
|                                   authentifizieren
 | |
|                             \item
 | |
|                                   Die Peer-Entität sendet eine Authenticate-Request-Nachricht mit
 | |
|                                   ihrer Peer-ID und ihrem Passwort
 | |
|                             \item
 | |
|                                   Der Authentifikator prüft, ob die bereitgestellten Informationen
 | |
|                                   korrekt sind und antwortet entweder mit einem Authenticate-ack
 | |
|                                   oder einem Authenticate-nack
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Da das Protokoll keinen kryptographischen Schutz bietet, ist es
 | |
|                         unsicher.
 | |
|                   \item
 | |
|                         PAP wird in den aktualisierten RFCs für die PPP-Authentifizierung
 | |
|                         nicht erwähnt {[}RFC1994{]}.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Challenge Handshake Authentication Protocol (CHAP):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         CHAP ist ebenfalls in RFC 1334 und RFC 1994 definiert.
 | |
|                   \item
 | |
|                         Es verwirklicht ein einfaches Challenge-Response-Protokoll:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Voraussetzung: Authentifikator und Peer-Entität teilen ein
 | |
|                                   Geheimnis
 | |
|                             \item
 | |
|                                   Nach der Verbindungsaufbauphase sendet der Authentifikator (A)
 | |
|                                   eine Challenge-Nachricht, die einen Identifikator für diese
 | |
|                                   Challenge, eine Zufallszahl \$r\_A\$ und seinen Namen enthält, an
 | |
|                                   die Peer-Entität (B): \$A \textbackslash rightarrow B: (1,
 | |
|                                   Identifikator, r\_A, A)\$
 | |
|                             \item
 | |
|                                   Die Peer-Entität berechnet eine kryptografische Hash-Funktion über
 | |
|                                   ihren Namen, das gemeinsame Geheimnis \$K\_\{A,B\}\$ und die
 | |
|                                   Zufallszahl \$r\_A\$ und sendet die folgende Nachricht: \$B
 | |
|                                   \textbackslash rightarrow A: (2, Kennung, H(B, K\_\{A,B\}, r\_A),
 | |
|                                   B)\$
 | |
|                             \item
 | |
|                                   Beim Empfang dieser Nachricht berechnet der Authentifikator den
 | |
|                                   Hashwert neu und vergleicht ihn mit dem empfangenen Wert; wenn
 | |
|                                   beide Werte übereinstimmen, antwortet er mit einer Erfolgsmeldung
 | |
|                             \item
 | |
|                                   RFC 1994 legt fest, dass MD5 als Hash-Funktion unterstützt werden
 | |
|                                   muss, aber die Verwendung anderer Hash-Funktionen kann
 | |
|                                   ausgehandelt werden
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               CHAP-Nachrichtenformat:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Code: 1 \textasciitilde{} Herausforderung / 2 \textasciitilde{}
 | |
|                         Antwort / 3 \textasciitilde{} Erfolg / 4 \textasciitilde{} Fehler
 | |
|                   \item
 | |
|                         Identifier: ein Oktett, das bei jeder gesendeten Challenge geändert
 | |
|                         werden muss
 | |
|                   \item
 | |
|                         Länge: die Gesamtlänge der CHAP-Nachricht in Oktetten
 | |
|                   \item
 | |
|                         Value Size: ein Oktett, das die Länge des Wertes angibt
 | |
|                   \item
 | |
|                         Wert: enthält die zufällige Herausforderung / die Antwort auf die
 | |
|                         Herausforderung
 | |
|                   \item
 | |
|                         Name: ein oder mehrere Oktette, die das System identifizieren, das
 | |
|                         das Paket erstellt hat; die Größe des Namens wird anhand des
 | |
|                         Längenfeldes berechnet
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-Point-to-Point-CHAP1.png}
 | |
|                   \item
 | |
|                         Nachricht:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Null oder mehr Oktette mit implementierungsabhängigem Inhalt
 | |
|                             \item
 | |
|                                   Der Inhalt soll für den Menschen lesbar sein und hat keinen
 | |
|                                   Einfluss auf die Funktionsweise des Protokolls
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-Point-to-Point-CHAP2.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Erweiterbares Authentifizierungsprotokoll (EAP):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         EAP ist ein allgemeines Protokoll für die PPP-Authentifizierung, das
 | |
|                         mehrere Authentifizierungsmethoden unterstützt {[}RFC2284{]}.
 | |
|                   \item
 | |
|                         Die Hauptidee hinter EAP ist es, ein gemeinsames Protokoll
 | |
|                         bereitzustellen, um komplexere Authentifizierungsmethoden als ,,1
 | |
|                         Frage + 1 Antwort'' durchzuführen.
 | |
|                   \item
 | |
|                         Das Protokoll bietet grundlegende Primitive:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Anfrage, Antwort: weiter verfeinert durch Typfeld + typspezifische
 | |
|                                   Daten
 | |
|                             \item
 | |
|                                   Success, Failure: zur Angabe des Ergebnisses eines
 | |
|                                   Authentifizierungsaustauschs
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Typ-Felder:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Identität
 | |
|                             \item
 | |
|                                   Benachrichtigung
 | |
|                             \item
 | |
|                                   Nak (nur Antwort, zur Beantwortung inakzeptabler Anfragetypen)
 | |
|                             \item
 | |
|                                   MD5 Challenge (dies entspricht CHAP)
 | |
|                             \item
 | |
|                                   One-Time Password (OTP): definiert in {[}RFC2289{]}
 | |
|                             \item
 | |
|                                   Generische Token-Karte
 | |
|                             \item
 | |
|                                   EAP-TLS
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Einmaliges Kennwort (One-Time Password, OTP):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Grundidee von OTP besteht darin, ein ,,Passwort'' zu
 | |
|                         übermitteln, das nur für einen Durchlauf eines
 | |
|                         Authentifizierungsdialogs verwendet werden kann
 | |
|                   \item
 | |
|                         Erstmalige Einrichtung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der Authentifikator A sendet einen Seed-Wert rA und die
 | |
|                                   Peer-Entität B verkettet diesen mit seinem Passwort und berechnet
 | |
|                                   einen Hash-Wert: \$PW\_N = H\^{}N(r\_A, password\_B)\$
 | |
|                             \item
 | |
|                                   Das Paar \$(N, PW\_N)\$ wird ,,sicher'' an den Authentifikator
 | |
|                                   übertragen und beim Authentifikator gespeichert.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Dialog zur Authentifizierung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   \$A\textbackslash rightarrow B: N - 1\$
 | |
|                             \item
 | |
|                                   \$B\textbackslash rightarrow A: PW\_\{N-1\} := H\^{}\{N-1\}(r\_A,
 | |
|                                   Passwort\_B)\$
 | |
|                             \item
 | |
|                                   A prüft, ob \$H(PW\_\{N-1\}) = PW\_N\$, und speichert \$(N-1,
 | |
|                                   PW\_\{N-1\})\$ als neue Authentifizierungsinformation für B
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Sicherheit: Um dieses Verfahren zu brechen, müsste ein Angreifer ein
 | |
|                         PWN abhören und \$H\^{}\{-1\}(PW\_N)\$ berechnen, was unpraktisch
 | |
|                         ist.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Generische Token-Karte:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Im Grunde ein Challenge-Response-Dialog
 | |
|                   \item
 | |
|                         Eine Token-Karte wird verwendet, um eine Antwort auf eine
 | |
|                         Herausforderung zu berechnen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die Herausforderung wird dem Benutzer präsentiert, der sie in sein
 | |
|                                   Token-Card-Gerät eintippen muss.
 | |
|                             \item
 | |
|                                   Die Token-Karte berechnet die Antwort und zeigt sie an.
 | |
|                             \item
 | |
|                                   Der Benutzer gibt die Antwort in das System ein, das sie als
 | |
|                                   Antwort auf die Aufforderungsnachricht sendet.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               PPP-EAP-TLS:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         TLS steht für Transport Layer Security {[}RFC 2246{]}.
 | |
|                   \item
 | |
|                         Es wird also der Authentifizierungsdialog von TLS ausgeführt
 | |
|                   \item
 | |
|                         Dieser Dialog wird in Kapitel 12 über die Sicherheit der
 | |
|                         Transportschicht im Detail erläutert.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Verschlüsselungsprotokolle
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Nach dem Verbindungsaufbau und der Authentifizierungsphase kann die
 | |
|               Verschlüsselung für eine PPP-Verbindung ausgehandelt werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Das Encryption Control Protocol (ECP) {[}RFC1968{]} ist für die
 | |
|                         Konfiguration und Aktivierung von Datenverschlüsselungsalgorithmen
 | |
|                         an beiden Enden der PPP-Verbindung zuständig:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   ECP verwendet das gleiche Rahmenformat wie LCP und führt zwei neue
 | |
|                                   Primitive ein: Reset-Request und Reset-Ack zur Anzeige von
 | |
|                                   Entschlüsselungsfehlern unabhängig für jede Richtung (nützlich für
 | |
|                                   die kryptographische Resynchronisation)
 | |
|                             \item
 | |
|                                   Eine bestimmte Verschlüsselungsmethode wird mit dem
 | |
|                                   configure-Primitiv ausgehandelt, das eine Option zur Angabe von
 | |
|                                   DESE, 3DESE, Proprietär usw. enthält.
 | |
|                             \item
 | |
|                                   Proprietäre Verschlüsselungsprotokolle werden durch einen
 | |
|                                   registrierten OUI (Organizational Unit Identifier) + einen
 | |
|                                   herstellerspezifischen Wert identifiziert.
 | |
|                             \item
 | |
|                                   Genau ein ECP-Paket wird im PPP-Informationsfeld eines
 | |
|                                   Link-Layer-Pakets transportiert
 | |
|                             \item
 | |
|                                   ECP-Pakete werden durch das PPP-Protokollfeld identifiziert:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             0x8053 für ,,Standard'' Betrieb
 | |
|                                       \item
 | |
|                                             0x8055 für die Verschlüsselung einzelner Verbindungsdaten auf
 | |
|                                             mehreren Verbindungen zum selben Ziel
 | |
|                                   \end{itemize}
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Das PPP DES Encryption Protocol (DESE):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         In diesem Kurs wird nur die aktualisierte Version DESEv2
 | |
|                         {[}RFC2419{]} behandelt
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-Point-to-Point-DESE.png}
 | |
|                   \item
 | |
|                         DESEv2 wird mit einer ECP-Konfigurationsanforderungsnachricht
 | |
|                         ausgehandelt:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Code: 1 \textasciitilde{} configure request
 | |
|                             \item
 | |
|                                   Identifier: ändert sich mit jeder neuen Anfrage
 | |
|                             \item
 | |
|                                   Länge: Gesamtlänge der Configure-Request-Nachricht
 | |
|                             \item
 | |
|                                   Type: 3 \textasciitilde{} DESEv2
 | |
|                             \item
 | |
|                                   Länge': 10 (die Länge dieser Konfigurationsoption)
 | |
|                             \item
 | |
|                                   Initial Nonce: ein Initialisierungsvektor für DES im CBC-Modus (8
 | |
|                                   Oktette)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               PPP DESE v2 Nachrichtenformat:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Adresse: 0x11111111 (bei HDLC-ähnlichem Framing)
 | |
|                   \item
 | |
|                         Steuerung: 0x00000011 (bei HDLC-ähnlicher Rahmung)
 | |
|                   \item
 | |
|                         Protokoll-ID: 0x0053 \textasciitilde{} DESE (Standard) / 0x0055
 | |
|                         \textasciitilde{} DESE (individuelle Verbindung)
 | |
|                   \item
 | |
|                         Sequenznummer: anfänglich 0, diese Nummer wird von der
 | |
|                         verschlüsselnden Stelle bei jedem gesendeten Paket erhöht
 | |
|                   \item
 | |
|                         Chiffriertext: die verschlüsselten Protokoll- und Informationsfelder
 | |
|                         eines PPP-Pakets
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Nachrichten werden vor der Verschlüsselung auf ein Vielfaches von
 | |
|                                   8 Oktetten aufgefüllt
 | |
|                             \item
 | |
|                                   die Verschlüsselung erfolgt mit DES im CBC-Modus
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-Point-to-Point-DESE2.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               PPP 3DES Encryption Protocol (3DESE):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         PPP 3DESE {[}RFC2420{]} ist dem PPP DESE sehr ähnlich
 | |
|                   \item
 | |
|                         PPP 3DESE wird mit einer Configure-Request-Nachricht ausgehandelt,
 | |
|                         wobei das Type-Feld der Option auf 2 gesetzt ist (\textasciitilde{}
 | |
|                         3DESE)
 | |
|                   \item
 | |
|                         Die Verschlüsselung der PPP-Nutzdaten erfolgt wie bei DESE, mit dem
 | |
|                         Unterschied, dass 3DES mit 3 verschiedenen Schlüsseln verwendet wird
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Alle PPP-Verschlüsselungsprotokolle gehen davon aus, dass vor der
 | |
|               Verschlüsselungsphase ein Sitzungsschlüssel für die
 | |
|               Verschlüsselung/Entschlüsselung von PPP-Paketen vereinbart wurde:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Diese Annahme ist sinnvoll, da die Festlegung des Sitzungsschlüssels
 | |
|                         eine Aufgabe ist, die während der Authentifizierungsphase erfüllt
 | |
|                         werden sollte.
 | |
|                   \item
 | |
|                         Allerdings unterstützt nur das
 | |
|                         PPP-EAP-TLS-Authentifizierungsprotokoll den Aufbau von
 | |
|                         Sitzungsschlüsseln.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Punkt-zu-Punkt-Tunneling-Protokoll
 | |
|         (PPTP)}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               PPP wurde ursprünglich für den Betrieb zwischen ,,direkt'' verbundenen
 | |
|               Einheiten entwickelt, d.h. Einheiten, die eine gemeinsame
 | |
|               Schicht-2-Verbindung haben
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiel: ein PC und ein Einwahlrouter eines Internetanbieters, die
 | |
|                         über das Telefonnetz mittels Modem verbunden sind
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Grundidee von PPTP besteht darin, die Reichweite des Protokolls
 | |
|               auf das gesamte Internet auszudehnen, indem der Transport von PPP-PDUs
 | |
|               in IP-Paketen definiert wird
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Nutzlast von PPTP-PDUs sind also PPP-Pakete (ohne
 | |
|                         schicht-2-spezifische Felder wie HDLC-Flags, Bit-Einfügungen,
 | |
|                         Steuerzeichen, CRC-Fehlerprüfwerte usw.)
 | |
|                   \item
 | |
|                         PPP-Pakete werden in GRE-Pakete (generische Routing-Kapselung)
 | |
|                         eingekapselt, die wiederum in IP-Pakete eingekapselt werden:
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     %\begin{longtable}[]{@{}l@{}}
 | |
|     %    \toprule
 | |
|     %    \endhead
 | |
|     %    Media Header (e.g. Ethernet MAC header)\tabularnewline
 | |
|     %    IP Header\tabularnewline
 | |
|     %    GRE V.2 Header\tabularnewline
 | |
|     %    PPP Packet\tabularnewline
 | |
|     %    \bottomrule
 | |
|     %\end{longtable}
 | |
| 
 | |
| 
 | |
|     \subsubsection{PPTP: Freiwilliges vs. obligatorisches
 | |
|         Tunneling}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               PPTP realisiert einen ,,Tunnel'' über das Internet, der PPP-Pakete
 | |
|               überträgt.
 | |
|         \item
 | |
|               Ein solcher Tunnel kann zwischen verschiedenen Einheiten realisiert
 | |
|               werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Einem Client-PC und einem PPTP Remote Access Server (RAS):
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dies wird auch als freiwilliges Tunneling bezeichnet, da der
 | |
|                                   Client-PC aktiv an der PPTP-Verarbeitung beteiligt ist.
 | |
|                             \item
 | |
|                                   Diese Variante ermöglicht die sichere Kommunikation zwischen einem
 | |
|                                   Client-PC und einem bestimmten Subnetz unter Verwendung beliebiger
 | |
|                                   Zugangs- und Zwischennetze
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Ein Point of Presence (POP) eines ISP und ein
 | |
|                         PPTP-Fernzugangsserver:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dies wird auch als obligatorisches Tunneling bezeichnet, da der
 | |
|                                   Client-PC nicht an der Entscheidung beteiligt ist, ob PPTP
 | |
|                                   verwendet wird oder nicht.
 | |
|                             \item
 | |
|                                   Auf diese Weise lässt sich Sicherheit auf Subnetzebene
 | |
|                                   realisieren, aber keine echte End-to-End-Sicherheit zwischen dem
 | |
|                                   Client-PC und dem RAS
 | |
|                             \item
 | |
|                                   Beim obligatorischen Tunneling fungiert der ISP POP als
 | |
|                                   Proxy-Client für den RAS
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Obligatorische Tunneling-Protokollschichten
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-PPTP-Tunneling-Protocol.png}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-PPTP-Tunneling-Protocol2.png}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-PPTP-Packet-Construction-at-Client.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{PPTP / PPP Proprietäre Erweiterungen und einige
 | |
|         ,,Geschichte''}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               PPTP hat sich vor allem aufgrund der Unterstützung durch Microsoft
 | |
|               durchgesetzt:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Es wurde unter aktiver Beteiligung von Microsoft entwickelt und ist
 | |
|                         in {[}RFC2637{]} dokumentiert.
 | |
|                   \item
 | |
|                         Microsoft implementierte es als Teil seines Remote Access Service
 | |
|                         (RAS)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Microsoft hat weitere ,,proprietäre'' Erweiterungen für PPP
 | |
|               spezifiziert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Microsoft PPP CHAP-Erweiterungen {[}RFC2433{]}
 | |
|                   \item
 | |
|                         Microsoft Point to Point Encryption Protocol {[}RFC3078{]}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Allerdings wurde eine Reihe von Schwachstellen in PPTP Version 1 und
 | |
|               auch in einer verbesserten Version 2 entdeckt {[}SM98a, SMW99a{]}:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein allgemeiner Konsens, PPTP als Standardprotokoll zu übernehmen,
 | |
|                         konnte in den in den IETF-Arbeitsgruppen nicht erreicht werden.
 | |
|                   \item
 | |
|                         Außerdem wurde ein ähnliches Protokoll (Layer 2 Forwarding, L2F) von
 | |
|                         Cisco als konkurrierender Ansatz vorgeschlagen
 | |
|                   \item
 | |
|                         Infolgedessen wurde ein Kompromiss gefunden, der die Vorteile beider
 | |
|                         Vorschläge in einem einzigen Protokoll zusammenfasst: Layer 2
 | |
|                         Tunneling Protocol (L2TP)
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Vergleich von PPTP und
 | |
|         L2TP}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Beide Protokolle:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         verwenden PPP, um eine anfängliche Umhüllung für Benutzerpakete
 | |
|                         bereitzustellen
 | |
|                   \item
 | |
|                         erweitern das PPP-Modell, indem sie erlauben, dass die Layer-2- und
 | |
|                         PPP-Endpunkte sich auf verschiedenen Geräten befinden
 | |
|                   \item
 | |
|                         unterstützen freiwilliges und obligatorisches Tunneling
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zugrundeliegendes Netzwerk:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         PPTP benötigt ein IP-Netzwerk für den Transport seiner PDUs
 | |
|                   \item
 | |
|                         L2TP unterstützt verschiedene Technologien: IP (unter Verwendung von
 | |
|                         UDP), permanente virtuelle Schaltungen (PVCs) von Frame Relay,
 | |
|                         virtuelle Schaltungen (VCs) von X.25 oder ATM VCs
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               PPTP kann nur einen einzigen Tunnel zwischen Endpunkten unterstützen,
 | |
|               L2TP ermöglicht die Verwendung mehrerer Tunnel zwischen Endpunkten
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         L2TP ermöglicht z. B. die Erstellung verschiedener Tunnel für
 | |
|                         unterschiedliche Dienstqualitäten
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Beide Protokolle bieten eine Header-Kompression:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Mit Header-Kompression kommt L2TP mit 4 Byte Overhead aus, im
 | |
|                         Vergleich zu 6 Byte bei PPTP.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               L2TP ermöglicht eine Tunnelauthentifizierung, während PPTP dies nicht
 | |
|               tut.
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Virtuelle private
 | |
|         Netzwerke}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Verschiedene Definitionen des Begriffs virtuelles privates Netzwerk
 | |
|               (VPN):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein privates Netz, das innerhalb einer öffentlichen
 | |
|                         Netzinfrastruktur, wie dem globalen Internet, aufgebaut ist.
 | |
|                   \item
 | |
|                         Eine Kommunikationsumgebung, in der der Zugang kontrolliert wird, um
 | |
|                         Peer-Verbindungen nur innerhalb einer definierten
 | |
|                         Interessengemeinschaft zuzulassen, und die durch eine Form der
 | |
|                         Partitionierung eines gemeinsamen zugrundeliegenden
 | |
|                         Kommunikationsmediums aufgebaut ist, wobei dieses zugrundeliegende
 | |
|                         Kommunikationsmedium dem Netz Dienste auf nicht-exklusiver Basis
 | |
|                         bereitstellt
 | |
|                   \item
 | |
|                         Ein logisches Computernetzwerk mit eingeschränkter Nutzung, das aus
 | |
|                         den Systemressourcen eines relativ öffentlichen, physischen
 | |
|                         Netzwerks (z. B. dem Internet) aufgebaut ist, oft unter Verwendung
 | |
|                         von Verschlüsselung und oft durch Tunneln von Verbindungen des
 | |
|                         virtuellen Netzwerks über das reale Netzwerk {[}RFC2828{]}.
 | |
|                   \item
 | |
|                         Anmerkung: Die beiden letzteren Definitionen beinhalten explizit
 | |
|                         Sicherheitseigenschaften (kontrollierter Zugriff, Verschlüsselung),
 | |
|                         die erste hingegen nicht.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     \begin{quote}
 | |
|         ,,Sicher, es ist viel billiger als eigene Frame-Relay-Verbindungen, aber
 | |
|         es funktioniert ungefähr so gut, wie wenn man sich auf dem Times Square
 | |
|         Watte in die Ohren steckt und so tut, als wäre sonst niemand da.''
 | |
|         (Wired Magazine Feb. 1998)
 | |
|     \end{quote}
 | |
| 
 | |
|     Techniken zum Aufbau virtueller privater Netze
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Nutzung dedizierter Verbindungen (Cut-Through-Mechanismen):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Virtuelle Verbindungen über ATM oder Frame Relay
 | |
|                   \item
 | |
|                         Multi-Protokoll über ATM (MPOA)
 | |
|                   \item
 | |
|                         Multiprotokoll-Etiketten-Vermittlung (MPLS)
 | |
|                   \item
 | |
|                         Sicherheitsdienste für Link Layer VPNs können effizient im Link
 | |
|                         Layer Protokoll realisiert werden; ein Beispiel ist die ATM Security
 | |
|                         Specification {[}ATM99a{]}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kontrolliertes Routenleck / Routenfilterung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Grundidee: Kontrolle der Routenausbreitung dahingehend, dass nur
 | |
|                         bestimmte Netze Routen für andere Netze erhalten
 | |
|                   \item
 | |
|                         Damit soll ,,security by obscurity'' realisiert werden (also kein
 | |
|                         wirklicher Schutz!)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Tunneln:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Generische Routing-Kapselung (GRE)
 | |
|                   \item
 | |
|                         PPP / PPTP / L2TP
 | |
|                   \item
 | |
|                         IPSec-Sicherheitsarchitektur für das Internet-Protokoll
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Die IPsec-Architektur für das
 | |
|       Internet-Protokoll}
 | |
| 
 | |
| 
 | |
|     \subsection{Überblick}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Kurze Einführung in das Internet-Protokoll (IP)
 | |
|         \item
 | |
|               Sicherheitsprobleme von IP und Ziele von IPsec
 | |
|         \item
 | |
|               Die IPsec-Architektur:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Modi des IPsec-Sicherheitsprotokolls:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Transportmodus
 | |
|                             \item
 | |
|                                   Tunnel-Modus
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Alternativen zur Implementierung
 | |
|                   \item
 | |
|                         IP-Sicherheitsrichtlinien-Datenbank (SPD)
 | |
|                   \item
 | |
|                         Sicherheitsvereinigungen (SA) und die SA-Datenbank (SADB)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               IPsec Sicherheitsprotokolle:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Authentifizierungs-Header (AH)
 | |
|                   \item
 | |
|                         Encapsulating Security Payload (ESP)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Entitätsauthentifizierung und der Internet-Schlüsselaustausch (IKE)
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Die TCP/IP-Protokollsuite}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IP (Internet Protocol): unzuverlässiges, verbindungsloses
 | |
|               Netzwerkprotokoll
 | |
|         \item
 | |
|               TCP (Transmission Control Protocol): zuverlässiges,
 | |
|               verbindungsorientiertes Transportprotokoll, realisiert über IP
 | |
|         \item
 | |
|               UDP (User Datagram Protocol): unzuverlässiges, verbindungsloses
 | |
|               Transportprotokoll, bietet eine Anwendungsschnittstelle zu IP
 | |
|         \item
 | |
|               Beispiele für Anwendungsprotokolle :
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         HTTP: Hypertext-Übertragungsprotokoll
 | |
|                   \item
 | |
|                         SMTP: Einfaches Mail-Übertragungsprotokoll
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-tcp-ip-suite.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Das IPv4-Paketformat}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ipv4-packet-format.png}
 | |
|         \item
 | |
|               Version (Ver.): 4 bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Derzeit ist Version 4 weit verbreitet
 | |
|                   \item
 | |
|                         Version 6 ist bereits spezifiziert, aber es ist noch nicht klar, ob
 | |
|                         sie jemals zum Einsatz kommen wird
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               IP-Header-Länge (IHL): 4 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Länge des IP-Headers in 32-Bit-Wörtern
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Art des Dienstes (TOS): 8 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Dieses Feld könnte verwendet werden, um die Verkehrsanforderungen
 | |
|                         eines Pakets anzugeben.
 | |
|                   \item
 | |
|                         Jetzt: DCSP und Explicit Congestion (EC) Indication
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Länge: 16 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Länge des Pakets einschließlich des Headers in Oktetten
 | |
|                   \item
 | |
|                         Dieses Feld ist, wie alle anderen Felder in der IP-Suite, in ,,big
 | |
|                         endian'' Darstellung
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kennung: 16 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Dient der ,,eindeutigen'' Identifizierung eines IP-Datagramms
 | |
|                   \item
 | |
|                         Wichtig für das Wiederzusammensetzen von fragmentierten
 | |
|                         IP-Datagrammen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Flaggen: 3 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Bit 1: nicht fragmentieren
 | |
|                   \item
 | |
|                         Bit 2: Datagramm fragmentiert
 | |
|                   \item
 | |
|                         Bit 3: reserviert für zukünftige Verwendung
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Fragmentierungs-Offset: 13 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Position dieses Pakets im entsprechenden IP-Datagramm
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Lebenszeit (TTL): 8 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         An jedem verarbeitenden Netzknoten wird dieses Feld um eins
 | |
|                         dekrementiert
 | |
|                   \item
 | |
|                         Wenn die TTL 0 erreicht, wird das Paket verworfen, um Paketschleifen
 | |
|                         zu vermeiden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Protokoll: 8 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Gibt das (Transport-)Protokoll der Nutzlast an
 | |
|                   \item
 | |
|                         Wird vom empfangenden Endsystem verwendet, um Pakete zwischen
 | |
|                         verschiedenen Transportprotokollen wie TCP, UDP, ... zu
 | |
|                         entmultiplexen.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Prüfsumme: 16 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schutz vor Übertragungsfehlern
 | |
|                   \item
 | |
|                         Da es sich nicht um eine kryptografische Prüfsumme handelt, kann sie
 | |
|                         leicht gefälscht werden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Quelladresse: 32 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die IP-Adresse des Absenders dieses Pakets
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zieladresse: 32 Bit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die IP-Adresse des vorgesehenen Empfängers dieses Pakets
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               IP-Optionen: variable Länge
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein IP-Header kann optional zusätzliche Informationen enthalten.
 | |
|                   \item
 | |
|                         Da sie nicht Bestandteil von IPsec sind, werden sie in diesem Kurs
 | |
|                         nicht behandelt.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Sicherheitsprobleme des
 | |
|         Internet-Protokolls}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Wenn eine Einheit ein IP-Paket empfängt, hat sie keine Garantie für:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Authentifizierung der Datenherkunft / Datenintegrität:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Das Paket wurde tatsächlich von der Einrichtung gesendet, auf die
 | |
|                                   die Quelladresse des Pakets verweist.
 | |
|                             \item
 | |
|                                   Das Paket enthält den ursprünglichen Inhalt des Absenders, so dass
 | |
|                                   es während des Transports nicht verändert worden ist.
 | |
|                             \item
 | |
|                                   Die empfangende Einrichtung ist tatsächlich die Einrichtung, an
 | |
|                                   die der Absender das Paket senden wollte.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Vertraulichkeit:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die ursprünglichen Daten wurden auf dem Weg vom Absender zum
 | |
|                                   Empfänger nicht von Dritten eingesehen.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Sicherheitsziele von
 | |
|         IPsec}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IPsec zielt darauf ab, die folgenden Sicherheitsziele zu
 | |
|               gewährleisten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Authentifizierung der Datenherkunft / Verbindungslose
 | |
|                         Datenintegrität:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Es ist nicht möglich, ein IP-Datagramm mit einer maskierten
 | |
|                                   IP-Quell- oder Zieladresse zu senden, ohne dass der Empfänger dies
 | |
|                                   erkennen kann.
 | |
|                             \item
 | |
|                                   Es ist nicht möglich, ein IP-Datagramm während der Übertragung zu
 | |
|                                   verändern, ohne dass der Empfänger diese Veränderung feststellen
 | |
|                                   kann.
 | |
|                             \item
 | |
|                                   Wiedergabeschutz: Es ist nicht möglich, ein aufgezeichnetes
 | |
|                                   IP-Paket zu einem späteren Zeitpunkt erneut abzuspielen, ohne dass
 | |
|                                   der Empfänger dies erkennen kann.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Vertraulichkeit:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Es ist nicht möglich, den Inhalt von IP-Datagrammen zu belauschen
 | |
|                             \item
 | |
|                                   Begrenzte Vertraulichkeit des Verkehrsflusses
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sicherheitspolitik:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sender, Empfänger und Zwischenknoten können den erforderlichen
 | |
|                         Schutz für ein IP-Paket gemäß einer lokalen Sicherheitsrichtlinie
 | |
|                         festlegen
 | |
|                   \item
 | |
|                         Zwischenknoten und der Empfänger verwerfen IP-Pakete, die diese
 | |
|                         Anforderungen nicht erfüllen
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Überblick über die
 | |
|         IPsec-Standardisierung}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-IPsec-standardization.png}
 | |
| 
 | |
| 
 | |
|     \subsection{Überblick über die
 | |
|         IPsec-Architektur}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               RFC 4301 definiert die grundlegende Architektur von IPsec:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Konzepte:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Sicherheitsvereinigung (SA), Sicherheitsvereinigungsdatenbank
 | |
|                                   (SADB)
 | |
|                             \item
 | |
|                                   Sicherheitsrichtlinien, Sicherheitsrichtlinien-Datenbank (SPD)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Grundlegende IPsec-Protokolle:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Authentifizierungs-Header (AH)
 | |
|                             \item
 | |
|                                   Encapsulating Security Payload (ESP)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Protokoll-Modi:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Transport-Modus
 | |
|                             \item
 | |
|                                   Tunnel-Modus
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Schlüsselmanagement-Verfahren:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   IKE \& IKEv
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               RFC 4301 definiert die grundlegende Architektur von IPsec:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verwendung von verschiedenen kryptographischen Primitiven mit AH und
 | |
|                         ESP:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Verschlüsselung: 3DES-CBC, AES und andere
 | |
|                                   CBC-Verschlüsselungsalgorithmen, AES-Zählermodus
 | |
|                             \item
 | |
|                                   Integrität: HMAC-MD5, HMAC-SHA-1, HMAC-SHA-2, HMAC- RIPEMD-160,
 | |
|                                   AES-GMAC, AES-CMAC, AES-XCBC...
 | |
|                             \item
 | |
|                                   Authentifizierte Verschlüsselung: GCM und "Zähler mit CBC-MAC"
 | |
|                                   (CCM), beide für AES definiert
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Eine Sicherheitsassoziation (SA) ist eine Simplex- ,,Verbindung'', die
 | |
|               Sicherheitsdienste für den von ihr beförderten Verkehr bereitstellt.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sicherheitsdienste werden für eine SA entweder mit AH oder ESP
 | |
|                         bereitgestellt, jedoch nicht mit beiden.
 | |
|                   \item
 | |
|                         Für bidirektionale Kommunikation sind zwei Sicherheitsverbindungen
 | |
|                         erforderlich.
 | |
|                   \item
 | |
|                         Eine SA wird eindeutig durch ein Tripel identifiziert, das aus einem
 | |
|                         Sicherheitsparameterindex (SPI), einer IP-Zieladresse und einer
 | |
|                         Sicherheitsprotokollkennung (AH / ESP) besteht.
 | |
|                   \item
 | |
|                         Eine SA kann zwischen den folgenden Gegenstellen eingerichtet
 | |
|                         werden:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Host \$\textbackslash leftrightarrow\$ Host
 | |
|                             \item
 | |
|                                   Host \$\textbackslash leftrightarrow\$ Gateway (oder andersherum)
 | |
|                             \item
 | |
|                                   Gateway \$\textbackslash leftrightarrow\$ Gateway
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Es gibt zwei konzeptionelle Datenbanken, die mit SAs verbunden sind:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die Sicherheitsrichtliniendatenbank (SPD) legt fest, welche
 | |
|                                   Sicherheitsdienste für welche IP-Pakete auf welche Weise
 | |
|                                   bereitgestellt werden sollen.
 | |
|                             \item
 | |
|                                   Die Sicherheitsassoziationsdatenbank (SADB)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Protokollmodi - Eine SA ist immer von einem der folgenden Typen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Transportmodus kann nur zwischen den Endpunkten einer
 | |
|                         Kommunikation verwendet werden:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   host \$\textbackslash leftrightarrow\$ host, oder
 | |
|                             \item
 | |
|                                   Host \$\textbackslash leftrightarrow\$-Gateway, wenn das Gateway
 | |
|                                   ein Kommunikationsendpunkt ist (z. B. für die Netzverwaltung)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Der Tunnelmodus kann für beliebige Peers verwendet werden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Unterschied zwischen den beiden Modi ist, dass:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Im Transportmodus wird lediglich ein sicherheitsspezifischer Header
 | |
|                         (+ eventueller Trailer) hinzugefügt:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   % \includegraphics{Assets/NetworkSecurity-ipsec-transport-mode.png}
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Der Tunnelmodus kapselt IP-Pakete ein: Die Verkapselung von
 | |
|                         IP-Paketen ermöglicht es einem Gateway, den Verkehr im Namen anderer
 | |
|                         Entitäten zu schützen (z. B. Hosts eines Subnetzes usw.)
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   % \includegraphics{Assets/NetworkSecurity-ipsec-tunnel-mode.png}
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Authentifizierungs-Header (AH):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Bietet Authentifizierung der Datenherkunft und Schutz vor
 | |
|                         Wiederholung
 | |
|                   \item
 | |
|                         Wird als Header realisiert, der zwischen dem IP-Header und den zu
 | |
|                         schützenden Daten eingefügt wird
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-ipsec-AH.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die einkapselnde Sicherheitsnutzlast (ESP):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Bietet Authentifizierung der Datenherkunft, Vertraulichkeit und
 | |
|                         Schutz vor Wiederholung
 | |
|                   \item
 | |
|                         Wird mit einem Header und einem Trailer realisiert, der die zu
 | |
|                         schützenden Daten einkapselt
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-ipsec-ESP.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Einrichtung von Sicherheitsvereinigungen wird mit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Internet Security Association Key Management Protocol (ISAKMP):
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Definiert einen generischen Rahmen für die
 | |
|                                   Schlüsselauthentifizierung, den Schlüsselaustausch und die
 | |
|                                   Aushandlung von Sicherheitsassoziationsparametern {[}RFC2408{]}.
 | |
|                             \item
 | |
|                                   Definiert kein spezifisches Authentifizierungsprotokoll, aber
 | |
|                                   spezifiziert:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             Paketformate
 | |
|                                       \item
 | |
|                                             Zeitgeber für die Weiterleitung
 | |
|                                       \item
 | |
|                                             Anforderungen an den Nachrichtenaufbau
 | |
|                                   \end{itemize}
 | |
|                             \item
 | |
|                                   Die Verwendung von ISAKMP für IPsec wird in {[}RFC2407{]} näher
 | |
|                                   beschrieben.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Internet-Schlüsselaustausch (IKE):
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Definiert ein Authentifizierungs- und Schlüsselaustauschprotokoll
 | |
|                                   {[}RFC2409{]}.
 | |
|                             \item
 | |
|                                   Ist konform zu ISAKMP und kann für verschiedene Anwendungen
 | |
|                                   verwendet werden
 | |
|                             \item
 | |
|                                   Der Aufbau von IPsec SAs zwischen zwei Entitäten wird in zwei
 | |
|                                   Phasen realisiert:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             Einrichtung einer IKE SA (definiert, wie man IPsec SAs
 | |
|                                             einrichtet)
 | |
|                                       \item
 | |
|                                             Einrichtung von IPsec SAs
 | |
|                                   \end{itemize}
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{IPsec-Wiedergabeschutz (Replay
 | |
|         protection)}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Sowohl AH- als auch ESP-geschützte IP-Pakete tragen eine
 | |
|               Sequenznummer, die einen Wiedergabeschutz realisiert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beim Einrichten einer SA wird diese Sequenznummer auf Null
 | |
|                         initialisiert.
 | |
|                   \item
 | |
|                         Die Sequenznummer wird mit jedem gesendeten IP-Paket erhöht
 | |
|                   \item
 | |
|                         Die Sequenznummer ist 32 Bit lang, es wird ein neuer
 | |
|                         Sitzungsschlüssel benötigt, bevor ein Wrap-around erfolgt
 | |
|                   \item
 | |
|                         Der Empfänger eines IP-Pakets prüft, ob die Sequenznummer in einem
 | |
|                         Fenster zulässiger Nummern enthalten ist
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-ipsec-replay-protection.png}
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   (Paket mit Sequenznummer N kann noch akzeptiert werden)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wenn ein empfangenes Paket eine Sequenznummer hat, die:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         links vom aktuellen Fenster \$\textbackslash Rightarrow\$ liegt,
 | |
|                         lehnt der Empfänger das Paket ab
 | |
|                   \item
 | |
|                         innerhalb des aktuellen Fensters \$\textbackslash Rightarrow\$
 | |
|                         liegt, nimmt der Empfänger das Paket an
 | |
|                   \item
 | |
|                         liegt rechts vom aktuellen Fenster \$\textbackslash Rightarrow\$ der
 | |
|                         Empfänger nimmt das Paket an und schiebt das Fenster weiter
 | |
|                   \item
 | |
|                         Natürlich werden IP-Pakete nur akzeptiert, wenn sie die
 | |
|                         Authentifizierungsprüfung bestehen und das Fenster wird niemals vor
 | |
|                         dieser Prüfung weitergeschaltet
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die minimale Fenstergröße beträgt 32 Pakete (64 Pakete werden
 | |
|               empfohlen)
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-ipsec-replay-protection2.png}
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Paket mit Sequenznummer N kann nicht mehr akzeptiert werden
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{IPsec-Implementierungsalternativen:
 | |
|         Host-Implementierung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Vorteile der IPsec-Implementierung in Endsystemen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Bereitstellung von End-to-End-Sicherheitsdiensten
 | |
|                   \item
 | |
|                         Bereitstellung von Sicherheitsdiensten auf einer Per-Flow-Basis
 | |
|                   \item
 | |
|                         Fähigkeit, alle IPsec-Modi zu implementieren
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zwei Hauptalternativen zur Integration: \textbar{} Integriertes
 | |
|               Betriebssystem \textbar{} ,,Bump'' im Stack \textbar{} \textbar{}
 | |
|               -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-
 | |
|               \textbar{}
 | |
|               -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-
 | |
|               \textbar{} \textbar{} Anwendung \textbar{} Anwendung \textbar{}
 | |
|               \textbar{} Transport \textbar{} Transport \textbar{} \textbar{}
 | |
|               Netzwerk + IPsec \textbar{} Netzwerk \textbar{} \textbar{} IPsec
 | |
|               \textbar{} \textbar{} Data Link \textbar{} Data Link \textbar{}
 | |
|               \textbar{} \textbar{} \textbar{} Echte Betriebssystemintegration ist
 | |
|               die Methode der Wahl, da sie die Duplizierung von Funktionalität
 | |
|               vermeidet \textbar{} Wenn das Betriebssystem nicht geändert werden
 | |
|               kann, wird IPsec über den Datenverbindungstreiber eingefügt \textbar{}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{IPsec-Implementierungsalternativen:
 | |
|         Router-Implementierung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Vorteile der IPsec-Implementierung in Routern:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Möglichkeit, IP-Pakete zu sichern, die zwischen zwei Netzen über ein
 | |
|                         öffentliches Netz wie das Internet fließen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Ermöglicht die Einrichtung virtueller privater Netzwerke (VPNs)
 | |
|                             \item
 | |
|                                   Keine Notwendigkeit, IPsec in jedes Endsystem zu integrieren
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Fähigkeit zur Authentifizierung und Autorisierung des IP-Verkehrs,
 | |
|                         der von entfernten Benutzern eingeht
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zwei Hauptalternativen für die Implementierung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-ipsec-router-implementation.png}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Wann sollte welcher IPsec-Modus verwendet
 | |
|         werden?}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               In den meisten Fällen handelt es sich bei den Kommunikationsendpunkten
 | |
|               um Hosts (Workstations, Server), aber das ist nicht unbedingt der
 | |
|               Fall:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiel: ein Gateway wird über SNMP von einer Workstation verwaltet
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Transportmodus wird verwendet, wenn die ,,kryptografischen
 | |
|               Endpunkte'' auch die ,,Kommunikationsendpunkte'' der gesicherten
 | |
|               IP-Pakete sind
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kryptografische Endpunkte: die Entitäten, die einen IPsec-Header (AH
 | |
|                         oder ESP) erzeugen/verarbeiten
 | |
|                   \item
 | |
|                         Kommunikationsendpunkte: Quelle und Ziel eines IP-Pakets
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   % \includegraphics{Assets/NetworkSecurity-communication-endpoints.png}
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Tunnelmodus wird verwendet, wenn mindestens ein
 | |
|               ,,kryptographischer Endpunkt'' nicht ein ,,Kommunikationsendpunkt''
 | |
|               der gesicherten IP-Pakete ist
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Dies ermöglicht Gateways, die den IP-Verkehr im Namen anderer
 | |
|                         Stellen sichern
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-communication-tunneling.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die obige Beschreibung der Anwendungsszenarien für den Tunnelmodus
 | |
|               umfasst auch den Fall, dass nur ein kryptografischer Endpunkt kein
 | |
|               Kommunikationsendpunkt ist:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiel: ein Sicherheitsgateway, das die Authentifizierung und/oder
 | |
|                         die Vertraulichkeit des IP-Verkehrs zwischen einem lokalen Teilnetz
 | |
|                         und einem über das Internet verbundenen Host sicherstellt (,,Road
 | |
|                         Warrior Szenario'')
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-communication-tunnelung-2.png}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Verschachtelung von
 | |
|         Sicherheitsassoziationen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Sicherheitsassoziationen können verschachtelt werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiel: Host A und Gateway RB führen eine Authentifizierung der
 | |
|                         Datenherkunft durch und die Gateways RA und RB führen eine
 | |
|                         Vertraulichkeit von Subnetz zu Subnetz durch
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-communication-nesting.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Bei der Verschachtelung von SAs muss jedoch darauf geachtet werden,
 | |
|               dass keine ,,falsche Klammerung'' von SAs erfolgt, wie z. B.
 | |
|               ,,{[}({]})''
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein Beispiel für eine gültige SA-Schachtelung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   % \includegraphics{Assets/NetworkSecurity-communication-nesting-2.png}
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Ein Beispiel für ungültige SA-Schachtelungen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   % \includegraphics{Assets/NetworkSecurity-communication-nesting-3.png}
 | |
|                             \item
 | |
|                                   Da das Paket von RB nach RD getunnelt wird, kann das Gateway RC
 | |
|                                   den inneren IPsec-Header nicht verarbeiten
 | |
|                             \item
 | |
|                                   Ein mögliches Ergebnis dieser fehlerhaften Konfiguration könnte
 | |
|                                   sein, dass das Paket zurück nach RC geroutet wird
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Grundschema der IPsec-Verarbeitung: Ausgehende
 | |
|         Pakete}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Nehmen wir an, die IP-Schicht eines Knotens (Host/Gateway) wird
 | |
|               angewiesen, ein IP-Paket an einen anderen Knoten (Host/Gateway) zu
 | |
|               senden
 | |
|         \item
 | |
|               Um IPsec zu unterstützen, muss sie die folgenden Schritte durchführen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Feststellen, ob und wie das ausgehende Paket gesichert werden muss:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dies wird durch einen Lookup im SPD realisiert
 | |
|                             \item
 | |
|                                   Wenn die Richtlinie ,,verwerfen'' vorschreibt, wird das Paket
 | |
|                                   verworfen \$\textbackslash Rightarrow\$ done
 | |
|                             \item
 | |
|                                   Wenn das Paket nicht gesichert werden muss, dann sende es
 | |
|                                   \$\textbackslash Rightarrow\$ done
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Ermitteln, welche SA auf das Paket angewendet werden soll:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wenn es noch keine passende SA mit dem entsprechenden Knoten gibt,
 | |
|                                   dann fordere den Key Management Demon auf, einen IKE durchzuführen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die ermittelte (und eventuell neu erstellte) SA in der SADB
 | |
|                         nachschlagen
 | |
|                   \item
 | |
|                         Führen Sie die von der SA festgelegte Sicherheitstransformation
 | |
|                         durch, indem Sie den Algorithmus, seine Parameter und den Schlüssel,
 | |
|                         wie in der SA angegeben, verwenden.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dies resultiert in der Konstruktion eines AH- oder ESP-Headers
 | |
|                             \item
 | |
|                                   Eventuell wird auch ein neuer (äußerer) IP-Header erstellt
 | |
|                                   (Tunnelmodus)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Senden Sie das resultierende IP-Paket \$\textbackslash Rightarrow\$
 | |
|                         done
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Grundschema der IPsec-Verarbeitung: Eingehende
 | |
|         Pakete}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Nehmen wir an, die IP-Schicht eines Knotens (Host/Gateway) empfängt
 | |
|               ein IP-Paket von einem anderen Knoten (Host/Gateway)
 | |
|         \item
 | |
|               Um IPsec zu unterstützen, muss sie die folgenden Schritte durchführen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Feststellen, ob das Paket einen IPsec-Header enthält, den diese
 | |
|                         Einheit verarbeiten soll:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wenn es einen solchen IPsec-Header gibt, dann suchen Sie die SA in
 | |
|                                   der SADB, die durch den SPI des IPsec-Headers spezifiziert ist,
 | |
|                                   und führen Sie die entsprechende IPsec-Verarbeitung durch
 | |
|                             \item
 | |
|                                   Wenn die SA, auf die der SPI verweist, (noch) nicht existiert,
 | |
|                                   verwerfen Sie das Paket
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Ermitteln, ob und wie das Paket hätte geschützt werden sollen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dies wird wiederum durch einen Lookup im SPD realisiert, wobei der
 | |
|                                   Lookup im Falle von getunnelten Paketen durch Auswertung des
 | |
|                                   inneren IP-Headers durchgeführt wird
 | |
|                             \item
 | |
|                                   Wenn die Richtlinie ,,Verwerfen'' vorschreibt, wird das Paket
 | |
|                                   verworfen.
 | |
|                             \item
 | |
|                                   Wenn der Schutz des Pakets nicht mit der Richtlinie übereinstimmt,
 | |
|                                   wird das Paket verworfen.
 | |
|                             \item
 | |
|                                   Wenn das Paket ordnungsgemäß gesichert wurde, dann übergebe es an
 | |
|                                   die entsprechende Protokollinstanz (Netzwerk-/Transportschicht)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Auswahl der
 | |
|         IPsec-Sicherheitspolitik}
 | |
| 
 | |
|     Die folgenden Selektoren, die aus den Headern der Netzwerk- und
 | |
|     Transportschicht extrahiert werden, ermöglichen die Auswahl einer
 | |
|     bestimmten Richtlinie im SPD:
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IP-Quelladresse:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Bestimmter Host, Netzwerkpräfix, Adressbereich oder Platzhalter
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               IP-Zieladresse:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Bestimmter Host, Netzwerk-Präfix, Adressbereich oder Platzhalter
 | |
|                   \item
 | |
|                         Im Falle eingehender getunnelter Pakete wird der innere Header
 | |
|                         ausgewertet
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Protokoll:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Protokoll-Identifikator des Transportprotokolls für dieses Paket
 | |
|                   \item
 | |
|                         Dies ist möglicherweise nicht zugänglich, wenn ein Paket mit ESP
 | |
|                         gesichert ist.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ports der oberen Schicht:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Falls zugänglich, die Ports der oberen Schicht für die
 | |
|                         sitzungsorientierte Policy-Auswahl
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{IPsec Security Policy
 | |
|         Definition}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Policy Selectors werden verwendet, um spezifische Policy-Definitionen
 | |
|               auszuwählen, spezifiziert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wie die Einrichtung einer IKE SA zwischen zwei Knoten durchgeführt
 | |
|                         werden soll:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Identifizierung: DNS-Name oder andere Namenstypen, wie in der
 | |
|                                   IPsec-Domäne der Interpretation eines Protokolls zur Einrichtung
 | |
|                                   von SAs definiert
 | |
|                             \item
 | |
|                                   Phase I-Modus: Hauptmodus oder aggressiver Modus (siehe unten)
 | |
|                             \item
 | |
|                                   Schutzsuite(n): Angabe, wie die IKE-Authentifizierung durchgeführt
 | |
|                                   wird
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Welche und wie Sicherheitsdienste für IP-Pakete bereitgestellt
 | |
|                         werden sollen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Selektoren, die bestimmte Flüsse identifizieren
 | |
|                             \item
 | |
|                                   Sicherheitsattribute für jeden Fluss:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             Sicherheitsprotokoll: AH oder ESP
 | |
|                                       \item
 | |
|                                             Protokollmodus: Transport- oder Tunnelmodus
 | |
|                                       \item
 | |
|                                             Sicherheitstransformationen: kryptografische Algorithmen und
 | |
|                                             Parameter
 | |
|                                       \item
 | |
|                                             Andere Parameter: SA-Lebensdauer, Replay-Fenster
 | |
|                                   \end{itemize}
 | |
|                             \item
 | |
|                                   Aktion: Verwerfen, Sichern, Umgehen
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wenn bereits eine SA mit einem entsprechenden Sicherheitsendpunkt
 | |
|               eingerichtet ist, wird im SPD auf diese verwiesen.
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Die Encapsulating Security
 | |
|         Payload}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               ESP ist ein allgemeines Sicherheitsprotokoll, das IP-Paketen einen
 | |
|               Wiederholungsschutz und einen oder beide der folgenden
 | |
|               Sicherheitsdienste bietet:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vertraulichkeit durch Verschlüsselung der eingekapselten Pakete oder
 | |
|                         nur ihrer Nutzlast
 | |
|                   \item
 | |
|                         Authentifizierung der Datenherkunft durch Erstellung und Hinzufügung
 | |
|                         von MACs zu Paketen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die ESP-Definition gliedert sich in zwei Teile:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Definition des Basisprotokolls {[}RFC4303{]}:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Definition des Header- und Trailer-Formats
 | |
|                             \item
 | |
|                                   Verarbeitung des Basisprotokolls
 | |
|                             \item
 | |
|                                   Tunnel- und Transportmodusbetrieb
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Verwendung spezifischer kryptographischer Algorithmen mit ESP:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Verschlüsselung: 3DES-CBC, AES-CBC, AES-Zählmodus, Verwendung
 | |
|                                   anderer Chiffren im CBC-Modus
 | |
|                             \item
 | |
|                                   Authentifizierung: HMAC-MD5-96, HMAC-SHA-96,...
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ESP.png}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der ESP-Header folgt unmittelbar auf einen IP-Header oder einen
 | |
|                         AH-Header
 | |
|                   \item
 | |
|                         Das Next-Header-Feld des vorangehenden Headers zeigt ,,50'' für ESP
 | |
|                         an
 | |
|                   \item
 | |
|                         Das SPI-Feld gibt die SA an, die für dieses Paket verwendet werden
 | |
|                         soll:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der SPI-Wert wird immer von der empfangenden Seite während der
 | |
|                                   SA-Aushandlung bestimmt, da der Empfänger das Paket verarbeiten
 | |
|                                   muss.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Sequenznummer bietet, wie bereits erläutert, Schutz vor
 | |
|                         Wiederholung.
 | |
|                   \item
 | |
|                         Wenn der verwendete kryptographische Algorithmus einen
 | |
|                         Initialisierungsvektor benötigt, wird dieser in jedem Paket am
 | |
|                         Anfang der Nutzlast im Klartext übertragen
 | |
|                   \item
 | |
|                         Das Pad-Feld dient der Sicherstellung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Auffüllen der Nutzlast bis zur erforderlichen Blocklänge der
 | |
|                                   verwendeten Chiffre
 | |
|                             \item
 | |
|                                   Auffüllen der Nutzlast, um die Felder pad-length und next-header
 | |
|                                   rechtsbündig in die höherwertigen 16 Bit eines 32-Bit-Wortes
 | |
|                                   einzupassen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Auffülllänge gibt die Anzahl der hinzugefügten Auffüllbytes an.
 | |
|                   \item
 | |
|                         Das next-header-Feld des ESP-Headers gibt die eingekapselte Nutzlast
 | |
|                         an:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Im Falle des Tunnelmodus: IP
 | |
|                             \item
 | |
|                                   Im Falle des Transportmodus: ein beliebiges Protokoll der höheren
 | |
|                                   Schicht wie TCP, UDP, ...
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Das optionale Feld authentication-data enthält eine MAC, falls
 | |
|                         vorhanden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ESP-processing.png}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ESP-prepare-header.png}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ESP-inbound-processing.png}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ESP-inbound-processing-2.png}
 | |
|         \item
 | |
|               Beachten Sie, dass das entkapselte IP-Paket ein fragmentiertes Paket
 | |
|               sein kann:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Dies kann vorkommen, wenn ESP von einem Router im Tunnelmodus
 | |
|                         angewendet wurde.
 | |
|                   \item
 | |
|                         Um die Konformität mit der SA-Policy korrekt zu prüfen, müssen alle
 | |
|                         zu diesem Paket gehörenden Fragmente vom Router empfangen werden,
 | |
|                         bevor die Prüfung durchgeführt werden kann
 | |
|                   \item
 | |
|                         Beispiel: In einer SA sind nur Pakete an einen bestimmten Port
 | |
|                         erlaubt
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die erforderliche Port-Information ist nur im ersten Fragment des
 | |
|                                   IP-Pakets vorhanden
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Paketzustellung bedeutet Zustellung an die entsprechende
 | |
|               Verarbeitungseinheit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn ein anderer IPsec-Header für diese Entität vorhanden ist
 | |
|                         \$\textbackslash Rightarrow\$ IPsec-Verarbeitung
 | |
|                   \item
 | |
|                         Im Tunnelmodus \$\textbackslash Rightarrow\$ Übermittlung des Pakets
 | |
|                   \item
 | |
|                         Im Transportmodus \$\textbackslash Rightarrow\$ Aufruf des
 | |
|                         entsprechenden Protokoll-Headers (TCP, UDP, etc.)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wenn ESP sowohl Vertraulichkeit als auch Authentifizierung bietet,
 | |
|               können für beide Dienste unterschiedliche Schlüssel verwendet werden.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Dies muss während der Einrichtung der ESP-SA ausgehandelt werden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Beachten Sie, dass die Verwendung von ESP ohne Authentifizierung
 | |
|               unsicher ist...
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kein zuverlässiger Schutz vor Wiederholungen
 | |
|                   \item
 | |
|                         Zumindest, wenn im CBC-Modus verwendet:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Aktive Angriffe ermöglichen die Wiederherstellung von Nachrichten
 | |
|                             \item
 | |
|                                   Beispiel: Bits umdrehen und prüfen, ob Fehlermeldungen erzeugt
 | |
|                                   werden
 | |
|                             \item
 | |
|                                   Vollständige Wiederherstellung von Klartextblöcken
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Der
 | |
|         Authentifizierungs-Header}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               AH ist ein allgemeines Sicherheitsprotokoll, das IP-Paketen Schutz
 | |
|               bietet:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wiedergabeschutz
 | |
|                   \item
 | |
|                         Authentifizierung der Datenherkunft durch Erstellung und Hinzufügung
 | |
|                         von MACs zu den Paketen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wie bei ESP ist die AH-Definition in zwei Teile aufgeteilt:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Definition des Basisprotokolls {[}RFC4302{]}:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Definition des Header-Formats
 | |
|                             \item
 | |
|                                   Verarbeitung des Basisprotokolls
 | |
|                             \item
 | |
|                                   Tunnel- und Transportmodusbetrieb
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Verwendung spezifischer kryptographischer Algorithmen bei AH:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Authentifizierung: HMAC-MD5-96, HMAC-SHA1-96, HMAC-SHA2, ...
 | |
|                             \item
 | |
|                                   Wenn sowohl ESP als auch AH von einer Stelle angewendet werden
 | |
|                                   sollen, wird immer zuerst ESP angewendet:
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Dies führt dazu, dass AH der äußere Header ist.
 | |
|                   \item
 | |
|                         ,,Vorteil'': der IP-Header kann auch durch AH geschützt werden
 | |
|                   \item
 | |
|                         Anmerkung: Für jede Richtung werden zwei SAs (je eine für AH, ESP)
 | |
|                         benötigt.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Im Tunnelmodus stellt die Nutzlast ein vollständiges IP-Paket dar
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-authentication-header.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Obwohl AH auch den äußeren IP-Header schützt, dürfen einige seiner
 | |
|               Felder nicht geschützt werden, da sie sich während der Übertragung
 | |
|               ändern können:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Dies gilt auch für veränderliche IPv4-Optionen oder
 | |
|                         IPv6-Erweiterungen.
 | |
|                   \item
 | |
|                         Solche Felder werden bei der Berechnung des MAC als Null angenommen
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-authentication-header-2.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Alle unveränderlichen Felder, Optionen und Erweiterungen (grau) sind
 | |
|               geschützt
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-AH-Ausgangsbearbeitung.png}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-AH-prepare-header.png}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-AH-inbound-processing-1.png}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-AH-inbound-processing-2.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{IPsec's Verwendung von kryptographischen
 | |
|         Algorithmen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Vertraulichkeit (nur ESP):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Verwendung von DES mit ESP {[}RFC4303{]} wird nicht mehr
 | |
|                         empfohlen
 | |
|                   \item
 | |
|                         AES-CBC, definiert in RFC 3602, ist vielleicht "der"
 | |
|                         Standardalgorithmus
 | |
|                   \item
 | |
|                         Der Initialisierungsvektor (IV) ist immer im Klartext enthalten, um
 | |
|                         Synchronisationsprobleme zu vermeiden.
 | |
|                   \item
 | |
|                         Der gesamte IV soll zufällig sein
 | |
|                   \item
 | |
|                         Nehmen Sie KEINE weiteren IVs aus früheren Chiffretexten!
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Sicherheitsprobleme
 | |
|                             \item
 | |
|                                   Synchronisationsprobleme
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-ipsec-protect-payload.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Authentifizierung der Datenherkunft (AH und ESP):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Einige der Algorithmen zur Authentifizierung sind bereits definiert:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   HMAC-MD5-96 mit Schlüssellänge 128 Bit
 | |
|                             \item
 | |
|                                   HMAC-SHA1-96 mit Schlüssellänge 160 Bit
 | |
|                             \item
 | |
|                                   HMAC-RIPEMD160-96 mit einer Schlüssellänge von 160 Bit
 | |
|                             \item
 | |
|                                   HMAC-SHA2 mit Schlüssellängen von 256, 384 und 512 Bit
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Alle diese Algorithmen verwenden die in {[}RFC2104{]} definierte
 | |
|                         HMAC-Konstruktion:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   ipad = 0x36 wiederholt B mal (B = 64 für die oben genannten
 | |
|                                   Algorithmen)
 | |
|                             \item
 | |
|                                   opad = 0x5C, B-mal wiederholt
 | |
|                             \item
 | |
|                                   HMAC = H(Key XOR opad, H(Key XOR ipad, data)), wobei H die
 | |
|                                   verwendete kryptografische Hash-Funktion angibt
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Das ,,-96'' in den oben genannten Algorithmen bedeutet, dass die
 | |
|                         Ausgabe der Hash-Funktion auf die 96 ganz linken Bits gekürzt wird
 | |
|                   \item
 | |
|                         SHA2 abgeschnitten auf die Hälfte der Schlüssellänge
 | |
|                   \item
 | |
|                         Dieser Wert erfüllt die meisten Sicherheitsanforderungen gut
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Aufbau von
 | |
|         Sicherheitsassoziationen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Bevor ein Paket durch IPsec geschützt werden kann, muss eine SA
 | |
|               zwischen den beiden ,,kryptographischen Endpunkten'', die den Schutz
 | |
|               bieten, eingerichtet werden
 | |
|         \item
 | |
|               Der Aufbau einer SA kann realisiert werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Manuell, durch proprietäre Methoden der Systemverwaltung
 | |
|                   \item
 | |
|                         Dynamisch, durch ein standardisiertes Authentifizierungs- und
 | |
|                         Schlüsselverwaltungsprotokoll
 | |
|                   \item
 | |
|                         Die manuelle Einrichtung sollte nur in sehr eingeschränkten
 | |
|                         Konfigurationen (z.B. zwischen zwei verschlüsselnden Firewalls eines
 | |
|                         VPN) und während einer Übergangsphase verwendet werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               IPsec definiert eine standardisierte Methode für den SA-Aufbau:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Internet Security Association and Key Management Protocol (ISAKMP)
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Definiert Protokollformate und Verfahren für die
 | |
|                                   Sicherheitsaushandlung
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Internet-Schlüsselaustausch (IKE)
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Definiert das Standard-Authentifizierungs- und
 | |
|                                   Schlüsselaustauschprotokoll von IPsec
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{ISAKMP - Einführung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die IETF hat zwei RFCs zu ISAKMP für IPsec verabschiedet:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         RFC 2408, der das ISAKMP-Basisprotokoll definiert
 | |
|                   \item
 | |
|                         RFC 2407, der die ,,domain of interpretation'' (DOI) von IPsec für
 | |
|                         ISAKMP definiert und die für IPsec spezifischen Nachrichtenformate
 | |
|                         näher beschreibt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Das ISAKMP-Basisprotokoll ist ein generisches Protokoll, das für
 | |
|               verschiedene Zwecke verwendet werden kann:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die für eine Anwendung von ISAKMP spezifischen Verfahren werden in
 | |
|                         einem DOI-Dokument detailliert beschrieben.
 | |
|                   \item
 | |
|                         Es wurden weitere DOI-Dokumente erstellt:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Group DOI für sichere Gruppenkommunikation {[}RFC6407{]}
 | |
|                             \item
 | |
|                                   MAP DOI für die Verwendung von ISAKMP zum Aufbau von SAs zur
 | |
|                                   Sicherung des Mobile Application Protocol (MAP) von GSM (Internet
 | |
|                                   Draft, Nov. 2000)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               ISAKMP definiert zwei grundlegende Kategorien von Austauschvorgängen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Phase 1 Austausch, bei dem eine Art von ,,Master SA'' ausgehandelt
 | |
|                         wird
 | |
|                   \item
 | |
|                         Phase 2 Austausch, der die ,,Master SA'' verwendet, um andere SAs zu
 | |
|                         etablieren
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{ISAKMP - Grundlegendes
 | |
|         Nachrichtenformat}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ISAKMP-format.png}
 | |
|         \item
 | |
|               Initiator \& Responder Cookie:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Identifizieren einen ISAKMP-Austausch bzw. eine
 | |
|                         Sicherheitsassoziation
 | |
|                   \item
 | |
|                         Dienen auch als begrenzter Schutz gegen Denial-of-Service-Angriffe
 | |
|                         (siehe unten)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nächste Nutzlast: gibt an, welcher ISAKMP-Nutzlasttyp die erste
 | |
|               Nutzlast der Nachricht ist
 | |
|         \item
 | |
|               Major \& Minor Version: gibt die Version des ISAKMP-Protokolls an
 | |
|         \item
 | |
|               Austausch-Typ:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Gibt die Art des verwendeten Austauschs an
 | |
|                   \item
 | |
|                         Es gibt fünf vordefinierte generische Austauschtypen, weitere Typen
 | |
|                         können pro DOI definiert werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Flags:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Encrypt: wenn auf eins gesetzt, wird die Nutzlast nach dem Header
 | |
|                         verschlüsselt
 | |
|                   \item
 | |
|                         Commit: wird für die Schlüsselsynchronisation verwendet
 | |
|                   \item
 | |
|                         Authenticate only: wenn auf eins gesetzt, wird nur der Schutz der
 | |
|                         Datenursprungsauthentifizierung auf die ISAKMP-Nutzdaten angewendet
 | |
|                         und keine Verschlüsselung durchgeführt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nachrichten-ID:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Dient zur Identifizierung von Nachrichten, die zu verschiedenen
 | |
|                         Austauschen gehören
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nachrichtenlänge:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Gesamtlänge der Nachricht (Header + Payload)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nutzlast:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Nutzlast einer ISAKMP-Nachricht kann tatsächlich mehrere
 | |
|                         ,,verkettete'' Nutzlasten enthalten
 | |
|                   \item
 | |
|                         Der Nutzlasttyp der ersten Nutzlast in der Nachricht wird im
 | |
|                         nächsten Nutzlastfeld des ISAKMP-Headers angegeben
 | |
|                   \item
 | |
|                         Alle ISAKMP-Nutzdaten haben einen gemeinsamen Nutzdaten-Header:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   % \includegraphics{Assets/NetworkSecurity-ISAKMP-payload.png}
 | |
|                             \item
 | |
|                                   Next Header: der Payload-Typ des nächsten Payloads in der
 | |
|                                   Nachricht
 | |
|                             \item
 | |
|                                   Payload Length: Gesamtlänge der aktuellen Payload (einschließlich
 | |
|                                   dieses Headers)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{ISAKMP - Begrenzter Schutz vor Denial of
 | |
|         Service}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Initiator- und Responder-Cookies dienen auch als Schutz gegen
 | |
|               einfache Denial-of-Service-Angriffe:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Authentifizierung und Schlüsselaustausch erfordern oft ,,teure''
 | |
|                         Berechnungen, z.B. Potenzierung (für Diffie-Hellman
 | |
|                         Schlüsselaustausch)
 | |
|                   \item
 | |
|                         Um zu verhindern, dass ein Angreifer eine ISAKMP-Einheit mit
 | |
|                         gefälschten Nachrichten von gefälschten Quelladressen überschwemmen
 | |
|                         und diese teuren Operationen verursachen kann, wird das folgende
 | |
|                         Schema verwendet:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die initiierende ISAKMP-Entität erzeugt einen Initiator-Cookie:
 | |
|                                   \$CKY-I = H(Secret\_\{Initiator\}, Address\_\{Responder\},
 | |
|                                   t\_\{Initiator\})\$
 | |
|                             \item
 | |
|                                   Der Responder generiert sein eigenes Cookie: \$CKY-R =
 | |
|                                   H(Secret\_\{Responder\}, Address\_\{Initiator\},
 | |
|                                   t\_\{Responder\})\$
 | |
|                             \item
 | |
|                                   Beide Entitäten schließen immer beide Cookies ein und überprüfen
 | |
|                                   immer ihr eigenes Cookie, bevor sie eine teure Operation
 | |
|                                   durchführen
 | |
|                             \item
 | |
|                                   Der oben erwähnte Angriff wird daher nicht erfolgreich sein, da
 | |
|                                   der Angreifer eine Antwort von dem angegriffenen System erhalten
 | |
|                                   muss, um ein Cookie von ihm zu erhalten
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         ISAKMP spezifiziert die genaue Cookie-Erzeugungsmethode nicht
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{ISAKMP - Nutzdatenarten}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               RFC 2408 definiert verschiedene Nutzdaten von ISAKMP (Liste ist nicht
 | |
|               vollständig):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Generische Payloads: Hash, Signatur, Nonce, Vendor ID,
 | |
|                         Schlüsselaustausch
 | |
|                   \item
 | |
|                         Spezifische Payloads: SA, Zertifikat, Zertifikatsanforderung,
 | |
|                         Identifikation
 | |
|                   \item
 | |
|                         Abhängige und gekapselte Nutzdaten:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Proposal-Payload: beschreibt einen Vorschlag für die
 | |
|                                   SA-Verhandlung
 | |
|                             \item
 | |
|                                   Transform-Payload: beschreibt eine Transformation eines Proposals
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Außerdem gibt es eine generische Attribut-Nutzlast:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dies ist eigentlich kein ISAKMP-Payload, sondern ein Payload, der
 | |
|                                   innerhalb der ISAKMP-Payloads erscheint.
 | |
|                             \item
 | |
|                                   Alle Attribut-Payloads haben eine gemeinsame Struktur:
 | |
|                             \item
 | |
|                                   % \includegraphics{Assets/NetworkSecurity-ISAKMP-payload-types.png}
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{ISAKMP - Die
 | |
|         Sicherheits-Assoziations-Nutzdaten}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ISAKMP-security-payload.png}
 | |
|         \item
 | |
|               Domain of Interpretation definiert die Anwendungsdomäne für die
 | |
|               auszuhandelnde SA, z.B. IPsec
 | |
|         \item
 | |
|               Situation ist ein DOI-spezifisches Feld, das die Situation angibt, in
 | |
|               der die aktuelle Verhandlung stattfindet (z. B. Notruf vs. normaler
 | |
|               Anruf)
 | |
|         \item
 | |
|               Auf den SA-Payload folgen ein oder mehrere Proposal-Payloads
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{ISAKMP - Die
 | |
|         Vorschlagsnutzdaten}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ISAKMP-proposal-payload.png}
 | |
|         \item
 | |
|               Proposal \# wird verwendet, um Richtlinien auszudrücken und Vorschläge
 | |
|               auszuhandeln:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn zwei oder mehr Vorschläge die gleiche Nummer tragen, wird ein
 | |
|                         logisches UND realisiert.
 | |
|                   \item
 | |
|                         Unterschiedliche Werte für Proposal \# realisieren logisches OR mit
 | |
|                         absteigender Priorität
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Protocol ID gibt den Protokoll-Identifikator der aktuellen Verhandlung
 | |
|               an, z. B. AH oder ESP (für IPsec)
 | |
|         \item
 | |
|               SPI Size gibt die Länge des enthaltenen SPI-Wertes an
 | |
|         \item
 | |
|               Number of Transforms (Anzahl der Transformationen) gibt an, wie viele
 | |
|               Transformationen zu diesem Vorschlag gehören (diese folgen unmittelbar
 | |
|               auf die Nutzlast des Vorschlags)
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{ISAKMP - Die
 | |
|         Transformations-Nutzdaten}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-ISAKMP-transform-payload.png}
 | |
|         \item
 | |
|               Eine Transform-Payload spezifiziert einen bestimmten
 | |
|               Sicherheitsmechanismus, auch Transform genannt, der zur Sicherung des
 | |
|               Kommunikationskanals verwendet werden soll.
 | |
|         \item
 | |
|               Jede in einem Vorschlag aufgeführte Transformation hat eine eindeutige
 | |
|               Transform \#
 | |
|         \item
 | |
|               Jede Transformation wird durch eine Transform-ID eindeutig
 | |
|               identifiziert, z.B. 3DES, AES, MD5, SHA-1, etc.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Transformations-IDs werden in einem DOI-Dokument angegeben.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die SA-Attribute geben die Attribute an, die für die im Feld Transform
 | |
|               ID angegebene Transformation definiert sind.
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{ISAKMP - SA-Verhandlung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Inhalt des Next Payload-Feldes von SA-, Proposal- und
 | |
|               Transform-Payloads:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Das Next-Payload-Feld einer SA-Payload gibt nicht die unmittelbar
 | |
|                         folgende Proposal-Payload an, da diese implizit ist.
 | |
|                   \item
 | |
|                         Das Gleiche gilt für Proposal- und Transform-Payloads
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Proposal-Payload gibt der initiierenden Entität die Möglichkeit,
 | |
|               der antwortenden Entität die Sicherheitsprotokolle und zugehörigen
 | |
|               Sicherheitsmechanismen zur Verwendung mit der auszuhandelnden
 | |
|               Sicherheitsassoziation zu präsentieren.
 | |
|         \item
 | |
|               Wenn die SA-Etablierung für eine kombinierte Schutzsuite ausgehandelt
 | |
|               wird, die aus mehreren Protokollen besteht, muss es mehrere
 | |
|               Proposal-Payloads geben, die jeweils die gleiche Proposal-Nummer
 | |
|               haben.
 | |
|         \item
 | |
|               Diese Vorschläge müssen als eine Einheit betrachtet werden und dürfen
 | |
|               nicht durch einen Vorschlag mit einer anderen Vorschlagsnummer
 | |
|               getrennt werden.
 | |
|         \item
 | |
|               Dieses erste Beispiel zeigt eine ESP- UND AH-Schutzsuite:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Das erste Protokoll wird mit zwei von der vorschlagenden Stelle
 | |
|                         unterstützten Transformationen dargestellt, ESP mit:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Transformation 1 als 3DES
 | |
|                             \item
 | |
|                                   Umwandlung 2 als AES
 | |
|                             \item
 | |
|                                   Der Responder muss zwischen den beiden für ESP vorgeschlagenen
 | |
|                                   Transformationen wählen.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Das zweite Protokoll ist AH und wird mit einer einzigen
 | |
|                         Transformation angeboten:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Umwandlung 1 als SHA
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die resultierende Schutzsuite ist entweder
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   3DES und SHA, oder
 | |
|                             \item
 | |
|                                   AES und SHA, je nachdem, welche ESP-Transformation vom Responder
 | |
|                                   gewählt wurde
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         In diesem Fall folgen auf die SA-Nutzdaten die folgenden Nutzdaten:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   {[}Vorschlag 1, ESP, (Transform 1, 3DES, ...), (Transform 2,
 | |
|                                   AES){]} {[}Vorschlag 1, AH, (Transform 1, SHA){]}
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Bitte beachten Sie, dass dies zu zwei SAs pro Richtung führt!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Dieses zweite Beispiel zeigt einen Vorschlag für zwei verschiedene
 | |
|               Schutzsuiten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die erste Schutzsuite wird vorgestellt mit:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   einer Transformation (MD5) für das erste Protokoll (AH), und
 | |
|                             \item
 | |
|                                   eine Umwandlung (3DES) für das zweite Protokoll (ESP)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die zweite Schutzsuite wird mit zwei Transformationen für ein
 | |
|                         einziges Protokoll (ESP) vorgestellt:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   3DES, oder
 | |
|                             \item
 | |
|                                   AES
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Bitte beachten Sie, dass es nicht möglich ist, festzulegen, dass
 | |
|                         Transformation 1 und Transformation 2 für eine Instanz einer
 | |
|                         Protokollspezifikation verwendet werden müssen.
 | |
|                   \item
 | |
|                         In diesem Fall folgen auf den SA-Payload die folgenden Payloads:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   {[}Vorschlag 1, AH, (Transform 1, MD5, ...){]} {[}Vorschlag 1,
 | |
|                                   ESP, (Transform 1, 3DES, ...){]} {[}Vorschlag 2, ESP, (Transform1,
 | |
|                                   3DES, ...), (Transform 2, AES, ...){]}
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Bitte beachten Sie, dass Vorschlag 1 zu zwei SAs pro Richtung führt.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Bei der Beantwortung einer Security-Association-Nutzlast muss der
 | |
|               Antwortende eine Security-Association-Nutzlast mit dem ausgewählten
 | |
|               Vorschlag senden, der aus mehreren Proposal-Nutzlasten und den
 | |
|               zugehörigen Transform-Nutzlasten bestehen kann
 | |
|         \item
 | |
|               Jede der Proposal-Payloads muss eine einzelne Transform-Payload
 | |
|               enthalten, die dem Protokoll zugeordnet ist.
 | |
|         \item
 | |
|               Der Antwortende sollte das Feld Proposal \# in der Proposal-Payload
 | |
|               und das Feld Transform \# in jeder Transform-Payload des ausgewählten
 | |
|               Vorschlags beibehalten.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Beibehaltung der Vorschlags- und Transformationsnummern sollte
 | |
|                         die Protokollverarbeitung des Initiators beschleunigen, da die
 | |
|                         Auswahl des Antwortenden nicht mit jeder angebotenen Option
 | |
|                         verglichen werden muss.
 | |
|                   \item
 | |
|                         Diese Werte ermöglichen es dem Initiator, den Vergleich direkt und
 | |
|                         schnell durchzuführen.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Initiator muss überprüfen, ob die vom Responder empfangene
 | |
|               SA-Nutzlast mit einem der ursprünglich gesendeten Vorschläge
 | |
|               übereinstimmt
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{ISAKMP - Session Key
 | |
|         Establishment}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               ISAKMP baut 4 verschiedene Schlüssel mit einem
 | |
|               Authentifizierungsaustausch auf:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         SKEYID ist eine Zeichenkette, die aus geheimem Material abgeleitet
 | |
|                         wird, das nur den aktiven Teilnehmern des Austauschs bekannt ist und
 | |
|                         als ,,Hauptschlüssel'' dient.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die Berechnung von SKEYID ist abhängig von der
 | |
|                                   Authentifizierungsmethode
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         SKEYID\_e ist das Schlüsselmaterial, das von der ISAKMP SA zum
 | |
|                         Schutz der Vertraulichkeit ihrer Nachrichten verwendet wird
 | |
|                   \item
 | |
|                         SKEYID\_a ist das Schlüsselmaterial, das von der ISAKMP SA zur
 | |
|                         Authentifizierung ihrer Nachrichten verwendet wird
 | |
|                   \item
 | |
|                         SKEYID\_d ist das Verschlüsselungsmaterial, das zur Ableitung von
 | |
|                         Schlüsseln für Nicht-ISAKMP-Sicherheitsassoziationen verwendet wird.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{IKE - Einführung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Während ISAKMP die grundlegenden Datenformate und Verfahren zur
 | |
|               Aushandlung beliebiger SAs definiert, spezifiziert der Internet Key
 | |
|               Exchange das standardisierte Protokoll zur Aushandlung von IPsec SAs
 | |
|         \item
 | |
|               IKE definiert fünf Austauschvorgänge:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Phase-1-Austausch für die Einrichtung einer IKE SA :
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Main-Mode-Austausch, der durch 6 ausgetauschte Nachrichten
 | |
|                                   realisiert wird
 | |
|                             \item
 | |
|                                   Aggressive mode exchange, der nur 3 Nachrichten benötigt
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Phase 2 Austausch für die Einrichtung von IPsec SAs:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Quick-Mode-Austausch, der mit 3 Nachrichten realisiert wird
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Andere Austausche:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Informationsaustausch zur Übermittlung von Status- und
 | |
|                                   Fehlermeldungen
 | |
|                             \item
 | |
|                                   Neuer Gruppenaustausch zur Vereinbarung von privaten
 | |
|                                   Diffie-Hellman-Gruppen
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Hinweis: Auf den folgenden Folien steht HMAC(K, x \textbar{} y
 | |
|               \textbar{} ...) für H(K, p 1 , H(K, p 2 , x, y, ...)), wobei p 1 und p
 | |
|               2 Auffüllmuster bezeichnen
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IKE - Berechnung von
 | |
|         IKE-Sitzungsschlüsseln}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IKE baut vier verschiedene Schlüssel mit einem
 | |
|               Authentifizierungsaustausch auf:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         SKEYID ist eine Zeichenkette, die aus geheimem Material abgeleitet
 | |
|                         wird, das nur den aktiven Teilnehmern des Austauschs bekannt ist,
 | |
|                         und die als ,,Hauptschlüssel'' dient.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die Berechnung von SKEYID ist abhängig von der
 | |
|                                   Authentifizierungsmethode
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         SKEYID\_d ist das Keying-Material, das zur Ableitung von Schlüsseln
 | |
|                         für Nicht-IKE-SAs verwendet wird
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   SKEYID\_d = \$HMAC(SKEYID, g\^{}\{xy\} \textbar{} CKY-I \textbar{}
 | |
|                                   CKY-R \textbar{} 0)\$, wobei \$g\^{}\{xy\}\$ das gemeinsame
 | |
|                                   Diffie-Hellman-Geheimnis bezeichnet
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         SKEYID\_a ist das Schlüsselmaterial, das von der IKE SA zur
 | |
|                         Authentifizierung ihrer Nachrichten verwendet wird
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   SKEYID\_a = \$HMAC(SKEYID, SKEYID\_d \textbar{} g\^{}\{xy\}
 | |
|                                   \textbar{} CKY-I \textbar{} CKY-R \textbar{} 1)\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         SKEYID\_e ist das Schlüsselmaterial, das von der IKE SA zum Schutz
 | |
|                         der Vertraulichkeit ihrer Nachrichten verwendet wird
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   SKEYID\_e = \$HMAC(SKEYID, SKEYID\_a \textbar{} g\^{}\{xy\}
 | |
|                                   \textbar{} CKY-I \textbar{} CKY-R \textbar{} 2)\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Falls erforderlich, werden die Schlüssel nach der folgenden Methode
 | |
|               erweitert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$K=(K\_1 \textbar{} K\_2 \textbar{} ...)\$ mit \$K\_i =
 | |
|                         HMAC(SKEYID, K\_\{i-1\})\$ und \$K\_0 = 0\$
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IKE -
 | |
|         Authentifizierungsmethoden}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Phase 1 IKE-Austausche werden mit Hilfe von zwei Hash-Werten Hash-I
 | |
|               und Hash-R authentifiziert, die vom Initiator und vom Responder
 | |
|               erstellt werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Hash-I = HMAC(SKEYID, gx \textbar{} gy \textbar{} CKY-I \textbar{}
 | |
|                         CKY-R \textbar{} SA-Angebot \textbar{} ID-I)
 | |
|                   \item
 | |
|                         Hash-R = HMAC(SKEYID, gy \textbar{} gx \textbar{} CKY-R \textbar{}
 | |
|                         CKY-I \textbar{} SA-offer \textbar{} ID-R) wobei gx, gy die
 | |
|                         ausgetauschten öffentlichen Diffie-Hellman-Werte bezeichnen ID-I,
 | |
|                         ID-R bezeichnen die Identität des Initiators und des Responders
 | |
|                         SA-offer bezeichnet die Nutzdaten bezüglich der SA-Verhandlung
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               IKE unterstützt vier verschiedene Methoden der Authentifizierung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Pre-shared Key:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   SKYEID = \$HMAC(K\_\{Initiator\}, Responder , r\_\{Initiator\}
 | |
|                                   \textbar{} r\_\{Responder\})\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Zwei verschiedene Formen der Authentifizierung mit
 | |
|                         Public-Key-Verschlüsselung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   SKEYID = \$HMAC(H(r\_\{Initiator\}, r\_\{Responder\}), CKY-I
 | |
|                                   \textbar{} CKY-R)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Digitale Unterschrift:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   SKEYID = \$HMAC((r\_\{Initiator\} \textbar{} r\_\{Responder\}),
 | |
|                                   g\^{}\{xy\})\$
 | |
|                             \item
 | |
|                                   Da in diesem Fall SKEYID selbst keine Authentifizierung bietet,
 | |
|                                   werden die Werte Hash-I und Hash-R vom Initiator/Responder
 | |
|                                   signiert
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IKE - Main Mode Austausch mit Pre-Shared
 | |
|         Key}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die folgenden Beschreibungen listen die ausgetauschten ISAKMP- und
 | |
|               IKE-Payloads auf, wenn verschiedene ,,Flavors'' der
 | |
|               IKE-Authentifizierung durchgeführt werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-IKE-exchange-payloads.png}
 | |
|                   \item
 | |
|                         \$N\_i, N\_r\$ bezeichnen \$r\_\{Initiiator\}, r\_\{Responder\}\$
 | |
|                         (IKE-Notation)
 | |
|                   \item
 | |
|                         \$ID\_i, ID\_r\$ bezeichnen die Identität des Initiators und des
 | |
|                         Responders
 | |
|                   \item
 | |
|                         \$KE\$ bezeichnet die öffentlichen Werte eines DH-Austausches
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Bitte beachten Sie, dass Hash-I und Hash-R nicht signiert werden
 | |
|               müssen, da sie bereits ,,ein authentisches Geheimnis'' (Pre-Shared
 | |
|               Key) enthalten
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IKE - Hauptmodus Austausch mit
 | |
|         Signaturen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-IKE-exchange-payload-signature.png}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$(m)\$ gibt an, dass m optional ist
 | |
|                   \item
 | |
|                         \$I{[}m{]}\$ bedeutet, dass I m signiert
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Bitte beachten Sie, dass Hash-I und Hash-R signiert werden müssen, da
 | |
|               sie nichts enthalten, von dem bekannt ist, dass es authentisch ist
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IKE - Main Mode Exchange mit Public Key
 | |
|         Encryption}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-IKE-exchange-public-key.png}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         wobei: \$\{m\}\_\{+KI\}\$ bedeutet, dass m mit dem öffentlichen
 | |
|                         Schlüssel \$+K\_I\$ verschlüsselt ist
 | |
|                   \item
 | |
|                         Bitte beachten Sie, dass Hash-I und Hash-R nicht signiert werden
 | |
|                         müssen, da sie die ausgetauschten Zufallszahlen Ni bzw. Nr
 | |
|                         ,,enthalten''.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Jede Entität beweist also ihre Authentizität, indem sie die
 | |
|                                   empfangene Zufallszahl ( Ni oder Nr ) mit ihrem privaten Schlüssel
 | |
|                                   entschlüsselt
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-IKE-exchange-public-key-2.png}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         wobei: \$\{m\}\_\{+KI\}\$ bedeutet, dass m mit dem öffentlichen
 | |
|                         Schlüssel \$+K\_I\$ verschlüsselt ist
 | |
|                   \item
 | |
|                         \$\{m\}\_\{K\_i\}\$ bedeutet, dass m mit dem symmetrischen Schlüssel
 | |
|                         \$K\_i\$ mit \$K\_i=H(N\_i, CKY-I)\$ und \$K\_r=H(N\_r,CKY-R)\$
 | |
|                         verschlüsselt ist
 | |
|                   \item
 | |
|                         Bitte beachten Sie, dass alle bisher beschriebenen Schemata einen
 | |
|                         Schutz der Identität vor Abhörern im Internet bieten, da die IDs und
 | |
|                         Zertifikate nicht im Klartext gesendet werden:
 | |
|                   \item
 | |
|                         Die IP-Adressen der ausgetauschten Pakete sind jedoch immer
 | |
|                         lesbar...
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IKE - Aggressiver Modus Austausch mit Pre-Shared
 | |
|         Key}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-IKE-aggressive-mode.png}
 | |
|         \item
 | |
|               Da die Identität des Initiators und des Responders gesendet werden
 | |
|               muss, bevor ein Sitzungsschlüssel erstellt werden kann, kann der
 | |
|               Austausch im aggressiven Modus keinen Identitätsschutz vor Abhörern
 | |
|               bieten
 | |
|         \item
 | |
|               Ähnliche Varianten des aggressiven Modus gibt es auch für die
 | |
|               Authentifizierung mit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Digitale Signatur
 | |
|                   \item
 | |
|                         Verschlüsselung mit öffentlichem Schlüssel
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IKE - Quick Mode
 | |
|         Exchange}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-IKE-quick-mode.png}
 | |
|         \item
 | |
|               \$Hash1 = HMAC(SKEYID\_a, M-ID \textbar{} SA \textbar{} Ni \textbar{}
 | |
|               {[} \textbar{} KE {]} {[} \textbar{} ID\_\{ci\} \textbar{}
 | |
|               ID\_\{cr\}{]} )\$
 | |
|         \item
 | |
|               \$Hash2 = HMAC(SKEYID\_a, M-ID \textbar{} N\_i \textbar{} SA
 | |
|               \textbar{} N\_r \textbar{} {[} \textbar{} KE {]} {[} \textbar{}
 | |
|               ID\_\{ci\} \textbar{} ID\_\{cr\}{]} )
 | |
|         \item
 | |
|               \$Hash3 = HMAC(SKEYID\_a, 0 \textbar{} M-ID \textbar{} N\_i \textbar{}
 | |
|               N\_r)\$
 | |
|         \item
 | |
|               Die optionale Einbeziehung der Identitäten \$ID\_\{ci\}\$ und
 | |
|               \$ID\_\{cr\}\$ ermöglicht es ISAKMP-Entitäten, eine SA im Namen
 | |
|               anderer Clients einzurichten (Gateway-Szenario)
 | |
|         \item
 | |
|               Die optionalen Schlüsselaustausch-Payloads KE ermöglichen die
 | |
|               Durchführung eines neuen DH-Austauschs, wenn perfekte Forward Secrecy
 | |
|               gewünscht ist
 | |
|         \item
 | |
|               Sitzungsschlüsselmaterial \$= HMAC(SKEYID\_d, {[} g\^{}\{xy\}
 | |
|               \textbar{} {]} protocol \textbar{} SPI \textbar{} N\_i \textbar{}
 | |
|               N\_r)\$
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Weitere Probleme mit
 | |
|         IPsec}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Komprimierung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn Verschlüsselung verwendet wird, dann können die resultierenden
 | |
|                         IP-Pakete nicht in der Verbindungsschicht komprimiert werden, z.B.
 | |
|                         bei einer Verbindung zu einem ISP über Modem
 | |
|                   \item
 | |
|                         Daher wurde das IP Payload Compression Protocol (PCP) definiert
 | |
|                   \item
 | |
|                         PCP kann mit IPsec verwendet werden:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   In der IPsec-Policy-Definition kann PCP festgelegt werden.
 | |
|                             \item
 | |
|                                   Die IKE SA-Verhandlung ermöglicht die Aufnahme von PCP in die
 | |
|                                   Vorschläge
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Interoperabilitätsprobleme bei End-to-End-Sicherheit mit
 | |
|               Header-Verarbeitung in Zwischenknoten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Interoperabilität mit Firewalls:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die Ende-zu-Ende-Verschlüsselung kollidiert mit der Notwendigkeit
 | |
|                                   von Firewalls, die Protokoll-Header der oberen Schichten in
 | |
|                                   IP-Paketen zu prüfen.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Interoperabilität mit Network Address Translation (NAT):
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Verschlüsselte Pakete lassen weder eine Analyse noch eine Änderung
 | |
|                                   der Adressen zu.
 | |
|                             \item
 | |
|                                   Authentifizierte Pakete werden verworfen, wenn die Quell- oder
 | |
|                                   Zieladresse geändert wird.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Schlussfolgerung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IPsec ist die Sicherheitsarchitektur der IETF für das
 | |
|               Internet-Protokoll
 | |
|         \item
 | |
|               Sie bietet die folgenden Sicherheitsdienste für IP-Pakete:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Authentifizierung der Datenherkunft
 | |
|                   \item
 | |
|                         Schutz vor Wiederholung
 | |
|                   \item
 | |
|                         Vertraulichkeit
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Es kann in Endsystemen oder Zwischensystemen realisiert werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Implementierung im Endsystem: Integriertes Betriebssystem oder
 | |
|                         ,,bump in the stack''
 | |
|                   \item
 | |
|                         Gateway-Implementierung: Integrierter Router oder ,,bump in the
 | |
|                         wire''
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Es wurden zwei grundlegende Sicherheitsprotokolle definiert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Authentifizierungs-Header (AH)
 | |
|                   \item
 | |
|                         Encapsulating security payload (ESP)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               SA-Verhandlung und Schlüsselverwaltung werden mit folgenden
 | |
|               Protokollen realisiert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Internet security association key management protocol (ISAKMP)
 | |
|                   \item
 | |
|                         Internet-Schlüsselaustausch (IKE)
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Neue Wege in der
 | |
|         IPsec-Entwicklung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Internet-Schlüsselaustausch Version 2
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Basierend auf den Erkenntnissen aus IKEv1
 | |
|                   \item
 | |
|                         Wesentliche Vereinfachungen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Netzwerkadressübersetzung (NAT)
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beispiel für Probleme mit NAT und IPsec
 | |
|                   \item
 | |
|                         NAT-Überwindung
 | |
|                   \item
 | |
|                         Bound-End-to-End Tunnel Mode (BEET)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Konfiguration von großen IPsec-Infrastrukturen
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Internet Key Exchange Protocol Version 2
 | |
|     {[}RFC5996{]}}
 | |
| 
 | |
|     Zusätzliche Designziele zu IKEv1
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Konsolidierung von mehreren IKEv1-RFCs (und mehreren Erweiterungen)
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Erleichterung für Entwickler und Prüfer
 | |
|                   \item
 | |
|                         Klärung mehrerer unspezifischer Punkte
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Vereinfachungen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Anzahl der verschiedenen Schlüsselaustauschverfahren auf eines
 | |
|                         reduziert
 | |
|                   \item
 | |
|                         Verschlüsselung wie in ESP
 | |
|                   \item
 | |
|                         Einfacher Anfrage/Antwort-Mechanismus
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Verringerung der Latenzzeit
 | |
|         \item
 | |
|               Aushandlung von Verkehrsselektoren
 | |
|         \item
 | |
|               Graceful Changes, damit bestehende IKEv1-Software aufgerüstet werden
 | |
|               kann
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IKEv2 -
 | |
|         Schlüsselaustauschverfahren}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-IKEv2-exchange-procedure.png}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$K\$ Schlüssel abgeleitet durch \$PRF(PRF(N\_i \textbar\textbar{}
 | |
|                         N\_r, g\^{}\{ir\}), N\_i \textbar\textbar{} N\_r \textbar\textbar{}
 | |
|                         SPI\_i \textbar\textbar{} SPI\_r)\$
 | |
|                   \item
 | |
|                         \$PRF\$ ,,irgendeine'' Pseudozufallsfunktion - in der Regel eine
 | |
|                         asymmetrische HMAC SIG-Signatur oder MAC über die ersten beiden
 | |
|                         Nachrichten
 | |
|                   \item
 | |
|                         \$SAEx\$ ein Huckepack- ,,Quick-Mode-Austausch''
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nur ein einziger Austauschtyp
 | |
|         \item
 | |
|               Vier Nachrichten werden ausgetauscht \$(= 2 * RTT)\$
 | |
|         \item
 | |
|               Initiator löst alle erneuten Übertragungen aus
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IKEv2 - Eigenschaften des
 | |
|         Schlüsselaustauschverfahrens}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der erste SA-Austausch erfolgt huckepack
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Geringere Latenz, da eine RTT eingespart wird
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nachricht 4 sollte huckepack mit Nachricht 2 ausgetauscht werden, aber
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Nachricht 3 verifiziert, dass Initiator Nachricht 2 erhalten hat
 | |
|                         (SPI \textasciitilde{} Cookie)
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Dient als DoS-Schutz, wenn anschließend rechenintensive Aufgaben
 | |
|                                   durchgeführt werden
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Identität des Responders wird erst nach Verifizierung des Initiators
 | |
|                         offengelegt
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Schützt vor dem Scannen nach einer Partei mit einer bestimmten ID
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Initiator weiß nicht, wann es sicher ist, Daten zu senden
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   (Pakete können in falscher Reihenfolge empfangen werden)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Würde eine kompliziertere Strategie zur erneuten Übertragung
 | |
|                         erfordern
 | |
|                   \item
 | |
|                         Responder kann nicht über eine Policy für die Child SA entscheiden
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IKEv2 - Zusätzliche
 | |
|         Funktionen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Zusätzlicher DoS-Schutz
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Im Falle eines DoS-Angriffs kann der Responder den Initiator
 | |
|                         auffordern, ein zustandsloses Cookie zu senden
 | |
|                   \item
 | |
|                         Fügt dem Austausch 2 zusätzliche Nachrichten hinzu
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Dead Peer Detection
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Regelmäßige IKE-Anfragen, um festzustellen, ob die SA gelöscht
 | |
|                         werden kann
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Flexiblere Verhandlungstechniken
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Möglichkeit der Angabe: ,,Verwenden Sie eine dieser Chiffren mit
 | |
|                         einem dieser Authentifizierungsalgorithmen'' (es müssen nicht mehr
 | |
|                         alle Kombinationen aufgezählt werden)
 | |
|                   \item
 | |
|                         Verkehrsselektoren können eingegrenzt werden
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Initiator: ,,Ich möchte 192.168.0.0/16 für meinen Tunnelmodus
 | |
|                                   verwenden''
 | |
|                             \item
 | |
|                                   Antwortgeber: ,,OK, aber Sie dürfen nur 192.168.78.0/24
 | |
|                                   verwenden''
 | |
|                             \item
 | |
|                                   Kann verwendet werden, um den Responder dem Initiator einen
 | |
|                                   Adressbereich zuweisen zu lassen (in einfachen Situationen ohne /
 | |
|                                   mit Hilfe von DHCP; siehe auch unten)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Netzwerk-Adressübersetzung
 | |
|         (NAT)}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Heutzutage ein häufiges Problem: ISP stellt nur eine einzige
 | |
|               IP-Adresse zur Verfügung, es sollen aber mehrere Geräte angeschlossen
 | |
|               werden
 | |
|         \item
 | |
|               Lösung: Ein Router wird verwendet, um mehrere interne (private)
 | |
|               Adressen auf eine einzige externe (öffentliche) Adresse abzubilden
 | |
|         \item
 | |
|               Häufigster Ansatz (vereinfacht):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Für Pakete, die von der privaten Seite kommen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der Router schreibt die TCP/UDP-Quellports auf einen eindeutigen
 | |
|                                   Wert pro IP-Flow um
 | |
|                             \item
 | |
|                                   Speichert den neuen Quellport in einer Tabelle mit der
 | |
|                                   Quelladresse und dem alten Quellport
 | |
|                             \item
 | |
|                                   Ersetzt die Quell-IP-Adresse durch die externe Adresse
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Für Pakete, die von der öffentlichen Seite kommen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der Router sucht den IP-Fluss nach dem TCP/UDP-Zielport ab
 | |
|                             \item
 | |
|                                   Ersetzt die Zieladresse und den Port durch die alten Werte
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{NAT - Ein Beispiel}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-NAT-example.png}
 | |
|         \item
 | |
|               NAT ändert die Quelladresse eines jeden Pakets in eine öffentliche
 | |
|               IP-Adresse mit anderen ("umgeschriebenen") Quellports
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Probleme mit NAT und IPsec -
 | |
|         NAT-Traversal}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Probleme:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         AH kann per Definition nicht mit NAT verwendet werden
 | |
|                   \item
 | |
|                         ESP bietet kein ,,wiederbeschreibbares Feld'' (wie Portnummer)
 | |
|                   \item
 | |
|                         TCP/UDP-Portnummern werden verschlüsselt oder authentifiziert (oder
 | |
|                         beides)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Lösung für ESP: ESP-Pakete in normale UDP-Pakete einkapseln
 | |
|               {[}RFC3948{]}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-NAT-encap-ESP.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               UDP-Header enthält nur Portnummern und leere Prüfsumme
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Fügt 8 Byte Overhead hinzu
 | |
|                   \item
 | |
|                         Einziger Zweck: dem NAT-Gerät etwas zum ,,Umschreiben'' geben (um
 | |
|                         die Empfänger der Pakete in der Antwort unterscheiden zu können)
 | |
|                   \item
 | |
|                         Port 4500 reserviert für NAT-T (NAT-Traversal)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Im Transport-Modus:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Innere UDP/TCP-Prüfsumme hängt von der ursprünglichen Quelladresse
 | |
|                         ab (Layering-Verletzung in der ursprünglichen TCP/IP-Suite)
 | |
|                   \item
 | |
|                         Muss wiederhergestellt werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wann ist NAT-T zu verwenden?
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         NAT-Situation muss von IKE erkannt werden
 | |
|                   \item
 | |
|                         Erfolgt durch IKEv1-Erweiterung {[}RFC3947{]} und IKEv2
 | |
|                   \item
 | |
|                         IKE verwendet NAT-T, wenn der IKE-Quellport nicht 500 ist
 | |
|                   \item
 | |
|                         Funktioniert nicht immer, dann ist eine manuelle Konfiguration
 | |
|                         erforderlich
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Timeout-Probleme und Keep-Alives
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         ESP-Pakete werden nicht periodisch ausgetauscht
 | |
|                   \item
 | |
|                         NAT-T-Ströme können im Router eine Zeitüberschreitung verursachen
 | |
|                   \item
 | |
|                         Eingehende Pakete können dann nicht zugestellt werden
 | |
|                   \item
 | |
|                         Regelmäßige Keep-Alive-Pakete stellen sicher, dass der Router seinen
 | |
|                         Status beibehält
 | |
|                   \item
 | |
|                         Einfaches UDP-Paket an Port 4500 mit einem einzigen 0xFF-Oktett
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Probleme mit NAT und IPsec -
 | |
|         BEET-Modus}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Welche Adressen soll Alice verwenden, um Pakete an Bob, Charlie und
 | |
|               Dave zu senden?
 | |
|         \item
 | |
|               Weder die externen noch die internen Adressen dürfen eindeutig sein!
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Bobs und Charlies Pakete haben beide die gleiche externe Adresse
 | |
|                   \item
 | |
|                         Bobs und Daves Pakete haben beide dieselbe interne Adresse
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-NAT-BEET-mode.png}
 | |
|                   \item
 | |
|                         Die Verwendung interner oder externer Adressen ist unsicher (Warum?)
 | |
|                   \item
 | |
|                         Die Unterscheidung erfordert virtuelle Adressen...
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Virtuelle IP-Adressen zuweisen oder aushandeln
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Alice muss jedem ihrer Peers eindeutige virtuelle Adressen zuweisen
 | |
|                   \item
 | |
|                         Dies kann manuell geschehen, oder
 | |
|                   \item
 | |
|                         durch DHCP über IKE, oder
 | |
|                   \item
 | |
|                         durch Aushandlung von Verkehrsselektoren (IKEv2)
 | |
|                   \item
 | |
|                         L2TP über IPsec ausführen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               IPsec-Tunnelmodus ist erforderlich
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Externer IP-Header trägt entweder eine öffentliche IP-Adresse oder
 | |
|                         eine private NAT-Adresse
 | |
|                   \item
 | |
|                         Interner IP Header trägt virtuelle IP-Adresse
 | |
|                   \item
 | |
|                         Führt zu (mindestens!) 28 Bytes Overhead pro Paket in
 | |
|                         NAT-Situationen
 | |
|                   \item
 | |
|                         \textbar{} IP Header \textbar{} UDP Header \textbar{} ESP Header
 | |
|                         \textbar{} IP Header \textbar{} geschützte Daten \textbar{}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Aber eigentlich sind nur Adressfelder im inneren IP-Header
 | |
|               erforderlich (alle anderen Felder können vom externen Header
 | |
|               abgeleitet werden)
 | |
|         \item
 | |
|               Beide virtuellen Adressfelder verwenden immer dieselben Adressen (kein
 | |
|               Multiplexing wie in üblichen Tunnelmodusszenarien)
 | |
|         \item
 | |
|               Die Beschränkung auf zwei Adressen im Tunnel ermöglicht eine statische
 | |
|               Bindung während der IKE-Aushandlung
 | |
|         \item
 | |
|               Der Bound-End-to-End-Tunnel (BEET)-Modus {[}NiMe08{]} verhält sich
 | |
|               semantisch wie eine Tunnelmodus-Assoziation mit einem Verkehrsselektor
 | |
|               für einen einzelnen Host (/32)
 | |
|         \item
 | |
|               Die übertragenen ESP-Pakete sind äquivalent zu Transport
 | |
|               (!)-Modus-Paketen (virtuelle Adressen werden nie in Paketen
 | |
|               übertragen)
 | |
|         \item
 | |
|               Der innere Header wird durch den ESP-Entkapselungsprozess
 | |
|               wiederhergestellt.
 | |
|         \item
 | |
|               Unterscheidet zwischen der Erreichbarkeit eines Hosts (externe
 | |
|               IP-Adresse) und seiner Identität (virtuelle IP-Adresse)
 | |
|         \item
 | |
|               Hosts können nun zwischen verschiedenen Standorten hin- und herwandern
 | |
|               und ihre virtuelle IP-Adresse beibehalten (dies ermöglicht zusätzlich
 | |
|               eine bessere Unterstützung der Mobilität)
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Konfiguration großer
 | |
|         IPsec-Infrastrukturen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Kommunikationsinfrastrukturen von Unternehmen und Behörden:
 | |
|         \item
 | |
|               Kann komplexe Overlay-Topologien bilden
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verschachtelt
 | |
|                   \item
 | |
|                         Kreisläufe
 | |
|                   \item
 | |
|                         Mehrere Sicherheitsgateways pro privatem Netzwerk
 | |
|                   \item
 | |
|                         Mehrere private Netze pro Gateway
 | |
|                   \item
 | |
|                         Private Adressbereiche in privaten Netzen
 | |
|                   \item
 | |
|                         QoS und sicheres IP-Multicast können erforderlich sein
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kann bis zu Tausende von Sicherheits-Gateways haben
 | |
|         \item
 | |
|               Kann sich dynamisch ändern
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Hinzufügen und Entfernen von Sicherheitsgateways
 | |
|                   \item
 | |
|                         Ausfälle von Verbindungen und Knoten
 | |
|                   \item
 | |
|                         Denial-of-Service-Angriffe
 | |
|                   \item
 | |
|                         Mobile Sicherheitsgateways (z. B. für die Kommunikation im
 | |
|                         Katastrophenfall)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Muss natürlich sicher sein ...
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Probleme bei der manuellen Konfiguration der
 | |
|         IPsec-Infrastruktur}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die IETF hat keine Methode zur automatischen Konfiguration und zum
 | |
|               Einsatz von IPsec in großen Szenarien definiert
 | |
|         \item
 | |
|               Daher werden Sicherheits-Gateways in der Regel manuell konfiguriert
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Anzahl der Sicherheitsrichtlinieneinträge wächst quadratisch mit
 | |
|                         der Anzahl der Sicherheitsgateways
 | |
|                   \item
 | |
|                         Problem der Skalierbarkeit
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der Administrationsaufwand wächst \$\textbackslash Rightarrow\$
 | |
|                                   Die Kosten steigen
 | |
|                             \item
 | |
|                                   Administratoren machen potenziell mehr Konfigurationsfehler, z.B.
 | |
|                                   vergessen, einen Eintrag aus einem SPD zu löschen oder einen zu
 | |
|                                   großen IP-Bereich zuzulassen, usw. \$\textbackslash Rightarrow\$
 | |
|                                   Mögliche Sicherheitsprobleme
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Problem der Agilität
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Keine dynamische Anpassung der VPN-Topologie
 | |
|                   \item
 | |
|                         Begrenzte Unterstützung mobiler Sicherheits-Gateways
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Automatische IPsec-Konfiguration - einige
 | |
|         Anforderungen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Funktionelle Anforderungen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Muss manuelle Eingriffe minimieren
 | |
|                   \item
 | |
|                         Muss auch komplexe Infrastrukturen unterstützen (verschachtelte
 | |
|                         Topologien mit privaten Adressbereichen usw.)
 | |
|                   \item
 | |
|                         Muss nur Unicast verwenden (da Multicast usw. nicht weit verbreitet
 | |
|                         ist)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nicht-funktionale Anforderungen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Muss robust sein, d. h. stabil auf schwierige Netzbedingungen
 | |
|                         reagieren
 | |
|                   \item
 | |
|                         Sie muss sicher sein, insbesondere darf sie nicht schwächer sein als
 | |
|                         eine manuell konfigurierte IPsec-Infrastruktur
 | |
|                   \item
 | |
|                         Sie muss in Bezug auf die Anzahl der Sicherheits-Gateways skalierbar
 | |
|                         sein
 | |
|                   \item
 | |
|                         Es muss sich schnell an neue Topologien anpassen können.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Verschiedene Ansätze für die automatische
 | |
|         IPsec-Konfiguration}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IPsec-Richtlinienverteilung über zentrale Server
 | |
|         \item
 | |
|               Gruppenverschlüsseltes Transport-VPN (GET)
 | |
|         \item
 | |
|               Tunnel-Endpunkt-Erkennung (TED)
 | |
|         \item
 | |
|               Dynamisches Mehrpunkt-VPN (DMVPN)
 | |
|         \item
 | |
|               Proaktives Multicast-basiertes IPsec-Erkennungsprotokoll
 | |
|         \item
 | |
|               Soziales VPN
 | |
|         \item
 | |
|               Sicheres OverLay für IPsec-Erkennung (SOLID)
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{IPsec-Richtlinienverteilung durch zentrale
 | |
|         Server}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Einfacher, gemeinsamer Ansatz zur Konfiguration einer großen Anzahl
 | |
|               von Sicherheits-Gateways
 | |
|         \item
 | |
|               Zentraler Policy Server statisch in jedem Gateway konfiguriert
 | |
|         \item
 | |
|               Jedes Gateway kontaktiert den Policy Server, um SPD zu aktualisieren
 | |
|         \item
 | |
|               Beispiel: Microsoft Active Directory, verschiedene Militärprodukte
 | |
|         \item
 | |
|               Einige offensichtliche Probleme:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Administratoren müssen die zentrale Datenbank manuell bearbeiten
 | |
|                   \item
 | |
|                         Verschachtelte Topologien sind schwer zu realisieren
 | |
|                   \item
 | |
|                         Skalierbarkeitsprobleme aufgrund von Engpässen
 | |
|                   \item
 | |
|                         Verfügbarkeit ist schwer zu garantieren (Single Point of Failure)
 | |
|                   \item
 | |
|                         Dynamische Topologien erfordern, dass neue Richtlinien proaktiv an
 | |
|                         die Sicherheitsgateways übermittelt werden (auch wenn sie derzeit
 | |
|                         vielleicht nicht verwendet werden)
 | |
|                   \item
 | |
|                         Viele Richtlinieneinträge werden höchstwahrscheinlich nie verwendet
 | |
|                         (kein Verkehr)
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Tunnel Endpoint Discovery
 | |
|         (TED)}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Proprietärer Ansatz von Cisco {[}Fluh01{]}
 | |
|         \item
 | |
|               Sicherheitsassoziationen werden reaktiv erstellt
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Alice sendet Paket an Bob
 | |
|                   \item
 | |
|                         Gateway A erkennt, dass keine gültige SA vorhanden ist
 | |
|                   \item
 | |
|                         Verwerfen des Pakets und Senden des IKE-Pakets an Bob
 | |
|                   \item
 | |
|                         Gateway B fängt IKE-Paket ab
 | |
|                   \item
 | |
|                         Richtet SA zu Gateway A ein
 | |
|                   \item
 | |
|                         Nachfolgende Pakete zwischen Alice und Bob können übertragen werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ziemlich leistungsfähiger, sicherer Ansatz, aber
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Routing muss im Transportnetz durchgeführt werden
 | |
|                   \item
 | |
|                         Keine privaten IP-Adressbereiche
 | |
|                   \item
 | |
|                         Keine verschachtelten Topologien
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-TED.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Gruppenverschlüsseltes Transport-VPN
 | |
|         (GET)}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Cisco Produktbranding mehrerer IPsec-Komponenten {[}Bhai08{]}
 | |
|         \item
 | |
|               Sicherheits-Gateways kontaktieren zentralen IKE-Server
 | |
|         \item
 | |
|               IKE-Server verteilt symmetrische Schlüssel (bevorzugt über Multicast)
 | |
|         \item
 | |
|               Alle Sicherheitsgateways einer Gruppe verwenden dieselbe SA
 | |
|               (einschließlich SPI, Schlüssel)
 | |
|         \item
 | |
|               Wiederholungsschutz durch Zeitfenster (1-100 Sekunden)
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sliding-Window-Mechanismus funktioniert nicht, da mehrere Absender
 | |
|                         denselben SPI verwenden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zusätzliche Probleme mit zentralen Policy-Servern:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         schwacher Wiedergabeschutz
 | |
|                   \item
 | |
|                         Die Kompromittierung eines einzelnen Gateways beeinträchtigt das
 | |
|                         gesamte VPN
 | |
|                   \item
 | |
|                         Rekeying durch symmetrischen Austausch \$\textbackslash Rightarrow\$
 | |
|                         kann nicht von kompromittierten Schlüsseln wiederhergestellt werden
 | |
|                   \item
 | |
|                         Perfektes Vorwärtsgeheimnis nicht verfügbar
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Einziger Vorteil: Ermöglicht Multicast-Netzwerkprivatisierung
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-GET.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Proaktives Multicast-basiertes
 | |
|         IPsec-Erkennungsprotokoll}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Ansatz wurde für militärische Anwendungen entwickelt {[}Tran06{]}
 | |
|         \item
 | |
|               Sicherheits-Gateways kündigen periodisch private Netzwerke an
 | |
|         \item
 | |
|               Erfolgt durch Transportnetzwerk-Multicast
 | |
|         \item
 | |
|               Nachrichten werden durch einen vorab geteilten symmetrischen Schlüssel
 | |
|               geschützt
 | |
|         \item
 | |
|               Vorteile: Unterstützt private Adressbereiche, Multicast innerhalb des
 | |
|               VPN
 | |
|         \item
 | |
|               Probleme:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Erfordert Transportnetz-Multicast
 | |
|                   \item
 | |
|                         Verschachtelte Topologien funktionieren nicht
 | |
|                   \item
 | |
|                         Anzahl der empfangenen Nachrichten kann ziemlich groß sein
 | |
|                   \item
 | |
|                         Ein kompromittiertes Gateway führt zu einer nicht
 | |
|                         wiederherstellbaren Kompromittierung des VPN
 | |
|                   \item
 | |
|                         Replay-Schutz nicht berücksichtigt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-proactive-multicast-discovery.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Soziales VPN}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Akademischer Ansatz {[}FBJW08{]}
 | |
|         \item
 | |
|               Verwendet Facebook als ,,policy'' Server zum Austausch von IKE
 | |
|               Zertifikaten
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Man kann mit Freunden kommunizieren
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Agilität durch Peer-to-Peer-Netzwerk
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schaut in einer verteilten Hash-Tabelle nach der externen IP-Adresse
 | |
|                         des Ziels
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Probleme
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Keine Gateway-Funktionalität (nur Ende-zu-Ende)
 | |
|                   \item
 | |
|                         Keine verschachtelten Topologien
 | |
|                   \item
 | |
|                         Ziemlich großer Paket-Overhead
 | |
|                   \item
 | |
|                         Schlechte Skalierbarkeit im Falle vieler potentieller
 | |
|                         Kommunikationspartner
 | |
|                   \item
 | |
|                         Sicherheit
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Vertrauen Sie Facebook?
 | |
|                             \item
 | |
|                                   Wissen Sie, ob die Person in Facebook wirklich die ist, die sie
 | |
|                                   behauptet?
 | |
|                             \item
 | |
|                                   Überhaupt keine Verifizierung möglich
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Dynamisches Mehrpunkt-VPN
 | |
|         (DMVPN)}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Ein weiterer Ansatz von Cisco {[}Bhai08{]}
 | |
|         \item
 | |
|               VPN ist aufgeteilt in
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Statische Kern-Gateways (,,Hubs'')
 | |
|                   \item
 | |
|                         Dynamische periphere Gateways (,,Spokes'')
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Hubs können OSPF-Routing zwischen den anderen nutzen
 | |
|         \item
 | |
|               Spokes kontaktieren vorkonfigurierte Hubs für den Zugang zum VPN
 | |
|         \item
 | |
|               Dynamische ,,Spoke-to-Spoke''-Verbindungen optimieren den Datenfluss
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-DMVPN.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \paragraph{Dynamisches Mehrpunkt-VPN (DMVPN) -
 | |
|         Diskussion}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Vorteile
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ansatz ermöglicht dynamischere Topologien
 | |
|                   \item
 | |
|                         Kann private Adressen verwenden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nachteilig
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Erfordert immer noch erheblichen Konfigurationsaufwand
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Kernnetz muss manuell konfiguriert werden
 | |
|                             \item
 | |
|                                   Spokes müssen mit den Adressen der Hubs konfiguriert werden
 | |
|                             \item
 | |
|                                   Macht z.B. einen einfachen Wechsel zu einem neuen ISP unmöglich
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Spokes können nicht verschachtelt werden
 | |
|                   \item
 | |
|                         Spokes können sich nicht zwischen ,,Hubs'' bewegen
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Hub verhält sich wie MobileIP Home Agent für Spoke
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Ausfall von ,,Hubs'' kritisch für deren ,,Spokes''
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Sicheres OverLay für IPsec-Erkennung
 | |
|         (SOLID)}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Komplexer Ansatz, verspricht einfache Implementierung {[}RSS10{]}
 | |
|         \item
 | |
|               Sicherheitsgateways bilden ein strukturiertes Overlay-Netzwerk
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verbindet Sicherheitsgateways so, dass das VPN effizient nach einer
 | |
|                         Zieladresse durchsucht werden kann
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Erfordert nur sehr wenige proaktiv erstellte IPsec-Verbindungen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Minimale Konnektivität ermöglicht eine reaktive Erkennung von
 | |
|                         Sicherheitsgateways
 | |
|                   \item
 | |
|                         Sich bewegende Sicherheitsgateways müssen nicht alle anderen über
 | |
|                         die aktuelle externe IP-Adresse informieren
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Drei Aufgaben zu erfüllen
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Topologie-Kontrolle
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Proaktiver Aufbau einer VPN-Struktur zur schnellen Erkennung
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Erkennung von Sicherheitsgateways
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Jedes Mal, wenn ein Client-Computer ein Paket sendet und keine
 | |
|                                   gültige SA gefunden wird
 | |
|                             \item
 | |
|                                   Muss das entsprechende Sicherheits-Gateway finden, um reaktiv eine
 | |
|                                   SA zu erstellen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Weiterleitung von Datenpaketen
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Suche nach einem effizienten Weg zur Weiterleitung von Paketen
 | |
|                                   durch das Overlay
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \paragraph{SOLID -
 | |
|         Topologie-Kontrolle}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Mechanismen zur Topologiekontrolle
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kontinuierliche Aktualisierung der VPN-Struktur zur Anpassung an
 | |
|                         Veränderungen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               In SOLID werden proaktiv SAs erstellt, um eine künstliche Ringstruktur
 | |
|               zu bilden
 | |
|         \item
 | |
|               Sicherheitsgateways sind nach inneren Adressen geordnet
 | |
|         \item
 | |
|               Gateways, die nicht direkt im Transportnetz kommunizieren können,
 | |
|               werden durch virtuelle Pfade verbunden \$\textbackslash Rightarrow\$
 | |
|               Verschachtelte Strukturen werden abgeflacht, um eine einfache
 | |
|               Erkennung zu ermöglichen
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-SOLID-topology.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \paragraph{SOLID - Erkennung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Reaktive Erkennung, um ein Sicherheits-Gateway für eine bestimmte
 | |
|               Client-IP-Adresse zu finden
 | |
|         \item
 | |
|               Suchanfragen werden an das (bereits zugeordnete) Gateway
 | |
|               weitergeleitet, dessen innere IP-Adresse der gesuchten IP-Adresse ,,am
 | |
|               ähnlichsten'' ist
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein einfacher Mechanismus stellt sicher, dass das korrekte
 | |
|                         entsprechende Sicherheits-Gateway gefunden wird
 | |
|                   \item
 | |
|                         Die Pakete werden entlang der Ringstruktur gesendet
 | |
|                   \item
 | |
|                         Benötigt \$O(n)\$ Overlay Hops, um das Ziel zu erreichen (wobei n
 | |
|                         die Anzahl der Netzwerke in der VPN-Topologie ist)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \$\textbackslash Rightarrow\$ Kürzere ,,Suchpfade'' erforderlich
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \paragraph{SOLID - Mehr
 | |
|         Topologiekontrolle}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Erweiterte Topologiekontrolle schafft zusätzliche SAs
 | |
|         \item
 | |
|               IP-Adressraum des VPN wird in Bereiche unterteilt
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Exponentiell wachsende Größe der Bereiche
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zu jedem Bereich wird mindestens eine SA proaktiv von jedem Gateway
 | |
|               gehalten
 | |
|         \item
 | |
|               Anzahl der zusätzlichen SAs wächst in \$O(log\textbackslash{} n)\$
 | |
|         \item
 | |
|               Aufgrund der Konstruktionstechnik Entdeckung in
 | |
|               \$O(log\textbackslash{} n)\$ Overlay Hops
 | |
|               \$\textbackslash Rightarrow\$ Ansatz skaliert gut mit Anzahl der
 | |
|               Netzwerke
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-SOLID-topology-control.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \paragraph{SOLID - Weiterleitung von
 | |
|         Datenpaketen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Nach der anfänglichen Erkennung müssen die Datenpakete weitergeleitet
 | |
|               werden
 | |
|         \item
 | |
|               Senden von Daten entlang des Entdeckungspfades möglich
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Länge wieder \$O(log\textbackslash{} n)\$ Overlay-Hops
 | |
|                   \item
 | |
|                         Zu ineffizient, wenn viele Pakete geroutet werden müssen
 | |
|                   \item
 | |
|                         Wird nur anfangs verwendet
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nachfolgend wird der Pfad optimiert
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Optimierung erfolgt, wenn Gateway feststellt, dass es Pakete für
 | |
|                         zwei Gateways weiterleitet, die sich im gleichen Netz befinden
 | |
|                   \item
 | |
|                         Führt in zyklusfreien VPNs zu optimalen Routen in Bezug auf die
 | |
|                         Anzahl der Overlay-Sprünge
 | |
|                   \item
 | |
|                         Kleine Zyklen können lokal umgangen werden
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \paragraph{SOLID - Eigenschaften und
 | |
|         Ergebnisse}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Kann komplexe Infrastrukturen innerhalb von Sekunden oder Minuten
 | |
|               konfigurieren
 | |
|         \item
 | |
|               Erfordert keine manuelle Interaktion
 | |
|         \item
 | |
|               Erfordert keine besonderen Eigenschaften des Transportnetzes
 | |
|         \item
 | |
|               Robustheit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kein einzelner Ausfallpunkt
 | |
|                   \item
 | |
|                         Wenn das Netzwerk aufgeteilt wird, können die Teile unabhängig
 | |
|                         voneinander arbeiten
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Keine Schwächung der von Standard-IPsec gebotenen Sicherheit
 | |
|         \item
 | |
|               Gute Skalierbarkeit mit der Anzahl der privaten Netze, keine Engpässe
 | |
|         \item
 | |
|               Wenn Sicherheitsgateways umziehen, müssen nur zwei SAs
 | |
|               wiederhergestellt werden, um die Erreichbarkeit zu gewährleisten
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \paragraph{SOLID - Simulative
 | |
|         Bewertung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               SOLID kann in OMNeT++ evaluiert werden
 | |
|         \item
 | |
|               Ermöglicht Tests von komplexen Szenarien
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \paragraph{SOLID - Sonstige
 | |
|         Forschung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               SOLID wird in der Gruppe Telematik/Computernetzwerke erforscht
 | |
|         \item
 | |
|               Entwicklung von Prototypen
 | |
|         \item
 | |
|               Verfügbarkeit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schutz des wichtigeren Kernnetzes vor DoS-Angriffen
 | |
|                   \item
 | |
|                         Schaffung eines mehrschichtigen VPN, das bestimmte Verkehrsflüsse
 | |
|                         zwischen Sicherheits-Gateways verhindert
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zugriffskontrolle
 | |
|         \item
 | |
|               Robustheit
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Proaktive Wiederherstellung bei Netzwerkausfällen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Anwendungsschicht-Multicast
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ermöglicht sicheres Multicast über reine Unicast-Netze
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Sicherheitsprotokolle der
 | |
|       Transportschicht}
 | |
| 
 | |
| 
 | |
|     \subsection{Anwendungsbereich von Sicherheitsprotokollen der
 | |
|         Transportschicht}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Transportschicht sorgt für die Kommunikation zwischen
 | |
|               Anwendungsprozessen (anstelle der Kommunikation zwischen Endsystemen)
 | |
|               und ihre Hauptaufgaben sind:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Isolierung höherer Protokollschichten von der Technologie, der
 | |
|                         Struktur und den Unzulänglichkeiten der eingesetzten
 | |
|                         Kommunikationstechnik
 | |
|                   \item
 | |
|                         Transparente Übertragung von Nutzdaten
 | |
|                   \item
 | |
|                         Globale Adressierung von Anwendungsprozessen, unabhängig von
 | |
|                         Adressen der unteren Schichten (Ethernet-Adressen, Telefonnummern
 | |
|                         usw.)
 | |
|                   \item
 | |
|                         Gesamtziel: Bereitstellung eines effizienten und zuverlässigen
 | |
|                         Dienstes
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sicherheitsprotokolle der Transportschicht zielen darauf ab, den
 | |
|               Dienst der Transportschicht zu verbessern, indem sie zusätzliche
 | |
|               Sicherheitseigenschaften gewährleisten
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Da sie in der Regel einen zuverlässigen Transportdienst voraussetzen
 | |
|                         und darauf aufbauen, stellen sie nach der Terminologie des
 | |
|                         OSI-Referenzmodells (Open Systems Interconnection) eigentlich
 | |
|                         Sitzungsschichtprotokolle dar.
 | |
|                   \item
 | |
|                         Da OSI jedoch nicht mehr ,,en vogue'' ist, werden sie als
 | |
|                         Sicherheitsprotokolle der Transportschicht bezeichnet
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Das Secure Socket Layer (SSL)
 | |
|         Protokoll}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               SSL wurde ursprünglich in erster Linie zum Schutz von HTTP-Sitzungen
 | |
|               entwickelt:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         In den frühen 1990er Jahren gab es ein ähnliches Protokoll namens
 | |
|                         S-HTTP
 | |
|                   \item
 | |
|                         Da jedoch S-HTTP-fähige Browser nicht kostenlos waren und SSL
 | |
|                         Version 2.0 in den Browsern von Netscape Communications enthalten
 | |
|                         war, setzte es sich schnell durch.
 | |
|                   \item
 | |
|                         SSL v.2 enthielt einige Schwachstellen, weshalb die Microsoft
 | |
|                         Corporation ein konkurrierendes Protokoll namens Private
 | |
|                         Communication Technology (PCT) entwickelte.
 | |
|                   \item
 | |
|                         Netscape verbesserte das Protokoll und SSL v.3 wurde zum
 | |
|                         De-facto-Standardprotokoll für die Sicherung des HTTP-Verkehrs.
 | |
|                   \item
 | |
|                         Dennoch kann SSL eingesetzt werden, um beliebige Anwendungen zu
 | |
|                         sichern, die über TCP laufen.
 | |
|                   \item
 | |
|                         1996 beschloss die IETF, ein allgemeines Transport Layer Security
 | |
|                         (TLS) Protokoll zu spezifizieren, das auf SSL basiert
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSL-Sicherheitsdienste}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Peer-Entity-Authentifizierung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vor jeder Kommunikation zwischen einem Client und einem Server wird
 | |
|                         ein Authentifizierungsprotokoll ausgeführt, um die Peer-Entitäten zu
 | |
|                         authentifizieren.
 | |
|                   \item
 | |
|                         Nach erfolgreichem Abschluss des Authentifizierungsdialogs wird eine
 | |
|                         SSL-Sitzung zwischen den Peer-Entities aufgebaut.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Vertraulichkeit der Benutzerdaten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Falls beim Aufbau der Sitzung vereinbart, werden die Benutzerdaten
 | |
|                         verschlüsselt.
 | |
|                   \item
 | |
|                         Es können verschiedene Verschlüsselungsalgorithmen ausgehandelt
 | |
|                         werden: RC4, DES, 3DES, IDEA
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Integrität der Benutzerdaten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein MAC, der auf einer kryptografischen Hash-Funktion basiert, wird
 | |
|                         an die Benutzerdaten angehängt.
 | |
|                   \item
 | |
|                         Der MAC wird mit einem ausgehandelten Geheimnis im
 | |
|                         Präfix-Suffix-Modus errechnet.
 | |
|                   \item
 | |
|                         Für die MAC-Berechnung kann entweder MD5 oder SHA ausgehandelt
 | |
|                         werden.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSL-Sitzungs- und
 | |
|         Verbindungsstatus}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Sitzungsstatus:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sitzungskennzeichen: eine vom Server gewählte Bytefolge
 | |
|                   \item
 | |
|                         Peer-Zertifikat: X.509 v.3 Zertifikat der Gegenstelle (optional)
 | |
|                   \item
 | |
|                         Komprimierungsmethode: Algorithmus zur Komprimierung der Daten vor
 | |
|                         der Verschlüsselung
 | |
|                   \item
 | |
|                         Cipher spec: spezifiziert kryptographische Algorithmen und Parameter
 | |
|                   \item
 | |
|                         Hauptgeheimnis: ein ausgehandeltes gemeinsames Geheimnis mit einer
 | |
|                         Länge von 48 Byte
 | |
|                   \item
 | |
|                         Ist wiederaufnehmbar: ein Kennzeichen, das angibt, ob die Sitzung
 | |
|                         neue Verbindungen unterstützt
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Verbindungsstatus:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Server und Client random: von Server und Client gewählte Bytefolgen
 | |
|                   \item
 | |
|                         Server write MAC secret: wird in MAC-Berechnungen des Servers
 | |
|                         verwendet
 | |
|                   \item
 | |
|                         Client write MAC secret: wird bei MAC-Berechnungen durch den Client
 | |
|                         verwendet
 | |
|                   \item
 | |
|                         Server-Schreibschlüssel: wird für die Verschlüsselung durch den
 | |
|                         Server und die Entschlüsselung durch den Client verwendet
 | |
|                   \item
 | |
|                         Client write key: wird für die Verschlüsselung durch den Client und
 | |
|                         die Entschlüsselung durch den Server verwendet
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Architektur des
 | |
|         SSL-Protokolls}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-ssl-protocol-architecture.png}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               SSL ist als eine mehrschichtige und modulare Protokollarchitektur
 | |
|               aufgebaut:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Handshake: Authentifizierung und Aushandlung von Parametern
 | |
|                   \item
 | |
|                         Change Cipherspec: Signalisierung von Übergängen in der
 | |
|                         Verschlüsselungsstrategie
 | |
|                   \item
 | |
|                         Alert: Signalisierung von Fehlerzuständen
 | |
|                   \item
 | |
|                         Application Data: Schnittstelle für den transparenten Zugriff auf
 | |
|                         das Record-Protokoll
 | |
|                   \item
 | |
|                         Aufzeichnung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Fragmentierung der Nutzdaten in Klartextsätze der Länge
 | |
|                                   \$\textless{} 2\^{}\{14\}\$
 | |
|                             \item
 | |
|                                   Komprimierung (optional) von Klartextsätzen
 | |
|                             \item
 | |
|                                   Verschlüsselung und Integritätsschutz (beides optional)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSL-Record-Protokoll}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-SSL-record-protocol.png}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Inhaltstyp:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ändern Cipherspec. (20)
 | |
|                   \item
 | |
|                         Warnung (21)
 | |
|                   \item
 | |
|                         Handshake (22)
 | |
|                   \item
 | |
|                         Anwendungsdaten (23)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Version: die Protokollversion von SSL (major = 3, minor = 0)
 | |
|         \item
 | |
|               Länge: die Länge der Daten in Bytes, darf nicht größer sein als
 | |
|               \$2\^{}\{14\} + 2\^{}\{10\}\$
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Verarbeitung des
 | |
|         SSL-Datensatzprotokolls}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Absendende Seite:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Datensatzschicht fragmentiert zunächst die Nutzdaten in
 | |
|                         Datensätze mit einer maximalen Länge von \$2\^{}\{14\}\$ Oktetten,
 | |
|                         wobei mehrere Nachrichten desselben Inhaltstyps zu einem Datensatz
 | |
|                         zusammengefasst werden können
 | |
|                   \item
 | |
|                         Nach der Fragmentierung werden die Daten des Datensatzes
 | |
|                         komprimiert, der Standardalgorithmus hierfür ist null
 | |
|                         (\textasciitilde{} keine Komprimierung), und er darf die Länge des
 | |
|                         Datensatzes nicht um mehr als \$2\^{}\{10\}\$ Oktette erhöhen
 | |
|                   \item
 | |
|                         Ein Nachrichtenauthentifizierungscode wird an die Datensatzdaten
 | |
|                         angehängt:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   \$MAC = H(MAC\_write\_secret + pad\_2 + H(MAC\_write\_secret +
 | |
|                                   pad\_1 + seqnum + length + data))\$
 | |
|                             \item
 | |
|                                   Man beachte, dass seqnum nicht übertragen wird, da es implizit
 | |
|                                   bekannt ist und das zugrundeliegende TCP einen gesicherten Dienst
 | |
|                                   bietet
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Daten des Datensatzes und der MAC werden mit dem in der
 | |
|                         aktuellen Chiffriervorschrift definierten
 | |
|                         Verschlüsselungsalgorithmus verschlüsselt (dies kann ein vorheriges
 | |
|                         Auffüllen erfordern)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Empfängerseite:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Datensatz wird entschlüsselt, auf Integrität geprüft,
 | |
|                         dekomprimiert, de-fragmentiert und an die Anwendung oder das
 | |
|                         SSL-Protokoll der höheren Schicht übergeben
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSL Handshake Protokoll:
 | |
|         Einführung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Das SSL-Handshake-Protokoll wird verwendet, um die
 | |
|               Peer-Authentifizierung und die kryptographischen Parameter für eine
 | |
|               SSL-Sitzung festzulegen.
 | |
|         \item
 | |
|               Eine SSL-Sitzung kann so ausgehandelt werden, dass sie wieder
 | |
|               aufgenommen werden kann:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Wiederaufnahme und Duplizierung von SSL-Sitzungen ermöglicht die
 | |
|                         Wiederverwendung des etablierten Sicherheitskontextes.
 | |
|                   \item
 | |
|                         Dies ist für die Absicherung des HTTP-Verkehrs sehr wichtig, da in
 | |
|                         der Regel für jedes Element einer Webseite eine eigene
 | |
|                         TCP-Verbindung aufgebaut wird.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Seit HTTP 1.1 werden persistente TCP-Verbindungen verwendet.
 | |
|                             \item
 | |
|                                   Dennoch ist die Wiederaufnahme von SSL-Sitzungen sehr sinnvoll, da
 | |
|                                   persistente TCP-Verbindungen nach dem Herunterladen aller
 | |
|                                   Elemente, die zu einer Seite gehören, und einer gewissen Zeit der
 | |
|                                   Inaktivität des Benutzers geschlossen werden können.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Bei der Wiederaufnahme / Duplizierung einer bestehenden Sitzung wird
 | |
|                         ein abgekürzter Handshake durchgeführt
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSL Handshake Protokoll: Vollständiger
 | |
|     Handshake}
 | |
| 
 | |
|     %\begin{longtable}[]{@{}lll@{}}
 | |
|     %    \toprule
 | |
|     %    Client                  &                       & Server\tabularnewline
 | |
|     %    \midrule
 | |
|     %    \endhead
 | |
|     %    ClientHello             & -\/-\/-\textgreater{} & \tabularnewline
 | |
|     %                            &                       & ServerHello\tabularnewline
 | |
|     %                            &                       & {[}ServerCertificate{]}\tabularnewline
 | |
|     %                            &                       & {[}CertificateRequest{]}\tabularnewline
 | |
|     %                            &                       & {[}ServerKeyExchange{]}\tabularnewline
 | |
|     %                            & \textless-\/-\/-      & ServerHelloDone\tabularnewline
 | |
|     %    {[}ClientCertificate{]} &                       & \tabularnewline
 | |
|     %    ClientKeyExchange       &                       & \tabularnewline
 | |
|     %    {[}CertificateVerify{]} &                       & \tabularnewline
 | |
|     %    ChangeCipherSpec        &                       & \tabularnewline
 | |
|     %    Finished                & -\/-\/-\textgreater{} & \tabularnewline
 | |
|     %                            &                       & ChangeCipherSpec\tabularnewline
 | |
|     %                            & \textless-\/-\/-      & Finished\tabularnewline
 | |
|     %    \bottomrule
 | |
|     %\end{longtable}
 | |
| 
 | |
|     {[}...{]} kennzeichnet optionale Nachrichten
 | |
| 
 | |
| 
 | |
|     \subsection{SSL Handshake Protokoll: Abgekürzter
 | |
|         Handshake}
 | |
| 
 | |
|     %\begin{longtable}[]{@{}lll@{}}
 | |
|     %    \toprule
 | |
|     %    Client                 &                       & Server\tabularnewline
 | |
|     %    \midrule
 | |
|     %    \endhead
 | |
|     %    ClientHello(SessionID) & -\/-\/-\textgreater{} & \tabularnewline
 | |
|     %                           &                       & ServerHello(SessionID)\tabularnewline
 | |
|     %                           &                       & ChangeCipherSpec\tabularnewline
 | |
|     %                           & \textless-\/-\/-      & Finished\tabularnewline
 | |
|     %    ChangeCipherSpec       &                       & \tabularnewline
 | |
|     %    Finished               & -\/-\/-\textgreater{} & \tabularnewline
 | |
|     %    \bottomrule
 | |
|     %\end{longtable}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Nachricht "Finished" enthält eine MAC, die entweder auf MD5 oder
 | |
|               SHA basiert und das Master-Secret enthält, das zuvor zwischen Client
 | |
|               und Server festgelegt wurde.
 | |
|         \item
 | |
|               Wenn der Server die Sitzung nicht fortsetzen kann / beschließt, sie
 | |
|               nicht fortzusetzen, antwortet er mit den Nachrichten des vollständigen
 | |
|               Handshake
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSL-Handshake-Protokoll: Kryptografische
 | |
|         Aspekte}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               SSL unterstützt drei Methoden zur Erstellung von Sitzungsschlüsseln:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         RSA: ein Pre-Master-Geheimnis wird vom Client zufällig generiert und
 | |
|                         mit dem öffentlichen Schlüssel des Servers verschlüsselt an den
 | |
|                         Server gesendet
 | |
|                   \item
 | |
|                         Diffie-Hellman: Es wird ein Standard-Diffie-Hellman-Austausch
 | |
|                         durchgeführt, und das ermittelte gemeinsame Geheimnis wird als
 | |
|                         Pre-Master-Secret verwendet.
 | |
|                   \item
 | |
|                         Fortezza: eine unveröffentlichte, von der NSA entwickelte
 | |
|                         Sicherheitstechnologie, die eine Schlüsselhinterlegung unterstützt
 | |
|                         und in diesem Kurs nicht behandelt wird
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Da SSL in erster Linie für die Sicherung des HTTP-Verkehrs entwickelt
 | |
|               wurde, ist das ,,Standardanwendungsszenario'' ein Client, der auf
 | |
|               einen authentischen Webserver zugreifen möchte:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         In diesem Fall sendet der Webserver sein Zertifikat mit dem
 | |
|                         öffentlichen Schlüssel nach der ServerHello-Nachricht
 | |
|                   \item
 | |
|                         Das Server-Zertifikat kann die öffentlichen DH-Werte des Servers
 | |
|                         enthalten oder der Server kann sie in der optionalen
 | |
|                         ServerKeyExchange-Nachricht senden
 | |
|                   \item
 | |
|                         Der Client verwendet das Zertifikat des Servers / die empfangenen
 | |
|                         DH-Werte / seine Fortezza-Karte, um einen RSA- / DH- /
 | |
|                         Fortezza-basierten Schlüsselaustausch durchzuführen.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Das Pre-Master-Secret und die Zufallszahlen, die der Client und der
 | |
|               Server in ihren Hallo-Nachrichten angeben, werden verwendet, um das
 | |
|               Master-Secret der Länge 48 Byte zu generieren.
 | |
|         \item
 | |
|               Berechnung des Master-Geheimnisses:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Master-Geheimnis = MD5(vor-Master-Geheimnis + SHA('A' +
 | |
|                         vor-Master-Geheimnis + ClientHello.random + ServerHello.random)) +
 | |
|                         MD5(Vor-Hauptgeheimnis + SHA('BB' + Vor-Hauptgeheimnis +
 | |
|                         ClientHello.random + ServerHello.random)) + MD5(pre-master-secret +
 | |
|                         SHA('CCC' + pre-master-secret + ClientHello.random +
 | |
|                         ServerHello.random))
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Verwendung von MD5 und SHA zur Generierung des Master-Geheimnisses
 | |
|               wird als sicher angesehen, selbst wenn eine der kryptografischen
 | |
|               Hash-Funktionen ,,defekt'' ist.
 | |
|         \item
 | |
|               Um die Sitzungsschlüssel aus dem Master-Secret zu berechnen, wird in
 | |
|               einem ersten Schritt eine ausreichende Menge an Schlüsselmaterial aus
 | |
|               dem Master-Secret und den Zufallszahlen von Client und Server erzeugt:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         key\_block = MD5(master-secret + SHA('A' + master-secret +
 | |
|                         ClientHello.random + ServerHello.random)) + MD5(master-secret +
 | |
|                         SHA('BB' + master-secret + ClientHello.random + ServerHello.random))
 | |
|                         + {[}...{]}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Anschließend wird das Material des Sitzungsschlüssels fortlaufend aus
 | |
|               dem key\_block entnommen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         client\_write\_MAC\_secret = key\_block{[}1,
 | |
|                         CipherSpec.hash\_size{]}
 | |
|                   \item
 | |
|                         server\_write\_MAC\_secret = key\_block{[}i 1 , i 1 +
 | |
|                         CipherSpec.hash\_size - 1{]}
 | |
|                   \item
 | |
|                         client\_write\_key = key\_block{[}i 2 , i 2 +
 | |
|                         CipherSpec.key\_material - 1{]}
 | |
|                   \item
 | |
|                         server\_write\_key = key\_block{[}i 3 , i 3 +
 | |
|                         CipherSpec.key\_material - 1{]}
 | |
|                   \item
 | |
|                         client\_write\_IV = key\_block{[}i 4 , i 4 + CipherSpec.IV\_size -
 | |
|                         1{]}
 | |
|                   \item
 | |
|                         server\_write\_IV = key\_block{[}i 5 , i 5 + CipherSpec.IV\_size -
 | |
|                         1{]}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Authentifizierung von und mit dem Pre-Master-Secret:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         SSL unterstützt Schlüsselerstellung ohne Authentifizierung (anonym),
 | |
|                         in diesem Fall können Man-in-the-Middle-Angriffe nicht abgewehrt
 | |
|                         werden
 | |
|                   \item
 | |
|                         Bei Verwendung des RSA-basierten Schlüsselaustauschs:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der Client verschlüsselt das Pre-Master-Secret mit dem
 | |
|                                   öffentlichen Schlüssel des Servers, der durch eine
 | |
|                                   Zertifikatskette überprüft werden kann.
 | |
|                             \item
 | |
|                                   Der Client weiß, dass nur der Server das Pre-Master-Secret
 | |
|                                   entschlüsseln kann. Wenn der Server also die fertige Nachricht mit
 | |
|                                   dem Master-Secret sendet, kann der Client die Server-Authentizität
 | |
|                                   ableiten.
 | |
|                             \item
 | |
|                                   Der Server kann aus dem empfangenen Pre-Master-Secret keine
 | |
|                                   Client-Authentizität ableiten.
 | |
|                             \item
 | |
|                                   Wenn Client-Authentizität erforderlich ist, sendet der Client
 | |
|                                   zusätzlich sein Zertifikat und eine CertificateVerify-Nachricht,
 | |
|                                   die eine Signatur über einen Hash (MD5 oder SHA) des
 | |
|                                   Master-Geheimnisses und aller vor der CertificateVerify-Nachricht
 | |
|                                   ausgetauschten Handshake-Nachrichten enthält
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Beim DH-Key-Austausch wird die Authentizität aus den DH-Werten
 | |
|                         abgeleitet, die im Zertifikat des Servers (und des Clients)
 | |
|                         enthalten und signiert sind
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSL Handshake Protokoll: Eine
 | |
|         Sicherheitslücke}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               1998 entdeckte D. Bleichenbacher eine Schwachstelle im
 | |
|               Verschlüsselungsstandard PKCS \#1 (v.1.5), der im
 | |
|               SSL-Handshake-Verfahren verwendet wird
 | |
|         \item
 | |
|               Wenn der Client das Pre-Master-Secret mit dem öffentlichen Schlüssel
 | |
|               des Servers verschlüsselt, verwendet er PKCS \#1, um es vor der
 | |
|               Verschlüsselung zu formatieren:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         EM = 0x02 \textbar{} PS \textbar{} 0x00 \textbar{} M
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   wobei PS eine Auffüllzeichenfolge von mindestens 8 pseudozufällig
 | |
|                                   erzeugten Nicht-Null-Oktetts und M die zu verschlüsselnde
 | |
|                                   Nachricht (= Pre-Master-Secret) bezeichnet
 | |
|                             \item
 | |
|                                   (PS wird verwendet, um eine Zufallskomponente hinzuzufügen und M
 | |
|                                   auf die Modulusgröße des verwendeten Schlüssels aufzufüllen)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Dann wird EM verschlüsselt: \$C = E(+K\_\{Server\}, EM)\$
 | |
|                   \item
 | |
|                         Nachdem der Server C entschlüsselt hat, prüft er, ob das erste
 | |
|                         Oktett gleich 0x ist und ob es ein 0x00-Oktett gibt; wenn diese
 | |
|                         Prüfung fehlschlägt, antwortet er mit einer Fehlermeldung
 | |
|                   \item
 | |
|                         Diese Fehlermeldung kann von einem Angreifer genutzt werden, um
 | |
|                         einen ,,Orakel-Angriff'' zu starten.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ein Orakel-Angriff gegen das SSL-Handshake-Protokoll {[}BKS98a{]}:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Betrachten wir einen Angreifer (Eve), der einen SSL-Handshake-Dialog
 | |
|                         belauscht hat und das Pre-Master-Secret (und damit alle anderen
 | |
|                         abgeleiteten Geheimnisse), das zwischen Alice (Client) und Bob
 | |
|                         (Server) ausgetauscht wurde, wiederherstellen möchte
 | |
|                   \item
 | |
|                         Eve hat die verschlüsselte Nachricht C, die das Pre-Master-Secret
 | |
|                         enthält, erfolgreich abgehört und möchte nun den Klartext
 | |
|                         wiederherstellen
 | |
|                   \item
 | |
|                         Eve generiert eine Reihe zusammenhängender Chiffretexte \$C\_1 ,
 | |
|                         C\_2 , ...\$:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   \$C\_i = C\textbackslash times R\_i\^{}e\textbackslash{}
 | |
|                                   mod\textbackslash{} n\$, wobei \$(e, n)\$ der öffentliche
 | |
|                                   Schlüssel von Bob ist
 | |
|                             \item
 | |
|                                   Die \$R\_i\$ werden adaptiv ausgewählt, abhängig von älteren
 | |
|                                   ,,guten'' \$R\_i\$, die von Bob verarbeitet wurden, ohne
 | |
|                                   Fehlermeldungen zu erzeugen (was anzeigt, dass sie zu einer
 | |
|                                   gültigen PKCS-1-Nachricht entschlüsselt wurden)
 | |
|                             \item
 | |
|                                   Die \$C\_i\$ werden an Bob übermittelt, und es werden entsprechend
 | |
|                                   neue \$C\_i\$ erzeugt
 | |
|                             \item
 | |
|                                   Aus dem ,,guten'' \$R\_i\$ leitet Eve bestimmte Bits der
 | |
|                                   entsprechenden Nachricht \$M\_i= C\_i\^{}d = M\textbackslash times
 | |
|                                   R\_i\textbackslash{} mod\textbackslash{} n\$ ab, basierend auf der
 | |
|                                   PKCS \#1 Verschlüsselungsmethode
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Aus den abgeleiteten Bits von \$M\textbackslash times
 | |
|                         R\_i\textbackslash{} mod\textbackslash{} n\$ für hinreichend viele
 | |
|                         \$R\_i\$ kann Eve die Größe des Intervalls reduzieren, das die
 | |
|                         unbekannte Nachricht M enthalten muss
 | |
|                   \item
 | |
|                         Im Wesentlichen halbiert jeder ,,gute'' Chiffretext das betreffende
 | |
|                         Intervall, so dass Eve mit genügend ,,guten'' Chiffretexten in der
 | |
|                         Lage ist, M
 | |
|                   \item
 | |
|                         Mit PKCS \#1 Version 1.5 (wie ursprünglich in SSL V.3.0 verwendet)
 | |
|                         wird ungefähr einer von \$2\^{}\{16\}\$ bis \$2\^{}\{18\}\$ zufällig
 | |
|                         ausgewählten Chiffretexten ,,gut'' sein.
 | |
|                   \item
 | |
|                         Typischerweise beträgt die Gesamtzahl der erforderlichen
 | |
|                         Chiffretexte bei einem \$1024\$-Bit-Modul etwa \$2\^{}\{20\}\$, und
 | |
|                         dies ist auch die Anzahl der Abfragen an Bob
 | |
|                   \item
 | |
|                         Nach der Durchführung von etwa 1 Million gefälschter
 | |
|                         SSL-Handshake-Dialoge (die alle entweder von Bob oder Eve
 | |
|                         unterbrochen werden) ist Eve also in der Lage, das Pre-Master-Secret
 | |
|                         und alle abgeleiteten Schlüssel einer zuvor eingerichteten
 | |
|                         SSL-Sitzung zwischen Alice und Bob wiederherzustellen. Subtile
 | |
|                         Protokollinteraktionen (hier: SSL und PKCS \#1) können zum Versagen
 | |
|                         eines Sicherheitsprotokolls führen, selbst wenn der grundlegende
 | |
|                         kryptographische Algorithmus (hier: RSA) selbst nicht gebrochen ist!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Gegenmassnahmen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Regelmäßiger Wechsel der öffentlichen Schlüsselpaare
 | |
|                         (\$\textbackslash Rightarrow\$-Overhead)
 | |
|                   \item
 | |
|                         Verringerung der Wahrscheinlichkeit, ,,gute'' Chiffriertexte zu
 | |
|                         erhalten, indem das Format der entschlüsselten Chiffriertexte
 | |
|                         gründlich überprüft und dem Client ein identisches Verhalten
 | |
|                         (Fehlermeldung, Zeitverhalten usw.) gezeigt wird
 | |
|                   \item
 | |
|                         Der Kunde muss den Klartext kennen, bevor er antwortet, ob die
 | |
|                         Nachricht erfolgreich entschlüsselt werden konnte.
 | |
|                   \item
 | |
|                         Hinzufügen einer Struktur zum Klartext, z. B. durch Hinzufügen eines
 | |
|                         Hashwerts zum Klartext:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Achtung: Es ist eine gewisse Vorsicht geboten, um Anfälligkeiten
 | |
|                                   für eine andere Klasse von Angriffen zu vermeiden {[}Cop96a{]}.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Änderung des Verschlüsselungsprotokolls für öffentliche Schlüssel,
 | |
|                         d.h. Überarbeitung von PKCS \#1:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   PKCS \#1 Version 2.1 bereitet den Klartext vor der Verschlüsselung
 | |
|                                   mit einer Methode vor, die als optimales asymmetrisches
 | |
|                                   Verschlüsselungs-Padding (OAEP) bezeichnet wird, um die PKCS \#1
 | |
|                                   Entschlüsselungsprozedur ,,plaintext aware'' zu machen, was
 | |
|                                   bedeutet, dass es nicht möglich ist, einen gültigen Chiffretext zu
 | |
|                                   konstruieren, ohne den entsprechenden Klartext zu kennen
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSL-Chiffre-Suiten}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Kein Schutz (Standard-Suite):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         CipherSuite SSL\_NULL\_WITH\_NULL\_NULL = \{ 0x00,0x00 \}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Server stellt einen für die Verschlüsselung geeigneten
 | |
|               RSA-Schlüssel bereit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         SSL\_RSA\_WITH\_NULL\_MD5 = \{ 0x00,0x01 \}
 | |
|                   \item
 | |
|                         SSL\_RSA\_WITH\_NULL\_SHA = \{ 0x00,0x02 \}
 | |
|                   \item
 | |
|                         SSL\_RSA\_EXPORT\_WITH\_RC4\_40\_MD5 = \{ 0x00,0x03 \}
 | |
|                   \item
 | |
|                         SSL\_RSA\_WITH\_RC4\_128\_MD5 = \{ 0x00,0x04 \}
 | |
|                   \item
 | |
|                         SSL\_RSA\_WITH\_RC4\_128\_SHA = \{ 0x00,0x05 \}
 | |
|                   \item
 | |
|                         SSL\_RSA\_EXPORT\_WITH\_RC2\_CBC\_40\_MD5 = \{ 0x00,0x06 \}
 | |
|                   \item
 | |
|                         SSL\_RSA\_WITH\_IDEA\_CBC\_SHA = \{ 0x00,0x07 \}
 | |
|                   \item
 | |
|                         SSL\_RSA\_EXPORT\_WITH\_DES40\_CBC\_SHA = \{ 0x00,0x08 \}
 | |
|                   \item
 | |
|                         SSL\_RSA\_WITH\_DES\_CBC\_SHA = \{ 0x00,0x09 \}
 | |
|                   \item
 | |
|                         SSL\_RSA\_WITH\_3DES\_EDE\_CBC\_SHA = \{ 0x00,0x0A \}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Cipher-Suites mit authentifiziertem DH-Schlüssel-Austausch
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         SSL\_DH\_DSS\_EXPORT\_WITH\_DES40\_CBC\_SHA = \{ 0x00,0x0B \}
 | |
|                   \item
 | |
|                         SSL\_DH\_DSS\_WITH\_DES\_CBC\_SHA = \{ 0x00,0x0C \}
 | |
|                   \item
 | |
|                         SSL\_DH\_DSS\_WITH\_3DES\_EDE\_CBC\_SHA = \{ 0x00,0x0D \}
 | |
|                   \item
 | |
|                         SSL\_DH\_RSA\_EXPORT\_WITH\_DES40\_CBC\_SHA = \{ 0x00,0x0E \}
 | |
|                   \item
 | |
|                         SSL\_DH\_RSA\_WITH\_DES\_CBC\_SHA = \{ 0x00,0x0F \}
 | |
|                   \item
 | |
|                         SSL\_DH\_RSA\_WITH\_3DES\_EDE\_CBC\_SHA = \{ 0x00,0x10 \}
 | |
|                   \item
 | |
|                         SSL\_DHE\_DSS\_EXPORT\_WITH\_DES40\_CBC\_SHA = \{ 0x00,0x11 \}
 | |
|                   \item
 | |
|                         SSL\_DHE\_DSS\_WITH\_DES\_CBC\_SHA = \{ 0x00,0x12 \}
 | |
|                   \item
 | |
|                         SSL\_DHE\_DSS\_WITH\_3DES\_EDE\_CBC\_SHA = \{ 0x00,0x13 \}
 | |
|                   \item
 | |
|                         SSL\_DHE\_RSA\_EXPORT\_WITH\_DES40\_CBC\_SHA = \{ 0x00,0x14 \}
 | |
|                   \item
 | |
|                         SSL\_DHE\_RSA\_WITH\_DES\_CBC\_SHA = \{ 0x00,0x15 \}
 | |
|                   \item
 | |
|                         SSL\_DHE\_RSA\_WITH\_3DES\_EDE\_CBC\_SHA = \{ 0x00,0x16 \}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     (DH steht für Suites, bei denen die öffentlichen DH-Werte in einem von
 | |
|     einer CA signierten Zertifikat enthalten sind, DHE für Suites, bei denen
 | |
|     sie mit einem öffentlichen Schlüssel signiert sind, der von einer CA
 | |
|     zertifiziert ist)
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Von der Verwendung der folgenden Chiffriersuiten ohne jegliche
 | |
|               Authentifizierung der Entität wird dringend abgeraten, da sie anfällig
 | |
|               für Man-in-the-Middle-Angriffe sind:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         SSL\_DH\_anon\_EXPORT\_WITH\_RC4\_40\_MD5 = \{ 0x00,0x17 \}
 | |
|                   \item
 | |
|                         SSL\_DH\_anon\_WITH\_RC4\_128\_MD5 = \{ 0x00,0x18 \}
 | |
|                   \item
 | |
|                         SSL\_DH\_anon\_EXPORT\_WITH\_DES40\_CBC\_SHA = \{ 0x00,0x19 \}
 | |
|                   \item
 | |
|                         SSL\_DH\_anon\_WITH\_DES\_CBC\_SHA = \{ 0x00,0x1A \}
 | |
|                   \item
 | |
|                         SSL\_DH\_anon\_WITH\_3DES\_EDE\_CBC\_SHA = \{ 0x00,0x1B \}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die letzte Cipher Suite ist für den Fortezza-Token:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         SSL\_FORTEZZA\_DMS\_WITH\_NULL\_SHA = \{ 0x00,0x1C \}
 | |
|                   \item
 | |
|                         SSL\_FORTEZZA\_DMS\_WITH\_FORTEZZA\_CBC\_SHA = \{ 0x00,0x1D \}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     (Diese Cipher-Suites müssen natürlich nicht auswendig gelernt werden und
 | |
|     werden hier nur aufgeführt, um die Flexibilität des SSL-Protokolls zu
 | |
|     verdeutlichen)
 | |
| 
 | |
| 
 | |
|     \subsection{Das Transport Layer
 | |
|         Security-Protokoll}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               1996 gründete die IETF eine Arbeitsgruppe zur Definition eines
 | |
|               Transport Layer Security (TLS) Protokolls:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Offiziell wurde angekündigt, die Protokolle SSL, SSH und PCT als
 | |
|                         Input zu nehmen.
 | |
|                   \item
 | |
|                         Der im Dezember 1996 veröffentlichte Entwurf der TLS
 | |
|                         V.1.0-Spezifikation war jedoch im Wesentlichen identisch mit der SSL
 | |
|                         V.3.0-Spezifikation
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Eigentlich war es von Anfang an die Absicht der Arbeitsgruppe, TLS auf
 | |
|               SSL V.3.0 mit den folgenden Änderungen aufzubauen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die HMAC-Konstruktion zur Berechnung kryptographischer Hash-Werte
 | |
|                         sollte anstelle von Hashing im Präfix- und Suffix-Modus übernommen
 | |
|                         werden.
 | |
|                   \item
 | |
|                         Die auf Fortezza basierenden Chiffrier-Suiten von SSL sollten
 | |
|                         entfernt werden, da sie eine unveröffentlichte Technologie enthalten
 | |
|                   \item
 | |
|                         Ein auf dem DSS (Digital Signature Standard) basierender Dialog zur
 | |
|                         Authentifizierung und zum Schlüsselaustausch sollte aufgenommen
 | |
|                         werden.
 | |
|                   \item
 | |
|                         Das TLS-Record-Protokoll und das Handshake-Protokoll sollten
 | |
|                         getrennt und in separaten Dokumenten klarer spezifiziert werden, was
 | |
|                         bisher nicht geschehen ist.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Um die Exportfähigkeit von TLS-konformen Produkten zu erreichen, wurde
 | |
|               in einigen Chiffriersuiten die Verwendung von Schlüsseln mit einer auf
 | |
|               40 Bit reduzierten Entropie vorgeschrieben.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Von der Verwendung dieser Cipher-Suites wird dringend abgeraten, da
 | |
|                         sie praktisch keinen Schutz der Vertraulichkeit von Daten bieten.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Ab TLS 1.2 (RFC 5246):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schlüsselaustausch-Algorithmen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   DH oder ECDH Austausch ohne oder mit DSS / RSA / ECDSA Signaturen
 | |
|                             \item
 | |
|                                   DH-Austausch mit zertifizierten öffentlichen DH-Parametern
 | |
|                             \item
 | |
|                                   RSA-basierter Schlüsselaustausch
 | |
|                             \item
 | |
|                                   keine
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Verschlüsselungsalgorithmen: AES / 3DES in CBC / CCM /GCM, RC4, null
 | |
|                   \item
 | |
|                         Hash-Algorithmen: MD5, SHA-1, SHA-256, SHA-384, SHA-512, null
 | |
|                   \item
 | |
|                         Premaster Secret: Keine MD5/SHA-1 Kombination, sondern nur SHA-256!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Was die Protokollfunktionen betrifft, ist TLS im Wesentlichen dasselbe
 | |
|               wie SSL
 | |
|         \item
 | |
|               Sicherheit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         In SSL 3.0 und TLS 1.0 ist der Initialisierungsvektor eines im
 | |
|                         CBC-Modus verschlüsselten Datensatzes der letzte Block des
 | |
|                         vorherigen Datensatzes
 | |
|                   \item
 | |
|                         Wenn ein Angreifer den Inhalt des vorherigen Datensatzes
 | |
|                         kontrolliert, kann er einen adaptiven Klartextangriff durchführen,
 | |
|                         um den Inhalt des nächsten Datensatzes herauszufinden.
 | |
|                   \item
 | |
|                         Durchführbar für Webverkehr, d. h. Erzeugen von Verkehr mit
 | |
|                         JavaScript und Beobachten von außen, führt zum sogenannten
 | |
|                         BEAST-Angriff (Browser Exploit Against SSL/TLS) {[}RD10{]}.
 | |
|                   \item
 | |
|                         Auch für VPN-Verkehr machbar
 | |
|                   \item
 | |
|                         Abgeschwächt durch TLS 1.1, wo explizite IVs verwendet werden
 | |
|                   \item
 | |
|                         2009 wurde eine sogenannte TLS-Neuverhandlungsschwachstelle
 | |
|                         identifiziert
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Angreifer können sie nutzen, um einer legitimen Sitzung durch
 | |
|                                   einen Man-in-the-Middle-Angriff Daten voranzustellen (Details in
 | |
|                                   {[}Zo11{]})
 | |
|                             \item
 | |
|                                   Die Auswirkungen hängen stark von dem verwendeten
 | |
|                                   Anwendungsprotokoll ab
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Bei HTTPS führt dies zu mehreren Ausnutzungsmöglichkeiten, z. B,
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Angreifer injeziert:
 | |
|                                   \texttt{GET\ /ebanking/transfer?what=LotsOfMoney\&to=eve\ HTTP/1.1\ \textless{}crlf\textgreater{}\ X-Ignore:\ \textless{}no\ crlf\textgreater{}}
 | |
|                             \item
 | |
|                                   Alice sendet: \texttt{GET\ /ebanking/start.html\ HTTP/1.1}
 | |
|                             \item
 | |
|                                   Die Anfrage wird in eine valide HTTP Anfrage umgewandelt:
 | |
|                                   \texttt{GET\ /ebanking/transfer?what=LotsOfMoney\&to=eve\ HTTP/1.1\ \textless{}crlf\textgreater{}\ X-Ignore:\ GET\ /ebanking/start.html\ HTTP/1.1}
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Abgeschwächt durch Identifizierung neu ausgehandelter Sitzungen mit
 | |
|                         einer anderen ID {[}RRDO10{]}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Das Datagram Transport Layer Security
 | |
|         Protokoll}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               TLS bietet sichere Kommunikation über ein zuverlässiges
 | |
|               Transportprotokoll
 | |
|         \item
 | |
|               DTLS ist so angepasst, dass es über unzuverlässige Transportprotokolle
 | |
|               wie z.B. UDP funktioniert
 | |
|         \item
 | |
|               Wird zum Schutz verwendet:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Sprach- und Videodaten in Echtzeit, insbesondere Voice-over-IP
 | |
|                   \item
 | |
|                         Getunnelte TCP-Daten (da TCP über TCP eine schlechte Idee für die
 | |
|                         Leistung ist)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               DTLS basiert derzeit auf TLS 1.2, enthält jedoch einige Änderungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Bietet
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Nachrichtenwiederholungen, um verlorenen Handshake-Paketen
 | |
|                                   entgegenzuwirken
 | |
|                             \item
 | |
|                                   Eigener Fragmentierungsmechanismus, um große Handshake-Pakete zu
 | |
|                                   ermöglichen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Hinzufügen von Sequenznummern, um neu geordnete Datenpakete zu
 | |
|                         ermöglichen (und Verbot von Stromchiffren, z. B. RC4)
 | |
|                   \item
 | |
|                         Fügt einen Mechanismus hinzu, um zu erkennen, dass ein Client die
 | |
|                         ,,Verbindung'' mit denselben Ports neu gestartet hat (z. B. nach
 | |
|                         einem Anwendungsabsturz)
 | |
|                   \item
 | |
|                         Fügt einen Wiedergabeschutz durch ein gleitendes Fenster hinzu (wie
 | |
|                         bei IPsec)
 | |
|                   \item
 | |
|                         Fügt eine Cookie-basierte DoS-Abwehr hinzu (wie bei IKEv2)
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Das Secure
 | |
|         Shell-Protokoll}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Secure Shell (SSH) Version 1 wurde ursprünglich von Tatu Ylönen an der
 | |
|               Universität Helsinki in Finnland entwickelt.
 | |
|         \item
 | |
|               Da der Autor auch eine kostenlose Implementierung mit Quellcode zur
 | |
|               Verfügung stellte, fand das Protokoll weite Verbreitung im Internet
 | |
|         \item
 | |
|               Später wurde die Entwicklung von SSH durch den Autor kommerzialisiert.
 | |
|         \item
 | |
|               Nichtsdestotrotz sind immer noch kostenlose Versionen verfügbar, wobei
 | |
|               die am weitesten verbreitete Version OpenSSH ist
 | |
|         \item
 | |
|               1997 wurde eine Spezifikation der Version 2.0 von SSH bei der IETF
 | |
|               eingereicht und seitdem in einer Reihe von Internet-Entwürfen
 | |
|               verfeinert
 | |
|         \item
 | |
|               SSH wurde ursprünglich entwickelt, um einen sicheren Ersatz für die
 | |
|               Unix r-Tools (rlogin, rsh, rcp und rdist) zu bieten, und stellt somit
 | |
|               ein Protokoll der Anwendungs- oder Sitzungsschicht dar.
 | |
|         \item
 | |
|               Da SSH jedoch auch ein allgemeines Sicherheitsprotokoll der
 | |
|               Transportschicht enthält und Tunneling-Fähigkeiten bietet, wird es in
 | |
|               diesem Kapitel als Sicherheitsprotokoll der Transportschicht behandelt
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSH Version 2}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               SSH Version 2 ist in mehreren separaten Dokumenten spezifiziert, z.B.:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         SSH Protocol Assigned Numbers {[}LL06{]}
 | |
|                   \item
 | |
|                         SSH-Protokollarchitektur {[}YL06a{]}
 | |
|                   \item
 | |
|                         SSH-Authentifizierungsprotokoll {[}YL06b{]}
 | |
|                   \item
 | |
|                         SSH-Transportschichtprotokoll {[}YL06c{]}
 | |
|                   \item
 | |
|                         SSH-Verbindungsprotokoll {[}YL06d{]}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               SSH-Architektur:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         SSH verfolgt einen Client-Server-Ansatz
 | |
|                   \item
 | |
|                         Jeder SSH-Server hat mindestens einen Host-Schlüssel
 | |
|                   \item
 | |
|                         SSH Version 2 bietet zwei verschiedene Vertrauensmodelle:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Jeder Client hat eine lokale Datenbank, die jeden Hostnamen mit
 | |
|                                   dem entsprechenden öffentlichen Hostschlüssel verknüpft
 | |
|                             \item
 | |
|                                   Die Zuordnung von Hostname zu öffentlichem Schlüssel wird von
 | |
|                                   einer Zertifizierungsstelle zertifiziert, und jeder Client kennt
 | |
|                                   den öffentlichen Schlüssel der Zertifizierungsstelle
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Das Protokoll ermöglicht die vollständige Aushandlung von
 | |
|                         Algorithmen und Formaten für Verschlüsselung, Integrität,
 | |
|                         Schlüsselaustausch, Komprimierung und öffentliche Schlüssel
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSH-Transportprotokoll}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               SSH verwendet ein zuverlässiges Transportprotokoll (normalerweise
 | |
|               TCP).
 | |
|         \item
 | |
|               Es bietet die folgenden Dienste:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verschlüsselung von Benutzerdaten
 | |
|                   \item
 | |
|                         Authentifizierung der Datenherkunft (Integrität)
 | |
|                   \item
 | |
|                         Server-Authentifizierung (nur Host-Authentifizierung)
 | |
|                   \item
 | |
|                         Komprimierung der Benutzerdaten vor der Verschlüsselung
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Unterstützte Algorithmen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verschlüsselung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   AES, 3DES, Blowfish, Twofish, Serpent, IDEA und CAST in CBC
 | |
|                             \item
 | |
|                                   AES in GCM {[}IS09{]}
 | |
|                             \item
 | |
|                                   Arcfour (,,vermutlich'' kompatibel mit dem ,,unveröffentlichten''
 | |
|                                   RC4)
 | |
|                             \item
 | |
|                                   keine (nicht empfohlen)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Integrität:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   HMAC mit MD5, SHA-1, SHA-256 oder SHA-512
 | |
|                             \item
 | |
|                                   keine (nicht empfohlen)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Schlüsselaustausch:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Diffie-Hellman mit SHA-1 und zwei vordefinierten Gruppen
 | |
|                             \item
 | |
|                                   ECDH mit mehreren vordefinierten NIST-Gruppen {[}SG09{]}
 | |
|                                   (obligatorisch drei Kurven über $\mathbb{Z}_p$)
 | |
|                             \item
 | |
|                                   Öffentlicher Schlüssel: RSA, DSS, ECC (in mehreren Varianten
 | |
|                                   {[}SG09{]})
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Komprimierung: keine, zlib (siehe RFCs 1950, 1951)
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSH-Transportprotokoll
 | |
|         Paketformat}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-ssh-transport-protocol-packet.png}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Das Paketformat ist nicht 32-Bit-wortorientiert
 | |
|         \item
 | |
|               Felder des Pakets:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Paketlänge: die Länge des Pakets selbst, ohne dieses Längenfeld und
 | |
|                         den MAC
 | |
|                   \item
 | |
|                         Padding length: Länge des Padding-Feldes, muss zwischen vier und 255
 | |
|                         liegen
 | |
|                   \item
 | |
|                         Payload: die eigentliche Nutzlast des Pakets, wenn Komprimierung
 | |
|                         ausgehandelt wurde, wird dieses Feld komprimiert
 | |
|                   \item
 | |
|                         Padding: dieses Feld besteht aus zufällig ausgewählten Oktetten, um
 | |
|                         die Nutzlast auf ein ganzzahliges Vielfaches von 8 oder der
 | |
|                         Blockgröße des Verschlüsselungsalgorithmus aufzufüllen, je nachdem,
 | |
|                         welcher Wert größer ist
 | |
|                   \item
 | |
|                         MAC: Wurde die Nachrichtenauthentifizierung ausgehandelt, enthält
 | |
|                         dieses Feld den MAC des gesamten Pakets ohne das MAC-Feld selbst;
 | |
|                         soll das Paket verschlüsselt werden, wird der MAC vor der
 | |
|                         Verschlüsselung wie folgt berechnet
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   MAC = HMAC(shared\_secret, seq\_number \textbar\textbar{}
 | |
|                                   unencrypted\_packet), wobei seq\_number eine 32-Bit-Sequenznummer
 | |
|                                   für jedes Paket bezeichnet
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Verschlüsselung: wenn Verschlüsselung ausgehandelt wird, wird das
 | |
|               gesamte Paket ohne MAC nach der MAC-Berechnung verschlüsselt
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSH-Aushandlung, Schlüsselaustausch und
 | |
|         Server-Authentifizierung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Algorithmus-Aushandlung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Jede Entität sendet ein Paket (bezeichnet als kexinit ) mit einer
 | |
|                         Spezifikation der von ihr unterstützten Methoden in der Reihenfolge
 | |
|                         ihrer Präferenz
 | |
|                   \item
 | |
|                         Beide Entitäten iterieren über die Liste des Clients und wählen den
 | |
|                         ersten Algorithmus, der auch vom Server unterstützt wird
 | |
|                   \item
 | |
|                         Diese Methode wird verwendet, um Folgendes auszuhandeln:
 | |
|                         Server-Host-Schlüssel-Algorithmus (\textasciitilde{}
 | |
|                         Server-Authentifizierung) sowie Verschlüsselungs-, MAC- und
 | |
|                         Kompressionsalgorithmus
 | |
|                   \item
 | |
|                         Zusätzlich kann jede Entität ein Schlüsselaustauschpaket
 | |
|                         entsprechend einer Vermutung über den bevorzugten
 | |
|                         Schlüsselaustauschalgorithmus der anderen Entität anhängen
 | |
|                   \item
 | |
|                         Ist eine Vermutung richtig, wird das entsprechende
 | |
|                         Schlüsselaustauschpaket als erstes Schlüsselaustauschpaket der
 | |
|                         anderen Entität akzeptiert
 | |
|                   \item
 | |
|                         Falsche Vermutungen werden ignoriert und neue
 | |
|                         Schlüsselaustauschpakete werden nach Aushandlung des Algorithmus
 | |
|                         gesendet
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Für den Schlüsselaustausch definiert {[}YL06c{]} nur eine Methode:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Diffie-Hellman mit SHA-1 und zwei vordefinierten Gruppen (1024 und
 | |
|                         2048 Bit)
 | |
|                   \item
 | |
|                         Z.B. \$p = 2\^{}\{1024\} -2\^{}\{960\} - 1 +
 | |
|                         (2\^{}\{64\}\textbackslash times \textbackslash lfloor 2894
 | |
|                         \textbackslash times \textbackslash pi +
 | |
|                         129093\textbackslash rfloor); g = 2\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wenn der Schlüsselaustausch mit der vordefinierten DH-Gruppe
 | |
|               durchgeführt wird:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Client wählt eine Zufallszahl \$x\$, berechnet
 | |
|                         \$e=g\^{}x\textbackslash{} mod\textbackslash{} p\$ und sendet \$e\$
 | |
|                         an den Server
 | |
|                   \item
 | |
|                         Der Server wählt eine Zufallszahl \$y\$, errechnet
 | |
|                         \$f=g\^{}y\textbackslash{} mod\textbackslash{} p\$
 | |
|                   \item
 | |
|                         Nach dem Empfang von \$e\$ berechnet der Server ferner
 | |
|                         \$K=e\^{}y\textbackslash{} mod\textbackslash{} p\$ und einen
 | |
|                         Hash-Wert \$h = Hash(version\_C, version\_S, kexinit\_C, kexinit\_S,
 | |
|                         +K\_S, e, f, K)\$, wobei version und kexinit die
 | |
|                         Versionsinformationen des Clients und des Servers sowie die
 | |
|                         anfänglichen Algorithmus-Aushandlungsmeldungen bezeichnen
 | |
|                   \item
 | |
|                         Der Server signiert h mit seinem privaten Host-Schlüssel - KS und
 | |
|                         sendet dem Client eine Nachricht mit \$(+K\_S, f, s)\$.
 | |
|                   \item
 | |
|                         Beim Empfang prüft der Client den Host-Schlüssel \$+K\_S\$,
 | |
|                         berechnet \$K=f\^{}x\textbackslash{} mod\textbackslash{} p\$ sowie
 | |
|                         den Hash-Wert \$h\$ und prüft dann die Signatur \$s\$ über \$h\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nach diesen Prüfungen kann der Client sicher sein, dass er tatsächlich
 | |
|               ein geheimes K mit dem Host ausgehandelt hat, der \$-K\_S\$ kennt.
 | |
|         \item
 | |
|               Der Server-Host kann jedoch keine Rückschlüsse auf die Authentizität
 | |
|               des Clients ziehen; zu diesem Zweck wird das
 | |
|               SSH-Authentifizierungsprotokoll verwendet
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSH-Sitzungsschlüssel-Ableitung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Methode des Schlüsselaustauschs ermöglicht es, ein gemeinsames
 | |
|               Geheimnis K und den Hash-Wert h zu ermitteln, die zur Ableitung der
 | |
|               SSH-Sitzungsschlüssel verwendet werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Hashwert h des anfänglichen Schlüsselaustauschs wird auch als
 | |
|                         session\_id verwendet
 | |
|                   \item
 | |
|                         \$IV\_\{Client2Server\}\$ = Hash(K, h, ,,A'', session\_id) //
 | |
|                         Initialisierungsvektor
 | |
|                   \item
 | |
|                         \$IV\_\{Server2Client\}\$ = Hash(K, h, ,,B'', session\_id) //
 | |
|                         Initialisierungsvektor
 | |
|                   \item
 | |
|                         \$EK\_\{Client2Server\}\$ = Hash(K, h, ,,C'', session\_id) //
 | |
|                         Verschlüsselungsschlüssel
 | |
|                   \item
 | |
|                         \$EK\_\{Server2Client\}\$ = Hash(K, h, ,,D'', session\_id) //
 | |
|                         Chiffrierschlüssel
 | |
|                   \item
 | |
|                         \$IK\_\{Client2Server\}\$ = Hash(K, h, ,,E'', session\_id) //
 | |
|                         Integritätsschlüssel
 | |
|                   \item
 | |
|                         \$IK\_\{Server2Client\}\$ = Hash(K, h, ,,F'', session\_id) //
 | |
|                         Integritätsschlüssel
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Schlüsseldaten werden am Anfang der Hash-Ausgabe entnommen
 | |
|         \item
 | |
|               Wenn mehr Schlüsselbits benötigt werden als von der Hash-Funktion
 | |
|               erzeugt werden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         K1 = Hash(K, h, x, session\_id) // x = ,,A'', ,,B'', usw.
 | |
|                   \item
 | |
|                         K2 = Hash(K, h, K1)
 | |
|                   \item
 | |
|                         K2 = Hash(K, h, K1, K2)
 | |
|                   \item
 | |
|                         XK = K1 \textbar\textbar{} K2 \textbar\textbar{} ...
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSH-Authentifizierungsprotokoll}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Das SSH-Authentifizierungsprotokoll dient zur Überprüfung der
 | |
|               Identität des Clients und ist für die Ausführung über das
 | |
|               SSH-Transportprotokoll vorgesehen
 | |
|         \item
 | |
|               Das Protokoll unterstützt standardmäßig die folgenden
 | |
|               Authentifizierungsmethoden:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Öffentlicher Schlüssel: Der Benutzer erzeugt und sendet eine
 | |
|                         Signatur mit einem öffentlichen Schlüssel pro Benutzer an den Server
 | |
|                   \item
 | |
|                         \$Client\textbackslash rightarrow Server: E(-K\_\{Benutzer\},
 | |
|                         (session\_id, 50, Name\_\{Benutzer\}, Service, ,,publickey'', True,
 | |
|                         PublicKeyAlgorithmName, +K\_\{Benutzer\}))\$
 | |
|                   \item
 | |
|                         Kennwort: Übertragung eines Kennworts pro Benutzer in der
 | |
|                         verschlüsselten SSH-Sitzung (das Kennwort wird dem Server im
 | |
|                         Klartext präsentiert, aber mit Verschlüsselung des
 | |
|                         SSH-Transportprotokolls übertragen)
 | |
|                   \item
 | |
|                         Host-basiert: analog zum öffentlichen Schlüssel, aber mit einem
 | |
|                         öffentlichen Schlüssel pro Host
 | |
|                   \item
 | |
|                         Keine: wird verwendet, um den Server nach unterstützten Methoden zu
 | |
|                         fragen und wenn keine Authentifizierung erforderlich ist (der Server
 | |
|                         antwortet direkt mit einer Erfolgsmeldung)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wenn die Authentifizierungsnachricht des Clients erfolgreich geprüft
 | |
|               wurde, antwortet der Server mit einer
 | |
|               ssh\_msg\_userauth\_success-Nachricht
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSH-Verbindungsprotokoll}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Das SSH-Verbindungsprotokoll läuft auf dem SSH-Transportprotokoll und
 | |
|               bietet folgende Dienste:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Interaktive Anmeldesitzungen
 | |
|                   \item
 | |
|                         Fernausführung von Befehlen
 | |
|                   \item
 | |
|                         Weitergeleitete TCP/IP-Verbindungen
 | |
|                   \item
 | |
|                         Weitergeleitete X11-Verbindungen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Für jeden der oben genannten Dienste werden ein oder mehrere
 | |
|               ,,Kanäle'' eingerichtet, und alle Kanäle werden in eine einzige
 | |
|               verschlüsselte und integritätsgeschützte
 | |
|               SSH-Transportprotokollverbindung gemultiplext:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beide Seiten können die Eröffnung eines Kanals beantragen, und die
 | |
|                         Kanäle werden durch Nummern beim Sender und beim Empfänger
 | |
|                         gekennzeichnet.
 | |
|                   \item
 | |
|                         Kanäle sind typisiert, z. B. ,,session'', ,,x11'',
 | |
|                         ,,forwarded-tcpip'', ,,direct-tcpip'' ...
 | |
|                   \item
 | |
|                         Kanäle werden durch einen Fenstermechanismus kontrolliert, und es
 | |
|                         dürfen keine Daten über einen Kanal gesendet werden, bevor ,,window
 | |
|                         space'' verfügbar ist
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Öffnen eines Kanals:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Beide Seiten können die Nachricht ssh\_msg\_channel\_open senden,
 | |
|                         die mit dem Nachrichtencode 90 und den folgenden Parametern
 | |
|                         signalisiert wird:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Kanaltyp: ist vom Datentyp String, z.B. ,,session'', ,,x11'', etc.
 | |
|                             \item
 | |
|                                   Absenderkanal: ist ein lokaler Bezeichner vom Typ uint32 und wird
 | |
|                                   vom Anforderer dieses Kanals gewählt
 | |
|                             \item
 | |
|                                   initial window size: ist vom Typ uint32 und gibt an, wie viele
 | |
|                                   Bytes an den Initiator gesendet werden dürfen, bevor das Fenster
 | |
|                                   vergrößert werden muss
 | |
|                             \item
 | |
|                                   maximale Paketgröße: ist vom Typ uint32 und legt die maximale
 | |
|                                   Paketgröße fest, die der Initiator für diesen Kanal zu akzeptieren
 | |
|                                   bereit ist
 | |
|                             \item
 | |
|                                   weitere Parameter, die vom Typ des Kanals abhängen, können folgen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Wenn der Empfänger dieser Nachricht die Kanalanfrage nicht annehmen
 | |
|                         will, antwortet er mit der Nachricht
 | |
|                         ssh\_msg\_channel\_open\_failure (Code 92):
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Empfängerkanal: die vom Absender in der Öffnungsanfrage angegebene
 | |
|                                   ID
 | |
|                             \item
 | |
|                                   reason code: ist vom Typ uint32 und gibt den Grund für die
 | |
|                                   Ablehnung an
 | |
|                             \item
 | |
|                                   additional textual information: ist vom Typ string
 | |
|                             \item
 | |
|                                   language tag: ist vom Typ string und entspricht dem RFC 1766
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Wenn der Empfänger dieser Nachricht die Kanalanfrage annehmen will,
 | |
|                         antwortet er mit der Nachricht ssh\_msg\_channel\_open\_confirmation
 | |
|                         (Code 91) und den folgenden Parametern
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Empfänger-Kanal: die vom Absender in der Öffnungsanforderung
 | |
|                                   angegebene ID
 | |
|                             \item
 | |
|                                   Absenderkanal: die dem Kanal vom Antwortenden gegebene Kennung
 | |
|                             \item
 | |
|                                   initial window size: ist vom Typ uint32 und gibt an, wie viele
 | |
|                                   Bytes an den Responder gesendet werden können, bevor das Fenster
 | |
|                                   vergrößert werden muss
 | |
|                             \item
 | |
|                                   maximum packet size: ist vom Typ uint32 und legt die maximale
 | |
|                                   Paketgröße fest, die der Responder für diesen Kanal zu akzeptieren
 | |
|                                   bereit ist
 | |
|                             \item
 | |
|                                   weitere Parameter, die vom Kanaltyp abhängen, können folgen
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sobald ein Kanal geöffnet ist, sind die folgenden Aktionen möglich:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Datenübertragung (allerdings sollte die empfangende Seite wissen,
 | |
|                         ,,was mit den Daten zu tun ist'', was eine weitere vorherige
 | |
|                         Aushandlung erfordern kann)
 | |
|                   \item
 | |
|                         Kanaltypspezifische Anfragen
 | |
|                   \item
 | |
|                         Schließung des Kanals
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Für die Datenübertragung sind die folgenden Nachrichten definiert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         ssh\_msg\_channel\_data: mit den beiden Parametern Empfängerkanal,
 | |
|                         Daten
 | |
|                   \item
 | |
|                         ssh\_msg\_channel\_extended\_data: erlaubt die zusätzliche Angabe
 | |
|                         eines Datentypcodes und ist nützlich, um Fehler zu signalisieren,
 | |
|                         z.B. bei interaktiven Shells
 | |
|                   \item
 | |
|                         ssh\_msg\_channel\_window\_adjust: erlaubt es, das
 | |
|                         Flusskontrollfenster des Empfängerkanals um die angegebene Anzahl
 | |
|                         von Bytes zu erweitern
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Schließen von Kanälen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Wenn eine Peer-Entität keine Daten mehr an einen Kanal senden will,
 | |
|                         sollte sie dies der anderen Seite mit der Nachricht
 | |
|                         ssh\_msg\_channel\_eof signalisieren
 | |
|                   \item
 | |
|                         Wenn eine der beiden Seiten einen Kanal beenden möchte, sendet sie
 | |
|                         die Nachricht ssh\_msg\_channel\_close mit dem Parameter recipient
 | |
|                         channel
 | |
|                   \item
 | |
|                         Beim Empfang der Nachricht ssh\_msg\_channel\_close muss eine
 | |
|                         Peer-Entität mit einer ähnlichen Nachricht antworten, es sei denn,
 | |
|                         sie hat bereits die Schließung dieses Kanals beantragt.
 | |
|                   \item
 | |
|                         Sowohl nach dem Empfang als auch nach dem Senden der Nachricht
 | |
|                         ssh\_msg\_channel\_close für einen bestimmten Kanal kann die ID
 | |
|                         dieses Kanals wiederverwendet werden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kanaltypspezifische Anfragen erlauben es, bestimmte Eigenschaften
 | |
|               eines Kanals anzufordern, z. B. dass die empfangende Seite weiß, wie
 | |
|               sie die über diesen Kanal gesendeten Daten verarbeiten soll, und
 | |
|               werden mit signalisiert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         ssh\_msg\_channel\_request: mit den Parametern recipient channel,
 | |
|                         request type (string), want reply (bool) und weiteren
 | |
|                         anfragespezifischen Parametern
 | |
|                   \item
 | |
|                         ssh\_msg\_channel\_success: mit dem Parameter recipient channel
 | |
|                   \item
 | |
|                         ssh\_msg\_channel\_failure: mit dem Parameter recipient channel
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Beispiel 1 - Anfordern einer interaktiven Sitzung und Starten einer
 | |
|               Shell darin:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Zunächst wird ein Kanal vom Typ ,,session'' geöffnet
 | |
|                   \item
 | |
|                         Ein Pseudo-Terminal wird angefordert, indem eine
 | |
|                         ssh\_msg\_channel\_request-Nachricht gesendet wird, wobei der
 | |
|                         Anforderungstyp auf ,,pty-req'' gesetzt wird
 | |
|                   \item
 | |
|                         Falls erforderlich, können Umgebungsvariablen gesetzt werden, indem
 | |
|                         ssh\_msg\_channel\_request-Nachrichten mit dem Anforderungstyp
 | |
|                         ,,env'' gesendet werden.
 | |
|                   \item
 | |
|                         Dann wird der Start eines Shell-Prozesses über eine
 | |
|                         ssh\_msg\_channel\_request-Nachricht mit dem Request-Typ ,,shell''
 | |
|                         gefordert (dies führt normalerweise zum Start der Standard-Shell für
 | |
|                         den Benutzer, wie sie in /etc/passwd definiert ist)
 | |
|                   \item
 | |
|                         Anfordern einer interaktiven Sitzung und Starten einer Shell darin:
 | |
|                         \textbar{} SSH Client \textbar{} \textbar{} SSH Server \textbar{}
 | |
|                         \textbar{}
 | |
|                         -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-
 | |
|                         \textbar{} -\/-\/-\/- \textbar{}
 | |
|                         -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-
 | |
|                         \textbar{} \textbar{} ssh\_msg\_channel\_open (,,session'', 20,
 | |
|                         2048, 512) \textbar{} -\/-\/-\textgreater{} \textbar{} \textbar{}
 | |
|                         \textbar{} \textless-\/-\/- \textbar{}
 | |
|                         ssh\_msg\_channel\_open\_confirmation(20, 31, 1024, 256) \textbar{}
 | |
|                         \textbar{} ssh\_msg\_channel\_request (31, ,,pty-req'', false, ...)
 | |
|                         \textbar{} -\/-\/-\textgreater{} \textbar{} \textbar{}
 | |
|                         ssh\_msg\_channel\_request (31, ,,env'', false, ,,home'',
 | |
|                         ,,/home/username'') \textbar{} -\/-\/-\textgreater{} \textbar{}
 | |
|                         \textbar{} ssh\_msg\_channel\_request (31, ,,shell'', true, ...)
 | |
|                         \textbar{} -\/-\/-\textgreater{} \textbar{} \textbar{} \textbar{}
 | |
|                         \textless-\/-\/- \textbar{} ssh\_msg\_channel\_success(20)
 | |
|                         \textbar{}
 | |
| 
 | |
|                         {[}Nutzdatenaustausch findet ab jetzt statt...{]}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{SSH-Verbindungsprotokoll
 | |
|         II}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Beispiel 2 - Anforderung der X11-Weiterleitung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Zuerst wird ein Kanal des Typs ,,session'' geöffnet
 | |
|                   \item
 | |
|                         Die X11-Weiterleitung wird durch Senden einer
 | |
|                         ssh\_msg\_channel\_request-Nachricht mit dem Anforderungstyp
 | |
|                         ,,x11-req'' angefordert
 | |
|                   \item
 | |
|                         Wenn später eine Anwendung auf dem Server gestartet wird, die auf
 | |
|                         das Terminal des Client-Rechners zugreifen muss (der X11-Server, der
 | |
|                         auf dem Client-Rechner läuft), wird ein neuer Kanal über
 | |
|                         ssh\_msg\_channel\_open geöffnet, wobei der Kanaltyp auf ,,x11'' und
 | |
|                         die IP-Adresse und Portnummer des Absenders als zusätzliche
 | |
|                         Parameter gesetzt werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Beispiel 3 - Einrichtung einer TCP/IP-Portweiterleitung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Eine Partei muss die Portweiterleitung von ihrem eigenen Ende in die
 | |
|                         andere Richtung nicht explizit anfordern. Wenn sie jedoch
 | |
|                         Verbindungen zu einem Port auf der anderen Seite an ihre eigene
 | |
|                         Seite weiterleiten lassen möchte, muss sie dies explizit über eine
 | |
|                         ssh\_msg\_global\_request-Nachricht mit den Parametern
 | |
|                         ,,tcpip-forward'', want-reply, zu bindende Adresse (,,0.0.0.0'' für
 | |
|                         jede Quelladresse) und zu bindende Portnummer anfordern (diese
 | |
|                         Anforderung wird normalerweise vom Client gesendet)
 | |
|                   \item
 | |
|                         Wenn eine Verbindung zu einem Port kommt, für den eine Weiterleitung
 | |
|                         angefordert wurde, wird ein neuer Kanal über ssh\_msg\_channel\_open
 | |
|                         mit dem Typ ,,forwarded-tcpip'' und den Adressen des Ports, der
 | |
|                         verbunden wurde, sowie des ursprünglichen Quellports als Parameter
 | |
|                         geöffnet (diese Nachricht wird normalerweise vom Server gesendet)
 | |
|                   \item
 | |
|                         Wenn eine Verbindung zu einem (Client-)Port kommt, der lokal als
 | |
|                         weitergeleitet eingestellt ist, wird ein neuer Kanal angefordert,
 | |
|                         wobei der Typ auf ,,direct-tcpip'' gesetzt wird und die folgenden
 | |
|                         Adressinformationen in zusätzlichen Parametern angegeben werden:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   host to connect, port to connect: Adresse, mit der der Empfänger
 | |
|                                   diesen Kanal verbinden soll
 | |
|                             \item
 | |
|                                   Absender-IP-Adresse, Absender-Port: Quelladresse der Verbindung
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Schlussfolgerung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Sowohl SSL, TLS als auch SSH eignen sich für die Sicherung der
 | |
|               Internet-Kommunikation in der (oberen) Transportschicht:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Alle drei Sicherheitsprotokolle arbeiten mit einem zuverlässigen
 | |
|                         Transportdienst, z. B. TCP, und benötigen diesen.
 | |
|                   \item
 | |
|                         Es gibt eine datagrammorientierte Variante von TLS, genannt DTLS
 | |
|                   \item
 | |
|                         Obwohl SSH in / oberhalb der Transportschicht arbeitet, ist die
 | |
|                         Server-Authentifizierung hostbasiert und nicht anwendungsbasiert.
 | |
|                   \item
 | |
|                         Sicherheitsprotokolle der Transportschicht bieten echten
 | |
|                         End-to-End-Schutz für Benutzerdaten, die zwischen
 | |
|                         Anwendungsprozessen ausgetauscht werden.
 | |
|                   \item
 | |
|                         Außerdem können sie mit der Paketfilterung der heutigen Firewalls
 | |
|                         zusammenarbeiten.
 | |
|                   \item
 | |
|                         Die Protokoll-Header-Felder von Protokollen der unteren Schicht
 | |
|                         können jedoch nicht auf diese Weise geschützt werden, so dass sie
 | |
|                         keine Gegenmaßnahmen für Bedrohungen der Netzinfrastruktur selbst
 | |
|                         bieten.
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Sicherheitsaspekte der mobilen
 | |
|       Kommunikation}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die mobile Kommunikation ist mit den gleichen Bedrohungen konfrontiert
 | |
|               wie ihr stationäres Pendant:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Maskerade, Abhören, Verletzung von Berechtigungen, Verlust oder
 | |
|                         Veränderung von übertragenen Informationen, Ablehnung von
 | |
|                         Kommunikationsakten, Fälschung von Informationen, Sabotage
 | |
|                   \item
 | |
|                         Es müssen also ähnliche Maßnahmen wie in Festnetzen ergriffen
 | |
|                         werden.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Es gibt jedoch einige spezifische Probleme, die sich aus der Mobilität
 | |
|               von Benutzern und/oder Geräten ergeben:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Einige bereits bestehende Bedrohungen werden noch gefährlicher:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die drahtlose Kommunikation ist für Abhörmaßnahmen leichter
 | |
|                                   zugänglich.
 | |
|                             \item
 | |
|                                   Das Fehlen einer physischen Verbindung macht den Zugang zu
 | |
|                                   Diensten einfacher
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Einige neue Schwierigkeiten bei der Realisierung von
 | |
|                         Sicherheitsdiensten:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die Authentifizierung muss neu eingerichtet werden, wenn das
 | |
|                                   mobile Gerät umzieht.
 | |
|                             \item
 | |
|                                   Die Schlüsselverwaltung wird schwieriger, da die Identitäten der
 | |
|                                   Peers nicht im Voraus festgelegt werden können.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Eine völlig neue Bedrohung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der Standort eines Geräts/Nutzers wird zu einer wichtigeren
 | |
|                                   Information, die abzuhören und damit zu schützen sich lohnt
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Standortdatenschutz in
 | |
|         Mobilfunknetzen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               In den heutigen Mobilfunknetzen gibt es keinen angemessenen Schutz des
 | |
|               Standortes:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         GSM / UMTS / LTE:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Aktive Angreifer können IMSIs auf der Luftschnittstelle sammeln
 | |
|                             \item
 | |
|                                   Die Betreiber des besuchten Netzes können den Standort der Nutzer
 | |
|                                   teilweise verfolgen.
 | |
|                             \item
 | |
|                                   Die Betreiber des Heimatnetzes können den Standort des Nutzers
 | |
|                                   vollständig verfolgen.
 | |
|                             \item
 | |
|                                   Zumindest kommunizierende Endsysteme können den Standort eines
 | |
|                                   mobilen Geräts jedoch nicht in Erfahrung bringen
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Drahtloses LAN:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Kein Datenschutz für den Standort, da die (weltweit eindeutige)
 | |
|                         MAC-Adresse in jedem MAC-Frame immer im Klartext enthalten ist
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Das grundlegende Problem des Datenschutzes:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Ein mobiles Gerät sollte erreichbar sein
 | |
|                   \item
 | |
|                         Keine (einzelne) Entität im Netz sollte in der Lage sein, den
 | |
|                         Standort eines mobilen Geräts zu verfolgen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Einige grundlegende Ansätze zur Lösung dieses Problems
 | |
|               {[}Müller99a{]}:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Broadcast von Nachrichten:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Jede Nachricht wird an jeden möglichen Empfänger gesendet
 | |
|                             \item
 | |
|                                   Wenn Vertraulichkeit erforderlich ist, wird die Nachricht
 | |
|                                   asymmetrisch verschlüsselt
 | |
|                             \item
 | |
|                                   Dieser Ansatz ist nicht gut skalierbar für große Netzwerke / hohe
 | |
|                                   Last
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Temporäre Pseudonyme:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Mobile Geräte verwenden Pseudonyme, die regelmäßig gewechselt
 | |
|                                   werden
 | |
|                             \item
 | |
|                                   Um das mobile Gerät zu erreichen, ist jedoch eine
 | |
|                                   Abbildungsinstanz erforderlich, die die Geschichte der Pseudonyme
 | |
|                                   des Mobiltelefons verfolgen kann.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Gemischte Netzwerke:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Nachrichten werden über verschiedene Entitäten (Mixes) geleitet
 | |
|                                   und jede Entität kann nur einen Teil der Nachrichtenroute erfahren
 | |
|                                   (siehe unten)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Adressierungsschemata für standortbezogenen Datenschutz mit Broadcast:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Explizite Adressen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Jede Entität, die eine explizite Adresse "sieht", kann die
 | |
|                                   adressierte Entität bestimmen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Implizite Adressen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Eine implizite Adresse identifiziert kein bestimmtes Gerät oder
 | |
|                                   einen bestimmten Ort, sondern benennt lediglich eine Einheit, ohne
 | |
|                                   dass dem Namen eine weitere Bedeutung beigemessen wird.
 | |
|                             \item
 | |
|                                   Sichtbare implizite Adressen:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             Entitäten, die mehrere Vorkommen einer Adresse sehen, können auf
 | |
|                                             Gleichheit prüfen
 | |
|                                   \end{itemize}
 | |
|                             \item
 | |
|                                   Unsichtbare implizite Adressen:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             Nur die adressierte Einheit kann die Gleichheit der Adresse
 | |
|                                             überprüfen.
 | |
|                                       \item
 | |
|                                             Dies erfordert Operationen mit öffentlichen Schlüsseln:
 | |
|                                             \$ImplAddr\_A =\{r\_B, r\_A\}\_\{+K\_A\}\$ wobei \$r\_A\$ von
 | |
|                                             der adressierten Entität gewählt wird und \$r\_B\$ ein
 | |
|                                             Zufallswert ist, der von einer Entität \$B\$ erzeugt wird, die
 | |
|                                             unsichtbar auf die Entität \$A\$ verweisen will
 | |
|                                   \end{itemize}
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Vorübergehende Pseudonyme:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Standort eines Gerätes A wird nicht mehr mit seiner Kennung
 | |
|                         \$ID\_A\$, sondern mit einem wechselnden Pseudonym \$P\_A(t)\$
 | |
|                         gespeichert.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Beispiel: VLRs in GSM kennen und speichern möglicherweise nur die
 | |
|                                   TMSI (die eine Art temporäres Pseudonym ist)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Zuordnung einer IDA zum aktuellen Pseudonym \$P\_A(t)\$ wird in
 | |
|                         einem vertrauenswürdigen Gerät gespeichert
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Beispiel: GSM HLRs könnten als vertrauenswürdige Geräte realisiert
 | |
|                                   werden
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Wenn ein eingehender Anruf an den aktuellen Standort von Gerät A
 | |
|                         weitergeleitet werden muss:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der Netzbetreiber von Gerät A fragt das vertrauenswürdige Gerät
 | |
|                                   nach dem aktuellen Pseudonym \$P\_A(t)\$
 | |
|                             \item
 | |
|                                   Das Netz leitet den Anruf dann an den aktuellen Standort von A
 | |
|                                   weiter, indem es das temporäre Pseudonym in einer
 | |
|                                   Standortdatenbank nachschlägt.
 | |
|                             \item
 | |
|                                   Es ist wichtig, dass die Einrichtungen, die einen Anruf
 | |
|                                   weiterleiten, nichts über die ursprüngliche Adresse der
 | |
|                                   Rufaufbau-Nachricht erfahren können (\$\textbackslash rightarrow\$
 | |
|                                   implizite Adressen)
 | |
|                             \item
 | |
|                                   Die Verwendung von Mischungen (siehe unten) kann einen
 | |
|                                   zusätzlichen Schutz gegen Angriffe von kolludierenden
 | |
|                                   Netzeinheiten bieten
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Kommunikations-Mixe:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Das Konzept wurde 1981 von D. Chaum für nicht zurückverfolgbare
 | |
|                         E-Mail-Kommunikation erfunden
 | |
|                   \item
 | |
|                         Ein Mix verbirgt die Kommunikationsbeziehungen zwischen Absendern
 | |
|                         und Empfängern:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Er puffert eingehende Nachrichten, die asymmetrisch verschlüsselt
 | |
|                                   sind, so dass nur der Mix sie entschlüsseln kann.
 | |
|                             \item
 | |
|                                   Er verändert das "Aussehen" von Nachrichten, indem er sie
 | |
|                                   entschlüsselt
 | |
|                             \item
 | |
|                                   Er ändert die Reihenfolge der Nachrichten und leitet sie in
 | |
|                                   Stapeln weiter.
 | |
|                             \item
 | |
|                                   Wenn jedoch der Mix kompromittiert wird, kann ein Angreifer
 | |
|                                   "alles" erfahren.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Sicherheit kann durch kaskadierende Mixe erhöht werden.
 | |
|                   \item
 | |
|                         Beispiel: A sendet eine Nachricht m an B über zwei Mixe M1 und M2
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   \$A\textbackslash rightarrow M1: \{r\_1 ,\{r\_2 ,\{r\_3 ,
 | |
|                                   m\}\emph{\{+K\_B\}\}}\{+K\_\{M2\}\}\}\emph{\{+K}\{M1\}\}\$
 | |
|                             \item
 | |
|                                   \$M1\textbackslash rightarrow M2:\{r\_2 ,\{r\_3 ,
 | |
|                                   m\}\emph{\{+K\_B\}\}}\{+K\{M2\}\}\$
 | |
|                             \item
 | |
|                                   \$M2\textbackslash rightarrow B: \{r\_3 , m\}\_\{+K\_B\}\$
 | |
|                             \item
 | |
|                                   Es ist wichtig, dass die Mischungen "genug" Nachrichten
 | |
|                                   verarbeiten
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Dieses Konzept lässt sich auf die mobile Kommunikation übertragen
 | |
|                         {[}Müller99a{]}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Sicherheit von drahtlosen lokalen
 | |
|       Netzen}
 | |
| 
 | |
| 
 | |
|     \subsection{IEEE 802.11}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IEEE 802.11 {[}IEEE12{]} standardisiert die Medienzugriffskontrolle
 | |
|               (MAC) und die physikalischen Eigenschaften eines drahtlosen lokalen
 | |
|               Netzwerks (LAN).
 | |
|         \item
 | |
|               Der Standard umfasst mehrere physikalische Schichteinheiten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Derzeit zwischen 1-300 Mbit/s
 | |
|                   \item
 | |
|                         2,4-GHz-Band und 5-GHz-Band
 | |
|                   \item
 | |
|                         Viele verschiedene Modulationsverfahren
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Übertragung im lizenzfreien 2,4-GHz-Band impliziert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Medium-Sharing mit unfreiwilligen 802.11-Geräten
 | |
|                   \item
 | |
|                         Überlappung von logisch getrennten Wireless LANs
 | |
|                   \item
 | |
|                         Überlappung mit Nicht-802.11-Geräten
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die Medienzugriffskontrolle (MAC) unterstützt sowohl den Betrieb unter
 | |
|               Kontrolle eines Access Points als auch zwischen unabhängigen
 | |
|               Stationen.
 | |
|         \item
 | |
|               In diesem Kurs werden wir uns hauptsächlich auf die
 | |
|               (Un-)Sicherheitsaspekte des Standards konzentrieren!
 | |
|     \end{itemize}
 | |
| 
 | |
|     802.11 - Architektur eines Infrastrukturnetzes
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-802.11-network-architecture.png}
 | |
|         \item
 | |
|               Station (STA): Endgerät mit Zugriffsmechanismen auf das drahtlose
 | |
|               Medium und Funkkontakt zum Access Point
 | |
|         \item
 | |
|               Basic Service Set (BSS): Gruppe von Stationen, die dieselbe
 | |
|               Funkfrequenz verwenden
 | |
|         \item
 | |
|               Zugangspunkt: Station, die in das drahtlose LAN und das
 | |
|               Verteilungssystem integriert ist
 | |
|         \item
 | |
|               Portal: Brücke zu anderen (kabelgebundenen) Netzwerken
 | |
|         \item
 | |
|               Verteilungssystem: Verbindungsnetz zur Bildung eines logischen Netzes
 | |
|               (Extended Service Set, ESS), das auf mehreren BSS basiert
 | |
|     \end{itemize}
 | |
| 
 | |
|     802.11 - Architektur eines Ad-Hoc-Netzes
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-802.11-ad-hoc-architecture.png}
 | |
|         \item
 | |
|               Station (STA): Endgerät mit Zugriffsmechanismen auf das drahtlose
 | |
|               Medium
 | |
|         \item
 | |
|               Basic Service Set (BSS): Gruppe von Stationen, die dieselbe
 | |
|               Funkfrequenz verwenden
 | |
|         \item
 | |
|               Ad-Hoc-Netze ermöglichen die direkte Kommunikation zwischen
 | |
|               Endsystemen innerhalb einer begrenzten Reichweite
 | |
|         \item
 | |
|               Da es keine Infrastruktur gibt, ist keine Kommunikation zwischen
 | |
|               verschiedenen BSSs möglich
 | |
|     \end{itemize}
 | |
| 
 | |
|     Sicherheitsdienste von IEEE 802.11
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Sicherheitsdienste von IEEE 802.11 wurden ursprünglich wie folgt
 | |
|               realisiert:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Authentifizierungsdienst für Entitäten
 | |
|                   \item
 | |
|                         Wired Equivalent Privacy (WEP) Mechanismus
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               WEP soll die folgenden Sicherheitsdienste bieten
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vertraulichkeit
 | |
|                   \item
 | |
|                         Authentifizierung der Datenherkunft / Datenintegrität
 | |
|                   \item
 | |
|                         Zugangskontrolle in Verbindung mit Schichtenmanagement
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               WEP verwendet die folgenden Algorithmen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die RC4-Stromchiffre (siehe Kapitel 3)
 | |
|                   \item
 | |
|                         Die CRC-Prüfsumme (Cyclic Redundancy Code) zur Fehlererkennung
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Der zyklische
 | |
|         Redundanzcode}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Der zyklische Redundanzcode (CRC) ist ein Fehlererkennungscode
 | |
|         \item
 | |
|               Mathematische Grundlage:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Bitstrings werden als Darstellungen von Polynomen mit den
 | |
|                         Koeffizienten 0 und 1 behandelt \$\textbackslash Rightarrow\$ Ein
 | |
|                         Bitstring, der eine Nachricht M darstellt, wird als M(x)
 | |
|                         interpretiert
 | |
|                   \item
 | |
|                         Polynomarithmetik wird modulo 2 durchgeführt
 | |
|                         \$\textbackslash Rightarrow\$ Addition und Subtraktion sind
 | |
|                         identisch mit XOR
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               CRC-Berechnung für eine Nachricht \$M(x)\$:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         A und B einigen sich auf ein Polynom \$G(x)\$; üblicherweise ist
 | |
|                         \$G(x)\$ standardisiert
 | |
|                   \item
 | |
|                         Sei \$n\$ der Grad von \$G(x)\$, d.h. die Länge von \$G(x)\$ sei
 | |
|                         \$n+1\$
 | |
|                   \item
 | |
|                         Wenn dann \$\textbackslash frac\{M(x)\textbackslash times
 | |
|                         2\^{}n\}\{G(x)\}=Q(x)+\textbackslash frac\{R(x)\}\{G(x)\}\$ gilt
 | |
|                         \$\textbackslash frac\{M(x)\textbackslash times 2\^{}n
 | |
|                         +R(x)\}\{G(x)\}\$ wobei \$R(x)\$ der Rest von \$M(x)\$ geteilt durch
 | |
|                         \$G(x)\$ ist
 | |
|                   \item
 | |
|                         Normalerweise wird \$R(x)\$ vor der Übertragung an \$M(x)\$
 | |
|                         angehängt, und \$Q(x)\$ ist nicht von Interesse, da es nur geprüft
 | |
|                         wird, wenn \$\textbackslash frac\{M(x)\textbackslash times
 | |
|                         2\^{}n+R(x)\}\{G(x)\}\$ mit Rest \$0\$ dividiert
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Betrachten wir nun zwei Nachrichten \$M\_1\$ und \$M\_2\$ mit CRCs
 | |
|               \$R\_1\$ und \$R\_2\$:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Da \$\textbackslash frac\{M\_1(x)\textbackslash times
 | |
|                         2\^{}n+R\_1(x)\}\{G(x)\}\$ und
 | |
|                         \$\textbackslash frac\{M\_2(x)\textbackslash times
 | |
|                         2\^{}n+R\_2(x)\}\{G(x)\}\$ mit dem Rest \$0\$ teilen, teilt sich
 | |
|                         auch \$\textbackslash frac\{M\_1(x)\textbackslash times 2\^{}n
 | |
|                         +R\_1(x)+M\_2(x)\textbackslash times 2\^{}n +R\_2(x)\}\{G(x)\}
 | |
|                         =\textbackslash frac\{(M\_1(x)+M\_2(x))\textbackslash times 2\^{}n
 | |
|                         +(R\_1(x)+R\_2(x))\}\{G(x)\}\$ teilt mit Rest \$0\$
 | |
|                   \item
 | |
|                         \$\textbackslash Rightarrow\$ CRC ist linear, d.h. \$CRC(M\_1 +
 | |
|                         M\_2) = CRC(M\_1) + CRC(M\_2)\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Diese Eigenschaft macht CRC schwach für kryptographische Zwecke!
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{IEEE 802.11
 | |
|         Entity-Authentifizierung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Ursprünglich gibt es die IEEE 802.11-Authentifizierung in zwei
 | |
|               ,,Geschmacksrichtungen'':
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Offene System-Authentifizierung: ,,Im Wesentlichen handelt es sich
 | |
|                         um einen Null-Authentifizierungsalgorithmus.'' (IEEE 802.11)
 | |
|                   \item
 | |
|                         Shared-Key-Authentifizierung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die ,,Shared-Key-Authentifizierung unterstützt die
 | |
|                                   Authentifizierung von STAs entweder als Mitglied derer, die einen
 | |
|                                   gemeinsamen geheimen Schlüssel kennen, oder als Mitglied derer,
 | |
|                                   die ihn nicht kennen.'' (IEEE 802.11, Abschnitt 8.1.2)
 | |
|                             \item
 | |
|                                   Es wird davon ausgegangen, dass der erforderliche geheime,
 | |
|                                   gemeinsam genutzte Schlüssel den teilnehmenden STAs über einen
 | |
|                                   sicheren, von IEEE 802.11 unabhängigen Kanal übermittelt wurde.
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     IEEE 802.11's Shared Key Authentication Dialog:
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Authentifizierung sollte zwischen Stationen und Zugangspunkten
 | |
|               erfolgen und könnte auch zwischen beliebigen Stationen durchgeführt
 | |
|               werden.
 | |
|         \item
 | |
|               Bei der Authentifizierung fungiert eine Station als Requestor (A) und
 | |
|               die andere als Responder (B)
 | |
|         \item
 | |
|               Der Authentifizierungsdialog:
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$A \textbackslash rightarrow B: (Authentifizierung, 1, ID\_A)\$
 | |
|                   \item
 | |
|                         \$B \textbackslash rightarrow A: (Authentifizierung, 2, r\_B)\$
 | |
|                   \item
 | |
|                         \$A \textbackslash rightarrow B: \{Authentifizierung, 3,
 | |
|                         r\_B\}\emph{\{K}\{A,B\}\}\$
 | |
|                   \item
 | |
|                         \$B \textbackslash rightarrow A: (Authentifizierung, 4,
 | |
|                         erfolgreich)\$
 | |
|               \end{enumerate}
 | |
|         \item
 | |
|               Die gegenseitige Authentifizierung erfordert zwei unabhängige
 | |
|               Protokolldurchläufe, einen in jeder Richtung
 | |
|         \item
 | |
|               Aber: ein Angreifer kann sich nach dem Abhören eines
 | |
|               Protokolldurchlaufs ausgeben, da er einen gültigen Schlüsselstrom aus
 | |
|               den Nachrichten 2 und 3 erhalten kann!
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{IEEE 802.11's Wired Equivalence
 | |
|         Privacy}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IEEE 802.11's WEP verwendet RC4 als Pseudo-Zufallsbit-Generator
 | |
|               (PRNG):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Für jede zu schützende Nachricht M wird ein
 | |
|                         24-Bit-Initialisierungsvektor (IV) mit dem gemeinsamen Schlüssel
 | |
|                         \$K\_\{BSS\}\$ verkettet, um den Seed des PRNG zu bilden.
 | |
|                   \item
 | |
|                         Der Integritätsprüfwert (ICV) von M wird mit CRC berechnet und an
 | |
|                         die Nachricht angehängt (,,\textbar\textbar'')
 | |
|                   \item
 | |
|                         Die resultierende Nachricht \$(M \textbar\textbar{} ICV)\$ wird mit
 | |
|                         dem von \$RC4(IV \textbar\textbar{} K\_\{BSS\})\$ erzeugten
 | |
|                         Schlüsselstrom XOR-verknüpft (,,\$\textbackslash oplus\$'')
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-802.11-wep-encryption.png}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Da die IV mit jeder Nachricht im Klartext gesendet wird, kann jeder
 | |
|               Empfänger, der \$K\_\{BSS\}\$ kennt, den entsprechenden Schlüsselstrom
 | |
|               zur Entschlüsselung einer Nachricht erzeugen.
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Dadurch wird die wichtige Eigenschaft der Selbstsynchronisation von
 | |
|                         WEP gewährleistet
 | |
|                   \item
 | |
|                         Der Entschlüsselungsprozess ist im Grunde die Umkehrung der
 | |
|                         Verschlüsselung:
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-802.11-wep-decryption.png}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Die Sicherheitsansprüche von IEEE
 | |
|         802.11}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               WEP wurde entwickelt, um die folgenden Sicherheitseigenschaften zu
 | |
|               gewährleisten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vertraulichkeit:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Nur Stationen, die über \$K\_\{BSS\}\$ verfügen, können mit WEP
 | |
|                                   geschützte Nachrichten lesen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Authentifizierung der Datenherkunft / Datenintegrität:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Böswillige Veränderungen von WEP-geschützten Nachrichten können
 | |
|                                   erkannt werden
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Zugriffskontrolle in Verbindung mit Schichtenmanagement:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wenn in der Schichtenverwaltung so eingestellt, werden nur
 | |
|                                   WEP-geschützte Nachrichten von Empfängern akzeptiert
 | |
|                             \item
 | |
|                                   Somit können Stationen, die \$K\_\{BSS\}\$ nicht kennen, nicht an
 | |
|                                   solche Empfänger senden
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Leider trifft keine der obigen Behauptungen zu...
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Schwachstelle \#1: Die
 | |
|         Schlüssel}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               IEEE 802.11 sieht keine Schlüsselverwaltung vor:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Manuelle Verwaltung ist fehleranfällig und unsicher
 | |
|                   \item
 | |
|                         Die gemeinsame Verwendung eines Schlüssels für alle Stationen eines
 | |
|                         BSS führt zu zusätzlichen Sicherheitsproblemen
 | |
|                   \item
 | |
|                         Als Folge der manuellen Schlüsselverwaltung werden die Schlüssel
 | |
|                         selten geändert.
 | |
|                   \item
 | |
|                         Eine weitere Folge ist, dass die ,,Sicherheit'' oft sogar
 | |
|                         ausgeschaltet ist!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Schlüssellänge:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die im ursprünglichen Standard festgelegte Schlüssellänge von 40 Bit
 | |
|                         bietet nur geringe Sicherheit
 | |
|                   \item
 | |
|                         Der Grund dafür war die Exportierbarkeit
 | |
|                   \item
 | |
|                         Wireless LAN-Karten erlauben oft auch Schlüssel der Länge 104 Bit,
 | |
|                         aber das macht die Situation nicht besser, wie wir später sehen
 | |
|                         werden
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Schwachstelle \#2: WEP-Vertraulichkeit ist
 | |
|         unsicher}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Selbst mit gut verteilten und langen Schlüsseln ist WEP unsicher
 | |
|         \item
 | |
|               Der Grund dafür ist die Wiederverwendung des Schlüsselstroms:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Erinnern Sie sich, dass die Verschlüsselung mit jeder Nachricht neu
 | |
|                         synchronisiert wird, indem eine IV der Länge 24 Bit an
 | |
|                         \$K\_\{BSS\}\$ angehängt und der PRNG neu initialisiert wird
 | |
|                   \item
 | |
|                         Betrachten wir zwei Klartexte M 1 und M 2, die mit demselben IV 1
 | |
|                         verschlüsselt wurden:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   \$C\_1 = P\_1 \textbackslash oplus RC4 (IV\_1 , K\_\{BSS\})\$
 | |
|                             \item
 | |
|                                   \$C\_2 = P\_2 \textbackslash oplus RC4 (IV\_1 , K\_\{BSS\})\$
 | |
|                                   dann:
 | |
|                             \item
 | |
|                                   \$C\_1 \textbackslash oplus C\_2 = (P\_1 \textbackslash oplus RC4
 | |
|                                   (IV\_1, K\_\{BSS\})) \textbackslash oplus
 | |
|                                   (P\_2\textbackslash oplus RC4 (IV\_1 , K\_\{BSS\})) = P\_1
 | |
|                                   \textbackslash oplus P\_2\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Wenn also ein Angreifer z.B. \$P\_1\$ und \$C\_1\$ kennt, kann er
 | |
|                         \$P\_2\$ aus \$C\_2\$ wiederherstellen, ohne den Schlüssel
 | |
|                         \$K\_\{BSS\}\$ zu kennen.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Kryptographen nennen dies einen Angriff mit bekanntem Klartext
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wie oft kommt die Wiederverwendung des Schlüsselstroms vor?
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         In der Praxis recht häufig, da viele Implementierungen die IV
 | |
|                         schlecht wählen
 | |
|                   \item
 | |
|                         Selbst bei optimaler Wahl, da die IV-Länge 24 Bit beträgt, wird eine
 | |
|                         stark ausgelastete Basisstation eines 11-Mbit/s-WLAN den verfügbaren
 | |
|                         Speicherplatz in einem halben Tag erschöpfen
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Schwachstelle \#3: WEP-Datenintegrität ist
 | |
|         unsicher}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Erinnern Sie sich, dass CRC eine lineare Funktion ist und RC4
 | |
|               ebenfalls linear ist
 | |
|         \item
 | |
|               Nehmen wir an, A sendet eine verschlüsselte Nachricht an B, die von
 | |
|               einem Angreifer E abgefangen wird:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$A \textbackslash rightarrow B: (IV, C) mit C = RC4(IV, K\_\{BSS\})
 | |
|                         \textbackslash oplus (M, CRC(M))\$
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der Angreifer E kann einen neuen Chiffretext \$C'\$ konstruieren, der
 | |
|               zu einer Nachricht \$M'\$ mit einer gültigen Prüfsumme \$CRC(M')\$
 | |
|               entschlüsselt wird:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         E wählt eine beliebige Nachricht \$\textbackslash delta\$ mit der
 | |
|                         gleichen Länge
 | |
|                   \item
 | |
|                         \$C' = C \textbackslash oplus (\textbackslash delta,
 | |
|                         CRC(\textbackslash delta)) = RC4(IV, K\_\{BSS\})
 | |
|                         \textbackslash oplus (M, CRC(M)) \textbackslash oplus
 | |
|                         (\textbackslash delta, CRC(\textbackslash delta))\$
 | |
|                   \item
 | |
|                         \$= RC4(IV, K\_\{BSS\}) \textbackslash oplus (M \textbackslash oplus
 | |
|                         \textbackslash delta, CRC(M) \textbackslash oplus
 | |
|                         CRC(\textbackslash delta))\$
 | |
|                   \item
 | |
|                         \$= RC4(IV, K\_\{BSS\}) \textbackslash oplus (M \textbackslash oplus
 | |
|                         \textbackslash delta, CRC(M \textbackslash oplus
 | |
|                         \textbackslash delta))\$
 | |
|                   \item
 | |
|                         \$= RC4(IV, K\_\{BSS\}) \textbackslash oplus (M', CRC(M'))\$
 | |
|                   \item
 | |
|                         Man beachte, dass \$E\$ \$M'\$ nicht kennt, da es \$M\$ nicht kennt.
 | |
|                   \item
 | |
|                         Dennoch führt ein ,,1'' an Position \$n\$ in
 | |
|                         \$\textbackslash delta\$ zu einem umgedrehten Bit an Position n in
 | |
|                         \$M'\$, so dass E kontrollierte Änderungen an \$M\$ vornehmen kann
 | |
|                   \item
 | |
|                         \$\textbackslash Rightarrow\$ Datenherkunftsauthentifizierung /
 | |
|                         Datenintegrität von WEP ist unsicher!
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Schwachstelle \#4: WEP-Zugangskontrolle ist
 | |
|         unsicher}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Erinnern Sie sich, dass die Integritätsfunktion ohne einen Schlüssel
 | |
|               berechnet wird
 | |
|         \item
 | |
|               Betrachten wir einen Angreifer, der ein Klartext-Chiffretext-Paar in
 | |
|               Erfahrung bringt:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Da der Angreifer \$M\$ und \$C=RC4(IV,
 | |
|                         K\_\{BSS\})\textbackslash oplus (M, CRC(M))\$ kennt, kann er den zur
 | |
|                         Erzeugung von \$C\$ verwendeten Schlüsselstrom berechnen
 | |
|                   \item
 | |
|                         Wenn \$E\$ später eine Nachricht \$M'\$ senden will, kann er \$C' =
 | |
|                         RC4(IV, K\_\{BSS\})\textbackslash oplus (M', CRC(M'))\$ berechnen
 | |
|                         und die Nachricht \$(IV, C')\$ senden.
 | |
|                   \item
 | |
|                         Da die Wiederverwendung alter IV-Werte möglich ist, ohne beim
 | |
|                         Empfänger einen Alarm auszulösen, handelt es sich um eine gültige
 | |
|                         Nachricht
 | |
|                   \item
 | |
|                         Eine ,,Anwendung'' für diesen Angriff ist die unbefugte Nutzung von
 | |
|                         Netzwerkressourcen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Der Angreifer sendet IP-Pakete, die für das Internet bestimmt
 | |
|                                   sind, an den Zugangspunkt, der sie entsprechend weiterleitet und
 | |
|                                   dem Angreifer freien Zugang zum Internet gewährt
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               \$\textbackslash Rightarrow\$ WEP Access Control kann mit bekanntem
 | |
|               Klartext umgangen werden
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Schwachstelle Nr. 5: Schwachstelle in der
 | |
|         RC4-Schlüsselberechnung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Anfang August 2001 wurde ein weiterer Angriff auf WEP entdeckt:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der gemeinsame Schlüssel kann in weniger als 15 Minuten
 | |
|                         wiederhergestellt werden, vorausgesetzt, dass etwa 4 bis 6 Millionen
 | |
|                         Pakete wiederhergestellt wurden.
 | |
|                   \item
 | |
|                         Bei dem Angriff handelt es sich um einen Angriff mit verwandten
 | |
|                         Schlüsseln, bei dem die Verwendung von RC4 durch WEP ausgenutzt
 | |
|                         wird:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   RC4 ist anfällig für die Ableitung von Bits eines Schlüssels,
 | |
|                                   wenn:
 | |
| 
 | |
|                                   \begin{itemize}
 | |
|                                       \item
 | |
|                                             viele Nachrichten mit einem Schlüsselstrom verschlüsselt werden,
 | |
|                                             der aus einem variablen Initialisierungsvektor und einem festen
 | |
|                                             Schlüssel erzeugt wird, und
 | |
|                                       \item
 | |
|                                             die Initialisierungsvektoren und der Klartext der ersten beiden
 | |
|                                             Oktette für die verschlüsselten Nachrichten bekannt sind
 | |
|                                   \end{itemize}
 | |
|                             \item
 | |
|                                   Die IV für den Schlüsselstrom wird mit jedem Paket im Klartext
 | |
|                                   übertragen.
 | |
|                             \item
 | |
|                                   Die ersten beiden Oktette eines verschlüsselten Datenpakets können
 | |
|                                   erraten werden
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Der Angriff ist in {[}SMF01a{]} und {[}SIR01a{]} beschrieben und
 | |
|                         wurde später so verfeinert, dass er noch schneller funktioniert
 | |
|                         {[}TWP07{]}.
 | |
|                   \item
 | |
|                         R. Rivest kommentiert dies {[}Riv01a{]}: ,,Diejenigen, die die
 | |
|                         RC4-basierten WEP- oder WEP2-Protokolle verwenden, um die
 | |
|                         Vertraulichkeit ihrer 802.11-Kommunikation zu gewährleisten, sollten
 | |
|                         diese Protokolle als gebrochen betrachten {[}...{]}''
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Schlussfolgerungen zu den Unzulänglichkeiten von IEEE
 | |
|         802.11}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Das ursprüngliche IEEE 802.11 bietet keine ausreichende Sicherheit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Fehlende Schlüsselverwaltung macht die Nutzung der
 | |
|                         Sicherheitsmechanismen mühsam und führt dazu, dass die Schlüssel
 | |
|                         selten gewechselt werden oder sogar die Sicherheit ausgeschaltet ist
 | |
|                   \item
 | |
|                         Sowohl die Entity-Authentifizierung als auch die Verschlüsselung
 | |
|                         beruhen auf einem Schlüssel, der von allen Stationen eines
 | |
|                         Basisdienstes gemeinsam genutzt wird
 | |
|                   \item
 | |
|                         Unsicheres Protokoll zur Entitätsauthentifizierung
 | |
|                   \item
 | |
|                         Wiederverwendung des Schlüsselstroms ermöglicht Angriffe mit
 | |
|                         bekanntem Klartext
 | |
|                   \item
 | |
|                         Lineare Integritätsfunktion ermöglicht die Fälschung von ICVs
 | |
|                   \item
 | |
|                         Unverschlüsselte Integritätsfunktion ermöglicht die Umgehung der
 | |
|                         Zugangskontrolle durch Erstellung gültiger Nachrichten aus einem
 | |
|                         bekannten Klartext-Chiffretext-Paar
 | |
|                   \item
 | |
|                         Schwachstelle in der RC4-Schlüsselplanung ermöglicht die
 | |
|                         Kryptoanalyse von Schlüsseln
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Selbst mit IEEE 802.1X und individuellen Schlüsseln bleibt das
 | |
|               Protokoll schwach
 | |
|         \item
 | |
|               Einige vorgeschlagene Gegenmaßnahmen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Platzieren Sie Ihr IEEE 802.11 Netzwerk außerhalb Ihrer Internet
 | |
|                         Firewall
 | |
|                   \item
 | |
|                         Vertrauen Sie keinem Host, der über IEEE 802.11 verbunden ist.
 | |
|                   \item
 | |
|                         Verwenden Sie zusätzlich andere Sicherheitsprotokolle, z. B. PPTP,
 | |
|                         L2TP, IPSec, SSH, ...
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Interlude: Sicherheit in öffentlichen
 | |
|         WLAN-Hotspots}
 | |
| 
 | |
|     Welche Sicherheit können Sie in einem öffentlichen WLAN-Hotspot
 | |
|     erwarten?
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Bei den meisten Hotspots: Leider fast keine!
 | |
|         \item
 | |
|               Wenn Sie außer der Eingabe eines Benutzernamens und eines Passworts
 | |
|               auf einer Webseite keine weiteren Sicherheitsparameter konfigurieren
 | |
|               müssen, können Sie Folgendes erwarten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Hotspot-Betreiber prüft Ihre Authentizität bei der Anmeldung
 | |
|                         (oft mit SSL geschützt, um das Abhören Ihres Passworts zu
 | |
|                         verhindern)
 | |
|                   \item
 | |
|                         Nur authentifizierte Clients erhalten den Dienst, da die
 | |
|                         Paketfilterung den Zugriff auf die Anmeldeseite nur bei
 | |
|                         erfolgreicher Authentifizierung zulässt.
 | |
|                   \item
 | |
|                         Nach Überprüfung der Anmeldeauthentifizierung: keine weiteren
 | |
|                         Sicherheitsmaßnahmen
 | |
|                   \item
 | |
|                         Kein Schutz für Ihre Benutzerdaten:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Alles kann abgefangen und manipuliert werden
 | |
|                             \item
 | |
|                                   Sie können zwar eigene Maßnahmen ergreifen, z.B. VPN oder SSL,
 | |
|                                   aber die Konfiguration ist oft mühsam oder wird vom
 | |
|                                   Kommunikationspartner gar nicht unterstützt und die Leistung wird
 | |
|                                   durch zusätzlichen (pro-Paket-) Overhead beeinträchtigt
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Plus: Ihre Sitzung kann durch die Verwendung Ihrer MAC- und
 | |
|                         IP-Adressen gestohlen werden!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Konsequenz: bessere WLAN-Sicherheit ist dringend erforderlich
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Fixing WLAN Security: IEEE 802.11i, WPA und
 | |
|         WPA}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Umfang: Definition der Interaktion zwischen 802.1X und 802.11
 | |
|               Standards
 | |
|         \item
 | |
|               TGi definiert zwei Klassen von Sicherheitsalgorithmen für 802.11:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Pre-RSN Sicherheitsnetzwerk (\textbackslash rightarrow WEP)
 | |
|                   \item
 | |
|                         Robustes Sicherheitsnetzwerk (RSN)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die RSN-Sicherheit besteht aus zwei grundlegenden Teilsystemen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Mechanismen zum Schutz der Daten:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   TKIP - schnelles Re-Keying, um WEP für ein Minimum an Datenschutz
 | |
|                                   zu verbessern (Marketingname WPA)
 | |
|                             \item
 | |
|                                   AES-Verschlüsselung - robuster Datenschutz für lange Zeit
 | |
|                                   (Marketingname WPA2)
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Verwaltung von Sicherheitsvereinbarungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Unternehmensmodus - basierend auf 802.1X
 | |
|                   \item
 | |
|                         Persönlicher Modus - basierend auf Pre-Shared Keys
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     (das meiste Material über 802.11i ist aus {[}WM02a{]} entnommen)
 | |
| 
 | |
| 
 | |
|     \subsection{WPA-Schlüsselverwaltung}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Im Gegensatz zum ursprünglichen 802.11: paarweise Schlüssel zwischen
 | |
|               STA und BS, zusätzliche Gruppenschlüssel für Multi- und
 | |
|               Broadcast-Pakete sowie Station-to-Station-Link (STSL)-Schlüssel
 | |
|         \item
 | |
|               Das erste Geheimnis: der 256 Bit Pairwise Master Key (PMK)
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Unternehmensmodus: Verwendet 802.1X-Authentifizierung und
 | |
|                         installiert einen neuen Schlüssel, der BS und Client bekannt ist, z.
 | |
|                         B. durch EAP-TTLS
 | |
|                   \item
 | |
|                         Persönlicher Modus: Verwendet einen Pre-Shared Key (PSK), der dem BS
 | |
|                         und vielen STAs bekannt ist.
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Explizit durch 64 zufällige Hex-Zeichen oder implizit durch ein
 | |
|                                   Passwort gegeben
 | |
|                             \item
 | |
|                                   Wenn Passwort: PMK = PBKDF2(Passwort, SSID, 4096, 256)
 | |
|                             \item
 | |
|                                   Wobei PBKDF2 die passwortbasierte Schlüsselableitungsfunktion 2
 | |
|                                   aus {[}RFC2898{]} mit einer Salz-SSID und einer Ausgangslänge von
 | |
|                                   256 Bit ist
 | |
|                             \item
 | |
|                                   impliziert 2 * 4096 Berechnungen von HMAC-SHA1, um Brute-Force zu
 | |
|                                   verlangsamen
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               PMK ist ein Vertrauensanker für die Authentifizierung per EAPOL (EAP
 | |
|               over LAN) Handshake, wird aber nie direkt verwendet...
 | |
|         \item
 | |
|               Für aktuelle kryptographische Protokolle wird ein kurzzeitiger 512 Bit
 | |
|               Pairwise Transient Key (PTK) wie folgt generiert
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$PTK = PRF(PMK, ,,Paarweise Schlüsselerweiterung'',
 | |
|                         min(Addr\_\{BS\}, Addr\_\{STA\}) \textbar\textbar{}
 | |
|                         max(Addr\_\{BS\}, Addr\_\{STA\}) \textbar\textbar{} min(r\_\{BS\},
 | |
|                         r\_\{STA\}) \textbar\textbar{} max(r\_\{BS\}, r\_\{STA\}))\$
 | |
|                   \item
 | |
|                         Dabei ist \$PRF(K, A, B)\$ die verkettete Ausgabe von \$HMAC-SHA1(K,
 | |
|                         A \textbar\textbar{} '0' \textbar\textbar{} B \textbar\textbar{}
 | |
|                         i)\$ über einen laufenden Index i
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Der PTK wird aufgeteilt in:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         EAPOL-Schlüssel-Bestätigungsschlüssel (KCK, erste 128 Bits),
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wird zum Schutz der Integrität von EAPOL-Nachrichten verwendet
 | |
|                             \item
 | |
|                                   Durch HMAC-MD5 (veraltet), HMAC-SHA1-128, AES-128-CMAC
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         EAPOL Key Encryption Key (KEK, zweite 128 Bits),
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wird zur Verschlüsselung neuer Schlüssel in EAPOL-Nachrichten
 | |
|                                   verwendet
 | |
|                             \item
 | |
|                                   Mit RC4 (veraltet), AES im Key Wrap Mode {[}RFC3394{]}
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Ein Temporal Key (TK) zum Schutz des Datenverkehrs (ab Bit 256)!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Initialer Dialog mit BS:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         EAPOL (EAP over LAN) 4-Wege-Handshake wird verwendet, um
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Überprüfung der gegenseitigen Kenntnis des PMK
 | |
|                             \item
 | |
|                                   Initiiert durch BS, um Schlüssel zu installieren (gruppenweise und
 | |
|                                   paarweise)
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Vereinfachter Handshake funktioniert wie folgt:
 | |
| 
 | |
|                         \begin{enumerate}
 | |
|                             \def\labelenumi{\arabic{enumi}.}
 | |
|                             \item
 | |
|                                   \$BS\textbackslash rightarrow STA: (1, r\_\{BS\} , PMKID,
 | |
|                                   install\textbackslash{} new\textbackslash{} PTK)\$
 | |
|                             \item
 | |
|                                   \$STA BS: (2, r\_\{STA\}, MAC\_\{KCK\})\$
 | |
|                             \item
 | |
|                                   \$BS STA: (3, r\_\{BS\}, MAC\_\{KCK\}, \{TK\}\_\{KEK\})\$
 | |
|                             \item
 | |
|                                   \$STA BS: (4, r\_\{STA\}, MAC\_\{KCK\})\$
 | |
|                         \end{enumerate}
 | |
|                   \item
 | |
|                         Wobei PMKID den PMK identifiziert: obere 128 Bit von
 | |
|                         \$HMAC-SHA-256(PMK, "PMK Name" \textbar\textbar{} Addr\_\{BS\}
 | |
|                         \textbar\textbar{} Addr\_\{STA\} )\$
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Eine Zwischenlösung: Temporal Key Integrity
 | |
|         Protokoll}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Ziele des Entwurfs:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schnelle Lösung für das bestehende WEP-Problem, betreibt WEP als
 | |
|                         Unterkomponente
 | |
|                   \item
 | |
|                         Kann in Software implementiert werden, nutzt vorhandene WEP-Hardware
 | |
|                         wieder
 | |
|                   \item
 | |
|                         Anforderungen an vorhandene AP-Hardware:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   33 oder 25 MHz ARM7 oder i486, die bereits vor TKIP mit 90\%
 | |
|                                   CPU-Auslastung laufen
 | |
|                             \item
 | |
|                                   Nur als Software/Firmware-Upgrade gedacht
 | |
|                             \item
 | |
|                                   Keine unangemessene Beeinträchtigung der Leistung
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Wichtigste Konzepte:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Nachrichtenintegritätscode (MIC)
 | |
|                   \item
 | |
|                         Gegenmaßnahmen im Falle von MIC-Fehlern
 | |
|                   \item
 | |
|                         Sequenzzähler
 | |
|                   \item
 | |
|                         Dynamische Schlüsselverwaltung (Re-Keying)
 | |
|                   \item
 | |
|                         Schlüsselmischung
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               TKIP erfüllt die Kriterien für einen guten Standard: alle sind damit
 | |
|               unzufrieden...
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-tkip-mpdu-data-format.png}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Message Integrity Code Funktion Michael
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Schützt vor Fälschungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Muss billig sein: CPU-Budget 5 Anweisungen / Byte
 | |
|                   \item
 | |
|                         Leider schwach: ein \$2\^{}\{29\}\$ Nachrichtenangriff existiert
 | |
|                   \item
 | |
|                         Wird über MSDUs berechnet, während WEP über MPDUs läuft
 | |
|                   \item
 | |
|                         Verwendet zwei 64-Bit-Schlüssel, einen in jeder Verbindungsrichtung
 | |
|                   \item
 | |
|                         Erfordert Gegenmaßnahmen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Rekey on active attack (nur wenige Fehlalarme, da CRC zuerst
 | |
|                                   geprüft wird)
 | |
|                             \item
 | |
|                                   Ratenbegrenzung auf eine Neuverschlüsselung pro Minute
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         % \includegraphics{Assets/NetworkSecurity-tkip-rekey.png}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Wiederholungsschutz und RC4-Schlüsselplanung
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Replay-Schutz:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Zurücksetzen der Paket-Sequenz \# auf 0 bei Wiederholung
 | |
|                   \item
 | |
|                         Erhöhen der Sequenz \# um 1 bei jedem Paket
 | |
|                   \item
 | |
|                         Verwerfen aller Pakete, die außerhalb der Sequenz empfangen werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Umgehen Sie die Schwächen der WEP-Verschlüsselung:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Erstellen Sie einen besseren paketweisen Verschlüsselungsschlüssel,
 | |
|                         indem Sie Angriffe mit schwachen Schlüsseln verhindern und WEP IV
 | |
|                         und paketweisen Schlüssel dekorrelieren
 | |
|                   \item
 | |
|                         muss auf vorhandener Hardware effizient sein
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-tkip-replay-protection.png}
 | |
|     \end{itemize}
 | |
| 
 | |
|     TKIP-Verarbeitung beim Sender
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-tkip-processing.png}
 | |
|     \end{itemize}
 | |
| 
 | |
|     TKIP-Verarbeitung auf der Empfängerseite
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-tkip-receiver.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Die langfristige Lösung: AES-basierter
 | |
|         WLAN-Schutz}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Zählermodus mit CBC-MAC (CCMP):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Obligatorisch zu implementieren: die langfristige Lösung
 | |
|                   \item
 | |
|                         Ein völlig neues Protokoll mit wenigen Zugeständnissen an WEP
 | |
|                   \item
 | |
|                         Bietet: Datenvertraulichkeit, Authentifizierung der Datenherkunft,
 | |
|                         Schutz vor Wiederholungen
 | |
|                   \item
 | |
|                         Basiert auf AES in Counter Mode Encryption mit CBC-MAC (CCM)
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Verwendung von CBC-MAC zur Berechnung einer MIC für den
 | |
|                                   Klartext-Header, die Länge des Klartext-Headers und die Nutzdaten
 | |
|                             \item
 | |
|                                   Verwenden Sie den CTR-Modus, um die Payload mit den Zählerwerten
 | |
|                                   1, 2, 3, ... zu verschlüsseln.
 | |
|                             \item
 | |
|                                   Verwenden Sie den CTR-Modus, um die MIC mit dem Zählerwert 0 zu
 | |
|                                   verschlüsseln.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         AES-Overhead erfordert neue AP-Hardware
 | |
|                   \item
 | |
|                         Der AES-Overhead erfordert möglicherweise neue STA-Hardware für
 | |
|                         Handheld-Geräte, aber theoretisch nicht für PCs (dies erhöht jedoch
 | |
|                         die CPU-Last und den Energieverbrauch), praktisch aufgrund fehlender
 | |
|                         Treiber für beide
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-aes-ccmp-frame-format.png}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Vergleich WEP, TKIP und
 | |
|         CCMP}
 | |
| 
 | |
|     %\begin{longtable}[]{@{}llll@{}}
 | |
|     %    \toprule
 | |
|     %               & WEP             & TKIP        & CCMP\tabularnewline
 | |
|     %    \midrule
 | |
|     %    \endhead
 | |
|     %    Cipher     & RC4             & RC4         & AES\tabularnewline
 | |
|     %    Key Size   & 40 or 104 bits  & 104 bits    & 128 bits encrypt, 64 bit
 | |
|     %    auth.\tabularnewline
 | |
|     %    Key Life   & 24-bit IV, wrap & 48-bit IV   & 48-bit IV\tabularnewline
 | |
|     %    Packet Key & Concat.         & Mixing Fnc. & Not Needed\tabularnewline
 | |
|     %    Integrity  &                 &             & \tabularnewline
 | |
|     %    Data       & CRC-32          & Michael     & CCM\tabularnewline
 | |
|     %    Header     & None            & Michael     & CCM\tabularnewline
 | |
|     %    Replay     & None            & Use IV      & Use IV\tabularnewline
 | |
|     %    Key Mgmt.  & None            & EAP-based   & EAP-based\tabularnewline
 | |
|     %    \bottomrule
 | |
|     %\end{longtable}
 | |
| 
 | |
|     TKIP ist derzeit veraltet, AES wird empfohlen.
 | |
| 
 | |
| 
 | |
|     \section{Sicherheit von GSM- und
 | |
|       UMTS-Netzen}
 | |
| 
 | |
| 
 | |
|     \subsection{GSM-Übersicht}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die GSM-Normen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Akronym:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   früher: Groupe Spéciale Mobile (gegründet 1982)
 | |
|                             \item
 | |
|                                   jetzt: Globales System für mobile Kommunikation
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Gesamteuropäische Norm (ETSI)
 | |
|                   \item
 | |
|                         Gleichzeitige Einführung wesentlicher Dienste in drei Phasen (1991,
 | |
|                         1994, 1996) durch die europäischen Telekommunikationsverwaltungen
 | |
|                         (Deutschland: D1 und D2) \$\textbackslash rightarrow\$ nahtloses
 | |
|                         Roaming innerhalb Europas möglich
 | |
|                   \item
 | |
|                         Heute nutzen viele Anbieter in der ganzen Welt GSM (mehr als 130
 | |
|                         Länder in Asien, Afrika, Europa, Australien, Amerika)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Merkmale:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Echte mobile, drahtlose Kommunikation mit Unterstützung für Sprache
 | |
|                         und Daten
 | |
|                   \item
 | |
|                         Weltweite Konnektivität und internationale Mobilität mit eindeutigen
 | |
|                         Adressen
 | |
|                   \item
 | |
|                         Sicherheitsfunktionen:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Vertraulichkeit auf der Luftschnittstelle
 | |
|                             \item
 | |
|                                   Zugangskontrolle und Benutzerauthentifizierung
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               GSM bietet die folgenden Sicherheitsfunktionen {[}ETSI93a, ETSI94a{]}:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vertraulichkeit der Identität des Teilnehmers:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Schutz vor einem Eindringling, der versucht zu identifizieren,
 | |
|                                   welcher Teilnehmer eine bestimmte Ressource auf dem Funkpfad
 | |
|                                   benutzt (z.B. Verkehrskanal oder Signalisierungsressourcen), indem
 | |
|                                   er den Signalisierungsaustausch auf dem Funkpfad abhört
 | |
|                             \item
 | |
|                                   Vertraulichkeit für Signalisierungs- und Benutzerdaten
 | |
|                             \item
 | |
|                                   Schutz gegen die Rückverfolgung des Standorts eines Teilnehmers
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Authentifizierung der Identität des Teilnehmers: Schutz des Netzes
 | |
|                         vor unbefugter Nutzung
 | |
|                   \item
 | |
|                         Vertraulichkeit des Signalisierungsinformations-Elements:
 | |
|                         Geheimhaltung von Signalisierungsdaten auf der Funkstrecke
 | |
|                   \item
 | |
|                         Vertraulichkeit der Benutzerdaten: Geheimhaltung von Nutzdaten auf
 | |
|                         der Funkstrecke
 | |
|                   \item
 | |
|                         Es werden jedoch nur Lauschangriffe auf die Funkverbindung zwischen
 | |
|                         dem Mobiltelefon und den Basisstationen berücksichtigt!
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Einige GSM-Abkürzungen \textbar{} \textbar{} \textbar{} \textbar{}
 | |
|     -\/-\/-\/-\/-\/- \textbar{}
 | |
|     -\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-\/-
 | |
|     \textbar{} \textbar{} AuC \textbar{} Authentication center \textbar{}
 | |
|     \textbar{} BSC \textbar{} Basisstations-Controller \textbar{} \textbar{}
 | |
|     BTS \textbar{} Basis-Transceiver-Station \textbar{} \textbar{} IMSI
 | |
|     \textbar{} Internationale mobile Teilnehmerkennung \textbar{} \textbar{}
 | |
|     HLR \textbar{} Heimatstandortregister \textbar{} \textbar{} LAI
 | |
|     \textbar{} Standortbereichskennung \textbar{} \textbar{} MS \textbar{}
 | |
|     Mobile Station (z. B. ein Mobiltelefon) \textbar{} \textbar{} MSC
 | |
|     \textbar{} Mobile Vermittlungsstelle \textbar{} \textbar{} MSISDN
 | |
|     \textbar{} Mobile subscriber international ISDN number \textbar{}
 | |
|     \textbar{} TMSI \textbar{} Temporäre mobile Teilnehmerkennung \textbar{}
 | |
|     \textbar{} VLR \textbar{} Register für Besucherstandorte \textbar{}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-gsm-authentication.png}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-gsm-authentication-2.png}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               \$K\_i\$: Authentifizierungsschlüssel des einzelnen Teilnehmers
 | |
|         \item
 | |
|               \$SRES\$: Signierte Antwort
 | |
|     \end{itemize}
 | |
| 
 | |
|     Der grundlegende (anfängliche) Authentifizierungsdialog:
 | |
| 
 | |
|     \begin{enumerate}
 | |
|         \def\labelenumi{\arabic{enumi}.}
 | |
|         \item
 | |
|               \$MS \textbackslash rightarrow VLR: (IMSI\_\{MS\})\$
 | |
|         \item
 | |
|               \$VLR \textbackslash rightarrow AuC: (IMSI\_\{MS\})\$
 | |
|         \item
 | |
|               \$AuC \textbackslash rightarrow VLR: (IMSI\_\{MS\}, K\_\{BSC,MS\},
 | |
|               R\_\{AUC\}, SRES\_\{AUC\})\$
 | |
|         \item
 | |
|               \$VLR \textbackslash rightarrow MS: (R\_\{AUC:1\})\$
 | |
|         \item
 | |
|               \$MS \textbackslash rightarrow VLR: (SRES\_\{AUC:1\})\$
 | |
|         \item
 | |
|               \$VLR \textbackslash rightarrow MS: (LAI\_1 , TMSI\_\{MS:1\})\$
 | |
|     \end{enumerate}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Bemerkungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         \$SRES\_\{AUC\} = A3(K\_\{AUC,MS\}, R\_\{AUC\});\$ A3 ist ein
 | |
|                         Algorithmus
 | |
|                   \item
 | |
|                         \$K\_\{BSC,MS\} = A8(K\_\{AUC,MS\}, R\_\{AUC\});\$ A8 ist ein
 | |
|                         Algorithmus
 | |
|                   \item
 | |
|                         \$R\_\{AUC\}, SRES\_\{AUC\}\$ sind Arrays mit mehreren Werten
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Dialog zur Wiederauthentifizierung mit demselben VLR:
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$MS \textbackslash rightarrow VLR: (LAI\_1 , TMSI\_\{MS:n\})\$
 | |
|                   \item
 | |
|                         \$VLR \textbackslash rightarrow MS: (R\_\{AUC:i\})\$
 | |
|                   \item
 | |
|                         \$MS \textbackslash rightarrow VLR: (SRES\_\{AUC:i\})\$
 | |
|                   \item
 | |
|                         \$VLR \textbackslash rightarrow MS: (LAI\_1, TMSI\_\{MS:n+1\})\$
 | |
|               \end{enumerate}
 | |
|         \item
 | |
|               Bemerkungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Standortbereichskennung \$LAI\_1\$ ermöglicht die Erkennung
 | |
|                         eines MS ,,coming in'' aus einem anderen Bereich
 | |
|                   \item
 | |
|                         Nach erfolgreicher Authentifizierung wird eine neue temporäre mobile
 | |
|                         Teilnehmeridentität \$TMSI\_\{MS:n+1\}\$ zugewiesen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Re-Authentifizierungsdialog mit Übergabe an das neue \$VLR\_2\$:
 | |
| 
 | |
|               \begin{enumerate}
 | |
|                   \def\labelenumi{\arabic{enumi}.}
 | |
|                   \item
 | |
|                         \$MS \textbackslash rightarrow VLR\_2: (LAI\_1, TMSI\_\{MS:n\})\$
 | |
|                   \item
 | |
|                         \$VLR\_2\$Rechtspfeil VLR\_1: (LAI\_1, TMSI\_\{MS:n\})\$
 | |
|                   \item
 | |
|                         \$VLR\_1 \textbackslash rightarrow VLR\_2: (TMSI\_\{MS:n\},
 | |
|                         IMSI\_\{MS\}, K\_\{BSC,MS\}, R\_\{AUC\}, SRES\_\{AUC\})\$
 | |
|                   \item
 | |
|                         \$VLR\_2 \textbackslash rightarrow MS: (R\_\{AUC:i\})\$
 | |
|                   \item
 | |
|                         \$MS \textbackslash rightarrow VLR\_2: (SRES\_\{AUC:i\})\$
 | |
|                   \item
 | |
|                         \$VLR\_2 \textbackslash rightarrow MS: (LAI\_2, TMSI\_\{MS:n+1\})\$
 | |
|               \end{enumerate}
 | |
|         \item
 | |
|               Bemerkungen:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Nur unbenutzte \$R\_\{AUC\}, ...\$ werden an \$VLR\_2\$ übertragen
 | |
|                   \item
 | |
|                         Dieses Schema kann nicht verwendet werden, und es ist ein
 | |
|                         Anfangsdialog erforderlich:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Wenn \$TMSI\_\{MS:n\}\$ bei \$VLR\_1\$ nicht verfügbar ist, oder
 | |
|                             \item
 | |
|                                   wenn \$VLR\_2\$ nicht in der Lage ist, \$VLR\_1\$ zu kontaktieren
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Wenn \$VLR\_1\$ und \$VLR\_2\$ zu verschiedenen Netzbetreibern
 | |
|                         gehören, kann der Handover nicht durchgeführt werden und die
 | |
|                         Verbindung wird unterbrochen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Nur das Mobiltelefon authentifiziert sich gegenüber dem Netz
 | |
|         \item
 | |
|               Die Authentifizierung basiert auf einem Challenge-Response-Verfahren:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Das AuC im Heimatnetz erzeugt Challenge-Response-Paare
 | |
|                   \item
 | |
|                         Der MSC/VLR im besuchten Netz prüft diese
 | |
|                   \item
 | |
|                         Challenge-Response-Vektoren werden ungeschützt im
 | |
|                         Signalisierungsnetz übertragen
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Die permanente Identifikation des Mobiltelefons (IMSI) wird nur dann
 | |
|               über die Funkverbindung gesendet, wenn dies unvermeidlich ist:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Dies ermöglicht einen teilweisen Schutz des Standorts.
 | |
|                   \item
 | |
|                         Da die IMSI manchmal im Klartext gesendet wird, ist es dennoch
 | |
|                         möglich, den Standort einiger Einheiten zu erfahren
 | |
|                   \item
 | |
|                         Ein Angreifer könnte sich als Basisstation ausgeben und die Handys
 | |
|                         ausdrücklich auffordern, ihre IMSI zu senden!
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Grundsätzlich besteht Vertrauen zwischen allen Betreibern!
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{General Packet Radio Service
 | |
|         (GPRS)}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               GPRS (General Packet Radio Service, allgemeiner Paketfunkdienst):
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Datenübertragung in GSM-Netzen auf der Basis von Paketvermittlung
 | |
|                   \item
 | |
|                         Nutzung freier Slots der Funkkanäle nur bei sendebereiten
 | |
|                         Datenpaketen (z.B. 115 kbit/s bei temporärer Nutzung von 8 Slots)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               GPRS-Netzelemente:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         GGSN (Gateway GPRS Support Node): Interworking-Einheit zwischen GPRS
 | |
|                         und PDN (Packet Data Network)
 | |
|                   \item
 | |
|                         SGSN (Serving GPRS Support Node): Unterstützt die MS (Standort,
 | |
|                         Abrechnung, Sicherheit, entspricht im Grunde dem MSC)
 | |
|                   \item
 | |
|                         GR (GPRS Register): Verwaltet Benutzeradressen (entspricht HLR)
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     (allgemeine GPRS-Beschreibung entnommen aus {[}Sch03a{]})
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-gprs-logical-architecture.png}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-gprs-protocol-architecture.png}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               SNDCP: Subnetwork Dependent Convergence Protocol
 | |
|         \item
 | |
|               GTP: GPRS Tunnelling Protocol
 | |
|     \end{itemize}
 | |
| 
 | |
|     GPRS-Sicherheit
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Sicherheitsziele:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Schutz vor unbefugter Nutzung des GPRS-Dienstes (Authentifizierung)
 | |
|                   \item
 | |
|                         Gewährleistung der Vertraulichkeit der Benutzeridentität (temporäre
 | |
|                         Identifizierung und Verschlüsselung)
 | |
|                   \item
 | |
|                         Gewährleistung der Vertraulichkeit von Benutzerdaten
 | |
|                         (Verschlüsselung)
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Realisierung von Sicherheitsdiensten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Die Authentifizierung ist grundsätzlich identisch mit der
 | |
|                         GSM-Authentifizierung:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   SGSN ist die Peer-Entität
 | |
|                             \item
 | |
|                                   Zwei separate temporäre Identitäten werden für GSM/GPRS verwendet
 | |
|                             \item
 | |
|                                   Nach erfolgreicher Authentifizierung wird die Verschlüsselung
 | |
|                                   eingeschaltet
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Vertraulichkeit der Benutzeridentität ist ähnlich wie bei GSM:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Die meiste Zeit wird nur die Paket-TMSI (P-TMSI) über die Luft
 | |
|                                   gesendet.
 | |
|                             \item
 | |
|                                   Optional können P-TMSI ,,Signaturen'' zwischen MS und SGSN
 | |
|                                   verwendet werden, um die Re-Authentifizierung zu beschleunigen
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Die Vertraulichkeit der Benutzerdaten wird zwischen MS und SGSN
 | |
|                         realisiert:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Unterschied zu GSM, wo nur zwischen MS und BTS verschlüsselt wird
 | |
|                             \item
 | |
|                                   Die Verschlüsselung wird in der LLC-Protokollschicht realisiert
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-gprs-handover-execution.png}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               GPRS unterstützt ein ,,optimiertes Handover'' einschließlich
 | |
|               Re-Authentifizierung (dies könnte jedoch eine Schwäche der P-TMSI
 | |
|               ,,Signatur'' verhindern)
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{UMTS Sicherheits
 | |
|         Architektur}
 | |
| 
 | |
|     % \includegraphics{Assets/NetworkSecurity-umts-security-architecture.png}
 | |
| 
 | |
|     \begin{enumerate}
 | |
|         \def\labelenumi{\arabic{enumi}.}
 | |
|         \item
 | |
|               Netzzugangssicherheit: Schutz vor Angriffen auf die Funkschnittstelle
 | |
|         \item
 | |
|               Sicherheit der Netzdomäne: Schutz vor Angriffen auf das drahtgebundene
 | |
|               Netz
 | |
|         \item
 | |
|               Sicherheit der Benutzerdomäne: sicherer Zugang zu den Mobilstationen
 | |
|         \item
 | |
|               Sicherheit der Anwendungsdomäne: sicherer Nachrichtenaustausch für
 | |
|               Anwendungen
 | |
|         \item
 | |
|               Sichtbarkeit und Konfigurierbarkeit der Sicherheit: Information des
 | |
|               Benutzers über den sicheren Betrieb
 | |
|     \end{enumerate}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Aktueller Stand der
 | |
|         UMTS-Sicherheitsarchitektur}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Sicherheit beim Netzzugang: Derzeit der am weitesten entwickelte Teil
 | |
|               der UMTS-Sicherheit (siehe unten)
 | |
|         \item
 | |
|               Netzbereichssicherheit: Dieser Teil ist größtenteils noch ausbaufähig
 | |
|               (in Spezifikationen bis Release 5)
 | |
|         \item
 | |
|               Sicherheit der Benutzerdomäne:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Verlangt grundsätzlich, dass sich der Benutzer gegenüber seinem User
 | |
|                         Services Identity Module (USIM) authentifiziert, z.B. durch Eingabe
 | |
|                         einer PIN
 | |
|                   \item
 | |
|                         Optional kann ein Terminal die Authentifizierung des USIM verlangen.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Anwendungsbereichssicherheit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Definiert ein Sicherheitsprotokoll, das zwischen den auf dem
 | |
|                         Endgerät/USIM laufenden Anwendungen und einem System im Netz
 | |
|                         verwendet wird (3GPP TS 23.048)
 | |
|                   \item
 | |
|                         Liegt etwas außerhalb des Bereichs der Mobilfunksicherheit
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Sichtbarkeit und Konfigurierbarkeit der Sicherheit: Definiert
 | |
|               Anforderungen, damit der Benutzer die Kontrolle über die
 | |
|               Sicherheitsmerkmale hat
 | |
|         \item
 | |
|               Im Folgenden konzentrieren wir uns auf die Netzzugangssicherheit
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{UMTS-Netzzugangssicherheitsdienste}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Vertraulichkeit der Benutzeridentität:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vertraulichkeit der Benutzeridentität: die Eigenschaft, dass die
 | |
|                         permanente Benutzeridentität (IMSI) eines Benutzers, dem ein Dienst
 | |
|                         bereitgestellt wird, auf der Funkzugangsverbindung nicht abgehört
 | |
|                         werden kann
 | |
|                   \item
 | |
|                         Vertraulichkeit des Benutzerstandorts: die Eigenschaft, dass die
 | |
|                         Anwesenheit oder die Ankunft eines Benutzers in einem bestimmten
 | |
|                         Gebiet nicht durch Abhören der Funkzugangsverbindung ermittelt
 | |
|                         werden kann
 | |
|                   \item
 | |
|                         Unverfolgbarkeit des Benutzers: die Eigenschaft, dass ein
 | |
|                         Eindringling durch Abhören der Funkzugangsverbindung nicht ableiten
 | |
|                         kann, ob verschiedene Dienste an denselben Benutzer geliefert werden
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Authentifizierung der Entität:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Benutzerauthentifizierung: die Eigenschaft, dass das dienende Netz
 | |
|                         die Identität des Benutzers bestätigt
 | |
|                   \item
 | |
|                         Netzauthentifizierung: die Eigenschaft, dass der Benutzer bestätigt,
 | |
|                         dass er mit einem dienenden Netz verbunden ist, das von dem HE des
 | |
|                         Benutzers autorisiert ist, ihm Dienste zu liefern; dies schließt die
 | |
|                         Garantie ein, dass diese Autorisierung aktuell ist.
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Vertraulichkeit:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vereinbarung über den Chiffrieralgorithmus: die Eigenschaft, dass
 | |
|                         der MS und der SN den Algorithmus, den sie später verwenden sollen,
 | |
|                         sicher aushandeln können
 | |
|                   \item
 | |
|                         Chiffrierschlüssel-Vereinbarung: die Eigenschaft, dass der MS und
 | |
|                         der SN sich auf einen Chiffrierschlüssel einigen, den sie später
 | |
|                         verwenden können
 | |
|                   \item
 | |
|                         Vertraulichkeit der Nutzdaten: die Eigenschaft, dass Nutzdaten an
 | |
|                         der Funkzugangsschnittstelle nicht abgehört werden können
 | |
|                   \item
 | |
|                         Vertraulichkeit der Signalisierungsdaten: die Eigenschaft, dass
 | |
|                         Signalisierungsdaten auf der Funkzugangsschnittstelle nicht abgehört
 | |
|                         werden können
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Integrität der Daten:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Vereinbarung eines Integritätsalgorithmus
 | |
|                   \item
 | |
|                         Integritätsschlüssel-Vereinbarung
 | |
|                   \item
 | |
|                         Datenintegrität und Ursprungsauthentifizierung von
 | |
|                         Signalisierungsdaten: die Eigenschaft, dass die empfangende Einheit
 | |
|                         (MS oder SN) in der Lage ist, zu überprüfen, dass
 | |
|                         Signalisierungsdaten seit dem Versand durch die sendende Einheit (SN
 | |
|                         oder MS) nicht auf unautorisierte Weise verändert wurden und dass
 | |
|                         der Datenursprung der empfangenen Signalisierungsdaten tatsächlich
 | |
|                         der behauptete ist
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
|     Einige UMTS-Authentifizierungsabkürzungen
 | |
| 
 | |
|     %\begin{longtable}[]{@{}ll@{}}
 | |
|     %    \toprule
 | |
|     %    \endhead
 | |
|     %    AK   & Anonymitätsschlüssel\tabularnewline
 | |
|     %    AMF  & Authentifizierungs-Management-Feld\tabularnewline
 | |
|     %    AUTN & Authentifizierungs-Token\tabularnewline
 | |
|     %    AV   & Authentifizierungsvektor\tabularnewline
 | |
|     %    CK   & Cipher Key\tabularnewline
 | |
|     %    HE   & Heimatumgebung\tabularnewline
 | |
|     %    IK   & Integritätsschlüssel\tabularnewline
 | |
|     %    RAND & Zufällige Herausforderung\tabularnewline
 | |
|     %%    SQN  & Sequenznummer\tabularnewline
 | |
|     %    SN   & Dienendes Netzwerk\tabularnewline
 | |
|     %    USIM & Benutzerdienste-Identitätsmodul\tabularnewline
 | |
|     %    XRES & Erwartete Antwort\tabularnewline
 | |
|     %    \bottomrule
 | |
|     %\end{longtable}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Überblick über den
 | |
|         UMTS-Authentifizierungsmechanismus}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-umts-authentication-mechanism.png}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-umts-authentication-vectors.png}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der HE/AuC beginnt mit der Erzeugung einer neuen Sequenznummer SQN
 | |
|                         und einer unvorhersehbaren Herausforderung RAND
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Für jeden Benutzer führt die HE/AuC einen Zähler \$SQN\_\{HE\}\$
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Ein Authentifizierungs- und Schlüsselverwaltungsfeld AMF ist im
 | |
|                         Authentifizierungs-Token jedes Authentifizierungsvektors enthalten.
 | |
|                   \item
 | |
|                         Anschließend werden die folgenden Werte berechnet:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   ein Nachrichtenauthentifizierungscode \$MAC = f1\_K(SQN
 | |
|                                   \textbar\textbar{} RAND \textbar\textbar{} AMF)\$, wobei f1 eine
 | |
|                                   Nachrichtenauthentifizierungsfunktion ist
 | |
|                             \item
 | |
|                                   eine erwartete Antwort \$XRES = f2\_K(RAND)\$, wobei f2 eine
 | |
|                                   (möglicherweise verkürzte) Nachrichtenauthentifizierungsfunktion
 | |
|                                   ist
 | |
|                             \item
 | |
|                                   ein Chiffrierschlüssel \$CK = f3\_K(RAND)\$, wobei f3 eine
 | |
|                                   Schlüsselerzeugungsfunktion ist
 | |
|                             \item
 | |
|                                   ein Integritätsschlüssel \$IK = f4\_K(RAND)\$, wobei f4 eine
 | |
|                                   Schlüsselerzeugungsfunktion ist
 | |
|                             \item
 | |
|                                   ein Anonymitätsschlüssel \$AK = f5\_K(RAND)\$, wobei f5 eine
 | |
|                                   Schlüsselerzeugungsfunktion ist
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Schließlich wird das Authentifizierungstoken \$AUTN = SQN
 | |
|                         \textbackslash oplus AK \textbar\textbar{} AMF \textbar\textbar{}
 | |
|                         MAC\$ konstruiert
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               % \includegraphics{Assets/NetworkSecurity-umts-user-authentication-usim.png}
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Nach Erhalt von RAND und AUTN berechnet das USIM:
 | |
|                   \item
 | |
|                         berechnet es den Anonymitätsschlüssel \$AK = f5\_K (RAND)\$
 | |
|                   \item
 | |
|                         ruft die Sequenznummer \$SQN = (SQN \textbackslash oplus AK)
 | |
|                         \textbackslash oplus AK\$ ab
 | |
|                   \item
 | |
|                         errechnet \$XMAC = f1\_K (SQN \textbar\textbar{} RAND
 | |
|                         \textbar\textbar{} AMF)\$ und
 | |
|                   \item
 | |
|                         vergleicht dies mit MAC, das in AUTN enthalten ist
 | |
|                   \item
 | |
|                         Wenn sie unterschiedlich sind, sendet der Benutzer die Ablehnung der
 | |
|                         Benutzerauthentifizierung mit Angabe der Ursache an den VLR/SGSN
 | |
|                         zurück, und der Benutzer bricht das Verfahren ab.
 | |
|                   \item
 | |
|                         Wenn die MAC korrekt ist, prüft das USIM, ob die empfangene
 | |
|                         Sequenznummer SQN im richtigen Bereich liegt:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Liegt die Sequenznummer nicht im korrekten Bereich, sendet das
 | |
|                                   USIM einen Synchronisationsfehler an den VLR/SGSN zurück,
 | |
|                                   einschließlich eines entsprechenden Parameters, und bricht das
 | |
|                                   Verfahren ab.
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Wenn die Sequenznummer im korrekten Bereich liegt, berechnet das
 | |
|                         USIM:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   die Authentifizierungsantwort \$RES = f2\_K(RAND)\$
 | |
|                             \item
 | |
|                                   den Chiffrierschlüssel \$CK = f3\_K(RAND)\$ und den
 | |
|                                   Integritätsschlüssel \$IK = f4\_K(RAND)\$
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsubsection{Schlussfolgerungen zur Sicherheit in UMTS
 | |
|         Release'99}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Die Sicherheit von UMTS Release '99 ist der Sicherheit von GSM sehr
 | |
|               ähnlich:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Der Heimat-AUC generiert Challenge-Response-Vektoren
 | |
|                   \item
 | |
|                         Die Challenge-Response-Vektoren werden ungeschützt über das
 | |
|                         Signalisierungsnetz an ein besuchtes Netz übertragen, das die
 | |
|                         Authentizität eines Handys überprüfen muss.
 | |
|                   \item
 | |
|                         Anders als bei GSM authentifiziert sich das Netz auch gegenüber dem
 | |
|                         Mobiltelefon
 | |
|                   \item
 | |
|                         Die IMSI, die einen Benutzer eindeutig identifiziert:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   wird immer noch dem besuchten Netz offenbart
 | |
|                             \item
 | |
|                                   kann immer noch von einem Angreifer, der sich als Basisstation
 | |
|                                   ausgibt, abgefragt werden, da es in diesem Fall keine
 | |
|                                   Netzauthentifizierung gibt!
 | |
|                         \end{itemize}
 | |
|                   \item
 | |
|                         Das Sicherheitsmodell setzt weiterhin Vertrauen zwischen allen
 | |
|                         Netzbetreibern voraus
 | |
|                   \item
 | |
|                         Vertraulichkeit ist nur auf der Funkstrecke gegeben
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Zusammenfassend lässt sich sagen, dass UMTS Release'99 genauso sicher
 | |
|               sein soll wie ein unsicheres Festnetz
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \subsection{Sicherheit in LTE-Netzen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               Eine Weiterentwicklung von UMTS, so dass viele der Sicherheitskonzepte
 | |
|               gleich geblieben sind
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Das Protokoll zur Authentifizierung und Schlüsselvereinbarung (AKA)
 | |
|                         ist im Wesentlichen dasselbe wie bei UMTS.
 | |
|                   \item
 | |
|                         Allerdings wird ein Master Key KASME abgeleitet, der dann zur
 | |
|                         Ableitung von Integritäts- und Verschlüsselungsschlüsseln verwendet
 | |
|                         wird
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Bemerkenswerte Unterschiede:
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         GSM-SIMs dürfen nicht mehr auf das Netz zugreifen
 | |
|                   \item
 | |
|                         KASUMI wird nicht mehr verwendet, stattdessen werden SNOW, AES oder
 | |
|                         ZUC (ein chinesischer Stream Cipher, der für LTE entwickelt wurde)
 | |
|                         eingesetzt
 | |
|                   \item
 | |
|                         Das zugehörige Festnetz (Evolved Packet Core genannt) ist
 | |
|                         vollständig paketvermittelt und normalerweise durch IPsec und IKEv2
 | |
|                         geschützt.
 | |
|                   \item
 | |
|                         Heim-eNBs
 | |
|               \end{itemize}
 | |
|         \item
 | |
|               Allerdings oft neue Namen für sehr ähnliche Dinge, z.B.,
 | |
| 
 | |
|               \begin{itemize}
 | |
|                   \item
 | |
|                         Anstelle der TMSI wird eine Globally Unique Temporary Identity
 | |
|                         (GUTI) verwendet, die aus Folgendem besteht:
 | |
| 
 | |
|                         \begin{itemize}
 | |
|                             \item
 | |
|                                   Einer PLMN-ID, MMEI und einer M-TMSI
 | |
|                             \item
 | |
|                                   Damit werden das Public Land Mobile Network (PLMN), die Mobility
 | |
|                                   Management Entity (MME), vergleichbar mit der MSC in GSM/UMTS, und
 | |
|                                   das mobile Gerät (M-TMSI) identifiziert
 | |
|                         \end{itemize}
 | |
|               \end{itemize}
 | |
|     \end{itemize}
 | |
| 
 | |
| 
 | |
|     \section{Referenzen}
 | |
| 
 | |
|     \begin{itemize}
 | |
|         \item
 | |
|               {[}AES01a{]} National Institute of Standards and Technology -
 | |
|               Specification for the Advanced Encryption Standard (AES)
 | |
|         \item
 | |
|               {[}DR97a{]} J. Daemen, V. Rijmen - AES Proposal: Rijndael
 | |
|               \href{http://csrc.nist.gov/encryption/aes/rijndael/Rijndael.pdf}{http://csrc.nist.gov/encryption/aes/rijndael/Rijndael.pdf}
 | |
|         \item
 | |
|               {[}FMS01a{]} S. Fluhrer, I. Mantin, A. Shamir - Weaknesses in the Key
 | |
|               Scheduling Algorithm of RC4. Eighth Annual Workshop on Selected Areas
 | |
|               in Cryptography
 | |
|         \item
 | |
|               {[}Riv01a{]} R. Rivest. - RSA Security Response to Weaknesses in Key
 | |
|               Scheduling Algorithm of RC4.
 | |
|               \href{http://www.rsa.com/rsalabs/node.asp}{http://www.rsa.com/rsalabs/node.asp}
 | |
|         \item
 | |
|               {[}SIR01a{]} A. Stubblefield, J. Ioannidis, A. D. Rubin. - Using the
 | |
|               Fluhrer, Mantin, and Shamir Attack to Break WEP. AT\&T Labs Technical
 | |
|               Report TD-4ZCPZZ
 | |
|         \item
 | |
|               {[}FKLS00{]} N. Ferguson, J. Kelsey, S. Lucks, B. Schneier, M. Stay,
 | |
|               D.Wagner, D. Whiting - Improved cryptanalysis of Rijndael. In FSE'00,
 | |
|               volume 1978 of Lecture Notes in Computer Science. Springer, 2000.
 | |
|         \item
 | |
|               {[}GM00{]} H. Gilbert and M. Minier - A Collision Attack on 7 Rounds
 | |
|               of Rijndael. In AES Candidate Conference, 2000.
 | |
|         \item
 | |
|               {[}BKR11{]} A. Bogdanov, D. Khovratovich, C. Rechberger - Biclique
 | |
|               cryptanalysis of the full AES. In ASIACRYPT'11, 2001.
 | |
|         \item
 | |
|               {[}Mir02{]} I. Mironov - (Not so) random shuffles of RC4. In Advances
 | |
|               in Cryptology - CRYPTO 2002
 | |
|         \item
 | |
|               {[}Kle08{]} A.Klein. - Attacks on the RC4 stream cipher. In Designs,
 | |
|               Codes and Cryptography
 | |
|         \item
 | |
|               {[}ETS12{]} ETSI/SAGE - Specification of the 3GPP confidentiality and
 | |
|               integrity algorithms; Document 2: Kasumi specification
 | |
|         \item
 | |
|               {[}Kue01{]} U. Kühn. - Cryptanalysis of Reduced-Round MISTY. In
 | |
|               Advances in Cryptology - EUROCRYPT 2001
 | |
|         \item
 | |
|               {[}BDN05{]} E. Biham, O. Dunkelman, N. Keller - A Related-Key
 | |
|               Rectangle Attack on the Full KASUMI , In ASIACRYPT 2005
 | |
|         \item
 | |
|               {[}DKS10{]} O. Dunkelman, N. Keller, A. Shamir - A practical-time
 | |
|               related-key attack on the KASUMI cryptosystem used in GSM and 3G
 | |
|               telephony. In CRYPTO'10
 | |
|         \item
 | |
|               {[}ETS06{]} ETSI/SAGE - Specification of the 3GPP Confidentiality and
 | |
|               Integrity Algorithms UEA2 \& UIA2. Document 2: SNOW 3G Specification
 | |
|         \item
 | |
|               {[}KY11{]} A. Kircanski A.M. Youssef. - On the Sliding Property of
 | |
|               SNOW 3G and SNOW 2.0 IET Inf. Secur.
 | |
|         \item
 | |
|               {[}Amo94{]} E. G. Amorosi. - Fundamentals of Computer Security
 | |
|               Technology
 | |
|         \item
 | |
|               {[}Cha95{]} Brent Chapman and Elizabeth Zwicky - Building Internet
 | |
|               Firewalls
 | |
|         \item
 | |
|               {[}For94b{]} Warwick Ford. - Computer Communications Security -
 | |
|               Principles, Standard Protocols and Techniques.
 | |
|         \item
 | |
|               {[}Gar96{]} Simson Garfinkel and Gene Spafford - Practical Internet \&
 | |
|               Unix Security
 | |
|         \item
 | |
|               {[}Men97a{]} A. J. Menezes, P. C. Van Oorschot, S. A. Vanstone -
 | |
|               Handbook of Applied Cryptography. CRC Press Series on Discrete
 | |
|               Mathematics and Its Applications
 | |
|         \item
 | |
|               {[}SR14{]} G. Schäfer, M. Rossberg - Netzsicherheit
 | |
|         \item
 | |
|               {[}Sch96{]} B. Schneier - Applied Cryptography Second Edition:
 | |
|               Protocols, Algorithms and Source Code in C
 | |
|         \item
 | |
|               {[}Sta13{]} W. Stallings - Cryptography and Network Security:
 | |
|               Principles and Practice
 | |
|         \item
 | |
|               {[}Sti05{]} D. R. Stinson - Cryptography: Theory and Practice
 | |
|               (Discrete Mathematics and Its Applications)
 | |
|         \item
 | |
|               {[}Bre88a{]} D. M. Bressoud. - Factorization and Primality Testing
 | |
|         \item
 | |
|               {[}Cor90a{]} T. H. Cormen, C. E. Leiserson, R. L. Rivest. Introduction
 | |
|               to Algorithms.
 | |
|         \item
 | |
|               {[}DH76{]} W. Diffie, M. E. Hellman - New Directions in Cryptography
 | |
|         \item
 | |
|               {[}ElG85a{]} T. ElGamal - A Public Key Cryptosystem and a Signature
 | |
|               Scheme based on Discrete Logarithms.
 | |
|         \item
 | |
|               {[}Kob87a{]} N. Koblitz - A Course in Number Theory and Cryptography
 | |
|         \item
 | |
|               {[}Men93a{]} A. J. Menezes - Elliptic Curve Public Key Cryptosystems.
 | |
|         \item
 | |
|               {[}Niv80a{]} I. Niven, H. Zuckerman - An Introduction to the Theory of
 | |
|               Numbers
 | |
|         \item
 | |
|               {[}RSA78{]} R. Rivest, A. Shamir und L. Adleman - A Method for
 | |
|               Obtaining Digital Signatures and Public Key Cryptosystems
 | |
|         \item
 | |
|               {[}KAFL10{]} T. Kleinjung, K. Aoki, J. Franke, A. Lenstra, E. Thomé,
 | |
|               J. Bos, P. Gaudry, A. Kruppa, P. Montgomery, D. Osvik, H. Te Riele,
 | |
|               A.Timofeev, P. Zimmermann - Factorization of a 768-bit RSA modulus
 | |
|         \item
 | |
|               {[}LM10{]} M. Lochter, J. Merkle - Elliptic Curve Cryptography (ECC)
 | |
|               Brainpool Standard Curves and Curve Generation
 | |
|         \item
 | |
|               {[}NIST99{]} NIST - Recommended Elliptic Curves for Federal Government
 | |
|               Use
 | |
|         \item
 | |
|               {[}NIST12{]} NIST - Recommendation for Key Management: Part 1: General
 | |
|               (Revision 3)
 | |
|         \item
 | |
|               {[}Ko87{]} N. Koblitz - Elliptic Curve Cryptosystems
 | |
|         \item
 | |
|               {[}BBP12{]} B.B. Brumley, M. Barbosa, D. Page, F. Vercauteren -
 | |
|               Practical realisation and elimination of an ECC-related software bug
 | |
|               attack
 | |
|         \item
 | |
|               {[}BT11{]} B.B. Brumley, N. Tuveri - Remote timing attacks are still
 | |
|               practical
 | |
|         \item
 | |
|               {[}BLR08{]} D. Bernstein, T. Lange, R. Rezaeian Farashahi - Binary
 | |
|               Edwards Curves
 | |
|         \item
 | |
|               {[}NIST09{]} NIST - Digital Signature Standard (DSS)
 | |
|         \item
 | |
|               {[}SM09{]} A. Sorniotti, R. Molva - A provably secure secret handshake
 | |
|               with dynamic controlled matching
 | |
|         \item
 | |
|               {[}BF03{]} D. Boneh, M. Franklin - Identity-Based Encryption from the
 | |
|               Weil Pairing
 | |
|         \item
 | |
|               {[}Sch85{]} R. Schoof - Elliptic Curves over Finite Fields and the
 | |
|               Computation of Square Roots mod p
 | |
|         \item
 | |
|               {[}Kra97a{]} H. Krawczyk, M. Bellare, R. Canetti. HMAC: Keyed-Hashing
 | |
|               for Message Authentication. Internet RFC 2104, February 1997.
 | |
|         \item
 | |
|               {[}Mer89a{]} R. Merkle. One Way Hash Functions and DES. Proceedings of
 | |
|               Crypto `89, Springer, 1989
 | |
|         \item
 | |
|               {[}Men97a{]} A. J. Menezes, P. C. Van Oorschot, S. A. Vanstone.
 | |
|               Handbook of Applied Cryptography, CRC Press Series on Discrete
 | |
|               Mathematics and Its Applications, Hardcover, 816 pages, CRC Press,
 | |
|               1997
 | |
|         \item
 | |
|               {[}NIST02{]} National Institute of Standards and Technology (NIST).
 | |
|               Secure Hash Standard. Federal Information Processing Standards
 | |
|               Publication (FIPS PUB), 180-2, 2002
 | |
|         \item
 | |
|               {[}Riv92a{]} R. L. Rivest. The MD5 Message Digest Algorithm. Internet
 | |
|               RFC 1321, April 1992
 | |
|         \item
 | |
|               {[}Rob96a{]} M. Robshaw. On Recent Results for MD2, MD4 and MD5. RSA
 | |
|               Laboratories' Bulletin, No. 4, November 1996
 | |
|         \item
 | |
|               {[}WYY05a{]} X. Wang, Y. L. Yin, H. Yu. Finding collisions in the full
 | |
|               SHA-1. In Advances in Cryptology - CRYPTO'05, pages 18-36, 2005
 | |
|         \item
 | |
|               {[}Yuv79a{]} G. Yuval. How to Swindle Rabin. Cryptologia, July 1979.
 | |
|         \item
 | |
|               {[}WLYF04{]} X. Wang, D. Feng, X. Lai, H. Yu. Collisions for Hash
 | |
|               Functions MD4, MD5, HAVAL-128 and RIPEMD. IACR Eprint archive, 2004.
 | |
|         \item
 | |
|               {[}LWW05{]} A. Lenstra, X. Wang, B. de Weger. Colliding X.509
 | |
|               Certificates. Cryptology ePrint Archive: Report 2005/067. 2005
 | |
|         \item
 | |
|               {[}LD05{]} S. Lucks, M. Daum. The Story of Alice and her Boss. In Rump
 | |
|               session of Eurocrypt'05. 2005.
 | |
|         \item
 | |
|               {[}Kl06{]} V. Klima. Tunnels in Hash Functions: MD5 Collisions Within
 | |
|               a Minute (extended abstract), Cryptology ePrint Archive: Report
 | |
|               2006/105, 2006
 | |
|         \item
 | |
|               {[}SA09{]} Y. Sasaki, K. Aoki. Finding Preimages in Full MD5 Faster
 | |
|               Than Exhaustive Search. Advances in Cryptology - EUROCRYPT'09. 2009
 | |
|         \item
 | |
|               {[}Man11{]} M. Manuel. Classification and Generation of Disturbance
 | |
|               Vectors for Collision Attacks against SHA-1. Journal Designs, Codes
 | |
|               and Cryptography. Volume 59, Issue 1-3, pages 247-263, 2011
 | |
|         \item
 | |
|               {[}GH04{]} H. Gilbert, H. Handschuh. Security Analysis of SHA-256 and
 | |
|               Sisters. Lecture Notes in Computer Science, 2004, Volume 3006/2004,
 | |
|               pages 175-193. 2004
 | |
|         \item
 | |
|               {[}AGM09{]} K. Aoki, J. Guo, K. Matusiewicz, V. Sasaki, L. Wang.
 | |
|               Preimages for Step-Reduced SHA-2. Advances in Cryptology - ASIACRYPT
 | |
|               2009. pages 578-597, 2009
 | |
|         \item
 | |
|               {[}KK06{]} J. Kelsey, T. Kohno. Herding Hash Functions and the
 | |
|               Nostradamus Attack. Advances in Cryptology - EUROCRYPT'06. 2006
 | |
|         \item
 | |
|               {[}Jou04{]} A. Joux: Multicollisions in Iterated Hash Functions.
 | |
|               Application to Cascaded Constructions. CRYPTO 2004: pages 306-316.
 | |
|               2004
 | |
|         \item
 | |
|               {[}MV04{]} D. McGrew, J. Viega. The Security and Performance of the
 | |
|               Galois/Counter Mode (GCM) of Operation (Full Version).
 | |
|               \href{http://eprint.iacr.org/2004/193.}{http://eprint.iacr.org/2004/193.}
 | |
|         \item
 | |
|               {[}Fer05{]} N. Ferguson. Authentication weaknesses in GCM. 2005
 | |
|         \item
 | |
|               {[}Dwo07{]} M. Dworkin. Recommendation for Block Cipher Modes of
 | |
|               Operation: Galois/Counter Mode (GCM) and GMAC. NIST Special
 | |
|               Publication 800-38D. 2007
 | |
|         \item
 | |
|               {[}Saa11{]} M. Saarinen. GCM, GHASH and Weak Keys. Cryptology ePrint
 | |
|               Archive, Report 2011/202,
 | |
|               \href{http://eprint.iacr.org/2011/202,}{http://eprint.iacr.org/2011/202,}
 | |
|               2011
 | |
|         \item
 | |
|               {[}BDP07{]} G. Bertoni, J. Daemen, M. Peeters, G. Van Assche. Sponge
 | |
|               Functions. Ecrypt Hash Workshop 2007
 | |
|         \item
 | |
|               {[}BDP11a{]} G. Bertoni, J. Daemen, M. Peeters, G. Van Assche.
 | |
|               Cryptographic sponge functions. Research report. Version 0.1. 2011
 | |
|         \item
 | |
|               {[}BDP11b{]} G. Bertoni, J. Daemen, M. Peeters, G. Van Assche. The
 | |
|               Keccak reference. Research report. Version 3.0. 2011
 | |
|         \item
 | |
|               {[}BM92{]} BELLOVIN, S.; MERRITT, M.: Encrypted Key Exchange:
 | |
|               Password-Based Protocols Secure Against Dictionary Attacks. In: IEEE
 | |
|               Computer Society Symposium on Research in Security and Privacy, 1992
 | |
|         \item
 | |
|               {[}Bry88{]} BRYANT, R.: Designing an Authentication System: A Dialogue
 | |
|               in Four Scenes. 1988. Project Athena, Massachusetts Institute of
 | |
|               Technology, Cambridge, USA
 | |
|         \item
 | |
|               {[}GNY90{]} GONG, L.; NEEDHAM, R. M.; YAHALOM, R.: Reasoning About
 | |
|               Belief in Cryptographic Protocols. In: Symposium on Research in
 | |
|               Security and Privacy IEEE Computer Society, IEEE Computer Society
 | |
|               Press, May 1990
 | |
|         \item
 | |
|               {[}KNT94{]} KOHL, J.; NEUMAN, B.; TS'O, T.: The Evolution of the
 | |
|               Kerberos Authentication Service. In: BRAZIER, F.; JOHANSEN, D. (Eds):
 | |
|               Distributed Open Systems, IEEE Computer Society Press, 1994
 | |
|         \item
 | |
|               {[}NS78{]} NEEDHAM, R. M.; SCHROEDER, M. D.: Using Encryption for
 | |
|               Authentication in Large Networks of Computers. In: Communications of
 | |
|               the ACM, 1978
 | |
|         \item
 | |
|               {[}NS87{]} NEEDHAM, R.; SCHROEDER, M.: Authentication Revisited. In:
 | |
|               Operating Systems Review, 1987
 | |
|         \item
 | |
|               {[}NYH+05{]} NEUMAN, C.; YU, T.; HARTMAN, S. ; RAEBURN, K.: The
 | |
|               Kerberos Network Authentication Service (V5)\_. 2005. - RFC 4120,
 | |
|               IETF, Status: Standard,
 | |
|               \href{https://tools.ietf.org/html/rfc4120}{https://tools.ietf.org/html/rfc4120}
 | |
|         \item
 | |
|               {[}OR87{]} OTWAY, D.; REES, O.: Efficient and Timely Mutual
 | |
|               Authentication. In: Operating Systems Review, 1987
 | |
|         \item
 | |
|               {[}Pat97{]} PATEL, S.: Number Theoretic Attacks On Secure Password
 | |
|               Schemes. In: IEEE Symposium on Security and Privacy, 1997
 | |
|         \item
 | |
|               {[}Sch05{]} SCHAAD, J.: Internet X.509 Public Key Infrastructure
 | |
|               Certificate Request Message Format (CRMF). September 2005. - RFC 4211,
 | |
|               IETF, Status: Proposed Standard,
 | |
|               \href{https://tools.ietf.org/html/rfc4211}{https://tools.ietf.org/html/rfc4211}
 | |
|         \item
 | |
|               {[}RFC1661{]} W. Simpson. \emph{The Point-to-Point Protocol (PPP).}
 | |
|               RFC 1661, 1994.
 | |
|         \item
 | |
|               {[}RFC1968{]} G. Meyer. \emph{The PPP Encryption Control Protocol
 | |
|                   (ECP).} RFC 1968, 1996.
 | |
|         \item
 | |
|               {[}RFC1994{]} W. Simpson. \emph{PPP Challenge Handshake Authentication
 | |
|                   Protocol (CHAP).} RFC 1994 (obsoletes RFC 1334), 1996.
 | |
|         \item
 | |
|               {[}RFC2284{]} L. Blunk, J. Vollbrecht. \emph{PPP Extensible
 | |
|                   Authentication Protocol (EAP).} RFC 2284, 1998.
 | |
|         \item
 | |
|               {[}RFC2289{]} N. Haller, C. Metz, P. Nesser, M. Straw. \emph{A
 | |
|                   One-Time Password System.} RFC 2289, 1998.
 | |
|         \item
 | |
|               {[}RFC2341{]} A. Valencia, M. Littlewood, T. Kolar. \emph{Cisco Layer
 | |
|                   Two Forwarding Protocol (L2F).} RFC 2341, 1998.
 | |
|         \item
 | |
|               {[}RFC2419{]} K. Sklower, G. Meyer. \emph{The PPP DES Encryption
 | |
|                   Protocol, Version 2 (DESE-bis).} RFC 2419 (obsoletes RFC 1969), 1998.
 | |
|         \item
 | |
|               {[}RFC2420{]} H. Kummert. \emph{The PPP Triple-DES Encryption Protocol
 | |
|                   (3DESE).} RFC 2420, 1998.
 | |
|         \item
 | |
|               {[}RFC2433{]} G. Zorn, S. Cobb. \emph{Microsoft PPP CHAP Extensions.}
 | |
|               RFC 2433, 1998.
 | |
|         \item
 | |
|               {[}RFC2637{]} K. Hamzeh, G. Pall , W. Verthein, J. Taarud, W. Little,
 | |
|               G. Zorn. \emph{Point-to-Point Tunneling Protocol (PPTP).} RFC 2637,
 | |
|               1999.
 | |
|         \item
 | |
|               {[}RFC2661{]} W. Townsley, A. Valencia, A. Rubens, G. Pall, G. Zorn,
 | |
|               B. Palter. \emph{Layer Two Tunneling Protocol (L2TP).} RFC 2661, 1999.
 | |
|         \item
 | |
|               {[}RFC2828{]} R. Shirey. \emph{Internet Security Glossary.} RFC 2828,
 | |
|               2000.
 | |
|         \item
 | |
|               {[}RFC3078{]} G. Pall, G. Zorn. \emph{Microsoft Point to Point
 | |
|                   Encryption Protocol (MPPE).} RFC 3078, 2001.
 | |
|         \item
 | |
|               {[}SM98a{]} B. Schneier, Mudge. \emph{Cryptanalysis of Microsoft's
 | |
|                   Point-to-Point Tunneling Protocol (PPTP).} Proceedings of the 5th ACM
 | |
|               Conference on Communications and Computer Security, ACM Press, 1998.
 | |
|         \item
 | |
|               {[}SMW99a{]} B. Schneier, Mudge, D. Wagner. \emph{Cryptanalysis of
 | |
|                   Microsoft's PPTP Authentication Extensions (MSCHAPv2).} Counterpane
 | |
|               Systems, 1999.
 | |
|         \item
 | |
|               {[}FH98a{]} P. Ferguson, G. Huston. \emph{What is a VPN?} The Internet
 | |
|               Protocol Journal, Cisco Systems. 1998.
 | |
|         \item
 | |
|               {[}ATM99a{]} ATM Forum. \emph{ATM Security Specification Version 1.0.}
 | |
|               AF-SEC-0100.000,
 | |
|         \item
 | |
|               {[}RFC2401{]} R. Atkinson, S. Kent. Security Architecture for the
 | |
|               Internet Protocol. RFC 2401, Internet Engineering Taskforce (IETF),
 | |
|               1998.
 | |
|         \item
 | |
|               {[}RFC2402{]} R. Atkinson, S. Kent. IP Authentication Header (AH). RFC
 | |
|               2402, IETF, 1998. {[}RFC2403{]} C. Madson, R. Glenn. The Use of
 | |
|               HMAC-MD5-96 within ESP and AH. RFC 2403, IETF, 1998.
 | |
|         \item
 | |
|               {[}RFC2404{]} C. Madson, R. Glenn. The Use of HMAC-SHA-1-96 within ESP
 | |
|               and AH. RFC 2404, IETF, 1998.
 | |
|         \item
 | |
|               {[}RFC2405{]} C. Madson, N. Doraswami. The ESP DES-CBC Cipher
 | |
|               Algorithm With Explicit IV. RFC 2405, IETF, 1998.
 | |
|         \item
 | |
|               {[}RFC2406{]} R. Atkinson, S. Kent. IP Encapsulating Security Payload
 | |
|               (ESP). RFC 2406, IETF, 1998.
 | |
|         \item
 | |
|               {[}RFC2407{]} D. Piper. The Internet IP Security Domain of
 | |
|               Interpretation for ISAKMP. RFC 2407, IETF, 1998.
 | |
|         \item
 | |
|               {[}RFC2408{]} D. Maughan, M. Schertler, M. Schneider, J. Turner.
 | |
|               Internet Security Association and Key Management Protocol (ISAKMP).
 | |
|               RFC 2408, - IETF, 1998.
 | |
|         \item
 | |
|               {[}RFC2409{]} D. Harkins, D. Carrel. The Internet Key Exchange (IKE).
 | |
|               RFC 2409, IETF, 1998.
 | |
|         \item
 | |
|               {[}RFC2857{]} A. Keromytis, N. Provos. The Use of HMAC-RIPEMD-160-96
 | |
|               within ESP and AH. RFC 2857, IETF, 2000.
 | |
|         \item
 | |
|               {[}RFC3947{]} T. Kivinen, B. Swander, A. Huttunen, V. Volpe:
 | |
|               \emph{Negotiation of NAT-Traversal in the IKE.} RFC 3947, IETF, 2005.
 | |
|         \item
 | |
|               {[}RFC3948{]} A. Huttunen, B. Swander, V. Volpe, L. DiBurro, M.
 | |
|               Stenberg: \emph{UDP Encapsulation of IPsec ESP Packets.} RFC 3948,
 | |
|               IETF, 2005.
 | |
|         \item
 | |
|               {[}RFC4306{]} C. Kaufman: \emph{Internet Key Exchange (IKEv2)
 | |
|                   Protocol.} RFC 4306, Internet Engineering Taskforce (IETF), 2005.
 | |
|         \item
 | |
|               {[}NiMe08{]} P. Nikander, J. Melen: \emph{A Bound End-to-End Tunnel
 | |
|                   (BEET) mode for ESP.} Internet-Draft, IETF Network Working Group,
 | |
|               2008.
 | |
|         \item
 | |
|               {[}Bhai08{]} Y. Bhaiji: \emph{Network Security Technologies and
 | |
|                   Solutions} , Cisco Press, 2008.
 | |
|         \item
 | |
|               {[}Fluh01{]} S. Fluhrer: \emph{Tunnel Endpoint Discovery.} Expired
 | |
|               Internet-Draft, IETF IPSP Working Group, 2001.
 | |
|         \item
 | |
|               {[}Tran06{]} T.H. Tran: \emph{Proactive Multicast-Based IPSEC
 | |
|                   Discovery Protocol and Multicast Extension.} Military Communications
 | |
|               Conference, 2006.
 | |
|         \item
 | |
|               {[}FBJW08{]} R. Figueiredo, P. O. Boykin, P. St. Juste, D. Wolinsky:
 | |
|               \emph{Social VPNs: Integrating Overlay and Social Networks for
 | |
|                   Seamless P2P Networking'.} IEEE WETICE/COPS, 2008.
 | |
|         \item
 | |
|               {[}RSS10{]} M. Rossberg, T. Strufe, G. Schaefer: \emph{Distributed
 | |
|                   Automatic Configuration of Complex IPsec-Infrastructures.} Journal of
 | |
|               Network and Systems Management, Volume 18, Issue 3, 2010.
 | |
|         \item
 | |
|               {[}RSSM09{]} M. Rossberg, W. Steudel, G.Schaefer, M. Martius:
 | |
|               \emph{Eine Software-Architektur zur Konstruktion flexibler
 | |
|                   IPsec-Infrastrukturen.} BSI 11. Deutscher IT-Sicherheitskongress,
 | |
|               2009.
 | |
|         \item
 | |
|               {[}BKS98a{]} D. Bleichenbacher, B. Kaliski, J. Staddon. \emph{Recent
 | |
|                   Results on PKCS \#1: RSA Encryption Standard.} RSA Laboratories'
 | |
|               Bulletin 7, 1998
 | |
|         \item
 | |
|               {[}Cop96a{]} D. Coppersmith, M. K. Franklin, J. Patarin, M. K. Reiter.
 | |
|               \emph{Low Exponent RSA with Related Messages.} In Advance in
 | |
|               Cryptology -\/- Eurocrypt'96, U. Maurer, Ed., vol. 1070 of Lectures
 | |
|               Notes in Computer Science, Springer-Verlag, 1996
 | |
|         \item
 | |
|               {[}FKK96a{]} A. O. Freier, P. Karlton, P. C. Kocher. \emph{The SSL
 | |
|                   Protocol Version 3.0.} Netscape Communications Corporation, 1996
 | |
|         \item
 | |
|               {[}DA99{]} T. Dierks, C. Allen. \emph{The TLS Protocol Version 1.0.}
 | |
|               RFC 2246, 1999
 | |
|         \item
 | |
|               {[}DR08{]} T. Dierks, E. Rescorla. \emph{The Transport Layer Security
 | |
|                   (TLS) Protocol Version 1.2.} RFC 5246, 2008
 | |
|         \item
 | |
|               {[}RD10{]} J. Rizzo, T. Duong, Practical Padding Oracle Attacks, 4th
 | |
|               USENIX conference on Offensive technologies (WOOT), 2010
 | |
|         \item
 | |
|               {[}RRDO10{]} E. Rescorla, M. Ray, S. Dispensa, N. Oskov.
 | |
|               \emph{Transport Layer Security (TLS) Renegotiation Indication
 | |
|                   Extension} , RFC 5746. 2010
 | |
|         \item
 | |
|               {[}Zo11{]} T. Zoller. \emph{TLS \& SSLv3 renegotiation vulnerability.}
 | |
|               Technical report, G-SEC. 2011
 | |
|         \item
 | |
|               {[}RM12{]} E. Rescorla, N. Modadugu. \emph{Datagram Transport Layer
 | |
|                   Security Version 1.2.} RFC 6347, 2012
 | |
|         \item
 | |
|               {[}LL06{]} S. Lehtinen, C. Lonvick. \emph{The Secure Shell (SSH)
 | |
|                   Protocol Assigned Numbers.} RFC 4250, 2006
 | |
|         \item
 | |
|               {[}YL06a{]} T. Ylonen, C. Lonvick. \emph{The Secure Shell (SSH)
 | |
|                   Protocol Architecture.} RFC 4251, 2006
 | |
|         \item
 | |
|               {[}YL06b{]} T. Ylonen, C. Lonvick. \emph{The Secure Shell (SSH)
 | |
|                   Authentication Protocol.} RFC 4252, 2006 -{[}YL06c{]} T. Ylonen, C.
 | |
|               Lonvick. \emph{The Secure Shell (SSH) Transport Layer Protocol} , RFC
 | |
|               4253, 2006 -{[}YL06d{]} T. Ylonen, C. Lonvick. \emph{The Secure Shell
 | |
|                   (SSH) Connection Protocol.} RFC 4254, 2006 -{[}SG09{]} D. Stebila, J.
 | |
|               Green. \emph{Elliptic Curve Algorithm Integration in the Secure Shell
 | |
|                   Transport Layer} , RFC 5656. 2009 -{[}IS09{]} K. Igoe, J. Solinas.
 | |
|               \emph{AES Galois Counter Mode for the Secure Shell Transport Layer
 | |
|                   Protocol.} RFC 5647. 2009
 | |
|         \item
 | |
|               {[}Müller99a{]} G. Müller, K. Rannenberg (Ed.). \emph{Multilateral
 | |
|                   Security in Communications.} Addison-Wesley-Longman, 1999
 | |
|         \item
 | |
|               {[}BGW01a{]} N. Borisov, I. Goldberg, D. Wagner. Intercepting Mobile
 | |
|               Communications: The Insecurity of 802.11. 7th ACM SIGMOBILE Annual
 | |
|               International Conference on Mobile Computing and Networking (MOBICOM),
 | |
|               Rome, Italy, July 2001
 | |
|         \item
 | |
|               {[}FMS01a{]} S. Fluhrer, I. Mantin, A. Shamir. Weaknesses in the Key
 | |
|               Scheduling Algorithm of RC4. Eighth Annual Workshop on Selected Areas
 | |
|               in Cryptography, August 2001 {[}IEEE12{]} IEEE. Wireless LAN Medium
 | |
|               Access Control (MAC) and Physical Layer (PHY) Specifications. IEEE Std
 | |
|               802.11-2012, The Institute of Electrical and Electronics Engineers
 | |
|               (IEEE), 2012
 | |
|         \item
 | |
|               {[}Riv01a{]} R. Rivest. RSA Security Response to Weaknesses in Key
 | |
|               Scheduling Algorithm of RC4.
 | |
|               \href{http://www.rsa.com/rsalabs/technotes/wep.html}{http://www.rsa.com/rsalabs/technotes/wep.html},
 | |
|               2001
 | |
|         \item
 | |
|               {[}SIR01a{]} A. Stubblefield, J. Ioannidis, A. D. Rubin. Using the
 | |
|               Fluhrer, Mantin, and Shamir Attack to Break WEP. AT\&T Labs Technical
 | |
|               Report TD-4ZCPZZ, August 2001
 | |
|         \item
 | |
|               {[}TWP07{]} E. Tews, R. P. Weinmann, A. Pyshkin. Breaking 104 bit WEP
 | |
|               in less than 60 seconds. Information Security Applications, 188-202,
 | |
|               2007
 | |
|         \item
 | |
|               {[}WM02a{]} N. C. Winget, T. Moore, D. Stanley, J. Walker. IEEE
 | |
|               802.11i Overview. NIST 802.11 Wireless LAN Security Workshop, Falls
 | |
|               Church, Virginia, December 4-5, 2002
 | |
|         \item
 | |
|               {[}RFC2898{]}B. Kaliski. PKCS \#5: Password-Based Cryptography
 | |
|               Specification Version 2.0. IETF Request for Comments 2898, 2000
 | |
|         \item
 | |
|               {[}RFC3394{]}J. Schaad, R. Housley. Advanced Encryption Standard (AES)
 | |
|               Key Wrap Algorithm. IETF Request for Comments 3394, 2002
 | |
|         \item
 | |
|               {[}3GPP00a{]} 3GPP. 3G Security: Security Architecture (Release 1999).
 | |
|               3rd Generation Partnership Project, Technical Specification Group
 | |
|               Services and System Aspects, 2000
 | |
|         \item
 | |
|               {[}3GPP02a{]} 3GPP. 3G Security: Security Architecture (Release 5),
 | |
|               2002
 | |
|         \item
 | |
|               {[}3GPP02b{]} 3GPP. Security Mechanisms for the (U)SIM application
 | |
|               toolkit, December 2002
 | |
|         \item
 | |
|               {[}ETSI93a{]} ETSI TC-GSM. GSM Security Aspects (GSM 02.09).
 | |
|               Recommendation GSM, European Telecommunications Standards Institute
 | |
|               (ETSI), 1993
 | |
|         \item
 | |
|               {[}ETSI94a{]} ETSI TC-SMG. European Digital Cellular
 | |
|               Telecommunications System (Phase 2): Security Related Network
 | |
|               Functions (GSM 03.20). ETS 300 534, European Telecommunications
 | |
|               Standards Institute (ETSI), 1994
 | |
|         \item
 | |
|               {[}Les02a{]} Lescuyer, P. UMTS -- Grundlagen, Architektur und
 | |
|               Standard. dpunkt.verlag, 2002
 | |
|         \item
 | |
|               {[}Sch03a{]} J. Schiller. Mobile Communications - The Course.
 | |
|               \href{http://www.inf.fu-berlin.de/inst/ag-tech/resources/mobilecommunications.htm}{http://www.inf.fu-berlin.de/inst/ag-tech/resources/mobilecommunications.htm}
 | |
|         \item
 | |
|               {[}Sch03b{]} J. Schiller. Mobile Communications. second edition,
 | |
|               Addison-Wesley, 2003
 | |
|     \end{itemize}
 | |
| 
 | |
| \end{multicols}
 | |
| \end{document} |