incentives.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. Tor Incentives Design Brainstorms
  2. 1. Goals: what do we want to achieve with an incentive scheme?
  3. 1.1. Encourage users to provide good relay service (throughput, latency).
  4. 1.2. Encourage users to allow traffic to exit the Tor network from
  5. their node.
  6. 2. Approaches to learning who should get priority.
  7. 2.1. "Hard" or quantitative reputation tracking.
  8. In this design, we track the number of bytes and throughput in and
  9. out of nodes we interact with. When a node asks to send or receive
  10. bytes, we provide service proportional to our current record of the
  11. node's value. One approach is to let each circuit be either a normal
  12. circuit or a premium circuit, and nodes can "spend" their value by
  13. sending and receiving bytes on premium circuits: see section 4.1 for
  14. details of this design. Another approach (section 4.2) would treat
  15. all traffic from the node with the same priority class, and so nodes
  16. that provide resources will get and provide better service on average.
  17. 2.2. "Soft" or qualitative reputation tracking.
  18. Rather than accounting for every byte (if I owe you a byte, I don't
  19. owe it anymore once you've spent it), instead I keep a general opinion
  20. about each server: my opinion increases when they do good work for me,
  21. and it decays with time, but it does not decrease as they send traffic.
  22. Therefore we reward servers who provide value to the system without
  23. nickle and diming them at each step. We also let them benefit from
  24. relaying traffic for others without having to "reserve" some of the
  25. payment for their own use. See section 4.3 for a possible design.
  26. 2.3. Centralized opinions from the reputation servers.
  27. The above approaches are complex and we don't have all the answers
  28. for them yet. A simpler approach is just to let some central set
  29. of trusted servers (say, the Tor directory servers) measure whether
  30. people are contributing to the network, and provide a signal about
  31. which servers should be rewarded. They can even do the measurements
  32. via Tor so servers can't easily perform only when they're being
  33. tested. See section 4.4.
  34. 2.4. Reputation servers that aggregate opinions.
  35. The option above has the directory servers doing all of the
  36. measurements. This doesn't scale. We can set it up so we have "deputy
  37. testers" -- trusted other nodes that do performance testing and report
  38. their results. If we want to be really adventurous, we could even
  39. accept claims from every Tor user and build a complex weighting /
  40. reputation system to decide which claims are "probably" right.
  41. 3. Related issues we need to keep in mind.
  42. 3.1. Relay and exit needs to be easy and usable.
  43. Implicit in all of the above designs is the need to make it easy to
  44. run a Tor server out of the box. We need to make it stable on all
  45. common platforms (including XP), it needs to detect its available
  46. bandwidth and not overreach that, and it needs to help the operator
  47. through opening up ports on his firewall. Then we need a slick GUI
  48. that lets people click a button or two rather than editing text files.
  49. Once we've done all this, we'll need to face the big question: is
  50. most of the barrier to growth caused by the unusability of the current
  51. software? If so, are the rest of these incentive schemes superfluous?
  52. 3.2. The network effect: how many nodes will you interact with?
  53. One of the concerns with pairwise reputation systems is that as the
  54. network gets thousands of servers, the chance that you're going to
  55. interact with a given server decreases. So if in 90% of interactions
  56. you're acting for the first time, the "local" incentive schemes above
  57. are going to degrade. This doesn't mean they're pointless -- it just
  58. means we need to be aware that this is a limitation, and plan in the
  59. background for what step to take next.
  60. 3.3. Guard nodes
  61. As of Tor 0.1.1.11, Tor users pick from a small set of semi-permanent
  62. "guard nodes" for their first hop of each circuit. This seems to have
  63. a big impact on pairwise reputation systems since you will only be
  64. cashing in on your reputation to a few people, and it is unlikely
  65. that a given pair of nodes will both use the other as guard nodes.
  66. What does this imply? For one, it means that we don't care at all
  67. about the opinions of most of the servers out there -- we should
  68. focus on keeping our guard nodes happy with us.
  69. One conclusion from that is that our design needs to judge performance
  70. not just through direct interaction (beginning of the circuit) but
  71. also through indirect interaction (middle of the circuit). That way
  72. you can never be sure when your guards are measuring you.
  73. 3.4. Restricted topology: benefits and roadmap.
  74. As the Tor network continues to grow, we will need to make design
  75. changes to the network topology so that each node does not need
  76. to maintain connections to an unbounded number of other nodes. For
  77. anonymity's sake, we're going to partition the network such that all
  78. the nodes have the same belief about the divisions and each node is
  79. in only one partition. (The alternative is that every user fetches
  80. his own random subset of the overall node list -- this is bad because
  81. of intersection attacks.)
  82. Therefore the "network horizon" for each user will stay bounded,
  83. which helps against the above issues in 3.2 and 3.3.
  84. It could be that the core of long-lived servers will all get to know
  85. each other, and so the critical point that decides whether you get
  86. good service is whether the core likes you. Or perhaps it will turn
  87. out to work some other way.
  88. A special case here is the social network, where the network isn't
  89. partitioned randomly but instead based on some external properties.
  90. More on this later.
  91. 3.5. Profit-maximizing vs. Altruism.
  92. There are some interesting game theory questions here.
  93. First, in a volunteer culture, success is measured in public utility
  94. or in public esteem. If we add a reward mechanism, there's a risk that
  95. reward-maximizing behavior will surpass utility- or esteem-maximizing
  96. behavior.
  97. Specifically, if most of our servers right now are relaying traffic
  98. for the good of the community, we may actually *lose* those volunteers
  99. if we turn the act of relaying traffic into a selfish act.
  100. I am not too worried about this issue for now, since we're aiming
  101. for an incentive scheme so effective that it produces thousands of
  102. new servers.
  103. 3.6. What part of the node's performance do you measure?
  104. We keep referring to having a node measure how well the other nodes
  105. receive bytes. But many transactions in Tor involve fetching lots of
  106. bytes and not sending very many. So it seems that we want to turn
  107. things around: we need to measure how quickly a node can _send_
  108. us bytes, and then only send it bytes in proportion to that.
  109. There's an obvious attack though: a sneaky user could simply connect
  110. to a node and send some traffic through it. Voila, he has performed
  111. for the network. This is no good. The first fix is that we only count
  112. if you're sending bytes "backwards" in the circuit. Now the sneaky
  113. user needs to construct a circuit such that his node appears later
  114. in the circuit, and then send some bytes back quickly.
  115. Maybe that complexity is sufficient to deter most lazy users. Or
  116. maybe it's an argument in favor of a more penny-counting reputation
  117. approach.
  118. 4. Sample designs.
  119. 4.1. Two classes of service for circuits.
  120. 4.2. Treat all the traffic from the node with the same service;
  121. hard reputation system.
  122. 4.3. Treat all the traffic from the node with the same service;
  123. soft reputation system.
  124. Rather than a guaranteed system with accounting (as 4.1 and 4.2),
  125. we instead try for a best-effort system. All bytes are in the same
  126. class of service. You keep track of other Tors by key, and give them
  127. service proportional to the service they have given you. That is, in
  128. the past when you have tried to push bytes through them, you track the
  129. number of bytes and the average bandwidth, and use that to weight the
  130. priority of their connections if they try to push bytes through you.
  131. Now you're going to get minimum service if you don't ever push bytes
  132. for other people, and you get increasingly improved service the more
  133. active you are. We should have memories fade over time (we'll have
  134. to tune that, which could be quite hard).
  135. Pro: Sybil attacks are pointless because new identities get lowest
  136. priority.
  137. Pro: Smoothly handles periods of both low and high network load. Rather
  138. than keeping track of the ratio/difference between what he's done for
  139. you and what you've done for him, simply keep track of what he's done
  140. for you, and give him priority based on that.
  141. Based on 3.3 above, it seems we should reward all the nodes in our
  142. path, not just the first one -- otherwise the node can provide good
  143. service only to its guards. On the other hand, there might be a
  144. second-order effect where you want nodes to like you so that *when*
  145. your guards choose you for a circuit, they'll be able to get good
  146. performance. This tradeoff needs more simulation/analysis.
  147. This approach focuses on incenting people to relay traffic, but it
  148. doesn't do much for incenting them to allow exits. It may help in
  149. one way through: if there are few exits, then they will attract a
  150. lot of use, so lots of people will like them, so when they try to
  151. use the network they will find their first hop to be particularly
  152. pleasant. After that they're like the rest of the world though.
  153. Pro: this is a pretty easy design to add; and it can be phased in
  154. incrementally simply by having new nodes behave differently.
  155. 4.4. Centralized opinions from the reputation servers.
  156. Have a set of official measurers who spot-check servers from the
  157. directory to see if they really do offer roughly the bandwidth
  158. they advertise. Include these observations in the directory. (For
  159. simplicity, the directory servers could be the measurers.) Then Tor
  160. servers weight priority for other servers depending on advertised
  161. bandwidth, giving particularly low priority to connections not
  162. listed or that failed their spot-checks. The spot-checking can be
  163. done anonymously, because hey, we have an anonymity network.
  164. We could also reward exit nodes by giving them better priority, but
  165. like above this only will affect their first hop. Another problem
  166. is that it's darn hard to spot-check whether a server allows exits
  167. to all the pieces of the Internet that it claims to. A last problem
  168. is that since directory servers will be doing their tests directly
  169. (easy to detect) or indirectly (through other Tor servers), then
  170. we know that we can get away with poor performance for people that
  171. aren't listed in the directory.
  172. 5. Types of attacks.
  173. 5.1. Anonymity attacks: