/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to NEWS

  • Committer: Teddy Hogeborn
  • Date: 2019-02-09 23:23:26 UTC
  • Revision ID: teddy@recompile.se-20190209232326-z1z2kzpgfixz7iaj
Add support for using raw public keys in TLS (RFC 7250)

Since GnuTLS removed support for OpenPGP keys in TLS (RFC 6091), and
no other library supports it, we have to change the protocol to use
something else.  We choose to use "raw public keys" (RFC 7250).  Since
we still use OpenPGP keys to decrypt the secret password, this means
that each client will have two keys: One OpenPGP key and one TLS
public/private key, and the key ID of the latter key is used to
identify clients instead of the fingerprint of the OpenPGP key.

Note that this code is still compatible with GnuTLS before version
3.6.0 (when OpenPGP key support was removed).  This commit merely adds
support for using raw pulic keys instead with GnuTLS 3.6.6. or later.

* DBUS-API (Signals/ClientNotFound): Change name of first parameter
                                     from "Fingerprint" to "KeyID".
  (Mandos Client Interface/Properties/KeyID): New.
* INSTALL: Document conflict with GnuTLS 3.6.0 (which removed OpenPGP
           key support) up until 3.6.6, when support for raw public
           keys was added.  Also document new dependency of client on
           "gnutls-bin" package (for certtool).
* Makefile (run-client): Depend on TLS key files, and also pass them
                         as arguments to client.
  (keydir/tls-privkey.pem, keydir/tls-pubkey.pem): New.
  (confdir/clients.conf): Add dependency on TLS public key.
  (purge-client): Add removal of TLS key files.
* clients.conf ([foo]/key_id, [bar]/key_id): New.
* debian/control (Source: mandos/Build-Depends): Also allow
                                                 libgnutls30 (>= 3.6.6)
  (Package: mandos/Depends): - '' -
  (Package: mandos/Description): Alter description to match new
                                 design.
  (Package: mandos-client/Description): - '' -
  (Package: mandos-client/Depends): Move "gnutls-bin | openssl" to
                                    here from "Recommends".
* debian/mandos-client.README.Debian: Add --tls-privkey and
                                      --tls-pubkey options to test
                                      command.
* debian/mandos-client.postinst (create_key): Renamed to "create_keys"
                                             (all callers changed),
                                             and also create TLS key.
* debian/mandos-client.postrm (purge): Also remove TLS key files.
* intro.xml (DESCRIPTION): Describe new dual-key design.
* mandos (GnuTLS): Define different functions depending on whether
                   support for raw public keys is detected.
  (Client.key_id): New attribute.
  (ClientDBus.KeyID_dbus_property): New method.
  (ProxyClient.__init__): Take new "key_id" parameter.
  (ClientHandler.handle): Use key IDs when using raw public keys and
                          use fingerprints when using OpenPGP keys.
  (ClientHandler.peer_certificate): Also handle raw public keys.
  (ClientHandler.key_id): New.
  (MandosServer.handle_ipc): Pass key ID over the pipe IPC.  Also
                             check for key ID matches when looking up
                             clients.
  (main): Default GnuTLS priority string depends on whether we are
          using raw public keys or not.  When unpickling clients, set
          key_id if not set in the pickle.
  (main/MandosDBusService.ClientNotFound): Change name of first
                                           parameter from
                                           "Fingerprint" to "KeyID".
* mandos-clients.conf.xml (OPTIONS): Document new "key_id" option.
  (OPTIONS/secret): Mention new key ID matchning.
  (EXPANSION/RUNTIME EXPANSION): Add new "key_id" option.
  (EXAMPLE): - '' -
* mandos-ctl (tablewords, main/keywords): Add new "KeyID" property.
* mandos-keygen: Create TLS key files.  New "--tls-keytype" (-T)
                 option.  Alter help text to be more clear about key
                 types.  When in password mode, also output "key_id"
                 option.
