Browse Source

rewrite rendezvous spec so normal people can follow it

svn:r344
Roger Dingledine 22 years ago
parent
commit
4fc9478937
1 changed files with 65 additions and 35 deletions
  1. 65 35
      doc/rendezvous.txt

+ 65 - 35
doc/rendezvous.txt

@@ -1,22 +1,48 @@
-                  How to make rendezvous points work
-                               1-11Jun2003
+              How to make rendezvous points work with tor
 
 
 0. Overview
 0. Overview
 
 
-   Rendezvous points are an implementation of server anonymity /
-   location-hidden servers in the onion routing network.  There are
-   three components needed for rendezvous points:
-
-   A) A means for the client ("Alice") to tell a server ("Bob") where
-      to contact her in order to establish a connection. (Introduction)
-   B) A means for Bob to contact Alice to actually establish the
-      connection, and for them to communicate later. (Meeting)
-   C) Necessary glue code so that Alice can view webpages on a
-      location-hidden webserver, and Bob can run a location-hidden
-      server with minimal invasive changes. (Application)
-
-   We'll tackle these in order.  In all cases, we'll assume that both
-   Alice and Bob run local OPs.
+   Rendezvous points are an implementation of location-hidden services
+   (server anonymity) in the onion routing network. Location-hidden
+   services means Bob can offer a tcp service (say, a webserver) via the
+   onion routing network, without revealing the IP of that service.
+
+   The basic idea is to provide censorship resistance for Bob by allowing
+   him to advertise a variety of onion routers as his public location
+   (nodes known as his Introduction Points, see Section 1). Alice,
+   the client, chooses a node known as a Meeting Point (see Section
+   2). This extra level of indirection is needed so Bob doesn't serve
+   files directly from his public locations (so these nodes don't open
+   themselves up to abuse, eg from serving Nazi propaganda in France). The
+   extra level of indirection also allows Bob to choose which requests
+   to respond to, and which to ignore.
+
+   We also provide the necessary glue code so that Alice can view webpages
+   on a location-hidden webserver, and Bob can run a location-hidden
+   server, with minimal invasive changes (see Section 3). Both Alice
+   and Bob must run local onion proxies (OPs).
+
+   The big picture follows. We direct the reader to the rest of the
+   document for more details and explanation.
+
+   1) Bob chooses some Introduction Points, and advertises them on a DHT.
+   2) Bob establishes onion routing connections to each of his
+      Introduction Points, and waits.
+   3) Alice learns about Bob's service out of band (perhaps Bob gave her
+      a pointer, or she found it on a website). She looks up the details
+      of Bob's service from the DHT.
+   4) Alice chooses and establishes a Meeting Point for this transaction.
+   5) Alice goes to one of Bob's Introduction Points, and gives it a blob
+      (encrypted for Bob) which tells him about herself and the Meeting
+      Point she chose.
+   6) IP sends the blob to Bob.
+   7) Bob chooses whether to ignore the blob, or to onion route to MP.
+   8) MP plugs together Alice and Bob. Note that MP doesn't know (or care)
+      who Alice is, or who Bob is; and it can't read anything they
+      transmit either, because they share a session key.
+   9) Alice sends a 'begin' cell along the circuit. It makes its way
+      to Bob's onion proxy. Bob's onion proxy connects to Bob's webserver.
+   10) Data goes back and forth as usual.
 
 
 1. Introduction service
 1. Introduction service
 
 
@@ -27,11 +53,11 @@
 
 
    When establishing such an introduction point, Bob provides the onion
    When establishing such an introduction point, Bob provides the onion
    router with a public "introduction" key.  The hash of this public
    router with a public "introduction" key.  The hash of this public
