  In an onion routing protocol, messages travel through several intermediaries
before arriving at their destinations, they are wrapped in layers of encryption
(hence they are called "onions"). The goal is to make it hard to establish who
sent the message. It is a practical and widespread tool for creating anonymous
channels.
  For the standard adversary models -- network, passive, and active -- we
present practical and provably secure onion routing protocols. Akin to Tor, in
our protocols each party independently chooses the routing paths for his
onions. For security parameter $\lambda$, our differentially private solution
for the active adversary takes $O(\log^2\lambda)$ rounds and requires every
participant to transmit $O(\log^{4} \lambda)$ onions in every round.
