donations: Add a remark to the auto created list
[gnupg-doc.git] / web / faq / gnupg-faq.org
1 # gpgfaq.org                                          -*- coding: utf-8; -*-
2 #+TITLE:     GnuPG Frequently Asked Questions
3 #+EMAIL:     gnupg-doc@gnupg.org
4 #+AUTHOR:    Robert J. Hansen et al.
5 #+LANGUAGE:  en
6 #+LINK: gnupgweb https://www.gnupg.org/
7 #+LINK: roundup  https://bugs.gnupg.org/gnupg/issue
8 #+OPTIONS:   H:3 num:2 toc:nil \n:nil @:t ::t |:t ^:{} -:t f:t *:t TeX:t LaTeX:t skip:nil d:nil tags:not-in-toc
9 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://www.gnupg.org/share/site.css" />
10 #+STARTUP:   overview indent
11
12 * Foreword
13   :PROPERTIES:
14   :CUSTOM_ID: foreword
15   :END:
16
17 Welcome to the GnuPG Frequently Asked Questions (FAQ)!  Before we
18 begin, there’s just a few things that need to be addressed. It’s
19 regrettable these things have to be included, but society has become
20 very litigious.
21
22
23 ** Trademark notice
24    :PROPERTIES:
25    :CUSTOM_ID: trademarks
26    :END:
27
28 - Linux is a trademark of Linus Torvalds.
29 - GNU is a trademark of the Free Software Foundation.
30 - Macintosh, OS X, macOS, and Mac OS X are all trademarks of the Apple
31   Corporation.
32 - PGP is a trademark of Symantec Corporation.
33 - Solaris is a trademark of Oracle Corporation.
34 - UNIX is a trademark of The Open Group.
35 - Windows is a trademark of the Microsoft Corporation.
36 - Some cryptographic algorithms mentioned in this FAQ may be
37   trademarked.
38
39 The use of these, or any other, marks is solely for identification
40 purposes.
41
42
43 ** Licensing
44    :PROPERTIES:
45    :CUSTOM_ID: documentation_license
46    :END:
47
48 This document is © 2012-2018, Robert J. Hansen <[[mailto:rjh@sixdemonbag.org?subject=The%20GnuPG%20FAQ][rjh@sixdemonbag.org]]> and
49 A.M. Kuchling <[[mailto:amk@amk.ca?subject=The%20GnuPG%20FAQ][amk@amk.ca]]>. You are free to make use of this document
50 in accordance with the [[https://creativecommons.org/licenses/by-sa/3.0/][Creative Commons Attribution-ShareAlike 3.0
51 license]]; alternately, you may make use of it under terms of the
52 GNU General Public License (version 3 or, at your discretion, any
53 later version).
54 #+HTML:<!--disable-copyright-footer-->
55
56
57 ** Disclaimer of liability
58    :PROPERTIES:
59    :CUSTOM_ID: liability
60    :END:
61
62 Although the contents of this document are believed to be correct, the
63 author(s) cannot promise it is error-free and cannot assume liability
64 for any errors.
65
66 # We want the TOC to appear after the foreword.
67 #+TOC: headlines 2
68
69 * Welcome
70   :PROPERTIES:
71   :CUSTOM_ID: welcome
72   :END:
73
74 Welcome to the official GnuPG FAQ.  Like all FAQs, this is a work in
75 progress.  If you have questions that you think should be on it but
76 aren’t, please feel free to email the FAQ maintainer (Rob Hansen,
77 [[mailto:rjh@sixdemonbag.org?subject=The%20GnuPG%20FAQ][rjh@sixdemonbag.org]])
78 or bring your suggestion up on GnuPG-Users.
79
80 ** Is this available in other languages?
81    :PROPERTIES:
82    :CUSTOM ID: translations
83    :END:
84
85 Thanks to the Free Software Foundation, this FAQ is also available in
86 [[https://www.gnu.org/server/standards/translations/ru/gnupg/gnupg-faq.ru.html][Russian]].
87
88 ** How do I get help?
89    :PROPERTIES:
90    :CUSTOM_ID: gethelp
91    :END:
92
93 First, please don’t send emails directly to people in GnuPG.  While we
94 will try to help to people who send email directly to us, those emails
95 quickly accumulate.  Helping just six people a day can take an hour of
96 time, and that’s an hour less we have to work on making GnuPG better.
97 Please reach out to the GnuPG community via the
98 [[https://lists.gnupg.org/mailman/listinfo/gnupg-users][GnuPG-Users mailing list]], not individual people within GnuPG.
99
100 Second, tell us your operating environment.  Be as specific as
101 possible.  What operating system are you using?  Which version of
102 GnuPG are you using? Where did you get GnuPG from?  If your problem is
103 related to email, which email client are you using?  Which version
104 number?  Is GnuPG supported natively, or is there a plugin?  If so,
105 what’s the version number of that?
106
107 Third, tell us your problem.  Be as specific as possible.
108
109 Do this, and you might be surprised at how quickly your problem is
110 solved. An example of a good question would be, “I’m running GnuPG
111 1.4.14 on an Ubuntu 15.04 x64 box.  I’m using Thunderbird with
112 Enigmail. Everything was fine until I did a software update.  Ever
113 since then I can’t use GnuPG with email.  What happened?”  This
114 question gives us enough to work with, and in short order someone will
115 have an answer for you.
116
117 A bad question would be, “How do I uninstall GnuPG?”  We can’t help
118 you at all; you’ve not given us any of the information we need to
119 answer your question.
120
121 ** Who maintains this FAQ?
122    :PROPERTIES:
123    :CUSTOM_ID: maintainer
124    :END:
125
126 [[mailto:rjh@sixdemonbag.org?subject%3DThe%20GnuPG%20FAQ][Rob Hansen]]. Please feel free to contact me should there be an
127 error in this FAQ, whether typographical, grammatical, or factual.
128
129 When writing, the editorial “we” refers to the general consensus of
130 the GnuPG community. This consensus is hammered out on the GnuPG-Users
131 mailing list. All members of the GnuPG community are invited to
132 participate.  Individual people within the community may give their
133 own editorial comments: these will be set off by square brackets,
134 italicized, and initialed by their author.  The different editors are:
135
136 - wk: Werner Koch <[[mailto:wk@gnupg.org?subject%3DThe%20GnuPG%20FAQ][wk@gnupg.org]]>
137 - rjh: Robert J. Hansen <[[mailto:rjh@sixdemonbag.org?subject=The%20GnuPG%20FAQ][rjh@sixdemonbag.org]]>
138
139
140 ** Is this the official GnuPG FAQ?
141    :PROPERTIES:
142    :CUSTOM_ID: is_it_official
143    :END:
144
145 Yes.
146
147
148 ** When was this FAQ last checked for accuracy?
149    :PROPERTIES:
150    :CUSTOM_ID: last_checked
151    :END:
152
153 October 2017.
154
155 * General questions
156   :PROPERTIES:
157   :CUSTOM_ID: general
158   :END:
159
160 ** What’s GnuPG?
161    :PROPERTIES:
162    :CUSTOM_ID: whats_gnupg
163    :END:
164
165 GnuPG is free cryptographic software from the GNU Project which helps
166 people ensure the confidentiality, integrity and assurance of their
167 data.  Let’s try that again: GnuPG is…
168
169 - /Free./ When we say “free” we mean [[https://gnu.org/philosophy/free-sw.html][liberty, not price]].  You’re free
170   to use it, modify it, share it, tinker with it, and learn from it.
171   Software is meant to be used by people, and people deserve freedom.
172 - /Cryptographic./ The word “cryptography” is derived from two Greek
173   words, κρυπτός (pronounced “kryptos,” meaning “hidden”) and γράφω
174   (pronounced “grapho,” meaning “writing”). Cryptography is the
175   mathematical study of codes and ciphers.
176 - /Software./ This one should already be obvious.
177 - /GNU Project./  The [[https://www.gnu.org][GNU Project]] is a group that aims to give people
178   the ability to do all their computing with free software.
179 - /Confidentiality./ No one except authorized parties should be able
180   to read your data.
181 - /Integrity./ It shouldn’t be possible to tamper with a message
182   unnoticeably.
183 - /Assurance./ An assurance is not a guarantee. There are no
184   guarantees in life, and software is no different. An assurance just
185   means there is good reason to be confident of something — here, it
186   means that when GnuPG is correctly used, people may be confident the
187   data is confidential and/or possesses integrity.
188
189 GnuPG may be used by itself as a command-line application (i.e., to be
190 run at a Terminal prompt or a Windows command prompt), or integrated
191 into popular email clients. It’s also used by some instant messaging
192 clients, such as Psi.
193
194
195 ** How do I pronounce GnuPG?
196    :PROPERTIES:
197    :CUSTOM_ID: pronunciation
198    :END:
199
200 “GNU”, followed by the letters “P” and “G”.  To learn how to pronounce
201 GNU, you may want to
202 [[https://www.gnu.org/gnu/pronunciation.en.html][listen to a recording]].
203
204
205 ** Is it compatible with Symantec’s PGP?
206    :PROPERTIES:
207    :CUSTOM_ID: compatible
208    :END:
209
210 Largely, yes.  It can be made to interoperate with anything from PGP
211 5 and onwards, and has excellent interoperability with the most
212 recent releases.
213
214 *** Does it support Diffie-Hellman?
215 :PROPERTIES:
216 :CUSTOM_ID: pgp_dh
217 :END:
218
219 Yes.  “Diffie-Hellman” is what PGP calls the Elgamal encryption
220 algorithm.  If your PGP-generated keypair uses a Diffie-Hellman
221 encryption subkey, it will appear in GnuPG as an Elgamal subkey. The
222 correct name, incidentally, is Elgamal.
223
224 *** Does it support SHA-2-256 and SHA-2-512?
225 :PROPERTIES:
226 :CUSTOM_ID: pgp_sha2
227 :END:
228
229 Yes.  SHA-256 and SHA-512 belong to a group of hashes known
230 collectively as “SHA-2”.  PGP calls SHA-256 and SHA-512 by the
231 non-standard names “SHA-2-256” and “SHA-2-512”, but they are the same
232 algorithms.
233
234
235 ** Which operating systems does it run on?
236    :PROPERTIES:
237    :CUSTOM_ID: oses
238    :END:
239
240 Too many to list! It’s known to run on Microsoft Windows, Mac OS X,
241 the various free Unixes, AIX, Solaris, HPUX, OpenVMS, and more. People
242 are even working on porting it to smartphones such as Android.
243
244
245 ** How much does it cost?
246    :PROPERTIES:
247    :CUSTOM_ID: free_as_in_beer
248    :END:
249
250 There is no fixed price.  Many sites on the internet offer legal
251 downloads of it for free.
252
253
254 ** From where can I download it…
255    :PROPERTIES:
256    :CUSTOM_ID: get_gnupg
257    :END:
258
259 Lots of different places, but no one site hosts binaries for all
260 operating systems.
261
262
263 *** … for Microsoft Windows?
264     :PROPERTIES:
265     :CUSTOM_ID: get_gnupg_win32
266     :END:
267
268 A convenient Windows installer is available from [[https://www.gpg4win.org][GPG4WIN]].
269
270
271 *** … for Mac OS X?
272     :PROPERTIES:
273     :CUSTOM_ID: get_gnupg_osx
274     :END:
275
276 The [[https://www.gpgtools.org][GPGtools project]] has everything needed to get started.  Another
277 excellent resources is the [[http://sourceforge.net/projects/gpgosx/][GnuPG for OS X]] project on
278 SourceForge. Finally, [[https://brew.sh][Homebrew]], [[http://www.finkproject.org/][Fink]], and [[https://www.macports.org/][MacPorts]] all have it in
279 their repositories.
280
281 *** … for the free Unixes?
282     :PROPERTIES:
283     :CUSTOM_ID: get_gnupg_linux
284     :END:
285
286 There are as many ways to install it as there are free Unix
287 systems.
288
289 **** … for Debian GNU/Linux or Ubuntu?
290      :PROPERTIES:
291      :CUSTOM_ID: get_gnupg_debian
292      :END:
293
294 At a terminal window type =sudo apt-get install gnupg2=.
295
296
297 **** … for OpenSUSE?
298      :PROPERTIES:
299      :CUSTOM_ID: get_gnupg_opensuse
300      :END:
301
302 At a terminal window type =sudo zypper install gnupg2=.
303
304
305 **** … for Fedora, CentOS, or RHEL?
306      :PROPERTIES:
307      :CUSTOM_ID: get_gnupg_fedora
308      :END:
309
310 For Fedora 22 and later: at a terminal window type =sudo dnf install gnupg2=.
311
312 For Fedora 21 and earlier, CentOS, or RHEL: at a terminal window type =sudo yum install gnupg2=.
313
314
315 **** … for Slackware?
316      :PROPERTIES:
317      :CUSTOM_ID: get_gnupg_slack
318      :END:
319
320 Install the =gnupg= package for GnuPG 1.4, or the =gnupg2= package for
321 GnuPG 2.0.
322
323
324 **** … for Gentoo?
325      :PROPERTIES:
326      :CUSTOM_ID: get_gnupg_gentoo
327      :END:
328
329 To install GnuPG on Gentoo, run the following command as root:
330
331 =emerge gnupg=
332
333 The Gentoo documentation includes a [[https://www.gentoo.org/doc/en/gnupg-user.xml][GnuPG User Guide]].
334
335
336 **** … for FreeBSD?
337     :PROPERTIES:
338     :CUSTOM_ID: get_gnupg_freebsd
339     :END:
340
341 GnuPG is included in the ports collection.  To install it, run the
342 following commands as root:
343
344 #+begin_example
345 cd /usr/ports/security/gnupg
346 make install clean
347 #+end_example
348
349 Alternatively, you can install GnuPG using a package manager:
350
351 #+begin_example
352 sudo pkg_add -r gnupg
353 #+end_example
354
355 Or with this variation for the package manager:
356
357 #+begin_example
358 sudo pkg install gnupg
359 #+end_example
360
361 *** … for VMS?
362     :PROPERTIES:
363     :CUSTOM_ID: get_gnupg_vms
364     :END:
365
366 A port to *VMS* is maintained by Steven M. Schweda at [[http://www.antinode.info/dec/sw/gnupg.html][antinode.info]].
367
368
369 ** Is source code available?
370    :PROPERTIES:
371    :CUSTOM_ID: source_code
372    :END:
373
374 Yes!  The person, business or group that provided you with the GnuPG
375 binary is required to give you the source code upon your request.
376
377
378 ** What’s Free Software, and why does it matter?
379    :PROPERTIES:
380    :CUSTOM_ID: gpl
381    :END:
382
383 The word “free” should evoke ideas of liberty, not price.  An awful
384 lot of the software industry does not
385 [[https://gnu.org/philosophy/free-software-even-more-important.html][respect your freedoms]]:
386 your freedom to use the software for any purpose, your freedom to study
387 and learn from how it works, your freedom to share it with others who
388 might benefit from it, and more.  Free Software is the antithesis of
389 this: Free Software is meant to respect your freedoms.  You may use the
390 software for any purpose: you may inspect and modify the source code:
391 you may share the software and/or your modifications with others.
392
393 GnuPG works with many operating systems, including ones that don’t
394 respect your freedoms.  If you’d like to make the shift to a free
395 operating system, [[https://www.gnu.org/distros/free-distros.html][you have many choices]].
396
397 ** How can I donate money to the GnuPG project?
398    :PROPERTIES:
399    :CUSTOM_ID: donate
400    :END:
401
402 The best way is to visit the [[https://gnupg.org/donate/][donation page]].
403
404
405 ** How can I help with GnuPG development?
406    :PROPERTIES:
407    :CUSTOM_ID: develop
408    :END:
409
410 Development discussion takes place on the gnupg-devel mailing list.
411 Go to the [[https://www.gnupg.org/documentation/mailing-lists.en.html][GnuPG mailing list page]] for links to subscribe and to the
412 list’s archives.
413
414 The [[https://bugs.gnupg.org/gnupg/][GnuPG project’s bug tracker]] is also publicly available.
415
416 * Where can I get more information?
417   :PROPERTIES:
418   :CUSTOM_ID: more_info
419   :END:
420
421 The good news is the internet is a treasure trove of information.  The
422 bad news is that the internet is a festering sewer of misinformation,
423 conspiracy theories, and half-informed speculations all masquerading
424 as informed commentary.
425
426 The following mailing lists and web pages are generally known for
427 having a strong signal-to-noise ratio.  Nevertheless, we strongly urge
428 you to keep a skeptical mind at all times.
429
430 ** Help! I lost my passphrase.
431   :PROPERTIES:
432   :CUSTOM_ID: lost_passphrase
433   :END:
434
435 Unfortunately, we can’t help you.  If you lose your passphrase, you’ll be
436 unable to use that certificate to sign any new documents or decrypt any
437 existing documents.  You can still use it to verify signatures, though.
438 (Technically you could encrypt documents, too, but without the passphrase
439 there’s really not much point: how would you ever decrypt them?)
440
441 If you can’t remember your passphrase, the best thing to do is use your
442 pre-made revocation certificate to revoke your old certificate, upload the
443 revocation to the keyserver network, and start anew with a fresh certificate.
444
445 ** How can I spot the charlatans?
446    :PROPERTIES:
447    :CUSTOM_ID: fraudsters
448    :END:
449
450 First, beware of all absolutes.  Almost every question in either the
451 fields of computer security or cryptography can honestly be answered
452 with, “it depends.”  Real experts will avoid giving blanket yes-or-no
453 answers except to the simplest and most routine of questions.  They
454 will instead hem and haw and explain the several different factors
455 that must be weighed.  Hucksters will promise you absolute truth.
456
457 Second, the experts really don’t care whether you take their advice.
458 Hucksters often want to be seen as authorities, and if you fail to
459 take their advice they may harangue you about how you’re taking
460 chances with your data, how you’re acting irresponsibly, and so on.
461
462 Third, experts genuinely don’t want you to trust them.  An expert will
463 instead point to the published literature (usually in a dead-tree
464 edition with the imprimatur of a reputable publishing house) and tell
465 you what the reference books say.  They want you to trust the
466 reference books, not them.  Hucksters will go on about their extensive
467 personal experience or refer to papers that have only ever been
468 self-published on websites.
469
470 Fourth, experts try not to scare people.  The world is a scary enough
471 place without it being made moreso.  Hucksters will try to scare you,
472 in order to keep you listening to them and dependent on them for
473 information on how to be ‘safe.’
474
475 Fifth, experts will quickly admit when they are wrong and give credit
476 to the person bringing the error to their attention.  Hucksters tend
477 to take challenges as personal affronts.
478
479
480 ** What are some useful mailing lists?
481    :PROPERTIES:
482    :CUSTOM_ID: mailing_lists
483    :END:
484
485 There are many excellent mailing lists out there.  The following is
486 a list of just some of them that we’ve found to be high-quality.
487 There are undoubtedly many more that we’ve missed.
488
489
490 *** The GnuPG-Users mailing list
491     :PROPERTIES:
492     :CUSTOM_ID: gnupg-users_list
493     :END:
494
495
496 - Subscribing :: visit the [[https://lists.gnupg.org/mailman/listinfo/gnupg-users][GnuPG-Users webpage]]
497 - Unsubscribing :: see above
498 - List moderator :: <[[mailto:gnupg-users-owner@gnupg.org?subject%3DThe%20GnuPG-Users%20list][gnupg-users-owner@gnupg.org]]>
499 - Supports PGP/MIME? :: Yes
500 - Languages supported :: English
501
502 GnuPG-Users is home to the largest community of GnuPG users on the
503 net. The list is very lightly moderated and somewhat freewheeling, but
504 overall it has an excellent signal-to-noise ratio. The level of
505 technical discussion is sometimes a little daunting for the newcomer,
506 but on the whole it’s a wonderful resource.
507
508
509
510 *** The Enigmail mailing list
511     :PROPERTIES:
512     :CUSTOM_ID: enigmail_list
513     :END:
514
515
516 - Subscribing :: Visit the [[https://admin.hostpoint.ch/mailman/listinfo/enigmail-users_enigmail.net][Enigmail mailing list page]]
517 - Unsubscribing :: See above
518 - List moderator(s) ::
519   - John Clizbe <[[mailto:john@enigmail.net?subject=The%20Enigmail%20list][john@enigmail.net]]>
520   - Olav Seyfarth <[[mailto:olav@enigmail.net?subject=The%20Enigmail%20list][olav@enigmail.net]]>
521   - Patrick Brunschwig <[[mailto:patrick@enigmail.net?subject=The%20Enigmail%20list][patrick@enigmail.net]]>
522   - Ludwig Hügelschäfer <[[mailto:ludwig@enigmail.net?subject=The%20Enigmail%20list][ludwig@enigmail.net]]>
523   - Daniele Raffo <[[mailto:dan@enigmail.net?subject=The%20Enigmail%20list][dan@enigmail.net]]>
524   - Robert J. Hansen <[[mailto:rob@enigmail.net?subject=The%20Enigmail%20list][rob@enigmail.net]]>
525 - Supports PGP/MIME :: Yes
526 - Languages supported :: English, Deutsch, Schwyzerdütsch, Español
527
528 Enigmail integrates GnuPG with [[https://www.getthunderbird.com][Mozilla Thunderbird]] and/or [[https://www.seamonkey-project.org/][Mozilla
529 Seamonkey]]. It’s one of the most popular ways to use GnuPG, and the
530 mailing list provides a friendly place to learn how it works and get
531 started using it.
532
533 The list is lightly moderated.
534
535 *** PGPNET
536     :PROPERTIES:
537     :CUSTOM_ID: pgpnet_list
538     :END:
539
540
541 - Subscribing :: visit the [[http://tech.groups.yahoo.com/group/PGPNET][PGPNET page]]
542 - Unsubscribing :: see above
543 - List moderator(s) :: Paul Kapaldo <[[mailto:pjkapaldo@yahoo.com?subject=PGPNET][pjkapaldo@yahoo.com]]>
544 - Supports PGP/MIME? :: Yes
545 - Languages supported :: Unknown
546
547 PGPNET exists to provide people with the opportunity to practice
548 sending and receiving encrypted, signed, and encrypted-and-signed
549 traffic in a group environment.
550
551
552
553 ** What are some useful webpages?
554    :PROPERTIES:
555    :CUSTOM_ID: webpages
556    :END:
557
558 As a general rule, the huckster quotient of webpages at-large is
559 fairly high.  That said, there are some web resources we recommend.
560 They can be broken up into homepages for specific GnuPG-related
561 projects, and sites of general interest.
562
563
564 *** Where can I find the homepage for…
565     :PROPERTIES:
566     :CUSTOM_ID: homepages
567     :END:
568
569 Many of the projects associated with GnuPG maintain their own
570 websites.  If you have problems with an associated project, please
571 check their website first: they might be able to give you faster and
572 better help than the GnuPG community can.
573
574
575 **** … GnuPG?
576      :PROPERTIES:
577      :CUSTOM_ID: gnupg_homepage
578      :END:
579
580 GnuPG’s homepage can be found at [[https://www.gnupg.org][https://www.gnupg.org]].  It is also
581 available in the [[https://torproject.org][Tor]] network as =ic6au7wa3f6naxjq.onion=.
582
583
584 **** … Enigmail?
585      :PROPERTIES:
586      :CUSTOM_ID: enigmail_homepage
587      :END:
588
589 Enigmail, a plugin for Mozilla Thunderbird that adds strong GnuPG
590 support, can be found at [[https://enigmail.net][https://enigmail.net]].
591
592
593 **** … GPGTools?
594      :PROPERTIES:
595      :CUSTOM_ID: gpgtools_homepage
596      :END:
597
598 Mac OS X users may wish to visit the GPGTools project at
599 [[https://www.gpgtools.org][https://www.gpgtools.org]].
600
601
602 **** … GPG4WIN?
603      :PROPERTIES:
604      :CUSTOM_ID: gpg4win_homepage
605      :END:
606
607 GPG4WIN, the Windows port of GnuPG, maintains a homepage at
608 [[https://www.gpg4win.org][https://www.gpg4win.org]].
609
610
611 *** Where can I find webpages covering…
612     :PROPERTIES:
613     :CUSTOM_ID: pages_about
614     :END:
615
616 Although the GnuPG community generally finds these websites to be
617 useful, your mileage may significantly vary.  There are wide
618 differences of opinion about some of them.  They’re worth visiting and
619 worth reading, but make sure to read skeptically.
620
621
622 **** … an easy introduction to cryptography?
623      :PROPERTIES:
624      :CUSTOM_ID: pages_about_introduction_to_crypto
625      :END:
626
627 There is no such thing as an easy introduction to cryptography.
628 However, PGP Corporation has a well-regarded [[http://www.cs.unibo.it/babaoglu/courses/security/resources/documents/intro-to-crypto.pdf][/Introduction to
629 Cryptography/]].
630
631
632 **** … the deeper mathematics of cryptography?
633      :PROPERTIES:
634      :CUSTOM_ID: pages_about_cryptographic_mathematics
635      :END:
636
637 The maintainer of this list also keeps a gentle(-ish) [[http://sixdemonbag.org/cryptofaq.xhtml][introduction to
638 the mathematics and computer science of cryptography]].
639
640
641 **** … best practices for using GnuPG?
642      :PROPERTIES:
643      :CUSTOM_ID: pages_about_best_practices
644      :END:
645
646 At present, there are no reputable web pages detailing GnuPG best
647 practices.
648
649
650 **** … the politics of cryptography?
651      :PROPERTIES:
652      :CUSTOM_ID: pages_about_politics
653      :END:
654
655 The inclusion of a site on this list is not an endorsement of that
656 site’s political leanings.
657
658 Probably the best-known organization is the [[https://www.eff.org][Electronic Frontier
659 Foundation]], which has been at the vanguard of electronic civil
660 liberties for over twenty years.
661
662 The [[https://www.fsf.org][Free Software Foundation]] is also deeply involved in these matters,
663 although in a different way than the EFF.
664
665 * What email clients support GnuPG on…
666   :PROPERTIES:
667   :CUSTOM_ID: email_clients
668   :END:
669
670 Many email clients offer strong GnuPG integration.
671
672 The column “Active” in the tables below indicate whether the software
673 is actively developed.
674
675 ** … Microsoft Windows?
676    :PROPERTIES:
677    :CUSTOM_ID: email_clients_win32
678    :END:
679
680 | Name        | Plugins        | see |
681 |-------------+----------------+-----|
682 | Thunderbird | yes (Enigmail) | (1) |
683 | Kontact     | native         | (2) |
684 | Claws-Mail  | yes (internal) | (3) |
685
686 (1) With the Enigmail plugin, Thunderbird becomes one of the most
687     popular GnuPG-aware email clients.  It’s under active development
688     and is compatible with the latest Thunderbird releases, with a
689     friendly and welcoming user community.
690
691 (2) Kontact is KDE’s integrated personal information manager of KDE.
692     It runs anywhere that KDE does, and even on some mobile devices as
693     Kontact Touch.
694
695 (3) Claws-Mail for Windows is included in the [[https://www.gpg4win.org][Gpg4win]] installer.
696
697
698 ** … Mac OS X?
699    :PROPERTIES:
700    :CUSTOM_ID: email_clients_osx
701    :END:
702
703 | Name        | Plugins        | see |
704 |-------------+----------------+-----|
705 | Thunderbird | yes (Enigmail) | (1) |
706 | Gnus        | yes ([[https://www.emacswiki.org/emacs/EasyPG][EasyPG]])   | (2) |
707 | Mutt        | native         | (3) |
708 | Neomutt     | native         | (3) |
709 | Apple Mail  | yes ([[https://www.gpgtools.org][GPGtools]]) | (4) |
710
711 (1) With the Enigmail plugin, Thunderbird becomes one of the most
712     popular GnuPG-aware email clients.  It’s under active development
713     and is compatible with the latest Thunderbird releases, with a
714     friendly and welcoming user community.
715
716 (2) EasyPG is part of Emacs 23, proper as EPA and the underlying EPG.
717     Thus there is no more need to install the plugin.  See the Gnus
718     manual for configuration hints.  Both EPA and EPG can be
719     customized with the customize-group command and using either the
720     =epa= or =epg= groups.
721
722 (3) For the best experience make sure to put ~set crypt_use_gpgme~ in
723     your =~/.muttrc= file.  Note that this requires installing Mutt or
724     Neomutt compiled with GPGME support, refer to the Mutt or Neomutt
725     documentation for details.
726
727 (4) As of this writing, Apple Mail is incompatible with PGP/MIME.  This
728     is a known bug and people are working on it.
729
730
731 ** … Free UNIX systems?
732    :PROPERTIES:
733    :CUSTOM_ID: email_clients_free_unix
734    :END:
735
736 | Name        | Plugins        | see |
737 |-------------+----------------+-----|
738 | Thunderbird | yes (Enigmail) | (1) |
739 | Gnus        | yes ([[https://www.emacswiki.org/emacs/EasyPG][EasyPG]])   | (2) |
740 | Mutt        | native         | (3) |
741 | Neomutt     | native         | (3) |
742 | Kontact     | native         | (4) |
743 | Evolution   | native         |     |
744 | Claws-Mail  | yes (internal) |     |
745
746 (1) With the Enigmail plugin, Thunderbird becomes one of the most
747     popular GnuPG-aware email clients.  It’s under active development
748     and is compatible with the latest Thunderbird releases, with a
749     friendly and welcoming user community.
750
751 (2) EasyPG is part of Emacs 23, proper as EPA and the underlying EPG.
752     Thus there is no more need to install the plugin.  See the Gnus
753     manual for configuration hints.  Both EPA and EPG can be
754     customized with the customize-group command and using either the
755     =epa= or =epg= groups.
756
757 (3) For the best experience make sure to put ~set crypt_use_gpgme~ in
758     your =~/.muttrc= file.  Note that this requires installing Mutt or
759     Neomutt compiled with GPGME support, refer to the Mutt or Neomutt
760     documentation for details.
761
762 (4) Kontact is KDE’s integrated personal information manager of KDE.
763     It runs anywhere that KDE does, and even on some mobile devices as
764     Kontact Touch.
765
766 * Is GnuPG available as a ‘portable app’?
767   :PROPERTIES:
768   :CUSTOM_ID: portable_app
769   :END:
770
771 Yes, but we don’t recommend it.  Sharing a USB token between lots of
772 random computers is a great way to get infested with malware, and that’s
773 not something you want to happen to the token you’re using for secure
774 email.  If you’re going to do this, please show caution with respect to
775 which computers you use the portable app on.
776
777 That said, Windows users should check [[http://portableapps.com/apps/internet/thunderbird_portable][PortableApps]].
778 Or, to build your own, use the /mkportable/ tool which comes with
779 [[https://www.gpg4win.org][Gpg4win]].
780
781 * What do all these strange words mean?
782   :PROPERTIES:
783   :CUSTOM_ID: glossary
784   :END:
785
786 Cryptography tends to use a whole lot of specialized language and
787 jargon.  In this section some of it will be deciphered.
788
789 ** What’s ‘public-key cryptography’?
790    :PROPERTIES:
791    :CUSTOM_ID: define_asymc
792    :END:
793
794
795 In the 1970s new ideas came to the forefront of the cryptanalytic
796 world.  One of the most important was the development of asymmetric
797 cryptography (also often called “public-key cryptography”).
798
799 Asymmetric cryptography is built around problems that are very hard in
800 one direction, and very easy in another.  Consider the number 2,701.
801 If you were to be asked for its prime factors, you would find it a
802 daunting challenge.  If you were to be given the numbers 37 and 73,
803 though, it wouldn’t take but a minute to discover the answer was
804 2,701.  Multiplying two numbers to yield a third number is easy:
805 finding those two numbers, given the third, is hard.
806
807 Asymmetric cryptography uses these asymmetric problems as the
808 building-blocks of cryptography.  It’s easy to create an encrypted
809 message which neither you nor anyone else save the intended recipient
810 can decrypt.  To continue the metaphor, you and everyone else get to
811 wrestle with the hard problem (“factor 2,701”).  The intended
812 recipient knows a secret piece of information which makes the problem
813 easy (“factor 2,701, given that one of the factors is 73”).
814
815 This manages to overcome the major flaw with symmetric cryptography.
816 Your public key can be shared with the entire world, even your
817 enemies, and your communications will still be secure.  Compare this
818 to symmetric cryptography, where as soon as the key became public
819 knowledge the entire system was broken.
820
821
822
823 ** What’s ‘symmetric cryptography’?
824    :PROPERTIES:
825    :CUSTOM_ID: define_symc
826    :END:
827
828
829 One of the earliest ciphers was the shift cipher, which was allegedly
830 used by Julius Caesar in his campaign against the Gauls.  He took his
831 plaintext and shifted each letter three positions up in the alphabet,
832 wrapping around once he reached the end (so that ‘Z’ would become
833 ‘C’).  His correspondents would reverse the process: by moving each
834 letter in the encrypted text down three letters the original message
835 would be recovered.  Knowing how to encrypt the text also gave the
836 knowledge of how to decrypt the text: the process wasn’t identical
837 (one shifted up, the other shifted down), but knowing one process the
838 other one could trivially be discovered.
839
840 This trait, that of encryption and decryption being two sides of the
841 same coin, is the defining trait of symmetric cryptography.
842 Modern-day symmetric ciphers are much more complex than Caesar’s
843 scheme, but they still work in fundamentally the same way.  Knowledge
844 of how to encrypt reveals knowledge of how to decrypt, and vice-versa.
845 The symmetry between those two operations leads to the name “symmetric
846 cryptography”.
847
848 Symmetric cryptography is fast, well-studied, and safe.  It has one
849 critical drawback, though: you have to have a secure communications
850 channel by which you can share the key with someone.  If you already
851 have a secure communications channel, though, do you really need
852 cryptography?
853
854
855
856 ** What’s a ‘key’?
857    :PROPERTIES:
858    :CUSTOM_ID: define_key
859    :END:
860
861
862 The word ‘key’ is unfortunately ambiguous.  It can either refer to the
863 mathematical structures that allow encryption, decryption, signing and
864 verification to occur, or to the rather large blobs of data that
865 contain those mathematical structures as well as information about the
866 person associated with it, additional subkeys, and so forth.
867
868 With respect to the large blobs of data, it is preferable to call them
869 ‘certificates’, so that the word ‘key’ may be unambiguously recognized
870 as meaning just the mathematical structures.  Unfortunately, this is a
871 custom that seems to be honored mostly in the breach.
872
873
874
875 ** What’s a ‘certificate’?
876    :PROPERTIES:
877    :CUSTOM_ID: define_certificate
878    :END:
879
880
881 A certificate is a large data structure that contains one or more
882 [[#define_keys][keys]], and optionally information that identifies the user, designated
883 revokers, who has vouched for this certificate, and so on.
884
885
886
887 ** What’s a ‘keyserver’?
888    :PROPERTIES:
889    :CUSTOM_ID: define_keyserver
890    :END:
891
892 A keyserver is a service that publishes public-key certificates and
893 makes them searchable.  You can upload your certificate to a keyserver
894 so that other users can find it.  There are distributed networks of
895 keyservers that share keys, so you only need to upload your key once
896 to that network.
897
898 One widely-used keyserver network is [[https://www.sks-keyservers.net/][sks-keyservers.net]].  SKS stands
899 for “Synchronizing Key Server”.  You can use this network by supplying
900 the =--keyserver pool.sks-keyservers.net= option.
901
902
903
904 ** What’s RSA?
905    :PROPERTIES:
906    :CUSTOM_ID: define_rsa
907    :END:
908
909
910 RSA is the world’s premier [[#define_asymc][asymmetric cryptographic algorithm]], and is
911 built on the difficulty of factoring extremely large composites.
912 GnuPG supports RSA with [[#define_key][key]] sizes of between 1024 and 4096 bits.
913
914
915
916 ** What’s DSA?
917    :PROPERTIES:
918    :CUSTOM_ID: define_dsa
919    :END:
920
921
922 The United States’ National Institute for Standards and Technology
923 ([[http://www.nist.gov][NIST]]) established the Digital Signature Algorithm (DSA) as a
924 government standard for digital signatures.  Originally, it supported
925 key lengths between 512 and 1024 bits.  Recently, NIST has declared
926 512-bit keys obsolete: now, DSA is available in 1024, 2048 and
927 3072-bit lengths.
928
929 DSA belongs to the Elgamal family of algorithms, and is very
930 well-regarded.
931
932
933
934 ** What’s Elgamal?
935    :PROPERTIES:
936    :CUSTOM_ID: define_elgamal
937    :END:
938
939
940 Elgamal may refer to either a family of cryptographic algorithms built
941 around the difficulty of computing discrete logarithms in a finite
942 field, or one particular [[#define_asymc][asymmetric encryption algorithm]] based on that
943 problem.  The former is normally referred to as “the Elgamal family,”
944 and the latter is normally referred to as simply “Elgamal.”
945
946 GnuPG supports the Elgamal asymmetric encryption algorithm in [[#define_key][key]]
947 lengths ranging from 1024 to 4096 bits.
948
949 There is also an Elgamal signature algorithm, which GnuPG no longer
950 supports.
951
952
953
954 ** What’s AES?
955    :PROPERTIES:
956    :CUSTOM_ID: define_aes
957    :END:
958
959
960 Leading up to the year 2000, it was obvious that the old Data
961 Encryption Standard (DES) was on its last legs and needed to be
962 replaced.  3DES was available as a stopgap measure, but there was a
963 lot of pressure to make a new encryption standard that made use of the
964 last few decades of cryptologic research.
965
966 The United States National Institute of Standards and Technology
967 ([[http://www.nist.gov][NIST]]) held an open competition to select the new encryption standard.
968 In the summer of 2000, a cipher named Rijndael (pronounced
969 “RAIN-doll”) was selected as the new Advanced Encryption Standard, or
970 AES.
971
972 AES is a thoroughly modern cipher design and may be used with
973 confidence.
974
975 ** What are Twofish and Blowfish?
976    :PROPERTIES:
977    :CUSTOM_ID: define_fish
978    :END:
979
980
981 Blowfish and Twofish are well-regarded symmetric ciphers.  Blowfish
982 should not be used to encrypt files larger than 4Gb in size, but
983 Twofish has no such restrictions.  These algorithms are modern, and
984 may be used with confidence.
985
986 ** What’s 3DES?
987    :PROPERTIES:
988    :CUSTOM_ID: define_3des
989    :END:
990
991
992 In the 1970s, IBM developed a new symmetric cipher called the Data
993 Encryption Standard (DES).  They overdesigned it horribly: even after
994 three decades, the only way to break DES is by brute force.
995 Unfortunately, standard DES has a small enough keyspace to be
996 susceptible to brute-forcing.
997
998 A new variant of DES was needed.  3DES, which is made of three DES
999 algorithms running together with three independent keys, was the
1000 result.  3DES is ungainly, ugly, slow, and has all the aesthetics of a
1001 Soviet workers’ housing bloc.  It has also withstood three decades of
1002 cryptanalysis and is still going strong.
1003
1004 Due to its 1970s-era 64-bit block size, it should not be used to
1005 encrypt more than about 4Gb of data.  Beyond that, though, it is solid
1006 as a rock, and very few GnuPG users will ever notice a problem with
1007 it.  Provided you’re not encrypting more than 4Gb of data you may use
1008 3DES with confidence.
1009
1010 ** What are CAST, CAST5, and CAST5-128?
1011    :PROPERTIES:
1012    :CUSTOM_ID: define_cast
1013    :END:
1014
1015
1016 Carlisle Adams and Stafford Tavares (the “CA” and the “ST” in “CAST”)
1017 developed the CAST algorithm in 1996.  It was later approved for
1018 Canadian government use.
1019
1020 CAST has many names: CAST, CAST5, CAST5-128 and CAST-128 all refer to
1021 the same algorithm.
1022
1023 Internally, CAST is distinctly similar to Blowfish, another
1024 well-respected algorithm.  Like 3DES, its 64-bit block size means it
1025 should not be used to encrypt files larger than 4Gb in size.  With
1026 that said, though, CAST is a modern cipher and may be used with
1027 confidence.
1028
1029 ** What’s Camellia?
1030    :PROPERTIES:
1031    :CUSTOM_ID: define_camellia
1032    :END:
1033
1034
1035 During roughly the same time period that [[http://www.nist.gov][NIST]] was running the Advanced
1036 Encryption Standard trials, Japan’s [[http://www.cryptrec.jp/english/][CRYPTREC]] and the European Union’s
1037 [[http://www.cryptonessie.org/][NESSIE]] were running their own similar trials.  Camellia is the cipher
1038 that won the NESSIE and CRYPTREC trials, much in the same way that
1039 Rijndael won the United States’ AES trials.
1040
1041 Camellia is a thoroughly modern cipher design and may be used with
1042 confidence.
1043
1044 ** What are SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 and SHA-3?
1045    :PROPERTIES:
1046    :CUSTOM_ID: define_sha
1047    :END:
1048
1049
1050 The Secure Hash Algorithms are cryptographic hash functions originally
1051 devised by the United States’ National Security Agency.  The
1052 algorithms have been made publicly available and have been subjected
1053 to an astonishing amount of peer review.
1054
1055 - *SHA* and/or *SHA-0*: the original Secure Hash Algorithm, generating
1056   160-bit outputs.  Flaws were discovered in it almost immediately.
1057   SHA-0 never gained much traction in the cryptologic community, and
1058   it is not present in GnuPG.
1059 - *SHA-1*: This is SHA-0 with the flaws fixed, and not much else in
1060   the way of changes.  It still generates 160-bit outputs.  SHA-1 has
1061   not aged well.  Although it is still believed to be safe, it would
1062   be advisable to use another, different hash function if possible.
1063 - *SHA-224, 256, 384, or 512*: This is a massively-overhauled SHA-1 which
1064   generates larger hashes (224, 256, 384, or 512 bits).  Right now,
1065   these are the strongest hashes in GnuPG.
1066 - *SHA-3*: SHA-3 is a completely new hash algorithm that makes a clean
1067   break with the previous SHAs.  It is believed to be safe, with no
1068   warnings about its usage.  It hasn’t yet been officially introduced
1069   into the OpenPGP standard, and for that reason GnuPG doesn’t support
1070   it.  However, SHA-3 will probably be incorporated into the spec, and
1071   GnuPG will support it as soon as it does.
1072
1073 ** What’s MD5?
1074    :PROPERTIES:
1075    :CUSTOM_ID: define_md5
1076    :END:
1077
1078
1079 MD5 is a 128-bit cryptographic hash function invented by Ron Rivest
1080 (the ‘R’ of ‘RSA’) in the early 1990s.  For many years it was one of
1081 the standard algorithms of the field, but is now completely obsolete.
1082 For that reason, MD5 is not supported by GnuPG.
1083
1084 ** What are ZLIB, ZIP and BZIP?
1085    :PROPERTIES:
1086    :CUSTOM_ID: define_compress
1087    :END:
1088
1089
1090 ZLIB, ZIP and BZIP refer to different kinds of compression algorithms.
1091 GnuPG will use one of these three algorithms to compress your data
1092 before encrypting it, unless GnuPG can see the data is already
1093 compressed.
1094
1095 ** What’s a ‘revocation certificate’?
1096    :PROPERTIES:
1097    :CUSTOM_ID: define_rev_cert
1098    :END:
1099
1100
1101 A revocation certificate is a [[#define_certificate][certificate]] that possesses the
1102 information necessary to mark another certificate as unusable.  This
1103 is called ‘revoking’ the certificate.
1104
1105 We recommended you create a revocation certificate immediately after
1106 generating a new GnuPG certificate.  Store it somewhere safe.
1107 Consult [[#generate_revocation_certificate][the FAQ instructions]] on
1108 how to do this.
1109
1110 ** What’s a ‘designated revoker’?
1111    :PROPERTIES:
1112    :CUSTOM_ID: define_desig_revkr
1113    :END:
1114
1115
1116 A designated revoker is a person, identified by a certificate, that
1117 has the authority to revoke another certificate held by a different
1118 person.  For instance, if you were using GnuPG in a corporate
1119 environment the IT staff might be listed as a designated revoker for
1120 your certificate, so that when you left the company the IT staff could
1121 revoke your certificate.
1122
1123
1124 ** What does ‘validity’ mean?
1125    :PROPERTIES:
1126    :CUSTOM_ID: define_validity
1127    :END:
1128
1129
1130 Although a certificate makes certain assertions about identity, these
1131 assertions cannot be blindly trusted.  (Consider, for instance,
1132 whether you should trust a certificate that claims to belong to
1133 =obama@whitehouse.gov=.)
1134
1135 If you trust the certificate’s assertions, you are said to have
1136 ‘validated’ the certificate.  Validation can be done by fiat or as the
1137 result of a process.  For instance, you validate your own certificate
1138 by fiat: “this certificate says it belongs to me, and I trust it.”
1139 Validating other certificates, though, should probably have a little
1140 more rigor involved.  How much rigor will depend entirely on your own
1141 particular needs and the threats you face.
1142
1143
1144
1145 ** What does ‘trust’ mean?
1146    :PROPERTIES:
1147    :CUSTOM_ID: define_trust
1148    :END:
1149
1150
1151 ‘Trust’ refers to how thoroughly a certificate has been [[#define_validity][validated]].
1152 The terms are used somewhat interchangeably.
1153
1154
1155 ** What does ‘ownertrust’ mean?
1156    :PROPERTIES:
1157    :CUSTOM_ID: define_ownertrust
1158    :END:
1159
1160
1161 If a certificate has been [[#define_validity][validated]], and if you trust the person
1162 owning that certificate to do proper validation of certificates, you
1163 can tell GnuPG “I am willing to trust this person’s validations as if
1164 they were my own.”
1165
1166 For instance: Alice has fully validated Bob’s certificate.  She further
1167 believes, based on her knowledge of Bob, that he will be as careful as
1168 she is about the certificates he validates.  Alice declares she has
1169 ownertrust in Bob.  Now, any certificates that Bob validates will appear
1170 to Alice as valid, too.
1171
1172 * How do I start using GnuPG?
1173   :PROPERTIES:
1174   :CUSTOM_ID: starting_out
1175   :END:
1176
1177 The very first thing is to join the [[#gnupg-users_list][GnuPG-Users mailing list]].  You’ll
1178 find it to be a welcoming community that’s friendly to newcomers and
1179 is eager to help out.
1180
1181
1182
1183 ** Does GnuPG need to be ‘tuned’ before use?
1184    :PROPERTIES:
1185    :CUSTOM_ID: tuning
1186    :END:
1187
1188 No.  GnuPG has sensible defaults right out of the box.  You don’t need
1189 to tune GnuPG before you can use it.
1190
1191
1192
1193 ** How large should my key be?
1194    :PROPERTIES:
1195    :CUSTOM_ID: new_key_size
1196    :END:
1197
1198 The overwhelming majority of users will be well-served by generating
1199 2048-bit RSA keys.  This is the default behavior for GnuPG.
1200
1201
1202 ** What algorithm should I use?
1203    :PROPERTIES:
1204    :CUSTOM_ID: new_key_algo
1205    :END:
1206
1207 The overwhelming majority of users will be well-served by generating
1208 2048-bit RSA keys.  This is the default behavior for GnuPG.
1209
1210
1211 ** Why does it take so long to generate a certificate?
1212    :PROPERTIES:
1213    :CUSTOM_ID: new_key_generate_time
1214    :END:
1215
1216 The short answer is, “your computer is doing a lot of work.”  But
1217 don’t worry: although generating new certificates can take a while,
1218 actually using them once they’re made is quite fast.
1219
1220
1221 ** What should I do after making my certificate?
1222    :PROPERTIES:
1223    :CUSTOM_ID: new_key_after_generation
1224    :END:
1225
1226 Generate a revocation certificate, and store it in a safe place.
1227 Alternately, you may wish to appoint [[#define_desig_revkr][a designated revoker]].
1228
1229
1230 *** How do I appoint a designated revoker?
1231     :PROPERTIES:
1232     :CUSTOM_ID: appoint_revoker
1233     :END:
1234
1235 A designated revoker is someone whom you trust to revoke your
1236 certificates on your behalf.  This person may revoke your certificates
1237 without needing a revocation certificate.  For instance, you may wish
1238 to appoint your lawyer as your designated revoker so that, in the
1239 event of your untimely death, your lawyer may revoke your
1240 certificates.
1241
1242 To add a revoker, use the following command line:
1243
1244 =gpg --edit-key= /[your key ID here]/ =addrevoker=
1245
1246 When prompted, enter the key ID of the person whom you wish to appoint
1247 as a revoker.  The revoker’s key must be fully validated.
1248
1249
1250
1251 *** How do I generate a revocation certificate?
1252     :PROPERTIES:
1253     :CUSTOM_ID: generate_revocation_certificate
1254     :END:
1255
1256
1257 A [[#define_rev_cert][revocation certificate]] marks another certificate as unusable.
1258
1259 To generate a revocation certificate for your key, do:
1260
1261 =gpg --armor --output revoke.asc --gen-revoke= /[your key ID]/
1262
1263 Copy =revoke.asc= to a safe place.
1264
1265
1266 *** How do I send my certificate to the keyserver network?
1267     :PROPERTIES:
1268     :CUSTOM_ID: send_to_keyservers
1269     :END:
1270
1271
1272 =gpg --keyserver pool.sks-keyservers.net --send-key= /[your certificate ID]/
1273
1274 You should only upload your own certificates to the keyservers, or
1275 obtain the certificate holder’s permission before doing so.  In some
1276 circles it’s considered rude to upload someone else’s certificate; not
1277 everyone wants to publish their key publicly.
1278
1279
1280
1281 ** Where does GnuPG look for configuration options?
1282    :PROPERTIES:
1283    :CUSTOM_ID: location_gpg_conf_file
1284    :END:
1285
1286
1287 GnuPG looks at a file called =gpg.conf= to determine various runtime
1288 parameters.  On UNIX systems this file can be found in =~/.gnupg=.  On
1289 Windows systems open Explorer and go to =%APPDATA%\Roaming\GnuPG=.
1290
1291 ** What options should I put in my configuration file?
1292    :PROPERTIES:
1293    :CUSTOM_ID: new_user_gpg_conf
1294    :END:
1295
1296 The good news is, you really shouldn’t need to.  That said, the
1297 following is Rob Hansen’s =gpg.conf= file.
1298
1299 #+begin_example
1300
1301 # Tell GnuPG that I want maximum OpenPGP conformance.
1302 openpgp
1303
1304 # Disable a few messages from GnuPG that I know I don’t need.
1305 no-greeting
1306 no-secmem-warning
1307
1308 # Don’t include a version number or a comment in my output.
1309 no-emit-version
1310 no-comments
1311
1312 # Use full 16-character key IDs, not short 8-character key IDs.
1313 keyid-format long
1314
1315 # Use the global keyserver network for certificate lookups.
1316 # Further, whenever I send or receive something to/from the
1317 # keyserver network, clean up what I get or send.
1318 keyserver pool.sks-keyservers.net
1319 keyserver-options import-clean-sigs import-clean-uids export-clean-sigs export-clean-uids
1320
1321 # If I don’t explicitly state which certificate to use, use this one.
1322 default-key 1DCBDC01B44427C7
1323
1324 # Always include signatures from these two certificates.
1325 local-user 1DCBDC01B44427C7
1326
1327 # Always add these two certificates to my recipients list.
1328 encrypt-to 1DCBDC01B44427C7
1329
1330 # Turn "From" into "> From", in order to play nice with UNIX mailboxes.
1331 escape-from-lines
1332
1333 # Prefer strong hashes whenever possible.
1334 personal-digest-preferences SHA256 SHA384 SHA512 SHA224 RIPEMD160
1335
1336 # Prefer more modern ciphers over older ones.
1337 personal-cipher-preferences CAMELLIA256 AES256 TWOFISH CAMELLIA192 AES192 CAMELLIA128 AES BLOWFISH CAST5 3DES
1338
1339 # Turn up the compression level and prefer BZIP2 over ZIP and ZLIB.
1340 bzip2-compress-level 9
1341 compress-level 9
1342 personal-compress-preferences BZIP2 ZIP ZLIB
1343 #+end_example
1344
1345
1346
1347 ** Is there any particular keyserver I should use?
1348    :PROPERTIES:
1349    :CUSTOM_ID: new_user_default_keyserver
1350    :END:
1351
1352
1353 Many people have had excellent luck with =pool.sks-keyservers.net=.  On OS X,
1354 some people have needed to use =ipv4.pool.sks-keyservers.net= instead.
1355
1356
1357 ** What’s the difference between an ‘option’ and a ‘command’?
1358    :PROPERTIES:
1359    :CUSTOM_ID: diff_option_commands
1360    :END:
1361
1362 Commands tell GnuPG what to do: options tell GnuPG how to do it.  For
1363 instance, =encrypt= is a command, and =armor= is an option that tells
1364 GnuPG to ensure the output contains only printable characters.
1365
1366
1367 ** What are the most commonly used options?
1368    :PROPERTIES:
1369    :CUSTOM_ID: common_options
1370    :END:
1371
1372 Some of the most commonly used options are:
1373
1374 Produce more output explaining what GnuPG is doing:
1375
1376 =-v=, =--verbose=
1377
1378 Make no changes; this is useful for testing a command line that will
1379 modify keys or generate output:
1380
1381 =-n=, =--dry-run=
1382
1383 Send output to the named file:
1384
1385 =-o= /FILE/, =--output= /FILE/
1386
1387 Create ASCII-armored output that can be safely e-mailed, instead of
1388 binary output:
1389
1390 =-a=, =--armor=
1391
1392 When encrypting a message, you will usually supply at least one
1393 recipient ID with the recipient option.  This option can be supplied
1394 multiple times to encrypt a message to multiple recipients:
1395
1396 =-r= /KEYID/, =--recipient= /KEYID=/   /specify a recipient ID/
1397
1398
1399 ** What are the most commonly used commands?
1400    :PROPERTIES:
1401    :CUSTOM_ID: common_commands
1402    :END:
1403
1404 GnuPG’s primary functions are to encrypt and decrypt messages, and to
1405 sign and verify them.  It’s possible to sign without encrypting or
1406 encrypt without signing.
1407
1408 Signing a file’s content is done with the =-s= or =--sign= commands.
1409 A variation is =-b= or =--detach-sign=, which produces a separate
1410 signature without including the file’s content; this is useful for
1411 signing a software archive or other large file.  The key to use for
1412 the signature can be specified with the =local-user= setting in your
1413 =gpg.conf= file, or with the =-u=, =--local-user= options.
1414
1415 Encrypting a file’s content is done with the =-e= or =--encrypt=
1416 commands.  Recipients are specified with the =-r= or =--recipient=
1417 options.
1418
1419 GnuPG’s default action is to decrypt and verify its input file,
1420 writing the contents to standard output or to the filename specified
1421 by the =-o= or =--output= options.  The =--verify= command will only
1422 verify the signature without writing the file’s contents anywhere.
1423
1424 These commands are the most commonly used. GnuPG has many more
1425 commands, largely for managing your keyring containing your private
1426 keys and the certificates of others.
1427
1428
1429 ** How do I use another person’s certificate?
1430    :PROPERTIES:
1431    :CUSTOM_ID: using_certificates
1432    :END:
1433
1434 In order to send an encrypted message or verify a signature, you must
1435 obtain the certificate for the recipient’s/signer’s public key.
1436
1437 Occasionally you might obtain the certificate physically, by meeting
1438 the certificate holder face-to-face and exchanging the certificate on
1439 some storage medium such as a USB stick, memory card, or portable
1440 disk.  Or you might download a copy of the certificate from the
1441 holder’s web site.
1442
1443 Once obtained in one of these ways, you can add the certificate to
1444 your collection of public keys by doing:
1445
1446 =gpg --import certificate.txt=
1447
1448 More commonly, you’ll download a correspondent’s certificate from a
1449 keyserver.
1450
1451
1452
1453 *** How do I search the keyserver for someone’s certificate?
1454     :PROPERTIES:
1455     :CUSTOM_ID: searching_keyservers
1456     :END:
1457
1458
1459 There is also a network of public keyservers, accessible under the
1460 collective hostname =pool.sks-keyservers.net=. GnuPG users can upload
1461 their certificates to the keyservers, and other users can then search
1462 for and download them.
1463
1464 =gpg --keyserver pool.sks-keyservers.net --search= /[email address, name, key ID, etc.]/
1465
1466 GnuPG will list matching certificates and prompt you to select which
1467 ones you wish to download and add to your keyring.
1468
1469 People will obtain new signatures for their certificates from time to
1470 time.  =gpg --refresh-keys= will recheck all of the certificates on
1471 your public key and download any new signatures for those keys.
1472
1473
1474
1475 *** How do I retrieve a certificate if I already know its fingerprint?
1476     :PROPERTIES:
1477     :CUSTOM_ID: retrieving_by_fingerprint
1478     :END:
1479
1480
1481 =gpg --keyserver pool.sks-keyservers.net --recv-key= /[fingerprint]/
1482
1483
1484
1485 *** Why do I need to validate certificates?
1486     :PROPERTIES:
1487     :CUSTOM_ID: why_validate
1488     :END:
1489
1490
1491 If you were to receive a letter in the mail that claimed to be from
1492 the President of the United States, would you believe it?  Probably
1493 not, because anyone can put together official-looking letterhead:
1494 you’d insist on doing some kind of checking to make sure that no one
1495 was fooling with you.
1496
1497 The same applies to email.  A certificate can claim to be from anyone.
1498 You have to make sure that the certificate really belongs to whom it
1499 claims it belongs to.  That process of making sure is called
1500 ‘validation’.
1501
1502
1503
1504 *** How do I validate certificates?
1505     :PROPERTIES:
1506     :CUSTOM_ID: how_to_validate
1507     :END:
1508
1509
1510 *This advice is controversial.*
1511
1512 It’s controversial for a simple reason: every Tom, Dick and Harry has
1513 their own idea about the “right way” to validate certificates.  Some
1514 of these people are well-informed and some of them are just plain
1515 unhinged.  In the end, you are responsible for making your own
1516 decisions.  That said, the following is generally agreed upon as being
1517 a reasonable procedure:
1518
1519 1. Meet the certificate holder face-to-face.
1520 2. Ask to see two forms of government-issued identification.
1521 3. Upon verifying the person really is who they claim to be, ask this
1522    person to provide their certificate’s fingerprint, their email
1523    address, and where you can obtain a copy of their certificate.
1524    (Example: “My fingerprint is =4541 BB01 8EA4 8F99 19CA 3701 2380
1525    6BE5 D6B9 8E10=, and you can find it on
1526    =pool.sks-keyservers.net=.”)
1527 4. On your own computer, retrieve the person’s certificate from the
1528    specified location.  Check to make sure the email address they gave
1529    you is one that’s also listed on the certificate.  Check to make
1530    sure the fingerprint of the certificate you’ve downloaded matches
1531    the fingerprint the person gave you.
1532 5. =gpg --edit-key= /[their certificate ID]/ =sign=
1533 6. Once signed, =gpg --armor --output signed_cert.asc --export=
1534    /[their certificate ID]/
1535 7. Send the file =signed_cert.asc= to the address they gave you
1536
1537 By following this process you first ensure that you’re speaking to the
1538 right person.  By comparing the fingerprints of the certificate you
1539 have against the fingerprint they specified, you’re ensuring that you
1540 have the right certificate.  Checking to make sure the email address
1541 they gave you is also listed on the certificate is one more check to
1542 make sure.  Once that’s done, presto, Bob’s your uncle: there’s
1543 nothing left to do except sign it and return the newly-signed
1544 certificate to the other person.
1545
1546
1547 ** Why can’t I read emails I’ve sent, and how do I fix it?
1548    :PROPERTIES:
1549    :CUSTOM_ID: encrypt_to_self
1550    :END:
1551
1552
1553 You encrypted a message to Alice, which means that it requires Alice’s
1554 private key to read it.  Only Alice has her private key.  That’s why
1555 you can’t read encrypted traffic you generated: only Alice can read
1556 it.
1557
1558 To get around this, add yourself as a recipient (=--recipient= /[your
1559 certificate ID]/).
1560
1561
1562
1563 ** How do I encrypt a file for multiple recipients?
1564    :PROPERTIES:
1565    :CUSTOM_ID: multiple_recipients
1566    :END:
1567
1568
1569 Use multiple =--recipient= options.  Remember, options come before
1570 commands!
1571
1572
1573
1574
1575 ** How do I sign a file with multiple certificates?
1576    :PROPERTIES:
1577    :CUSTOM_ID: multiple_signers
1578    :END:
1579
1580
1581 Use multiple =--local-user= options.  Remember, options come before
1582 commands!
1583
1584
1585
1586 ** How do I combine encryption with signing?
1587    :PROPERTIES:
1588    :CUSTOM_ID: encrypt_and_sign
1589    :END:
1590
1591
1592 =gpg --armor --recipient= /[first recipient’s key ID]/ =--local-user= /[your key ID]/ =--sign --encrypt= /[filename]/
1593
1594
1595
1596 ** How do I force GnuPG to make printable-text output?
1597    :PROPERTIES:
1598    :CUSTOM_ID: ascii_armor
1599    :END:
1600
1601 Normally, computers use eight-bit binary code.  This often presents
1602 trouble for email, which often requires that only printable
1603 (seven-bit) characters may be used.  By using the =--armor= flag,
1604 GnuPG will generate output containing only printable characters.
1605
1606
1607 ** How do I create an ‘inline signature’?
1608    :PROPERTIES:
1609    :CUSTOM_ID: generate_inline_signature
1610    :END:
1611
1612 An inline signature wraps a textual header and footer around the text
1613 to be signed, leaving the text readable without running GnuPG.  This
1614 doesn’t conceal the text at all and therefore provides no secrecy, but
1615 if someone edits the text GnuPG will report that the signature is bad.
1616
1617 To generate an inline signature, run
1618
1619 =gpg --armor --output signed_file.asc --local-user= /[your key ID]/ =--clearsign message_file.txt=
1620
1621 To verify the resulting file, simply invoke GnuPG with the filename of
1622 the signed file:
1623
1624 =gpg signed_file.asc=
1625
1626
1627 ** How can I use GnuPG to verify a file I’ve downloaded?
1628    :PROPERTIES:
1629    :CUSTOM_ID: how_do_i_verify_signed_packages
1630    :END:
1631
1632 1.  Get a copy of the author’s public certificate and import it to your
1633     keyring.  It’s important to get the author’s certificate through a
1634     trusted source.  On the internet, anyone can be pretend to be anyone.
1635     Particularly, be careful if the certificate you have doesn’t match the
1636     one used for prior code releases.
1637
1638 2.  Once you’re confident you have the correct certificate, give it a local
1639     signature.  Assuming you want to locally sign certificate
1640     1DCBDC01B44427C7, you’d type:
1641
1642     =gpg --edit-key 1DCBDC01B44427C7 lsign=
1643
1644 3.  Download the software package.  Let’s assume it’s called “foo.zip”.
1645
1646 4.  Download the detached signature for the package.  Let’s assume it’s
1647     called “foo.zip.asc”.
1648
1649 5.  Run:
1650
1651     =gpg foo.zip.asc=
1652
1653     GnuPG will assume the original file is in foo.zip.  (If GnuPG can’t find
1654     foo.zip, GnuPG will prompt you for the name of the original package.)  If
1655     all goes well, GnuPG will report good signatures and you may be confident
1656     you’ve received the package as the author intended.
1657
1658 Please note that a good signature doesn’t mean a piece of software is
1659 trustworthy, reliable, or bug-free.  It just means nobody tampered with it and
1660 you’re receiving it as the author intends.  Keep a healthy dose of
1661 skepticism, and remember that cryptography cannot save us from
1662 our own foolishness.
1663
1664 ** How can I use GnuPG in an automated environment?
1665    :PROPERTIES:
1666    :CUSTOM_ID: automated_use
1667    :END:
1668
1669 You should use the =--batch= option.  Don’t bother to use a passphrase
1670 because there’s usually no way to store it more securely than on the
1671 secret keyring itself.
1672
1673 The suggested way to create keys for an automated environment is as
1674 follows.  First, on a secure machine:
1675
1676 1. If you want to do automatic signing, create a signing subkey for
1677    your key.  Use the interactive key editing menu by issuing the
1678    command:
1679
1680    =gpg --edit-key= /keyID/
1681
1682    Enter “addkey” and choose whichever key type best suits your
1683    needs.  (If you don’t know which one is best, choose RSA.)
1684
1685 2. Make sure that you use a passphrase; this is required by the
1686    current implementation to let you export the secret key.
1687
1688 3. Run:
1689
1690    =gpg --export-secret-subkeys --no-comment= /newsubkeyID/ => secring.auto=
1691
1692 4. Copy =secring.auto= and the public keyring to a test directory.
1693
1694 5. Change to the test directory.
1695
1696 6. Run the command:
1697
1698 =gpg --homedir . --edit= /newsubkeyID/
1699
1700    Use the sub-command =passwd= to remove the passphrase from the
1701    subkeys. You may also want to remove all unused subkeys by doing
1702    =key N= and then =delkey= for each subkey.
1703
1704 7. Copy =secring.auto= to the target box somehow.
1705
1706    On the target machine, install =secring.auto= as the secret keyring
1707    and begin writing scripts that invoke GnuPG.
1708
1709    It’s a good idea to install an intrusion detection system so that
1710    you will get notice of a successful intrusion.  If that happens,
1711    you can revoke all the subkeys installed on that machine and
1712    install new subkeys once the machine is secured again.
1713
1714
1715 ** I’m a programmer and I need a GnuPG library.  Is there one?
1716    :PROPERTIES:
1717    :CUSTOM_ID: yes_gpgme
1718    :END:
1719
1720
1721 Check out [[https://www.gnupg.org/software/gpgme/][GPGME (GnuPG Made Easy)]].
1722
1723
1724
1725 ** I’m a programmer and I need a way to call GnuPG internals directly.  Is there a library for this?
1726    :PROPERTIES:
1727    :CUSTOM_ID: keep_dreaming
1728    :END:
1729
1730 No, nor will there be.
1731
1732 * What common problems come up?
1733   :PROPERTIES:
1734   :CUSTOM_ID: common_problems
1735   :END:
1736
1737
1738 ** Why is GnuPG warning me this certificate might not belong to whom I think it does?
1739    :PROPERTIES:
1740    :CUSTOM_ID: you_need_to_validate
1741    :END:
1742
1743
1744 If you received an email claiming to be from a Nigerian oil tycoon,
1745 would you believe it?  Or would you insist on doing some kind of
1746 verification first, in order to make sure that you’re not being
1747 scammed or swindled?
1748
1749 The same principle applies here.  If you’re using a certificate that
1750 claims to belong to Alice, but there’s no evidence it actually belongs
1751 to Alice, GnuPG will warn you that you’re using an untrusted
1752 certificate.
1753
1754 You probably want to validate the certificate; see [[#how_to_validate][this FAQ’s
1755 instructions]].
1756
1757
1758
1759 ** Why is GnuPG warning me about using insecure memory?
1760    :PROPERTIES:
1761    :CUSTOM_ID: insecure_memory
1762    :END:
1763
1764
1765 GnuPG tries to lock memory so that no other process can see it and so
1766 that the memory will not be written to swap.  If for some reason it’s
1767 not able to do this (for instance, certain platforms don’t support
1768 this kind of memory locking), GnuPG will warn you that it’s using
1769 insecure memory.
1770
1771 While it’s almost always better to use secure memory, it’s not
1772 necessarily a bad thing to use insecure memory.  If you own the
1773 machine and you’re confident it’s not harboring malware, then this
1774 warning can probably be ignored.
1775
1776
1777
1778 ** Why is GnuPG changing my message?
1779    :PROPERTIES:
1780    :CUSTOM_ID: escaped_dashes
1781    :END:
1782
1783 GnuPG uses special lines to denote the beginning of a message, the
1784 beginning of a signature, and so forth.  These lines start with
1785 “=----- BEGIN=…”.  If your text contains a line beginning with a dash,
1786 that line will be slightly mangled in order to prevent GnuPG from
1787 misinterpreting your data as one of its special lines.
1788
1789 * What are some common best practices?
1790   :PROPERTIES:
1791   :CUSTOM_ID: best_practices
1792   :END:
1793
1794 It’s very hard to give advice on this subject, because everyone will
1795 have their own opinion.  That said, here are some good guidelines:
1796
1797 - *Join the community.* Join [[gnupg-users_list][GnuPG-Users]] and get involved in the
1798   discussions.  The conversation is wide-ranging and you’ll encounter
1799   a great variety of thoughts and opinions.  Reading GnuPG-Users is
1800   one of the best ways to educate yourself.
1801 - *Practice.* If you don’t practice these skills before they become
1802   necessary, you won’t be able to use these skills effectively.
1803 - *Generate a revocation certificate and keep it safe.*
1804 - *Use a strong passphrase.*
1805 - *Keep your computer free of malware.*
1806 - *Validate certificates correctly.*
1807
1808
1809
1810 ** How can I choose a strong passphrase?
1811    :PROPERTIES:
1812    :CUSTOM_ID: strong_passphrase
1813    :END:
1814
1815 If someone manages to obtain your secret key, the only thing
1816 protecting the key will be your passphrase.  A passphrase should be 1)
1817 difficult to guess for someone who knows you, and 2) difficult to
1818 brute-force by trying every possible combination of characters.
1819
1820 To meet requirement 1), the passphrase shouldn’t be based on
1821 publicly-available information about you: your birthday, your spouse’s
1822 name, your school’s motto, a line of text from a book, etc.  To meet
1823 requirement 2), the passphrase should be long: commercially available
1824 hardware can try 2.8 billion passwords in a day, which is sufficient
1825 to crack a 10-letter all-lowercase password.
1826
1827 One simple approach that produces easy-to-remember passphrases is to
1828 generate four to six random words, as illustrated by the XKCD cartoon
1829 [[http://xkcd.com/936/][“Correct, horse!  Battery staple!”]].
1830
1831
1832
1833 ** How can I keep my revocation certificate safe?
1834    :PROPERTIES:
1835    :CUSTOM_ID: keep_rev_cert_safe
1836    :END:
1837
1838 Good places include safe deposit boxes, kept on file with your lawyer,
1839 placed in a fireproof safe, and so forth.  It should be treated as an
1840 important document that needs to be kept safe.
1841
1842
1843 ** How can I keep my computer safe from malware?
1844    :PROPERTIES:
1845    :CUSTOM_ID: malware
1846    :END:
1847
1848
1849 Although there is no guaranteed way of keeping your system free of
1850 malware, you can reduce your risk quite a lot by following some basic
1851 rules.
1852
1853 1.  Keep your system up-to-date.  Always apply the latest patches.
1854 2.  Stop using old versions of Internet Explorer.  If possible, use
1855     [[https://www.getfirefox.com][Mozilla Firefox]] or [[https://download-chromium.appspot.com/][Chromium]].
1856 3.  Don’t open email attachments unless they are expected and come
1857     from someone you know.
1858 4.  Don’t click on email links unless they are expected and come from
1859     someone you know.
1860 5.  Be suspicious of requests for personal information, especially if
1861     it’s more detail than is strictly necessary to solve a problem.
1862
1863
1864 ** Should I use encrypted disk software like TrueCrypt, BitLocker or FileVault?
1865    :PROPERTIES:
1866    :CUSTOM_ID: disk_encryption
1867    :END:
1868
1869 You can if you want, but it won’t make your private key any more
1870 secure.  Your private key is already encrypted: your passphrase is the
1871 key used to decrypt your private key.
1872
1873 * Advanced topics
1874   :PROPERTIES:
1875   :CUSTOM_ID: advanced_topics
1876   :END:
1877
1878
1879 These topics are ‘advanced’ in the sense that you really don’t need to
1880 understand them in order to safely and correctly use GnuPG.  That
1881 said, if you have a more technical question about GnuPG, you may find
1882 some of the answers in this section.
1883
1884
1885 ** Which ciphers are recommended, and why?
1886    :PROPERTIES:
1887    :CUSTOM_ID: recommended_ciphers
1888    :END:
1889
1890 Although all the ciphers in GnuPG are believed strong, they are not all
1891 equally recommended.  For asymmetric ciphers we recommend RSA over
1892 DSA and/or Elgamal; for symmetric ciphers we recommend AES, Camellia,
1893 and/or Twofish over all the others.
1894
1895 With respect to our RSA recommendation, there is no reason to believe RSA
1896 is any better or worse than DSA and/or Elgamal in a cryptographic sense.
1897 However, if you ever want to migrate your certificate to a smart card or
1898 other cryptographic token, you’ll find RSA is much better supported.
1899
1900 With respect to our symmetric cipher recommendations, we have to explain a
1901 little bit about cryptanalysis.
1902
1903 First, ciphers are deterministic: given the same inputs, they generate
1904 the same outputs.
1905
1906 Second, ciphers don’t operate on individual bytes.  They work on blocks of
1907 data, either eight or sixteen bytes large, depending on the cipher.
1908
1909 Third, the OpenPGP standard requires that ciphers run in what’s
1910 called a “feedback mode.”  In feedback mode, a cipher has two inputs: the
1911 random session key used for the message, and the output of the previous
1912 block.
1913
1914 Put it all together and imagine what would happen if, within the same
1915 message, two identical ciphertext blocks were created.  Since the cipher is
1916 deterministic (always generates the same output for the same inputs), and
1917 since the key and the previous block are the same, the output of this block
1918 would be the same.  This repetition creates a distinctive pattern which a
1919 cryptanalyst might be able to potentially exploit.
1920
1921 For a cipher with an eight-byte block size, you’ll probably repeat a block
1922 after about 32 gigabytes of data.  This means if you encrypt a single
1923 message larger than 32 gigabytes, it’s pretty much a statistical guarantee
1924 you’ll have a repeated block.  That’s bad.  For this reason, we recommend
1925 you not use ciphers with eight-byte data blocks if you’re going to be
1926 doing bulk encryption.  It’s very unlikely you’ll have any problems if you
1927 keep your
1928 messages under 4 gigabytes in size.
1929
1930 For a cipher with a sixteen-byte block size, you’d need to encrypt a single
1931 message that contained more data than is found in the entire internet.  In
1932 other words, it’s no longer an issue.
1933
1934 Twofish, AES, and Camellia all operate on sixteen bytes at a time.  The
1935 others all operate on eight bytes at a time.
1936
1937 ** Why does GnuPG default to 2048 bit RSA-2048?
1938    :PROPERTIES:
1939    :CUSTOM_ID: default_rsa2048
1940    :END:
1941
1942 At the time the decision was made, 2048-bit RSA was thought to provide
1943 reasonable security for the next decade or more while still being
1944 compatible with the overwhelming majority of the OpenPGP ecosystem.
1945
1946 *** Is that still the case?
1947 Largely, yes.  According to NIST Special Publication 800-57, published
1948 in July 2012, 2048-bit RSA is believed safe until 2030.  At present,
1949 no reputable cryptographer or research group has cast doubt on the
1950 safety of RSA-2048.  That said, many are suggesting shifting to larger
1951 keys, and GnuPG will be making such a shift in the near future.
1952
1953 *** What do other groups have to say about 2048-bit RSA?
1954 In 2014, the German Bundesnetzagentur fuer Elektrizitaet, Gas,
1955 Telekommunikation, Post und Eisenbahnen recommended using RSA-2048 for
1956 long-term security in electronic signatures.
1957
1958 In 2012, ECRYPT-II published their “Yearly Report on Algorithms and
1959 Keysizes” wherein they expressed their belief RSA-1776 will suffice
1960 until at least 2020, and RSA-2432 until 2030.
1961
1962 In 2010, France’s Agence Nationale de la Securite des Systems
1963 d’Information stated they had confidence in RSA-2048 until at
1964 least 2020.
1965
1966 *** Is there a general recommendation that 3072-bit keys be used for new applications?
1967 No, although some respected people and groups within the cryptographic
1968 community have made such recommendations.  Some even recommend
1969 4096-bit keys.
1970
1971 *** Will GnuPG ever support RSA-3072 or RSA-4096 by default?
1972 Probably not.  The future is elliptical-curve cryptography, which will
1973 bring a level of safety comparable to RSA-16384.  Every minute we
1974 spend arguing about whether we should change the defaults to RSA-3072
1975 or more is one minute the shift to ECC is delayed.  Frankly, we think
1976 ECC is a really good idea and we’d like to see it deployed as soon as
1977 humanly possible.
1978
1979 *** I think I need larger key sizes.
1980 By all means, feel free to generate certificates with larger keys.
1981 GnuPG supports up to 4096-bit keys.
1982
1983
1984 ** Do other high-security applications use RSA-2048?
1985    :PROPERTIES:
1986    :CUSTOM_ID: rsa2048_in_the_real_world
1987    :END:
1988
1989 2048-bit RSA is commonly used to secure SSL root signing certificates.
1990 It’s also used to sign operating system patches, Authenticode
1991 signatures, Java applets and more.  RSA-2048 is believed to be safe
1992 against attack until at least the year 2030, so use it with
1993 confidence.
1994
1995
1996 ** Why doesn’t GnuPG default to using RSA-4096?
1997    :PROPERTIES:
1998    :CUSTOM_ID: no_default_of_rsa4096
1999    :END:
2000
2001 Because it gives us almost nothing, while costing us quite a lot.
2002
2003 Breaking an RSA-10 key requires you to try each prime number between
2004 two and one hundred.  There are twenty-five of these, meaning RSA-10
2005 is equivalent to about a 5-bit symmetric cipher.  Breaking an RSA-20
2006 key requires you to try each prime number between two and one
2007 thousand: there are 168 of them, meaning RSA-20 is equivalent to about
2008 an 8-bit cipher.  Doubling the keylength (from RSA-10 to RSA-20)
2009 didn’t give us the benefit that we naively expected.  Each additional
2010 bit gives correspondingly less in the way of additional security, and
2011 we quickly reach a point of diminishing returns.
2012
2013 That point of diminishing returns happens around RSA-2048.  Once you
2014 move past RSA-2048, you’re really not gaining very much.  At the same
2015 time, moving past RSA-2048 means you lose the ability to migrate your
2016 certificate to a smartcard, or to effectively use it on some mobile
2017 devices, or to interoperate with other OpenPGP applications that don’t
2018 handle large keys gracefully.
2019
2020 If you really want a 4096-bit RSA key there’s nothing stopping you:
2021 but we sincerely believe the overwhelming majority of users will be
2022 well-served with RSA-2048.
2023
2024
2025
2026 ** Why do people advise against using RSA-4096?
2027    :PROPERTIES:
2028    :CUSTOM_ID: please_use_ecc
2029    :END:
2030
2031 Almost always when people use 4096-bit RSA they’re doing so because
2032 they believe RSA-4096 to be much stronger than it is.  The United
2033 States’ National Institute of Standards and Technology ([[http://www.nist.gov][NIST]]) states
2034 that RSA-2048 gives roughly 112 bits of security and RSA-3072 gives
2035 roughly 128.  There is no formal recommendation on where RSA-4096
2036 lies, but the general consensus is that it would come in somewhere
2037 around 140 bits — 28 bits of improvement over RSA-2048.  This is an
2038 improvement so marginal that it’s really not worth mentioning.
2039
2040 If you need more security than RSA-2048 offers, the way to go would be
2041 to switch to elliptical curve cryptography — not to continue using
2042 RSA.
2043
2044
2045
2046 ** Why does GnuPG support RSA-4096 if it’s such a bad idea?
2047    :PROPERTIES:
2048    :CUSTOM_ID: not_a_bad_idea_just_unnecessary
2049    :END:
2050
2051 RSA-4096 is not a bad idea: it’s just, generally speaking,
2052 unnecessary.  You gain very little in the way of additional resistance
2053 to brute-forcing and cryptanalysis.
2054
2055
2056
2057 ** Can any of the ciphers in GnuPG be brute-forced?
2058    :PROPERTIES:
2059    :CUSTOM_ID: brute_force
2060    :END:
2061
2062
2063 No.
2064
2065 The laws of physics require that a certain amount of heat be used in
2066 computation.  This is a consequence of the Second Law of
2067 Thermodynamics, and may not be violated under our current
2068 understanding of the laws of physics.
2069
2070 Further, physics requires that a certain amount of time be used in
2071 computation.  This is a consequence of the Heisenberg Uncertainty
2072 Principle, and may not be violated under our current understanding of
2073 the laws of physics.
2074
2075 Using these two principles (the [[https://en.wikipedia.org/wiki/Landauer_bound][Landauer bound]] and the
2076 [[https://en.wikipedia.org/wiki/Margolus%E2%80%93Levitin_theorem][Margolus–Levitin limit]]), we can determine quite accurately how much
2077 heat would be released by a computer that brute-forced a 128-bit
2078 cipher.  The results are profoundly silly: it’s enough to boil the
2079 oceans and leave the planet as a charred, smoking ruin.
2080
2081 This is not to say that GnuPG cannot be successfully attacked.  It is
2082 only to say that none of the ciphers in GnuPG are susceptible to
2083 brute-forcing.
2084
2085
2086
2087 ** Has GnuPG ever been successfully attacked?
2088    :PROPERTIES:
2089    :CUSTOM_ID: successful_attacks
2090    :END:
2091
2092
2093 This depends entirely on what is meant by “successful attack.”
2094
2095 If you mean, “has GnuPG traffic ever been successfully
2096 cryptanalyzed?”, the answer is a flat ‘no’.  We are unaware of any
2097 credible reports of any of the ciphers used in GnuPG having ever been
2098 successfully cryptanalyzed.
2099
2100 If you mean, “have people figured out ways to obtain the plaintext
2101 anyway?”, the answer is an emphatic ‘yes.’ In [[http://news.cnet.com/8301-10784_3-9741357-7.html][a 2007 Drug Enforcement
2102 Administration case]], a keylogger was installed on a suspect’s
2103 computer.
2104
2105 GnuPG protects your traffic against cryptanalysis, but it is not magic
2106 fairy dust that can be sprinkled over your data to make it safe
2107 against all threats.
2108
2109
2110
2111 ** Should I use PGP/MIME for my emails?
2112    :PROPERTIES:
2113    :CUSTOM_ID: use_pgpmime
2114    :END:
2115
2116 Almost certainly.  In the past this was a controversial question, but
2117 recently there’s come to be a consensus: use PGP/MIME whenever possible.
2118 The reason for this is that it’s possible to armor email headers and
2119 metadata with PGP/MIME, but sending messages inline leaves this data
2120 exposed.  As recent years have taught us, the metadata is often as
2121 sensitive as the contents of the message.  PGP/MIME can protect metadata;
2122 inline can’t.
2123
2124 However, please be aware that not all mail servers handle PGP/MIME
2125 properly.  Some mailing lists are incompatible with it (PGP-Basics, for
2126 instance).  Some mailing list software mangles PGP/MIME (old versions of
2127 Mailman, for instance).
2128
2129 If you have any problems with PGP/MIME, consider carefully whether you
2130 need metadata protection.  If you don’t, then fall back to inline.
2131
2132
2133 ** What are the best algorithms in GnuPG?
2134    :PROPERTIES:
2135    :CUSTOM_ID: no_best_algo
2136    :END:
2137
2138
2139 MD5 and SHA-1 should be avoided if possible, and for bulk encryption
2140 it’s best to use Camellia, Twofish, or AES.  Beyond that guidance there is no
2141 “best algorithm” in GnuPG.  It’s sort of like
2142 asking whether Godzilla or King Kong is better at terrorizing urban
2143 cities: there is no clear-cut winner.
2144
2145 This is not to say you shouldn’t have preferences, though.  It is only
2146 to say that GnuPG’s algorithms are so well-designed for what they do
2147 that there is no single “best”.  There’s just a lot of personal,
2148 subjective choice.
2149
2150
2151 ** Why is my DSA key limited to 3072 bits?
2152    :PROPERTIES:
2153    :CUSTOM_ID: no_dsa4096
2154    :END:
2155
2156
2157 The United States’ National Institute of Standards and Technology
2158 ([[http://www.nist.gov][NIST]]) is responsible for the DSA specification.  NIST has not
2159 published a 4096-bit DSA variant, and thus GnuPG doesn’t offer it.
2160
2161
2162
2163 ** Why does my DSA-1024 key use a different digest algorithm than my DSA-2048 or DSA-3072 key?
2164    :PROPERTIES:
2165    :CUSTOM_ID: hash_widths_in_dsa
2166    :END:
2167
2168
2169 The DSA algorithm has gone through several revisions.
2170
2171 GnuPG’s original implementation of DSA supported 1024-bit keys that
2172 used either SHA-1 or RIPEMD-160 as hashes.
2173
2174 When the United States’ National Institute of Standards and Technology
2175 ([[http://www.nist.gov][NIST]]) revised the specification to support 2048- and 3072-bit keys,
2176 they also required longer hashes be used.  DSA-2048 required a 224-bit
2177 hash (SHA-224, or a longer hash cut down to 224 bits), and DSA-3072
2178 required a 256-bit hash (SHA-256, or a longer hash cut down to 256
2179 bits).  They also now allowed for stronger hashes to be used for
2180 DSA-1024: if they were more than 160 bits, they would simply be cut
2181 down.
2182
2183 So, depending on how you have GnuPG configured, GnuPG might be forced
2184 to use SHA-1 and/or RIPEMD-160 with DSA-1024; GnuPG might be able to
2185 use any of the longer SHAs with DSA-1024; GnuPG might use SHA-224,
2186 -256, -384 or -512 for DSA-2048; GnuPG might use SHA-256, SHA-384 or
2187 SHA-512 for DSA-3072.
2188
2189
2190 ** Why can’t I decrypt things I encrypted twenty years ago with PGP 2.6?
2191    :PROPERTIES:
2192    :CUSTOM_ID: pgp_26
2193    :END:
2194
2195 PGP 2.6 was released almost twenty-five years ago and is now
2196 completely obsolete.  We strongly advise against using PGP 2.6 if you
2197 have any choice in the matter.  Due to PGP 2.6 being obsolete, GnuPG
2198 dropped support for it years ago in the GnuPG 2.0 series.
2199
2200 If you absolutely must have PGP 2.6 support, we recommend you use
2201 GnuPG's oldest supported version, 1.4, which can still handle PGP 2.6
2202 traffic.  We still urge you to migrate your documents to OpenPGP, as
2203 we will not be supporting GnuPG 1.4 for much longer.
2204
2205 * COMMENT HTML style specifications
2206
2207 #+begin_src emacs-lisp
2208   (defun org-faq-make-target ()
2209     "Make hard target for current headline."
2210     (interactive)
2211     (if (not (org-on-heading-p))
2212         (error "Not on a headline"))
2213     (let ((h (org-trim (org-get-heading 'no-tags))))
2214       (if (string-match "[ \t]*\\?\\'" h)
2215           (setq h (replace-match "" t t h)))
2216       (while (string-match "[ \t]+" h)
2217         (setq h (replace-match "-" t t h)))
2218       (setq h (downcase h))
2219       (org-entry-put nil "CUSTOM_ID" h)))
2220 #+end_src