Commit graph

122 commits

Author SHA1 Message Date
monica
1163a41e41
ran cargo fmt 2023-03-22 12:03:18 -04:00
monica
c27d7c8111
removed mutex 2023-03-22 11:59:49 -04:00
monica
1b918f3d4f
fixed 2023-03-22 11:56:10 -04:00
monica
98470d6373
saved 2023-03-22 11:51:10 -04:00
monica
da1bd74bdc
saved nonworking 2023-03-22 11:31:03 -04:00
mamoniot
7fbd8350c7
tested threading 2023-03-22 00:31:40 -04:00
Monica Moniot
1b789779d8
Merge pull request #1913 from zerotier/tetanus-sha512
More Noise Compliant ZSSP
2023-03-21 08:42:35 -04:00
mamoniot
e3268fa524
fixed comment 2023-03-14 18:19:21 -04:00
mamoniot
87eb124551
ran cargo fmt 2023-03-14 18:16:21 -04:00
mamoniot
3b3ed9765d
fixed formatting 2023-03-14 18:15:24 -04:00
mamoniot
2c607f72d8
made rekeying noise compliant 2023-03-14 18:14:01 -04:00
mamoniot
7a7703a268
switched to sha512 everywhere 2023-03-14 17:45:48 -04:00
Adam Ierymenko
d0446a965e
Fixes to crypto on macOS, a lot of cleanup, and work on full state replication for V2 VL2 (#1911)
* Move some stuff around in prep for a VL2 rework and identity rework.

* Mix ephemeral keys into "h"

* More topology stuff for VL2.

* Simplify key queue, fix macOS issues with bindings, and no need to cache PSK forever.

* Some more merge fixes.

* A bunch of ZSSP cleanup and optimization. Runs a bit faster now.

* Remove some unused util code.

* scatter gather stuff

* The scatter/gather algorithm works.

* Make OpenSSL init get called automatically at process launch, and some more scatter gather work.

* added support for cloning on EcKey

* Scatter/gather, move SG into VL2 since that is where it will be used, add an array chunker to utils::memory

* Simplify some Rust generic madness.

* docs

* Some cleanup and reorg.

* Bring back AES-GMAC-SIV tests.

* Turns out a Mutex is not really any slower...

---------

Co-authored-by: mamoniot <mamoniot@protonmail.com>
2023-03-14 15:29:20 -04:00
Monica Moniot
faf4c9a5b1
implemented noise_KKpsk0 (#1909)
* implemented noise_KKpsk0

* used cargo fmt
2023-03-13 13:21:30 -04:00
Adam Ierymenko
f66a2a7ef9
Tetanus adam (#1906)
* Move some stuff around in prep for a VL2 rework and identity rework.

* Mix ephemeral keys into "h"

* More topology stuff for VL2.

* Simplify key queue, fix macOS issues with bindings, and no need to cache PSK forever.

* Some more merge fixes.

* A bunch of ZSSP cleanup and optimization. Runs a bit faster now.
2023-03-10 17:03:22 -05:00
Monica Moniot
f2e2944658
tetanus-fixes (#1903) 2023-03-10 08:35:10 -05:00
Sean OMeara
4692193ec4
cargo fmt
* using mips64le
* cargo fmt
2023-03-10 09:40:26 +01:00
monica
eb0425a28f
fixed multithreading bug 2023-03-10 00:22:53 -05:00
monica
285aab8080
improved pool mutex logic 2023-03-09 23:44:30 -05:00
monica
b3053f70e7
improved aes get 2023-03-09 23:24:43 -05:00
Adam Ierymenko
d170d91b8e Fix a locking issue in ZSSP and use hmac_sha512_secret everywhere, also clean up something in macOS AES. 2023-03-09 19:00:03 -05:00
Monica Moniot
164c7bf561
Tetanus custom bindings with macos and threadsafety bugfix (#1898)
* first commit

* cleared errors

* added init

* adding macos

* finished import

* fixed macos aes

* fixed lib

* improved openssl integration

* fixed multithreading bug

* broke something

* fixed bug

* got compilation working

* fixed threadsafety issue
2023-03-09 18:38:58 -05:00
monica
f906c9e0e1
added more specific NIST key usage labels 2023-03-08 16:57:29 -05:00
Adam Ierymenko
ccb5ff8e6d Add PSK to h as well. 2023-03-08 16:00:23 -05:00
Adam Ierymenko
5fbaf28c12 Mix ephemeral keys into "h" 2023-03-08 15:51:56 -05:00
Adam Ierymenko
cd6d8d36b0 Simplify some packet building code. 2023-03-08 15:03:27 -05:00
Adam Ierymenko
94b3e208e7 Ensure that the 'h' mechanism from Noise authenticates part one of the final packet in part two's MAC. 2023-03-08 14:57:32 -05:00
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
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
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
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
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
29f6699924
Merge branch 'tetanus' into replay-attack-fixes 2023-01-04 11:23:34 -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
monica
046ddbaf33 renamed for consistency 2023-01-03 11:20:37 -05:00
monica
40ef370204 added missing ratcheting enforcement 2023-01-03 11:19:32 -05:00