\documentclass{beamer}
\usetheme{i4}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{multicol}
\usepackage{listings}
\lstloadlanguages{lisp}

\usetikzlibrary{svg.path,positioning,intersections}
\usepgflibrary{shapes.geometric}
\usepgflibrary{shapes.misc}
\usepgflibrary{shapes.symbols}

\usepgflibrary{shapes}
\usetikzlibrary{shapes,decorations,shadows}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.shapes}
\usetikzlibrary{fadings}
\usetikzlibrary{patterns}
\usetikzlibrary{calc}
\tikzstyle{netdb}=[anchor=center,color=black,rectangle,draw,minimum
 size=.6em,minimum height=.2em]
\tikzstyle{client}=[fill=i4gray,rectangle,draw]
\tikzstyle{chain}=[rectangle,draw,minimum size=1em,minimum height=.5em]
\tikzstyle{arrow}=[->,thick,draw,shorten <=2pt,shorten >=2pt,]
\tikzstyle{tunnel}=[fill=gray,shape=ellipse,minimum size=4em,minimum height=1.1em]

\newcommand{\iip}[1]{\textcolor{i4red}{#1}}

\author[Christoph Egger]{{\bf Christoph Egger}, Johannes Schlumberger, Christopher
  Kruegel, Giovanni Vigna}
\title{Practical Attacks Against The I2P Network}
\institute{Friedrich-Alexander University Erlangen-Nuremberg\\
University of California, Santa Barbara}
\date{October 25, 2013}
\begin{document}

\begin{frame}[plain]
  \vspace{1.5em}
  \titlepage
  \begin{center}
  \includegraphics[width=0.23\paperwidth]{fau_siegel}
  \hspace{1.5em}
  \includegraphics[width=0.25\paperwidth]{ucsbseal}
  \end{center}
\end{frame}

\begin{frame}
  \frametitle{Outline}
  \begin{multicols}{2}
    \begin{block}{What is I2P?}
      \begin{itemize}
      \item Tunnels
      \item Network Database
      \item \textcolor{gray}{Floodfill Participation}
      \item Threat model
      \end{itemize}
    \end{block}
    \begin{block}{\textcolor{gray}{Floodfill Takeover Attack}}
      
    \end{block}
    \begin{block}{Sibyl Attack}
      \begin{itemize}
      \item Attack Description
      \item Evaluation
      \end{itemize}
    \end{block}
    \begin{block}{\textcolor{gray}{Eclipse Attack}}
      
    \end{block}
    \begin{block}{Deanonymization Attack}
      \begin{itemize}
      \item Attack Description
      \item Evaluation
      \end{itemize}      
    \end{block}
    \begin{block}{Conclusions}
      \begin{itemize}
      \item Limitations
      \item I2P improvements
      \item \textcolor{gray}{Related Work}
      \end{itemize}
    \end{block}
  \end{multicols}
\end{frame}

\begin{frame}
  \frametitle{Anonymity}
  \begin{block}{Who needs anonymity}
    \begin{itemize}
    \item Criminals
    \item Civil rights activists
    \item Everyone else
    \end{itemize}
  \end{block}\pause
  \begin{block}{I2P and tor}
    \begin{itemize}
    \item Tor: directory authorities $\leftrightarrow$ I2P:
      decentralized DHT
    \item Tor: proxy to the outside world $\leftrightarrow$ I2P:
      separated \emph{Darknet}
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Introduction to I2P}
  \begin{itemize}\addtolength{\itemsep}{1\baselineskip}
  \item Solution for anonymous communication
  \item Separated from the ``Internet'' -- \emph{Darknet} 
  \item Fully distributed design
  \item Based on onion-routing
  \item Between 18,000 and 28,000 active users
  \end{itemize}
\end{frame}

\section{I2P}
\begin{frame}
  \frametitle{I2P}
  \begin{multicols}{2}
    \begin{block}{Router}
      \begin{itemize}
      \item Handle connections
      \item Provide name services
      \end{itemize}
    \end{block}
%    \pause
    \begin{block}{Applications}
      \begin{itemize}
      \item Server, client or P2P software
      \item Sockets interface with TCP-like or UDP-like semantics
      \end{itemize}
    \end{block}
%    \pause
    \begin{figure}
      \centering
      \begin{tikzpicture}[scale=1.2]
        \tikzstyle{every node}=[font=\small]
        \node[minimum width=9em,minimum height=9em,draw=gray](clientpc) at (25mm,9mm) {};
        \node[above=0mm of clientpc.south] {User's Computer};
        \node[cloud,drop shadow,fill=white,draw,minimum
        width=4.5em,minimum height=2.5em](ip) at (22mm,30mm) {I2P};
        \node[client](client) at (22mm, 18mm) {I2P Router};
        \node[rectangle,draw,below=0mm of client.south east](app1) {Application};
        \node[rectangle,draw,below=0mm of app1.south](app2) {Application};
        \node[rectangle,draw,below=0mm of app2.south](app3) {Application};

        \path[arrow] (app1.west) -| ([xshift=3.5mm]client.south west);
        \path[arrow] (app2.west) -| ([xshift=2.5mm]client.south west);
        \path[arrow] (app3.west) -| ([xshift=1.5mm]client.south west);
        \path[arrow] ([xshift=.5mm]client.north) -- ([xshift=.5mm]ip.south);
        \path[arrow] ([xshift=-.5mm]ip.south) -- ([xshift=-.5mm]client.north);
      \end{tikzpicture}
    \end{figure}

  \end{multicols}
\end{frame}

\begin{frame}
  \frametitle{Tunnels}
  \begin{itemize}
  \item Using onion-routing for anonymity
  \item Unidirectional
  \item Paired for bi-directional communication
  \end{itemize}\pause
  \begin{block}{Client Tunnels}
    \begin{itemize}
    \item Used for data interactions
    \item Several per application
    \end{itemize}
  \end{block}
%  \pause
  \begin{block}{Exploratory Tunnels}
    \begin{itemize}
    \item Used for database interaction
    \item 2 to 3 per node
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Network Database}
  \begin{itemize}
  \item<1-> Kademlia-like DHT based on \texttt{XOR}-distance run on
    320 super-nodes
  \item<1-> Layout of the database changes completely every day
  \item<2-> \iip{databaseRecord}\\
    Information named using a hash over their cryptographic Keys
  \item<2-> \iip{storageLocation}\\
    Hash over name and today's date
  \item<3-> \iip{routerInfo}\\
    Peer information: IP address, port, protocol, keys
  \item<3-> \iip{leaseSet}\\
    Service information: Entry tunnels, keys
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{Sample Interaction}
  Accessing a hidden website -- ``http://civilrights.i2p''
  \begin{figure}
    \centering
    \input{sample-interaction}
  \end{figure}
\end{frame}

\begin{frame}
  \frametitle{Threat Model}
  \begin{itemize}\addtolength{\itemsep}{1\baselineskip}
  \item Implicitly specified in terms of attacks considered
  \item Only allows local adversaries: No global view about traffic
    passing through the network
  \item Only allows limited number of malicious nodes -- around 20\,\%
    of \iip{netDB} super-nodes and 20\,\% of total nodes
  \item Secure cryptographic primitives
  \end{itemize}
\end{frame}

\section{Sibyl Attack}
\begin{frame}
  \frametitle{Sybil Attack}
  \begin{block}{Definition}
    In a sybil attack, the adversary utilizes multiple identities to
    break assumptions about the system
  \end{block}\pause
  \begin{block}{Goal}
    Gaining control over parts of the keyspace in the \iip{netDB} with
    limited resources. As a result be the only source considered for
    certain pieces of data and therefore able to monitor every access
    to it
  \end{block}\pause
  \begin{block}{Challenge}
    Active identities require considerable resources to be useful
  \end{block}\pause
  \begin{block}{Solution}
    Compute a large pool of identities and only activate the relevant ones
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Sybil Attack}
  \begin{block}{Generating identities}
    \begin{itemize}
    \item Building a database of 50,000 identities takes around 30
      minutes on 12-core Xeon server
    \item 156 nodes on average between two adjacent database nodes
    \item All identities available to all malicious nodes
    \end{itemize}
  \end{block}\pause
  \begin{block}{Using identities}
    \begin{itemize}
    \item Malicious nodes can calculate the correct identities and
      change identity at any time
    \item Nodes coordinate to avoid duplicate identities
    \end{itemize}
  \end{block}
