134-robust-voting.txt 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. Filename: 134-robust-voting.txt
  2. Title: More robust consensus voting with diverse authority sets
  3. Author: Peter Palfrader
  4. Created: 2008-04-01
  5. Status: Rejected
  6. History:
  7. 2009 May 27: Added note on rejecting this proposal -- Nick
  8. Overview:
  9. A means to arrive at a valid directory consensus even when voters
  10. disagree on who is an authority.
  11. Motivation:
  12. Right now there are about five authoritative directory servers in the
  13. Tor network, tho this number is expected to rise to about 15 eventually.
  14. Adding a new authority requires synchronized action from all operators of
  15. directory authorities so that at any time during the update at least half of
  16. all authorities are running and agree on who is an authority. The latter
  17. requirement is there so that the authorities can arrive at a common
  18. consensus: Each authority builds the consensus based on the votes from
  19. all authorities it recognizes, and so a different set of recognized
  20. authorities will lead to a different consensus document.
  21. Objective:
  22. The modified voting procedure outlined in this proposal obsoletes the
  23. requirement for most authorities to exactly agree on the list of
  24. authorities.
  25. Proposal:
  26. The vote document each authority generates contains a list of
  27. authorities recognized by the generating authority. This will be
  28. a list of authority identity fingerprints.
  29. Authorities will accept votes from and serve/mirror votes also for
  30. authorities they do not recognize. (Votes contain the signing,
  31. authority key, and the certificate linking them so they can be
  32. verified even without knowing the authority beforehand.)
  33. Before building the consensus we will check which votes to use for
  34. building:
  35. 1) We build a directed graph of which authority/vote recognizes
  36. whom.
  37. 2) (Parts of the graph that aren't reachable, directly or
  38. indirectly, from any authorities we recognize can be discarded
  39. immediately.)
  40. 3) We find the largest fully connected subgraph.
  41. (Should there be more than one subgraph of the same size there
  42. needs to be some arbitrary ordering so we always pick the same.
  43. E.g. pick the one who has the smaller (XOR of all votes' digests)
  44. or something.)
  45. 4) If we are part of that subgraph, great. This is the list of
  46. votes we build our consensus with.
  47. 5) If we are not part of that subgraph, remove all the nodes that
  48. are part of it and go to 3.
  49. Using this procedure authorities that are updated to recognize a
  50. new authority will continue voting with the old group until a
  51. sufficient number has been updated to arrive at a consensus with
  52. the recently added authority.
  53. In fact, the old set of authorities will probably be voting among
  54. themselves until all but one has been updated to recognize the
  55. new authority. Then which set of votes is used for consensus
  56. building depends on which of the two equally large sets gets
  57. ordered before the other in step (3) above.
  58. It is necessary to continue with the process in (5) even if we
  59. are not in the largest subgraph. Otherwise one rogue authority
  60. could create a number of extra votes (by new authorities) so that
  61. everybody stops at 5 and no consensus is built, even tho it would
  62. be trusted by all clients.
  63. Anonymity Implications:
  64. The author does not believe this proposal to have anonymity
  65. implications.
  66. Possible Attacks/Open Issues/Some thinking required:
  67. Q: Can a number (less or exactly half) of the authorities cause an honest
  68. authority to vote for "their" consensus rather than the one that would
  69. result were all authorities taken into account?
  70. Q: Can a set of votes from external authorities, i.e of whom we trust either
  71. none or at least not all, cause us to change the set of consensus makers we
  72. pick?
  73. A: Yes, if other authorities decide they rather build a consensus with them
  74. then they'll be thrown out in step 3. But that's ok since those other
  75. authorities will never vote with us anyway.
  76. If we trust none of them then we throw them out even sooner, so no harm done.
  77. Q: Can this ever force us to build a consensus with authorities we do not
  78. recognize?
  79. A: No, we can never build a fully connected set with them in step 3.
  80. ------------------------------
  81. I'm rejecting this proposal as insecure.
  82. Suppose that we have a clique of size N, and M hostile members in the
  83. clique. If these hostile members stop declaring trust for up to M-1
  84. good members of the clique, the clique with the hostile members will
  85. in it will be larger than the one without them.
  86. The M hostile members will constitute a majority of this new clique
  87. when M > (N-(M-1)) / 2, or when M > (N + 1) / 3. This breaks our
  88. requirement that an adversary must compromise a majority of authorities
  89. in order to control the consensus.
  90. -- Nick