\begin{frame}
  \frametitle{Certificate Transparency (CT)}
  \begin{columns}
    \begin{column}{0.49\textwidth}
      \begin{itemize}
        \item Add transparency to CA ecosystem
        \item Publicly log all certificates
        \item No need\footnotemark{} to trust the log
          \begin{itemize}
            \item Membership proofs
            \item Append-only proofs
          \end{itemize}
      \end{itemize}
    \end{column}
    \begin{column}{0.49\textwidth}
      \centering
      \includegraphics[width=\textwidth]{img/ct}
      \burl{http://www.certificate-transparency.org/what-is-ct}
    \end{column}
  \end{columns}
  \footnotetext{As deployed right now we do trust the logs tho \Frowny}
\end{frame}

\begin{frame}
  \frametitle{Certificate logging in greater detail
    \titlefloatright{Merkle tree}}
  \centering
  \vfill
  \input{img/mt}
  \pause
  \vfill
  \begin{columns}
    \begin{column}{0.49\textwidth}
      \begin{itemize}
        \item Append new certificates in batches
      \end{itemize}
    \end{column}
    \begin{column}{0.49\textwidth}
      \begin{itemize}
        \item Sign tree head every hour \ding{224} STH
      \end{itemize}
    \end{column}
  \end{columns}
  \vfill
  %\vfill\centering\alert{Anyone can audit and monitor the log, but as deployed
  %  not much of this yet}
\end{frame}

\begin{frame}
  \frametitle{Generating a membership proof
    \titlefloatright{Audit path}}
  \centering
  \vfill
  \input{img/mtp}
  \vfill
  \begin{columns}
    \begin{column}{0.49\textwidth}
      \begin{itemize}
        \item Traverse tree from root to leaf
      \end{itemize}
    \end{column}
    \begin{column}{0.49\textwidth}
      \begin{itemize}
        \item Grab all sibling hashes on the way
      \end{itemize}
    \end{column}
  \end{columns}
  \vfill
\end{frame}

\begin{frame}
  \frametitle{Two approaches towards monitoring a CT log}
  \begin{columns}
    \begin{column}{0.49\textwidth}
      \centering
      \vbox to 0.8\textheight {
        \textbf{Self-monitoring}
        \vfill
        \input{img/self-monitor}
        \vfill
        \pause
        \begin{description}
          \item[\Frowny] Continuous uptime
          \item[\Frowny] Download everything
        \end{description}
        \pause
      }
    \end{column}
    \begin{column}{0.49\textwidth}
      \centering
      \vbox to 0.8\textheight {
        \textbf{Monitoring-as-a-service}
        \vfill
        \input{img/tp-monitor}
        \pause
        \vfill
        \begin{description}
          \item[\Smiley] Ezpz
          \item[\Frowny] Trusted 3rd party
        \end{description}
      }
    \end{column}
  \end{columns}
\end{frame}

\begin{frame}
  \frametitle{Notion of what we would like to achieve
    \titlefloatright{`Wish list'}}
  \begin{columns}
    \begin{column}{0.59\textwidth}
      \begin{itemize}
        \item CT/bis backwards compatibility
        \item Piggy-back on gossip-audit model
        \item Self-monitor wildcards w/o full download
        \item Reduced 3rd party monitoring trust
      \end{itemize}
    \end{column}
    \begin{column}{0.39\textwidth}
      \centering
      \includegraphics[height=0.8\textheight]{img/wish}
    \end{column}
  \end{columns}
\end{frame}

\begin{frame}
  \frametitle{An overview of light-weight monitoring}
  \centering
  \input{img/overview}
  \vfill
  \begin{columns}
    \begin{column}{0.49\textwidth}
      \begin{itemize}
        \item A new Merkle tree for each batch
      \end{itemize}
    \end{column}
    \begin{column}{0.49\textwidth}
      \begin{itemize}
        \item Add snapshot to STH as extension
      \end{itemize}
    \end{column}
  \end{columns}
  \vfill\centering\alert{One wildcard (non-)membership notification per STH}\\
  \pause
  \alert{How do you know if you got all notifications \ding{224} index
    extension}
\end{frame}

\begin{frame}
  \frametitle{Wildcard notifications}
  \centering
  \input{img/wildcard}
  \begin{columns}
    \begin{column}{0.39\textwidth}
      \begin{itemize}
        \item Merkleize reverse-sorted list
      \end{itemize}
    \end{column}
    \begin{column}{0.59\textwidth}
      \begin{itemize}
        \item Wildcard proof \ding{224} at most two audit paths
      \end{itemize}
    \end{column}
  \end{columns}
  \pause
  \vfill\centering\alert{Security of this data structure? It is still just a
    Merkle tree...}
\end{frame}

\begin{frame}
  \frametitle{Performance evaluation \titlefloatright{Experimental setup}}
  \begin{columns}
    \begin{column}{0.49\textwidth} 
      \vbox to .6\textheight{
        \begin{itemize} 
          \item PoC: 351 lines of Go\footnotemark
          \item Interesting metrics
            \begin{itemize}
              \item Snapshot creation time
              \item Proof generation time
              \item Proof verification time
              \item Bandwidth overhead
            \end{itemize}
          \item Two log characteristics that matter
            \begin{itemize}
              \item STH frequency
              \item Batch size
            \end{itemize}
        \end{itemize}
        \vfill\centering\alert{We observed all Chrome-included logs for eight
          months to determine these characteristics}
      }
    \end{column}
    \begin{column}{0.49\textwidth}
      \vbox to 0.8\textheight{
        \centering
        \vfill
        \textbf{Google's Icarus Log}\\
        \vfill
        \includegraphics[width=\textwidth]{img/frequency}\\
        \vfill
        \includegraphics[width=\textwidth]{img/batch}
        \vfill
      }
    \end{column}
  \end{columns}
  \footnotetext{\burl{https://github.com/rgdd/lwm}}
\end{frame}

\begin{frame}
  \frametitle{Snapshot creation time}
  \centering
  \includegraphics[height=0.6\textheight]{img/snapshot}
  \vfill\centering\alert{Negligible in comparison to STH issuance rate (1h)}
\end{frame}

\begin{frame}
  \frametitle{Proof generation time}
  \centering
  \includegraphics[height=0.6\textheight]{img/proofgen}
  \vfill\centering\alert{At least 288M non-membership proofs per hour on a
    single core}
\end{frame}

\begin{frame}
  \frametitle{Proof generation and verification for *.com}
  \centering
  \includegraphics[height=0.6\textheight]{img/proofcom}
  \vfill\centering\alert{352k matches in max batch \ding{224} 29k proofs per
    hour on a single core}
\end{frame}

\begin{frame}
  \frametitle{Bandwidth overhead}
  \begin{columns}
    \begin{column}{0.69\textwidth}
      \begin{description}
        \item[Audit paths] max batch size \ding{224} 1 KB
        \item[Self-monitor] compare to median batch size of 32.6 MB
        \item[Notifier] 288M audit paths per hour \ding{224} 640 Mbps
      \end{description}
    \end{column}
    \begin{column}{0.39\textwidth}
      \centering\includegraphics[width=\textwidth]{img/perf}
      \burl{http://blog.coviam.com/wp-content/uploads/2016/07/Performance-Evaluation-Process-z.jpg}
    \end{column}
  \end{columns}
\end{frame}

\begin{frame}
  \frametitle{Take away}
  \begin{columns}
    \begin{column}{0.79\textwidth}
      \begin{itemize}
      \item Unfortunate if CT monitoring relies on trusted parties
      \item Light-weight monitoring
        \begin{itemize}
          \item One verifiable wildcard notification per batch
          \item Untrusted notification component with push/pull model
          \item Untrusted log \ding{224} rely on one honest monitor
          \item Trusted log \ding{224} no need to also trust monitor
        \end{itemize}
      \end{itemize}
    \end{column}
    \begin{column}{0.19\textwidth}
      \centering\includegraphics[width=\textwidth]{img/takeaway}
    \end{column}
  \end{columns}
\end{frame}
