Mixnet v2 Simulation

How to run

First, make sure that all dependencies specified in the requirements.txt in the project root. Then, configure parameters in the config.yaml, and run the following command:

python main.py --config ./config.yaml

The simulation runs during a specified duration, prints the results to the console, and show some plots.

Mixnet Functionalities

  • Modified Sphinx
    • Without encryption
    • With encryption
  • P2P Broadcasting
    • Naive 1:N
    • More realistic broadcasting (e.g. gossipsub)
  • Sending a real message to the mixnet at the promised interval
    • Each node has its own probability of sending a real message at each interval.
  • Cover traffic
    • All nodes have the same probability of sending a cover message at each interval.
  • Forwarding messages through mixes, and then broadcasting messages to all nodes if the message is real.
  • Mix delays
    • Naive random delays
    • More sophisticated delays (e.g. Poisson) if necessary

Adversary Models

  • Identifying nodes emitting messages around the promised interval.
    • With partial visibility
  • Correlating senders-receivers based on timing
  • Active attacks
  • Reporting & Visualization
    • With quantifying the effect of attacks above based on parameter changes.