\documentclass[a4]{seminar}

\usepackage[german]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{pslatex}
\usepackage{slidesec}
\usepackage[colorlinks,pdftitle={Wir verschlüsseln Dateisysteme - Wer macht mit?},pdfauthor={Sebastian Klemke},pdfsubject={./easter -h egg 2002},pdfpagemode={None}]{hyperref}

\renewcommand{\familydefault}{\sfdefault}
\newpagestyle{myslideheadings}{\huge\bf\hfil\theslideheading\hfil}{\hfil\theslide}
\newcommand{\phref}[1]{\href{#1}{\small{#1}}}
\newcommand{\commandline}[1]{\mbox{\texttt{#1}}}

\pagestyle{myslideheadings}

\title{\huge{Wir verschlüsseln Dateisysteme\\
Wer macht mit?}}
\author{packet@berlin.ccc.de}
\date{}

\begin{document}

\begin{slide}
  \maketitle
  \vfil
  \begin{sloppypar}
    \small{Copyright \copyright{} 2002 packet.\\
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
      Version 1.1 or any later version published by the Free Software
      Foundation.}
  \end{sloppypar}
  \hfil\small{\verb$Id: cryptfs-eh02-workshop.tex,v 1.17 2002/03/28 22:40:38 packet Exp $}\hfil
  \slidepagestyle{empty}
  \addtocounter{slide}{-1}
\end{slide}

%\centerslidesfalse

\begin{slide}
  \slideheading[Workshop-Verlauf]{}
  \slidecontents
\end{slide}

\begin{slide}
  \slideheading[Warum Dateisysteme verschlüsseln?]{}

  \slidesubheading[]{Szenario 1: Laptop-Benutzer}
  \begin{itemize}
    \item Laptops sind manchmal \emph{mobiler} als man es gerne hätte --
      Daten darauf unsicher
    \item Laptops tendieren dazu -- gerade bei Nerds -- häufiger als
      andere Rechner benutzt zu werden, viele \emph{wichtige} Daten, wie
      z.B. SSH- oder auch PGP-Keys lagern dort
  \end{itemize}

  \slidesubheading[]{Szenario 2: privater Arbeitsrechner}
  \begin{itemize}
    \item Auch zu Hause lagern Daten, die nicht jeder jederzeit lesen
      können soll
    \item Bei Bedarf einfach schnell die Sicherung rausziehen und
      wissen, dass Fremde mit den Festplatteninhalten der Rechner
      nichts anfangen können kann auch beruhigend sein
  \end{itemize}
\end{slide}

\begin{slide}
  \slideheading[Was verschlüsselte Dateisysteme bringen]{}
  \begin{itemize}
    \item im Idealfall kann im ungemounteten Zustand niemand sagen,
      welche Daten sich im Dateisystem befinden
    \item im gemounteten Zustand verhindern nur die normalen
      Filepermissions den Zugriff Unbefugter
    \item Daten sind nicht vor Modifikation oder Zerstörung
    geschützt
    (s. a. \phref{http://www.off.net/\~{}jme/loopdev\_vul.html}), auch
    dazu müssen die Filepermissions genutzt werden
  \end{itemize}
\end{slide}

\begin{slide}
  \slideheading[Verschlüsselte Dateisysteme unter Linux]{}
  \begin{description}
  \item[CFS:] verschlüsselnder user-space NFS-Server
  (\phref{http://www.ibiblio.org/pub/Linux/docs/faqs/security/Cryptographic-File-System})
  \item[TCFS:] verschlüsselndes Netzwerk-Dateisystem
    (\phref{http://www.tcfs.it/})
  \item[StegFS (2.2.x):] steganographisches Dateisystem
  (\phref{http://www.mcdonald.org.uk/StegFS/})
  \item[International Kernel Patch (2.2.x/2.4.x, alt):] bei 2.4.x
  unbrauchbar, bietet viele versch. Cipher- und Digest-Algorithmen
  (\phref{http://www.kerneli.org/})
  \item[CryptoAPI (2.4.16+):] Nachfolger des \emph{alten} International
    Kernel Patches
    (\phref{http://cryptoapi.sourceforge.net/})
  \item[International Kernel Patch (2.4.16+, noch testing):]
  Nachfolger der CryptoAPI, meine Wahl für diesen Workshop (URL
  s. CryptoAPI)
  \item[LoopAES:] mit AES verschlüsselte loopback devices,
    \emph{kleiner} Kernel-Patch
    (\phref{http://loop-aes.sourceforge.net/})
  \end{description}
\end{slide}


\begin{slide}
  \slideheading[Aufsetzen der Software]{}
  Vor dem Erstellen des verschlüsselten Dateisystems sind noch
  folgende Schritte notwendig:
  \begin{enumerate}
    \item Kernel patchen, konfigurieren und compilen
    \item \commandline{mount} und \commandline{losetup} aus
      util-linux patchen, compilen, testen und installieren
    \item den neuen Kernel booten
  \end{enumerate}
\end{slide}

\begin{slide}
  \slideheading[Kernel]{}
  \slidesubheading[]{Benötigte Sourcen}
  \begin{itemize}
    \item Kernel-Source:
      \phref{http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.18.tar.bz2}
    \item Patch für das loopback device:
      \phref{http://www.kernel.org/pub/linux/kernel/people/hvr/testing/loop-jari-2.4.16.0.patch}
    \item International Kernel Patch: 
      \phref{http://www.kernel.org/pub/linux/kernel/people/hvr/testing/patch-int-2.4.18.1.bz2}
  \end{itemize}

  \slidesubheading[]{Kernel Bauen}
  \begin{enumerate}
    \item PGP Signatures der Sourcen (soweit verfügbar) verifizieren
    \item im entpackten Kernel-Tree dann die Patches mit
      \commandline{patch} applien
    \item CONFIG\_BLK\_DEV\_LOOP, CONFIG\_CRYPTO, CONFIG\_CIPHERS,
    CONFIG\_CRYPTOLOOP und mind. einen Cipher auswählen
    \item Kernel bauen und booten
  \end{enumerate}
\end{slide}

\begin{slide}
  \slideheading[\commandline{mount} und \commandline{losetup}]{}
  \slidesubheading[]{Benötigte Sourcen}
  \begin{itemize}
    \item util-linux Source:
      \phref{http://www.kernel.org/pub/linux/utils/util-linux/util-linux-2.11n.tar.bz2}
    \item util-linux Patch:
      \phref{http://www.kernel.org/pub/linux/kernel/people/hvr/util-linux-patch-int/util-linux-2.11n.patch.bz2}
  \end{itemize}

  \slidesubheading[]{Util-Linux Bauen}
  \begin{enumerate}
    \item auch hier wieder PGP Signatures verifizieren
    \item im entpackten util-linux Source-Tree den Patch applien
    \item \commandline{mount} mit \commandline{make -e SUBDIRS="{}lib
        mount"{}} compilieren
    \item das neue \commandline{mount/losetup} testen
    \item die alten Binaries sichern und die neuen installieren
  \end{enumerate}
\end{slide}

\begin{slide}
  \slideheading[Erstellen des Dateisystems]{}
  \begin{enumerate}
    \item Anlegen einer Datei für das Dateisystem mit
      \commandline{dd}; Alternativ: Nutzung einer freien Partition,
      Initialisierung mit Zufallsdaten aus \commandline{/dev/urandom}
    \item loopback device auf die Datei/Partition aufsetzen mit
      \commandline{losetup -e <cipher> <device> <datei>}, Passphrase
      und Keylänge merken; Achtung: jeder, der auf das device
      zugreifen kann, kriegt die unverschlüsselten Daten
    \item Dateisystem mit \commandline{mke2fs <device>} erstellen,
    danach \commandline{fsck}
    \item Dateisystem mounten mit \commandline{mount <device> <mountpoint>}
      \item Wenn alles geklappt hat kann man das Dateisystem jetzt
      unmounten, mit \commandline{losetup -d <device>} das loopback
      device ``detachen'' und mit
      \begin{verbatim}
mount -o encryption=<cipher>,keybits=<keylänge>,loop \
      <datei> <mountpoint>
\end{verbatim}
      wieder mounten; Einträge in die \commandline{fstab} sind
      ebenfalls möglich
  \end{enumerate}
\end{slide}

\begin{slide}
  \slideheading[Links]{}
  \slidesubheading[]{Sourcen}
  \begin{description}
  \item[Kernel:]
  \phref{http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.18.tar.bz2}
  \item[loopback device Patch:]
  \phref{http://www.kernel.org/pub/linux/kernel/people/hvr/testing/loop-jari-2.4.16.0.patch}
  \item[International Kernel Patch:]
  \phref{http://www.kernel.org/pub/linux/kernel/people/hvr/testing/patch-int-2.4.18.1.bz2}
  \item[Util-Linux:]
  \phref{http://www.kernel.org/pub/linux/utils/util-linux/util-linux-2.11n.tar.bz2}
  \item[Util-Linux Patch:]
  \phref{http://www.kernel.org/pub/linux/kernel/people/hvr/util-linux-patch-int/util-linux-2.11n.patch.bz2}
  \end{description}

  \slidesubheading[]{Workshop-Folien}
  \begin{description}
  \item[PDF, PS, DVI und \LaTeXe:]
    \phref{http://berlin.ccc.de/\~{}packet/cryptfs-eh02-workshop/}
  \end{description}

  \newpage

  \slidesubheading[]{Verschlüsselte Dateisysteme}
  \begin{description}
  \item[CFS:]
  \phref{http://www.ibiblio.org/pub/Linux/docs/faqs/security/Cryptographic-File-System}
  \item[TCFS:] \phref{http://www.tcfs.it/}
  \item[StegFS:] \phref{http://www.mcdonald.org.uk/StegFS/}
  \item[International Kernel Patch (alt):]
  \phref{http://www.kerneli.org/}
  \item[CryptoAPI / neuer International Kernel Patch:]
  \phref{http://cryptoapi.sourceforge.net/}
  \item[LoopAES:] \phref{http://loop-aes.sourceforge.net/}
  \end{description}

  \slidesubheading[]{Sonstiges}
  \begin{description}
  \item[Schwächen der Loopback-Verschlüsselung:]
  \phref{http://www.off.net/\~{}jme/loopdev\_vul.html}
  \item[Linux Encryption HOWTO:]
  \phref{http://encryptionhowto.sourceforge.net/}
  \end{description}
\end{slide}
\end{document}
