6d5b70cdfea46278a73b6e83079c3abc8fd657cb
[strongswan.git] / NEWS
1 strongswan-4.6.0
2 ----------------
3
4 - The tnc-ifmap plugin implements a TNC IF-MAP 2.0 client that which
5   can deliver metadata about IKE_SAs via a SOAP interface to a
6   MAP server. The tnc-ifmap plugin requires the Apache Axis2/C library.
7
8
9 strongswan-4.6.0
10 ----------------
11
12 - The new libstrongswan certexpire plugin collects expiration information of
13   all used certificates and exports them to CSV files. It either directly
14   exports them or uses cron style scheduling for batch exports.
15
16 - starter passes unresolved hostnames to charon, allowing it to do name
17   resolution not before the connection attempt. This is especially useful with
18   connections between hosts using dynamic IP addresses. Thanks to Mirko Parthey
19   for the initial patch.
20
21 - The libstrongswan plugin system now supports detailed plugin dependencies.
22   Many plugins have been extended to export its capabilities and requirements.
23   This allows the plugin loader to resolve plugin loading order automatically,
24   and in future releases, to dynamically load the required features on demand.
25   Existing third party plugins are source (but not binary) compatible if they
26   properly initialize the new get_features() plugin function to NULL.
27
28
29 strongswan-4.5.3
30 ----------------
31
32 - Our private libraries (e.g. libstrongswan) are not installed directly in
33   prefix/lib anymore.  Instead a subdirectory is used (prefix/lib/ipsec/ by
34   default).  The plugins directory is also moved from libexec/ipsec/ to that
35   directory.
36
37 - The dynamic IMC/IMV libraries were moved from the plugins directory to
38   a new imcvs directory in the prefix/lib/ipsec/ subdirectory.
39
40 - Job priorities were introduced to prevent thread starvation caused by too
41   many threads handling blocking operations (such as CRL fetching).  Refer to
42   strongswan.conf(5) for details.
43
44 - Two new strongswan.conf options allow to fine-tune performance on IKEv2
45   gateways by dropping IKE_SA_INIT requests on high load.
46
47 - IKEv2 charon daemon supports start PASS and DROP shunt policies
48   preventing traffic to go through IPsec connections. Installation of the
49   shunt policies either via the XFRM netfilter or PFKEYv2 IPsec kernel
50   interfaces.
51
52 - The history of policies installed in the kernel is now tracked so that e.g.
53   trap policies are correctly updated when reauthenticated SAs are terminated.
54
55 - IMC/IMV Scanner pair implementing the RFC 5792 PA-TNC (IF-M) protocol.
56   Using "netstat -l" the IMC scans open listening ports on the TNC client
57   and sends a port list to the IMV which based on a port policy decides if
58   the client is admitted to the network.
59   (--enable-imc-scanner/--enable-imv-scanner).
60
61 - IMC/IMV Test pair implementing the RFC 5792 PA-TNC (IF-M) protocol.
62   (--enable-imc-test/--enable-imv-test).
63
64 - The IKEv2 close action does not use the same value as the ipsec.conf dpdaction
65   setting, but the value defined by its own closeaction keyword. The action
66   is triggered if the remote peer closes a CHILD_SA unexpectedly.
67
68
69 strongswan-4.5.2
70 ----------------
71
72 - The whitelist plugin for the IKEv2 daemon maintains an in-memory identity
73   whitelist. Any connection attempt of peers not whitelisted will get rejected.
74   The 'ipsec whitelist' utility provides a simple command line frontend for
75   whitelist administration.
76
77 - The duplicheck plugin provides a specialized form of duplicate checking,
78   doing a liveness check on the old SA and optionally notify a third party
79   application about detected duplicates.
80
81 - The coupling plugin permanently couples two or more devices by limiting
82   authentication to previously used certificates.
83
84 - In the case that the peer config and child config don't have the same name
85   (usually in SQL database defined connections), ipsec up|route <peer config>
86   starts|routes all associated child configs and ipsec up|route <child config>
87   only starts|routes the specific child config.
88
89 - fixed the encoding and parsing of X.509 certificate policy statements (CPS).
90
91 - Duncan Salerno contributed the eap-sim-pcsc plugin implementing a
92   pcsc-lite based SIM card backend.
93
94 - The eap-peap plugin implements the EAP PEAP protocol. Interoperates
95   successfully with a FreeRADIUS server and Windows 7 Agile VPN clients.
96
97 - The IKEv2 daemon charon rereads strongswan.conf on SIGHUP and instructs
98   all plugins to reload. Currently only the eap-radius and the attr plugins
99   support configuration reloading.
100
101 - Added userland support to the IKEv2 daemon for Extended Sequence Numbers
102   support coming with Linux 2.6.39. To enable ESN on a connection, add
103   the 'esn' keyword to the proposal. The default proposal uses 32-bit sequence
104   numbers only ('noesn'), and the same value is used if no ESN mode is
105   specified. To negotiate ESN support with the peer, include both, e.g.
106   esp=aes128-sha1-esn-noesn.
107
108 - In addition to ESN, Linux 2.6.39 gained support for replay windows larger
109   than 32 packets. The new global strongswan.conf option 'charon.replay_window'
110   configures the size of the replay window, in packets.
111
112
113 strongswan-4.5.1
114 ----------------
115
116 - Sansar Choinyambuu implemented the RFC 5793 Posture Broker Protocol (BP)
117   compatible with Trusted Network Connect (TNC). The TNCCS 2.0 protocol
118   requires the tnccs_20, tnc_imc and tnc_imv plugins but does not depend
119   on the libtnc library. Any available IMV/IMC pairs conforming to the
120   Trusted Computing Group's TNC-IF-IMV/IMC 1.2 interface specification
121   can be loaded via /etc/tnc_config.
122
123 - Re-implemented the TNCCS 1.1 protocol by using the tnc_imc and tnc_imv
124   in place of the external libtnc library.
125
126 - The tnccs_dynamic plugin loaded on a TNC server in addition to the
127   tnccs_11 and tnccs_20 plugins, dynamically detects the IF-TNCCS
128   protocol version used by a TNC client and invokes an instance of
129   the corresponding protocol stack.
130
131 - IKE and ESP proposals can now be stored in an SQL database using a
132   new proposals table. The start_action field in the child_configs
133   tables allows the automatic starting or routing of connections stored
134   in an SQL database.
135
136 - The new certificate_authorities and certificate_distribution_points
137   tables make it possible to store CRL and OCSP Certificate Distribution
138   points in an SQL database.
139
140 - The new 'include' statement allows to recursively include other files in
141   strongswan.conf.  Existing sections and values are thereby extended and
142   replaced, respectively.
143
144 - Due to the changes in the parser for strongswan.conf, the configuration
145   syntax for the attr plugin has changed.  Previously, it was possible to
146   specify multiple values of a specific attribute type by adding multiple
147   key/value pairs with the same key (e.g. dns) to the plugins.attr section.
148   Because values with the same key now replace previously defined values
149   this is not possible anymore.  As an alternative, multiple values can be
150   specified by separating them with a comma (e.g. dns = 1.2.3.4, 2.3.4.5).
151
152 - ipsec listalgs now appends (set in square brackets) to each crypto
153   algorithm listed the plugin that registered the function.
154
155 - Traffic Flow Confidentiality padding supported with Linux 2.6.38 can be used
156   by the IKEv2 daemon. The ipsec.conf 'tfc' keyword pads all packets to a given
157   boundary, the special value '%mtu' pads all packets to the path MTU.
158
159 - The new af-alg plugin can use various crypto primitives of the Linux Crypto
160   API using the AF_ALG interface introduced with 2.6.38. This removes the need
161   for additional userland implementations of symmetric cipher, hash, hmac and
162   xcbc algorithms.
163
164 - The IKEv2 daemon supports the INITIAL_CONTACT notify as initiator and
165   responder. The notify is sent when initiating configurations with a unique
166   policy, set in ipsec.conf via the global 'uniqueids' option.
167
168 - The conftest conformance testing framework enables the IKEv2 stack to perform
169   many tests using a distinct tool and configuration frontend. Various hooks
170   can alter reserved bits, flags, add custom notifies and proposals, reorder
171   or drop messages and much more. It is enabled using the --enable-conftest
172   ./configure switch.
173
174 - The new libstrongswan constraints plugin provides advanced X.509 constraint
175   checking. In additon to X.509 pathLen constraints, the plugin checks for
176   nameConstraints and certificatePolicies, including policyMappings and
177   policyConstraints. The x509 certificate plugin and the pki tool have been
178   enhanced to support these extensions. The new left/rightcertpolicy ipsec.conf
179   connection keywords take OIDs a peer certificate must have.
180
181 - The left/rightauth ipsec.conf keywords accept values with a minimum strength
182   for trustchain public keys in bits, such as rsa-2048 or ecdsa-256.
183
184 - The revocation and x509 libstrongswan plugins and the pki tool gained basic
185   support for delta CRLs.
186
187
188 strongswan-4.5.0
189 ----------------
190
191 - IMPORTANT: the default keyexchange mode 'ike' is changing with release 4.5
192   from 'ikev1' to 'ikev2', thus commemorating the five year anniversary of the
193   IKEv2 RFC 4306 and its mature successor RFC 5996. The time has definitively
194   come for IKEv1 to go into retirement and to cede its place to the much more
195   robust, powerful and versatile IKEv2 protocol!
196
197 - Added new ctr, ccm and gcm plugins providing Counter, Counter with CBC-MAC
198   and Galois/Counter Modes based on existing CBC implementations. These
199   new plugins bring support for AES and Camellia Counter and CCM algorithms
200   and the AES GCM algorithms for use in IKEv2.
201
202 - The new pkcs11 plugin brings full Smartcard support to the IKEv2 daemon and
203   the pki utility using one or more PKCS#11 libraries. It currently supports
204   RSA private and public key operations and loads X.509 certificates from
205   tokens.
206
207 - Implemented a general purpose TLS stack based on crypto and credential
208   primitives of libstrongswan. libtls supports TLS versions 1.0, 1.1 and 1.2,
209   ECDHE-ECDSA/RSA, DHE-RSA and RSA key exchange algorithms and RSA/ECDSA based
210   client authentication.
211
212 - Based on libtls, the eap-tls plugin brings certificate based EAP
213   authentication for client and server. It is compatible to Windows 7 IKEv2
214   Smartcard authentication and the OpenSSL based FreeRADIUS EAP-TLS backend.
215
216 - Implemented the TNCCS 1.1 Trusted Network Connect protocol using the
217   libtnc library on the strongSwan client and server side via the tnccs_11
218   plugin and optionally connecting to a TNC@FHH-enhanced FreeRADIUS AAA server.
219   Depending on the resulting TNC Recommendation, strongSwan clients are granted
220   access to a network behind a strongSwan gateway (allow), are put into a
221   remediation zone (isolate) or are blocked (none), respectively. Any number
222   of Integrity Measurement Collector/Verifier pairs can be attached
223   via the tnc-imc and tnc-imv charon plugins.
224
225 - The IKEv1 daemon pluto now uses the same kernel interfaces as the IKEv2
226   daemon charon. As a result of this, pluto now supports xfrm marks which
227   were introduced in charon with 4.4.1.
228
229 - Applets for Maemo 5 (Nokia) allow to easily configure and control IKEv2
230   based VPN connections with EAP authentication on supported devices.
231
232 - The RADIUS plugin eap-radius now supports multiple RADIUS servers for
233   redundant setups. Servers are selected by a defined priority, server load and
234   availability.
235
236 - The simple led plugin controls hardware LEDs through the Linux LED subsystem.
237   It currently shows activity of the IKE daemon and is a good example how to
238   implement a simple event listener.
239
240 - Improved MOBIKE behavior in several corner cases, for instance, if the
241   initial responder moves to a different address.
242
243 - Fixed left-/rightnexthop option, which was broken since 4.4.0.
244
245 - Fixed a bug not releasing a virtual IP address to a pool if the XAUTH
246   identity was different from the IKE identity.
247
248 - Fixed the alignment of ModeConfig messages on 4-byte boundaries in the
249   case where the attributes are not a multiple of 4 bytes (e.g. Cisco's
250   UNITY_BANNER).
251
252 - Fixed the interoperability of the socket_raw and socket_default
253   charon plugins.
254
255 - Added man page for strongswan.conf
256
257
258 strongswan-4.4.1
259 ----------------
260
261 - Support of xfrm marks in IPsec SAs and IPsec policies introduced
262   with the Linux 2.6.34 kernel. For details see the example scenarios
263   ikev2/nat-two-rw-mark, ikev2/rw-nat-mark-in-out and ikev2/net2net-psk-dscp.
264
265 - The PLUTO_MARK_IN and PLUTO_ESP_ENC environment variables can be used
266   in a user-specific updown script to set marks on inbound ESP or
267   ESP_IN_UDP packets.
268
269 - The openssl plugin now supports X.509 certificate and CRL functions.
270
271 - OCSP/CRL checking in IKEv2 has been moved to the revocation plugin, enabled
272   by default. Plase update manual load directives in strongswan.conf.
273
274 - RFC3779 ipAddrBlock constraint checking has been moved to the addrblock
275   plugin, disabled by default. Enable it and update manual load directives
276   in strongswan.conf, if required.
277
278 - The pki utility supports CRL generation using the --signcrl command.
279
280 - The ipsec pki --self, --issue and --req commands now support output in
281   PEM format using the --outform pem option.
282
283 - The major refactoring of the IKEv1 Mode Config functionality now allows
284   the transport and handling of any Mode Config attribute.
285
286 - The RADIUS proxy plugin eap-radius now supports multiple servers. Configured
287   servers are chosen randomly, with the option to prefer a specific server.
288   Non-responding servers are degraded by the selection process.
289
290 - The ipsec pool tool manages arbitrary configuration attributes stored
291   in an SQL database. ipsec pool --help gives the details.
292
293 - The new eap-simaka-sql plugin acts as a backend for EAP-SIM and EAP-AKA,
294   reading triplets/quintuplets from an SQL database.
295
296 - The High Availability plugin now supports a HA enabled in-memory address
297   pool and Node reintegration without IKE_SA rekeying. The latter allows
298   clients without IKE_SA rekeying support to keep connected during
299   reintegration. Additionally, many other issues have been fixed in the ha
300   plugin.
301
302 - Fixed a potential remote code execution vulnerability resulting from
303   the misuse of snprintf(). The vulnerability is exploitable by
304   unauthenticated users.
305
306
307 strongswan-4.4.0
308 ----------------
309
310 - The IKEv2 High Availability plugin has been integrated. It provides
311   load sharing and failover capabilities in a cluster of currently two nodes,
312   based on an extend ClusterIP kernel module. More information is available at
313   http://wiki.strongswan.org/projects/strongswan/wiki/HighAvailability.
314   The development of the High Availability functionality was sponsored by
315   secunet Security Networks AG.
316
317 - Added IKEv1 and IKEv2 configuration support for the AES-GMAC
318   authentication-only ESP cipher. Our aes_gmac kernel patch or a Linux
319   2.6.34 kernel is required to make AES-GMAC available via the XFRM
320   kernel interface.
321
322 - Added support for Diffie-Hellman groups 22, 23 and 24 to the gmp, gcrypt
323   and openssl plugins, usable by both pluto and charon. The new proposal
324   keywords are modp1024s160, modp2048s224 and modp2048s256. Thanks to Joy Latten
325   from IBM for his contribution.
326
327 - The IKEv1 pluto daemon supports RAM-based virtual IP pools using
328   the rightsourceip directive with a subnet from which addresses
329   are allocated.
330
331 - The ipsec pki --gen and --pub commands now allow the output of
332   private and public keys in PEM format using the --outform pem
333   command line option.
334
335 - The new DHCP plugin queries virtual IP addresses for clients from a DHCP
336   server using broadcasts, or a defined server using the
337   charon.plugins.dhcp.server strongswan.conf option. DNS/WINS server information
338   is additionally served to clients if the DHCP server provides such
339   information. The plugin is used in ipsec.conf configurations having
340   rightsourceip set to %dhcp.
341
342 - A new plugin called farp fakes ARP responses for virtual IP addresses
343   handed out to clients from the IKEv2 daemon charon. The plugin lets a
344   road-warrior act as a client on the local LAN if it uses a virtual IP
345   from the responders subnet, e.g. acquired using the DHCP plugin.
346
347 - The existing IKEv2 socket implementations have been migrated to the
348   socket-default and the socket-raw plugins. The new socket-dynamic plugin
349   binds sockets dynamically to ports configured via the left-/rightikeport
350   ipsec.conf connection parameters.
351
352 - The android charon plugin stores received DNS server information as "net.dns"
353   system properties, as used by the Android platform.
354
355
356 strongswan-4.3.6
357 ----------------
358
359 - The IKEv2 daemon supports RFC 3779 IP address block constraints
360   carried as a critical X.509v3 extension in the peer certificate.
361
362 - The ipsec pool --add|del dns|nbns command manages DNS and NBNS name
363   server entries that are sent via the IKEv1 Mode Config or IKEv2
364   Configuration Payload to remote clients.
365
366 - The Camellia cipher can be used as an IKEv1 encryption algorithm.
367
368 - The IKEv1 and IKEV2 daemons now check certificate path length constraints.
369
370 - The new ipsec.conf conn option "inactivity" closes a CHILD_SA if no traffic
371   was sent or received within the given interval. To close the complete IKE_SA
372   if its only CHILD_SA was inactive, set the global strongswan.conf option
373   "charon.inactivity_close_ike" to yes.
374
375 - More detailed IKEv2 EAP payload information in debug output
376
377 - IKEv2 EAP-SIM and EAP-AKA share joint libsimaka library
378
379 - Added required userland changes for proper SHA256 and SHA384/512 in ESP that
380   will be introduced with Linux 2.6.33. The "sha256"/"sha2_256" keyword now
381   configures the kernel with 128 bit truncation, not the non-standard 96
382   bit truncation used by previous releases. To use the old 96 bit truncation
383   scheme, the new "sha256_96" proposal keyword has been introduced.
384
385 - Fixed IPComp in tunnel mode, stripping out the duplicated outer header. This
386   change makes IPcomp tunnel mode connections incompatible with previous
387   releases; disable compression on such tunnels.
388
389 - Fixed BEET mode connections on recent kernels by installing SAs with
390   appropriate traffic selectors, based on a patch by Michael Rossberg.
391
392 - Using extensions (such as BEET mode) and crypto algorithms (such as twofish,
393   serpent, sha256_96) allocated in the private use space now require that we
394   know its meaning, i.e. we are talking to strongSwan. Use the new
395   "charon.send_vendor_id" option in strongswan.conf to let the remote peer know
396   this is the case.
397
398 - Experimental support for draft-eronen-ipsec-ikev2-eap-auth, where the
399   responder omits public key authentication in favor of a mutual authentication
400   method. To enable EAP-only authentication, set rightauth=eap on the responder
401   to rely only on the MSK constructed AUTH payload. This not-yet standardized
402   extension requires the strongSwan vendor ID introduced above.
403
404 - The IKEv1 daemon ignores the Juniper SRX notification type 40001, thus
405   allowing interoperability.
406
407
408 strongswan-4.3.5
409 ----------------
410
411 - The IKEv1 pluto daemon can now use SQL-based address pools to deal out
412   virtual IP addresses as a Mode Config server. The pool capability has been
413   migrated from charon's sql plugin to a new attr-sql plugin which is loaded
414   by libstrongswan and which can be used by both daemons either with a SQLite
415   or MySQL database and the corresponding plugin.
416
417 - Plugin names have been streamlined: EAP plugins now have a dash after eap
418   (e.g. eap-sim), as it is used with the --enable-eap-sim ./configure option.
419   Plugin configuration sections in strongswan.conf now use the same name as the
420   plugin itself (i.e. with a dash). Make sure to update "load" directives and
421   the affected plugin sections in existing strongswan.conf files.
422
423 - The private/public key parsing and encoding has been split up into
424   separate pkcs1, pgp, pem and dnskey plugins. The public key implementation
425   plugins gmp, gcrypt and openssl can all make use of them.
426
427 - The EAP-AKA plugin can use different backends for USIM/quintuplet
428   calculations, very similar to the EAP-SIM plugin. The existing 3GPP2 software
429   implementation has been migrated to a separate plugin.
430
431 - The IKEv2 daemon charon gained basic PGP support. It can use locally installed
432   peer certificates and can issue signatures based on RSA private keys.
433
434 - The new 'ipsec pki' tool provides a set of commands to maintain a public
435   key infrastructure. It currently supports operations to create RSA and ECDSA
436   private/public keys, calculate fingerprints and issue or verify certificates.
437
438 - Charon uses a monotonic time source for statistics and job queueing, behaving
439   correctly if the system time changes (e.g. when using NTP).
440
441 - In addition to time based rekeying, charon supports IPsec SA lifetimes based
442   on processed volume or number of packets. They new ipsec.conf paramaters
443   'lifetime' (an alias to 'keylife'), 'lifebytes' and 'lifepackets' handle
444   SA timeouts, while the parameters 'margintime' (an alias to rekeymargin),
445   'marginbytes' and 'marginpackets' trigger the rekeying before a SA expires.
446   The existing parameter 'rekeyfuzz' affects all margins.
447
448 - If no CA/Gateway certificate is specified in the NetworkManager plugin,
449   charon uses a set of trusted root certificates preinstalled by distributions.
450   The directory containing CA certificates can be specified using the
451   --with-nm-ca-dir=path configure option.
452
453 - Fixed the encoding of the Email relative distinguished name in left|rightid
454   statements.
455
456 - Fixed the broken parsing of PKCS#7 wrapped certificates by the pluto daemon.
457
458 - Fixed smartcard-based authentication in the pluto daemon which was broken by
459   the ECDSA support introduced with the 4.3.2 release.
460
461 - A patch contributed by Heiko Hund fixes mixed IPv6 in IPv4 and vice versa
462   tunnels established with the IKEv1 pluto daemon.
463
464 - The pluto daemon now uses the libstrongswan x509 plugin for certificates and
465   CRls and the struct id type was replaced by identification_t used by charon
466   and the libstrongswan library.
467
468
469 strongswan-4.3.4
470 ----------------
471
472 - IKEv2 charon daemon ported to FreeBSD and Mac OS X. Installation details can
473   be found on wiki.strongswan.org.
474
475 - ipsec statusall shows the number of bytes transmitted and received over
476   ESP connections configured by the IKEv2 charon daemon.
477
478 - The IKEv2 charon daemon supports include files in ipsec.secrets.
479
480
481 strongswan-4.3.3
482 ----------------
483
484 - The configuration option --enable-integrity-test plus the strongswan.conf
485   option libstrongswan.integrity_test = yes activate integrity tests
486   of the IKE daemons charon and pluto, libstrongswan and all loaded
487   plugins. Thus dynamic library misconfigurations and non-malicious file
488   manipulations can be reliably detected.
489
490 - The new default setting libstrongswan.ecp_x_coordinate_only=yes allows
491   IKEv1 interoperability with MS Windows using the ECP DH groups 19 and 20.
492
493 - The IKEv1 pluto daemon now supports the AES-CCM and AES-GCM ESP
494   authenticated encryption algorithms.
495
496 - The IKEv1 pluto daemon now supports V4 OpenPGP keys.
497
498 - The RDN parser vulnerability discovered by Orange Labs research team
499   was not completely fixed in version 4.3.2. Some more modifications
500   had to be applied to the asn1_length() function to make it robust.
501
502
503 strongswan-4.3.2
504 ----------------
505
506 - The new gcrypt plugin provides symmetric cipher, hasher, RNG, Diffie-Hellman
507   and RSA crypto primitives using the LGPL licensed GNU gcrypt library.
508
509 - libstrongswan features an integrated crypto selftest framework for registered
510   algorithms. The test-vector plugin provides a first set of test vectors and
511   allows pluto and charon to rely on tested crypto algorithms.
512
513 - pluto can now use all libstrongswan plugins with the exception of x509 and xcbc.
514   Thanks to the openssl plugin, the ECP Diffie-Hellman groups 19, 20, 21, 25, and
515   26 as well as ECDSA-256, ECDSA-384, and ECDSA-521 authentication can be used
516   with IKEv1.
517
518 - Applying their fuzzing tool, the Orange Labs vulnerability research team found
519   another two DoS vulnerabilities, one in the rather old ASN.1 parser of Relative
520   Distinguished Names (RDNs) and a second one in the conversion of ASN.1 UTCTIME
521   and GENERALIZEDTIME strings to a time_t value.
522
523
524 strongswan-4.3.1
525 ----------------
526
527 - The nm plugin now passes DNS/NBNS server information to NetworkManager,
528   allowing a gateway administrator to set DNS/NBNS configuration on clients
529   dynamically.
530
531 - The nm plugin also accepts CA certificates for gateway authentication. If
532   a CA certificate is configured, strongSwan uses the entered gateway address
533   as its idenitity, requiring the gateways certificate to contain the same as
534   subjectAltName. This allows a gateway administrator to deploy the same
535   certificates to Windows 7 and NetworkManager clients.
536
537 - The command ipsec purgeike deletes IKEv2 SAs that don't have a CHILD SA.
538   The command ipsec down <conn>{n} deletes CHILD SA instance n of connection
539   <conn> whereas ipsec down <conn>{*} deletes all CHILD SA instances.
540   The command ipsec down <conn>[n] deletes IKE SA instance n of connection
541   <conn> plus dependent CHILD SAs whereas ipsec down <conn>[*] deletes all
542   IKE SA instances of connection <conn>.
543
544 - Fixed a regression introduced in 4.3.0 where EAP authentication calculated
545   the AUTH payload incorrectly. Further, the EAP-MSCHAPv2 MSK key derivation
546   has been updated to be compatible with the Windows 7 Release Candidate.
547
548 - Refactored installation of triggering policies. Routed policies are handled
549   outside of IKE_SAs to keep them installed in any case. A tunnel gets
550   established only once, even if initiation is delayed due network outages.
551
552 - Improved the handling of multiple acquire signals triggered by the kernel.
553
554 - Fixed two DoS vulnerabilities in the charon daemon that were discovered by
555   fuzzing techniques: 1) Sending a malformed IKE_SA_INIT request leaved an
556   incomplete state which caused a null pointer dereference if a subsequent
557   CREATE_CHILD_SA request was sent. 2) Sending an IKE_AUTH request with either
558   a missing TSi or TSr payload caused a null pointer derefence because the
559   checks for TSi and TSr were interchanged. The IKEv2 fuzzer used was
560   developed by the Orange Labs vulnerability research team. The tool was
561   initially written by Gabriel Campana and is now maintained by Laurent Butti.
562
563 - Added support for AES counter mode in ESP in IKEv2 using the proposal
564   keywords aes128ctr, aes192ctr and aes256ctr.
565
566 - Further progress in refactoring pluto: Use of the curl and ldap plugins
567   for fetching crls and OCSP. Use of the random plugin to get keying material
568   from /dev/random or /dev/urandom. Use of the openssl plugin as an alternative
569   to the aes, des, sha1, sha2, and md5 plugins. The blowfish, twofish, and
570   serpent encryption plugins are now optional and are not enabled by default.
571
572
573 strongswan-4.3.0
574 ----------------
575
576 - Support for the IKEv2 Multiple Authentication Exchanges extension (RFC4739).
577   Initiators and responders can use several authentication rounds (e.g. RSA
578   followed by EAP) to authenticate. The new ipsec.conf leftauth/rightauth and
579   leftauth2/rightauth2 parameters define own authentication rounds or setup
580   constraints for the remote peer. See the ipsec.conf man page for more detials.
581
582 - If glibc printf hooks (register_printf_function) are not available,
583   strongSwan can use the vstr string library to run on non-glibc systems.
584
585 - The IKEv2 charon daemon can now configure the ESP CAMELLIA-CBC cipher
586   (esp=camellia128|192|256).
587
588 - Refactored the pluto and scepclient code to use basic functions (memory
589   allocation, leak detective, chunk handling, printf_hooks, strongswan.conf
590   attributes, ASN.1 parser, etc.) from the libstrongswan library.
591
592 - Up to two DNS and WINS servers to be sent via IKEv1 ModeConfig can be
593   configured in the pluto section of strongswan.conf.
594
595
596 strongswan-4.2.14
597 -----------------
598
599 - The new server-side EAP RADIUS plugin (--enable-eap-radius)
600   relays EAP messages to and from a RADIUS server. Successfully
601   tested with with a freeradius server using EAP-MD5 and EAP-SIM.
602
603 - A vulnerability in the Dead Peer Detection (RFC 3706) code was found by
604   Gerd v. Egidy <gerd.von.egidy@intra2net.com> of Intra2net AG affecting
605   all Openswan and strongSwan releases. A malicious (or expired ISAKMP)
606   R_U_THERE or R_U_THERE_ACK Dead Peer Detection packet can cause the
607   pluto IKE daemon to crash and restart. No authentication or encryption
608   is required to trigger this bug. One spoofed UDP packet can cause the
609   pluto IKE daemon to restart and be unresponsive for a few seconds while
610   restarting. This DPD null state vulnerability has been officially
611   registered as CVE-2009-0790 and is fixed by this release.
612
613 - ASN.1 to time_t conversion caused a time wrap-around for
614   dates after Jan 18 03:14:07 UTC 2038 on 32-bit platforms.
615   As a workaround such dates are set to the maximum representable
616   time, i.e. Jan 19 03:14:07 UTC 2038.
617
618 - Distinguished Names containing wildcards (*) are not sent in the
619   IDr payload anymore.
620
621
622 strongswan-4.2.13
623 -----------------
624
625 - Fixed a use-after-free bug in the DPD timeout section of the
626   IKEv1 pluto daemon which sporadically caused a segfault.
627
628 - Fixed a crash in the IKEv2 charon daemon occurring with
629   mixed RAM-based and SQL-based virtual IP address pools.
630
631 - Fixed ASN.1 parsing of algorithmIdentifier objects where the
632   parameters field is optional.
633
634 - Ported nm plugin to NetworkManager 7.1.
635
636
637 strongswan-4.2.12
638 -----------------
639
640 - Support of the EAP-MSCHAPv2 protocol enabled by the option
641   --enable-eap-mschapv2. Requires the MD4 hash algorithm enabled
642   either by --enable-md4 or --enable-openssl.
643
644 - Assignment of up to two DNS and up to two WINS servers to peers via
645   the IKEv2 Configuration Payload (CP). The IPv4 or IPv6 nameserver
646   addresses are defined in strongswan.conf.
647
648 - The strongSwan applet for the Gnome NetworkManager is now built and
649   distributed as a separate tarball under the name NetworkManager-strongswan.
650
651
652 strongswan-4.2.11
653 -----------------
654
655 - Fixed ESP NULL encryption broken by the refactoring of keymat.c.
656   Also introduced proper initialization and disposal of keying material.
657
658 - Fixed the missing listing of connection definitions in ipsec statusall
659   broken by an unfortunate local variable overload.
660
661
662 strongswan-4.2.10
663 -----------------
664
665 - Several performance improvements to handle thousands of tunnels with almost
666   linear upscaling. All relevant data structures have been replaced by faster
667   counterparts with better lookup times.
668
669 - Better parallelization to run charon on multiple cores. Due to improved
670   ressource locking and other optimizations the daemon can take full
671   advantage of 16 or even more cores.
672
673 - The load-tester plugin can use a NULL Diffie-Hellman group and simulate
674   unique identities and certificates by signing peer certificates using a CA
675   on the fly.
676
677 - The redesigned stroke in-memory IP pool handles leases. The "ipsec leases"
678   command queries assigned leases.
679
680 - Added support for smartcards in charon by using the ENGINE API provided by
681   OpenSSL, based on patches by Michael Ro├čberg.
682
683 - The Padlock plugin supports the hardware RNG found on VIA CPUs to provide a
684   reliable source of randomness.
685
686 strongswan-4.2.9
687 ----------------
688
689 - Flexible configuration of logging subsystem allowing to log to multiple
690   syslog facilities or to files using fine-grained log levels for each target.
691
692 - Load testing plugin to do stress testing of the IKEv2 daemon against self
693   or another host. Found and fixed issues during tests in the multi-threaded
694   use of the OpenSSL plugin.
695
696 - Added profiling code to synchronization primitives to find bottlenecks if
697   running on multiple cores. Found and fixed an issue where parts of the
698   Diffie-Hellman calculation acquired an exclusive lock. This greatly improves
699   parallelization to multiple cores.
700
701 - updown script invocation has been separated into a plugin of its own to
702   further slim down the daemon core.
703
704 - Separated IKE_SA/CHILD_SA key derivation process into a closed system,
705   allowing future implementations to use a secured environment in e.g. kernel
706   memory or hardware.
707
708 - The kernel interface of charon has been modularized. XFRM NETLINK (default)
709   and PFKEY (--enable-kernel-pfkey) interface plugins for the native IPsec
710   stack of the Linux 2.6 kernel as well as a PFKEY interface for the KLIPS
711   IPsec stack (--enable-kernel-klips) are provided.
712
713 - Basic Mobile IPv6 support has been introduced, securing Binding Update
714   messages as well as tunneled traffic between Mobile Node and Home Agent.
715   The installpolicy=no option allows peaceful cooperation with a dominant
716   mip6d daemon and the new type=transport_proxy implements the special MIPv6
717   IPsec transport proxy mode where the IKEv2 daemon uses the Care-of-Address
718   but the IPsec SA is set up for the Home Address.
719
720 - Implemented migration of Mobile IPv6 connections using the KMADDRESS
721   field contained in XFRM_MSG_MIGRATE messages sent by the mip6d daemon
722   via the Linux 2.6.28 (or appropriately patched) kernel.
723
724
725 strongswan-4.2.8
726 ----------------
727
728 - IKEv2 charon daemon supports authentication based on raw public keys
729   stored in the SQL database backend. The ipsec listpubkeys command
730   lists the available raw public keys via the stroke interface.
731
732 - Several MOBIKE improvements: Detect changes in NAT mappings in DPD exchanges,
733   handle events if kernel detects NAT mapping changes in UDP-encapsulated
734   ESP packets (requires kernel patch), reuse old addesses in MOBIKE updates as
735   long as possible and other fixes.
736
737 - Fixed a bug in addr_in_subnet() which caused insertion of wrong source
738   routes for destination subnets having netwmasks not being a multiple of 8 bits.
739   Thanks go to Wolfgang Steudel, TU Ilmenau for reporting this bug.
740
741
742 strongswan-4.2.7
743 ----------------
744
745 - Fixed a Denial-of-Service vulnerability where an IKE_SA_INIT message with
746   a KE payload containing zeroes only can cause a crash of the IKEv2 charon
747   daemon due to a NULL pointer returned by the mpz_export() function of the
748   GNU Multiprecision Library (GMP). Thanks go to Mu Dynamics Research Labs
749   for making us aware of this problem.
750
751 - The new agent plugin provides a private key implementation on top of an
752   ssh-agent.
753
754 - The NetworkManager plugin has been extended to support certificate client
755   authentication using RSA keys loaded from a file or using ssh-agent.
756
757 - Daemon capability dropping has been ported to libcap and must be enabled
758   explicitly --with-capabilities=libcap. Future version will support the
759   newer libcap2 library.
760
761 - ipsec listalgs lists the IKEv2 cryptografic algorithms registered with the
762   charon keying daemon.
763
764
765 strongswan-4.2.6
766 ----------------
767
768 - A NetworkManager plugin allows GUI-based configuration of road-warrior
769   clients in a simple way. It features X509 based gateway authentication
770   and EAP client authentication, tunnel setup/teardown and storing passwords
771   in the Gnome Keyring.
772
773 - A new EAP-GTC plugin implements draft-sheffer-ikev2-gtc-00.txt and allows
774   username/password authentication against any PAM service on the gateway.
775   The new EAP method interacts nicely with the NetworkManager plugin and allows
776   client authentication against e.g. LDAP.
777
778 - Improved support for the EAP-Identity method. The new ipsec.conf eap_identity
779   parameter defines an additional identity to pass to the server in EAP
780   authentication.
781
782 - The "ipsec statusall" command now lists CA restrictions, EAP
783   authentication types and EAP identities.
784
785 - Fixed two multithreading deadlocks occurring when starting up
786   several hundred tunnels concurrently.
787
788 - Fixed the --enable-integrity-test configure option which
789   computes a SHA-1 checksum over the libstrongswan library.
790
791
792 strongswan-4.2.5
793 ----------------
794
795 - Consistent logging of IKE and CHILD SAs at the audit (AUD) level.
796
797 - Improved the performance of the SQL-based virtual IP address pool
798   by introducing an additional addresses table. The leases table
799   storing only history information has become optional and can be
800   disabled by setting charon.plugins.sql.lease_history = no in
801   strongswan.conf.
802
803 - The XFRM_STATE_AF_UNSPEC flag added to xfrm.h allows IPv4-over-IPv6
804   and IPv6-over-IPv4 tunnels with the 2.6.26 and later Linux kernels.
805
806 - management of different virtual IP pools for different
807   network interfaces have become possible.
808
809 - fixed a bug which prevented the assignment of more than 256
810   virtual IP addresses from a pool managed by an sql database.
811
812 - fixed a bug which did not delete own IPCOMP SAs in the kernel.
813
814
815 strongswan-4.2.4
816 ----------------
817
818 - Added statistics functions to ipsec pool --status and ipsec pool --leases
819   and input validation checks to various ipsec pool commands.
820
821 - ipsec statusall now lists all loaded charon plugins and displays
822   the negotiated IKEv2 cipher suite proposals.
823
824 - The openssl plugin supports the elliptic curve Diffie-Hellman groups
825   19, 20, 21, 25, and 26.
826
827 - The openssl plugin supports ECDSA authentication using elliptic curve
828   X.509 certificates.
829
830 - Fixed a bug in stroke which caused multiple charon threads to close
831   the file descriptors during packet transfers over the stroke socket.
832
833 - ESP sequence numbers are now migrated in IPsec SA updates handled by
834   MOBIKE. Works only with Linux kernels >= 2.6.17.
835
836
837 strongswan-4.2.3
838 ----------------
839
840 - Fixed the strongswan.conf path configuration problem that occurred when
841   --sysconfig was not set explicitly in ./configure.
842
843 - Fixed a number of minor bugs that where discovered during the 4th
844   IKEv2 interoperability workshop in San Antonio, TX.
845
846
847 strongswan-4.2.2
848 ----------------
849
850 - Plugins for libstrongswan and charon can optionally be loaded according
851   to a configuration in strongswan.conf. Most components provide a
852   "load = " option followed by a space separated list of plugins to load.
853   This allows e.g. the fallback from a hardware crypto accelerator to
854   to software-based crypto plugins.
855
856 - Charons SQL plugin has been extended by a virtual IP address pool.
857   Configurations with a rightsourceip=%poolname setting query a SQLite or
858   MySQL database for leases. The "ipsec pool" command helps in administrating
859   the pool database. See ipsec pool --help for the available options
860
861 - The Authenticated Encryption Algorithms AES-CCM-8/12/16 and AES-GCM-8/12/16
862   for ESP are now supported starting with the Linux 2.6.25 kernel. The
863   syntax is e.g. esp=aes128ccm12 or esp=aes256gcm16.
864
865
866 strongswan-4.2.1
867 ----------------
868
869 - Support for "Hash and URL" encoded certificate payloads has been implemented
870   in the IKEv2 daemon charon. Using the "certuribase" option of a CA section
871   allows to assign a base URL to all certificates issued by the specified CA.
872   The final URL is then built by concatenating that base and the hex encoded
873   SHA1 hash of the DER encoded certificate. Note that this feature is disabled
874   by default and must be enabled using the option "charon.hash_and_url".
875
876 - The IKEv2 daemon charon now supports the "uniqueids" option to close multiple
877   IKE_SAs with the same peer. The option value "keep" prefers existing
878   connection setups over new ones, where the value "replace" replaces existing
879   connections.
880
881 - The crypto factory in libstrongswan additionally supports random number
882   generators, plugins may provide other sources of randomness. The default
883   plugin reads raw random data from /dev/(u)random.
884
885 - Extended the credential framework by a caching option to allow plugins
886   persistent caching of fetched credentials. The "cachecrl" option has been
887   re-implemented.
888
889 - The new trustchain verification introduced in 4.2.0 has been parallelized.
890   Threads fetching CRL or OCSP information no longer block other threads.
891
892 - A new IKEv2 configuration attribute framework has been introduced allowing
893   plugins to provide virtual IP addresses, and in the future, other
894   configuration attribute services (e.g. DNS/WINS servers).
895
896 - The stroke plugin has been extended to provide virtual IP addresses from
897   a pool defined in ipsec.conf. The "rightsourceip" parameter now accepts
898   address pools in CIDR notation (e.g. 10.1.1.0/24). The parameter also accepts
899   the value "%poolname", where "poolname" identifies a pool provided by a
900   separate plugin.
901
902 - Fixed compilation on uClibc and a couple of other minor bugs.
903
904 - Set DPD defaults in ipsec starter to dpd_delay=30s and dpd_timeout=150s.
905
906 - The IKEv1 pluto daemon now supports the ESP encryption algorithm CAMELLIA
907   with key lengths of 128, 192, and 256 bits, as well as the authentication
908   algorithm AES_XCBC_MAC. Configuration example: esp=camellia192-aesxcbc.
909
910
911 strongswan-4.2.0
912 ----------------
913
914 - libstrongswan has been modularized to attach crypto algorithms,
915   credential implementations (keys, certificates) and fetchers dynamically
916   through plugins. Existing code has been ported to plugins:
917     - RSA/Diffie-Hellman implementation using the GNU Multi Precision library
918     - X509 certificate system supporting CRLs, OCSP and attribute certificates
919     - Multiple plugins providing crypto algorithms in software
920     - CURL and OpenLDAP fetcher
921
922 - libstrongswan gained a relational database API which uses pluggable database
923   providers. Plugins for MySQL and SQLite are available.
924
925 - The IKEv2 keying daemon charon is more extensible. Generic plugins may provide
926   connection configuration, credentials and EAP methods or control the daemon.
927   Existing code has been ported to plugins:
928     - EAP-AKA, EAP-SIM, EAP-MD5 and EAP-Identity
929     - stroke configuration, credential and control (compatible to pluto)
930     - XML bases management protocol to control and query the daemon
931   The following new plugins are available:
932     - An experimental SQL configuration, credential and logging plugin on
933       top of either MySQL or SQLite
934     - A unit testing plugin to run tests at daemon startup
935
936 - The authentication and credential framework in charon has been heavily
937   refactored to support modular credential providers, proper
938   CERTREQ/CERT payload exchanges and extensible authorization rules.
939
940 - The framework of strongSwan Manager has envolved to the web application
941   framework libfast (FastCGI Application Server w/ Templates) and is usable
942   by other applications.
943
944
945 strongswan-4.1.11
946 -----------------
947
948 - IKE rekeying in NAT situations did not inherit the NAT conditions
949   to the rekeyed IKE_SA so that the UDP encapsulation was lost with
950   the next CHILD_SA rekeying.
951
952 - Wrong type definition of the next_payload variable in id_payload.c
953   caused an INVALID_SYNTAX error on PowerPC platforms.
954
955 - Implemented IKEv2 EAP-SIM server and client test modules that use
956   triplets stored in a file. For details on the configuration see
957   the scenario 'ikev2/rw-eap-sim-rsa'.
958
959
960 strongswan-4.1.10
961 -----------------
962
963 - Fixed error in the ordering of the certinfo_t records in the ocsp cache that
964   caused multiple entries of the same serial number to be created.
965
966 - Implementation of a simple EAP-MD5 module which provides CHAP
967   authentication. This may be interesting in conjunction with certificate
968   based server authentication, as weak passwords can't be brute forced
969   (in contradiction to traditional IKEv2 PSK).
970
971 - A complete software based implementation of EAP-AKA, using algorithms
972   specified in 3GPP2 (S.S0055). This implementation does not use an USIM,
973   but reads the secrets from ipsec.secrets. Make sure to read eap_aka.h
974   before using it.
975
976 - Support for vendor specific EAP methods using Expanded EAP types. The
977   interface to EAP modules has been slightly changed, so make sure to
978   check the changes if you're already rolling your own modules.
979
980
981 strongswan-4.1.9
982 ----------------
983
984 - The default _updown script now dynamically inserts and removes ip6tables
985   firewall rules if leftfirewall=yes is set in IPv6 connections. New IPv6
986   net-net and roadwarrior (PSK/RSA) scenarios for both IKEv1 and IKEV2 were
987   added.
988
989 - Implemented RFC4478 repeated authentication to force EAP/Virtual-IP clients
990   to reestablish an IKE_SA within a given timeframe.
991
992 - strongSwan Manager supports configuration listing, initiation and termination
993   of IKE and CHILD_SAs.
994
995 - Fixes and improvements to multithreading code.
996
997 - IKEv2 plugins have been renamed to libcharon-* to avoid naming conflicts.
998   Make sure to remove the old plugins in $libexecdir/ipsec, otherwise they get
999   loaded twice.
1000
1001
1002 strongswan-4.1.8
1003 ----------------
1004
1005 - Removed recursive pthread mutexes since uClibc doesn't support them.
1006
1007
1008 strongswan-4.1.7
1009 ----------------
1010
1011 - In NAT traversal situations and multiple queued Quick Modes,
1012   those pending connections inserted by auto=start after the
1013   port floating from 500 to 4500 were erronously deleted.
1014
1015 - Added a "forceencaps" connection parameter to enforce UDP encapsulation
1016   to surmount restrictive firewalls. NAT detection payloads are faked to
1017   simulate a NAT situation and trick the other peer into NAT mode (IKEv2 only).
1018
1019 - Preview of strongSwan Manager, a web based configuration and monitoring
1020   application. It uses a new XML control interface to query the IKEv2 daemon
1021   (see http://wiki.strongswan.org/wiki/Manager).
1022
1023 - Experimental SQLite configuration backend which will provide the configuration
1024   interface for strongSwan Manager in future releases.
1025
1026 - Further improvements to MOBIKE support.
1027
1028
1029 strongswan-4.1.6
1030 ----------------
1031
1032 - Since some third party IKEv2 implementations run into
1033   problems with strongSwan announcing MOBIKE capability per
1034   default, MOBIKE can be disabled on a per-connection-basis
1035   using the mobike=no option. Whereas mobike=no disables the
1036   sending of the MOBIKE_SUPPORTED notification and the floating
1037   to UDP port 4500 with the IKE_AUTH request even if no NAT
1038   situation has been detected, strongSwan will still support
1039   MOBIKE acting as a responder.
1040
1041 - the default ipsec routing table plus its corresponding priority
1042   used for inserting source routes has been changed from 100 to 220.
1043   It can be configured using the --with-ipsec-routing-table and
1044   --with-ipsec-routing-table-prio options.
1045
1046 - the --enable-integrity-test configure option tests the
1047   integrity of the libstrongswan crypto code during the charon
1048   startup.
1049
1050 - the --disable-xauth-vid configure option disables the sending
1051   of the XAUTH vendor ID. This can be used as a workaround when
1052   interoperating with some Windows VPN clients that get into
1053   trouble upon reception of an XAUTH VID without eXtended
1054   AUTHentication having been configured.
1055
1056 - ipsec stroke now supports the rereadsecrets, rereadaacerts,
1057   rereadacerts, and listacerts options.
1058
1059
1060 strongswan-4.1.5
1061 ----------------
1062
1063 - If a DNS lookup failure occurs when resolving right=%<FQDN>
1064   or right=<FQDN> combined with rightallowany=yes then the
1065   connection is not updated by ipsec starter thus preventing
1066   the disruption of an active IPsec connection. Only if the DNS
1067   lookup successfully returns with a changed IP address the
1068   corresponding connection definition is updated.
1069
1070 - Routes installed by the keying daemons are now in a separate
1071   routing table with the ID 100 to avoid conflicts with the main
1072   table. Route lookup for IKEv2 traffic is done in userspace to ignore
1073   routes installed for IPsec, as IKE traffic shouldn't get encapsulated.
1074
1075
1076 strongswan-4.1.4
1077 ----------------
1078
1079 - The pluto IKEv1 daemon now exhibits the same behaviour as its
1080   IKEv2 companion charon by inserting an explicit route via the
1081   _updown script only if a sourceip exists. This is admissible
1082   since routing through the IPsec tunnel is handled automatically
1083   by NETKEY's IPsec policies. As a consequence the left|rightnexthop
1084   parameter is not required any more.
1085
1086 - The new IKEv1 parameter right|leftallowany parameters helps to handle
1087   the case where both peers possess dynamic IP addresses that are
1088   usually resolved using DynDNS or a similar service. The configuration
1089
1090     right=peer.foo.bar
1091     rightallowany=yes
1092
1093   can be used by the initiator to start up a connection to a peer
1094   by resolving peer.foo.bar into the currently allocated IP address.
1095   Thanks to the rightallowany flag the connection behaves later on
1096   as
1097
1098    right=%any
1099
1100   so that the peer can rekey the connection as an initiator when his
1101   IP address changes. An alternative notation is
1102
1103     right=%peer.foo.bar
1104
1105   which will implicitly set rightallowany=yes.
1106
1107 - ipsec starter now fails more gracefully in the presence of parsing
1108   errors. Flawed ca and conn section are discarded and pluto is started
1109   if non-fatal errors only were encountered. If right=%peer.foo.bar
1110   cannot be resolved by DNS then right=%any will be used so that passive
1111   connections as a responder are still possible.
1112
1113 - The new pkcs11initargs parameter that can be placed in the
1114   setup config section of /etc/ipsec.conf allows the definition
1115   of an argument string that is used with the PKCS#11 C_Initialize()
1116   function. This non-standard feature is required by the NSS softoken
1117   library. This patch was contributed by Robert Varga.
1118
1119 - Fixed a bug in ipsec starter introduced by strongswan-2.8.5
1120   which caused a segmentation fault in the presence of unknown
1121   or misspelt keywords in ipsec.conf. This bug fix was contributed
1122   by Robert Varga.
1123
1124 - Partial support for MOBIKE in IKEv2. The initiator acts on interface/
1125   address configuration changes and updates IKE and IPsec SAs dynamically.
1126
1127
1128 strongswan-4.1.3
1129 ----------------
1130
1131 - IKEv2 peer configuration selection now can be based on a given
1132   certification authority using the rightca= statement.
1133
1134 - IKEv2 authentication based on RSA signatures now can handle multiple
1135   certificates issued for a given peer ID. This allows a smooth transition
1136   in the case of a peer certificate renewal.
1137
1138 - IKEv2: Support for requesting a specific virtual IP using leftsourceip on the
1139   client and returning requested virtual IPs using rightsourceip=%config
1140   on the server. If the server does not support configuration payloads, the
1141   client enforces its leftsourceip parameter.
1142
1143 - The ./configure options --with-uid/--with-gid allow pluto and charon
1144   to drop their privileges to a minimum and change to an other UID/GID. This
1145   improves the systems security, as a possible intruder may only get the
1146   CAP_NET_ADMIN capability.
1147
1148 - Further modularization of charon: Pluggable control interface and
1149   configuration backend modules provide extensibility. The control interface
1150   for stroke is included, and further interfaces using DBUS (NetworkManager)
1151   or XML are on the way. A backend for storing configurations in the daemon
1152   is provided and more advanced backends (using e.g. a database) are trivial
1153   to implement.
1154
1155  - Fixed a compilation failure in libfreeswan occurring with Linux kernel
1156    headers > 2.6.17.
1157
1158
1159 strongswan-4.1.2
1160 ----------------
1161
1162 - Support for an additional Diffie-Hellman exchange when creating/rekeying
1163   a CHILD_SA in IKEv2 (PFS). PFS is enabled when the proposal contains a
1164   DH group (e.g. "esp=aes128-sha1-modp1536"). Further, DH group negotiation
1165   is implemented properly for rekeying.
1166
1167 - Support for the AES-XCBC-96 MAC algorithm for IPsec SAs when using IKEv2
1168   (requires linux >= 2.6.20). It is enabled using e.g. "esp=aes256-aesxcbc".
1169
1170 - Working IPv4-in-IPv6 and IPv6-in-IPv4 tunnels for linux >= 2.6.21.
1171
1172 - Added support for EAP modules which do not establish an MSK.
1173
1174 - Removed the dependencies from the /usr/include/linux/ headers by
1175   including xfrm.h, ipsec.h, and pfkeyv2.h in the distribution.
1176
1177 - crlNumber is now listed by ipsec listcrls
1178
1179 - The xauth_modules.verify_secret() function now passes the
1180   connection name.
1181
1182
1183 strongswan-4.1.1
1184 ----------------
1185
1186 - Server side cookie support. If to may IKE_SAs are in CONNECTING state,
1187   cookies are enabled and protect against DoS attacks with faked source
1188   addresses. Number of IKE_SAs in CONNECTING state is also limited per
1189   peer address to avoid resource exhaustion. IKE_SA_INIT messages are
1190   compared to properly detect retransmissions and incoming retransmits are
1191   detected even if the IKE_SA is blocked (e.g. doing OCSP fetches).
1192
1193 - The IKEv2 daemon charon now supports dynamic http- and ldap-based CRL
1194   fetching enabled by crlcheckinterval > 0 and caching fetched CRLs
1195   enabled by cachecrls=yes.
1196
1197 - Added the configuration options --enable-nat-transport which enables
1198   the potentially insecure NAT traversal for IPsec transport mode and
1199   --disable-vendor-id which disables the sending of the strongSwan
1200   vendor ID.
1201
1202 - Fixed a long-standing bug in the pluto IKEv1 daemon which caused
1203   a segmentation fault if a malformed payload was detected in the
1204   IKE MR2 message and pluto tried to send an encrypted notification
1205   message.
1206
1207 - Added the NATT_IETF_02_N Vendor ID in order to support IKEv1 connections
1208   with Windows 2003 Server which uses a wrong VID hash.
1209
1210
1211 strongswan-4.1.0
1212 ----------------
1213
1214 - Support of SHA2_384 hash function for protecting IKEv1
1215   negotiations and support of SHA2 signatures in X.509 certificates.
1216
1217 - Fixed a serious bug in the computation of the SHA2-512 HMAC
1218   function. Introduced automatic self-test of all IKEv1 hash
1219   and hmac functions during pluto startup. Failure of a self-test
1220   currently issues a warning only but does not exit pluto [yet].
1221
1222 - Support for SHA2-256/384/512 PRF and HMAC functions in IKEv2.
1223
1224 - Full support of CA information sections. ipsec listcainfos
1225   now shows all collected crlDistributionPoints and OCSP
1226   accessLocations.
1227
1228 - Support of the Online Certificate Status Protocol (OCSP) for IKEv2.
1229   This feature requires the HTTP fetching capabilities of the libcurl
1230   library which must be enabled by setting the --enable-http configure
1231   option.
1232
1233 - Refactored core of the IKEv2 message processing code, allowing better
1234   code reuse and separation.
1235
1236 - Virtual IP support in IKEv2 using INTERNAL_IP4/6_ADDRESS configuration
1237   payload. Additionally, the INTERNAL_IP4/6_DNS attribute is interpreted
1238   by the requestor and installed in a resolv.conf file.
1239
1240 - The IKEv2 daemon charon installs a route for each IPsec policy to use
1241   the correct source address even if an application does not explicitly
1242   specify it.
1243
1244 - Integrated the EAP framework into charon which loads pluggable EAP library
1245   modules. The ipsec.conf parameter authby=eap initiates EAP authentication
1246   on the client side, while the "eap" parameter on the server side defines
1247   the EAP method to use for client authentication.
1248   A generic client side EAP-Identity module and an EAP-SIM authentication
1249   module using a third party card reader implementation are included.
1250
1251 - Added client side support for cookies.
1252
1253 - Integrated the fixes done at the IKEv2 interoperability bakeoff, including
1254   strict payload order, correct INVALID_KE_PAYLOAD rejection and other minor
1255   fixes to enhance interoperability with other implementations.
1256
1257
1258 strongswan-4.0.7
1259 ----------------
1260
1261 - strongSwan now interoperates with the NCP Secure Entry Client,
1262   the Shrew Soft VPN Client, and the Cisco VPN client, doing both
1263   XAUTH and Mode Config.
1264
1265 - UNITY attributes are now recognized and UNITY_BANNER is set
1266   to a default string.
1267
1268
1269 strongswan-4.0.6
1270 ----------------
1271
1272 - IKEv1: Support for extended authentication (XAUTH) in combination
1273   with ISAKMP Main Mode RSA or PSK authentication. Both client and
1274   server side were implemented. Handling of user credentials can
1275   be done by a run-time loadable XAUTH module. By default user
1276   credentials are stored in ipsec.secrets.
1277
1278 - IKEv2: Support for reauthentication when rekeying
1279
1280 - IKEv2: Support for transport mode
1281
1282 - fixed a lot of bugs related to byte order
1283
1284 - various other bugfixes
1285
1286
1287 strongswan-4.0.5
1288 ----------------
1289
1290 - IKEv1: Implementation of ModeConfig push mode via the new connection
1291   keyword modeconfig=push allows interoperability with Cisco VPN gateways.
1292
1293 - IKEv1: The command ipsec statusall now shows "DPD active" for all
1294   ISAKMP SAs that are under active Dead Peer Detection control.
1295
1296 - IKEv2: Charon's logging and debugging framework has been completely rewritten.
1297   Instead of logger, special printf() functions are used to directly
1298   print objects like hosts (%H) identifications (%D), certificates (%Q),
1299   etc. The number of debugging levels have been reduced to:
1300
1301     0 (audit), 1 (control), 2 (controlmore),  3 (raw), 4 (private)
1302
1303   The debugging levels can either be specified statically in ipsec.conf as
1304
1305     config setup
1306            charondebug="lib 1, cfg 3, net 2"
1307
1308   or changed at runtime via stroke as
1309
1310     ipsec stroke loglevel cfg 2
1311
1312
1313 strongswan-4.0.4
1314 ----------------
1315
1316 - Implemented full support for IPv6-in-IPv6 tunnels.
1317
1318 - Added configuration options for dead peer detection in IKEv2. dpd_action
1319   types "clear", "hold" and "restart" are supported. The dpd_timeout
1320   value is not used, as the normal retransmission policy applies to
1321   detect dead peers. The dpd_delay parameter enables sending of empty
1322   informational message to detect dead peers in case of inactivity.
1323
1324 - Added support for preshared keys in IKEv2. PSK keys configured in
1325   ipsec.secrets are loaded. The authby parameter specifies the authentication
1326   method to authentificate ourself, the other peer may use PSK or RSA.
1327
1328 - Changed retransmission policy to respect the keyingtries parameter.
1329
1330 - Added private key decryption. PEM keys encrypted with AES-128/192/256
1331   or 3DES are supported.
1332
1333 - Implemented DES/3DES algorithms in libstrongswan. 3DES can be used to
1334   encrypt IKE traffic.
1335
1336 - Implemented SHA-256/384/512 in libstrongswan, allows usage of certificates
1337   signed with such a hash algorithm.
1338
1339 - Added initial support for updown scripts. The actions up-host/client and
1340   down-host/client are executed. The leftfirewall=yes parameter
1341   uses the default updown script to insert dynamic firewall rules, a custom
1342   updown script may be specified with the leftupdown parameter.
1343
1344
1345 strongswan-4.0.3
1346 ----------------
1347
1348 - Added support for the auto=route ipsec.conf parameter and the
1349   ipsec route/unroute commands for IKEv2. This allows to set up IKE_SAs and
1350   CHILD_SAs dynamically on demand when traffic is detected by the
1351   kernel.
1352
1353 - Added support for rekeying IKE_SAs in IKEv2 using the ikelifetime parameter.
1354   As specified in IKEv2, no reauthentication is done (unlike in IKEv1), only
1355   new keys are generated using perfect forward secrecy. An optional flag
1356   which enforces reauthentication will be implemented later.
1357
1358 - "sha" and "sha1" are now treated as synonyms in the ike= and esp=
1359   algorithm configuration statements.
1360
1361
1362 strongswan-4.0.2
1363 ----------------
1364
1365 - Full X.509 certificate trust chain verification has been implemented.
1366   End entity certificates can be exchanged via CERT payloads. The current
1367   default is leftsendcert=always, since CERTREQ payloads are not supported
1368   yet. Optional CRLs must be imported locally into /etc/ipsec.d/crls.
1369
1370 - Added support for leftprotoport/rightprotoport parameters in IKEv2. IKEv2
1371   would offer more possibilities for traffic selection, but the Linux kernel
1372   currently does not support it. That's why we stick with these simple
1373   ipsec.conf rules for now.
1374
1375 - Added Dead Peer Detection (DPD) which checks liveliness of remote peer if no
1376   IKE or ESP traffic is received. DPD is currently hardcoded (dpdaction=clear,
1377   dpddelay=60s).
1378
1379 - Initial NAT traversal support in IKEv2. Charon includes NAT detection
1380   notify payloads to detect NAT routers between the peers. It switches
1381   to port 4500, uses UDP encapsulated ESP packets, handles peer address
1382   changes gracefully and sends keep alive message periodically.
1383
1384 - Reimplemented IKE_SA state machine for charon, which allows simultaneous
1385   rekeying, more shared code, cleaner design, proper retransmission
1386   and a more extensible code base.
1387
1388 - The mixed PSK/RSA roadwarrior detection capability introduced by the
1389   strongswan-2.7.0 release necessitated the pre-parsing of the IKE proposal
1390   payloads by the responder right before any defined IKE Main Mode state had
1391   been established. Although any form of bad proposal syntax was being correctly
1392   detected by the payload parser, the subsequent error handler didn't check
1393   the state pointer before logging current state information, causing an
1394   immediate crash of the pluto keying daemon due to a NULL pointer.
1395
1396
1397 strongswan-4.0.1
1398 ----------------
1399
1400 - Added algorithm selection to charon: New default algorithms for
1401   ike=aes128-sha-modp2048, as both daemons support it. The default
1402   for IPsec SAs is now esp=aes128-sha,3des-md5. charon handles
1403   the ike/esp parameter the same way as pluto. As this syntax does
1404   not allow specification of a pseudo random function, the same
1405   algorithm as for integrity is used (currently sha/md5). Supported
1406   algorithms for IKE:
1407     Encryption: aes128, aes192, aes256
1408     Integrity/PRF: md5, sha (using hmac)
1409     DH-Groups: modp768, 1024, 1536, 2048, 4096, 8192
1410   and for ESP:
1411     Encryption: aes128, aes192, aes256, 3des, blowfish128,
1412                 blowfish192, blowfish256
1413     Integrity: md5, sha1
1414   More IKE encryption algorithms will come after porting libcrypto into
1415   libstrongswan.
1416
1417 - initial support for rekeying CHILD_SAs using IKEv2. Currently no
1418   perfect forward secrecy is used. The rekeying parameters rekey,
1419   rekeymargin, rekeyfuzz and keylife from ipsec.conf are now supported
1420   when using IKEv2. WARNING: charon currently is unable to handle
1421   simultaneous rekeying. To avoid such a situation, use a large
1422   rekeyfuzz, or even better, set rekey=no on one peer.
1423
1424 - support for host2host, net2net, host2net (roadwarrior) tunnels
1425   using predefined RSA certificates (see uml scenarios for
1426   configuration examples).
1427
1428 - new build environment featuring autotools. Features such
1429   as HTTP, LDAP and smartcard support may be enabled using
1430   the ./configure script. Changing install directories
1431   is possible, too. See ./configure --help for more details.
1432
1433 - better integration of charon with ipsec starter, which allows
1434   (almost) transparent operation with both daemons. charon
1435   handles ipsec commands up, down, status, statusall, listall,
1436   listcerts and allows proper load, reload and delete of connections
1437   via ipsec starter.
1438
1439
1440 strongswan-4.0.0
1441 ----------------
1442
1443 - initial support of the IKEv2 protocol. Connections in
1444   ipsec.conf designated by keyexchange=ikev2 are negotiated
1445   by the new IKEv2 charon keying daemon whereas those marked
1446   by keyexchange=ikev1 or the default keyexchange=ike are
1447   handled thy the IKEv1 pluto keying daemon. Currently only
1448   a limited subset of functions are available with IKEv2
1449   (Default AES encryption, authentication based on locally
1450   imported X.509 certificates, unencrypted private RSA keys
1451   in PKCS#1 file format, limited functionality of the ipsec
1452   status command).
1453
1454
1455 strongswan-2.7.0
1456 ----------------
1457
1458 - the dynamic iptables rules from the _updown_x509 template
1459   for KLIPS and the _updown_policy template for NETKEY have
1460   been merged into the default _updown script. The existing
1461   left|rightfirewall keyword causes the automatic insertion
1462   and deletion of ACCEPT rules for tunneled traffic upon
1463   the successful setup and teardown of an IPsec SA, respectively.
1464   left|rightfirwall can be used with KLIPS under any Linux 2.4
1465   kernel or with NETKEY under a Linux kernel version >= 2.6.16
1466   in conjunction with iptables >= 1.3.5. For NETKEY under a Linux
1467   kernel version < 2.6.16 which does not support IPsec policy
1468   matching yet, please continue to use a copy of the _updown_espmark
1469   template loaded via the left|rightupdown keyword.
1470
1471 - a new left|righthostaccess keyword has been introduced which
1472   can be used in conjunction with left|rightfirewall and the
1473   default _updown script. By default leftfirewall=yes inserts
1474   a bi-directional iptables FORWARD rule for a local client network
1475   with a netmask different from 255.255.255.255 (single host).
1476   This does not allow to access the VPN gateway host via its
1477   internal network interface which is part of the client subnet
1478   because an iptables INPUT and OUTPUT rule would be required.
1479   lefthostaccess=yes will cause this additional ACCEPT rules to
1480   be inserted.
1481
1482 - mixed PSK|RSA roadwarriors are now supported. The ISAKMP proposal
1483   payload is preparsed in order to find out whether the roadwarrior
1484   requests PSK or RSA so that a matching connection candidate can
1485   be found.
1486
1487
1488 strongswan-2.6.4
1489 ----------------
1490
1491 - the new _updown_policy template allows ipsec policy based
1492   iptables firewall rules. Required are iptables version
1493   >= 1.3.5 and linux kernel >= 2.6.16. This script obsoletes
1494   the _updown_espmark template, so that no INPUT mangle rules
1495   are required any more.
1496
1497 - added support of DPD restart mode
1498
1499 - ipsec starter now allows the use of wildcards in include
1500   statements as e.g. in "include /etc/my_ipsec/*.conf".
1501   Patch courtesy of Matthias Haas.
1502
1503 - the Netscape OID 'employeeNumber' is now recognized and can be
1504   used as a Relative Distinguished Name in certificates.
1505
1506
1507 strongswan-2.6.3
1508 ----------------
1509
1510 - /etc/init.d/ipsec or /etc/rc.d/ipsec is now a copy of the ipsec
1511   command and not of ipsec setup any more.
1512
1513 - ipsec starter now supports AH authentication in conjunction with
1514   ESP encryption. AH authentication is configured in ipsec.conf
1515   via the auth=ah parameter.
1516
1517 - The command ipsec scencrypt|scdecrypt <args> is now an alias for
1518   ipsec whack --scencrypt|scdecrypt <args>.
1519
1520 - get_sa_info() now determines for the native netkey IPsec stack
1521   the exact time of the last use of an active eroute. This information
1522   is used by the Dead Peer Detection algorithm and is also displayed by
1523   the ipsec status command.
1524
1525
1526 strongswan-2.6.2
1527 ----------------
1528
1529 - running under the native Linux 2.6 IPsec stack, the function
1530   get_sa_info() is called by ipsec auto --status to display the current
1531   number of transmitted bytes per IPsec SA.
1532
1533 - get_sa_info() is also used  by the Dead Peer Detection process to detect
1534   recent ESP activity. If ESP traffic was received from the peer within
1535   the last dpd_delay interval then no R_Y_THERE notification must be sent.
1536
1537 - strongSwan now supports the Relative Distinguished Name "unstructuredName"
1538   in ID_DER_ASN1_DN identities. The following notations are possible:
1539
1540     rightid="unstructuredName=John Doe"
1541     rightid="UN=John Doe"
1542
1543 - fixed a long-standing bug which caused PSK-based roadwarrior connections
1544   to segfault in the function id.c:same_id() called by keys.c:get_secret()
1545   if an FQDN, USER_FQDN, or Key ID was defined, as in the following example.
1546
1547   conn rw
1548        right=%any
1549        rightid=@foo.bar
1550        authby=secret
1551
1552 - the ipsec command now supports most ipsec auto commands (e.g. ipsec listall).
1553
1554 - ipsec starter didn't set host_addr and client.addr ports in whack msg.
1555
1556 - in order to guarantee backwards-compatibility with the script-based
1557   auto function (e.g. auto --replace), the ipsec starter scripts stores
1558   the defaultroute information in the temporary file /var/run/ipsec.info.
1559
1560 - The compile-time option USE_XAUTH_VID enables the sending of the XAUTH
1561   Vendor ID which is expected by Cisco PIX 7 boxes that act as IKE Mode Config
1562   servers.
1563
1564 - the ipsec starter now also recognizes the parameters authby=never and
1565   type=passthrough|pass|drop|reject.
1566
1567
1568 strongswan-2.6.1
1569 ----------------
1570
1571 - ipsec starter now supports the also parameter which allows
1572   a modular structure of the connection definitions. Thus
1573   "ipsec start" is now ready to replace "ipsec setup".
1574
1575
1576 strongswan-2.6.0
1577 ----------------
1578
1579 - Mathieu Lafon's popular ipsec starter tool has been added to the
1580   strongSwan distribution. Many thanks go to Stephan Scholz from astaro
1581   for his integration work. ipsec starter is a C program which is going
1582   to replace the various shell and awk starter scripts (setup, _plutoload,
1583   _plutostart, _realsetup, _startklips, _confread, and auto). Since
1584   ipsec.conf is now parsed only once, the starting of multiple tunnels is
1585   accelerated tremedously.
1586
1587 - Added support of %defaultroute to the ipsec starter. If the IP address
1588   changes, a HUP signal to the ipsec starter will automatically
1589   reload pluto's connections.
1590
1591 - moved most compile time configurations from pluto/Makefile to
1592   Makefile.inc by defining the options USE_LIBCURL, USE_LDAP,
1593   USE_SMARTCARD, and USE_NAT_TRAVERSAL_TRANSPORT_MODE.
1594
1595 - removed the ipsec verify and ipsec newhostkey commands
1596
1597 - fixed some 64-bit issues in formatted print statements
1598
1599 - The scepclient functionality implementing the Simple Certificate
1600   Enrollment Protocol (SCEP) is nearly complete but hasn't been
1601   documented yet.
1602
1603
1604 strongswan-2.5.7
1605 ----------------
1606
1607 - CA certicates are now automatically loaded from a smartcard
1608   or USB crypto token and appear in the ipsec auto --listcacerts
1609   listing.
1610
1611
1612 strongswan-2.5.6
1613 ----------------
1614
1615 - when using "ipsec whack --scencrypt <data>" with  a PKCS#11
1616   library that does not support the C_Encrypt() Cryptoki
1617   function (e.g. OpenSC), the RSA encryption is done in
1618   software using the public key fetched from the smartcard.
1619
1620 - The scepclient function now allows to define the
1621   validity of a self-signed certificate using the --days,
1622   --startdate, and --enddate options. The default validity
1623   has been changed from one year to five years.
1624
1625
1626 strongswan-2.5.5
1627 ----------------
1628
1629 - the config setup parameter pkcs11proxy=yes opens pluto's PKCS#11
1630   interface to other applications for RSA encryption and decryption
1631   via the whack interface. Notation:
1632
1633   ipsec whack --scencrypt <data>
1634              [--inbase  16|hex|64|base64|256|text|ascii]
1635              [--outbase 16|hex|64|base64|256|text|ascii]
1636              [--keyid <keyid>]
1637
1638   ipsec whack --scdecrypt <data>
1639              [--inbase  16|hex|64|base64|256|text|ascii]
1640              [--outbase 16|hex|64|base64|256|text|ascii]
1641              [--keyid <keyid>]
1642
1643   The default setting for inbase and outbase is hex.
1644
1645   The new proxy interface can be used for securing symmetric
1646   encryption keys required by the cryptoloop or dm-crypt
1647   disk encryption schemes, especially in the case when
1648   pkcs11keepstate=yes causes pluto to lock the pkcs11 slot
1649   permanently.
1650
1651 - if the file /etc/ipsec.secrets is lacking during the startup of
1652   pluto then the root-readable file /etc/ipsec.d/private/myKey.der
1653   containing a 2048 bit RSA private key and a matching self-signed
1654   certificate stored in the file /etc/ipsec.d/certs/selfCert.der
1655   is automatically generated by calling the function
1656
1657   ipsec scepclient --out pkcs1 --out cert-self
1658
1659   scepclient was written by Jan Hutter and Martin Willi, students
1660   at the University of Applied Sciences in Rapperswil, Switzerland.
1661
1662
1663 strongswan-2.5.4
1664 ----------------
1665
1666 - the current extension of the PKCS#7 framework introduced
1667   a parsing error in PKCS#7 wrapped X.509 certificates that are
1668   e.g. transmitted by Windows XP when multi-level CAs are used.
1669   the parsing syntax has been fixed.
1670
1671 - added a patch by Gerald Richter which tolerates multiple occurrences
1672   of the ipsec0 interface when using KLIPS.
1673
1674
1675 strongswan-2.5.3
1676 ----------------
1677
1678 - with gawk-3.1.4 the word "default2 has become a protected
1679   keyword for use in switch statements and cannot be used any
1680   more in the strongSwan scripts. This problem has been
1681   solved by renaming "default" to "defaults" and "setdefault"
1682   in the scripts _confread and auto, respectively.
1683
1684 - introduced the parameter leftsendcert with the values
1685
1686   always|yes (the default, always send a cert)
1687   ifasked    (send the cert only upon a cert request)
1688   never|no   (never send a cert, used for raw RSA keys and
1689               self-signed certs)
1690
1691 - fixed the initialization of the ESP key length to a default of
1692   128 bits in the case that the peer does not send a key length
1693    attribute for AES encryption.
1694
1695 - applied Herbert Xu's uniqueIDs patch
1696
1697 - applied Herbert Xu's CLOEXEC patches
1698
1699
1700 strongswan-2.5.2
1701 ----------------
1702
1703 - CRLs can now be cached also in the case when the issuer's
1704   certificate does not contain a subjectKeyIdentifier field.
1705   In that case the subjectKeyIdentifier is computed by pluto as the
1706   160 bit SHA-1 hash of the issuer's public key in compliance
1707   with section 4.2.1.2 of RFC 3280.
1708
1709 - Fixed a bug introduced by strongswan-2.5.1 which eliminated
1710   not only multiple Quick Modes of a given connection but also
1711   multiple connections between two security gateways.
1712
1713
1714 strongswan-2.5.1
1715 ----------------
1716
1717 - Under the native IPsec of the Linux 2.6 kernel, a %trap eroute
1718   installed either by setting auto=route in ipsec.conf or by
1719   a connection put into hold, generates an XFRM_AQUIRE event
1720   for each packet that wants to use the not-yet exisiting
1721   tunnel. Up to now each XFRM_AQUIRE event led to an entry in
1722   the Quick Mode queue, causing multiple IPsec SA to be
1723   established in rapid succession. Starting with strongswan-2.5.1
1724   only a single IPsec SA is established per host-pair connection.
1725
1726 - Right after loading the PKCS#11 module, all smartcard slots are
1727   searched for certificates. The result can be viewed using
1728   the command
1729
1730     ipsec auto --listcards
1731
1732   The certificate objects found in the slots are numbered
1733   starting with #1, #2, etc. This position number can be used to address
1734   certificates (leftcert=%smartcard) and keys (: PIN %smartcard)
1735   in ipsec.conf and ipsec.secrets, respectively:
1736
1737     %smartcard      (selects object #1)
1738     %smartcard#1    (selects object #1)
1739     %smartcard#3    (selects object #3)
1740
1741   As an alternative the existing retrieval scheme can be used:
1742
1743     %smartcard:45   (selects object with id=45)
1744     %smartcard0     (selects first object in slot 0)
1745     %smartcard4:45  (selects object in slot 4 with id=45)
1746
1747 - Depending on the settings of CKA_SIGN and CKA_DECRYPT
1748   private key flags either C_Sign() or C_Decrypt() is used
1749   to generate a signature.
1750
1751 - The output buffer length parameter siglen in C_Sign()
1752   is now initialized to the actual size of the output
1753   buffer prior to the function call. This fixes the
1754   CKR_BUFFER_TOO_SMALL error that could occur when using
1755   the OpenSC PKCS#11 module.
1756
1757 - Changed the initialization of the PKCS#11 CK_MECHANISM in
1758   C_SignInit() to mech  = { CKM_RSA_PKCS, NULL_PTR, 0 }.
1759
1760 - Refactored the RSA public/private key code and transferred it
1761   from keys.c to the new pkcs1.c file as a preparatory step
1762   towards the release of the SCEP client.
1763
1764
1765 strongswan-2.5.0
1766 ----------------
1767
1768 - The loading of a PKCS#11 smartcard library module during
1769   runtime does not require OpenSC library functions any more
1770   because the corresponding code has been integrated into
1771   smartcard.c. Also the RSAREF pkcs11 header files have been
1772   included in a newly created pluto/rsaref directory so that
1773   no external include path has to be defined any longer.
1774
1775 - A long-awaited feature has been implemented at last:
1776   The local caching of CRLs fetched via HTTP or LDAP, activated
1777   by the parameter cachecrls=yes in the config setup section
1778   of ipsec.conf. The dynamically fetched CRLs are stored under
1779   a unique file name containing the issuer's subjectKeyID
1780   in /etc/ipsec.d/crls.
1781
1782 - Applied a one-line patch courtesy of Michael Richardson
1783   from the Openswan project which fixes the kernel-oops
1784   in KLIPS when an snmp daemon is running on the same box.
1785
1786
1787 strongswan-2.4.4
1788 ----------------
1789
1790 - Eliminated null length CRL distribution point strings.
1791
1792 - Fixed a trust path evaluation bug introduced with 2.4.3
1793
1794
1795 strongswan-2.4.3
1796 ----------------
1797
1798 - Improved the joint OCSP / CRL revocation policy.
1799   OCSP responses have precedence over CRL entries.
1800
1801 - Introduced support of CRLv2 reason codes.
1802
1803 - Fixed a bug with key-pad equipped readers which caused
1804   pluto to prompt for the pin via the console when the first
1805   occasion to enter the pin via the key-pad was missed.
1806
1807 - When pluto is built with LDAP_V3 enabled, the library
1808   liblber required by newer versions of openldap is now
1809   included.
1810
1811
1812 strongswan-2.4.2
1813 ----------------
1814
1815 - Added the _updown_espmark template which requires all
1816   incoming ESP traffic to be marked with a default mark
1817   value of 50.
1818
1819 - Introduced the pkcs11keepstate parameter in the config setup
1820   section of ipsec.conf. With pkcs11keepstate=yes the PKCS#11
1821   session and login states are kept as long as possible during
1822   the lifetime of pluto. This means that a PIN entry via a key
1823   pad has to be done only once.
1824
1825 - Introduced the pkcs11module parameter in the config setup
1826   section of ipsec.conf which specifies the PKCS#11 module
1827   to be used with smart cards. Example:
1828
1829     pkcs11module=/usr/lib/pkcs11/opensc-pkcs11.lo
1830
1831 - Added support of smartcard readers equipped with a PIN pad.
1832
1833 - Added patch by Jay Pfeifer which detects when netkey
1834   modules have been statically built into the Linux 2.6 kernel.
1835
1836 - Added two patches by Herbert Xu. The first uses ip xfrm
1837   instead of setkey to flush the IPsec policy database. The
1838   second sets the optional flag in inbound IPComp SAs only.
1839
1840 - Applied Ulrich Weber's patch which fixes an interoperability
1841   problem between native IPsec and KLIPS systems caused by
1842   setting the replay window to 32 instead of 0 for ipcomp.
1843
1844
1845 strongswan-2.4.1
1846 ----------------
1847
1848 - Fixed a bug which caused an unwanted Mode Config request
1849   to be initiated in the case where "right" was used to denote
1850   the local side in ipsec.conf and "left" the remote side,
1851   contrary to the recommendation that "right" be remote and
1852   "left" be"local".
1853
1854
1855 strongswan-2.4.0a
1856 -----------------
1857
1858 - updated Vendor ID to strongSwan-2.4.0
1859
1860 - updated copyright statement to include David Buechi and
1861   Michael Meier
1862
1863
1864 strongswan-2.4.0
1865 ----------------
1866
1867 - strongSwan now communicates with attached smartcards and
1868   USB crypto tokens via the standardized PKCS #11 interface.
1869   By default the OpenSC library from www.opensc.org is used
1870   but any other PKCS#11 library could be dynamically linked.
1871   strongSwan's PKCS#11 API was implemented by David Buechi
1872   and Michael Meier, both graduates of the Zurich University
1873   of Applied Sciences in Winterthur, Switzerland.
1874
1875 - When a %trap eroute is triggered by an outgoing IP packet
1876   then the native IPsec stack of the Linux 2.6 kernel [often/
1877   always?] returns an XFRM_ACQUIRE message with an undefined
1878   protocol family field and the connection setup fails.
1879   As a workaround IPv4 (AF_INET) is now assumed.
1880
1881 - the results of the UML test scenarios are now enhanced
1882   with block diagrams of the virtual network topology used
1883   in a particular test.
1884
1885
1886 strongswan-2.3.2
1887 ----------------
1888
1889 - fixed IV used to decrypt informational messages.
1890   This bug was introduced with Mode Config functionality.
1891
1892 - fixed NCP Vendor ID.
1893
1894 - undid one of Ulrich Weber's maximum udp size patches
1895   because it caused a segmentation fault with NAT-ed
1896   Delete SA messages.
1897
1898 - added UML scenarios wildcards and attr-cert which
1899   demonstrate the implementation of IPsec policies based
1900   on wildcard parameters contained in Distinguished Names and
1901   on X.509 attribute certificates, respectively.
1902
1903
1904 strongswan-2.3.1
1905 ----------------
1906
1907 - Added basic Mode Config functionality
1908
1909 - Added Mathieu Lafon's patch which upgrades the status of
1910   the NAT-Traversal implementation to RFC 3947.
1911
1912 - The _startklips script now also loads the xfrm4_tunnel
1913   module.
1914
1915 - Added Ulrich Weber's netlink replay window size and
1916   maximum udp size patches.
1917
1918 - UML testing now uses the Linux 2.6.10 UML kernel by default.
1919
1920
1921 strongswan-2.3.0
1922 ----------------
1923
1924 - Eric Marchionni and Patrik Rayo, both recent graduates from
1925   the Zuercher Hochschule Winterthur in Switzerland, created a
1926   User-Mode-Linux test setup for strongSwan. For more details
1927   please read the INSTALL and README documents in the testing
1928   subdirectory.
1929
1930 - Full support of group attributes based on X.509 attribute
1931   certificates. Attribute certificates can be generated
1932   using the openac facility. For more details see
1933
1934   man ipsec_openac.
1935
1936   The group attributes can be used in connection definitions
1937   in order to give IPsec access to specific user groups.
1938   This is done with the new parameter left|rightgroups as in
1939
1940   rightgroups="Research, Sales"
1941
1942   giving access to users possessing the group attributes
1943   Research or Sales, only.
1944
1945 - In Quick Mode clients with subnet mask /32 are now
1946   coded as IP_V4_ADDRESS or IP_V6_ADDRESS. This should
1947   fix rekeying problems with the SafeNet/SoftRemote and NCP
1948   Secure Entry Clients.
1949
1950 - Changed the defaults of the ikelifetime and keylife parameters
1951   to 3h and 1h, respectively. The maximum allowable values are
1952   now both set to 24 h.
1953
1954 - Suppressed notification wars between two IPsec peers that
1955   could e.g. be triggered by incorrect ISAKMP encryption.
1956
1957 - Public RSA keys can now have identical IDs if either the
1958   issuing CA or the serial number is different. The serial
1959   number of a certificate is now shown by the command
1960
1961   ipsec auto --listpubkeys
1962
1963
1964 strongswan-2.2.2
1965 ----------------
1966
1967 - Added Tuomo Soini's sourceip feature which allows a strongSwan
1968   roadwarrior to use a fixed Virtual IP (see README section 2.6)
1969   and reduces the well-known four tunnel case on VPN gateways to
1970   a single tunnel definition (see README section 2.4).
1971
1972 - Fixed a bug occurring with NAT-Traversal enabled when the responder
1973   suddenly turns initiator and the initiator cannot find a matching
1974   connection because of the floated IKE port 4500.
1975
1976 - Removed misleading ipsec verify command from barf.
1977
1978 - Running under the native IP stack, ipsec --version now shows
1979   the Linux kernel version (courtesy to the Openswan project).
1980
1981
1982 strongswan-2.2.1
1983 ----------------
1984
1985 - Introduced the ipsec auto --listalgs monitoring command which lists
1986   all currently registered IKE and ESP algorithms.
1987
1988 - Fixed a bug in the ESP algorithm selection occurring when the strict flag
1989   is set and the first proposed transform does not match.
1990
1991 - Fixed another deadlock in the use of the lock_certs_and_keys() mutex,
1992   occurring when a smartcard is present.
1993
1994 - Prevented that a superseded Phase1 state can trigger a DPD_TIMEOUT event.
1995
1996 - Fixed the printing of the notification names (null)
1997
1998 - Applied another of Herbert Xu's Netlink patches.
1999
2000
2001 strongswan-2.2.0
2002 ----------------
2003
2004 - Support of Dead Peer Detection. The connection parameter
2005
2006     dpdaction=clear|hold
2007
2008   activates DPD for the given connection.
2009
2010 - The default Opportunistic Encryption (OE) policy groups are not
2011   automatically included anymore. Those wishing to activate OE can include
2012   the policy group with the following statement in ipsec.conf:
2013
2014     include /etc/ipsec.d/examples/oe.conf
2015
2016   The default for [right|left]rsasigkey is now set to %cert.
2017
2018 - strongSwan now has a Vendor ID of its own which can be activated
2019   using the compile option VENDORID
2020
2021 - Applied Herbert Xu's patch which sets the compression algorithm correctly.
2022
2023 - Applied Herbert Xu's patch fixing an ESPINUDP problem
2024
2025 - Applied Herbert Xu's patch setting source/destination port numbers.
2026
2027 - Reapplied one of Herbert Xu's NAT-Traversal patches which got
2028   lost during the migration from SuperFreeS/WAN.
2029
2030 - Fixed a deadlock in the use of the lock_certs_and_keys() mutex.
2031
2032 - Fixed the unsharing of alg parameters when instantiating group
2033   connection.
2034
2035
2036 strongswan-2.1.5
2037 ----------------
2038
2039 - Thomas Walpuski made me aware of a potential DoS attack via
2040   a PKCS#7-wrapped certificate bundle which could overwrite valid CA
2041   certificates in Pluto's authority certificate store. This vulnerability
2042   was fixed by establishing trust in CA candidate certificates up to a
2043   trusted root CA prior to insertion into Pluto's chained list.
2044
2045 - replaced the --assign option by the -v option in the auto awk script
2046   in order to make it run with mawk under debian/woody.
2047
2048
2049 strongswan-2.1.4
2050 ----------------
2051
2052 - Split of the status information between ipsec auto  --status (concise)
2053   and ipsec auto --statusall (verbose). Both commands can be used with
2054   an optional connection selector:
2055
2056     ipsec auto --status[all] <connection_name>
2057
2058 - Added the description of X.509 related features to the ipsec_auto(8)
2059   man page.
2060
2061 - Hardened the ASN.1 parser in debug mode, especially the printing
2062   of malformed distinguished names.
2063
2064 - The size of an RSA public key received in a certificate is now restricted to
2065
2066     512 bits <= modulus length <= 8192 bits.
2067
2068 - Fixed the debug mode enumeration.
2069
2070
2071 strongswan-2.1.3
2072 ----------------
2073
2074 - Fixed another PKCS#7 vulnerability which could lead to an
2075   endless loop while following the X.509 trust chain.
2076
2077
2078 strongswan-2.1.2
2079 ----------------
2080
2081 - Fixed the PKCS#7 vulnerability discovered by Thomas Walpuski
2082   that accepted end certificates having identical issuer and subject
2083   distinguished names in a multi-tier X.509 trust chain.
2084
2085
2086 strongswan-2.1.1
2087 ----------------
2088
2089 - Removed all remaining references to ipsec_netlink.h in KLIPS.
2090
2091
2092 strongswan-2.1.0
2093 ----------------
2094
2095 - The new "ca" section allows to define the following parameters:
2096
2097   ca kool
2098      cacert=koolCA.pem                   # cacert of kool CA
2099      ocspuri=http://ocsp.kool.net:8001   # ocsp server
2100      ldapserver=ldap.kool.net            # default ldap server
2101      crluri=http://www.kool.net/kool.crl # crl distribution point
2102      crluri2="ldap:///O=Kool, C= .."     # crl distribution point #2
2103      auto=add                            # add, ignore
2104
2105   The ca definitions can be monitored via the command
2106
2107      ipsec auto --listcainfos
2108
2109 - Fixed cosmetic corruption of /proc filesystem by integrating
2110   D. Hugh Redelmeier's freeswan-2.06 kernel fixes.
2111
2112
2113 strongswan-2.0.2
2114 ----------------
2115
2116 - Added support for the 818043 NAT-Traversal update of Microsoft's
2117   Windows 2000/XP IPsec client which sends an ID_FQDN during Quick Mode.
2118
2119 - A symbolic link to libcrypto is now added in the kernel sources
2120   during kernel compilation
2121
2122 - Fixed a couple of 64 bit issues (mostly casts to int).
2123   Thanks to Ken Bantoft who checked my sources on a 64 bit platform.
2124
2125 - Replaced s[n]printf() statements in the kernel by ipsec_snprintf().
2126   Credits go to D. Hugh Redelmeier, Michael Richardson, and Sam Sgro
2127   of the FreeS/WAN team who solved this problem with the 2.4.25 kernel.
2128
2129
2130 strongswan-2.0.1
2131 ----------------
2132
2133 - an empty ASN.1 SEQUENCE OF or SET OF object (e.g. a subjectAltName
2134   certificate extension which contains no generalName item)  can cause
2135   a pluto crash. This bug has been fixed. Additionally the ASN.1 parser has
2136   been hardened to make it more robust against malformed ASN.1 objects.
2137
2138 - applied Herbert Xu's NAT-T patches which fixes NAT-T under the native
2139   Linux 2.6 IPsec stack.
2140
2141
2142 strongswan-2.0.0
2143 ----------------
2144
2145 - based on freeswan-2.04, x509-1.5.3, nat-0.6c, alg-0.8.1rc12