17945 Commits

Author SHA1 Message Date
Andreas Steffen
c4984fd2db Version bump to 6.0dr6 6.0dr6 2021-03-21 16:13:52 +01:00
Andreas Steffen
e022750549 oqs: Updated Falcon sig tests to liboqs-0.5.0 2021-03-21 16:13:52 +01:00
Andreas Steffen
0763eea7fa oqs: Upgraded Dilithium to NIST Round 3.1 2021-03-21 12:23:52 +01:00
Andreas Steffen
5dcc920c9c Version bump to 6.0dr5 2021-03-21 12:22:44 +01:00
Andreas Steffen
6a18819e4a test-vectors: No changes for Saber KE NIST Round 3 tests 2021-03-21 12:22:44 +01:00
Andreas Steffen
91aa03bda4 oqs: Support for HQC key exchange algorithm 2021-03-21 12:22:44 +01:00
Andreas Steffen
180711df39 test-vectors: Upgraded Kyber KE tests to NIST Round 3 2021-03-21 12:22:44 +01:00
Andreas Steffen
35071bf819 test-vectors: Upgraded NTRU KE tests to NIST Round 3 2021-03-21 12:22:44 +01:00
Andreas Steffen
84837ab363 scripts: Fixed NIST KAT scripts 2021-03-21 12:22:44 +01:00
Andreas Steffen
0972e67742 oqs: Support of Falcon signature algorithms 2021-03-21 12:22:44 +01:00
Andreas Steffen
a2d24e20c2 oqs: Complete post-quantum signature support 2021-03-21 12:22:44 +01:00
Andreas Steffen
ca1103ea2b ntru: Removed legacy NTRU key exchange method 2021-03-21 12:22:44 +01:00
Andreas Steffen
1a591ed8fd newhope: Removed legacy Newhope key exchange method 2021-03-21 12:22:44 +01:00
Andreas Steffen
60a682d6a0 bliss: Removed legacy BLISS signatures 2021-03-21 12:22:44 +01:00
Andreas Steffen
215e2b69e1 oqs: Added signature tests 2021-03-21 12:22:44 +01:00
Andreas Steffen
648bc3efab scripts: Added nist_sig_kat script 2021-03-21 12:22:44 +01:00
Andreas Steffen
c3b94bb5a7 oqs: Postponed freeing of kem object 2021-03-21 12:22:44 +01:00
Andreas Steffen
f273f43145 oqs: Support of Dilithium signature algorithms 2021-03-21 12:22:44 +01:00
Andreas Steffen
7908fbc531 oqs: Update to NIST round 3 KEM candidates 2021-03-21 12:22:44 +01:00
Andreas Steffen
f22788b39f oqs: Removed BIKE round 1 version including test vectors 2021-03-21 12:22:44 +01:00
Andreas Steffen
24fe4cd2b0 testing: Added swanctl/rw-cert-qske scenario 2021-03-21 12:22:44 +01:00
Andreas Steffen
c6e621ad29 wip: ikev2: Change multi-KE codepoints for testing 2021-03-21 12:22:43 +01:00
Andreas Steffen
da817518da vici: List additional key exchanges
Co-authored-by: Tobias Brunner <tobias@strongswan.org>
2021-03-21 12:22:43 +01:00
Andreas Steffen
60edae4a11 frodo: FrodoKEM KE method 2021-03-21 12:22:43 +01:00
Andreas Steffen
a3362698b0 oqs: Added post-quantum KEM methods based on liboqs 2021-03-21 12:22:43 +01:00
Andreas Steffen
abb15cb90a nist_kem_kat: Added script formating NIST KEM KAT records into ke_test vectors 2021-03-21 12:22:43 +01:00
Andreas Steffen
c56f465712 test-vectors: Added NIST KEM test vectors 2021-03-21 12:22:43 +01:00
Andreas Steffen
a1f34c138a key-exchange: Joint ke_test_vector format for DH and KEM
Both Diffie-Hellman (DH) and Key Encapsulation Mechanism (KEM) based
key exchange methods use a common ke_test_vector format. The
set_seed() function is used to provide deterministic private key
material for the crypto tests.
2021-03-21 12:22:43 +01:00
Andreas Steffen
224b4515b9 key-exchange: Added NIST round 2 submission KEM candidates 2021-03-21 12:22:43 +01:00
Tobias Brunner
c7a18a108a wip: ike-init: Indicate support for IKE_INTERMEDIATE
wip: Not strictly necessary. I guess we should also add some checks if
the notify was not received.
2021-03-21 12:22:43 +01:00
Tobias Brunner
1c52b43b88 proposal: Add helper to check if additional key exchanges are contained 2021-03-21 12:22:43 +01:00
Tobias Brunner
23a7555a70 proposal: Accept NONE for additional key exchanges also for IKE proposals 2021-03-21 12:22:43 +01:00
Tobias Brunner
a0b5bb34cd unit-tests: Add tests for CHILD_SA rekeying with multiple key exchanges 2021-03-21 12:22:43 +01:00
Tobias Brunner
e64787ded1 unit-tests: Add tests for CHILD_SA creation with multiple key exchanges 2021-03-21 12:22:43 +01:00
Tobias Brunner
ccc4d49b73 unit-tests: Tests for additional key exchanges 2021-03-21 12:22:43 +01:00
Tobias Brunner
70b8c73562 unit-tests: Support multiple proposals in exchange tests 2021-03-21 12:22:43 +01:00
Tobias Brunner
67a0a6a27e unit-tests: Hand out an actual shared secret in mock KE implementation
Makes key derivation a bit more realistic.
2021-03-21 12:22:43 +01:00
Tobias Brunner
200e19cd95 proposal: Add prefix for additional key exchanges when logging proposals 2021-03-21 12:22:43 +01:00
Tobias Brunner
50414d06c5 key-exchange: Add dynamic parser for additional key exchange methods 2021-03-21 12:22:43 +01:00
Tobias Brunner
bed581c732 child-rekey: Support CHILD_SA rekeying with multiple key exchanges 2021-03-21 12:22:43 +01:00
Tobias Brunner
9a41dae9a1 child-sa: Cache and forward actual initiator flag for outbound SA
Kernel interfaces (e.g. TKM) might rely on this flag to be correct.
2021-03-21 12:22:43 +01:00
Tobias Brunner
1b547e291d unit-tests: Fix CHILD_SA rekey tests after INVALID_KE_PAYLOAD handling changes
The responder doesn't create a CHILD_SA and allocate an SPI anymore
when responding with an INVALID_KE_PAYLOAD notify.
2021-03-21 12:22:43 +01:00
Tobias Brunner
cc63aa0d29 child-create: Add support for multiple key exchanges 2021-03-21 12:22:43 +01:00
Tobias Brunner
b8e9b71aa9 ike-rekey: Support IKE_SA rekeying with multiple key exchanges 2021-03-21 12:22:43 +01:00
Tobias Brunner
ef1e4fff1a ikev2: Send deletes also for rekeyed SAs
This way we can use the IKE_REKEYED state for both redundant and old SAs
to suppress ike_updown().

