Crates.io | sphinxcrypto |
lib.rs | sphinxcrypto |
version | 0.1.1 |
source | src |
created_at | 2017-01-29 00:04:57.075226 |
updated_at | 2019-09-27 10:06:25.105425 |
description | Sphinx cryptographic packet format library |
homepage | https://github.com/sphinx-cryptography/rust-sphinxcrypto |
repository | https://github.com/sphinx-cryptography/rust-sphinxcrypto |
max_upload_size | |
id | 8276 |
size | 207,305 |
This crate provides a concrete parameterization of the Sphinx
cryptographic packet format which can be used to construct a
great many different kinds of cryptographic packet switching
networks including high and low latency anonymity networks;
especially mix networks.
The reference implementation of Sphinx used the Lioness, a wide-block cipher (aka SPRP) to encrypt the packet body, hence its namesake. This implementation uses AEZ to encrypt the packet body instead of Lioness because it's much faster.
"Sphinx Mix Network Cryptographic Packet Format Specification" :
https://github.com/katzenpost/docs/blob/master/specs/sphinx.rst
Sphinx: A Compact and Provably Secure Mix Format
by George Danezis and Ian Goldberg.
https://cypherpunks.ca/~iang/pubs/Sphinx_Oakland09.pdf
This Sphinx implementation is binary compatible with the Katzenpost golang Sphinx and shares test vectors. ( https://github.com/katzenpost/core/tree/master/sphinx ) The cryptographic parameterization is:
The Sphinx packet geometry is parameterized in the constants submodule.
Sphinx has the following features:
Single Use Reply Blocks
per hop bitwise unlinkability
indistinguishable replies
hidden path length
hidden relay position
tagging attack detection
reply attack detection
This code has not been formally audited by a cryptographer. It therefore should not be considered safe or correct. Use it at your own risk!
To import sphinxcrypto
, add the following to the dependencies section of
your project's Cargo.toml
:
sphinxcrypto = "^0.1.1"
Then import the crate as:
extern crate sphinxcrypto;
This library is a Rust language port of Yawning's Katzenpost Sphinx implementation:
https://github.com/katzenpost/core/tree/master/sphinx
Thanks to Jeff Burdges for helping me with some of my rust problems.
GNU AFFERO GENERAL PUBLIC LICENSE