%#TITLE:     Sicher verschlüsseln mit GnuPG
%#+Author:    Werner Koch
%#+EMAIL:     wk@gnupg.org
%#+DATE:      Sommerakademie 2015 --- Kiel, 31. August 2015
%%
%% Not written in org-mode due to the problem that org-mode does not
%% put fragile into the frame for an unknown environment (here: Verbatim)
\documentclass[presentation]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fixltx2e}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{float}
\usepackage{wrapfig}
\usepackage{rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath}
\usepackage{textcomp}
\usepackage{marvosym}
\usepackage{wasysym}
\usepackage{amssymb}
\usepackage{hyperref}
\tolerance=1000
\usepackage{fancyvrb}

%\usepackage{pgfpages}
%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]

%\usepackage{pgfplots}
%\pgfplotsset{compat=1.11}
%\usepackage{tikz}
%\usetikzlibrary{shapes}
%\usetikzlibrary{positioning}

\logo{\includegraphics[height=5mm]{gnupg-logo-tr.png}}
\usetheme{Singapore}
\title{Sicher verschlüsseln mit GnuPG}
\author[wk]{Werner Koch \\ \texttt{\scriptsize wk@gnupg.org}}
\date{Sommerakademie 2015 --- Kiel, 31. August 2015}

\hypersetup{
  pdfkeywords={},
  pdfsubject={},
  pdfcreator={Emacs}}

%\mode<handout>{\setbeamercolor{background canvas}{bg=black!5}}

\begin{document}

\maketitle
\begin{frame}{Outline}
\tableofcontents
\end{frame}

\setbeamercovered{transparent}
\setbeamertemplate{itemize item}[triangle]
\setbeamertemplate{itemize subitem}[ball]

