Skip to content

Marking Tor/I2P milestone 2 completed.

Lee Clagett requested to merge (removed):patch-1 into master

@luigi1111 @moneromooo-monero :

Everything but this bulletpoint for milestone 2 has been merged into monero-project/monero/master:

Transactions received over p2p links will be immediately forwarded to all p2p connections of the same "zone" (i.e. transaction first received over Tor is immediately sent to all Tor connections)

The initial idea was to "hide" which hidden service received the transaction first, in an effort to mitigate timing analysis from that hidden service back to the sender. There are two "problems" with this feature:

  • If the hidden service is using white noise (default), the bandwidth is roughly 245.76 bytes/second. So flooding transactions over the i2p/tor is using precious bandwidth. Perhaps this is enough rationale to re-consider the white noise entirely.
  • The first hidden service nodes are still more likely to broadcast first, even with the randomized forward delay (its probably too short). The Dandelion++ blackhole timeouts are nearly 3 minutes long.

So the implementation changed from this proposal slightly - each tx sender should have at least 2 outgoing white noise links over i2p or tor. A transaction is sent out over both for redundancy, but reducing that to 1 should be considered. The idea is that each hidden service should have multiple inbound white noise links at a given time, making it difficult to determine the actual send path since the forward delay is longer than the white noise intervals. Not perfect, but a decent tweakable base if research reveals some better techniques (or someone implements an actual mixnet).

Adding the original bullet point is a couple of lines:

if (origin != enet::zone::invalid)
  const auto current = m_network_zones.find(origin)
  if (current != m_network_zones.end())
    send(txes, *current); // send immediately over received network - NEED to copy here instead of move
  return send(std::move(txes), *m_network_zones.begin()); // send all txs received via p2p over public network

so this doesn't translate to much work.

Edited by Lee Clagett

Merge request reports