0

From what I have read so far from the internet, in order to use the hidden service, the hidden service contacts random TOR relays and sends the public key to them. The hidden service also signs a hidden service descriptor and this is signed using the private key of the hidden service and is uploaded to the Description Hash Table (DHT). The .onion address are derived from the public key of the hidden service and if I wanted to reach the .onion address, I would send a request to the DHT table and that table will tell me the address of the relays that have connection to the hidden website and those relays will help to establish a connection to the hidden service. The hidden service and the host then decide a rendezvous point (which is also one of the active TOR relay) one this rendezvous point has been decided the connection is established.

My question is, since the hidden service first gives out ONLY its public key to various TOR relays in order to establish connectivity, so wont these TOR relays be aware of the IP address of the hidden service?

  • 1
    This might be better asked on the Tor SE... – a CVn Dec 1 '17 at 21:41
  • Those randomly chosen Tor relays are called Introduction Points. Hidden service contacts them by creating the Tor circuit to them so they don't know the IP Address. – defalt Dec 2 '17 at 14:40
3

defalt answered your question in a nutshell. The solution Tor uses to hide your IP address, and nevertheless allows you to host a hidden service, is that it is the host of the hidden service that reaches out for the client through Tor circuits, so that the client or any other node never has to contact the service host directly. This is a totally different model than what is used on "the internet", where it is the client that takes the initiative to contact the server, and hence, the contact information of the host (DNS name/IP address) must be known: with Tor, it is the server that takes the initiative to contact the client.

However, of course, the true initiative of first contact comes from the client. This is where the "rendez-vous point" is used, which is at the initiative of the client, but which is waiting for the server to reach out for it.

Tor uses a kind of 2-tier model for this. On the side of the server, the server announces its service to Tor-nodes called "introduction points". There are just random Tor relays willing to accept this job. The server contacts them through Tor circuits, so these introduction points don't know the server's address, only that an anonymous server has announced a service, and gave a public key that goes with it. These introduction points are made public on a database (their IP addresses will be known publicly as being introduction points to this service). The server regularly contacts these introduction points to find out whether any client wants to use his services. That's the clue of this system.

When a client learns about this service and looks it up in the database, it will find the introduction points. The client now connects through a Tor circuit to another random Tor relay, which will take up the function of a Rendez-vous point. The client also connects to one of the publicly known introduction points of the service through yet another Tor circuit, to announce the desire to contact the service, and to inform about the RV point.

When the service contacts regularly its introduction points (through Tor circuits), it will find out about the client request on one of these Introduction points ; it can then contact the RV point through another Tor circuit, where both client and server are then connected through their respective Tor circuits.

As such, the client and the server always remain hidden behind Tor circuits. The introduction points are public, and the service has to poll them regularly to learn about clients desiring to contact him, and their RV points.

The RV point is the real "point of contact" between a given client and a given service but is entirely variable throughout the Tor network and has no specific relation, nor to the client, nor to the service.

At no point, any client or service gives out its IP address: they are always hidden behind Tor circuits.

  • Thanks for the explanation. I have one more doubt. Since you said that the server contacts the introduction points from time to time in order to know about the fact if any client wants to connect, so does that mean that the introduction points can have the IP address of the server? – Skynet Dec 5 '17 at 17:22
  • @Skynet: no, because the introduction points are only contacted by the server through a Tor circuit. – entrop-x Dec 5 '17 at 19:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.