rework section openpgp
[ach-master.git] / src / practical_settings / GPG.tex
1 % hack.
2 \gdef\currentsectionname{GPG}
3 \gdef\currentsubsectionname{GnuPG}
4
5 The OpenPGP protocol\footnote{\url{https://tools.ietf.org/search/rfc4880}} 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.
6  
7 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).
8
9 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. 
10
11 When using GnuPG, there are a couple of things to take care of:
12 \begin{itemize*}
13   \item keylengths (see section \ref{section:keylengths})
14   \item randomness (see section \ref{section:RNGs})
15   \item preference of symmetric encryption algorithm (see section \ref{section:CipherSuites})
16   \item preference of hash function (see section \ref{section:CipherSuites})
17 \end{itemize*}
18
19 Properly dealing with key material, passphrases and the web-of-trust is outside of the scope of this document. The GnuPG
20 website\footnote{\url{http://www.gnupg.org}} has a good tutorial on GnuPG.
21
22 \subsubsection{Hashing}
23 Avoid SHA-1 by preferring better hashing methods. GnuPG. Edit \$HOME/.gnupg/gpg.conf:
24
25 \configfile{gpg.conf}{208-210}{Digest selection in GnuPG}
26
27 \subsection{Key Generation}
28 \gdef\currentsectionname{GPG}
29 \gdef\currentsubsectionname{GnuPG}
30 Because of lack of forward secrecy \ref{subsection:PFS} in OpenPGP it is preferable to use large asymmetric keys for long term
31 communication protection. A RSA key of 8192 bits should provide enough confidentiality for the next 15+ years\footnote{\url{https://www.keylength.com}}.
32
33 \configfile{new-key-generation.txt}{}{New key generation with GnuPG version 2.1}
34
35 \configfile{params.txt}{}{Parameters for key generation with GnuPG version 2.1}
36
37 The preferences parameters S9 to Z1 correspond to AES256, CAMELLIA256, AES192, CAMELLIA192, AES, CAMELLIA128, TWOFISH,
38 SHA512, SHA384, SHA256, BZIP2, ZLIB and ZIP. The parameters 3DES, SHA-1 and uncompressed are set automatically by GnuPG.
39
40 \subsection{ECC - Elliptic Curve Cryptography}
41 Since the release of GnuPG version 2.1 end-2014\footnote{\url{https://www.gnupg.org/faq/whats-new-in-2.1.html}} ECC is supported. Older versions though are still widely used therefore ECC is not yet applicable in practice. 
42
43 %\subsubsection{PGP / GPG Operations}
44
45 %% Ciphering - Unciphering operations
46 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
47
48 %% Signing / checking signatures
49 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
50
51 %\subsubsection{Trusted Keys}
52
53 %%Explain that a key by himself is not trustable.  Chain of trust principle.
54
55 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
56
57 %\subsection{Available implementations and mails plugins}
58
59 %% Microsoft Windows (Symantec for Outlook? GnuPG + ....)
60 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
61
62 %% Linux (GnuPG + Enigmail for Thunderbird)
63
64 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
65 %% Mac OS X (GnuPG + GPGMail)
66 %%% TOO COMPLEX. Make a pointer to a good GPG tutorial
67
68