cosmetics
[strongswan.git] / NEWS
1 strongswan-4.1.4
2 ----------------
3
4 - The pluto IKEv1 daemon now exhibits the same behaviour as its
5   IKEv2 companion charon by inserting an explicit route via the
6   _updown script only if a sourceip exists. This is admissible
7   since routing through the IPsec tunnel is handled automatically
8   by NETKEY's IPsec policies. As a consequence the left|rightnexthop
9   parameter is not required any more.
10
11 - The new IKEv1 parameter right|leftallowany parameters helps to handle
12   the case where both peers possess dynamic IP addresses that are
13   usually resolved using DynDNS or a similar service. The configuration
14
15     right=peer.foo.bar
16     rightallowany=yes
17
18   can be used by the initiator to start up a connection to a peer
19   by resolving peer.foo.bar into the currently allocated IP address.
20   Thanks to the rightallowany flag the connection behaves later on
21   as
22
23    right=%any
24
25   so that the peer can rekey the connection as an initiator when his
26   IP address changes. An alternative notation is
27
28     right=%peer.foo.bar
29
30   which will implicitly set rightallowany=yes.
31
32 - ipsec starter now fails more gracefully in the presence of parsing
33   errors. Flawed ca and conn section are discarded and pluto is started
34   if non-fatal errors only were encountered. If right=%peer.foo.bar
35   cannot be resolved by DNS then right=%any will be used so that passive
36   connections as a responder are still possible.
37
38 - Partial support for MOBIKE in IKEv2. The initiator acts on interface/
39   address configuration changes and updates IKE and IPsec SAs dynamically.
40
41
42 strongswan-4.1.3
43 ----------------
44
45 - IKEv2 peer configuration selection now can be based on a given 
46   certification authority using the rightca= statement.
47
48 - IKEv2 authentication based on RSA signatures now can handle multiple
49   certificates issued for a given peer ID. This allows a smooth transition
50   in the case of a peer certificate renewal.
51
52 - IKEv2: Support for requesting a specific virtual IP using leftsourceip on the
53   client and returning requested virtual IPs using rightsourceip=%config
54   on the server. If the server does not support configuration payloads, the
55   client enforces its leftsourceip parameter.
56
57 - The ./configure options --with-uid/--with-gid allow pluto and charon
58   to drop their privileges to a minimum and change to an other UID/GID. This
59   improves the systems security, as a possible intruder may only get the
60   CAP_NET_ADMIN capability.
61
62 - Further modularization of charon: Pluggable control interface and 
63   configuration backend modules provide extensibility. The control interface
64   for stroke is included, and further interfaces using DBUS (NetworkManager)
65   or XML are on the way. A backend for storing configurations in the daemon
66   is provided and more advanced backends (using e.g. a database) are trivial 
67   to implement.
68
69  - Fixed a compilation failure in libfreeswan occuring with Linux kernel
70    headers > 2.6.17.
71
72
73 strongswan-4.1.2
74 ----------------
75
76 - Support for an additional Diffie-Hellman exchange when creating/rekeying
77   a CHILD_SA in IKEv2 (PFS). PFS is enabled when the proposal contains a
78   DH group (e.g. "esp=aes128-sha1-modp1536"). Further, DH group negotiation
79   is implemented properly for rekeying.
80
81 - Support for the AES-XCBC-96 MAC algorithm for IPsec SAs when using IKEv2
82   (requires linux >= 2.6.20). It is enabled using e.g. "esp=aes256-aesxcbc".
83
84 - Working IPv4-in-IPv6 and IPv6-in-IPv4 tunnels for linux >= 2.6.21.
85
86 - Added support for EAP modules which do not establish an MSK.
87
88 - Removed the dependencies from the /usr/include/linux/ headers by
89   including xfrm.h, ipsec.h, and pfkeyv2.h in the distribution.
90   
91 - crlNumber is now listed by ipsec listcrls
92
93 - The xauth_modules.verify_secret() function now passes the
94   connection name.
95
96
97 strongswan-4.1.1
98 ----------------
99
100 - Server side cookie support. If to may IKE_SAs are in CONNECTING state,
101   cookies are enabled and protect against DoS attacks with faked source
102   addresses. Number of IKE_SAs in CONNECTING state is also limited per
103   peer address to avoid resource exhaustion. IKE_SA_INIT messages are
104   compared to properly detect retransmissions and incoming retransmits are
105   detected even if the IKE_SA is blocked (e.g. doing OCSP fetches).
106
107 - The IKEv2 daemon charon now supports dynamic http- and ldap-based CRL
108   fetching enabled by crlcheckinterval > 0 and caching fetched CRLs
109   enabled by cachecrls=yes.
110
111 - Added the configuration options --enable-nat-transport which enables
112   the potentially insecure NAT traversal for IPsec transport mode and
113   --disable-vendor-id which disables the sending of the strongSwan
114   vendor ID.
115
116 - Fixed a long-standing bug in the pluto IKEv1 daemon which caused
117   a segmentation fault if a malformed payload was detected in the
118   IKE MR2 message and pluto tried to send an encrypted notification
119   message.
120
121 - Added the NATT_IETF_02_N Vendor ID in order to support IKEv1 connections
122   with Windows 2003 Server which uses a wrong VID hash.
123
124
125 strongswan-4.1.0
126 ----------------
127
128 - Support of SHA2_384 hash function for protecting IKEv1
129   negotiations and support of SHA2 signatures in X.509 certificates.
130
131 - Fixed a serious bug in the computation of the SHA2-512 HMAC
132   function. Introduced automatic self-test of all IKEv1 hash
133   and hmac functions during pluto startup. Failure of a self-test
134   currently issues a warning only but does not exit pluto [yet].
135
136 - Support for SHA2-256/384/512 PRF and HMAC functions in IKEv2.
137
138 - Full support of CA information sections. ipsec listcainfos
139   now shows all collected crlDistributionPoints and OCSP 
140   accessLocations.
141
142 - Support of the Online Certificate Status Protocol (OCSP) for IKEv2.
143   This feature requires the HTTP fetching capabilities of the libcurl
144   library which must be enabled by setting the --enable-http configure
145   option.
146
147 - Refactored core of the IKEv2 message processing code, allowing better
148   code reuse and separation.
149
150 - Virtual IP support in IKEv2 using INTERNAL_IP4/6_ADDRESS configuration
151   payload. Additionally, the INTERNAL_IP4/6_DNS attribute is interpreted
152   by the requestor and installed in a resolv.conf file.
153
154 - The IKEv2 daemon charon installs a route for each IPsec policy to use
155   the correct source address even if an application does not explicitly
156   specify it.
157
158 - Integrated the EAP framework into charon which loads pluggable EAP library
159   modules. The ipsec.conf parameter authby=eap initiates EAP authentication
160   on the client side, while the "eap" parameter on the server side defines
161   the EAP method to use for client authentication.
162   A generic client side EAP-Identity module and an EAP-SIM authentication
163   module using a third party card reader implementation are included.
164
165 - Added client side support for cookies.
166
167 - Integrated the fixes done at the IKEv2 interoperability bakeoff, including
168   strict payload order, correct INVALID_KE_PAYLOAD rejection and other minor
169   fixes to enhance interoperability with other implementations.
170
171
172 strongswan-4.0.7
173 ----------------
174
175 - strongSwan now interoperates with the NCP Secure Entry Client,
176   the Shrew Soft VPN Client, and the Cisco VPN client, doing both
177   XAUTH and Mode Config.
178
179 - UNITY attributes are now recognized and UNITY_BANNER is set
180   to a default string.
181
182
183 strongswan-4.0.6
184 ----------------
185
186 - IKEv1: Support for extended authentication (XAUTH) in combination
187   with ISAKMP Main Mode RSA or PSK authentication. Both client and
188   server side were implemented. Handling of user credentials can
189   be done by a run-time loadable XAUTH module. By default user
190   credentials are stored in ipsec.secrets. 
191           
192 - IKEv2: Support for reauthentication when rekeying
193
194 - IKEv2: Support for transport mode
195
196 - fixed a lot of bugs related to byte order
197
198 - various other bugfixes
199
200
201 strongswan-4.0.5
202 ----------------
203
204 - IKEv1: Implementation of ModeConfig push mode via the new connection
205   keyword modeconfig=push allows interoperability with Cisco VPN gateways.
206
207 - IKEv1: The command ipsec statusall now shows "DPD active" for all
208   ISAKMP SAs that are under active Dead Peer Detection control.
209
210 - IKEv2: Charon's logging and debugging framework has been completely rewritten.
211   Instead of logger, special printf() functions are used to directly
212   print objects like hosts (%H) identifications (%D), certificates (%Q),
213   etc. The number of debugging levels have been reduced to:
214
215     0 (audit), 1 (control), 2 (controlmore),  3 (raw), 4 (private)
216
217   The debugging levels can either be specified statically in ipsec.conf as
218
219     config setup
220            charondebug="lib 1, cfg 3, net 2"
221
222   or changed at runtime via stroke as
223
224     ipsec stroke loglevel cfg 2
225
226
227 strongswan-4.0.4
228 ----------------
229
230 - Implemented full support for IPv6-in-IPv6 tunnels.
231
232 - Added configuration options for dead peer detection in IKEv2. dpd_action
233   types "clear", "hold" and "restart" are supported. The dpd_timeout
234   value is not used, as the normal retransmission policy applies to
235   detect dead peers. The dpd_delay parameter enables sending of empty
236   informational message to detect dead peers in case of inactivity.
237
238 - Added support for preshared keys in IKEv2. PSK keys configured in
239   ipsec.secrets are loaded. The authby parameter specifies the authentication
240   method to authentificate ourself, the other peer may use PSK or RSA.
241
242 - Changed retransmission policy to respect the keyingtries parameter.
243
244 - Added private key decryption. PEM keys encrypted with AES-128/192/256
245   or 3DES are supported.
246
247 - Implemented DES/3DES algorithms in libstrongswan. 3DES can be used to
248   encrypt IKE traffic.
249
250 - Implemented SHA-256/384/512 in libstrongswan, allows usage of certificates
251   signed with such a hash algorithm.
252
253 - Added initial support for updown scripts. The actions up-host/client and
254   down-host/client are executed. The leftfirewall=yes parameter
255   uses the default updown script to insert dynamic firewall rules, a custom
256   updown script may be specified with the leftupdown parameter.
257
258
259 strongswan-4.0.3
260 ----------------
261
262 - Added support for the auto=route ipsec.conf parameter and the
263   ipsec route/unroute commands for IKEv2. This allows to set up IKE_SAs and 
264   CHILD_SAs dynamically on demand when traffic is detected by the 
265   kernel.
266
267 - Added support for rekeying IKE_SAs in IKEv2 using the ikelifetime parameter.
268   As specified in IKEv2, no reauthentication is done (unlike in IKEv1), only
269   new keys are generated using perfect forward secrecy. An optional flag
270   which enforces reauthentication will be implemented later.
271
272 - "sha" and "sha1" are now treated as synonyms in the ike= and esp=
273   algorithm configuration statements.
274
275
276 strongswan-4.0.2
277 ----------------
278
279 - Full X.509 certificate trust chain verification has been implemented.
280   End entity certificates can be exchanged via CERT payloads. The current
281   default is leftsendcert=always, since CERTREQ payloads are not supported
282   yet. Optional CRLs must be imported locally into /etc/ipsec.d/crls.
283
284 - Added support for leftprotoport/rightprotoport parameters in IKEv2. IKEv2 
285   would offer more possibilities for traffic selection, but the Linux kernel
286   currently does not support it. That's why we stick with these simple 
287   ipsec.conf rules for now.
288
289 - Added Dead Peer Detection (DPD) which checks liveliness of remote peer if no
290   IKE or ESP traffic is received. DPD is currently hardcoded (dpdaction=clear,
291   dpddelay=60s).
292
293 - Initial NAT traversal support in IKEv2. Charon includes NAT detection
294   notify payloads to detect NAT routers between the peers. It switches
295   to port 4500, uses UDP encapsulated ESP packets, handles peer address
296   changes gracefully and sends keep alive message periodically.
297
298 - Reimplemented IKE_SA state machine for charon, which allows simultaneous 
299   rekeying, more shared code, cleaner design, proper retransmission 
300   and a more extensible code base.
301
302 - The mixed PSK/RSA roadwarrior detection capability introduced by the
303   strongswan-2.7.0 release necessitated the pre-parsing of the IKE proposal
304   payloads by the responder right before any defined IKE Main Mode state had
305   been established. Although any form of bad proposal syntax was being correctly
306   detected by the payload parser, the subsequent error handler didn't check
307   the state pointer before logging current state information, causing an
308   immediate crash of the pluto keying daemon due to a NULL pointer.
309
310
311 strongswan-4.0.1
312 ----------------
313
314 - Added algorithm selection to charon: New default algorithms for 
315   ike=aes128-sha-modp2048, as both daemons support it. The default
316   for IPsec SAs is now esp=aes128-sha,3des-md5. charon handles
317   the ike/esp parameter the same way as pluto. As this syntax does
318   not allow specification of a pseudo random function, the same 
319   algorithm as for integrity is used (currently sha/md5). Supported
320   algorithms for IKE:
321     Encryption: aes128, aes192, aes256
322     Integrity/PRF: md5, sha (using hmac)
323     DH-Groups: modp768, 1024, 1536, 2048, 4096, 8192
324   and for ESP:
325     Encryption: aes128, aes192, aes256, 3des, blowfish128, 
326                 blowfish192, blowfish256
327     Integrity: md5, sha1
328   More IKE encryption algorithms will come after porting libcrypto into
329   libstrongswan. 
330
331 - initial support for rekeying CHILD_SAs using IKEv2. Currently no
332   perfect forward secrecy is used. The rekeying parameters rekey,
333   rekeymargin, rekeyfuzz and keylife from ipsec.conf are now supported
334   when using IKEv2. WARNING: charon currently is unable to handle
335   simultaneous rekeying. To avoid such a situation, use a large
336   rekeyfuzz, or even better, set rekey=no on one peer.
337
338 - support for host2host, net2net, host2net (roadwarrior) tunnels
339   using predefined RSA certificates (see uml scenarios for
340   configuration examples).
341
342 - new build environment featuring autotools. Features such
343   as HTTP, LDAP and smartcard support may be enabled using
344   the ./configure script. Changing install directories 
345   is possible, too. See ./configure --help for more details.
346
347 - better integration of charon with ipsec starter, which allows
348   (almost) transparent operation with both daemons. charon
349   handles ipsec commands up, down, status, statusall, listall,
350   listcerts and allows proper load, reload and delete of connections
351   via ipsec starter.
352
353
354 strongswan-4.0.0
355 ----------------
356
357 - initial support of the IKEv2 protocol. Connections in
358   ipsec.conf designated by keyexchange=ikev2 are negotiated 
359   by the new IKEv2 charon keying daemon whereas those marked
360   by keyexchange=ikev1 or the default keyexchange=ike are
361   handled thy the IKEv1 pluto keying daemon. Currently only
362   a limited subset of functions are available with IKEv2
363   (Default AES encryption, authentication based on locally
364   imported X.509 certificates, unencrypted private RSA keys
365   in PKCS#1 file format, limited functionality of the ipsec
366   status command).
367
368
369 strongswan-2.7.0
370 ----------------
371
372 - the dynamic iptables rules from the _updown_x509 template
373   for KLIPS and the _updown_policy template for NETKEY have
374   been merged into the default _updown script. The existing
375   left|rightfirewall keyword causes the automatic insertion
376   and deletion of ACCEPT rules for tunneled traffic upon
377   the successful setup and teardown of an IPsec SA, respectively.
378   left|rightfirwall can be used with KLIPS under any Linux 2.4
379   kernel or with NETKEY under a Linux kernel version >= 2.6.16
380   in conjuction with iptables >= 1.3.5. For NETKEY under a Linux
381   kernel version < 2.6.16 which does not support IPsec policy
382   matching yet, please continue to use a copy of the _updown_espmark
383   template loaded via the left|rightupdown keyword.
384
385 - a new left|righthostaccess keyword has been introduced which
386   can be used in conjunction with left|rightfirewall and the
387   default _updown script. By default leftfirewall=yes inserts
388   a bi-directional iptables FORWARD rule for a local client network
389   with a netmask different from 255.255.255.255 (single host).
390   This does not allow to access the VPN gateway host via its
391   internal network interface which is part of the client subnet
392   because an iptables INPUT and OUTPUT rule would be required.
393   lefthostaccess=yes will cause this additional ACCEPT rules to
394   be inserted. 
395
396 - mixed PSK|RSA roadwarriors are now supported. The ISAKMP proposal
397   payload is preparsed in order to find out whether the roadwarrior
398   requests PSK or RSA so that a matching connection candidate can
399   be found.
400
401
402 strongswan-2.6.4
403 ----------------
404
405 - the new _updown_policy template allows ipsec policy based
406   iptables firewall rules. Required are iptables version
407   >= 1.3.5 and linux kernel >= 2.6.16. This script obsoletes
408   the _updown_espmark template, so that no INPUT mangle rules 
409   are required any more.
410
411 - added support of DPD restart mode
412
413 - ipsec starter now allows the use of wildcards in include
414   statements as e.g. in "include /etc/my_ipsec/*.conf".
415   Patch courtesy of Matthias Haas.
416
417 - the Netscape OID 'employeeNumber' is now recognized and can be
418   used as a Relative Distinguished Name in certificates.
419
420
421 strongswan-2.6.3
422 ----------------
423
424 - /etc/init.d/ipsec or /etc/rc.d/ipsec is now a copy of the ipsec 
425   command and not of ipsec setup any more.
426
427 - ipsec starter now supports AH authentication in conjunction with
428   ESP encryption. AH authentication is configured in ipsec.conf
429   via the auth=ah parameter.
430   
431 - The command ipsec scencrypt|scdecrypt <args> is now an alias for
432   ipsec whack --scencrypt|scdecrypt <args>.
433
434 - get_sa_info() now determines for the native netkey IPsec stack
435   the exact time of the last use of an active eroute. This information
436   is used by the Dead Peer Detection algorithm and is also displayed by
437   the ipsec status command.
438   
439
440 strongswan-2.6.2
441 ----------------
442
443 - running under the native Linux 2.6 IPsec stack, the function
444   get_sa_info() is called by ipsec auto --status to display the current
445   number of transmitted bytes per IPsec SA.
446
447 - get_sa_info() is also used  by the Dead Peer Detection process to detect
448   recent ESP activity. If ESP traffic was received from the peer within
449   the last dpd_delay interval then no R_Y_THERE notification must be sent.
450
451 - strongSwan now supports the Relative Distinguished Name "unstructuredName"
452   in ID_DER_ASN1_DN identities. The following notations are possible:
453
454     rightid="unstructuredName=John Doe"
455     rightid="UN=John Doe"
456
457 - fixed a long-standing bug which caused PSK-based roadwarrior connections
458   to segfault in the function id.c:same_id() called by keys.c:get_secret()
459   if an FQDN, USER_FQDN, or Key ID was defined, as in the following example.
460
461   conn rw
462        right=%any
463        rightid=@foo.bar
464        authby=secret
465
466 - the ipsec command now supports most ipsec auto commands (e.g. ipsec listall).
467
468 - ipsec starter didn't set host_addr and client.addr ports in whack msg.
469
470 - in order to guarantee backwards-compatibility with the script-based
471   auto function (e.g. auto --replace), the ipsec starter scripts stores
472   the defaultroute information in the temporary file /var/run/ipsec.info.
473
474 - The compile-time option USE_XAUTH_VID enables the sending of the XAUTH
475   Vendor ID which is expected by Cisco PIX 7 boxes that act as IKE Mode Config
476   servers.
477
478 - the ipsec starter now also recognizes the parameters authby=never and
479   type=passthrough|pass|drop|reject.
480
481
482 strongswan-2.6.1
483 ----------------
484
485 - ipsec starter now supports the also parameter which allows
486   a modular structure of the connection definitions. Thus
487   "ipsec start" is now ready to replace "ipsec setup".
488
489
490 strongswan-2.6.0
491 ----------------
492
493 - Mathieu Lafon's popular ipsec starter tool has been added to the
494   strongSwan distribution. Many thanks go to Stephan Scholz from astaro
495   for his integration work. ipsec starter is a C program which is going
496   to replace the various shell and awk starter scripts (setup, _plutoload,
497   _plutostart, _realsetup, _startklips, _confread, and auto). Since
498   ipsec.conf is now parsed only once, the starting of multiple tunnels is
499   accelerated tremedously.
500
501 - Added support of %defaultroute to the ipsec starter. If the IP address
502   changes, a HUP signal to the ipsec starter will automatically 
503   reload pluto's connections.
504
505 - moved most compile time configurations from pluto/Makefile to
506   Makefile.inc by defining the options USE_LIBCURL, USE_LDAP,
507   USE_SMARTCARD, and USE_NAT_TRAVERSAL_TRANSPORT_MODE.
508
509 - removed the ipsec verify and ipsec newhostkey commands
510
511 - fixed some 64-bit issues in formatted print statements
512
513 - The scepclient functionality implementing the Simple Certificate
514   Enrollment Protocol (SCEP) is nearly complete but hasn't been
515   documented yet.
516
517
518 strongswan-2.5.7
519 ----------------
520
521 - CA certicates are now automatically loaded from a smartcard
522   or USB crypto token and appear in the ipsec auto --listcacerts
523   listing.
524
525
526 strongswan-2.5.6
527 ----------------
528
529 - when using "ipsec whack --scencrypt <data>" with  a PKCS#11
530   library that does not support the C_Encrypt() Cryptoki
531   function (e.g. OpenSC), the RSA encryption is done in
532   software using the public key fetched from the smartcard.
533
534 - The scepclient function now allows to define the 
535   validity of a self-signed certificate using the --days,
536   --startdate, and --enddate options. The default validity
537   has been changed from one year to five years.
538
539
540 strongswan-2.5.5
541 ----------------
542
543 - the config setup parameter pkcs11proxy=yes opens pluto's PKCS#11
544   interface to other applications for RSA encryption and decryption
545   via the whack interface. Notation:
546
547   ipsec whack --scencrypt <data>
548              [--inbase  16|hex|64|base64|256|text|ascii]
549              [--outbase 16|hex|64|base64|256|text|ascii]
550              [--keyid <keyid>]
551
552   ipsec whack --scdecrypt <data>
553              [--inbase  16|hex|64|base64|256|text|ascii]
554              [--outbase 16|hex|64|base64|256|text|ascii]
555              [--keyid <keyid>]
556
557   The default setting for inbase and outbase is hex. 
558
559   The new proxy interface can be used for securing symmetric
560   encryption keys required by the cryptoloop or dm-crypt
561   disk encryption schemes, especially in the case when
562   pkcs11keepstate=yes causes pluto to lock the pkcs11 slot
563   permanently.
564
565 - if the file /etc/ipsec.secrets is lacking during the startup of
566   pluto then the root-readable file /etc/ipsec.d/private/myKey.der
567   containing a 2048 bit RSA private key and a matching self-signed
568   certificate stored in the file /etc/ipsec.d/certs/selfCert.der
569   is automatically generated by calling the function
570
571   ipsec scepclient --out pkcs1 --out cert-self
572
573   scepclient was written by Jan Hutter and Martin Willi, students
574   at the University of Applied Sciences in Rapperswil, Switzerland.
575
576
577 strongswan-2.5.4
578 ----------------
579
580 - the current extension of the PKCS#7 framework introduced
581   a parsing error in PKCS#7 wrapped X.509 certificates that are
582   e.g. transmitted by Windows XP when multi-level CAs are used.
583   the parsing syntax has been fixed.
584
585 - added a patch by Gerald Richter which tolerates multiple occurrences
586   of the ipsec0 interface when using KLIPS.
587
588
589 strongswan-2.5.3
590 ----------------
591
592 - with gawk-3.1.4 the word "default2 has become a protected
593   keyword for use in switch statements and cannot be used any
594   more in the strongSwan scripts. This problem has been
595   solved by renaming "default" to "defaults" and "setdefault"
596   in the scripts _confread and auto, respectively.
597
598 - introduced the parameter leftsendcert with the values
599
600   always|yes (the default, always send a cert)
601   ifasked    (send the cert only upon a cert request)
602   never|no   (never send a cert, used for raw RSA keys and
603               self-signed certs) 
604
605 - fixed the initialization of the ESP key length to a default of
606   128 bits in the case that the peer does not send a key length
607    attribute for AES encryption.
608
609 - applied Herbert Xu's uniqueIDs patch
610
611 - applied Herbert Xu's CLOEXEC patches
612
613
614 strongswan-2.5.2
615 ----------------
616
617 - CRLs can now be cached also in the case when the issuer's
618   certificate does not contain a subjectKeyIdentifier field.
619   In that case the subjectKeyIdentifier is computed by pluto as the
620   160 bit SHA-1 hash of the issuer's public key in compliance
621   with section 4.2.1.2 of RFC 3280.
622
623 - Fixed a bug introduced by strongswan-2.5.1 which eliminated
624   not only multiple Quick Modes of a given connection but also
625   multiple connections between two security gateways.
626
627
628 strongswan-2.5.1
629 ----------------
630
631 - Under the native IPsec of the Linux 2.6 kernel, a %trap eroute
632   installed either by setting auto=route in ipsec.conf or by
633   a connection put into hold, generates an XFRM_AQUIRE event
634   for each packet that wants to use the not-yet exisiting
635   tunnel. Up to now each XFRM_AQUIRE event led to an entry in
636   the Quick Mode queue, causing multiple IPsec SA to be
637   established in rapid succession. Starting with strongswan-2.5.1
638   only a single IPsec SA is established per host-pair connection.
639
640 - Right after loading the PKCS#11 module, all smartcard slots are
641   searched for certificates. The result can be viewed using
642   the command
643
644     ipsec auto --listcards
645
646   The certificate objects found in the slots are numbered
647   starting with #1, #2, etc. This position number can be used to address
648   certificates (leftcert=%smartcard) and keys (: PIN %smartcard)
649   in ipsec.conf and ipsec.secrets, respectively:
650
651     %smartcard      (selects object #1)
652     %smartcard#1    (selects object #1)
653     %smartcard#3    (selects object #3)
654
655   As an alternative the existing retrieval scheme can be used:
656
657     %smartcard:45   (selects object with id=45)
658     %smartcard0     (selects first object in slot 0)
659     %smartcard4:45  (selects object in slot 4 with id=45)
660
661 - Depending on the settings of CKA_SIGN and CKA_DECRYPT
662   private key flags either C_Sign() or C_Decrypt() is used
663   to generate a signature.
664
665 - The output buffer length parameter siglen in C_Sign()
666   is now initialized to the actual size of the output
667   buffer prior to the function call. This fixes the
668   CKR_BUFFER_TOO_SMALL error that could occur when using
669   the OpenSC PKCS#11 module.
670
671 - Changed the initialization of the PKCS#11 CK_MECHANISM in
672   C_SignInit() to mech  = { CKM_RSA_PKCS, NULL_PTR, 0 }.
673
674 - Refactored the RSA public/private key code and transferred it
675   from keys.c to the new pkcs1.c file as a preparatory step
676   towards the release of the SCEP client.
677
678
679 strongswan-2.5.0
680 ----------------
681
682 - The loading of a PKCS#11 smartcard library module during
683   runtime does not require OpenSC library functions any more
684   because the corresponding code has been integrated into
685   smartcard.c. Also the RSAREF pkcs11 header files have been
686   included in a newly created pluto/rsaref directory so that
687   no external include path has to be defined any longer.
688
689 - A long-awaited feature has been implemented at last:
690   The local caching of CRLs fetched via HTTP or LDAP, activated
691   by the parameter cachecrls=yes in the config setup section
692   of ipsec.conf. The dynamically fetched CRLs are stored under
693   a unique file name containing the issuer's subjectKeyID
694   in /etc/ipsec.d/crls.
695   
696 - Applied a one-line patch courtesy of Michael Richardson
697   from the Openswan project which fixes the kernel-oops
698   in KLIPS when an snmp daemon is running on the same box.
699
700
701 strongswan-2.4.4
702 ----------------
703
704 - Eliminated null length CRL distribution point strings.
705
706 - Fixed a trust path evaluation bug introduced with 2.4.3
707
708
709 strongswan-2.4.3
710 ----------------
711
712 - Improved the joint OCSP / CRL revocation policy.
713   OCSP responses have precedence over CRL entries.
714
715 - Introduced support of CRLv2 reason codes.
716
717 - Fixed a bug with key-pad equipped readers which caused
718   pluto to prompt for the pin via the console when the first
719   occasion to enter the pin via the key-pad was missed.
720
721 - When pluto is built with LDAP_V3 enabled, the library
722   liblber required by newer versions of openldap is now
723   included.
724
725
726 strongswan-2.4.2
727 ----------------
728
729 - Added the _updown_espmark template which requires all
730   incoming ESP traffic to be marked with a default mark
731   value of 50.
732   
733 - Introduced the pkcs11keepstate parameter in the config setup
734   section of ipsec.conf. With pkcs11keepstate=yes the PKCS#11
735   session and login states are kept as long as possible during 
736   the lifetime of pluto. This means that a PIN entry via a key
737   pad has to be done only once.
738
739 - Introduced the pkcs11module parameter in the config setup
740   section of ipsec.conf which specifies the PKCS#11 module
741   to be used with smart cards. Example:
742   
743     pkcs11module=/usr/lib/pkcs11/opensc-pkcs11.lo
744   
745 - Added support of smartcard readers equipped with a PIN pad.
746
747 - Added patch by Jay Pfeifer which detects when netkey
748   modules have been statically built into the Linux 2.6 kernel.
749
750 - Added two patches by Herbert Xu. The first uses ip xfrm
751   instead of setkey to flush the IPsec policy database. The
752   second sets the optional flag in inbound IPComp SAs only.
753     
754 - Applied Ulrich Weber's patch which fixes an interoperability
755   problem between native IPsec and KLIPS systems caused by
756   setting the replay window to 32 instead of 0 for ipcomp.
757
758
759 strongswan-2.4.1
760 ----------------
761
762 - Fixed a bug which caused an unwanted Mode Config request
763   to be initiated in the case where "right" was used to denote
764   the local side in ipsec.conf and "left" the remote side,
765   contrary to the recommendation that "right" be remote and
766   "left" be"local".
767
768
769 strongswan-2.4.0a
770 -----------------
771
772 - updated Vendor ID to strongSwan-2.4.0
773
774 - updated copyright statement to include David Buechi and
775   Michael Meier
776   
777   
778 strongswan-2.4.0
779 ----------------
780
781 - strongSwan now communicates with attached smartcards and
782   USB crypto tokens via the standardized PKCS #11 interface.
783   By default the OpenSC library from www.opensc.org is used
784   but any other PKCS#11 library could be dynamically linked.
785   strongSwan's PKCS#11 API was implemented by David Buechi
786   and Michael Meier, both graduates of the Zurich University
787   of Applied Sciences in Winterthur, Switzerland.
788
789 - When a %trap eroute is triggered by an outgoing IP packet
790   then the native IPsec stack of the Linux 2.6 kernel [often/
791   always?] returns an XFRM_ACQUIRE message with an undefined
792   protocol family field and the connection setup fails.
793   As a workaround IPv4 (AF_INET) is now assumed.
794   
795 - the results of the UML test scenarios are now enhanced 
796   with block diagrams of the virtual network topology used
797   in a particular test. 
798
799
800 strongswan-2.3.2
801 ----------------
802
803 - fixed IV used to decrypt informational messages.
804   This bug was introduced with Mode Config functionality.
805  
806 - fixed NCP Vendor ID.
807
808 - undid one of Ulrich Weber's maximum udp size patches
809   because it caused a segmentation fault with NAT-ed
810   Delete SA messages.
811   
812 - added UML scenarios wildcards and attr-cert which
813   demonstrate the implementation of IPsec policies based
814   on wildcard parameters contained in Distinguished Names and
815   on X.509 attribute certificates, respectively.
816
817
818 strongswan-2.3.1
819 ----------------
820
821 - Added basic Mode Config functionality
822
823 - Added Mathieu Lafon's patch which upgrades the status of
824   the NAT-Traversal implementation to RFC 3947.
825  
826 - The _startklips script now also loads the xfrm4_tunnel
827   module.
828   
829 - Added Ulrich Weber's netlink replay window size and
830   maximum udp size patches.
831
832 - UML testing now uses the Linux 2.6.10 UML kernel by default.
833    
834
835 strongswan-2.3.0
836 ----------------
837
838 - Eric Marchionni and Patrik Rayo, both recent graduates from
839   the Zuercher Hochschule Winterthur in Switzerland, created a
840   User-Mode-Linux test setup for strongSwan. For more details
841   please read the INSTALL and README documents in the testing
842   subdirectory.
843
844 - Full support of group attributes based on X.509 attribute
845   certificates. Attribute certificates can be generated 
846   using the openac facility. For more details see
847    
848   man ipsec_openac.
849  
850   The group attributes can be used in connection definitions
851   in order to give IPsec access to specific user groups.
852   This is done with the new parameter left|rightgroups as in
853   
854   rightgroups="Research, Sales"
855
856   giving access to users possessing the group attributes
857   Research or Sales, only.
858
859 - In Quick Mode clients with subnet mask /32 are now
860   coded as IP_V4_ADDRESS or IP_V6_ADDRESS. This should 
861   fix rekeying problems with the SafeNet/SoftRemote and NCP
862   Secure Entry Clients.
863
864 - Changed the defaults of the ikelifetime and keylife parameters
865   to 3h and 1h, respectively. The maximum allowable values are
866   now both set to 24 h.
867
868 - Suppressed notification wars between two IPsec peers that
869   could e.g. be triggered by incorrect ISAKMP encryption.
870
871 - Public RSA keys can now have identical IDs if either the
872   issuing CA or the serial number is different. The serial
873   number of a certificate is now shown by the command
874   
875   ipsec auto --listpubkeys
876
877
878 strongswan-2.2.2
879 ----------------
880
881 - Added Tuomo Soini's sourceip feature which allows a strongSwan
882   roadwarrior to use a fixed Virtual IP (see README section 2.6)
883   and reduces the well-known four tunnel case on VPN gateways to
884   a single tunnel definition (see README section 2.4).
885
886 - Fixed a bug occuring with NAT-Traversal enabled when the responder
887   suddenly turns initiator and the initiator cannot find a matching
888   connection because of the floated IKE port 4500.
889   
890 - Removed misleading ipsec verify command from barf.
891
892 - Running under the native IP stack, ipsec --version now shows
893   the Linux kernel version (courtesy to the Openswan project).
894
895
896 strongswan-2.2.1
897 ----------------
898
899 - Introduced the ipsec auto --listalgs monitoring command which lists
900   all currently registered IKE and ESP algorithms.
901
902 - Fixed a bug in the ESP algorithm selection occuring when the strict flag
903   is set and the first proposed transform does not match.
904   
905 - Fixed another deadlock in the use of the lock_certs_and_keys() mutex,
906   occuring when a smartcard is present.
907
908 - Prevented that a superseded Phase1 state can trigger a DPD_TIMEOUT event.
909   
910 - Fixed the printing of the notification names (null)
911
912 - Applied another of Herbert Xu's Netlink patches.
913
914
915 strongswan-2.2.0
916 ----------------
917
918 - Support of Dead Peer Detection. The connection parameter
919
920     dpdaction=clear|hold
921      
922   activates DPD for the given connection.
923
924 - The default Opportunistic Encryption (OE) policy groups are not
925   automatically included anymore. Those wishing to activate OE can include
926   the policy group with the following statement in ipsec.conf:
927   
928     include /etc/ipsec.d/examples/oe.conf
929   
930   The default for [right|left]rsasigkey is now set to %cert.
931
932 - strongSwan now has a Vendor ID of its own which can be activated
933   using the compile option VENDORID
934
935 - Applied Herbert Xu's patch which sets the compression algorithm correctly.
936
937 - Applied Herbert Xu's patch fixing an ESPINUDP problem
938
939 - Applied Herbert Xu's patch setting source/destination port numbers.
940
941 - Reapplied one of Herbert Xu's NAT-Traversal patches which got
942   lost during the migration from SuperFreeS/WAN.
943   
944 - Fixed a deadlock in the use of the lock_certs_and_keys() mutex.
945
946 - Fixed the unsharing of alg parameters when instantiating group
947   connection.
948   
949
950 strongswan-2.1.5
951 ----------------
952
953 - Thomas Walpuski made me aware of a potential DoS attack via
954   a PKCS#7-wrapped certificate bundle which could overwrite valid CA
955   certificates in Pluto's authority certificate store. This vulnerability
956   was fixed by establishing trust in CA candidate certificates up to a
957   trusted root CA prior to insertion into Pluto's chained list.
958
959 - replaced the --assign option by the -v option in the auto awk script
960   in order to make it run with mawk under debian/woody.
961
962
963 strongswan-2.1.4
964 ----------------
965
966 - Split of the status information between ipsec auto  --status (concise)
967   and ipsec auto --statusall (verbose). Both commands can be used with
968   an optional connection selector:
969
970     ipsec auto --status[all] <connection_name>
971
972 - Added the description of X.509 related features to the ipsec_auto(8)
973   man page.
974
975 - Hardened the ASN.1 parser in debug mode, especially the printing
976   of malformed distinguished names.
977
978 - The size of an RSA public key received in a certificate is now restricted to
979
980     512 bits <= modulus length <= 8192 bits.
981
982 - Fixed the debug mode enumeration.
983
984
985 strongswan-2.1.3
986 ----------------
987
988 - Fixed another PKCS#7 vulnerability which could lead to an
989   endless loop while following the X.509 trust chain.
990   
991
992 strongswan-2.1.2
993 ----------------
994
995 - Fixed the PKCS#7 vulnerability discovered by Thomas Walpuski
996   that accepted end certificates having identical issuer and subject
997   distinguished names in a multi-tier X.509 trust chain.
998   
999
1000 strongswan-2.1.1
1001 ----------------
1002
1003 - Removed all remaining references to ipsec_netlink.h in KLIPS.
1004
1005
1006 strongswan-2.1.0
1007 ----------------
1008
1009 - The new "ca" section allows to define the following parameters:
1010
1011   ca kool
1012      cacert=koolCA.pem                   # cacert of kool CA
1013      ocspuri=http://ocsp.kool.net:8001   # ocsp server
1014      ldapserver=ldap.kool.net            # default ldap server
1015      crluri=http://www.kool.net/kool.crl # crl distribution point
1016      crluri2="ldap:///O=Kool, C= .."     # crl distribution point #2
1017      auto=add                            # add, ignore
1018      
1019   The ca definitions can be monitored via the command
1020   
1021      ipsec auto --listcainfos
1022
1023 - Fixed cosmetic corruption of /proc filesystem by integrating
1024   D. Hugh Redelmeier's freeswan-2.06 kernel fixes.
1025
1026
1027 strongswan-2.0.2
1028 ----------------
1029
1030 - Added support for the 818043 NAT-Traversal update of Microsoft's
1031   Windows 2000/XP IPsec client which sends an ID_FQDN during Quick Mode.
1032   
1033 - A symbolic link to libcrypto is now added in the kernel sources 
1034   during kernel compilation
1035   
1036 - Fixed a couple of 64 bit issues (mostly casts to int).
1037   Thanks to Ken Bantoft who checked my sources on a 64 bit platform.
1038
1039 - Replaced s[n]printf() statements in the kernel by ipsec_snprintf().
1040   Credits go to D. Hugh Redelmeier, Michael Richardson, and Sam Sgro
1041   of the FreeS/WAN team who solved this problem with the 2.4.25 kernel.
1042
1043
1044 strongswan-2.0.1
1045 ----------------
1046
1047 - an empty ASN.1 SEQUENCE OF or SET OF object (e.g. a subjectAltName
1048   certificate extension which contains no generalName item)  can cause
1049   a pluto crash. This bug has been fixed. Additionally the ASN.1 parser has
1050   been hardened to make it more robust against malformed ASN.1 objects.
1051
1052 - applied Herbert Xu's NAT-T patches which fixes NAT-T under the native
1053   Linux 2.6 IPsec stack.
1054   
1055   
1056 strongswan-2.0.0
1057 ----------------
1058
1059 - based on freeswan-2.04, x509-1.5.3, nat-0.6c, alg-0.8.1rc12