* mandos-keygen.xml (SYNOPSIS): Add new "--tls-keytype" (-T) option.
  (DESCRIPTION): Alter to match new dual-key design.
  (OVERVIEW): - '' -
  (FILES): Add TLS key files.
* mandos-options.xml (priority): Document new default priority string
                                 when using raw public keys.
* mandos.xml (NETWORK PROTOCOL): Describe new protocol using key ID.
  (BUGS): Remove issue about checking expire times of OpenPGP keys,
          since TLS public keys do not have expiration times.
  (SECURITY/CLIENT): Alter description to match new design.
  (SEE ALSO/GnuTLS): - '' -
  (SEE ALSO): Add reference to RFC 7250, and alter description of when
              RFC 6091 is used.
* overview.xml: Alter text to match new design.
* plugin-runner.xml (EXAMPLE): Add --tls-pubkey and --tls-privkey
                               options to mandos-client options.
* plugins.d/mandos-client.c: Use raw public keys when compiling with
                             supporting GnuTLS versions. Add new
                             "--tls-pubkey" and "--tls-privkey"
                             options (which do nothing if GnuTLS
                             library does not support raw public
                             keys).  Alter text throughout to reflect
                             new design.  Only generate new DH
                             parameters (based on size of OpenPGP key)
                             when using OpenPGP in TLS.  Default
                             GnuTLS priority string depends on whether
                             we are using raw public keys or not.
* plugins.d/mandos-client.xml (SYNOPSIS): Add new "--tls-privkey" (-t)
                                          and "--tls-pubkey" (-T)
                                          options.
  (DESCRIPTION): Describe new dual-key design.
  (OPTIONS): Document new "--tls-privkey" (-t) and "--tls-pubkey" (-T)
             options.
  (OPTIONS/--dh-bits): No longer necessarily depends on OpenPGP key
                       size.
  (FILES): Add default locations for TLS public and private key files.
  (EXAMPLE): Use new --tls-pubkey and --tls-privkey options.
  (SECURITY): Alter wording slightly to reflect new dual-key design.
  (SEE ALSO/GnuTLS): Alter description to match new design.
  (SEE ALSO): Add reference to RFC 7250, and alter description of when
              RFC 6091 is used.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
This NEWS file records noteworthy changes, very tersely.
2
2
See the manual for detailed information.
3
3
 
 
4
Version 1.7.20 (2018-08-19)
 
5
* Client
 
6
** Fix: Adapt to the Debian cryptsetup package 2.0.3 or later.
 
7
   Important: in that version or later, the plugins "askpass-fifo",
 
8
   "password-prompt", and "plymouth" will no longer be run, since they
 
9
   would conflict with what cryptsetup is doing.  Other plugins, such
 
10
   as mandos-client and any user-supplied plugins, will still run.
 
11
** Better error message if failing to decrypt secret data
 
12
** Check for (and report) any key import failure from GPGME
 
13
** Better error message if self-signature verification fails
 
14
** Set system clock if not set; required by GnuPG for key import
 
15
** When debugging plugin-runner, it will now show starting plugins
 
16
 
 
17
Version 1.7.19 (2018-02-22)
 
18
* Client
 
19
** Do not print "unlink(...): No such file or directory".
 
20
** Bug fixes: Fix file descriptor leaks.
 
21
** Bug fix: Don't use leak sanitizer with leaking libraries.
 
22
 
 
23
Version 1.7.18 (2018-02-12)
 
24
* Client
 
25
** Bug fix: Revert faulty fix for a nonexistent bug in the
 
26
   plugin-runner
 
27
 
 
28
Version 1.7.17 (2018-02-10)
 
29
* Client
 
30
** Bug fix: Fix a memory leak in the plugin-runner
 
31
** Bug fix: Fix memory leaks in the plymouth plugin
 
32
 
 
33
Version 1.7.16 (2017-08-20)
 
34
* Client
 
35
** Bug fix: ignore "resumedev" entries in initramfs' cryptroot file
 
