From d345d673bc746d3498ca40921fc77e2416dad52a Mon Sep 17 00:00:00 2001 From: Monica Moniot Date: Wed, 30 Aug 2023 07:37:09 -0700 Subject: [PATCH] updated names --- .gitignore | 10 ++++++++++ README.md | 4 ++-- reference/examples/ping_pong.rs | 2 +- reference/src/lib.rs | 4 ++-- whitepaper/{main.pdf => zssp.pdf} | Bin 420567 -> 420565 bytes whitepaper/{main.tex => zssp.tex} | 0 6 files changed, 15 insertions(+), 5 deletions(-) rename whitepaper/{main.pdf => zssp.pdf} (98%) rename whitepaper/{main.tex => zssp.tex} (100%) diff --git a/.gitignore b/.gitignore index 22d9b57..64c6904 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,13 @@ target Cargo.lock .DS_Store +*.aux +*.fdb_latexmk +*.fls +*.out +*.synctex.gz +*.log +*.xml +*.bcf +*.bbl +*.blg diff --git a/README.md b/README.md index 49bb1e6..9714530 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,13 @@ Periodic session re-keying uses the [Noise KK](http://noiseprotocol.org/noise.ht Re-keying does not employ a hybrid exchange. Post-quantum forward secrecy is negotiated only on session startup since the threat model underpinning its use is to protect against very long term data storage and future decryption with quantum computers. Ratcheting causes the result of the initial ephemeral PQ exchange to be mixed into all subsequent session keys, protecting the entire session against a future attacker able to break elliptic curve cryptography. -An in-depth guide to the full protocol specification can be found in the [protocol whitepaper](whitepaper/main.pdf) provided in this repository. +An in-depth guide to the full protocol specification can be found in the [protocol whitepaper](whitepaper/zssp.pdf) provided in this repository. ZSSP was designed for use in [ZeroTier](https://www.zerotier.com/) but is payload agnostic and open source and can easily be used by other projects. The implementations here are based around generic cryptographic traits that a user can implement in terms of any cryptographic library of API they wish to use. Default implementations in terms of popular Rust cryptography crates are included but can be disabled via feature selection if alternatives are to be used. This repository includes both a simpler [reference](reference/) implementation that follows the whitepaper very explicitly and a more complex [high performance](performance/) implementation designed for high throughput or use in systems that will manage very large numbers of ZSSP sessions. -See the [ZSSP whitepaper](whitepaper/main.pdf) for extensive documentation and proofs of security. +See the [ZSSP whitepaper](whitepaper/zssp.pdf) for extensive documentation and proofs of security. ## Cryptographic Primitives Used in ZSSP diff --git a/reference/examples/ping_pong.rs b/reference/examples/ping_pong.rs index 84b0f0e..6a714fb 100644 --- a/reference/examples/ping_pong.rs +++ b/reference/examples/ping_pong.rs @@ -168,7 +168,7 @@ fn receive( context .send(&session, push_onto_send_queue, TEST_MTU, reply_message) .unwrap(); - + // This example does not properly track time so we just call service on every update. context.service(app.borrow_mut().deref_mut(), |_| Some((push_onto_send_queue, TEST_MTU))); } diff --git a/reference/src/lib.rs b/reference/src/lib.rs index 9519d31..347e5d1 100644 --- a/reference/src/lib.rs +++ b/reference/src/lib.rs @@ -10,7 +10,7 @@ //! //! ## Introduction //! -//! An in-depth guide to the full protocol specification can be found in the [protocol whitepaper](./whitepaper.pdf) provided in this repo. This implementation references it heavily. +//! An in-depth guide to the full protocol specification can be found in the [protocol whitepaper](whitepaper/zssp.pdf) provided in this repo. This implementation references it heavily. //! //! ZeroTier Secure Socket Protocol (ZSSP) is a [Noise](http://noiseprotocol.org) protocol implementation using NIST/FIPS/CfSC compliant cryptographic primitives plus post-quantum forward secrecy via [Kyber1024](https://pq-crystals.org/kyber/). It also includes built-in support for fragmentation and defragmentation of large messages with strong resistance against denial of service attacks targeted against the fragmentation protocol. //! @@ -20,7 +20,7 @@ //! //! ZSSP is designed for use in ZeroTier but is payload-agnostic and could easily be adapted for use in other projects. //! -//! Further information can be found in the ZSSP whitepaper [protocol whitepaper](./whitepaper.pdf). +//! Further information can be found in the ZSSP whitepaper [protocol whitepaper](whitepaper/zssp.pdf). //! //! ## Cryptographic Primitives Used //! diff --git a/whitepaper/main.pdf b/whitepaper/zssp.pdf similarity index 98% rename from whitepaper/main.pdf rename to whitepaper/zssp.pdf index 15213c158a68f06064a8804a1b0147fec4cf58f2..0b9355501b055a0daf1a95e4ca2f168e7c0d5dca 100644 GIT binary patch delta 4641 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 Q#iqz%!KJF|>hHz{0HGMpw*UYD diff --git a/whitepaper/main.tex b/whitepaper/zssp.tex similarity index 100% rename from whitepaper/main.tex rename to whitepaper/zssp.tex