3

I am hoping some one can help expand my knowledge on how a user connects to a hidden service, I have read the specification, but have found it confusing and still have some questions.

Sorry if any seem silly just trying to make sure I completely understand how it works.

Firstly how do you know what hidden services are available, is there a list such as the consensus or is it dependent on knowing about the hidden service you wish to connect to?

Say for example I wish to connect to a completely legitimate service such as the hidden wiki, how do I go about finding out the z.onion:port address for this service, or does this once again require me to pre-know this?

How are the descriptors for the service retrieved?

Is there a specific rendezvous point needed for each service or is it simply any node that supports this feature?

How will I know what the introduction point has been chosen by the service which they want me to connect to?

And finally what information is sent to the introduction point to tell it about the rendezvous circuit?

Sorry for all the questions but it would be a great help if someone can help me answer these so I can further understand hidden services.

2

firstly how do you know what hidden services are available, is there a list such as the consensus or is it dependent on knowing about the hidden service you wish to connect to ?

There is no list of hidden services. If there was this would be considered a vulnerability. You must know a hidden service's .onion address before you try to connect to it.

how are the descriptors for the service retrieved ?

There is a name resolution system that uses .onion addresses to locate hidden service descriptors in a distributed hash table (DHT) made up of onion-routers called hidden service directories (HSDirs).
An abridged version is that the client calculates a descriptor-id from the hidden service's .onion address and the time; they then fetch a list of all onion-routers in the network that have the HSDir flag and select the three whose identity-digest (SHA1 hash of their public identity key) is closest to (and larger than) the descriptor-id.
They connect to one of those three (actually six because there are two descriptor-ids per service at a time) and download the hidden service descriptor from them.

is there a specific rendezvous point needed for each service or is it simply any node that supports this feature ?

Hidden services have no choice in which onion-router is used as a rendezvous point; it's the client's decision. I'm not sure if there are any extra requirements for rendezvous points, but I don't think there is.

how will i know what the introduction point has been chosen by the service which they want me to connect to?

A list of introduction points is included in the hidden service's hidden service descriptor. The hidden service descriptor is signed using a private key known only to the hidden service (the private key that's paired with the public key which the .onion address is derived from). Therefore only the hidden service can create its hidden service descriptor, so we know the introduction points are legitimate.

and finally what information is sent to the introduction point to tell it about the rendezvous circuit

The client sends the hidden service two things via the introduction point: it tells it the rendezvous point and a password. The rendezvous point is where the hidden service meets the client, and the password is used by the client and server to identify each other.

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.