rework and update openpgp section
[ach-master.git] / src / practical_settings / GPG.tex
1 % hack.
2 \gdef\currentsectionname{GPG}
3 \gdef\currentsubsectionname{GnuPG}
4
5 The OpenPGP protocol
6 \footnote{\url{https://tools.ietf.org/search/rfc4880}}
7  defines a set of asymmetric- and symmetric encryption algorithms, signature methods and compression protocols. GnuPG\footnote{\url{https://gnupg.org/}}, a FOSS implementation of the OpenPGP standard, is widely used for mail encryption.
8  
9 GnuPG signs a message (SHA-2, RIPEMD or SHA-1), encrypts it symmetrically (AES, CAMELLIA, TWOFISH, BLOWFISH, 3DES, CAST5 or IDEA) and encrpts the symmetric key and the hash with Bob's public key asymmetrically (RSA, ELG, DSA, ECDH, ECDSA or EDDSA).
10
11 Research on SHA-1 conducted back in 2005\footnote{\url{https://www.schneier.com/blog/archives/2005/02/sha1\_broken.html}} as well as the first practical successful collision in early 2017\footnote{\url{https://shattered.io/}} has made clear that collision attacks are a real threat to the security of the SHA-1 hash function. Since SHA-1 is defined as a must implementation by the OpenPGP specification, GnuPG is still using it. Currently settings should be adapted to preferably avoid using SHA-1. 
12
13 When using GnuPG, there are a couple of things to take care of:
14 \begin{itemize*}
15   \item keylengths (see section \ref{section:keylengths})
16   \item randomness (see section \ref{section:RNGs})
17   \item preference of symmetric encryption algorithm (see section \ref{section:CipherSuites})
18   \item preference of hash function (see section \ref{section:CipherSuites})
19 \end{itemize*}
20
21 Properly dealing with key material, passphrases and the web-of-trust is outside of the scope of this document. The GnuPG website\footnote{\url{http://www.gnupg.org/}} has a good tutorial on PGP.
22
23 This \href{https://www.debian-administration.org/users/dkg/weblog/48}{Debian How-to}\footnote{\url{https://www.debian-administration.org/users/dkg/weblog/48}} is a great resource on upgrading your old PGP key as well as on safe default settings. This section is built based on the Debian How-to.
24
25 \subsubsection{Hashing}
26 Avoid SHA-1 by prefering better hashing methodes. GnuPG. Edit \$HOME/.gnupg/gpg.conf:
27
28 \configfile{gpg.conf}{208-210}{Digest selection in GnuPG}
29
30 Before you generate a new OpenPGP key, make sure there is enough entropy available (see subsection \ref{subsec:RNG-linux}).
31
32 %\subsubsection{PGP / GPG Operations}
33
34 %% Ciphering - Unciphering operations
35 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
36
37 %% Signing / checking signatures
38 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
39
40 %\subsubsection{Trusted Keys}
41
42 %%Explain that a key by himself is not trustable.  Chain of trust principle.
43
44 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
45
46 %\subsection{Available implementations and mails plugins}
47
48 %% Microsoft Windows (Symantec for Outlook? GnuPG + ....)
49 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
50
51 %% Linux (GnuPG + Enigmail for Thunderbird)
52
53 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
54 %% Mac OS X (GnuPG + GPGMail)
55 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
56
57