Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
Sarah Jamie Lewis | 78f780a389 |
10
Cargo.toml
10
Cargo.toml
|
@ -1,7 +1,7 @@
|
||||||
[package]
|
[package]
|
||||||
name = "fuzzytags"
|
name = "fuzzytags"
|
||||||
description = "a probabilistic cryptographic structure for metadata resistant tagging"
|
description = "a probabilistic cryptographic structure for metadata resistant tagging"
|
||||||
version = "0.6.0"
|
version = "0.5.0"
|
||||||
repository = "https://git.openprivacy.ca/openprivacy/fuzzytags"
|
repository = "https://git.openprivacy.ca/openprivacy/fuzzytags"
|
||||||
authors = ["Sarah Jamie Lewis <sarah@openprivacy.ca>"]
|
authors = ["Sarah Jamie Lewis <sarah@openprivacy.ca>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
@ -12,13 +12,13 @@ keywords = ["fuzzytags","privacy","metadata-resistance","ristretto","cryptograph
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
hex = "0.4.2"
|
hex = "0.4.2"
|
||||||
rand_core = "0.5.0"
|
rand_core = "0.6.0"
|
||||||
rand ="0.7"
|
rand ="0.8.3"
|
||||||
curve25519-dalek = { package = "curve25519-dalek", version="3.2", features=["serde"]}
|
curve25519-dalek = { package = "curve25519-dalek-ng", version="4.0.1", features=["serde"]}
|
||||||
sha3 = "0.9.1"
|
sha3 = "0.9.1"
|
||||||
serde = {version="1.0.123", features=["derive"]}
|
serde = {version="1.0.123", features=["derive"]}
|
||||||
bit-vec = {version="0.6.3"}
|
bit-vec = {version="0.6.3"}
|
||||||
brute-force = {version="0.1.1", features=["curve25519"], optional=true}
|
brute-force = {git="https://git.openprivacy.ca/sarah/brute-force.git", version="0.2.0", features=["curve25519"], optional=true}
|
||||||
rayon = {version="1.5.0", optional=true}
|
rayon = {version="1.5.0", optional=true}
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|
11
README.md
11
README.md
|
@ -52,11 +52,6 @@ parameter choices in addition to other factors when deploying fuzzytags to real-
|
||||||
|
|
||||||
For more guidance (and warnings) on integrating fuzzytags into a privacy preserving application see [documentation](https://docs.rs/fuzzytags/#integrating-fuzzytags)
|
For more guidance (and warnings) on integrating fuzzytags into a privacy preserving application see [documentation](https://docs.rs/fuzzytags/#integrating-fuzzytags)
|
||||||
|
|
||||||
## Building
|
|
||||||
|
|
||||||
This crate requires experimental features currently only provided by Rust nightly:
|
|
||||||
|
|
||||||
` rustup default nightly`
|
|
||||||
|
|
||||||
## Terminology and a more detailed System Description
|
## Terminology and a more detailed System Description
|
||||||
|
|
||||||
|
@ -194,14 +189,10 @@ of different approaches e.g.:
|
||||||
|
|
||||||
## Benchmarks
|
## Benchmarks
|
||||||
|
|
||||||
We use [criterion](https://crates.io/crates/criterion) for benchmarking, and benchmarks can run using `cargo bench --bench fuzzy_tags_benches`
|
We use [criterion](https://crates.io/crates/criterion) for benchmarking, and benchmarks can run using `cargo bench`
|
||||||
|
|
||||||
Results will be in `target/criterion/report/index.html`.
|
Results will be in `target/criterion/report/index.html`.
|
||||||
|
|
||||||
To benchmark entangled tags run:
|
|
||||||
|
|
||||||
`cargo bench --features "entangled" --bench entangled`
|
|
||||||
|
|
||||||
### AVX2
|
### AVX2
|
||||||
|
|
||||||
This crate has support for the avx2 under the feature `simd`, to take advantage of this feature it is
|
This crate has support for the avx2 under the feature `simd`, to take advantage of this feature it is
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
|
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
|
||||||
use fuzzytags::{RootSecret};
|
use fuzzytags::{RootSecret, TaggingKey};
|
||||||
use rand::rngs::OsRng;
|
use rand::rngs::OsRng;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#![deny(missing_docs)]
|
#![deny(missing_docs)]
|
||||||
#![doc = include_str!("../README.md")]
|
#![feature(external_doc)]
|
||||||
#![doc = include_str!("../ANONYMITY.md")]
|
#![doc(include = "../README.md")]
|
||||||
|
#![doc(include = "../ANONYMITY.md")]
|
||||||
#![doc(html_logo_url = "https://git.openprivacy.ca/openprivacy/fuzzytags/media/branch/trunk/FuzzyTags_Logo.png")]
|
#![doc(html_logo_url = "https://git.openprivacy.ca/openprivacy/fuzzytags/media/branch/trunk/FuzzyTags_Logo.png")]
|
||||||
use bit_vec::BitVec;
|
use bit_vec::BitVec;
|
||||||
use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT;
|
use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT;
|
||||||
|
@ -533,7 +534,7 @@ impl<const GAMMA: u8> TaggingKey<{ GAMMA }> {
|
||||||
// Once the ciphertext has been computed, we use a master trapdoor for the chameleon hash (which is part of the scheme’s DetectionKey) in order to compute a collision (y,m) where m
|
// Once the ciphertext has been computed, we use a master trapdoor for the chameleon hash (which is part of the scheme’s DetectionKey) in order to compute a collision (y,m) where m
|
||||||
// is a hash of the remaining components of the ciphertext"
|
// is a hash of the remaining components of the ciphertext"
|
||||||
|
|
||||||
// Translated, m is a challenge over the random element u and the ordered ciphertexts
|
// Translated m is a challenge over the random element u and the ordered ciphertexts
|
||||||
// It is then used to construct a response y which can be used to recover w the random element
|
// It is then used to construct a response y which can be used to recover w the random element
|
||||||
// used to derive the key.
|
// used to derive the key.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue