Are there any implications if whilst running a non-exit relay, I also use the same machine to host a Hidden Service?


  1. How will this affect the anonymity of the Hidden Service (in terms of its location being obscured)?
  2. What effect would it have on the anonymity of clients using my relay as a middle node, or a guard node?
  3. Are there any other side-effects I should be aware of?

1 Answer 1


I believe that all of your questions can be answered by explaining the underlying threat when running any relay on the same Tor as a hidden service:

Relays publish bandwidth information about their usage and availability to enable the Tor network to efficiently route traffic and provide bandwidth where it is needed. Given that I see bandwidth information about your relay, I can potentially link your hidden service to your relay by tracking the popularity of your hidden service over time) and watching your relay's available bandwidth fluctuate.

I can track your popularity over time by setting up a relay and getting it the HSDir flag which allows it to become a location where service descriptors can be retrieved from for a hidden service.

By modifying my relay's Tor to log hidden service descriptor requests, I can extrapolate how popular your hidden service at a given time.

After I have managed to correlate your hidden service with your relay, if I decide to use your relay as my entry to Tor, I now have your IP address, allowing me to correlate your IP address with your hidden service.

Long story short: Don't run a relay on the same instance of Tor as you run your hidden service.

Example of tracking hidden services

In addition to being able to be tracked generally by a HSDir relay, you can be targeted more directly by a determined and powerful opponent because they can maintain the connection to your hidden service and they can pull a lot of bandwidth through the network separately to observe where things slow down when they are hitting your hidden service hard.

  • (Non-Bridge) Relay IPs are public, so you wouldn't need to connect. Could you elaborate slightly on how you could track the popularity of the hidden service? If it's something like a public forum, then it's fairly easy to get an idea, but for a static or private site? I don't see the same possibility existing. Commented Sep 25, 2013 at 18:53
  • 1
    Hidden services publish service descriptors to HSDIR relays (relays that are considered better than regular relays) for service discovery. While it is possible to disable publishing your service descriptors to the directory servers, your hidden service would be inaccessible if you do that. The directory server can monitor requests for your hidden service's descriptor and can correlate that to estimate your traffic. example
    – IceyEC
    Commented Sep 25, 2013 at 18:56
  • Are you saying that the descriptor contains information about the popularity of the HS? I was under the impression the descriptor only contains the public key of the service, and the introduction points, which doesn't say anything about the popularity of the service. Commented Sep 25, 2013 at 18:58
  • 2
    The descriptor does only contain ways to get in touch, but as a relay operator I can observe how often your descriptor is requested.
    – IceyEC
    Commented Sep 25, 2013 at 18:59
  • 1
    You mean as a HSDir-mirror operator, I think. Not a (standard) relay operator. I hadn't considered that. If you edit that into the answer, to make it more explicit then I'll accept it. Commented Sep 25, 2013 at 19:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .