\documentclass{beamer} \usetheme{Luebeck} \setbeamercovered{dynamic} \usepackage{graphicx} \usepackage{fontspec} \beamertemplatenavigationsymbolsempty \title{PGP, GPG, and Enigmail... Oh My!} \author{Jack Rosenthal} \date{25 January 2016} \logo{\includegraphics[width=30mm]{graphics/lug.pdf}} \begin{document} \begin{frame} \maketitle \end{frame} \logo{} \begin{frame} \frametitle{Pretty Good Privacy} \begin{itemize}[<+->] \item PGP is a data encryption, decryption, and signing program. It follows the OpenPGP standard. \item People use PGP to sign, encrypt, and decrypt emails, files, folders, and even whole disk partitions. \item PGP allows you to specify a recipient to encrypt a message for given only their public key, you can even encrypt to multiple recipients given only their public keys. \end{itemize} \end{frame} \begin{frame} \frametitle{How it Works} \begin{center} \includegraphics[width=0.7\linewidth]{graphics/PGP_diagram.pdf} \end{center} \end{frame} \begin{frame} \frametitle{GNU Privacy Guard} \includegraphics[width=3cm]{graphics/Gnupg_logo.pdf} \begin{itemize}[<+->] \item Free implementation of OpenPGP standard \item Typically interfaced through \texttt{gpg} command line tool, but various GUI's are available \item Probably already on your system as most package managers (\texttt{pacman}, \texttt{apt}, etc) require it for package verification \item See \texttt{man gpg} for all of its options \end{itemize} \end{frame} \begin{frame} \frametitle{Web of Trust} How can I trust PGP content someone sends me? \pause \begin{block}{Phil Zimmermann, PGP creator} \small \itshape As time goes on, you will accumulate keys from other people that you may want to designate as trusted introducers. Everyone else will each choose their own trusted introducers. And everyone will gradually accumulate and distribute with their key a collection of certifying signatures from other people, with the expectation that anyone receiving it will trust at least one or two of the signatures. This will cause the emergence of a decentralized fault-tolerant web of confidence for all public keys. \end{block} \pause \begin{itemize}[<+->] \item Meet with them in person and verify the key fingerprints match, then sign their key. \item Or, verify someone you trust has signed their key. \end{itemize} \end{frame} \begin{frame} \frametitle{Making your own PGP key} \begin{enumerate}[<+->] \item \texttt{\$ gpg --gen-key} \item \texttt{gpg} will ask you a number of questions... answer them \item After making a secure passphrase, you will have to wait a few minutes for it to generate a key. During this time, you may want to browse the web, or do something else to increase system entropy, as this will speed up the prime number generation. \item \texttt{\$ gpg --list-keys} and make sure your new key is there \item Upload your key to a keyserver like \texttt{pgp.mit.edu}\par \texttt{\small \$ gpg --keyserver pgp.mit.edu --send-keys \emph{B20E73F7}} \end{enumerate} \end{frame} \begin{frame} \frametitle{Generating a Revocation Certificate} \begin{enumerate}[<+->] \item \texttt{\$ gpg --output revoke.asc --gen-revoke \emph{B20E73F7}} \item ``If you forget your passphrase or if your private key is compromised or lost, this revocation certificate may be published to notify others that the public key should no longer be used.'' \item Revoked public keys: \begin{enumerate} \item can still verify signatures made by you in the past \item cannot be used to encrypt future messages to you \item do not affect ability to decrypt previously received messages (because that depends on your private key) \end{enumerate} \item Store a physical (e.g., printed) copy of the revocation certificate in a lock box \end{enumerate} \visible<7>{ \begin{center} \includegraphics[width=0.4\linewidth]{graphics/gandalf.png} \end{center} } \end{frame} \begin{frame} \frametitle{Signing others' keys} \begin{enumerate}[<+->] \item Get their key from a keyserver\par \texttt{\small \$ gpg --keyserver pgp.mit.edu --recv \emph{B20E73F7}} \item \texttt{\$ gpg --sign-key \emph{B20E73F7}} \item Have them run \texttt{\$ gpg --fingerprint} in person and verify the fingerprint matches the one on your terminal \item Send their key (now signed) back to the keyserver.\par \texttt{\small \$ gpg --keyserver pgp.mit.edu --send-keys \emph{B20E73F7}} \end{enumerate} \end{frame} \begin{frame} \frametitle{Integrating GnuPG with your email client} \begin{itemize} \item Thunderbird: Install the Enigmail addon. The GUI is pretty self explanatory. \item Mutt: See \texttt{http://dev.mutt.org/trac/wiki/MuttGuide/UseGPG} \item Android: Use K9 mail and install APG \item Other email clients: Google it \end{itemize} When setting up your email client, please use PGP/MIME, as \emph{inline PGP is considered harmful}. \end{frame} \end{document}