bb5c5ac1992a8a375ea100a61dddac1e8dc85f56
[gnupg-doc.git] / misc / blog.gnupg.org / 20170803-web-key-in-enigmail.org
1 # Using the Web Key Service with Enigmail
2 #+STARTUP: showall
3 #+AUTHOR: Kai
4 #+DATE: August 3, 2017
5
6 ** Using the Web Key Service with Enigmail
7
8 Obtaining the public key of someone has always being a major pain point of
9 using GnuPG. OpenPGP doesn't "outsource" trust management by using a PKI.
10 Instead, it allows each user to decide whom to trust. This has the downside
11 that we need to evaluate whether we can trust a new public key for each
12 new communication partner. Until recently, there wasn't an automatic way to
13 securely get the public key of someone you never communicated with.
14
15 The [[https://tools.ietf.org/html/draft-koch-openpgp-webkey-service-04][Web Key Service]] and the ~--auto-key-retrieve~ &
16 ~--auto-key-locate~ enhancements available in GnuPG 2.1.16 and beyond.
17
18 *** Web Key Service
19
20 #+CAPTION: Web key service protocol overview
21 #+ATTR_HTML: :class right :style max-width: 400px
22 [[file:img/wks-schema.png]]
23
24 The Web Key Service is a protocol to publish public OpenPGP keys via
25 email and retrieve others' public keys using HTTPS. The advantage over
26 HKPS is that every email provider maintains its own key
27 server (called Web Key Directory, WKD) that is authoritative for all
28 its users. This means that:
29
30 1. There exists only one key server for a given email address. No need to ask
31    multiple servers as with HKPS.
32
33 2. When publishing a public key using mail, WKD makes sure the sender is in
34    possession of the secret key.
35
36 3. Email providers can (and should) make sure that only the owner of the
37    email account is able to publish a public key for it.
38
39 Point three helps us with trust management. In case we trust the email
40 provider of our communication partner, we can trust the key retrieved by WKD
41 more than one from an HKPS based key server.
42
43 #+HTML: <p style="clear: both"/>
44
45
46 *** Publish your public key to a Web Key Directory
47
48 In order to use WKS you need a provider who supports it [fn:1]. After you
49 configured the email account in Thunderbird you need to enable OpenPGP for
50 it and generate a key pair.
51
52 #+CAPTION: Enable the OpenPGP checkbox in the account settings.
53 #+ATTR_HTML: :class right :style max-width: 400px
54 [[file:img/wks-account-settings.png]]
55
56 Then, open the key management window and find your public key. Right clicking
57 it opens the context menu. There, select the option to upload the public key
58 to your provider's WKD.
59
60 #+CAPTION: Context menu of the key management dialog.
61 #+ATTR_HTML: :class right :style max-width: 400px
62 [[file:img/wks-key-mng.png]]
63
64 After submission, the WKD will send an email to you asking to confirm the
65 publication request. The subject line and body copy can be defined by the WKD
66 but Enigmail will display a yellow bar above the message announcing it is a
67 confirmation request. Clicking the button on the right will send the
68 confirmation email to WKD.
69
70 #+CAPTION: Enigmail adds a yellow bar to the confirmation request.
71 #+ATTR_HTML: :class right :style max-width: 400px
72 [[file:img/wks-confirm-req.png]]
73
74 After the email has been sent, your public key will be accessible to
75 everybody.
76
77 #+HTML: <p style="clear: both"/>
78
79 *** Receive others public key from a Web Key Directory
80
81 Recent version of Enigmail receive missing public keys automatically form
82 multiple sources, including WKD. Everybody who wants to send you an encrypted
83 email will be able to do so without finding your public key manually first.
84
85 This is a bit anticlimactic, but you can use the ~--auto-key-locate~
86 option to retrieve your own public key from the WKD to see if it worked.
87
88 ~HOME=`mktemp -d` gpg2 --auto-key-locate wkd -e -r <your email address>~
89
90 If GnuPG is able to retrieve the public key you will see a line that looks
91 like that:
92
93 ~gpg: automatically retrieved '<your email address>' via WKD~
94
95
96 ** Update 2017-09-13
97
98   Fixed URL auf the Web Key Service draft and updated to the current
99   -04 version.
100
101 [fn:1] As the time of writing only [[https://posteo.de/en][Posteo]] supports
102        WKS.