mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
cleanups on r12715
svn:r12718
This commit is contained in:
parent
2dd9d87d07
commit
9250653471
@ -36,7 +36,7 @@ Proposals by number:
|
|||||||
111 Prioritizing local traffic over relayed traffic [FINISHED]
|
111 Prioritizing local traffic over relayed traffic [FINISHED]
|
||||||
112 Bring Back Pathlen Coin Weight [SUPERSEDED]
|
112 Bring Back Pathlen Coin Weight [SUPERSEDED]
|
||||||
113 Simplifying directory authority administration [OPEN]
|
113 Simplifying directory authority administration [OPEN]
|
||||||
114 Distributed Storage for Tor Hidden Service Descriptors [OPEN]
|
114 Distributed Storage for Tor Hidden Service Descriptors [CLOSED]
|
||||||
115 Two Hop Paths [OPEN]
|
115 Two Hop Paths [OPEN]
|
||||||
116 Two hop paths from entry guards [OPEN]
|
116 Two hop paths from entry guards [OPEN]
|
||||||
117 IPv6 exits [OPEN]
|
117 IPv6 exits [OPEN]
|
||||||
|
@ -4,7 +4,8 @@ $Id$
|
|||||||
|
|
||||||
0. Overview and preliminaries
|
0. Overview and preliminaries
|
||||||
|
|
||||||
Read https://www.torproject.org/doc/design-paper/tor-design.html#sec:rendezvous
|
Read
|
||||||
|
https://www.torproject.org/doc/design-paper/tor-design.html#sec:rendezvous
|
||||||
before you read this specification. It will make more sense.
|
before you read this specification. It will make more sense.
|
||||||
|
|
||||||
Rendezvous points provide location-hidden services (server
|
Rendezvous points provide location-hidden services (server
|
||||||
@ -116,12 +117,20 @@ $Id$
|
|||||||
other parts remained the same. The following list of potentially
|
other parts remained the same. The following list of potentially
|
||||||
versioned protocol parts should help reduce some confusion:
|
versioned protocol parts should help reduce some confusion:
|
||||||
|
|
||||||
- Hidden service descriptor: see 1.2.
|
- Hidden service descriptor: the binary-based v0 was the default for
|
||||||
|
a long time, and an ascii-based v2 has been added by proposal
|
||||||
|
114. See 1.2.
|
||||||
|
|
||||||
- Hidden service descriptor propagation mechanism: currently related to
|
- Hidden service descriptor propagation mechanism: currently related to
|
||||||
the hidden service descriptor version; see 1.4 and 1.6.
|
the hidden service descriptor version -- v0 publishes to the original
|
||||||
|
hs directory authorities, whereas v2 publishes to a rotating subset
|
||||||
|
of relays with the "hsdir" flag; see 1.4 and 1.6.
|
||||||
|
|
||||||
- Introduction protocol: see 1.8.
|
- Introduction protocol for how to generate an introduction cell:
|
||||||
|
v0 specified a nickname for the rendezvous point and assumed the
|
||||||
|
relay would know about it, whereas v2 now specifies IP address,
|
||||||
|
port, and onion key so the relay doesn't need to already recognize
|
||||||
|
it. See 1.8.
|
||||||
|
|
||||||
1. The Protocol
|
1. The Protocol
|
||||||
|
|
||||||
@ -278,7 +287,7 @@ $Id$
|
|||||||
["service-authentication" auth-type NL auth-data ... reserved]
|
["service-authentication" auth-type NL auth-data ... reserved]
|
||||||
|
|
||||||
[At start, any number]
|
[At start, any number]
|
||||||
|
|
||||||
The service-specific authentication data can be used to perform
|
The service-specific authentication data can be used to perform
|
||||||
client authentication. This data is independent of the selected
|
client authentication. This data is independent of the selected
|
||||||
introduction point as opposed to "intro-authentication" below.
|
introduction point as opposed to "intro-authentication" below.
|
||||||
@ -342,7 +351,7 @@ $Id$
|
|||||||
|
|
||||||
The V1 descriptor format was understood and accepted from
|
The V1 descriptor format was understood and accepted from
|
||||||
0.1.1.5-alpha-cvs to 0.2.0.6-alpha-dev, but no Tors generated it and
|
0.1.1.5-alpha-cvs to 0.2.0.6-alpha-dev, but no Tors generated it and
|
||||||
was removed:
|
it was removed:
|
||||||
|
|
||||||
V Format byte: set to 255 [1 octet]
|
V Format byte: set to 255 [1 octet]
|
||||||
V Version byte: set to 1 [1 octet]
|
V Version byte: set to 1 [1 octet]
|
||||||
@ -421,7 +430,7 @@ $Id$
|
|||||||
circuit with Bob's public key, and dissociates any other circuits
|
circuit with Bob's public key, and dissociates any other circuits
|
||||||
currently associated with PK. On success, the OR sends Bob a
|
currently associated with PK. On success, the OR sends Bob a
|
||||||
RELAY_INTRO_ESTABLISHED cell with an empty payload.
|
RELAY_INTRO_ESTABLISHED cell with an empty payload.
|
||||||
|
|
||||||
If a hidden service is configured to publish only v2 hidden service
|
If a hidden service is configured to publish only v2 hidden service
|
||||||
descriptors, Bob's OP does not include its own public key in the
|
descriptors, Bob's OP does not include its own public key in the
|
||||||
RELAY_ESTABLISH_INTRO cell, but the public key of a freshly generated
|
RELAY_ESTABLISH_INTRO cell, but the public key of a freshly generated
|
||||||
@ -458,8 +467,8 @@ $Id$
|
|||||||
If Bob's OP is configured to publish v2 descriptors instead of or in
|
If Bob's OP is configured to publish v2 descriptors instead of or in
|
||||||
addition to v0 descriptors, it does so to a changing subset of all v2
|
addition to v0 descriptors, it does so to a changing subset of all v2
|
||||||
hidden service directories instead of the authoritative directory
|
hidden service directories instead of the authoritative directory
|
||||||
servers. Therefore, Bob's OP opens a stream via Tor to all
|
servers. Therefore, Bob's OP opens a stream via Tor to each
|
||||||
responsible hidden service directories. (He may re-use old circuits
|
responsible hidden service directory. (He may re-use old circuits
|
||||||
for this.) Over this stream, Bob's OP makes an HTTP 'POST' request to a
|
for this.) Over this stream, Bob's OP makes an HTTP 'POST' request to a
|
||||||
URL "/tor/rendezvous2/publish" relative to the hidden service
|
URL "/tor/rendezvous2/publish" relative to the hidden service
|
||||||
directory's root, containing as its body Bob's service descriptor.
|
directory's root, containing as its body Bob's service descriptor.
|
||||||
@ -532,13 +541,14 @@ $Id$
|
|||||||
[Caching may make her partitionable, but she fetched it anonymously,
|
[Caching may make her partitionable, but she fetched it anonymously,
|
||||||
and we can't very well *not* cache it. -RD]
|
and we can't very well *not* cache it. -RD]
|
||||||
|
|
||||||
Alice's OP fetches v2 descriptors in parallel to v0 descriptors. Analog
|
Alice's OP fetches v2 descriptors in parallel to v0 descriptors. Similarly
|
||||||
to the description in section 1.4, the OP fetches a v2 descriptor from a
|
to the description in section 1.4, the OP fetches a v2 descriptor from a
|
||||||
randomly chosen hidden service directory out of the changing subset of
|
randomly chosen hidden service directory out of the changing subset of
|
||||||
6 nodes. If the request is unsuccessful, Alice retries the other
|
6 nodes. If the request is unsuccessful, Alice retries the other
|
||||||
remaining responsible hidden service directories one after the other.
|
remaining responsible hidden service directories in a random order.
|
||||||
Alice relies on Bob to care about a potential clock skew between the two
|
Alice relies on Bob to care about a potential clock skew between the two
|
||||||
by possibly storing two sets of descriptors.
|
by possibly storing two sets of descriptors. [XXX what does this mean
|
||||||
|
Bob does in practice, if anything? -RD]
|
||||||
|
|
||||||
Alice's OP opens a stream via Tor to the chosen v2 hidden service
|
Alice's OP opens a stream via Tor to the chosen v2 hidden service
|
||||||
directory. (She may re-use old circuits for this.) Over this stream,
|
directory. (She may re-use old circuits for this.) Over this stream,
|
||||||
@ -578,16 +588,16 @@ $Id$
|
|||||||
|
|
||||||
Cleartext
|
Cleartext
|
||||||
PK_ID Identifier for Bob's PK [20 octets]
|
PK_ID Identifier for Bob's PK [20 octets]
|
||||||
Encrypted to Bob's PK:
|
Encrypted to Bob's PK: (in the v0 intro protocol)
|
||||||
RP Rendezvous point's nickname [20 octets]
|
RP Rendezvous point's nickname [20 octets]
|
||||||
RC Rendezvous cookie [20 octets]
|
RC Rendezvous cookie [20 octets]
|
||||||
g^x Diffie-Hellman data, part 1 [128 octets]
|
g^x Diffie-Hellman data, part 1 [128 octets]
|
||||||
OR
|
OR (in the v1 intro protocol)
|
||||||
VER Version byte: set to 1. [1 octet]
|
VER Version byte: set to 1. [1 octet]
|
||||||
RP Rendezvous point nick or ID [42 octets]
|
RP Rendezvous point nick or ID [42 octets]
|
||||||
RC Rendezvous cookie [20 octets]
|
RC Rendezvous cookie [20 octets]
|
||||||
g^x Diffie-Hellman data, part 1 [128 octets]
|
g^x Diffie-Hellman data, part 1 [128 octets]
|
||||||
OR
|
OR (in the v2 intro protocol)
|
||||||
VER Version byte: set to 2. [1 octet]
|
VER Version byte: set to 2. [1 octet]
|
||||||
IP Rendezvous point's address [4 octets]
|
IP Rendezvous point's address [4 octets]
|
||||||
PORT Rendezvous point's OR port [2 octets]
|
PORT Rendezvous point's OR port [2 octets]
|
||||||
@ -610,8 +620,8 @@ $Id$
|
|||||||
|
|
||||||
Through Tor 0.2.0.6-alpha, clients only generated the v0 introduction
|
Through Tor 0.2.0.6-alpha, clients only generated the v0 introduction
|
||||||
format, whereas hidden services have understood and accepted v0,
|
format, whereas hidden services have understood and accepted v0,
|
||||||
v1, and v2 since 0.1.1.x. As of Tor 0.2.0.7-alpha, clients switched
|
v1, and v2 since 0.1.1.x. As of Tor 0.2.0.7-alpha and 0.1.2.18,
|
||||||
to using the v2 intro format.
|
clients switched to using the v2 intro format.
|
||||||
|
|
||||||
If Alice has downloaded a v2 descriptor, she uses the contained public
|
If Alice has downloaded a v2 descriptor, she uses the contained public
|
||||||
key ("service-key") instead of Bob's public key to create the
|
key ("service-key") instead of Bob's public key to create the
|
||||||
@ -714,9 +724,9 @@ Foo.
|
|||||||
3. Hidden service directory operation
|
3. Hidden service directory operation
|
||||||
|
|
||||||
This section has been introduced with the v2 hidden service descriptor
|
This section has been introduced with the v2 hidden service descriptor
|
||||||
format. It contains all operations of a v2 hidden service directory that
|
format. It describes all operations of the v2 hidden service descriptor
|
||||||
are required for the protocol described in section 1 to succeed with v2
|
fetching and propagation mechanism that are required for the protocol
|
||||||
hidden service descriptors.
|
described in section 1 to succeed with v2 hidden service descriptors.
|
||||||
|
|
||||||
3.1. Configuring as hidden service directory
|
3.1. Configuring as hidden service directory
|
||||||
|
|
||||||
@ -726,14 +736,14 @@ Foo.
|
|||||||
descriptors that it sends to directory authorities.
|
descriptors that it sends to directory authorities.
|
||||||
|
|
||||||
The directory authorities include a new flag "HSDir" for routers that
|
The directory authorities include a new flag "HSDir" for routers that
|
||||||
decided to provide storage for hidden service descriptors and that are
|
decided to provide storage for hidden service descriptors and that
|
||||||
running for at least 24 hours.
|
have been running for at least 24 hours.
|
||||||
|
|
||||||
3.2. Accepting publish requests
|
3.2. Accepting publish requests
|
||||||
|
|
||||||
Hidden service directory nodes accept publish requests for v2 hidden service
|
Hidden service directory nodes accept publish requests for v2 hidden service
|
||||||
descriptors and store them to their local memory. (It is not necessary to
|
descriptors and store them to their local memory. (It is not necessary to
|
||||||
make descriptors persistent, because after disconnecting, the onion router
|
make descriptors persistent, because after restarting, the onion router
|
||||||
would not be accepted as storing node anyway, because it has not been
|
would not be accepted as storing node anyway, because it has not been
|
||||||
running for at least 24 hours.) All requests and replies are formatted as
|
running for at least 24 hours.) All requests and replies are formatted as
|
||||||
HTTP messages. Requests are contained within BEGIN_DIR cells, directed to
|
HTTP messages. Requests are contained within BEGIN_DIR cells, directed to
|
||||||
|
Loading…
Reference in New Issue
Block a user