Systemsicherheit/Assignment 4 - Protokollsicherheit (Praxis)/abgabe.tex
2024-05-25 11:56:36 +02:00

152 lines
No EOL
6 KiB
TeX

\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage{listings}
\usepackage{xspace}
\usepackage{amsmath}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{xifthen}
\usepackage{xcolor}
\usepackage[a4paper,lmargin={2cm},rmargin={2cm},tmargin={2.5cm},bmargin = {2.5cm},headheight = {4cm}]{geometry}
\usepackage{amsmath,amssymb,amstext,amsthm}
\usepackage[shortlabels]{enumitem}
\usepackage[headsepline]{scrlayer-scrpage}
\pagestyle{scrheadings}
\usepackage{titling}
\usepackage{etoolbox}
\usepackage{tikz}
\usetikzlibrary{shapes, arrows, calc, automata, arrows.meta, positioning,decorations.pathmorphing,backgrounds,decorations.markings,decorations.pathreplacing, graphs}
\usetikzlibrary{matrix,shapes,arrows,positioning,chains, calc}
\usetikzlibrary{arrows.meta,matrix,shapes,arrows,positioning,chains, calc}
\tikzset{%
initial text={},
state/.style={circle, draw, minimum size=.6cm},
every initial by arrow/.style={-stealth},
every loop/.append style={-stealth},
>=stealth
}
\ohead{\parbox[t]{.5\linewidth}{\raggedleft \theauthor}}
\ihead{System Security, SoSe 24, Assignment \thesheetnr}
% Sheet number
\newcounter{sheetnr}
\newcommand{\sheetnr}[1]{\setcounter{sheetnr}{#1}}
% Exercise environments
\newenvironment{exercise}[2][]{\section*{#2\expandafter\ifstrempty\expandafter{#1}{}{\ #1}}}{}
\newenvironment{subexercises}{\begin{enumerate}[a), font=\bfseries, wide, labelindent=0pt]}{\end{enumerate}}
\newenvironment{subsubexercises}{\begin{enumerate}[i), font=\bfseries, wide, labelindent=0pt]}{\end{enumerate}}
% Makros
% MACRO for whole diagram
% #1: total width of diagram
% #2: total height of diagram
% #3: nodes, paths, ...
\newcommand\protocolflow[3]{
\begin{center}
\begin{tikzpicture}[x=#1cm,y=#2cm]
#3
\end{tikzpicture}
\end{center}
}
% MACRO for path line shortening
% #1: start coordinate
% #2: target coordinate
% #3: text above arrow
\newcommand{\package}[3]{
\path[*-{latex[width=5pt, length=5pt]}] (#1) edge node [above] {#3} (#2);
}
% Anpassen --> %
\author{Benjamin Haschka\\Sascha Tommasone\\Paul Zinselmeyer}
\sheetnr{4}
% <-- Anpassen %
\begin{exercise}[Warm Up]{2.1.}
\protocolflow{1.5}{0.75}{
\node[] (A) at (0,0) {\textbf{Alice}};
\node[] (E) at (3,0) {\textbf{Eve}};
\node[] (S) at (7,0) {\textbf{Server}};
\node[] (B) at (10,0) {\textbf{Bob}};
\package{0,-1}{3,-1}{$Alice, Bob$}
\package{3,-2}{7,-2}{$Alice, \textcolor{red}{Eve}$}
\package{7,-3}{0,-3}{$\{ K \}_{K_{AT}}, \{ K \}_{\textcolor{red}{K_{ET}}}$}
\package{0,-4}{3,-4}{$Trent, Alice, \{ K \}_{\textcolor{red}{K_{ET}}}$}
\package{3,-5}{0,-5}{$\{ Hello\ Alice! \}_K$}
}
\textbf{Assumptions}
\begin{itemize}
\item[(1)] Eve ist Nutzer des Protokolls, damit ein \textit{Key Encryption Key} (KEK) $K_{ET}$ zwischen ihr und dem KDC existiert.
\item[(2)] Eve unterliegt dem Angreifermodell \textit{aktiver MitM}.
\end{itemize}
\noindent
\textbf{Attack}
\begin{enumerate}
\item Eve fängt die erste Nachricht [$Alice, Bob$] von Alice ab, ersetzt $Bob$ durch ihren eigenen Namen und leitet die Nachricht anschließend an den Server weiter.
\item Der Server antwortet mit [$\{ K \}_{K_{AT}}, \{ K \}_{K_{ET}}$]. Eve lässt diese Nachricht durch.
\item Nachdem Alice den Session Key erhalten hat, schickt sie den mit $K_{ET}$ verschlüsselten Session Key $K$ an Bob. Damit Bob weiß, mit wem der Session Key ist und wie dieser verschlüsselt ist, schickt Alice nicht nur das Chiffrat, sondern $Trent, Alice$ ebenfalls mit.
\item Eve fängt die Nachricht [$Trent, Alice, \{ K \}_{K_{ET}}$] ab. Aus (1) folgt, dass Eve in Besitz von $K_{ET}$ ist und kann daher den Session Key $K$ entpacken. Um das Protokoll zu beenden, und Alice endgültig davon zu überzeugen, dass sie Bob ist, schickt Eve $\{ Hello\ Alice! \}_K$ an Alice zurück.
\end{enumerate}
\noindent
\textbf{Evaluation}
\begin{itemize}
\item
\end{itemize}
\end{exercise}
\newpage
\begin{exercise}[Key Establishment]{2.2.}
\protocolflow{1.5}{0.75}{
\node[] (A) at (0,0) {\textbf{Alice}};
\node[] (E) at (5,0) {\textbf{Eve}};
\node[] (B) at (8,0) {\textbf{Bob}};
\node[] (CA) at (-1,-4.5) {\text{check $N_A$}};
\package{0,-1}{5,-1}{$ID_A, N_A$}
\textcolor{red}{\package{5,-2}{0,-2}{$ID_A, N_A$}}
\package{0,-3}{5,-3}{$\{ N_A, K'_{AB} \}_{K_{AB}}$}
\textcolor{red}{\package{5,-4}{0,-4}{$\{ N_A, K'_{AB} \}_{K_{AB}}$}}
\package{0,-5}{5,-5}{$\{ N_A \}_{K'_{AB}}$}
\package{5,-6}{0,-6}{\textcolor{red}{$N'_B$}}
}
\textbf{Assumptions}
\begin{itemize}
\item[(1)] Eve unterliegt dem Angreifermodell \textit{aktiver MitM}.
\end{itemize}
\noindent
\textbf{Attack}
\begin{enumerate}
\item Alice startet das Protokoll mit der Nachricht [$ID_A, N_A$] an Bob, die als Challenge dient. Bevor die Nachricht Bob erreicht, reflektiert Eve diese zurück an Alice.
\item Alice hat somit ihre eigene Challenge selbst erhalten und beantwortet diese, dem Protokoll konform, mit der Response [$\{ N_A, K'_{AB} \}_{K_{AB}}$]. Erneut, bevor die Nachricht Bob erreicht, reflektiert Eve diese zurück an Alice und beantwortet damit die ihr gestellte Challenge.
\item Alice erhält die Response von Eve, im Glauben sie wäre von Bob und verifiziert nach Entschlüsselung die Nonce $N_A$. Die Verifikation ist bei diesem Angriff immer erfolgreich, weshalb Alice mit [$\{ N_A \}_{K'_{AB}}$] an Bob antwortet.
\item Eve fängt diese Nachricht wieder ab und sendet ohne Verifikation der Nonce $N_A$ eine Nonce $N'_B$ an Alice zurück, um das Protokoll zu beenden. Eve kann die Nonce nicht verifizieren, da sie nicht in Besitz des Session Keys $K'_{AB}$ ist.
\item Alice ist nun in dem Glauben, dass sie mit Bob einen neuen Session Key ausgehandelt hat. Stattdessen hat Bob nichts von der Protokollausführung mitbekommen.
\end{enumerate}
\noindent
\textbf{Evaluation}
\begin{itemize}
\item
\end{itemize}
\end{exercise}
\newpage
\begin{exercise}[Authentication without Trusted Party]{2.3.}
\end{exercise}
\newpage
\begin{exercise}[Authentication with Trusted Party]{2.4.}
\end{exercise}
\end{document}