%% Copyright (c) 2025 The Tor Project, inc. All rights reserved.
%% Use of this source code is governed by a BSD-style
%% license that can be found in the LICENSE file.

%% Title Page.
\begin{frame}[plain,noframenumbering]
    \titlepage
\end{frame}

%% Intro
\begin{frame}{What is Tor?}
\phantomsection\label{what-is-tor}
\begin{columns}
    \begin{column}{0.6\textwidth}
        \begin{itemize}
            \item Online anonymity, and censorship circumvention.
                \begin{itemize}
                    \item Free software.
                    \item Open network.
                    \item Open specifications.
                \end{itemize}
            \item Community of researchers, developers, users, and relay operators.
            \item U.S. 501(c)(3) non-profit organization.
        \end{itemize}
    \end{column}

    \begin{column}{0.4\textwidth}
        \begin{center}
            \includegraphics[width=0.95\textwidth]{images/what_is_tor.jpg}
        \end{center}
    \end{column}
\end{columns}
\end{frame}

\begin{frame}[t]{Threat Model}
\phantomsection\label{threat-model}
\centering
\begin{tikzpicture}
    %% Define the style for our relay nodes inside the Anonymity Network cloud.
    \tikzstyle{relay}=[circle, draw, thin, fill=OnionDarkPurple!80, text=white, font=\scriptsize, scale=0.8]

    %% Alice.
    \node[] at (-6, 2.5) {Alice};
    \node[alice, monitor, minimum size=1.6cm] (alice) at (-6, 0.5) {};

    %% Bob.
    \node[] at (6, 2.5) {Bob};
    \node[bob, mirrored, monitor, minimum size=1.6cm] (bob) at (6, 0.5) {};

    %% The Anonymity Network cloud.
    \node[] at (0, 2) {Anonymity Network};
    \node[cloud, fill=OnionPurple!40, cloud puffs=16, cloud puff arc=100, minimum width=5.5cm, minimum height=2.6cm, aspect=1] at (0,0) {};

    %% The relay nodes inside the Anonymity Network cloud.
    \node[relay] (r1) at (-1.9, 0.2)  {$R_{1}$};
    \node[relay] (r2) at (0.0, 0.1)   {$R_{2}$};
    \node[relay] (r3) at (1.8, -0.4)  {$R_{3}$};
    \node[relay] (r4) at (-0.7, 0.7)  {$R_{4}$};
    \node[relay] (r5) at (-1.0, -0.7) {$R_{5}$};
    \node[relay] (r6) at (0.8, -0.6)  {$R_{6}$};
    \node[relay] (r7) at (1.2, 0.5)   {$R_{7}$};

    %% Paths between our three relays.
    \path[thick] (r1) edge (r2);
    \path[thick] (r2) edge (r3);

    %% Path between Alice and R1.
    \path[thick] (-4.4, -0.4) edge (r1);

    %% Path between R3 and Bob.
    \path[thick] (r3) edge (4.4, -0.4);

    %% Helper lines for debugging.
    %% \draw[help lines] (-7,-3) grid (7,3);
\end{tikzpicture}

\large What can the attacker do?
\end{frame}

\begin{frame}[t]{Threat Model}
\phantomsection\label{threat-model-1}
\centering
\begin{tikzpicture}
    %% Define the style for our relay nodes inside the Anonymity Network cloud.
    \tikzstyle{relay}=[circle, draw, thin, fill=OnionDarkPurple!80, text=white, font=\scriptsize, scale=0.8]
    \tikzstyle{wiretap}=[circle, draw, thin, fill=red!40, scale=0.8]

    %% Alice.
    \node[] at (-6, 2.5) {Alice};
    \node[alice, monitor, minimum size=1.6cm] (alice) at (-6, 0.5) {};

    %% Bob.
    \node[] at (6, 2.5) {Bob};
    \node[bob, mirrored, monitor, minimum size=1.6cm] (bob) at (6, 0.5) {};

    %% The Anonymity Network cloud.
    \node[] at (0, 2) {Anonymity Network};
    \node[cloud, fill=OnionPurple!40, cloud puffs=16, cloud puff arc=100, minimum width=5.5cm, minimum height=2.6cm, aspect=1] at (0,0) {};

    %% The relay nodes inside the Anonymity Network cloud.
    \node[relay] (r1) at (-1.9, 0.2)  {$R_{1}$};
    \node[relay] (r2) at (0.0, 0.1)   {$R_{2}$};
    \node[relay] (r3) at (1.8, -0.4)  {$R_{3}$};
    \node[relay] (r4) at (-0.7, 0.7)  {$R_{4}$};
    \node[relay] (r5) at (-1.0, -0.7) {$R_{5}$};
    \node[relay] (r6) at (0.8, -0.6)  {$R_{6}$};
    \node[relay] (r7) at (1.2, 0.5)   {$R_{7}$};

    %% Paths between our three relays.
    \path[thick] (r1) edge (r2);
    \path[thick] (r2) edge (r3);

    %% Path between Alice and R1.
    \path[thick] (-4.4, -0.4) edge (r1);

    %% Path between R3 and Bob.
    \path[thick] (r3) edge (4.4, -0.4);

    %% Adversary.
    \node[maninblack, monitor, minimum size=1.3cm] (adversary) at (-5, -2) {};

    %% Adversary wiretap.
    \node[wiretap] (wiretap) at (-3.4, -0.15) {};

    %% Adversary path.
    \path[thick, red!40] (adversary) edge (wiretap);

    %% Helper lines for debugging.
    %% \draw[help lines] (-7,-3) grid (7,3);
