Skip to content

Research/v0.4 - #1

Merged
hashtagRR merged 2 commits into
mainfrom
research/v0.4
Sep 29, 2026
Merged

hashtagRR merged 2 commits into
mainfrom
research/v0.4

Conversation

@hashtagRR

Copy link
Copy Markdown
Owner

Added

  • Multipath splitting (routing.split_strategy): iid, weighted round_robin, batch and lowest-RTT latency. routing.merge: common_exit ends all legs at one exit relay, as in Conflux. adversary.observed_legs and adversary.egress_observation: merged set what the adversary sees, and per-leg traffic shares are reported in the metrics.
  • Relay mixing at every hop (mixing.strategy: constant, exponential, pool) and random-hop cover drop (cover_behaviour.drop_mode: random_hop).
  • Bursty traffic generator (traffic.distribution: burst).
  • correlation_suite adversary: training-free attackers A0 (zero-lag), A1 (lag-aware binned correlation), A2 (likelihood ratio with the known delay density) and A3 (timing window). They are scored on one shared calibration/test split and report confident linkage, TPR at fixed FPR, a signal estimate and AUC. Raw observations and score matrices are saved to correlation_suite.npz, so a run can be rescored offline.
  • Model predictions for the lag-aware attacker, recorded with every suite run and available as atl predict.
  • atl fidelity measures host-induced timing noise; wave mode (sessions.max_concurrent) keeps large runs within the noise limit.
  • atl paired runs paired-seed comparisons with a bootstrap interval and an equivalence margin.
  • examples/mixnet_pool.yaml, CHANGELOG.md, and v0.4 sections on the project page.

Behavior change

TPR at a fixed FPR is now conservative under tied scores (0 instead of 1), and the threshold can be chosen on held-out calibration sessions (adversary.evaluation.calibration_fraction). Results for experiments whose scores tie can differ from v0.3.

Testing

  • 213 tests pass, 1 skipped (new: test_attacks.py, test_mixing.py, test_splitting.py, test_model_and_fidelity.py); ruff is clean.
  • Tested locally on Python 3.13. CI covers 3.9, 3.11 and 3.12.
  • No new runtime dependencies.

Notes

The code in the first commit is the version used for the confirmatory experiments of a paper in preparation. Comments, docstrings and documentation were edited afterwards, and the code itself is unchanged. The second commit adds the release metadata and a one-line lint fix in a test.

…l predictions

Split policies (iid, round_robin with weights, batch, latency) with a
common exit and per-leg observation; relay-side mixing (constant,
exponential, pool) and random-hop cover drop; a bursty traffic generator;
a correlation_suite adversary with training-free attackers A0 to A3,
confident linkage and signal estimates; closed-form model predictions
(atl predict); a host-noise fidelity check and wave mode (atl fidelity,
sessions.max_concurrent); paired-seed comparisons (atl paired).

Behavior change: TPR at a fixed FPR is now conservative under tied scores
(0, not 1), and thresholds can be chosen on held-out calibration sessions.

The code is the version frozen for the confirmatory runs of the
accompanying study; comments, docstrings and docs were edited afterwards.
Bump the version to 0.4.0, add CHANGELOG.md, describe the v0.4 features and limitations on the project page, and use a dict literal in one test (ruff C408). No behavior change.
@hashtagRR
hashtagRR merged commit d323de0 into main Sep 29, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant