#+TITLE:     Vergangenheit, Gegenwart und Zukunft von GnuPG
#+Author:    Werner Koch
#+EMAIL:     wk@gnupg.org
#+DATE:      39. DAFTA --- Köln\newline\newline\small{19. November 2015}
#+LANGUAGE:  en
#+OPTIONS:   H:2 num:t toc:nil \n:nil @:t ::t |:t ^:{} -:t f:t *:t <:t
#+OPTIONS:   TeX:t LaTeX:nil skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+STARTUP: beamer
#+LATEX_CLASS: beamer
#+LATEX_CLASS_OPTIONS: [presentation]
#+BEAMER_THEME: Singapore
#+BEAMER_HEADER: \usepackage{pgfplots}
#+BEAMER_HEADER: \pgfplotsset{compat=1.11}
#+BEAMER_HEADER: \usepackage{tikz}
#+BEAMER_HEADER: \usetikzlibrary{shapes}
#+BEAMER_HEADER: \usetikzlibrary{positioning}
#+BEAMER_HEADER: \logo{\includegraphics[height=5mm]{gnupg-logo-tr.png}}
#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %2BEAMER_ACT(Act) %4BEAMER_COL(Col) %8BEAMER_OPT(Opt)

#+begin_beamer
\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}%
}

\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}}
\AtBeginSection[]
  {
     \begin{frame}<beamer>
     \frametitle{Übersicht}
     \tableofcontents[currentsection,hideothersubsections]
     \end{frame}
  }
#+end_beamer
#+MACRO: alerton  @@beamer:\begin{alertenv}<$1>@@
#+MACRO: alertend @@beamer:\end{alertenv}@@

* Vergangenheit
** Wir schreiben das Jahr 1991

 PGP-2

 - Phil Zimmermann schreibt erste öffentliche Verschlüsselungssoftware.
 - @@beamer:<2->@@ Wesentlich verbessert von Branko Lankester, Colin Plumb,
   Derek Atkins, Hal Finney, Peter Gutmann, et al.


 - @@beamer:<3->@@ Problem 1: RSA Patent
 - @@beamer:<4->@@ Problem 2: IDEA Patent
 - @@beamer:<5->@@ Problem 3: Exportkontrolle

** 5 Jahre später
# Only a quick run through.

 - 1996 :: PGP Inc. gegründet
 - 1997 :: DH Patent abgelaufen, PGP-5 veröffentlicht.
 - 1997 :: IETF Arbeitsgruppe für OpenPGP gegründet.
 - 1998 :: PGP Inc. von NAI gekauft.
 - 1998 :: RFC-2440 veröffentlicht.
 - 2002 :: NAI stellt Support für PGP ein.
 - 2007 :: RFC-4880 veröffentlicht.
 - 2012 :: RFC-6637 veröffentlicht (ECC Erweiterung)

** IN Kongreß 1997

#+begin_center
#+BEAMER:\vspace{-5mm}
#+BEAMER:\includegraphics[width=0.7\textwidth]{in-kongress-97.pdf}
#+end_center

** g10 / GnuPG
***                                                                 :B_quote:
    :PROPERTIES:
    :BEAMER_env: quote
    :BEAMER_ACT: <2->
    :END:
„Das Briefgeheimnis sowie das Post- und Fernmeldegeheimnis sind
unverletzlich.  Beschränkungen dürfen nur auf Grund eines Gesetzes
angeordnet werden.”

***                                                                 :B_block:
    :PROPERTIES:
    :BEAMER_env: block
    :END:

 - @@beamer:<1->@@ PGP-5 keine Freie Software.
 - @@beamer:<2->@@ Dezember 1997: @@beamer:\alerton[2]{g10}@@ als
   PGP-2 Ersatz:
   - Keine patentierten Verfahren
   - Als Unix Werkzeug entworfen
 - @@beamer:<3->@@ Frühjahr 1998: Name auf GnuPG geändert; nun OpenPGP.

** Auswahl der Algorithmen

 - Ursprungsversion (g10)
   - Elgamal ersetzt RSA (signieren und verschlüsseln).
   - Blowfish für symmetrische Verschlüsselung.
   - IDEA+RSA als Plugin zu PGP-2 Kompatibilität in einigen Ländern.

#+beamer:\pause
 - OpenPGP hat Unterschlüssel
   - DSA für Signaturen, Elgamal zur Verschlüsselung.
   - 3DES oder CAST5 zur symmetrische Verschlüsselung.
   - RSA im September 2000 hinzugefügt

#+beamer:\pause
 - GnuPG und PGP-{5,6,7}
   - Zusammenarbeit mit Hal Finney und Jon Callas.
   - Informale Interoperabilitättests.
   - Testen von neuen Features.


