JackDoan
e8d6cd9b58
Size the buffers of a handshake packet sent through a relay for the packet, not the mtu
2026-10-15 10:43:07 -05:00
JackDoan
d190ac7446
handshake/fragment: Back every packet of an attempt with one allocation
2026-10-15 10:42:58 -05:00
JackDoan
05410034e3
handshake/fec: Encode a message from its own bytes, copying only a padded last symbol
2026-10-15 10:42:48 -05:00
JackDoan
cbcf441d7c
Decode a fragmented handshake message straight into its packet, behind room for the Nebula header, instead of copying it there
2026-10-15 10:42:39 -05:00
JackDoan
4b295e086e
handshake: Take the peer's static key from noise once per certificate check
2026-10-15 10:42:29 -05:00
JackDoan
35b3d92bdd
handshake: Let a payload's certificate alias the decrypted message rather than copying it
2026-10-15 10:42:20 -05:00
JackDoan
7c2dcd7ba1
handshake: Marshal a payload in one pass, straight into out
2026-10-15 10:42:10 -05:00
JackDoan
4d42378537
handshake: Keep the ephemeral ML-KEM-1024 key a handshake generates expanded, instead of expanding it again from its seed for msg2
2026-10-15 10:42:01 -05:00
JackDoan
cb9ab9c516
handshake: Keep the static ML-KEM-1024 key expanded in the Credential, instead of expanding it from its seed in every handshake
2026-10-15 10:41:51 -05:00
JackDoan
6c6bf5e486
cert: Check an ML-KEM-1024 public key with the FIPS 203 modulus check alone, without expanding it
2026-10-15 10:41:41 -05:00
JackDoan
d102107f2e
e2e: A hybrid tunnel whose msg2 completed by the relay promotes to direct
2026-10-15 10:30:01 -05:00
JackDoan
b92806d199
Record accepting per-path msg2 resends to replayed msg1s
2026-10-15 10:26:37 -05:00
JackDoan
437d47ffc5
Send by the relay when hybrid msg3 came by one, the direct address learned from msg1 may only work toward us
2026-10-14 15:41:03 -05:00
JackDoan
bd82089a3f
Clock cached msg2 resends per path in the fragment table, so a copy of msg1 arriving by a relay or a second address is answered even when the direct path only works one way
2026-10-14 15:17:24 -05:00
JackDoan
1d0281cba5
Document post-quantum handshakes as hybrid only, and the crossing window
2026-10-14 14:59:32 -05:00
JackDoan
dff5c51dd6
Make post-quantum handshakes hybrid only: drop ix_psk2_mlkem1024, need a v3 certificate, and leave a classical msg1 crossing a hybrid one unanswered
2026-10-14 14:58:29 -05:00
JackDoan
656164b259
cert: Name the post-quantum algorithms of a version 3 certificate with a PQSuite, like its curve, and pick the hybrid subtype by the suite's KEM
2026-10-14 14:40:52 -05:00
JackDoan
84e28c62ea
Reassemble msg2 in a slot per responder FragID, so two hosts answering one msg1 do not wipe each other out
2026-10-14 14:35:45 -05:00
JackDoan
6885bac85d
Record the hybrid field test and the crossing-attempt race in open items
2026-10-14 14:22:07 -05:00
JackDoan
5c5d6e3314
Fold the 2026-10-14 crypto review into the spec: deterministic signing, which fingerprint to block, the skem oracle, the psk2 static key, pending responders, the sticky default and the fork's rollback gap
2026-10-14 14:00:43 -05:00
JackDoan
0aa15ef247
nebula-cert: Lead print output for a version 3 certificate with both fingerprints, and say the v2 one blocks both forms
2026-10-14 14:00:43 -05:00
JackDoan
2ecf2f738e
cert: Sign version 3 certificates with deterministic ML-DSA-87, so extending a certificate twice gives the same certificate
2026-10-14 14:00:43 -05:00
JackDoan
1bf0bf382c
Send hybrid msg3 without a repair delay, so the packets cached behind it do not reach the responder before it completes
2026-10-14 13:21:14 -05:00
JackDoan
19578b3b6b
Document remembering answered msg1s and crossing attempts
2026-10-14 12:56:22 -05:00
JackDoan
5edcaefa33
e2e: Back to back hybrid handshakes, and a classical attempt crossing a hybrid one
2026-10-14 12:56:12 -05:00
JackDoan
bbade4dc9a
Take a hybrid tunnel on msg3 even over a newer one, the initiator has committed to it
2026-10-14 12:56:12 -05:00
JackDoan
cbf8146bda
udp: Buffer a fragmented handshake burst in the tester, so crossing bursts cannot deadlock the e2e router
2026-10-14 12:56:12 -05:00
JackDoan
3b850c6ecf
handshake/fragment: Remember answered messages, so repair fragments trailing a completed msg1 do not eat the source quota
2026-10-14 12:56:12 -05:00
JackDoan
a508a4e22c
Update post-quantum open items
2026-10-14 12:37:30 -05:00
JackDoan
e7b2abb0b2
e2e: msg2 is 9 data fragments now
2026-10-14 12:31:59 -05:00
JackDoan
5cc53c22db
Document the classical-only responder e in hybrid IX, msg2 is now 9 fragments
2026-10-14 12:27:56 -05:00
JackDoan
70e7d3f2ea
Hold a pending hybrid responder locked until it is filled in
2026-10-14 11:09:18 -05:00
JackDoan
4ce04760ae
Document version 3 certificates and hybrid handshakes
2026-10-14 11:08:51 -05:00
JackDoan
1e6a95df15
Test loading v3 certificates and composite keys from config
2026-10-14 11:07:01 -05:00
JackDoan
4d37a3140f
nebula-cert: Make version 3 CAs, keys and certificates, and pq-extend v2 certificates in place
2026-10-14 11:06:40 -05:00
JackDoan
b26c1e9c3e
Run hybrid handshakes: v3 holders initiate them, responders wait for msg3, initiators resend it until confirmed
2026-10-14 11:03:04 -05:00
JackDoan
5c5254dc18
Load v3 certificates and composite keys, speak v2 messages over v3 tunnels, and match ca_sha on either CA fingerprint
2026-10-14 11:03:04 -05:00
JackDoan
ab89556c5c
handshake: Add ix_hybrid_mlkem1024, DefinedNet/noise hybrid IX with ML-KEM-1024 over version 3 certificates
2026-10-14 10:50:33 -05:00
JackDoan
1a8fb8d67e
cert: Add version 3 certificates, a v2 certificate extended with ML-KEM-1024 or ML-DSA-87 keys and an ML-DSA-87 CA signature
2026-10-14 10:47:41 -05:00
JackDoan
73ddb56c34
Build with Go 1.27 and DefinedNet/noise, for crypto/mldsa and hybrid Noise patterns
2026-10-14 10:41:11 -05:00
JackDoan
13658b74a0
Add handshakes.pq.require, and give new paths and responsive peers the PQ attempt
2026-10-14 10:18:00 -05:00
JackDoan
22cdb0739a
Demand cookies for post-quantum msg1s while under load, and reload handshakes.pq settings
2026-10-13 22:50:28 -05:00
JackDoan
45e449a591
handshake/fragment: Carry an optional cookie, with room for it reserved in every fragment
2026-10-13 22:50:28 -05:00
JackDoan
a36ce25af4
Speak post-quantum handshakes over fragments, alternating with classical until one answers
2026-10-13 22:42:07 -05:00
JackDoan
2e5adfddc6
handshake: Add ix_psk2_mlkem1024, IX with an ephemeral ML-KEM-1024 exchange in the psk2 slot
2026-10-13 22:42:06 -05:00
JackDoan
31f3d6435e
handshake/fragment: Carry oversized handshake messages as FEC coded fragments
2026-10-13 22:42:06 -05:00
JackDoan
8f9a631f6e
handshake/fec: Systematic Cauchy Reed-Solomon erasure code over GF(2^8)
2026-10-13 22:42:06 -05:00
Ryan Huber
8a2de9b1b5
examples: set socket buffers and raise tun tx_queue ( #1928 )
...
* examples: set socket buffers and raise tun tx_queue
* examples: use the default tcp max window for socket buffers
* examples: note buffers are linux only, clarify tx_queue default
* tun: default tx_queue to 5000
2026-10-11 00:30:07 -04:00
Nate Brown
a8c52f5c13
overlay: Handle routes Windows already has, and parse quoted route numbers ( #1924 )
2026-10-08 18:52:53 -05:00
Jack Doan
13af8dd6f3
Cap configured MTUs at 8937 so relayed sends never outgrow their buffers ( #1899 )
2026-10-08 15:41:08 -05:00