A playground simulator for https://crates.io/crates/fuzzytags designed to demonstrate the impact of integrating fuzzytags into an application with poor parameter choices (and aid in choosing good parameters).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Sarah Jamie Lewis 0eb9b53195 Upgrade to 0.4.0 2 months ago
datasets Datasets, Server upgrades + Nicer Graphs 2 months ago
src Fmt, Bulk Verify and nicer SVG output 2 months ago
.gitignore Const-generics + Entangled Upgrade 2 months ago
Cargo.toml Upgrade to 0.4.0 2 months ago
README.md initial commit 3 months ago
rustfmt.toml Fmt, Bulk Verify and nicer SVG output 2 months ago

README.md

fuzzytags-sim

A playground simulator for fuzzytags designed to demonstrate the impact of integrating fuzzytags into an application with poor parameter choices (and aid in choosing good parameters).

Setup

Run cargo build --release, then the binary will be at ./target/release/fuzzytags-sim

By default, the simulator will run a single-round experiment with 10 parties (--num-parties). Messages for parties will be drawn randomly from a pareto distribution (scale: 1.0, shape: 1.0) i.e. a few parties will receive many messages, the rest will receive a small number (or zero). This can be adjusted by the --samples-per-round argument.

Once all the parties and messages have been generated, the server will test all messages against all parties.

Finally, the server will produce statistics for the round, including the ideal false positive rate for each party, the observed match rate for each party, the skew between the ideal false positive rate and the observed rate, and the number of trivial attributions it has made to that party in this round.

Note: A trivial attribution corresponds to the server receiving a tag which only matches a single party.

Future Extensions

  • Multiple Rounds / Aggregate Statistics
  • Differential Attacks e.g. leak that a set of messages all belong to the same party and have the server guess which party they belong to.
  • Simulate poisson distribution arrival (and bidirectional conversation) and allow the server to make timing correlations to aid in breaking anonymity