** GnuPG-2

 - @@beamer:<1->@@ g10^{code} gegründet in 2001.
 - @@beamer:<2->@@ Ausschreibung zur Implementierung von S/MIME gewonnen.
   - zusammen mit Intevation (Osnabrück)
   - und KDAB (Berlin).
 - @@beamer:<3->@@ \ldots Start von GnuPG-2 (2003)
   - Modularisiert
   - Separate Krypto-Bibliothek
   - Bibliothek mit GnuPG API (gpgme)

** Portierung nach Windows

 - @@beamer:<1->@@Experimenteller Port in 1998.

 - @@beamer:<2->@@Vollständiger Port in 2000.
   - Aufgrund eines Projekts des BMWi

 - @@beamer:<3->@@Gpg4win wurde 2006 veröffentlicht

 - @@beamer:<4->@@GnuPG-2 war nicht für eine Windows Portierung vorgesehen
    - \ldots wir haben es dann aber doch geschafft.

 - @@beamer:<5->@@ Zirka 4000 Gpg4win 2.x Downloads am Tag

* Gegenwart
** Branches

 - @@beamer:<1->@@ Version 2.1 (“@@beamer:\alerton[1]{modern}@@”)
   - Veröffentlicht im November 2014.
   - Neue Features (z.B. TOFU).

 - @@beamer:<2->@@ Version 2.0 (“@@beamer:\alerton[2]{stable}@@”)
   - Befindet sich im Maintenance-Modus
   - Kleinere Änderungen als Hilfe zur Migration nach 2.1.

 - @@beamer:<3->@@ Version 1.4 (“@@beamer:\alerton[3]{classic}@@”)
   - Für alte Daten und Schlüssel sowie Plattformen wie VMS etc.
   - Hat weiterhin PGP-2 Support.
   - Kleinere Änderungen als Hilfe zur Migration nach 2.1.

** OpenPGP IETF Working Group

#+begin_beamer
\begin{description}
\item<1->[Mär 2008] Abgeschlossen nach RFC-4880
\item<2->[Jun 2015] Re-chartered
\item<3->[Sep 2015] (rough) Consensus über Updates von RFC-4880.
\item<4->[Feb 2016] Erster WG I-D for RFC-4880bis.
\item<5->[Jul 2016] RFC-4880bis WG I-D Final Call.
\end{description}
#+end_beamer

** RFC-4880bis Ziele

  - Zusammenfassung der relvanten 3 OpenPGP RFCs.

  - Neue Kurven wie von der Crypto Forum Research Group (CFRG)
    empfohlen.

  - Symmetrische Verschlüsselung mit modernem Integritätsschutz (AEAD).

  - Revision der MUST Algorithmen and Verbannung von schwachen
    Algorithmen (MD5, SHA-1).

  - Neues Fingerprint Verfahren.

** Elliptic curve cryptography

#+begin_beamer
\begin{center}
  \begin{tikzpicture}
    \begin{axis}[%
        height=35mm,
        axis lines=center,
        xticklabels={},
        yticklabels={},
        samples=150,
        domain=-2.8:5]
    \addplot[blue]{sqrt(x^3+17)};
    \addplot[blue]{-sqrt(x^3+17)};
    \end{axis}
  \end{tikzpicture}
\end{center}
#+end_beamer


 - @@beamer:<2->@@ RFC-6637 beschreibt ECC für OpenPGP.
   - @@beamer:\alerton[3]{NIST Kurven}@@,
   - andere Kurven auch möglich (z.B. Brainpool).
 - @@beamer:<2->@@ GnuPG 2.1 implementiert dies seit 2011.
 - @@beamer:<3->@@ NIST Kurven sind etwas suspekt.
 - @@beamer:<4->@@ Wir wollen Kurven mit besserer Repudation:
   - ECDH mit Curve25519,
   - EdDSA mit Ed25519,
   - die vom CFRG vorgeschlagenen Kurven.

** Exkurs: Remote Use

#+begin_beamer
\begin{center}
  \begin{tikzpicture}
    \draw (0, 0) node[b, minimum width=2cm]{\breakablecell{c}{Exposed\\box}}
          -- (3, 0) node[b, minimum width=2cm]{\breakablecell{c}{Safe\\box}};
   \end{tikzpicture}
\end{center}
#+end_beamer

 - @@beamer:<2->@@ Mittels ssh’s Socket Forwarding:
   - gpg-agent läuft auf dem "sicheren" Rechner,
   - gpg läuft auf dem "exponierten" Server.
 - @@beamer:<3->@@ Siehe auch =--extra-socket=, =--browser-socket=.

