86929a0887291f058aa0e48985b738d660521963
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

1) ## translation metadata
Roger Dingledine more prop fixes, including...

Roger Dingledine authored 16 years ago

2) # Revision: $Revision$
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

3) # Translation-Priority: 3-low
4) 
Runa A. Sandvik utf-8 ftw

Runa A. Sandvik authored 14 years ago

5) #include "head.wmi" TITLE="Tor: Hidden Service Protocol" CHARSET="UTF-8"
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

6) 
7) <div class="main-column">
8) 
9) <h2>Tor: Hidden Service Protocol</h2>
10) <hr />
11) 
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

12) <p>
13) Tor makes it possible for users to hide their locations while offering
14) various kinds of services, such as web publishing or an instant
15) messaging server.  Using Tor "rendezvous points," other Tor users can
16) connect to these hidden services, each without knowing the other's
17) network identity. This page describes the technical details of how
18) this rendezvous protocol works. For a more direct how-to, see our <a
19) href="<page docs/tor-hidden-service>">configuring hidden services</a>
20) page.
21) </p>
22) 
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

23) <p>
24) A hidden service needs to advertise its existence in the Tor network before
25) clients will be able to contact it. Therefore, the service randomly picks
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

26) some relays, builds circuits to them, and asks them to act as
27) <em>introduction points</em> by telling them its public key. Note
28) that in the following figures the green links are circuits rather
29) than direct connections. By using a full Tor circuit, it's hard for
30) anyone to associate an introduction point with the hidden server's IP
31) address. While the introduction points and others are told the hidden
32) service's identity (public key), we don't want them to learn about the
33) hidden server's location (IP address).
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

34) </p>
35) 
36) <img alt="Tor hidden service step one" src="$(IMGROOT)/THS-1.png" />
37) # maybe add a speech bubble containing "PK" to Bob, because that's what
38) # Bob tells to his introduction points
39) 
40) <p>
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

41) Step two: the hidden service assembles a <em>hidden service
42) descriptor</em>, containing its public key and a summary of each
43) introduction point, and signs this descriptor with its private key.
Andrew Lewman replace directory server wi...

Andrew Lewman authored 14 years ago

44) It uploads that descriptor to a distributed hash table. The descriptor will be
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

45) found by clients requesting XYZ.onion where XYZ is a 16 character
46) name that can be uniquely derived from the service's public key. After
47) this step, the hidden service is set up.
48) </p>
49) 
50) <p>
51) Although it might seem impractical to use an automatically-generated
52) service name, it serves an important goal: Everyone &ndash; including
Andrew Lewman replace directory server wi...

Andrew Lewman authored 14 years ago

53) the introduction points, the distributed hash table directory, and of course the
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

54) clients &ndash; can verify that they are talking to the right hidden
55) service. See also <a href="https://zooko.com/distnames.html">Zooko's
56) conjecture</a> that out of Decentralized, Secure, and Human-Meaningful,
57) you can achieve at most two. Perhaps one day somebody will implement a <a
58) href="http://www.skyhunter.com/marcs/petnames/IntroPetNames.html">Petname</a>
59) design for hidden service names?
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

60) </p>
61) 
62) <img alt="Tor hidden service step two" src="$(IMGROOT)/THS-2.png" />
Andrew Lewman replace directory server wi...

Andrew Lewman authored 14 years ago

63) # maybe replace "database" with "DHT"; further: how incorrect
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

64) # is it to *not* add DB to the Tor cloud, now that begin dir cells are in
65) # use?
66) 
67) <p>
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

68) Step three: A client that wants to contact a hidden service needs to
69) learn about its
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

70) onion address first. After that, the client can initiate connection
Andrew Lewman replace directory server wi...

Andrew Lewman authored 14 years ago

71) establishment by downloading the descriptor from the distributed hash
72) table. If
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

73) there is a descriptor for XYZ.onion (the hidden service could also be
74) offline or have left long ago, or there could be a typo in the onion
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

75) address), the client now knows the set of introduction points and the
76) right public key to use. Around this time, the client also creates
77) a circuit to another randomly picked relay and asks it to act as
78) <em>rendezvous point</em> by telling it a one-time secret.
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

