Commit Graph
881 Commits
Author SHA1 Message Date
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
Nate Brown 5bb0622192 stats: Follow stats.interval on reload, interface gauges ride the capture loop (#1919) 2026-10-08 10:00:48 -05:00
Nate Brown f3705cbb67 graphite: Time out a send, and abandon it on stop (#1920) 2026-10-07 18:01:09 -05:00
Nate Brown 94be454f4f lighthouse: Recompute relays for me when relay.am_relay changes (#1917) 2026-10-07 14:06:27 -05:00
Nate Brown 5f26c1a7e5 Add a simple rate limiter with a helper to use it in logging (#1915) 2026-10-07 10:53:37 -05:00