How Tor Introduction Points Work
Tor hidden services, commonly known as onion services, rely on introduction points to enable clients and servers to connect without revealing either party’s IP address. Introduction points serve as publicly accessible relays chosen by the onion service to act as its reception desk. By decoupling the service’s physical network location from its public identity, introduction points allow a service to remain completely anonymous while still being discoverable by users across the Tor network.
1. Selecting and Establishing Introduction Points
When an onion service launches, it randomly selects several Tor relays (typically three to six) to act as its introduction points. The service builds a three-hop Tor circuit to each selected relay and asks them to act as introduction points. These relays do not learn the service’s real IP address; they only know that they have an open circuit to an anonymous service.
2. Publishing the Onion Descriptor
Once the introduction points accept the request, the service creates an “onion service descriptor.” This descriptor includes: * The service’s public key. * The addresses of its chosen introduction points. * Digital signatures proving ownership of the onion address.
The service then publishes this descriptor to Tor’s distributed hash
table (DHT). When a user inputs an .onion address into the
Tor Browser, the browser uses that address to look up and download the
corresponding descriptor from the network.
3. Creating a Rendezvous Point
A client wishing to connect to the onion service does not connect directly to an introduction point to exchange data. Instead, the client chooses another random Tor relay to act as a “rendezvous point” (RP) and establishes a circuit to it. The client generates a random one-time secret known as a “rendezvous cookie.”
4. Messaging Through the Introduction Point
The client constructs an introduction message that includes: * The address of the chosen rendezvous point. * The rendezvous cookie. * Information needed to complete an end-to-end cryptographic handshake.
The client encrypts this message using the onion service’s public key (found in the descriptor) so that only the hidden service can read it. The client then sends this encrypted payload to one of the service’s introduction points via a Tor circuit.
5. Completing the Connection
The introduction point receives the message from the client and forwards it to the hidden service over their established circuit. The introduction point cannot decrypt the payload; it simply acts as a blind forwarder.
Upon receiving the message, the hidden service: 1. Decrypts the payload using its private key. 2. Extracts the rendezvous point address and the rendezvous cookie. 3. Builds its own three-hop Tor circuit to the designated rendezvous point. 4. Delivers the rendezvous cookie to confirm its identity.
Once the rendezvous point verifies that the cookie from the service matches the cookie left by the client, it links the two separate circuits together. This creates a full, six-hop, end-to-end encrypted connection between the client and the hidden service, allowing data transfer while keeping the locations of both parties completely hidden.