add key generation subsection to openpgp section
[ach-master.git] / src / practical_settings / GPG.tex
index 1ab09ff..31c8267 100644 (file)
@@ -1,30 +1,43 @@
+% hack.
+\gdef\currentsectionname{GPG}
+\gdef\currentsubsectionname{GnuPG}
+
 The OpenPGP protocol
-\footnote{\url{http://tools.ietf.org/search/rfc4880}}
- uses asymmetric encryption to protect a session key which is used to encrypt a message. Additionally, it signs messages via asymmetric encryption and hash functions. %% what? - azet
-Research on SHA-1 conducted back in 2005\footnote{\url{https://www.schneier.com/blog/archives/2005/02/sha1\_broken.html}} has made clear that collision attacks are a real threat to the security of the SHA-1 hash function. PGP settings should be adapted to avoid using SHA-1.
+\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.
+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).
 
+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. 
 
-When using PGP, there are a couple of things to take care of:
-\begin{itemize}
-\item keylengths (see section \ref{section:keylengths})
-\item randomness (see section \ref{section:RNGs})
-\item preference of symmetric encryption algorithm (see section \ref{section:CipherSuites})
-\item preference of hash function (see section \ref{section:CipherSuites})
-\end{itemize}
+When using GnuPG, there are a couple of things to take care of:
+\begin{itemize*}
+  \item keylengths (see section \ref{section:keylengths})
+  \item randomness (see section \ref{section:RNGs})
+  \item preference of symmetric encryption algorithm (see section \ref{section:CipherSuites})
+  \item preference of hash function (see section \ref{section:CipherSuites})
+\end{itemize*}
 
 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.
 
+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.
+
 \subsubsection{Hashing}
-Avoid SHA-1 in GnuPG. Edit \$HOME/.gnupg/gpg.conf:
+Avoid SHA-1 by prefering better hashing methodes. GnuPG. Edit \$HOME/.gnupg/gpg.conf:
+
+\configfile{gpg.conf}{208-210}{Digest selection in GnuPG}
+
+Before you generate a new OpenPGP key, make sure there is enough entropy available (see subsection \ref{subsec:RNG-linux}).
+
+\subsection{Key Generation}
+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/}}.
+
+\configfile{new-key-generation.txt}{New key generation with GnuPG version 2.1}
 
-\begin{lstlisting}[breaklines]
-# according to:  https://www.debian-administration.org/users/dkg/weblog/48
-personal-digest-preferences SHA256
-cert-digest-algo SHA256
-default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
-\end{lstlisting}
+\configfile{params.txt}{Paramters for key generation with GnuPG version 2.1}
 
-Before you generate a new PGP key, make sure there is enough entropy available (see subsection \ref{subsec:RNG-linux}).
+\subsection{ECC - Ellyptic Curve Cryptography}
+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. 
 
 %\subsubsection{PGP / GPG Operations}