In the ike-delete task we don't suppress events in state IKE_REKEYING as
that's the case when we delete an SA the peer is currently rekeying with
multiple key exchanges.
2021-03-21 12:22:43 +01:00
Tobias Brunner
fd8b973edd ikev2: Let ike/child-rekey tasks indicate if the passive task was adopted
This gives us more flexibility with tasks that return NEED_MORE (currently
none of the colliding tasks do, but that will change with multi-KE
rekeyings).  The active task has to check itself if the passive task is
done and should be removed from the task manager.
2021-03-21 12:22:43 +01:00
Tobias Brunner
9a6e95dea9 ike-rekey: Remove collision task type checks
Since f67199378df9 ("ike-rekey: Handle undetected collisions also if
delete is delayed") we only ever track tasks of type TASK_IKE_REKEY, so
there is no need to check the type or use the generic task_t interface.

Also changed some of the comments to clarify collision handling.
2021-03-21 12:22:43 +01:00
Tobias Brunner
6de79119f8 ike-rekey: Don't actively rekey already rekeyed SAs
If the peer successfully rekeyed the SA it gets marked as IKE_REKEYED
and it remains until the peer deletes it (or a timeout).  There is no
point in rekeying such SAs again.

IKE_REKEYING will be relevant if we have multi-KE rekeyings and are
waiting for followup key exchanges for a passive rekeying.
2021-03-21 12:22:43 +01:00
Tobias Brunner
c8a5ae2def ike-init: Ignore COOKIE payloads during rekeying
This ensures that process_i() only returns NEED_MORE due to multiple
key exchanges or an INVALID_KE_PAYLOAD notify.
2021-03-21 12:22:43 +01:00
Tobias Brunner
0c6758c135 ike-init: Add support for multiple key exchanges
Initially, this is handled with a key derivation for each
IKE_INTERMEDIATE exchange.  When rekeying the keys are derived only when
all IKE_FOLLOWUP_KE exchanges are done.
2021-03-21 12:22:43 +01:00