\end{frame}

\section{Deanonymizing Users}
\begin{frame}
  \frametitle{Deanonymizing Users}
  \begin{block}{Goal}
    Given an user Alice and a resource R, we want to confirm or refute
    Alice using R with high probability.
  \end{block}\pause
  \begin{block}{Vulnerability}
    \begin{itemize}
    \item<2-> Nodes store their \iip{routerInfo} directly in the \iip{netDB}
    \item<3-> Nodes verify the storage 20 seconds later using one of their
      \iip{exploratory tunnels}
    \item<4-> Nodes use the same \iip{exploratory tunnel} again for
      resource lookups
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Deanonymizing Users}
  \begin{figure}
    \centering
    \input{deanonymization}
  \end{figure}
\end{frame}

\begin{frame}
  \frametitle{Deanonyizing Attack}
  \begin{block}{Setup}
    \begin{itemize}
    \item 20 attacking nodes in a single network
      \begin{itemize}
      \item 10 nodes capturing resource lookups
      \item 10 nodes performing timing attack on \iip{routerInfo} storage
      \end{itemize}
    \item 6 monitoring nodes: split between two continents
    \end{itemize}
  \end{block}\pause
  \begin{block}{Results}
    \begin{itemize}
    \item 60\,\% of potentially observable links detected
    \item 52\,\% of attributed hits correct
    \item Working equally well for geographically remote hosts
    \end{itemize}
  \end{block}
\end{frame}

\section{Conclusions}
\begin{frame}
  \frametitle{Limitations}
  \begin{itemize}\addtolength{\itemsep}{1\baselineskip}
  \item Only works reliably for longer/repeated resource access
  \item Less reliable for popular resources
  \item Needs extra resources per tracked user and per resource
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{I2P Improvements}
  \begin{itemize}\addtolength{\itemsep}{1\baselineskip}
  \item Working with I2P developers to make it secure again
  \item<2-> Implemented improvements
    \begin{itemize}
    \item Limiting \iip{netDB} nodes per IPv4 network
    \item Randomizing the time delta
    \item Ongoing discussion about deeper modifications to the \iip{netDB}
    \end{itemize}
  \item<3-> Further improvements
    \begin{itemize}
    \item Ignoring new \iip{netDB} nodes
    \item Removing storage verification
    \item Expiring tunnels after storage verification
    \end{itemize}
  \end{itemize}
\end{frame}

\begin{frame}{Questions?}
    \vspace*{\fill}
    \begin{center}
        \includegraphics[width=7cm]{42.pdf}
    \end{center}
    \vspace*{\fill}
\end{frame}

\begin{frame}
  \frametitle{Bibliography}
  \nocite{Mittal:2012}
  \nocite{Timpanaro:2011}
  \nocite{Herrmann:2011}
  \nocite{Douceur:2002}
  \nocite{Dingledine:2004}
  \nocite{Evans:2011}
  \bibliographystyle{plain}
  \tiny{\bibliography{../i2p}}
\end{frame}

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% TeX-PDF-mode: t
%%% End: