\documentclass[13pt]{beamer}
\usepackage{ngerman}
\usepackage{multicol}
\usepackage[utf8]{inputenc}
\usepackage{listings}

\usepackage{tikz}

\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]


\usetheme{CambridgeUS}
\usefonttheme{structuresmallcapsserif}
\title{DNSSEC}
\author{Christoph Egger}
\institute[Debian]{The Debian Project}
\date{\today}

\usebackgroundtemplate{\includegraphics[width=\paperwidth]{images/swirl-lightest}}
\logo{\includegraphics[viewport=274 335 360 440,width=1cm]{images/openlogo-nd.pdf}}
\definecolor{debianred}{rgb}{.780,.000,.211} % 199,0,54
\definecolor{debianblue}{rgb}{0,.208,.780} % 0,53,199
\definecolor{debianlightbackgroundblue}{rgb}{.941,.941,.957} % 240,240,244
\definecolor{debianbackgroundblue}{rgb}{.776,.784,.878} % 198,200,224

\usecolortheme[named=debianbackgroundblue]{structure}
\setbeamercolor{normal text}{fg=debianred}
\setbeamercolor{titlelike}{fg=debianblue}
\setbeamercolor{sidebar}{fg=debianred,bg=debianbackgroundblue}

\setbeamercolor{palette sidebar primary}{fg=debianred}
\setbeamercolor{palette sidebar secondary}{fg=debianred}
\setbeamercolor{palette sidebar tertiary}{fg=debianred}
\setbeamercolor{palette sidebar quaternary}{fg=debianred}

\setbeamercolor{block title}{fg=debianblue}
\setbeamercolor{description item}{fg=debianblue}

\begin{document}

\frame{
  \titlepage
}

\section{Einführung}

\begin{frame}
  \begin{block}{Wikipedia}
    The Domain Name System Security Extensions (DNSSEC) is a suite of
    Internet Engineering Task Force (IETF) specifications for securing
    certain kinds of information provided by the Domain Name System
    (DNS) as used on Internet Protocol (IP) networks. It is a set of
    extensions to DNS which provide to DNS clients (resolvers) origin
    authentication of DNS data, authenticated denial of existence, and
    data integrity, but not availability or confidentiality.
  \end{block}
\end{frame}

\section{Signaturen}
\begin{frame}
  \frametitle{RRSIG}
  \begin{block}{siccegge.de}\resizebox{\textwidth}{!}{\texttt{
        \begin{tabular}{llll}
siccegge.de. & IN & A & 62.113.200.104\\
siccegge.de. & IN & RRSIG & A 8 2 43200 20140908181927 20140809171927 60018 siccegge.de.\\
 &
 \multicolumn{3}{l}{zldkAFJKKV4/gkmZ8DZkV7AT6nIt4mLXjClJwSnGqvrlBWEzc9h3knLMa9iJeEh01ZEZcWi+JRD/vVVNqBg4P1}\\
 & \multicolumn{3}{l}{vCGsiPDvzBvO+gq0wtxPPpouNZA9r9h9in4sB3Vw/6HpMcqp843mB+B5SGQZkALDsVCcoY4J0/rPWPXYGHQkA=}\\
\end{tabular}}}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{ZSK, KSK}  
  \begin{itemize}
  \item \texttt[KSK] ``KeySigningKey'' -- wird in der übergeordneten
    Zone referenziert und signiert alle Schlüssel \emph{in} der Zone
    \pause
  \item \texttt[ZSK] ``ZoneSigningKey'' -- wird durch den \texttt{KSK}
    authorisiert und signiert weitere Einträge
    \pause\bigskip
  \item Normalerweise gibt es \emph{einen} KSK und \emph{zwei} ZSKs in
    einer Zone
  \end{itemize}
\end{frame}

\begin{frame}
  \begin{figure}
    \centering
    \begin{tikzpicture}[scale=1.2]
      \tikzstyle{every node}=[font=\small]
      \node[minimum width=8em,minimum height=12em,draw=gray](dezone) at (0,0) {};
      \node[below=2em of dezone.south] {de. Zone};
      \node[minimum width=8em,minimum height=12em,draw=gray](rootzone) at (-9em,0) {};
      \node[below=2em of rootzone.south] {. Zone};
      \node[minimum width=8em,minimum height=12em,draw=gray](sicceggezone) at (9em,0) {};
      \node[below=2em of sicceggezone.south] {siccegge.de. Zone};

      \node[ellipse,draw=debianred](rootksk) at (-9em,3em) {KSK};
      \node[ellipse,draw=debianblue](rootzsk) at (-9em,0em) {ZSK};
      \node[ellipse,draw=black](rootds)  at (-9em,-3em) {DS};

      \node[ellipse,draw=debianred](deksk)  at (0em,3em) {KSK};
      \node[ellipse,draw=debianblue](dezsk)  at (0em,0em) {ZSK};
      \node[ellipse,draw=black](deds)   at (0em,-3em) {DS};

      \node[ellipse,draw=debianred](sicceggeksk)  at (9em,3em) {KSK};
      \node[ellipse,draw=debianblue](sicceggezsk)  at (9em,0em) {ZSK};
      \node[ellipse,draw=black](arecord) at (6.5em,-2em) {\tiny{A}};
      \node[ellipse,draw=black](aaaarecord) at (8em,-3em) {\tiny{AAAA}};
      \node[ellipse,draw=black](sshfprecord) at (10.5em,-4em) {\tiny{SSHFP}};

      \draw[arrow,draw=black] (rootds.south) |- ++(0,-2em) -| ([xshift=1em]rootzone.east)
        |- ([xshift=4.5em,yshift=1em]rootzone.north) -| (deksk.north);
      \draw[arrow,draw=black] (deds.south) |- ++(0,-2em) -| ([xshift=1em]dezone.east)
        |- ([xshift=4.5em,yshift=1em]dezone.north) -| (sicceggeksk.north);

      \draw[arrow,draw=debianred] (rootksk.south) -- (rootzsk.north);
      \draw[arrow,draw=debianred] (deksk.south) -- (dezsk.north);
      \draw[arrow,draw=debianred] (sicceggeksk.south) -- (sicceggezsk.north);

      \draw[arrow,draw=debianblue] (rootzsk) -- (rootds);
      \draw[arrow,draw=debianblue] (dezsk) -- (deds);
      \draw[arrow,draw=debianblue] (sicceggezsk) -- (arecord);
      \draw[arrow,draw=debianblue] (sicceggezsk) -- (aaaarecord);
      \draw[arrow,draw=debianblue] (sicceggezsk) -- (sshfprecord);
    \end{tikzpicture}
  \end{figure}
\end{frame}

\begin{frame}
  \frametitle{Schlüsseltausch}
  \begin{block}{Idee}
    Wechsle die Schlüssel regelmäßig. Damit lassen sich auch kleine,
    effizienter verwendbare Schlüssel verwenden. Auch in Sachen
    ``Revocation'' nützlich
  \end{block}
  \bigskip\pause
  Schlüssel wechseln in DNS ist nicht so einfach: \pause Stichpunkt
  \texttt{TTL}
  \bigskip\pause

  2 Methoden:
  \begin{itemize}
  \item Neuen Schlüssel vor der Verwendung veröffentlichen
  \item Vorübergehend mit beiden Schlüsseln signieren
  \end{itemize}
\end{frame}

\section{NSEC und NSEC3}

