Commit 245fb8e8 authored by Roger Dingledine's avatar Roger Dingledine
Browse files

add johnny's further discussion on incentives.


svn:r6115
parent e11f900a
Loading
Loading
Loading
Loading
+125 −2
Original line number Diff line number Diff line
@@ -55,6 +55,11 @@
   accept claims from every Tor user and build a complex weighting /
   reputation system to decide which claims are "probably" right.

   One possible way to implement the latter is something similar to
   EigenTrust [http://www.stanford.edu/~sdkamvar/papers/eigentrust.pdf],
   where the opinion of nodes with high reputation more is weighted
   higher.

3. Related issues we need to keep in mind.

3.1. Relay and exit configuration needs to be easy and usable.
@@ -98,6 +103,10 @@
   also through indirect interaction (middle of the circuit). That way
   you can never be sure when your guards are measuring you.

   Both 3.2 and 3.3 may be solved by having a global notion of reputation,
   as in 2.3 and 2.4. However, computing the global reputation from local
   views could be expensive (O(n^2)) when the network is really large.

3.4. Restricted topology: benefits and roadmap.

   As the Tor network continues to grow, we will need to make design
@@ -164,6 +173,15 @@
   maybe it's an argument in favor of a more penny-counting reputation
   approach.

   Addendum: I was more thinking of measuring based on who is the service
   provider and service receiver for the circuit. Say Alice builds a
   circuit to Bob. Then Bob is providing service to Alice, since he
   otherwise wouldn't need to spend is bandwidth. So traffic in either
   direction should be charged to Alice. Of course, the same attack would
   work, namely, Bob could cheat by sending bytes back quickly. So someone
   close to the origin needs to detect this and close the circuit, if
   necessary. -JN

3.7. What is the appropriate resource balance for servers vs. clients?

   If we build a good incentive system, we'll still need to tune it
@@ -255,15 +273,106 @@
   third approach is to remember which connections have recently sent
   us high-priority cells, and preferentially read from those connections.

   Hopefully we can get away with not solving this section at all.
   Hopefully we can get away with not solving this section at all. But if
   necessary, we can consult Ed Knightly, a Professor at Rice
   [http://www.ece.rice.edu/~knightly/], for his extensive experience on
   networking QoS.

3.11. Global reputation system: Congestion on high reputation servers?

   If the notion of reputation is global (as in 2.3 or 2.4), circuits that
   go through successive high reputation servers would be the fastest and
   most reliable. This would incentivize everyone, regardless of their own
   reputation, to choose only the highest reputation servers in its
   circuits, causing an over-congestion on those servers.

   One could argue, though, that once those servers are over-congested,
   their bandwidth per circuit drops, which would in turn lower their
   reputation in the future. A question is whether this would overall
   stablize.

   Another possible way is to keep a cap on reputation. In this way, a
   fraction of servers would have the same high reputation, thus balancing
   such load.

3.12. Another anonymity attack: learning from service levels.

   If reputation is local, it may be possible for an evil node to learn
   the identity of the origin through provision of differential service.
   For instance, the evil node provides crappy bandwidth to everyone,
   until it finds a circuit that it wants to trace the origin, then it
   provides good bandwidth. Now, as only those directly or indirectly
   observing this circuit would like the evil node, it can test each node
   by building a circuit via each node to another evil node. If the
   bandwidth is high, it is (somewhat) likely that the node was a part of
   the circuit.

   This problem does not exist if the reputation is global and nodes only
   follow the global reputation, i.e., completely ignore their own view.

3.13. DoS through high priority traffic.

   Assume there is an evil node with high reputation (or high value on
   Alice) and this evil node wants to deny the service to Alice. What it
   needs to do is to send a lot of traffic to Alice. To Alice, all traffic
   from this evil node is of high priority. If the choice of circuits are
   too based toward high priority circuits, Alice would spend most of her
   available bandwidth on this circuit, thus providing poor bandwidth to
   everyone else. Everyone else would start to dislike Alice, making it
   even harder for her to forward other nodes' traffic. This could cause
   Alice to have a low reputation, and the only high bandwidth circuit
   Alice could use would be via the evil node.

4. Sample designs.

4.1. Two classes of service for circuits.

   Whenever a circuit is built, it is specified by the origin which class,
   either "premium" or "normal", this circuit belongs. A premium circuit
   gets preferred treatment at each node. A node "spends" its value, which
   it earned a priori by providing service, to the next node by sending
   and receiving bytes. Once a node has overspent its values, the circuit
   cannot stay as premium. It can either breaks or converts into a normal
   circuit. Each node also reserves a small portion of bandwidth for
   normal circuits to prevent starvation.

   Pro: Even if a node has no value to spend, it can still use normal
   circuits. This allow casual user to use Tor without forcing them to run
   a server.

   Pro: Nodes have incentive to forward traffic as quick and as much as
   possible to accumulate value.

   Con: There is no proactive method for a node to rebalance its debt. It
   has to wait until there happens to be a circuit in the opposite
   direction.

   Con: A node needs to build circuits in such a way that each node in the
   circuit has to have good values to the next node. This requires
   non-local knowledge and makes circuits less reliable as the values are
   used up in the circuit.

   Con: May discourage nodes to forward traffic in some circuits, as they
   worry about spending more useful values to get less useful values in
   return.

4.2. Treat all the traffic from the node with the same service;
     hard reputation system.

   This design is similar to 4.1, except that instead of having two
   classes of circuits, there is only one. All the circuits are
   prioritized based on the value of the interacting node.

   Pro: It is simpler to design and give priority based on connections,
   not circuits.

   Con: A node only needs to keep a few guard nodes happy to forward their
   traffic.

   Con: Same as in 4.1, may discourage nodes to forward traffic in some
   circuits, as they worry about spending more useful values to get less
   useful values in return.

4.3. Treat all the traffic from the node with the same service;
     soft reputation system.

@@ -300,7 +409,10 @@
   one way through: if there are few exits, then they will attract a
   lot of use, so lots of people will like them, so when they try to
   use the network they will find their first hop to be particularly
   pleasant. After that they're like the rest of the world though.
   pleasant. After that they're like the rest of the world though. (An
   alternative would be to reward exit nodes with higher values. At the
   extreme, we could even ask the directory servers to suggest the extra
   values, based on the current availability of exit nodes.)

   Pro: this is a pretty easy design to add; and it can be phased in
   incrementally simply by having new nodes behave differently.
@@ -337,5 +449,16 @@

5. Recommendations and next steps.

5.1. Simulation.

   For simulation trace, we can use two: one is what we obtained from Tor
   and one from existing web traces.

   We want to simulate all the four cases in 4.1-4. For 4.4, we may want
   to look at two variations: (1) the directory servers check the
   bandwidth themselves through Tor; (2) each node reports their perceived
   values on other nodes, while the directory servers use EigenTrust to
   compute global reputation and broadcast those.

5.2. Deploying into existing Tor network.