ZeroTierOne/zssp
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
..
src Tetanus noise xk (#1881) 2023-02-28 17:54:08 -05:00
Cargo.toml Tetanus noise xk (#1881) 2023-02-28 17:54:08 -05:00
README.md Remove copy of kyber, use from GitHub with commit hash for now until next release. 2022-12-16 08:56:16 -05:00
rustfmt.toml excised zssp 2022-12-14 10:05:05 -05:00

ZeroTier Secure Socket Protocol

NOTE: this protocol and code have not yet been formally audited and should not be used in anything production.

ZSSP (ZeroTier Secure Socket Protocol) is an implementation of the Noise_IK pattern using FIPS/NIST compliant primitives. After Noise_IK negotiation is complete ZSSP also adds key ratcheting and optional (enabled by default) support for quantum data forward secrecy with Kyber1024.

It's general purpose and could be used with any system but contains a few specific design choices to make it optimal for ZeroTier and easy to distinguish from legacy ZeroTier V1 traffic for backward compatibility.