-   key uniquely identifies Bob, and prevents anybody else from
-   usurping Bob's introduction point in the future.  Additionally, Bob
-   can use the same public key to establish an introduction point on
-   another OR, and Alice can still be confident that Bob is the same
-   server.
+   key identifies a unique Bob, and (since Bob is required to sign his
+   messages) prevents anybody else from usurping Bob's introduction
+   point in the future.  Additionally, Bob can use the same public key
+   to establish an introduction point on another onion router (OR),
+   and Alice can still be confident that Bob is the same server.
 
 
    (The set-up-an-introduction-point command should come via a
    (The set-up-an-introduction-point command should come via a
    RELAY_BIND_INTRODUCTION cell. This cell creates a new stream on the
    RELAY_BIND_INTRODUCTION cell. This cell creates a new stream on the
@@ -54,13 +80,12 @@
 [98 bytes] g^x part 1 (inside the RSA)
 [98 bytes] g^x part 1 (inside the RSA)
 [30 bytes] g^x part 2 (symmetrically encrypted)
 [30 bytes] g^x part 2 (symmetrically encrypted)
 
 
-
    The meeting point and meeting cookie allow Bob to contact Alice and
    The meeting point and meeting cookie allow Bob to contact Alice and
-   prove his identity; the end-to-end authentication enables Bob to 
+   prove his identity; the end-to-end authentication enables Bob to
    decide whether to talk to Alice; the initial authentication enables
    decide whether to talk to Alice; the initial authentication enables
-   the meeting point to pre-screen introduction requests before
-   sending them to Bob.  (See 3 for a discussion of meeting points;
-   see 2.1 for a proposed authentication mechanism.)
+   the meeting point to pre-screen introduction requests before sending
+   them to Bob.  (See Section 2 for a discussion of meeting points;
+   see Section 1.1 for an example authentication mechanism.)
 
 
    The authentication steps are the appropriate places for the
    The authentication steps are the appropriate places for the
    introduction server or Bob to do replay prevention, if desired.
    introduction server or Bob to do replay prevention, if desired.
@@ -82,6 +107,10 @@
 
 
    [Maybe] Each 'A' has an expiration time built in to it.
    [Maybe] Each 'A' has an expiration time built in to it.
 
 
+   In reality, we'll want to pick a scheme that (a) wasn't invented from
+   scratch in an evening, and (b) doesn't require Alice to remember this
+   many bits (see section 3.2).
+
 2. Meeting points
 2. Meeting points
 
 
    For Bob to actually reply to Alice, Alice first establishes a
    For Bob to actually reply to Alice, Alice first establishes a
@@ -130,21 +159,23 @@
    We assume the existence of a robust decentralized efficient lookup
    We assume the existence of a robust decentralized efficient lookup
    system (call it "DHT"). Bob publishes
    system (call it "DHT"). Bob publishes
      * Bob's Public Key for that service
      * Bob's Public Key for that service
-     * Timestamp
+     * Expiration date ("don't use after")
      * Introduction server 0 ... Introduction server N
      * Introduction server 0 ... Introduction server N
      (All signed by Bob's Public Key)
      (All signed by Bob's Public Key)
    into DHT, indexed by the hash of Bob's Public Key. Bob should
    into DHT, indexed by the hash of Bob's Public Key. Bob should
    periodically republish his introduction information with a new
    periodically republish his introduction information with a new
-   timestamp (and possibly with new/different introduction servers if
-   he wants), so Alice can trust that DHT is giving her an up-to-date
-   version.
+   expiration date (and possibly with new/different introduction servers
+   if he wants), so Alice can trust that DHT is giving her an up-to-date
+   version. The Chord CFS paper describes a sample DHT that allows
+   authenticated updating.
 
 
 3.2. Application interface: client side
 3.2. Application interface: client side
 
 
    We require that the client interface remain a SOCKS proxy, and we
    We require that the client interface remain a SOCKS proxy, and we
    require that Alice shouldn't have to modify her applications. Thus
    require that Alice shouldn't have to modify her applications. Thus
-   we encode all of the necessary information into the hostname that
-   Alice uses (eg when clicking on a url in her browser, etc).
+   we encode all of the necessary information into the hostname (more
+   correctly, fqdn) that Alice uses, eg when clicking on a url in her
+   browser.
 
 
    To establish a connection to Bob, Alice needs to know an Introduction
    To establish a connection to Bob, Alice needs to know an Introduction
    point, Bob's PK, and some authentication cookie. Because encoding this
    point, Bob's PK, and some authentication cookie. Because encoding this
@@ -161,7 +192,6 @@
    13 characters.
    13 characters.
 
 
    Alice's onion proxy examines hostnames and recognizes when they're
    Alice's onion proxy examines hostnames and recognizes when they're
-   destined for a hidden server. If so, it decodes the PK, looks it up in
-   the DHT, chooses and connects to a meeting place, chooses and connects
-   to one of Bob's introduction servers, and then waits to hear from Bob.
+   destined for a hidden server. If so, it decodes the PK and performs
+   the steps in Section 0 above.