79) </p>
80) 
81) <img alt="Tor hidden service step three" src="$(IMGROOT)/THS-3.png" />
82) # maybe add "cookie" to speech bubble, separated from the surrounded
83) # "IP1-3" and "PK"
84) 
85) <p>
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

86) Step four: When the descriptor is present and the rendezvous point is
87) ready, the client assembles an <em>introduce</em>
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

88) message (encrypted to the hidden service's public key) including the
89) address of the rendezvous point and the one-time secret. The client sends
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

90) this message to one of the introduction points, requesting it be delivered
91) to the hidden service. Again, communication takes place via a Tor circuit:
92) nobody can relate sending the introduce message to the client's IP
93) address, so the client remains anonymous.
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

94) </p>
95) 
96) <img alt="Tor hidden service step four" src="$(IMGROOT)/THS-4.png" />
97) 
98) <p>
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

99) Step five: The hidden service decrypts the client's introduce message
100) and finds the
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

101) address of the rendezvous point and the one-time secret in it. The service
102) creates a circuit to the rendezvous point and sends the one-time secret to
103) it in a rendezvous message.
104) </p>
105) 
Karsten Loesing Added some more details to...

Karsten Loesing authored 16 years ago

106) <p>
107) At this point it is of special importance that the hidden service sticks to
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

108) the same set of <a
109) href="https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#EntryGuards">entry
110) guards</a> when creating new circuits. Otherwise an attacker
111) could run his own relay and force a hidden service to create an arbitrary
112) number of circuits in the hope that the corrupt relay is picked as entry
113) node and he learns the hidden server's IP address via timing analysis. This
Karsten Loesing Added some more details to...

Karsten Loesing authored 16 years ago

114) attack was described by &Oslash;verlier and Syverson in their paper titled
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

115) <a href="http://freehaven.net/anonbib/#hs-attack06">Locating Hidden
116) Servers</a>.
Karsten Loesing Added some more details to...

Karsten Loesing authored 16 years ago

117) </p>
118) 
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

119) <img alt="Tor hidden service step five" src="$(IMGROOT)/THS-5.png" />
120) # it should say "Bob connects to Alice's ..."
121) 
122) <p>
123) In the last step, the rendezvous point notifies the client about successful
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

124) connection establishment. After that, both client and hidden service can
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

125) use their circuits to the rendezvous point for communicating with each
126) other. The rendezvous point simply relays (end-to-end encrypted) messages
127) from client to service and vice versa.
128) </p>
129) 
Karsten Loesing Added some more details to...

Karsten Loesing authored 16 years ago

130) <p>
Roger Dingledine touch up karsten's hidden s...

Roger Dingledine authored 16 years ago

131) One of the reasons for not using the introduction circuit
132) for actual communication is that no single relay should
Karsten Loesing Added some more details to...

Karsten Loesing authored 16 years ago

133) appear to be responsible for a given hidden service. This is why the
134) rendezvous point never learns about the hidden service's identity.
135) </p>
136) 
137) <p>
138) In general, the complete connection between client and hidden service
139) consists of 6 relays: 3 of them were picked by the client with the third
140) being the rendezvous point and the other 3 were picked by the hidden
141) service.
142) </p>
143) 
Karsten Loesing Move hidden service protoco...

Karsten Loesing authored 16 years ago

144) <img alt="Tor hidden service step six" src="$(IMGROOT)/THS-6.png" />
145) 
Karsten Loesing Added some more details to...

Karsten Loesing authored 16 years ago

146) <p>
147) There are more detailed descriptions about the hidden service protocol than
148) this one. See the
Steven Murdoch Now that the design paper w...

Steven Murdoch authored 14 years ago

149) <a href="<svnprojects>design-paper/tor-design.pdf">Tor design paper</a>
Karsten Loesing Added some more details to...

Karsten Loesing authored 16 years ago

150) for an in-depth design description and the
Andrew Lewman omnibus update of s/svnsand...

Andrew Lewman authored 14 years ago

151) <a href="<gitblob>doc/spec/rend-spec.txt">rendezvous specification</a>
Karsten Loesing Added some more details to...

Karsten Loesing authored 16 years ago

152) for the message formats.
153) </p>
154)