preliminary series

research

protecting content is the easy part. what this work measures is how much an observer who sees only timings and volumes can still learn, and what it costs to take that away.

flows
10
relays
3
suite
c25519
runs per configuration
5 x 30 s
statistic
median

each client starts its schedule at a random phase. with five runs per point no difference is claimed as significant; the full series of thirty runs per point is still to come.

the observer only sees when frames cross.

it watches the entry link and the last link between relays, counts frames per time window for every flow, and correlates every entry flow with every exit flow. the window is its choice, so both 10 ms and 100 ms are scored. chance is auc 0.5 and top-1 10%.

attack auc against bandwidth between relays and against round-trip latency, for cover on top, a constant rate at the client and relays on their own clocks
protectionbandwidth between relaysmedian round tripauc, 10 msauc, 100 mstop-1, 10 ms
nonex1.000.15 ms1.0001.000100%
cover on top, +2xx2.990.13 ms1.0001.000100%
constant rate at the client, 70 msx2.8547 ms0.9480.95260%
constant rate at the client, 35 msx5.6921 ms0.9510.94270%
relays on their own clocks, 66.5 msx3.00182 ms0.4850.4830%
relays on their own clocks, 33.25 msx5.9989 ms0.5280.55010%
both, client 70 ms, relays 66.5 msx2.99216 ms0.5060.52615%
both, client 35 ms, relays 33.25 msx5.99108 ms0.5960.48610%

what the series shows.

cover on top does not help.

cover traffic added on top of real messages does not help at all: even at three times the bandwidth every flow is linked.

a constant rate at the client does not hide a flow.

each client ticks with its own phase, and the phase crosses a chain of relays that forward at once. with a 10 ms window the attack links flows at every rate. a 100 ms window looks safe only where the period divides it: nearly all scores then tie, which says nothing about protection.

relays on their own clocks bring it to chance.

the price is a constant stream on every link a relay sends on and about 2.5 to 2.7 node periods added to a round trip: 182 ms at 66.5 ms, 89 ms at 33.25 ms. the relay period is 5% shorter than the client's, so a missed tick is caught up.

the client's rate still matters.

with relay clocks on, the client’s constant rate hides the conversation from the entry node itself, which the observer here does not model.

attack auc against the client's cell period for a 10 ms and a 100 ms window

five experiment blocks.

key material
memory dumps of a live relay are searched for known key bytes, with and without memory locking and dump prevention. the same search runs against the container image and volumes.
forward secrecy
recorded traffic is attacked with the node's long-term key in hand.
metadata
a traffic correlation attack links senders to receivers from timings and volumes alone. roc and auc are reported against cover traffic rate, cell size policy and delays.
partial compromise
one and two nodes of three are compromised, including a node holding a valid certificate from a compromised ca. residual leakage is measured.
cost
latency per hop, throughput, cpu, padding overhead, gost versus x25519.

series run on an idle host; every report row records the host load, the seeds and the code revision.

method and adversary models