% Support newlines (via \\) in a tabular cell.  The first parameter is
% how to horizontally align the text (e.g., l, r, or c).  The next
% parameter is the text to typeset.  The optional parameter specifies
% how to vertically align the cell *within* the box (either t, b, or
% c).  Note this vertical alignment does not set the baseline.
% [[http://tex.stackexchange.com/questions/2441/how-to-add-a-forced-line-break-inside-a-table-cell]]
% http://tex.stackexchange.com/questions/23521/tabular-vertical-alignment-to-top
\newcommand{\breakablecell}[3][c]{%
  \begin{tabular}[#1]{@{}#2@{}}%
  \def\valignment{#1}%
  \def\defaultalignment{}% Equivalent to c.
  \def\topalignment{t}%
  \def\bottomalignment{b}%
  \def\centeralignment{c}%
  \ifx\valignment\defaultalignment%
  \else%
    \ifx\valignment\centeralignment%
    \else%
      \ifx\valignment\bottomalignment%
        \vtop\bgroup\null\hbox\bgroup%
      \else%
        \ifx\valignment\topalignment%
          \errmessage{Error: t is unimplemented.}%
        \else%
          \errmessage{Error: Invalid vertical alignment #1}%
        \fi%
      \fi%
    \fi%
  \fi%
  #3%
  \ifx\valignment\defaultalignment%
  \else%
    \ifx\valignment\centeralignment%
    \else%
      \egroup\egroup%
    \fi%
  \fi%
  \end{tabular}%
}

\RecustomVerbatimEnvironment
   {Verbatim}{Verbatim}
   {fontfamily=courier,fontsize=\scriptsize,gobble=2,commandchars=\\\{\}}
\DefineShortVerb[fontfamily=courier,fontsize=\scriptsize]{\~}


%\definecolor{c00ff00}{RGB}{0,255,0}
%\definecolor{cff0000}{RGB}{255,0,0}
%\tikzset{a/.style={thin,circle,draw=black,minimum
%                   size=1.5cm,font={\scriptsize}}}
%\tikzset{b/.style={a,fill=blue!40}}
%\tikzset{c/.style={a,fill=green!40}}
%\tikzset{bc/.style={a,circle split, shade, shading=axis, shading angle=0,
%                   left color=green!40, right color=blue!40}}



\def\alerton[#1]#2{\alt<#1>{\alert{#2}}{#2}}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  PUBLIC KEY INTRO
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Schnellkurs Public Key Kryptographie}

\AtBeginSection[]
  {
     \begin{frame}<beamer>
     \frametitle{Outline}
     \tableofcontents[currentsection]
     \end{frame}
  }


\begin{frame}{Symmetrische Verschlüsselung}

\begin{center}
\includegraphics[width=.8\linewidth]{symmetric-encryption.pdf}
\end{center}

\begin{itemize}
\item<1-> Derselbe Schlüssel wird zum Ver- und Entschlüsseln benutzt.
\item<2-> Sender und Empfänger kennen beide diesen Schlüssel und halten ihn
geheim („Shared Secret“).
\begin{itemize}
  \item Wie eine Passphrase zum Anmelden bei einem Online-Service.
   \item Passphrase basierte Systeme sind unsicher, sofern die Passphrase
nicht über eine Zufallsgenerator erzeugt wurde.
\end{itemize}
\item<3-> Schlüsselaustausch und -verwaltung sind schwierig und nur
praktikabel bei wenigen Relationen.
\end{itemize}

\end{frame}


\begin{frame}[label=sec-1-2]{Asymmetrische Verschlüsselung (Public Key)}

\begin{center}
\includegraphics[width=.9\linewidth]{pubkey-encryption.pdf}
\end{center}

\begin{itemize}
  \item Es wird ein Schlüsselpaar aus öffentlichem und privatem
       (geheimen) Schlüssel verwendet.
  \item Falltüralgorithmus aus Encipher und Decipher.
  \item<2-> \alerton[2]{Öffentlicher Schlüssel nur zum Verschlüsseln}.
  \item<3-> \alerton[3]{Privater Schlüssel zum Entschlüsseln}.
  \item<4-> Öffentliche Schlüssel im öffentlichen Verzeichnis.
\end{itemize}


\end{frame}
\begin{frame}{Digitale Signaturen}

Verfahren:

\begin{itemize}
  \item Public-Key kann auch zum Signieren dienen.
  \item Privater Schlüssel zur Erstellung der Signatur.
  \item Öffentlicher Schlüssel zur Prüfung der Signatur.
\end{itemize}

Anwendungsgebiete:

\begin{itemize}
  \item Datenintegrität.
  \item Erstellung von Zertifikaten.
\end{itemize}

\end{frame}

\begin{frame}{Algorithmen}
Gängige Public-Key Verfahren:

\begin{itemize}
  \item RSA (verschlüsseln, signieren)
  \item DSA (signieren)
  \item Elgamal (verschlüsseln)
  \item ECC, Elliptische Kurven (verschlüsseln, signieren)
  \begin{itemize}
    \item Kürzere Schlüssel (256 bit)
    \item Gleiche Sicherheit (RSA mit 4096 bit)
  \end{itemize}
\end{itemize}

\end{frame}

\begin{frame}{Hybride Verfahren}

Public-Key Verfahren sind wesentlich langsamer als symmetrische Verfahren.

\begin{itemize}
  \item Ein zufälliger Sitzungsschlüssel von 256 Bit wird erzeugt,
  \item dieser wird mit einem Public-Key Verfahren an den Empfänger
    verschlüsselt,
  \item die Daten werden mit dem Sitzungsschlüssel symmetrisch
    verschlüsselt.
\end{itemize}

Vorteile:
\begin{itemize}
  \item Effizient bei allen Datengrößen.
  \item Einfaches Verschlüsseln an mehrere Empfänger.
\end{itemize}

\end{frame}


\begin{frame}{Zertifikate und PKI}

Wie entscheiden ob der Schlüssel authentisch ist?

\begin{itemize}
  \item<1-> Von Hand verwaltete Liste gültiger Schlüssel\\
    (z.B. im Adreßbuch).
  \item<1-> Ein Verzeichnis von gültigen Schlüsseln.
  \item<2-> Eine zentrale PKI (Public-Key Infrastructure), die auf einem
    hierarchisch aufgebauten System von Zertifizierungsstellen beruht.
  \item<3-> Eine dezentrale PKI wie das „Web-of-Trust“.
  \item<4-> Ein lokales „Trust-On-First-Use” Verfahren erkennt geänderte
    Schlüssel nach deren ersten Verwendung.
\end{itemize}

\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  BASIC FUNCTIONS
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Basisfunktionen}

\begin{frame}[fragile]{Erzeugen eines Schlüsselpaars}
 \begin{Verbatim}
  \$ gpg --gen-key
  gpg (GnuPG) 2.1.7; Copyright (C) 2015 Free Software Foundation, Inc.
  This is free software: you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.

  gpg: keybox '/home/wk/b/gnupg/kiel2015/pubring.kbx' created
  Note: Use "gpg2 --full-gen-key" for a full featured key generation dialog.

  GnuPG needs to construct a user ID to identify your key.

  Real name: John Steed
  Email address: steed@example.org
  You selected this USER-ID:
      "John Steed <steed@example.org>"

  Change (N)ame, (E)mail, or (O)kay/(Q)uit? o
\end{Verbatim}

gpg erzeugt den Schlüssel \ldots
\end{frame}
\begin{frame}[fragile]{}

und zeigt diesen dann an:

\begin{Verbatim}
  gpg: key 3F567FB6 marked as ultimately trusted
  public and secret key created and signed.

  gpg: checking the trustdb
  gpg: public key of ultimately trusted key 912FCB93 not found
  gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
  gpg: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u
  pub  \alert{rsa2048/3F567FB6 2015-08-12}
        Key fingerprint = AF19 1E21 6B28 0B02 65E6  50C1 6415 179B 3F56 7FB6
  uid         [ultimate] John Steed <steed@example.org>
  sub   rsa2048/63B40B8C 2015-08-12
\end{Verbatim}

\end{frame}

%
%  Backup
%
\begin{frame}[fragile]{Backup}
 \begin{itemize}
\item Der private Schlüssel is wichtig.

\item Ausdruck erstellen für Disaster Recovery:
\begin{itemize}
\item Bis 2.0:  Mittels ~paperkey~ drucken,
\item Seit 2.1: Ausgabe von ~gpg -a --export-secret-key~ drucken.
\end{itemize}

\item Lokalen Drucker verwenden!

\item Passphrase getrennt notieren!

\item<2-> Backup unter Unix:\\
\begin{Verbatim}
  \$ tar czf keys-DATUM.tar.gz --exclude random\_seed ~/.gnupg
\end{Verbatim}

\item<2-> Backup unter Windows:
  \begin{Verbatim}
  > gpgconf --list-dirs
  > cd DIR
  > del random_seed
  > gpgtar --skip-crypto -eo backup-keys-DATUM.tar .
  \end{Verbatim}
\end{itemize}
\end{frame}

%
% Import
%
\begin{frame}[fragile]{Import von Schlüsseln}
\begin{itemize}
\item Von Webseite holen und abspeichern:
\end{itemize}
\begin{Verbatim}
  \$ wget -O a.key https://www.datenschutzzentrum.de/uploads/uld/uld.asc
  \$ gpg --import a.key
  \$ rm a.key
\end{Verbatim}

\begin{itemize}
\item Über Keyserver holen:
\end{itemize}
\begin{Verbatim}
  \$ gpg --keyserver keys.gnupg.net --recv-key 0D75199E11357324
  gpg: key 0D75199E11357324: public key "ULD-SH <mail[...]>" imported
  gpg: public key of ultimately trusted key 0F1EB16A912FCB93 not found
  gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
  gpg: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u
  gpg: Total number processed: 1
  gpg:               imported: 1
\end{Verbatim}
\end{frame}

%
%  Verschlüsseln (using a new key)
%
\begin{frame}[fragile]{Verschlüsseln}{Teil 1}
\begin{Verbatim}
  \$ gpg \alerton[2]{-v} \alerton[3]{-e} \alerton[4]{-r mail@datenschutzzentrum.de} \alerton[5]{datei.pdf}
  gpg: using PGP trust model
  gpg: using subkey A749BED409A66C9A instead of primary key 0D75199E11357324
\end{Verbatim}
  \ldots

\begin{itemize}
\item<2-> Das ~-v~ ist optional um anzuzeigen was passiert.
\item<3-> Das ~-e~ wählt Verschlüsselung aus.
\item<4-> Das ~-r~ gibt den Empfänger an.
\item<5-> ~datei.pdf~ ist die zu verschlüsselnde Datei.
\end{itemize}
\end{frame}


\begin{frame}[fragile]{Verschlüsseln}{Teil 2}
\begin{Verbatim}
  gpg: A749BED409A66C9A: \alerton[1]{There is no assurance this key belongs to [...]}
  sub  elg4096/A749BED409A66C9A 2008-04-11 ULD-SH <mail@[...]zentrum.de>
  Primary key fingerprint:  \alerton[2,3]{D092 F1B5 AB9F D68E 4DA0  3633 [...]}
        Subkey fingerprint: 4E31 0B46 A394 DE69 D56A  6F82 [...]

  It is NOT certain that the key belongs to the person named
  in the user ID.  If you *really* know what you are doing,
  you may answer the next question with yes.

  \alerton[3]{Use this key anyway? (y/N) y}
  gpg: reading from 'datei.pdf'
  gpg: writing to \alerton[4]{'datei.pdf.gpg'}
  gpg: {ELG/AES256} encrypted for: "A749BED409A66C9A ULD-SH <mail@[...]>"
\end{Verbatim}

\begin{itemize}
\item Der Schlüssel ist nicht bekannt.
\item<2-> Der Fingerprint wird angezeigt.
\item<3-> Nach Überprüfung mit „Ja“ oder „Yes“ antworten.
\item<4-> Die verschlüsselten Daten sind abgespeichert.
\end{itemize}
\end{frame}


%
% Is the key valid?
%
\begin{frame}[fragile]{Schlüssel vertrauenswürdig setzen}
\begin{Verbatim}
  \$ gpg \alerton[1]{--lsign-key}  \alerton[2]{0D75199E11357324}
  \ldots
  pub  dsa3072/0D75199E11357324
       created: 2008-04-11  expires: never       usage: SC
       trust: unknown       validity: unknown
   Primary key fingerprint: \alerton[2]{D092 F1B5 AB9F D68E 4DA0  3633 [...]}

       \alerton[2]{ULD-SH <mail@datenschutzzentrum.de>}

  Are you sure that you want to sign this key with your
  key "John Steed <steed@example.org>" (6415179B3F567FB6)

  The signature will be marked as non-exportable.

  Really sign? (y/N) \alerton[3]{y}
\end{Verbatim}

\begin{itemize}
\item<1-> ~--lsign-key~ zum lokalen Signieren verwenden.
\item<2-> Per Telefon oder mittels einer Publikation Fingerprint prüfen,
\item<3-> bei positivem Resultat mit „Yes“ oder „Ja” bestätigen.
\end{itemize}
\end{frame}

\begin{frame}[fragile]{Schlüsselstatus anzeigen}

\begin{Verbatim}
  \$ gpg --fingerprint 0D75199E11357324
  gpg: checking the trustdb
  \ldots
  pub   dsa3072/0D75199E11357324 2008-04-11
        Key fingerprint = D092 F1B5 AB9F D68E 4DA0  3633 0D75 199E 1135 7324
  uid                 [ \alert{full}  ] ULD-SH <mail@datenschutzzentrum.de>
  sub   elg4096/A749BED409A66C9A 2008-04-11
\end{Verbatim}
\begin{itemize}
\item Allgemeines Kommando um den Fingerprint anzuzeigen.
\item In diesem Beispiel ist der Schlüssel vertrauenswürdig (full).
\item Eine Liste der Vertrauensstufen findet sich im Handout.
\end{itemize}
\end{frame}

%
%  Signing
%
\begin{frame}[fragile]{Signieren}{(standard)}
\begin{Verbatim}
  \$ gpg -v \alerton[1]{-s} \alerton[2]{datei.pdf}
  gpg: using PGP trust model
  gpg: writing to \alerton[3]{'datei.pdf.gpg'}
  gpg: RSA/SHA256 signature from: "6415179B3F567FB6 John Steed <steed@example.org>"
\end{Verbatim}

\begin{itemize}
\item<1-> Das ~-s~ (oder ~--sign~) wählt Signieren aus.
\item<2-> ~datei.pdf~ ist die zu signierende Datei.
\item<3-> ~datei.pdf.sig~ ist die erstellte Datei mit Signatur.
\end{itemize}
\end{frame}

\begin{frame}[fragile]{Signieren}{(abgetrennt)}
\begin{Verbatim}
  \$ gpg -v \alerton[1]{-b} \alerton[2]{datei.pdf}
  gpg: using PGP trust model
  gpg: writing to \alerton[3]{'datei.pdf.sig'}
  gpg: RSA/SHA256 signature from: "6415179B3F567FB6 John Steed <[...]>"
\end{Verbatim}

\begin{itemize}
\item<1-> Das ~-b~ (oder ~--detach-sign~) wählt Signieren aus.
\item<2-> ~datei.pdf~ ist die zu signierende Datei.
\item<3-> ~datei.pdf.sig~ ist die erstellte abgetrennte Signatur.
\end{itemize}
\end{frame}


\begin{frame}[fragile]{Signieren}{(anderer Schlüssel)}
\begin{Verbatim}
  \$ gpg -v -b \alerton[1]{-u peel} datei.pdf
  gpg: writing to 'datei.pdf.sig'
  gpg: \alerton[2]{EDDSA}/SHA256 signature from: "EA9644E68E27FD07 Emma Peel <[...]>"
\end{Verbatim}

\begin{itemize}
\item Das ~-u~ (oder ~--local-user~) wählt den
  Signaturschlüssel aus.
\item Name, Mailadresse oder Keyid wird benötigt.
\item<2-> Dieser Schlüssel benutzt einen ECC Algorithmus.
\end{itemize}
\end{frame}


%
% Checking a signature
%
\begin{frame}[fragile]{Signatur prüfen}
\begin{Verbatim}
  \$ gpg -v \alerton[2]{--verify} \alerton[3]{datei.pdf.sig} \alerton[4]{datei.pdf}
  gpg: Signature made Sun 16 Aug 2015 09:24:06 AM CEST
  gpg:                using EDDSA key EA9644E68E27FD07
  \ldots
  gpg: \alerton[5]{Good signature} from "Emma Peel <peel@example.org>" [unknown]
  gpg: WARNING: This key is not certified with a trusted signature!
  gpg:          \alerton[6]{There is no indication that the signature belongs [...]}
  Primary key fingerprint: \alerton[7]{CA4A EF4F 0065 91A8 DF82  761F EA96 44[...]}
  gpg: binary signature, digest algorithm SHA256, key algorithm ed25519
\end{Verbatim}

\begin{itemize}
\item<2-> ~--verify~ wählt die Prüfung einer Signatur aus.
\item<3-> ~datei.pdf.sig~ ist die abgetrennte Signatur.
\item<4-> ~datei.pdf~ ist die zu prüfende Datei.
\item<5-> Die Signatur is gültig, \alert{aber} \ldots
\item<6-> es ist nicht klar ob dies Emmas Schlüssel ist, \ldots
\item<7-> deswegen den Fingerprint prüfen.
\end{itemize}
\end{frame}



\begin{frame}[fragile]{Wie man OpenPGP Dateien erkennt}

\begin{itemize}
  \item Mittels eines Tools anhand des Inhalts: Entweder durch einen
        Versuch mit ~gpg~, oder auf Unix, mit dem Tool ~file~.

  \item Mittels der Bibliotheksfunktion ~gpgme_data_identify~ von
    Libgpgme.

  \item Bei „armored“ Dateien auch visuell anhand des Inhalts\\
    (z.B. ~-----BEGIN PGP MESSAGE-----~).

  \item Anhand der Dateiendung (per Konvention):
     \begin{tabular}{ll}
     ~.sig~ & Binäre abgetrennte Signatur.\\
     ~.pub~ & Datei mit öffentliche Schlüsseln.\\
     ~.sec~ & Datei mit privaten Schlüsseln.\\
     ~.asc~ & „Armored“ OpenPGP Datei.\\
     ~.gpg~ & Andere binäre OpenPGP Datei.\\
     ~.pgp~ & Dito, aber von PGP verwendet.\\
     \end{tabular}
\end{itemize}

\end{frame}

\begin{frame}[fragile]{Komprimieren}

\begin{itemize}

  \item Verschlüsselte Daten können nicht mehr komprimiert werden.

  \item ~gpg~ komprimiert deswegen die Daten bevor sie Verschlüsselt
    werden.

  \item Bereits verschlüsselte Daten werden i.d.R. erkannt und die
    Komprimierungsstufe wird ausgeschaltet.

  \item Mit ~-c 0~ kann die Komprimierung explizit ausgeschaltet werden.

  \item Beim Entschlüsseln werden die Daten automatisch dekomprimiert.
         Vorsicht: ZIP Bombe.

  \item Eventuell die Option ~--max-output~ benutzen.
\end{itemize}
\end{frame}

\begin{frame}[fragile]{S/MIME}

\begin{itemize}
  \item GnuPG unterstützt auch S/MIME (X.509/CMS).

  \item S/MIME ist nicht kompatibel zu OpenPGP.

  \item Es werden andere Schlüssel verwendet und diese müssen durch eine
    CA zertifiziert werden.

  \item Das Tool ~gpgsm~ wird anstatt von ~gpg~ verwendet.

  \item Auch für X.509 Zertifikate und CSRs für Webserver.
\end{itemize}

\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%  UNATTENDED USE
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Automatisieren mit GnuPG}

%
% Using gpg in a pipeline
%
\begin{frame}[fragile]{Pipelines}{Beispiel: In der Wolke speichern}

\begin{Verbatim}[commandchars=!\{\}]
  $ !alerton[1]{tar cf - /var/log} \
  | !alerton[2]{gpg --batch -e --always-trust -r 0x12345678abcdef0} \
  | !alerton[3]{ssh backup@archive 'cat >"backup-$(date +%Y-%m-%d).tar.gpg"'}
\end{Verbatim}

\begin{itemize}
  \item<1-> ~tar~ kopiert rekursiv alle Dateien aus ~/var/log/~
     nach „stdout“,
  \item<2-> ~gpg~ liest, verschlüsselt und gibt nach „stdout“ aus.
  \begin{itemize}
    \item ~--batch~ verhindert hierbei jede Nachfrage.
    \item ~-e~ fordert Verschlüsselung an.
    \item ~--always-trust~ vertraut allen angegebenen Schlüsseln.
    \item ~0x12345678abcdef0~ ist eine Key-ID. \\
          {\small (Besser: Fingerprint benutzen)}
  \end{itemize}
  \item<3-> ~ssh~ verbindet mit Host „archive“, führt dort
     ~cat~ aus und schreibt in eine Datei.
\end{itemize}
\end{frame}

\begin{frame}[fragile]{Pipelines}{Beispiel: Aus der Wolke holen}

\begin{Verbatim}[commandchars=!\{\}]
  $ !alerton[1]{cd restored-logs}
  $ !alerton[2]{ssh backup@archive 'cat DATEI.tar.gpg'} \
  | !alerton[3]{gpg --batch -d  --max-output 0x80000000} \
  | !alerton[4]{tar xpf -}
\end{Verbatim}

\begin{itemize}
  \item<1-> Ins Zielverzeichnis wechseln,
  \item<2-> per ~ssh~ die Datei nach „stdout“ senden,
  \item<3-> ~gpg~ entschlüsselt die Daten.
  \begin{itemize}
    \item ~-d~ (oder ~--decrypt~) kann entfallen.
    \item ~--max-output~ gibt die maximal erwartete Länge der
      Ausgabe in Bytes an.
  \end{itemize}
  \item<4-> ~tar~ entpackt das entschlüsselte Archiv.
\end{itemize}

\end{frame}

%
% Important options for unattended use
%
\begin{frame}[fragile]{Unbeaufsichtigte Benutzung}

Sinnvolle Optionen:

\begin{itemize}
  \item ~--status-fd 2~ erzeugt maschinell verarbeitbare Ausgaben.
  \item ~--batch~ schaltet alle Abfragen aus.
  \item ~--yes~ benutzt implizit „Ja“ für viele Abfragen;
  \begin{itemize}
      \item aber nicht überall.
  \end{itemize}
  \item ~--max-output N~ kann zur Verhinderung von ZIP Bomben
       benutzt werden.
  \item ~--trust-model=always~ kann u.U. mit ~-r~ benutzt
    werden (Alternative zu ~--lsign-key~).
\end{itemize}
\end{frame}

%
% Hints
%
\begin{frame}[fragile]{Ratschläge}
\begin{itemize}
  \item Nach Möglichkeit, Schlüssel immer per Fingerprint angeben.
  \item<2-> Signaturschlüssel explizit auswählen.
  \item<3-> ~--encrypt-to~ benutzen um verschlüsselte Daten
     auch selbst entschlüsseln zu können.
    \begin{itemize}
      \item \alerton[3]{Achtung}: Verhindert Anonymität des Senders.
      \item ~--no-encrypt-to~ schaltet dies explizit aus.
    \end{itemize}
  \item<4-> Definierte Konfigurationsdatei und GNUPGHOME nutzen.
  \item<5-> Auf Servern keine Passphrase setzen bzw. Smartcard benutzen.
  \item<6-> Immer aktuelle Versionen von GnuPG verwenden.
\end{itemize}
\end{frame}


%
% Summary
%
\begin{frame}{Zusammenfassung}
\bigskip
\begin{itemize}
  \item GnuPG ist vielseitig zu verwenden,
  \item Leicht in Skripte einbindbar.
  \item Sichere, etablierte Algorithmen und Protokolle.
  \item Kostengünstig.
  \item Zukunftssicher.
\end{itemize}

\begin{block}<2->{}
\begin{center}
Vielen Dank.
\end{center}
\begin{itemize}
  \item \url{https://gnupg.org}
  \item \url{https://wiki.gnupg.org}
\end{itemize}

\bigskip

{\vfill}
{\tiny{Slides are \copyright{} 2015 Werner Koch, CC BY-SA 4.0.\\[-2mm]
\url{https://gnupg.org/ftp/blurbs/kiel-2015_sicher-verschl-mit-gnupg.pdf}}}
\end{block}

\end{frame}

\end{document}