36
** Bug fix in plymouth plugin: fix memory leak, avoid warning output
 
37
 
 
38
Version 1.7.15 (2017-02-23)
 
39
* Server
 
40
** Bug fix: Respect the mandos.conf "zeroconf" and "restore" options
 
41
* Client
 
42
** Bug fix in mandos-keygen: Handle backslashes in passphrases
 
43
 
 
44
Version 1.7.14 (2017-01-25)
 
45
* Server
 
46
** Use "Requisite" instead of "RequisiteOverridable" in systemd
 
47
   service file.
 
48
 
 
49
Version 1.7.13 (2016-10-08)
 
50
* Client
 
51
** Minor bug fix: Don't ask for passphrase or fail when generating
 
52
   keys using GnuPG 2.1 in a chrooted environment.
 
53
 
 
54
Version 1.7.12 (2016-10-05)
 
55
* Client
 
56
** Bug fix: Don't crash after exit() when using DH parameters file
 
57
 
 
58
Version 1.7.11 (2016-10-01)
 
59
* Client
 
60
** Security fix: Don't compile with AddressSanitizer
 
61
* Server
 
62
** Bug fix: Find GnuTLS library when gnutls28-dev is not installed
 
63
** Bug fix: Include "Expires" and "Last Checker Status" in mandos-ctl
 
64
   verbose output
 
65
** New option for mandos-ctl: --dump-json
 
66
 
 
67
Version 1.7.10 (2016-06-23)
 
68
* Client
 
69
** Security fix: restrict permissions of /etc/mandos/plugin-helpers
 
70
* Server
 
71
** Bug fix: Make the --interface flag work with Python 2.7 when "cc"
 
72
   is not installed
 
73
 
 
74
Version 1.7.9 (2016-06-22)
 
75
* Client
 
76
** Do not include intro(8mandos) man page
 
77
 
 
78
Version 1.7.8 (2016-06-21)
 
79
* Client
 
80
** Include intro(8mandos) man page
 
81
** mandos-keygen: Use ECDSA SSH keys by default
 
82
** Bug fix: Work with GnuPG 2 when booting (Debian bug #819982)
 
83
   by copying /usr/bin/gpg-agent into initramfs
 
84
* Server
 
85
** Bug fix: Work with GnuPG 2 (don't use --no-use-agent option)
 
86
** Bug fix: Make the --interface option work when using Python 2.7
 
87
   by trying harder to find SO_BINDTODEVICE
 
88
 
 
89
Version 1.7.7 (2016-03-19)
 
90
* Client
 
91
** Fix bug in Plymouth client, broken since 1.7.2
 
92
 
 
93
Version 1.7.6 (2016-03-13)
 
94
* Server
 
95
** Fix bug where stopping server would time out
 
96
** Make server runnable with Python 3
 
97
 
 
98
Version 1.7.5 (2016-03-08)
 
99
* Server
 
100
** Fix security restrictions in systemd service file.
 
101
** Work around bug where stopping server would time out
 
102
 
 
103
Version 1.7.4 (2016-03-05)
 
104
* Client
 
105
** Bug fix: Tolerate errors from configure_networking (Debian Bug
 
106
   #816513)
 
107
** Compilation: Only use sanitizing options which work with the
 
108
   compiler used when building.  This should fix compilation with GCC
 
109
   4.9 on mips, mipsel, and s390x.
 
110
* Server
 
111
** Add extra security restrictions in systemd service file.
 
112
 
 
113
Version 1.7.3 (2016-02-29)
 
114
* Client
 
115
** Bug fix: Remove new type of keyring directory user by GnuPG 2.1.
 
116
** Bug fix: Remove "nonnull" attribute from a function argument, which
 
117
   would otherwise generate a spurious runtime warning.
 
118
 
 
119
Version 1.7.2 (2016-02-28)
 
120
* Server
 
121
** Stop using python-gnutls library; it was not updated to GnuTLS 3.3.
 
122
** Bug fix: Only send D-Bus signal ClientRemoved if using D-Bus.
 
123
** Use GnuPG 2 if available.
 
124
* Client
 
125
** Compile with various sanitizing flags.
 
126
 
 
127
Version 1.7.1 (2015-10-24)
 
128
* Client
 
129
** Bug fix: Can now really find Mandos server even if the server has
 
130
   an IPv6 address on a network other than the one which the Mandos
 
131
   server is on.
 
132
 
 
133
Version 1.7.0 (2015-08-10)
 
134
* Server
 
135
** Bug fix: Handle local Zeroconf service name collisions better.
 
136
** Bug fix: Finally fix "ERROR: Child process vanished" bug.
 
137
** Bug fix: Fix systemd service file to start server correctly.
 
138
** Bug fix: Be compatible with old 2048-bit DSA keys.
 
139
** The D-Bus API now provides the standard D-Bus ObjectManager
 
140
   interface, and deprecates older functionality.  See the DBUS-API
 
141
   file for the currently recommended API.  Note: the original API
 
142
   still works, but is deprecated.
 
143
* Client
 
144
** Can now find Mandos server even if the server has an IPv6 address
 
145
   on a network without IPv6 Router Advertisment (like if the Mandos
 
146
   client itself is the router, or there is an IPv6 router advertising
 
147
   a network other than the one which the Mandos server is on.)
 
148
** Use a better value than 1024 for the default number of DH bits.
 
149
   This better value is either provided by a DH parameters file (see
 
150
   below) or an appropriate number of DH bits is determined based on
 
151
   the PGP key.
 
152
** Bug fix: mandos-keygen now generates correct output for the
 
153
   "Checker" variable even if the SSH server on the Mandos client has
 
154
   multiple SSH key types.
 
155
** Can now use pre-generated Diffie-Hellman parameters from a file.
 
156
 
 
157
Version 1.6.9 (2014-10-05)
 
158
* Server
 
159
** Changed to emit standard D-Bus signal when D-Bus properties change.
 
160
   (The old signal is still emitted too, but marked as deprecated.)
 
161
 
 
162
Version 1.6.8 (2014-08-06)
 
163
* Client
 
164
** Bug fix: mandos-keygen now generates working SSH checker commands.
 
165
* Server
 
166
** Bug fix: "mandos-monitor" now really redraws screen on Ctrl-L.
 
167
** Now requires Python 2.7.
 
168
 
 
169
Version 1.6.7 (2014-07-17)
 
170
* Client
 
171
** Bug fix: Now compatible with GPGME 1.5.0.
 
172
** Bug fix: Fixed minor memory leaks.
 
173
* Server
 
174
** "mandos-monitor" now has verbose logging, toggleable with "v".
 
175
 
 
176
Version 1.6.6 (2014-07-13)
 
177
* Client
 
178
** If client host has an SSH server, "mandos-keygen --password" now
 
179
   outputs "checker" option which uses "ssh-keyscan"; this is more
 
180
   secure than the default "fping" checker.
 
181
** Bug fix: allow "." in network hook names, to match documentation.
 
182
** Better error messages.
 
183
* Server
 
184
** New --no-zeroconf option.
 
185
** Bug fix: Fix --servicename option, broken since 1.6.4.
 
186
** Bug fix: Fix --socket option work for --socket=0.
 
187
 
 
188
Version 1.6.5 (2014-05-11)
 
189
* Client
 
190
** Work around bug in GnuPG <http://bugs.g10code.com/gnupg/issue1622>
 
191
** Give better error messages when run without sufficient privileges
 
192
** Only warn if workaround for Debian bug #633582 was necessary and
 
193
   failed, not if it failed and was unnecessary.
 
194
 
 
195
Version 1.6.4 (2014-02-16)
 
196
* Server
 
197
** Very minor fix to self-test code.
 
198
 
 
199
Version 1.6.3 (2014-01-21)
 
200
* Server
 
201
** Add systemd support.
 
202
** For PID file, fall back to /var/run if /run does not exist.
 
203
* Client
 
204
** Moved files from /usr/lib/mandos to whatever the architecture
 
205
   specifies, like /usr/lib/x86_64-linux-gnu/mandos or
 
206
   /usr/lib64/mandos.
 
207
 
 
208
Version 1.6.2 (2013-10-24)
 
209
* Server
 
210
** PID file moved from /var/run to /run.
 
211
** Bug fix: Handle long secrets when saving client state.
 
212
** Bug fix: Use more magic in the GnuTLS priority string to handle
 
213
   both old DSA/ELG 2048-bit keys and new RSA/RSA 4096-bit keys.
 
214
* Client
 
215
** mandos-keygen: Bug fix: now generate RSA keys which GnuTLS can use.
 
216
                  Bug fix: Output passphrase prompts even when
 
217
                  redirecting standard output.
 
218
 
 
219
Version 1.6.1 (2013-10-13)
 
220
* Server
 
221
** All client options for time intervals now also take an RFC 3339
 
222
   duration.  The same for all options to mandos-ctl.
 
223
** Bug fix: Handle fast checkers (like ":") correctly.
 
224
** Bug fix: Don't print output from checkers when running in
 
225
   foreground.
 
226
** Bug fix: Do not fail when client is removed from clients.conf but
 
227
   saved settings remain.
 
228
** Bug fix: mandos-monitor now displays standout (reverse video) again
 
229
   using new version of Urwid.
 
230
** Bug fix: Make boolean options work from the config file again.
 
231
** Bug fix: Make --no-ipv6 work again.
 
232
** New default priority string to be slightly more compatible with
 
233
   older versions of GnuTLS.
 
234
* Client
 
235
** Bug fix: Fix bashism in mandos-keygen.
 
236
** Default key and subkey types are now RSA and RSA, respectively.
 
237
   Also, new default key size is 4096 bits.
 
238
 
 
239
Version 1.6.0 (2012-06-18)
 
240
* Server
 
241
** Takes new --foreground option
 
242
** Init script supports new "status" action.
 
243
* Client
 
244
** Now uses all interfaces by default; the --interface option can
 
245
   still be used to restrict it, and the argument to --interface (as
 
246
   well as the $DEVICE environment variable for the network hooks) is
 
247
   now a comma-separated list of interfaces to use.
 
248
 
 
249
Version 1.5.5 (2012-06-01)
 
250
* Server
 
251
** Server takes new --socket option
 
252
 
 
253
Version 1.5.4 (2012-05-20)
 
254
* Server
 
255
** Bug fix: Regression fix: Make non-zero approval timeout values work.
 
256
** Bug fix: Regression fix: Allow changing the Timeout D-Bus property.
 
257
** Fall back to not bind to an interface if an invalid interface name
 
258
   is given.
 
259
** Removed support for undocumented feature of using plain "%%s" in
 
260
   "checker" client option.
 
261
** Old D-Bus interface are now marked as deprecated.
 
262
** mandos-monitor: Bug fix: show approval timers correctly.
 
263
** mandos-ctl: Show "Extended Timeout" correctly, not as milliseconds.
 
264
 
 
265
Version 1.5.3 (2012-01-15)
 
266
* Server
 
267
** Add D-Bus property se.recompile.Client.LastCheckerStatus and use it
 
268
   in mandos-monitor.
 
269
* Client
 
270
** Fix bugs in the example "bridge" network hook.
 
271
 
 
272
Version 1.5.2 (2012-01-08)
 
273
* Server
 
274
** Removed D-Bus signal se.recompile.Mandos.NewRequest() added in
 
275
   1.5.0.  It was buggy and was of questionable utility.
 
276
 
4
277
Version 1.5.1 (2012-01-01)
5
278
* Server
6
279
** Include intro(8mandos) manual page, missing since migration from