\end{tikzpicture}
\end{frame}

\begin{frame}[t]{Threat Model}
\phantomsection\label{threat-model-2}
\centering
\begin{tikzpicture}
    %% Define the style for our relay nodes inside the Anonymity Network cloud.
    \tikzstyle{relay}=[circle, draw, thin, fill=OnionDarkPurple!80, text=white, font=\scriptsize, scale=0.8]
    \tikzstyle{wiretap}=[circle, draw, thin, fill=red!40, scale=0.8]

    %% Alice.
    \node[] at (-6, 2.5) {Alice};
    \node[alice, monitor, minimum size=1.6cm] (alice) at (-6, 0.5) {};

    %% Bob.
    \node[] at (6, 2.5) {Bob};
    \node[bob, mirrored, monitor, minimum size=1.6cm] (bob) at (6, 0.5) {};

    %% The Anonymity Network cloud.
    \node[] at (0, 2) {Anonymity Network};
    \node[cloud, fill=OnionPurple!40, cloud puffs=16, cloud puff arc=100, minimum width=5.5cm, minimum height=2.6cm, aspect=1] at (0,0) {};

    %% The relay nodes inside the Anonymity Network cloud.
    \node[relay, fill=red!40, text=black] (r1) at (-1.9, 0.2)  {$R_{1}$};
    \node[relay] (r2) at (0.0, 0.1)   {$R_{2}$};
    \node[relay, fill=red!40, text=black] (r3) at (1.8, -0.4)  {$R_{3}$};
    \node[relay] (r4) at (-0.7, 0.7)  {$R_{4}$};
    \node[relay] (r5) at (-1.0, -0.7) {$R_{5}$};
    \node[relay] (r6) at (0.8, -0.6)  {$R_{6}$};
    \node[relay] (r7) at (1.2, 0.5)   {$R_{7}$};

    %% Paths between our three relays.
    \path[thick] (r1) edge (r2);
    \path[thick] (r2) edge (r3);

    %% Path between Alice and R1.
    \path[thick] (-4.4, -0.4) edge (r1);

    %% Path between R3 and Bob.
    \path[thick] (r3) edge (4.4, -0.4);

    %% Adversary.
    \node[maninblack, monitor, minimum size=1.3cm] (adversary) at (-5, -2) {};

    %% Path between our adversary and R1 and R3.
    \path[thick, red!40] (adversary) edge (r1);
    \path[thick, red!40, bend right] (-3.5, -3.0) edge (r3);

    %% Helper lines for debugging.
    %% \draw[help lines] (-7,-3) grid (7,3);
\end{tikzpicture}
\end{frame}

\begin{frame}[t]{Threat Model}
\phantomsection\label{threat-model-3}
\centering
\begin{tikzpicture}
    %% Define the style for our relay nodes inside the Anonymity Network cloud.
    \tikzstyle{relay}=[circle, draw, thin, fill=OnionDarkPurple!80, text=white, font=\scriptsize, scale=0.8]
    \tikzstyle{wiretap}=[circle, draw, thin, fill=red!40, scale=0.8]

    %% Alice.
    \node[] at (-6, 2.5) {Alice};
    \node[alice, monitor, minimum size=1.6cm] (alice) at (-6, 0.5) {};

    %% Bob.
    \node[] at (6, 2.5) {Bob};
    \node[bob, mirrored, monitor, minimum size=1.6cm] (bob) at (6, 0.5) {};

    %% The Anonymity Network cloud.
    \node[] at (0, 2) {Anonymity Network};
    \node[cloud, fill=OnionPurple!40, cloud puffs=16, cloud puff arc=100, minimum width=5.5cm, minimum height=2.6cm, aspect=1] at (0,0) {};

    %% The relay nodes inside the Anonymity Network cloud.
    \node[relay] (r1) at (-1.9, 0.2)  {$R_{1}$};
    \node[relay] (r2) at (0.0, 0.1)   {$R_{2}$};
    \node[relay] (r3) at (1.8, -0.4)  {$R_{3}$};
    \node[relay] (r4) at (-0.7, 0.7)  {$R_{4}$};
    \node[relay] (r5) at (-1.0, -0.7) {$R_{5}$};
    \node[relay] (r6) at (0.8, -0.6)  {$R_{6}$};
    \node[relay] (r7) at (1.2, 0.5)   {$R_{7}$};

    %% Paths between our three relays.
    \path[thick] (r1) edge (r2);
    \path[thick] (r2) edge (r3);

    %% Path between Alice and R1.
    \path[thick] (-4.4, -0.4) edge (r1);

    %% Path between R3 and Bob.
    \path[thick] (r3) edge (4.4, -0.4);

    %% Adversary.
    \node[maninblack, monitor, minimum size=1.3cm] (adversary) at (-5, -2) {};

    %% Adversary wiretap.
    \node[wiretap] (wiretap) at (3.4, -0.38) {};

    %% Path between our adversary and its wiretap.
    \path[thick, red!40, bend right] (-3.5, -3.0) edge (wiretap);

    %% Helper lines for debugging.
    %% \draw[help lines] (-7,-3) grid (7,3);
