165-simple-robust-voting.txt 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. Filename: 165-simple-robust-voting.txt
  2. Title: Easy migration for voting authority sets
  3. Author: Nick Mathewson
  4. Created: 2009-05-28
  5. Status: Open
  6. Overview:
  7. This proposal describes any easy-to-implement, easy-to-verify way to
  8. change the set of authorities without creating a "flag day" situation.
  9. Motivation:
  10. From proposal 134 ("More robust consensus voting with diverse
  11. authority sets") by Peter Palfrader:
  12. Right now there are about five authoritative directory servers
  13. in the Tor network, tho this number is expected to rise to about
  14. 15 eventually.
  15. Adding a new authority requires synchronized action from all
  16. operators of directory authorities so that at any time during the
  17. update at least half of all authorities are running and agree on
  18. who is an authority. The latter requirement is there so that the
  19. authorities can arrive at a common consensus: Each authority
  20. builds the consensus based on the votes from all authorities it
  21. recognizes, and so a different set of recognized authorities will
  22. lead to a different consensus document.
  23. In response to this problem, proposal 134 suggested that every
  24. candidate authority list in its vote whom it believes to be an
  25. authority. These A-says-B-is-an-authority relationships form a
  26. directed graph. Each authority then iteratively finds the largest
  27. clique in the graph and remove it, until they find one containing
  28. them. They vote with this clique.
  29. Proposal 134 had some problems:
  30. - It had a security problem in that M hostile authorities in a
  31. clique could effectively kick out M-1 honest authorities. This
  32. could enable a minority of the original authorities to take over.
  33. - It was too complex in its implications to analyze well: it took us
  34. over a year to realize that it was insecure.
  35. - It tried to solve a bigger problem: general fragmentation of
  36. authority trust. Really, all we wanted to have was the ability to
  37. add and remove authorities without forcing a flag day.
  38. Proposed protocol design:
  39. A "Voting Set" is a set of authorities. Each authority has a list of
  40. the voting sets it considers acceptable. These sets must always
  41. contain the authority itself. Each authority lists all of these
  42. voting sets in its votes.
  43. Authorities exchange votes with every other authority in any of their
  44. voting sets.
  45. When it comes time to calculate a consensus, an authority votes with
  46. whichever voting set it lists that is listed by the most members of
  47. that set.
  48. For example, suppose authority A recognizes two sets, "A B C D" and
  49. "A E F G H". Suppose that the first set is recognized by all of A,
  50. B, C, and D, whereas the second set is recognized only by A, E, and
  51. F. Because the first set is recognize by more of the authorities in
  52. it than the other one, A will vote with the first set.
  53. Ties are broken in favor of some arbitrary function of the identity
  54. keys of the authorities in the set.
  55. How to migrate authority sets:
  56. In steady state, each authority should list only the current actual
  57. voting set as accepted.
  58. When we want to add an authority, we list two voting sets: one
  59. containing all the old authorities, and one containing the old
  60. authorities and the new authority too. Once all authorities are
  61. listing the new set of authorities, they will start preferring that
  62. set because of its size.
  63. When we want to remove an authority, we list two voting sets: one
  64. containing all the authorities, and one omitting the authority we
  65. want to remove. Once enough authorities list the new set as
  66. acceptable, we start having authorities stop listing the old set.
  67. Once there are more listing the new set than the old set, the new set
  68. will win.
  69. Data format changes:
  70. Add a new 'voting-set' line to the vote document format. Allow it to
  71. occur any number of times. Its format is:
  72. voting-set SP 'fingerprint' SP 'fingerprint' ... NL
  73. where each fingerprint is the hex fingerprint of an identity key of
  74. an authority. Sort fingerprints in ascending order.
  75. When the consensus method is at least 'X' (decide this when we
  76. implement the proposal), add this line to the consensus format as
  77. well, before the first dir-source line. [This information is not
  78. redundant with the dir-source sections in the consensus: If an
  79. authority is recognized didn't vote, that authority will appear in
  80. the voting-set line but not in the dir-source sections.]
  81. We don't need to list other information about authorities in our
  82. vote.
  83. Migration issues:
  84. We should keep track somewhere of which Tor client versions
  85. recognized which authorities.
  86. Acknowledgments:
  87. The design came out of an IRC conversation with Peter Palfrader. He
  88. had the basic idea first.