blog: News for September and October.
[gnupg-doc.git] / misc / blog.gnupg.org / 20151103-gnupg-in-october.org
1 # GnuPG News for September and October 2015
2 #+STARTUP: showall
3 #+AUTHOR: Neal
4 #+DATE: November 3rd, 2015
5 #+Keywords: Presentation, TOFU, Tor, g13, disk encryption
6
7 ** GnuPG News for September and October 2015
8
9 *** Keynote at FSCONs
10
11 If you'll be in Sweden next week for the FSCONS, you'll have the
12 opportunity to hear Werner Koch's talk on Saturday afternoon: [[https://frab.fscons.org/en/fscons2015/public/events/243][The
13 state of everyday cryptography]]:
14
15   After Snowden explained to the world that even the crypto geeks had
16   been too optimistic about the state of global surveillance, a new
17   interest in developing and promoting systems to provide encryption
18   service for normal human beings awoke.  There are several systems
19   with widely different goals, user bases, and cryptographic strength
20   in active use.  Some popped up and quickly drowned, others are
21   getting more and more attention, and finally there are some old
22   comrades finally getting public interest. In this talk, Werner gives
23   an overview of these different systems and tries to predict their
24   future.  Will some of these encryption systems survive and thus
25   force the NSA/CGHQ/BND to spend a lot more money on mass
26   surveillance?
27
28 *** Development
29
30 Since the last blog post, there have been two releases of GnuPG:
31 version [[https://lists.gnupg.org/pipermail/gnupg-announce/2015q3/000379.html][2.1.8]] and version [[https://lists.gnupg.org/pipermail/gnupg-announce/2015q4/000380.html][2.1.9]].  These releases were primarily bug
32 fix releases.  The one noteworthy new feature (implemented by Werner)
33 is support for [[http://tools.ietf.org/wg/dane/draft-ietf-dane-openpgpkey/][OpenPGP DANE]], which allows looking up keys that have
34 been stored in the DNS.
35
36 In terms of development, Neal has finished the preliminary
37 implementation of TOFU and Werner has been working on two new
38 features: Tor support for GnuPG and g13, which provides GnuPG support
39 for DM-Crypt.  Daniel Kahn Gillmor provided a patch to explicitly
40 deprecate algorithms in addition to those that GnuPG has marked as
41 deprecated.  Andre Heinecke has been working on GpgOL, a GnuPG plug-in
42 for Outlook, and Kai has continued to work on Enigmail.
43
44 **** Noteworthy Bugs
45
46 Niibe fixed a bug effecting the use of ed25519 keys with GnuPG's ssh
47 agent code.  When using an ed25519 authentication key imported with
48 ~ssh-add~, GnuPG 2.1.8 and later could no longer read the keys saved
49 by older versions of GnuPG.  This was due to a bug in the way that
50 older versions of GnuPG saved the key.  To work around this, you need
51 to manually delete the old key and reimport it using ssh-add.  Refer
52 to https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798956#24 and
53 https://bugs.gnupg.org/gnupg/issue2096 for more details.
54
55 Niibe also fixed a bug arising from a new GCC optimization.  The
56 optimization, which was introduced in GCC 5, caused GnuPG to fail to
57 positively verify some messages.  The issue was that instead of
58 returning the address of a local variable, gcc would simply return
59 NULL.  (GnuPG was using this ugly hack to return something other than
60 NULL to indicate success for an empty packet; the caller didn't
61 actually examine the value pointed to by the address.)  See this
62 [[https://lists.gnupg.org/pipermail/gnupg-devel/2015-September/030334.html][message]] for more details.
63
64 Jonas Magazinius [[http://www.metzdowd.com/pipermail/cryptography/2015-October/026685.html][identified a downgrade attack]] on the OpenPGP message
65 format:
66
67   [He] found that [OpenPGP] is vulnerable to a chosen-ciphertext
68   attack to downgrade [a Symmetrically Encrypted Integrity Protected
69   Data Packet (SEIP)] to a plain [Symmetrically Encrypted Data Packet
70   (SE)] packet. Due to the properties of CFB mode and OpenPGP’s
71   predictable message structure, it is possible to switch the SEIP tag
72   to SE, strip the MDC (and signature), and align and manipulate the
73   encrypted packet. The implications are, among others, that an
74   encrypted and signed message can be stripped of its signature and
75   modified arbitrarily, with certain restrictions, by an attacker
76   without knowing the key.
77
78 Since symmetrically encrypted data packets have been deprecated since
79 RFC 4880, which was release in 2007, GnuPG mitigates this attack by
80 aborting if the message contains an SE packet and was encrypted with a
81 relatively modern cipher (anything with a block length that is greater
82 than 64-bits as well as twofish).  Since (hopefully) no one is using
83 the old ciphers, an attacker will only be able to downgrade old
84 messages.
85
86 **** OpenPGP DANE
87
88 [[https://datatracker.ietf.org/doc/draft-ietf-dane-openpgpkey/?include_text%3D1][OpenPGP DANE]] ist a new mechanism for OpenPGP key discovery.  The basic
89 idea is that users publish their key in the Secure DNS.  Then, when
90 someone is looking up a key, they simply use DNS to find it.  This has
91 the advantage that since the user (or the user's mail provider)
92 controls the domain, it is less likely that a rogue key will be
93 returned, which can happen when using an HKP keyserver since the
94 keyserver has no way to determine what key is correct.
95
96 Werner has implemented this and it is available in the most recent
97 GnuPG release.  GnuPG makes one small derivation from the proposed
98 standard: GnuPG always lower-cases the local-part of the email
99 address.
100
101 To create a DANE record, use the following command:
102
103 #+BEGIN_EXAMPLE
104 $ gpg2 --print-dane-records -k KEYID
105 #+END_EXAMPLE
106
107 To search for a key using DANE, use:
108
109 #+BEGIN_EXAMPLE
110 $ gpg2 --auto-key-locate dane --search-keys email@example.org
111 #+END_EXAMPLE
112
113 **** TOFU
114
115 Neal finally committed TOFU support to the git repository.  Special
116 thanks go to Andre Heinecke, who helped debug the code.  It will be
117 available in the next release.  Although TOFU will not be turned on by
118 default, we encourage MUAs to prompt users to switch to this trust
119 model.
120
121 [[https://en.wikipedia.org/wiki/Trust_on_first_use][TOFU]] stands for Trust on First Use and is a concept that will be
122 familiar to anyone who regularly uses ssh.  When you ssh to a host for
123 the first time, ssh asks you to verify the host's key (most people
124 just say yes here).  When connecting to the same host in the future,
125 ssh checks that the key hasn't changed.  If it has, ssh displays a
126 warning.  TOFU for GnuPG works similarly.
127
128 In contrast to the [[https://en.wikipedia.org/wiki/Web_of_trust][Web of Trust]] (WoT), TOFU's security guarantees are
129 rather weak.  When using the WoT correctly, you can have high
130 confidence that if GnuPG says a given key is controlled by a specific
131 user, then it probably is.  TOFU, on the other hand, is only able to
132 detect when the key associated with an email address has changed.
133 Despite this, TOFU will be more secure than the WoT for most users in
134 practice.  This is because using the WoT requires a lot of manual
135 support, which most users never both with.  In particular, you need to
136 verify fingerprints and set the owner trust to take advantage of
137 friend of friend verification.
138
139 Happily you don't need to choose between TOFU and the WoT.  It is
140 possible to combine them using the tofu+pgp trust model.  In this
141 model, the trust level for a key under each model is computed and then
142 the maximum is taken.
143
144 For users who want TOFU's ability to detect conflicts, but don't like
145 that TOFU assigns positive (marginal) trust to new keys without
146 prompting, it is possible to change the default policy to unknown or
147 to always prompt the user for the policy for new keys using the
148 --tofu-default-policy option.
149
150 To enable TOFU support, you just need to add the following to your
151 gpg.conf file:
152
153 #+BEGIN_EXAMPLE
154 trust-model tofu+pgp
155 #+END_EXAMPLE
156
157 Other than that, there is nothing special that you need to do to take
158 advantage of TOFU.  See [[https://lists.gnupg.org/pipermail/gnupg-users/2015-October/054608.html][this mail]] for more details.  (For a more
159 implementation-focused discussion, see [[https://lists.gnupg.org/pipermail/gnupg-devel/2015-October/030341.html][this mail]].)  Also consult the
160 manual (search for tofu to find the relevant options).
161
162 **** Tor Support
163
164 Werner has committed basic support for Tor to the GnuPG git
165 repository.  It can be enabled by passing the --use-tor flag to
166 dirmngr (or setting use-tor in dirmngr.conf).  Note: to test this
167 feature, you'll also need a version of libassuan from git.
168
169 GnuPG's Tor support is careful to make sure that traffic is not
170 accidentally routed via the open Internet.  To ensure this, when Tor
171 support is enabled and traffic can't be routed via Tor, GnuPG fails
172 rather than leaks data.  In order to ensure that information is not
173 leaked via DNS, GnuPG will use [[http://www.chiark.greenend.org.uk/~ian/adns/][ADNS]] to access the DNS rather than the
174 system resolver.  (ADNS has been used by GnuPG on Windows since 2008.)
175 Werner has modified it to support Tor and is currently in the process
176 of getting the patches integrated upstream.
177
178 Kristian Fiskers, the manager of the SKS Keyserver pool, began looking
179 into making keyservers accessible as Tor hidden services.  Information
180 about which keyservers support Tor and their respective .onion
181 addresses can be found on [[https://sks-keyservers.net/status/][the SKS status page]].  However, just as you
182 don't typically want to configure GnuPG to use a single key server
183 rather than the fault-tolerant pool, Kristian has set up an Onion
184 Balancer, [[hkp://jirk5u4osbsr34t5.onion][hkp://jirk5u4osbsr34t5.onion]], to redirect requests to the
185 various Tor-enabled keyservers.  Support is still experimental.
186
187 **** g13
188
189 Werner has been working on g13.  g13 is part of the GnuPG suite of
190 tools.  It provides support for working with DM-Crypt devices with
191 OpenPGP keys and takes advantage of the existing GnuPG infrastructure.
192
193 Currently, DM-Crypt is primarily used with LUKS.  A LUKS encrypted
194 volume has a small header at the start of the volume, which includes
195 the master key encrypted with a passphrase.  The passphrase is a weak
196 point of the system as it is often vulnerable to a brute-force attack.
197 A more secure approach is to encrypt the master key with a secret key
198 stored on a smart card.  Further, it should be possible to use
199 existing keys.  GnuPG, of course, has long had good support for
200 interacting with smartcards and working with OpenPGP keys.
201
202 **** Deprecating Specific Algorithms
203
204 Daniel Kahn Gillmor (dkg) contributed a patch to provide an option to
205 explicitly deprecate algorithms in addition to those that GnuPG has
206 marked as deprecated.  This is useful for deprecating SHA-1, for
207 instance.  GnuPG can't do this by default because SHA-1 is a
208 mandatory-to-implement algorithm and is widely used in the OpenPGP
209 ecosystem.  Nevertheless, as dkg says:
210
211   Some operators of high-value targets that depend on OpenPGP
212   signatures may wish to require their signers to use a stronger
213   digest algorithm than SHA1, even if the OpenPGP ecosystem at large
214   cannot deprecate SHA1 entirely today.
215
216 **** GpgOL
217
218 Andre Heinecke has been evaluating the feasibility of supporting
219 PGP/MIME and S/MIME in Outlook 2007 and later.  So far he has
220 implemented support for reading MIME messages.  This is included in a
221 [[https://wiki.gnupg.org/GpgOL/Development/Testversions][beta version of GpgOL]].  He is currently working on sending PGP/MIME
222 messages.  Some preliminary code has been committed to the master
223 branch of GpgOL.  Testing is appreciated and bug reports should be
224 filed in the [[bugs.gnupg.org][bugs.gnupg.org bug tracker]].
225
226 For a draft of the release plan please refer to the [[https://wiki.gnupg.org/Gpg4win/Roadmap][Gpg4win Roadmap]].
227
228 **** Enigmail
229
230 Kai has continued to work on Enigmail.  He added support for the
231 Keybase protocol and for importing public keys from URLs.  He also
232 work on ensuring that warnings about sending unsigned emails.
233
234 *** Furture Work
235
236 Intevation and and g10code have been awarded a 2 year contract by the
237 [[https://en.wikipedia.org/wiki/Federal_Office_for_Information_Security][BSI]] (the German office for information security) to start work on the
238 [[http://ted.europa.eu/udl?uri=TED:NOTICE:344537-2015:TEXT:EN:HTML][Gpg4all]] project ([[http://lists.wald.intevation.org/pipermail/gpg4win-devel/2015-October/001528.html][announcement]]).  The main objectives of Gpg4all are to
239 maintain Gpg4win and to research end-to-end encryption for webmail and
240 Android phones.
241
242 The BSI also accepted a bid by Intevation and g10code to work on the
243 [[http://www.evergabe-online.de/home?0&id=96898][Gpg4VS-NfD]] project.  The goal of this project is to prepare Gpg4win
244 and GnuPG for approval for use with classified documents at the VS-Nfd
245 (restricted) level in Germany.  The main task is to improve the
246 internal documentation of GnuPG and to implement a configuration
247 option to restrict what GnuPG can do according to this classification
248 level's requirements (e.g., the set of permitted algorithms).  More
249 details will be published soon.
250
251 *** Discussions
252
253 On gnupg-devel, Andreas Schwier asked about [[https://lists.gnupg.org/pipermail/gnupg-devel/2015-September/030271.html][n-of-m threshold schemes]]
254 for accessing sensitive keys.  He's implemented this support in the
255 SmartCard-HSM and would like to see support for it in scdaemon.
256 Andreas also wrote a [[http://www.smartcard-hsm.com/2015/10/10/Shared_Control_over_Key_Usage.html][blog post]] describing the various use cases in
257 more detail.  Werner replied that the main challenge will be coming up
258 with a good user interface and that this is the reason that GnuPG
259 doesn't support this type of secret sharing yet.
260
261 Werner [[https://lists.gnupg.org/pipermail/gnupg-devel/2015-October/030483.html][announced]] that the GnuPG would start to use some C99 features.
262 In particular, we'll start using variadic macros (__VA_ARGS__), the
263 predefined macro __func__ and variable declarations inside a for loop
264 (for (int i = 0; i < 5; i ++) {}).
265
266 On gnupg-users, Nix asked about using [[https://lists.gnupg.org/pipermail/gnupg-users/2015-September/054334.html][GnuPG 2.1 with NFS]].  Werner
267 provided [[https://lists.gnupg.org/pipermail/gnupg-users/2015-September/054337.html][a workaround to use a non-standard socket name for gpg-agent]].
268
269 Robert H. Hansen posted that [[http://www.theregister.co.uk/2015/09/24/facebook_crypto_upped/][Facebook has upgraded their support]] for
270 OpenPGP.  After a question from Christian Heinrich about Facebook's
271 support, Jon Millican indicated that it is possible to [[https://lists.gnupg.org/pipermail/gnupg-users/2015-October/054460.html][fetch public
272 keys via Facebook's Graph API]].
273
274 Bernhard Reiter [[https://lists.gnupg.org/pipermail/gnupg-users/2015-October/054582.html][encouraged people to edit the libgcrypt page on
275 Wikipedia]].  He noted that people closely related to the project are
276 discouraged from editing pages about their own work and encouraged
277 other members of the community to get involved this way.
278
279 *** New Employee
280
281 g10code has hired another developer, Justus Winter, to work on GnuPG
282 and related projects.  Justus has been hacking on Free Software, in
283 particular, the Hurd, since 2013.  His major contributions include
284 porting Debian/Hurd to sysvinit, and improving the performance along
285 the RPC path, notably by amending the Mach message format to include
286 Protected Payloads.  He started work at the beginning of November.
287
288 *** Donations
289
290 Werner improved the [[https://gnupg.org/donate/index.html][donation system]] to accept donations using SEPA
291 bank transfer.  This should make it easy and cheap to donate Euros
292 from most of the European states.
293
294
295 ** About this news posting
296
297 We try to write a news posting each month.  However, other work may
298 have a higher priority (e.g. security fixes) and thus there is no
299 promise for a fixed publication date.  If you have an interesting
300 topic for a news posting, please send it to us.  A regular summary of
301 the mailing list discussions would make a nice column on this news.