[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r15531: Add proposal 142: Combine Introduction and Rendezvous Points (tor/trunk/doc/spec/proposals)
Author: nickm
Date: 2008-06-27 22:45:46 -0400 (Fri, 27 Jun 2008)
New Revision: 15531
Added:
tor/trunk/doc/spec/proposals/142-combine-intro-and-rend-points.txt
Modified:
tor/trunk/doc/spec/proposals/000-index.txt
Log:
Add proposal 142: Combine Introduction and Rendezvous Points
Modified: tor/trunk/doc/spec/proposals/000-index.txt
===================================================================
--- tor/trunk/doc/spec/proposals/000-index.txt 2008-06-27 23:37:20 UTC (rev 15530)
+++ tor/trunk/doc/spec/proposals/000-index.txt 2008-06-28 02:45:46 UTC (rev 15531)
@@ -64,6 +64,7 @@
139 Download consensus documents only when it will be trusted [CLOSED]
140 Provide diffs between consensuses [OPEN]
141 Download server descriptors on demand [DRAFT]
+142 Combine Introduction and Rendezvous Points [OPEN]
Proposals by status:
@@ -81,6 +82,7 @@
121 Hidden Service Authentication
137 Keep controllers informed as Tor bootstraps
140 Provide diffs between consensuses
+ 142 Combine Introduction and Rendezvous Points
NEEDS-REVISION:
110 Avoiding infinite length circuits
117 IPv6 exits
Added: tor/trunk/doc/spec/proposals/142-combine-intro-and-rend-points.txt
===================================================================
--- tor/trunk/doc/spec/proposals/142-combine-intro-and-rend-points.txt (rev 0)
+++ tor/trunk/doc/spec/proposals/142-combine-intro-and-rend-points.txt 2008-06-28 02:45:46 UTC (rev 15531)
@@ -0,0 +1,280 @@
+Filename: 142-combine-intro-and-rend-points.txt
+Title: Combine Introduction and Rendezvous Points
+Version: $Revision$
+Last-Modified: $Date$
+Author: Karsten Loesing, Christian Wilms
+Created: 27-Jun-2008
+Status: Open
+
+Change history:
+
+ 27-Jun-2008 Initial proposal for or-dev
+
+Overview:
+
+ Establishing a connection to a hidden service currently involves two Tor
+ relays, introduction and rendezvous point, and 10 more relays distributed
+ over four circuits to connect to them. The introduction point is
+ established in the mid-term by a hidden service to transfer introduction
+ requests from client to the hidden service. The rendezvous point is set
+ up by the client for a single hidden service request and actually
+ transfers end-to-end encrypted application data between client and hidden
+ service.
+
+ There are some reasons for separating the two roles of introduction and
+ rendezvous point: (1) Plausible deniability: A relay shall not be made
+ responsible that it relays data for a certain hidden service; in the
+ original design as described in [1] an introduction point relays no
+ application data, and a rendezvous points neither knows the hidden
+ service nor can it decrypt the data. (2) Scalability: The hidden service
+ shall not have to maintain a number of open circuits proportional to the
+ expected number of client requests. (3) Attack resistance: The effect of
+ an attack on the only visible parts of a hidden service, its introduction
+ points, shall be as small as possible.
+
+ However, elimination of a separate rendezvous connection as proposed by
+ Øverlier and Syverson [2] is the most promising approach to improve the
+ delay in connection establishment. From all substeps of connection
+ establishment extending a circuit by only a single hop is responsible for
+ a major part of delay. Reducing on-demand circuit extensions from two to
+ one results in a decrease of mean connection establishment times from 39
+ to 29 seconds [3]. Particularly, eliminating the delay on hidden-service
+ side allows the client to better observe progress of connection
+ establishment, thus allowing it to use smaller timeouts. Proposal 114
+ introduced new introduction keys for introduction points and provides for
+ user authorization data in hidden service descriptors; it will be shown
+ in this proposal that introduction keys in combination with new
+ introduction cookies provide for the first security property of plausible
+ deniability. Further, eliminating the need for a separate introduction
+ connection benefits the overall network load by decreasing the number of
+ circuit extensions. After all, having only one connection between client
+ and hidden service reduces the overall protocol complexity.
+
+Design:
+
+ 1. Hidden Service Configuration
+
+ Hidden services should be able to choose whether they would like to use
+ this protocol. This might be opt-in for 0.2.1.x and opt-out for later
+ major releases.
+
+ 2. Contact Point Establishment
+
+ When preparing a hidden service, a Tor client selects a set of relays to
+ act as contact points instead of introduction points. The contact point
+ combines both roles of introduction and rendezvous point as proposed in
+ [2]. The only requirement for a relay to be picked as contact point is
+ its capability of performing this role. This can be determined from the
+ Tor version number that needs to be equal or higher than the first
+ version that implements this proposal.
+
+ The easiest way to implement establishment of contact points is to
+ introduce v2 ESTABLISH_INTRO cells and use the currently unused auth type
+ number 1 for contact points.
+
+ V Format byte: set to 255 [1 octet]
+ V Version byte: set to 2 [1 octet]
+ KLEN Key length [2 octets]
+ PK Bob's public key [KLEN octets]
+ HS Hash of session info [20 octets]
+ AUTHT The auth type that is supported [1 octet]
+ AUTHL Length of auth data [2 octets]
+ AUTHD Auth data [variable]
+ SIG Signature of above information [variable]
+
+ The hidden service does not create a fixed number of contact points, like
+ 3 in the current protocol. It uses a minimum of 3 contact points, but
+ increases this number depending on the history of client requests within
+ the last hour. The hidden service also increases this number depending on
+ the frequency of failing contact points in order to defend against
+ attacks on its contact points. When client authorization as described in
+ proposal 121 is used, a hidden service can also use the number of
+ authorized clients as first estimate for the required number of contact
+ points.
+
+ 3. Hidden Service Descriptor Creation
+
+ A hidden service needs to issue a fresh introduction cookie for each
+ established introduction point. By requiring clients to use this cookie
+ in a later connection establishment, an introduction point cannot access
+ the hidden service that it works for. Together with the fresh
+ introduction key that was introduced in proposal 114, this results in
+ plausible deniability for the contact point.
+
+ The v2 hidden service descriptor format contains an
+ "intro-authentication" field that may contain introduction-point specific
+ keys. The hidden service creates a random string, comparable to the
+ rendezvous cookie, and includes it in the descriptor as introduction
+ cookie. Existing clients that do not understand this new protocol simply
+ ignore that cookie. Further, the hidden service lists in the
+ "protocol-versions" field that it supports this protocol.
+
+ 4. Connection Establishment
+
+ When establishing a connection to a hidden service a client learns about
+ the capability of using the new protocol from the hidden service
+ descriptor. It may choose whether to use this new protocol or not,
+ whereas older clients cannot understand the new capability and can only
+ use the current protocol. Client using version 0.2.1.x should be able to
+ opt-in for using the new protocol, which should change to opt-out for
+ later major releases.
+
+ When using the new capability the client creates a v2 INTRODUCE1 cell
+ that extends an unversioned INTRODUCE1 cell by adding the content of an
+ ESTABLISH_RENDEZVOUS cell. Further, the client sends this cell using the
+ new cell type 41 RELAY_INTRODUCE1_VERSIONED to the introduction point,
+ because unversioned and versioned INTRODUCE1 cells are indistinguishable:
+
+ Cleartext
+ V Version byte: set to 2 [1 octet]
+ PK_ID Identifier for Bob's PK [20 octets]
+ AUTHT The auth type that is supported [1 octet]
+ AUTHL Length of auth data [2 octets]
+ AUTHD Auth data [variable]
+ Encrypted to Bob's PK:
+ VER Version byte: set to 3. [1 octet]
+ AUTHT The auth type that is supported [1 octet]
+ AUTHL Length of auth data [2 octets]
+ AUTHD Auth data [variable]
+ IP Rendezvous point's address [4 octets]
+ PORT Rendezvous point's OR port [2 octets]
+ ID Rendezvous point identity ID [20 octets]
+ KLEN Length of onion key [2 octets]
+ KEY Rendezvous point onion key [KLEN octets]
+ RC Rendezvous cookie [20 octets]
+ g^x Diffie-Hellman data, part 1 [128 octets]
+
+ The cleartext part contains the rendezvous cookie as auth data for the
+ currently unused auth type 1. The contact point remembers the rendezvous
+ cookie just as a rendezvous point would do.
+
+ The encrypted part contains the introduction cookie as auth data for the
+ likewise unused auth type 1. The rendezvous cookie is contained as
+ before, but the remaining rendezvous point information is left empty, as
+ there is no separate rendezvous point.
+
+ 5. Rendezvous Establishment
+
+ The contact point recognizes a v2 INTRODUCE1 cell with auth type 1 as a
+ request to be used in the new protocol. It remembers the contained
+ rendezvous cookie, replies to the client with an INTRODUCE_ACK cell
+ (omitting the RENDEZVOUS_ESTABLISHED cell), and forwards the encrypted
+ part of the INTRODUCE1 cell as INTRODUCE2 cell to the hidden service.
+
+ 6. Introduction at Hidden Service
+
+ The hidden services recognizes an INTRODUCE2 cell containing an
+ introduction cookie as authorization data. In this case, it does not
+ extend a circuit to a rendezvous point, but sends a RENDEZVOUS1 cell
+ directly back to its contact point as usual.
+
+ 7. Rendezvous at Contact Point
+
+ The contact point processes a RENDEZVOUS1 cell just as a rendezvous point
+ does. The only difference is that the hidden-service-side circuit is not
+ exclusive for the client connection, but shared among multiple client
+ connections.
+
+Security Implications:
+
+ (1) Plausible deniability
+
+ One of the original reasons for the separation of introduction and
+ rendezvous points is that a relay shall not be made responsible that it
+ relays data for a certain hidden service. In the current design an
+ introduction point relays no application data and a rendezvous points
+ neither knows the hidden service nor can it decrypt the data.
+
+ This property is also fulfilled in this new design. A contact point only
+ learns a fresh introduction key instead of the hidden service key, so
+ that it cannot recognize a hidden service. Further, the introduction
+ cookie, which is unknown to the contact point, prevents it from accessing
+ the hidden service itself. The only way for a contact point to access a
+ hidden service is to look up whether it is contained in the descriptors
+ of known hidden services. A contact point can plausibly deny knowledge of
+ any hidden services, so that it cannot know for which hidden service it
+ is working. In addition to that, it cannot learn the data that it
+ transfers, because all communication between client and hidden service
+ are end-to-end encrypted.
+
+ (2) Scalability
+
+ Another goal of the existing hidden service protocol is that a hidden
+ service does not have to maintain a number of open circuits proportional
+ to the expected number of client requests. The rationale behind this is
+ better scalability.
+
+ The new protocol eliminates the need for a hidden service to extend
+ circuits on demand, which has a positive effect circuits establishment
+ times and overall network load. The solution presented here to establish
+ a number of contact points proportional to the history of connection
+ requests reduces the number of circuits to a minimum number that fits the
+ hidden service's needs.
+
+ (3) Attack resistance
+
+ The third goal of separating introduction and rendezvous points is to
+ limit the effect of an attack on the only visible parts of a hidden
+ service which are the contact points in this protocol.
+
+ In theory, the new protocol is more vulnerable to this attack. An
+ attacker who can take down a contact point does not only eliminate an
+ access point to the hidden service, but also breaks current client
+ connections to the hidden service using that contact point.
+
+ Øverlier and Syverson proposed the concept of valet nodes as additional
+ safeguard for introduction/contact points [4]. Unfortunately, this
+ increases hidden service protocol complexity conceptually and from an
+ implementation point of view. Therefore, it is not included in this
+ proposal.
+
+ However, in practice attacking a contact point (or introduction point) is
+ not as rewarding as it might appear. The cost for a hidden service to set
+ up a new contact point and publish a new hidden service descriptor is
+ minimal compared to the efforts necessary for an attacker to take a Tor
+ relay down. As a countermeasure to further frustrate this attack, the
+ hidden service raises the number of contact points as a function of
+ previous contact point failures.
+
+ Further, the probability of breaking client connections due to attacking
+ a contact point is minimal. It can be assumed that the probability of one
+ of the other five involved relays in a hidden service connection failing
+ or being shut down is higher than that of a successful attack on a
+ contact point.
+
+ (4) Resistance against Locating Attacks
+
+ Clients are no longer able to force a hidden service to create or extend
+ circuits. This further reduces an attacker's capabilities of locating a
+ hidden server as described by Øverlier and Syverson [5].
+
+Compatibility:
+
+ The presented protocol does not raise compatibility issues with current
+ Tor versions. New relay versions support both, the existing and the
+ proposed protocol as introduction/rendezvous/contact points. A contact
+ point acts as introduction point simultaneously. Hidden services and
+ clients can opt-in to use the new protocol which might change to opt-out
+ some time in the future.
+
+References:
+
+ [1] Roger Dingledine, Nick Mathewson, and Paul Syverson, Tor: The
+ Second-Generation Onion Router. In the Proceedings of the 13th USENIX
+ Security Symposium, August 2004.
+
+ [2] Lasse Øverlier and Paul Syverson, Improving Efficiency and Simplicity
+ of Tor Circuit Establishment and Hidden Services. In the Proceedings of
+ the Seventh Workshop on Privacy Enhancing Technologies (PET 2007),
+ Ottawa, Canada, June 2007.
+
+ [3] Christian Wilms, Improving the Tor Hidden Service Protocol Aiming at
+ Better Performance, diploma thesis, June 2008, University of Bamberg.
+
+ [4] Lasse Øverlier and Paul Syverson, Valet Services: Improving Hidden
+ Servers with a Personal Touch. In the Proceedings of the Sixth Workshop
+ on Privacy Enhancing Technologies (PET 2006), Cambridge, UK, June 2006.
+
+ [5] Lasse Øverlier and Paul Syverson, Locating Hidden Servers. In the
+ Proceedings of the 2006 IEEE Symposium on Security and Privacy, May 2006.
+
Property changes on: tor/trunk/doc/spec/proposals/142-combine-intro-and-rend-points.txt
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native