\end{tikzpicture}
\end{frame}

\begin{frame}[t]{Threat Model}
\phantomsection\label{threat-model-4}
\centering
\begin{tikzpicture}
    %% Define the style for our relay nodes inside the Anonymity Network cloud.
    \tikzstyle{relay}=[circle, draw, thin, fill=OnionDarkPurple!80, text=white, font=\scriptsize, scale=0.8]

    %% Alice.
    \node[] at (-6, 2.5) {Alice};
    \node[alice, monitor, minimum size=1.6cm] (alice) at (-6, 0.5) {};

    %% Bob.
    \node[] at (6, 2.5) {Bob};
    \node[maninblack, mirrored, monitor, minimum size=1.6cm] (bob) at (6, 0.5) {};

    %% The Anonymity Network cloud.
    \node[] at (0, 2) {Anonymity Network};
    \node[cloud, fill=OnionPurple!40, cloud puffs=16, cloud puff arc=100, minimum width=5.5cm, minimum height=2.6cm, aspect=1] at (0,0) {};

    %% The relay nodes inside the Anonymity Network cloud.
    \node[relay] (r1) at (-1.9, 0.2)  {$R_{1}$};
    \node[relay] (r2) at (0.0, 0.1)   {$R_{2}$};
    \node[relay] (r3) at (1.8, -0.4)  {$R_{3}$};
    \node[relay] (r4) at (-0.7, 0.7)  {$R_{4}$};
    \node[relay] (r5) at (-1.0, -0.7) {$R_{5}$};
    \node[relay] (r6) at (0.8, -0.6)  {$R_{6}$};
    \node[relay] (r7) at (1.2, 0.5)   {$R_{7}$};

    %% Paths between our three relays.
    \path[thick] (r1) edge (r2);
    \path[thick] (r2) edge (r3);

    %% Path between Alice and R1.
    \path[thick] (-4.4, -0.4) edge (r1);

    %% Path between R3 and Bob.
    \path[thick] (r3) edge (4.4, -0.4);

    %% Helper lines for debugging.
    %% \draw[help lines] (-7,-3) grid (7,3);
\end{tikzpicture}
\end{frame}

\begin{frame}[t]{Anonymity isn't Encryption}
\phantomsection\label{anonymity-isnt-encryption}
\centering
\begin{tikzpicture}
    \tikzstyle{wiretap}=[circle, draw, thin, fill=red!40, scale=0.8]

    %% Alice.
    \node[] at (-6, 2.5) {Alice};
    \node[alice, monitor, minimum size=1.6cm] (alice) at (-6, 0.5) {};

    %% Bob.
    \node[] at (6, 2.5) {Bob};
    \node[bob, mirrored, monitor, minimum size=1.6cm] (bob) at (6, 0.5) {};

    %% Encrypted channel.
    \draw[<->,thick, OnionDarkPurple!80] (-3.5, 0) -- (3.5, 0);

    %% Encrypted data.
    \node[] at (0, 0.5) {\tiny{\texttt{\ldots RG9uJ3QgdXNlIGJhc2U2NCBmb3IgZW5jcnlwdGlvbi4\ldots}}};

    %% Adversary.
    \node[maninblack, monitor, minimum size=1.3cm] (adversary) at (-5, -2) {};
    \node[ellipse callout, draw, yshift=0.3cm, callout absolute pointer={(adversary.mouth)}, font=\scriptsize, align=center, fill=white] at (-2.7, -2.5) {Gibberish!};

    %% Adversary wiretap.
    \node[wiretap] (wiretap) at (-0.5, 0) {};

    %% Adversary path.
    \path[thick, red!40] (adversary) edge (wiretap);

    %% Helper lines for debugging.
    %% \draw[help lines] (-7,-3) grid (7,3);
\end{tikzpicture}

\large Encryption just protects contents.
\end{frame}

\begin{frame}[plain]{}
\tikzset{external/export next=false}
\begin{tikzpicture}[remember picture,overlay]
    \node[at=(current page.center)] {\includegraphics[width=\paperwidth, height=\paperheight]{images/block_result.png}};
\end{tikzpicture}
\end{frame}

\begin{frame}[plain]{}
\tikzset{external/export next=false}
\begin{tikzpicture}[remember picture,overlay]
    \node[at=(current page.center)] {\includegraphics[width=\paperwidth, height=\paperheight]{images/tdc_dk_block.png}};
\end{tikzpicture}
\end{frame}
