#noise #networking #mixnet #cryptography #link-layer

no-std mix_link

message oriented noise based cryptographic link layer for mixnets

7 releases

Uses old Rust 2015

0.1.0 Jan 23, 2021
0.0.5 Jan 29, 2019
0.0.4 Nov 26, 2018
0.0.2 Oct 22, 2018

#6 in #mixnet

Download history 64/week @ 2024-07-27

64 downloads per month

AGPL-3.0-only

265KB
2K SLoC

mix_link

This crate provides a Noise Protocol Framework based cryptographic link layer wire protocol for constructing mix networks.

warning

This code has not been formally audited. Use it at your own risk!

details

This wire protocol is designed to construct mix networks. You can read the design specification document here:

However note that I've change the prologue value (our protocol version number) to 1 instead of 0 to differentiate it from the older version which used NewHope Simple. We now use the newer KEM, Kyber.

This cryptographic link layer protocol uses Noise_XXhfs_25519+Kyber1024_ChaChaPoly_BLAKE2b. You can read about the XX handshake pattern here in the Noise Protocol specification document:

However you'll also want to understand our hybrid forward secrecy protocol modification using the Kyber post-quantum key encapsulation mechanism. Please see "KEM-based Hybrid Forward Secrecy for Noise":

Usage

To import mix_link, add the following to the dependencies section of your project's Cargo.toml:

mix_link = "^0.1.0"

Then import the crate as:

extern crate mix_link;

acknowledgments

Thanks to Yawning Angel for the design of this wire protocol. Thanks to Daan Sprenkels for implementing Kyber1024 HFS for Snow.

license

GNU AFFERO GENERAL PUBLIC LICENSE

Dependencies

~31MB
~626K SLoC