Commit graph

193 commits

Author SHA1 Message Date
f33d7756b8 Use inline function for alignment 2012-09-15 19:57:18 +02:00
b2d02587fc Add support for kernel AES implementations
This gives AES128 a slight boost on my system, but it is still slower than
XSalsa20... I should probably write userspace code that can make use of AES-NI
and CLMUL. Or directly jump to the kernel space with the whole forwarding code.

Nevertheless, this might run nicely on Geode CPUs and similar hardware with AES
acceleration, at least if the context switches aren't too expensive...
2012-09-15 08:55:50 +02:00
541ee8295e Add support for using kernel implementations of GHASH
This doesn't really improve performance on my Intel CPU (I guess due to the
context switches), but more tests have to be made, in combination with
offloading the AES to the kernel as well, and on different hardware.
2012-09-15 07:25:56 +02:00
37385fcd83 Rework some parts of the AES128-GCM method
These changes improve the performance of the AES128-GCM method by ~10% on my
Intel CPU when compiled with -O2.

Furthermore, the AES and the GHASH parts are separated now, allowing to switch
to other implementations of the algorithms more easily.
2012-09-15 06:01:11 +02:00
430a8557d4 Improve data alignment
Ensure that the actual packet data is always aligned to a multiple of 8.
2012-09-15 03:52:08 +02:00
3b67cdb32f Critical: fix various problems in the AES128-GCM method
There were several bugs in the code that were severely lowering the expected
security and completely breaking compatiblity with alternative implementations.
The fixed version is checked against the test vectors specified in [1], and
should thus be correct.

[1] http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-revised-spec.pdf
2012-09-14 03:49:27 +02:00
04cd3761f1 Fix typo in --machine-readable help message 2012-07-02 20:06:37 +02:00
10758956f5 Remove unneeded include 2012-07-02 17:41:45 +02:00
19c765db7b Require whitespace after keywords and strings etc. in config files 2012-07-02 15:43:21 +02:00
1fdfde1951 Version increment 2012-07-01 18:19:47 +02:00
87c28ed8bb Add missing _GNU_SOURCE definition 2012-07-01 18:19:15 +02:00
1a86ef3c5c Version increment 2012-07-01 17:04:26 +02:00
a0be6d31b4 Add support for multiple crypto methods without reconfiguration 2012-07-01 17:01:13 +02:00
cb74214fff Fix invalid print on handshake failure with an unknown code. 2012-07-01 16:18:33 +02:00
c8620dbeef Remove unneeded size bytes from GCM to suppress warnings 2012-06-27 18:26:21 +02:00
4bda71ac39 Implement GCM with lookup table 2012-06-27 15:01:33 +02:00
8b4da71374 Fix critical memory corruption bug in core 2012-06-27 14:49:02 +02:00
ddd868d44f Optimized GCM implementation 2012-06-27 09:12:29 +02:00
5e451533dd Primitive aes128-gcm implementation 2012-06-27 02:28:49 +02:00
0ec1eb3d4c Release 0.4 2012-06-24 22:33:13 +02:00
c4955de2ec Don't re-resolve dynamic-floating peers on key refresh 2012-06-19 05:28:20 +02:00
caaba5ea19 Version increment 2012-06-15 04:15:16 +02:00
e930fc0f76 Allow setting dynamic peers to flaoting 2012-06-15 04:13:49 +02:00
bffe80f3d2 Avoid using the same handshake key to establish more than one session
This fix prevents a potential attack using intentional packet reordering to
initialize more than one session with using the same handshake keys, leading
to more that one session to be initialized with the same key data altogether,
allowing to decrypt some packets in the worst case.
2012-06-15 03:28:42 +02:00
b0a169a146 Limit handshake frequency where possible 2012-06-07 00:56:47 +02:00
25bf4f4901 Fix memory leak 2012-06-07 00:56:39 +02:00
33ec563983 Limit resolve frequency 2012-06-06 22:38:36 +02:00
7297dd73d5 Improve some log levels 2012-06-06 13:14:54 +02:00
b3d678c5f2 Increase reorder count 2012-06-05 22:32:29 +02:00
bd02e790f9 Increment rc version 2012-06-05 18:17:20 +02:00
0f14f55629 Fix possible duplicate session establishment
This is causing duplicate nonces in the worst case.
2012-06-05 18:10:11 +02:00
227af67a3c printf: add %p pattern 2012-06-05 18:08:26 +02:00
450bbeb8a0 Add support for receiving reordered packets 2012-06-05 00:44:05 +02:00
b6b6e059d7 Increment rc version 2012-06-04 21:08:24 +02:00
163469f1ad Make sure refresh handshakes aren't cleaned 2012-06-04 20:17:08 +02:00
210a447124 Fix key invalidation order on key refresh 2012-06-04 19:55:57 +02:00
f2bb9fd6d4 Add version string to handshake 2012-06-04 17:21:32 +02:00
a157804e7b Decreate keepalive interval 2012-06-04 15:53:41 +02:00
33a2de703d Add pidfile support 2012-06-04 14:54:50 +02:00
813535cfe4 Improve handshake logging 2012-06-04 09:42:23 +02:00
7df8f9002e Fix warning message 2012-06-02 20:20:15 +02:00
60b7732c3e Fix a possible crash involving strange resolve returns
fastd has been seen crashing on some hosts under strange circumstances. As the
bug seems to involve invalid address families, try to assure no unsupported
address families are returned from resolver.
2012-06-01 00:55:27 +02:00
10496d2dc9 Increase rc version 2012-05-24 21:13:02 +02:00
b51dc590a1 Fix segfault on logging during config 2012-05-24 21:12:15 +02:00
e3ba3e8f66 Uninline pr_log 2012-05-18 08:48:24 +02:00
6c6398d355 Increment rc version 2012-05-18 03:10:02 +02:00
4429f145e6 Don't consider enable state on peer config change detection 2012-05-18 03:08:58 +02:00
b34b3e2817 New logging facilities 2012-05-18 03:08:40 +02:00
a2b9f2c732 Add daemon mode 2012-05-17 22:24:31 +02:00
d8a3a034a1 Close inherited file handles 2012-05-17 21:30:10 +02:00