Informatik/Network Security - Cheatsheet.tex
2022-02-04 11:18:04 +01:00

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}