** Spenden

  - @@beamer:<1->@@ 5000 USD/Monat von der Linux Foundation für 2015.

  - @@beamer:<2->@@ ProPublica Artikel im Februar ...

  - @@beamer:<3->@@ wir erhielten \tilde{}300 KEUR an Spenden
    - Individuell
    - Unternehmen (Stripe, FB)

  - @@beamer:<4->@@ Wir hatten Glück --- andere Projekte sind immer
    noch unterfinanziert.


** Was wir mit unseren Spendne machen

  - @@beamer:<1->@@ Neal Walfield als zweiter Vollzeitentwickler

  - @@beamer:<2->@@ Yutaka Niibe arbeitet als Freelancer
    (e.g. Smartcards, ECC)

  - @@beamer:<3->@@ Kai Michaelis hilft Teilzeit bei Enigmail.

  - @@beamer:<4->@@ Justus Winter als dritter Vollzeitentwickler seit
    diesem Monat.

  - @@beamer:<5->@@ Ich arbeite auch noch mit.

** Besonderen Dank

  - David Shaw

  - Marcus Brinkmann

  - Jussi Kivilinna

  - Andre Heinecke

  - Andreas Metzler

  - Daniel Kahn Gilmor

  - Daniel Leidert

  - Eric Dorland

  - Bug-Berichter, Reviewer, Tester, Spender, \ldots


* Zukunft

** Vision

 - Dank Edward Snowden besteht ein neues Interesse an Verschlüsselung

#+beamer:\pause
 - Gpg und das Web-of-Trust sind schwierig zu benutzen
   - Keysigning Parties sind für Geeks
#+beamer:\pause

 - Neuer Standardfocus:
   - Massenüberwachung
   - Einfache Benutzung

#+beamer:\pause
 - Hochsensible Einsatzbereiche werden weiterhin unterstützt:
   - Per Option.

** Support für Tor und GNUnet

 - @@beamer:<1->@@ Netzzugriff geschieht über ein dediziertes Modul.

 - @@beamer:<2->@@ Die Option =--enable-tor= sendet alles über Tor.

 - @@beamer:<3->@@ GNU Naming System (GNS).


** Tofu

***                                                            :B_definition:
    :PROPERTIES:
    :BEAMER_env: definition
    :BEAMER_ACT: <1->
    :END:
 Trust On First Use: Das Vertrauensmodell der Secure Shell (ssh)
***                                                                 :B_block:
    :PROPERTIES:
    :BEAMER_env: block
    :END:

 - @@beamer:<2->@@ Erste Implementierung existiert.

 - @@beamer:<3->@@ Wird generell in 2.2 vorhanden sein.

 - @@beamer:<4->@@ Wird zukünftig das voreingestellte Vertrauensmodell.


** GPGME

 GPGME ist eine Bibliothek um auf gpg, gpgsm und gpg-agent zuzugreifen.

\bigskip

#+beamer:\pause

 Features in Planung:

 - Verbesserte "Language Bindings"

 - Unterstützung neuer gpg Features.

 - Gpg wird als Co-Process laufen:
   - Signaturprüfung
   - Entschlüsselung.

** Zeitrahmen für neue GnuPG Versionen

 - @@beamer:<1>@@ 1.4 Veröffentlichungen bei Bedarf
   - Jedoch ohne ECC Support.

 - @@beamer:<2>@@ 2.0 wird im Januar 2018 End-Of-Life erreichen
   - Kein ECC oder RFC-4880bis Erweiterungen.

 - @@beamer:<3>@@ 2.1 wird durch *2.2* ersetzt und als *stable* deklariert:
   - Anfang nächsten Jahres
   - Support für Curve25519.
   - ECC Schlüsselerzeugung wird noch =--expert= erfordern.

 - @@beamer:<4>@@ 2.3 für RFC-4880bis Entwicklungen
   - Einige Features werden nach 2.2 zurück portiert.

*                                                           :B_ignoreheading:
  :PROPERTIES:
  :BEAMER_env: ignoreheading
  :END:
** Zusammenfassung
***                                                                 :B_block:
    :PROPERTIES:
    :BEAMER_env: block
    :END:

 - @@beamer:<1,4->@@ 2.1/2.2 wird bald der Standard sein.
 - @@beamer:<2,4->@@ Solides Entwicklerteam.
 - @@beamer:<3,4->@@ Wir machen Massenüberwachung teuer.

***                                                                 :B_block:
    :PROPERTIES:
    :BEAMER_env: block
    :BEAMER_ACT: <4->
    :END:

#+begin_center
  Vielen Dank für Ihre Aufmerksamkeit.
#+end_center


#+BEAMER: {\vfill}
#+BEAMER: {\vspace{10mm}}
#+BEAMER: {\tiny{Slides are \copyright{} 2015 The GnuPG Project, CC BY-SA 4.0.
#+BEAMER: \url{https://gnupg.org/ftp/blurbs/dafta15_gnupg-vergangenheit-gegenwart-zukunft.org}}}