\begin{frame}
  \frametitle{NSEC}
  \begin{itemize}
  \item Bilde einen Kreis, der alle vorhandenen Einträge umfasst
  \item Speichere signierte Feststellung, dass zwischen zwei Namen
    kein dritter liegt
  \item Bei negativer Antwort (\texttt{NXDOMAIN}) sende auch den
    signierten \texttt{NSEC} Eintrag in dessen Interval die Antwort
    liegen würde\pause\bigskip
  \item ``Zonewalking'' auflistung aller Einträge in einer Zone
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{NSEC3}

  \begin{itemize}
  \item Statt Einträge in einem Ring anzuordnen, bilde zuerst eine
    kryptographische Streusumme
  \item Verwende Salz und mehrere Runden der Streufunktion für
    maximalen Effekt.
  \end{itemize}\bigskip\pause
  \begin{block}{git.siccegge.de}\resizebox{\textwidth}{!}{\texttt{
        \begin{tabular}{llll}
siccegge.de. & IN & NSEC3PARAM & 1 0 100 3BBD311E9F6B0E57
\end{tabular}}}
  \end{block}
\end{frame}

\begin{frame}
  \frametitle{Negative Antwort}
  Es werden bis zu drei \texttt{NSEC3} Antworten benötigt\bigskip
  \begin{itemize}
  \item Der \texttt{NSEC3}-Eintrag, der das entsprechende Interval
    umfasst
    \pause
  \item Der längste existente \texttt{NSEC3}-Eintrag um zu beweisen, dass diese
    Zone zuständig ist.
    \pause
  \item Ein \texttt{NSEC3}-Eintrag, der beweist, dass keine Wildcards existieren
  \end{itemize}
\end{frame}

\section{Zusatznutzen}
\begin{frame}
  \frametitle{DANE}
  \begin{block}{git.siccegge.de}\resizebox{\textwidth}{!}{\texttt{
        \begin{tabular}{llll}
\_25.\_tcp.oteiza.siccegge.de. & IN & TLSA & 3 1 1
101B5B5CCDC5568CEC385552611FD0355BF15DB293E96F46E29DE4A0C4B2BC3F \\
\_443.\_tcp.siccegge.de. & IN & TLSA & 3 1 1
62BEBD9F2E77CF26A4006A50F69FC3891BF7BEDDAEF8AC96E57C1D9BA2AB1F73 \\
\_5222.\_tcp.xmpp.egger.im & IN & TLSA & 3 1 1 9c93fab0d88c911592dedfa7f9385aeee228b0c6d526813ad1182c983677736b
\end{tabular}}}
  \end{block}
  \bigskip\pause
  Achtung! Beim Schlüsseltausch gibt's wieder Spass.
  \bigskip\pause
  \begin{itemize}
  \item 3: Bezeichnet ein Service Zertifikat
    \pause
  \item 1: Angegeben wird der öffentlich Schlüssel, nicht das
    Zertifikat
    \pause
  \item 1: Angegeben wird eine \texttt{SHA256}-Summe
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{SSHFP}
  \begin{block}{git.siccegge.de}\resizebox{\textwidth}{!}{\texttt{
        \begin{tabular}{lll}
git.siccegge.de & IN & SSHFP 1 1 0E812EE0A3704230F3C415076E1BAA149A5DC75B\\
git.siccegge.de & IN & SSHFP 1 2 1CBACAF365040DC1DF841FD07D9186BC343D4AF7DCF689CC8CF4A2F75D7F4B57\\
git.siccegge.de & IN & SSHFP 3 1 A2D0495E912DA039EEA51A1593F7F74FB919AAD4\\
git.siccegge.de & IN & SSHFP 3 2 9BF73E3654AA65B847054247F85EFB5C88AB7460840B9C922E647B00696661CF\\
git.siccegge.de & IN & SSHFP 4 1 2A3EF64AC589193ACFAD783B62E3C193A67F3F46\\
git.siccegge.de & IN & SSHFP 4 2 880686195D6C1AAA6791F3A3EF4E7B565DCF9F560F2F1BBB93C56EFD5996F335\\
\end{tabular}}}
  \end{block}
  \bigskip\pause
  \begin{itemize}
  \item Erste Zahl: Hostkeytyp
  \item Zweite Zahl: Prüfsummentyp
  \end{itemize}
\end{frame}

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

\end{document}
