add key generation subsection to 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 \subsection{Key Generation}
33 Because of lack of forward secrecy\ac{PFS} in OpenPGP it is preferable to use large asymmetric keys for long term communication protection. A RSA key of 8192 bits should provide enough confidentiallity for the next 15+ years\ref{\url{https://www.keylength.com/}}.
34
35 \configfile{new-key-generation.txt}{New key generation with GnuPG version 2.1}
36
37 \configfile{params.txt}{Paramters for key generation with GnuPG version 2.1}
38
39 \subsection{ECC - Ellyptic Curve Cryptography}
40 Since the realease of GnuPG version 2.1 end-2014\footnote{\url{https://www.gnupg.org/faq/whats-new-in-2.1.html#ecc}} ECC is supported. Older versions though are still widely used therefore ECC is not yet applicable in practice. 
41
42 %\subsubsection{PGP / GPG Operations}
43
44 %% Ciphering - Unciphering operations
45 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
46
47 %% Signing / checking signatures
48 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
49
50 %\subsubsection{Trusted Keys}
51
52 %%Explain that a key by himself is not trustable.  Chain of trust principle.
53
54 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
55
56 %\subsection{Available implementations and mails plugins}
57
58 %% Microsoft Windows (Symantec for Outlook? GnuPG + ....)
59 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
60
61 %% Linux (GnuPG + Enigmail for Thunderbird)
62
63 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
64 %% Mac OS X (GnuPG + GPGMail)
65 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
66
67