Commit graph

6295 commits

Author SHA1 Message Date
Adam Ierymenko
1c5de7473d Implement noise "h" 2023-03-08 14:22:47 -05:00
Adam Ierymenko
757cc88abc Make ZSSP use just GCM to simplify, and change final ACK to auth and encrypt public blob separately from meta-data. 2023-03-07 13:03:48 -05:00
Adam Ierymenko
e66477c168 docs 2023-03-06 10:53:41 -05:00
Adam Ierymenko
c4beedcd73 Merge branch 'tetanus' of http://git.int.zerotier.com/zerotier/ZeroTierOne into tetanus 2023-03-03 13:50:29 -05:00
Sean OMeara
0c91b75bbd silence compiler warnings about _unused_variables (#1852)
Tetanus noise xk (#1881)

* Noise XK work in progress.

* A whole lot more Noise_XK work... exchange almost done.

* Delete a bunch of commented out old Noise_IK code.

* Add back in send() and a few other things to Noise_XK ZSSP.

* Some p384 experiment in attic

* A ton of ZSSP work, and put MPL on ZSSP.

* updated kbkdf512 to use the modern nist standard

* Parameterize KBKDF on resulting output key size the way NIST likes.

* updated variable comment

* Make the label a const parameter on kbkdf.

* updated variable comment

* Add MPL to utils and other stuff.

* layout tweak

* Some more ZSSP work and a VDF we may use.

* warning removal

* More ZSSP work, add benchmarks for mimcvdf.

* Almost ready to test...

* Build fix.

* Add automatic retransmission in the earliest stages of session init.

* Just about ready to test... wow.

* It opens a session.

* ZSSP basically works...

---------

Co-authored-by: mamoniot <mamoniot@protonmail.com>

Warning removal.

remove old docs

Remove old tests from ZSSP, new test in main() can also be made into a unit test in the future.

Add key_info() to get key information.

Rekeying is now tested and works.

Show key fingerprint.

Factor out memory:: stuff, does not appear to have any real performance benefit.

Rework defragmentation, and it now tolerates very poor link quality pretty well.

Circuit breaker for incoming defrag queue, and ZSSP now works very well even under very poor network conditions.

Format tweak.

ZSSP API updates.

Just a bit of final ZSSP cleanup before moving to another thing.
2023-03-03 13:47:22 -05:00
Adam Ierymenko
3f6c7f27a1 Just a bit of final ZSSP cleanup before moving to another thing. 2023-03-03 13:46:58 -05:00
Adam Ierymenko
4360e0b487 ZSSP API updates. 2023-03-03 11:08:12 -05:00
Adam Ierymenko
781b5eb270 Format tweak. 2023-03-03 09:49:25 -05:00
Adam Ierymenko
bbeff32bce Circuit breaker for incoming defrag queue, and ZSSP now works very well even under very poor network conditions. 2023-03-03 09:46:23 -05:00
Adam Ierymenko
40945cf6c9 Rework defragmentation, and it now tolerates very poor link quality pretty well. 2023-03-02 19:09:31 -05:00
Adam Ierymenko
87989ac008 Factor out memory:: stuff, does not appear to have any real performance benefit. 2023-03-01 16:51:03 -05:00
Adam Ierymenko
d00cf1d534 Show key fingerprint. 2023-03-01 14:32:20 -05:00
Adam Ierymenko
8b6c9051fb Rekeying is now tested and works. 2023-03-01 14:01:30 -05:00
Adam Ierymenko
652f7360f0 Add key_info() to get key information. 2023-03-01 09:22:10 -05:00
Adam Ierymenko
8b6088f335 Remove old tests from ZSSP, new test in main() can also be made into a unit test in the future. 2023-02-28 18:06:47 -05:00
Adam Ierymenko
97fc6b8ff2 remove old docs 2023-02-28 18:01:26 -05:00
Adam Ierymenko
aca394946c Warning removal. 2023-02-28 18:00:44 -05:00
Adam Ierymenko
5cf99ecb1d
Tetanus noise xk (#1881)
* Noise XK work in progress.

* A whole lot more Noise_XK work... exchange almost done.

* Delete a bunch of commented out old Noise_IK code.

* Add back in send() and a few other things to Noise_XK ZSSP.

* Some p384 experiment in attic

* A ton of ZSSP work, and put MPL on ZSSP.

* updated kbkdf512 to use the modern nist standard

* Parameterize KBKDF on resulting output key size the way NIST likes.

* updated variable comment

* Make the label a const parameter on kbkdf.

* updated variable comment

* Add MPL to utils and other stuff.

* layout tweak

* Some more ZSSP work and a VDF we may use.

* warning removal

* More ZSSP work, add benchmarks for mimcvdf.

* Almost ready to test...

* Build fix.

* Add automatic retransmission in the earliest stages of session init.

* Just about ready to test... wow.

* It opens a session.

* ZSSP basically works...

---------

Co-authored-by: mamoniot <mamoniot@protonmail.com>
2023-02-28 17:54:08 -05:00
Sean OMeara
52234c44fb
silence compiler warnings about _unused_variables (#1852) 2023-01-18 10:27:25 -05:00
Sean OMeara
b622475357 README cleanup 2023-01-13 12:23:02 +01:00
Sean OMeara
e6c2bd76a1 tweaking github build 2023-01-12 19:26:13 +01:00
Adam Ierymenko
8eedf70a1f Fix logic to still dedup properly. 2023-01-11 20:08:27 -05:00
Adam Ierymenko
edf1fd4d69 Implement max skip-ahead for counter, which is really about filtering bad packets. 2023-01-11 20:05:35 -05:00
Adam Ierymenko
2479645341 Put key index inside the encrypted part of the header. 2023-01-11 19:54:04 -05:00
Adam Ierymenko
3db9603799 Change the header yet again to encrypt everything but the session ID and key index. 2023-01-11 19:31:58 -05:00
Adam Ierymenko
8202a831b2 Rename to be more descriptive. 2023-01-06 20:51:28 -05:00
Adam Ierymenko
0c18d9563e Fix FileDatabase test failure. 2023-01-06 20:46:38 -05:00
Adam Ierymenko
d2b49130b2 Fix tests, remove some dead code, fix a bug that prevented rekey rate limiting from working. 2023-01-06 20:39:20 -05:00
Adam Ierymenko
73e6be7959 Re-implement most of what Monica originally did, but with some variations:
- Went back to a single session counter instead of two counter states
 - Went to a full 64-bit counter in the header as recommended by Noise, turns
   out there is a good reason. It simplifies everything.
 - Implemented Monica's simpler stateless counter window algorithm, but
   also only one on the whole session.
 - Simplified some counter logic generally.
 - Header check codes are temporarily gone, coming back in a different form.

This is being committed "on top" of what was there instead of reverting the old
commits to preserve the history.
2023-01-06 19:51:09 -05:00
Sean OMeara
4f0a704640
Sometanus (#1835)
* adding smiley
2023-01-06 20:24:47 +01:00
Sean OMeara
012c42e821 tweaking 2023-01-06 19:46:52 +01:00
Adam Ierymenko
f0351b5400 Merge branch 'tetanus' of github.com:/zerotier/ZeroTierOne into tetanus 2023-01-05 16:10:53 -05:00
Adam Ierymenko
515a08f948 (1) break out Error for readability, (2) remove NOP packet type since it is no longer useful. 2023-01-05 16:10:25 -05:00
monica
a178a23ee7 corrected comment 2023-01-04 16:43:06 -05:00
monica
392d0a2b2a removed unnecessary boxing 2023-01-04 15:24:19 -05:00
monica
44d854e03a added explicit lifetime for session refs 2023-01-04 15:22:44 -05:00
Adam Ierymenko
d8aac1df95 Merge branch 'tetanus' of github.com:/zerotier/ZeroTierOne into tetanus 2023-01-04 11:24:19 -05:00
Adam Ierymenko
b6e68d9e7c
Merge pull request #1832 from zerotier/replay-attack-fixes
redesign of zssp
2023-01-04 11:23:58 -05:00
Adam Ierymenko
29f6699924
Merge branch 'tetanus' into replay-attack-fixes 2023-01-04 11:23:34 -05:00
Adam Ierymenko
181eb8ac34 cleanup 2023-01-04 11:09:21 -05:00
Adam Ierymenko
dc8fa144ad cleanup 2023-01-03 18:02:03 -05:00
Adam Ierymenko
ec600f994a Add both Valid and Verified typestates. 2023-01-03 17:58:28 -05:00
monica
b85e6c3d49 fixed comment 2023-01-03 17:32:15 -05:00
monica
735f40421b fixed multiple comments 2023-01-03 17:24:05 -05:00
monica
a2b3c780bb updated comment 2023-01-03 16:58:21 -05:00
monica
2233f8c535 added more documentation 2023-01-03 16:55:21 -05:00
Adam Ierymenko
382688d251 Generalize typestates, make verified valid because its more correct for Identity. 2023-01-03 15:24:46 -05:00
Adam Ierymenko
7dabeb9595 cleanup 2023-01-03 14:51:39 -05:00
Adam Ierymenko
bc02651613 Some simplification. 2023-01-03 13:36:53 -05:00
Adam Ierymenko
9430d336f9 cleanup 2023-01-03 12:46:04 -05:00