|
@@ -0,0 +1,104 @@
|
|
|
+Filename: 134-robust-voting.txt
|
|
|
+Title: More robust consensus voting with diverse authority sets
|
|
|
+Author: Peter Palfrader
|
|
|
+Created: 2008-04-01
|
|
|
+Status: Draft
|
|
|
+
|
|
|
+Overview:
|
|
|
+
|
|
|
+ A means to arrive at a valid directory consensus even when voters
|
|
|
+ disagree on who is an authority.
|
|
|
+
|
|
|
+
|
|
|
+Motivation:
|
|
|
+
|
|
|
+ Right now there are about five authoritative directory servers in the
|
|
|
+ Tor network, tho this number is expected to rise to about 15 eventually.
|
|
|
+
|
|
|
+ Adding a new authority requires synchronized action from all operators of
|
|
|
+ directory authorities so that at any time during the update at least half of
|
|
|
+ all authorities are running and agree on who is an authority. The latter
|
|
|
+ requirement is there so that the authorities can arrive at a common
|
|
|
+ consensus: Each authority builds the consensus based on the votes from
|
|
|
+ all authorities it recognizes, and so a different set of recognized
|
|
|
+ authorities will lead to a different consensus document.
|
|
|
+
|
|
|
+
|
|
|
+Objective:
|
|
|
+
|
|
|
+ The modified voting procedure outlined in this proposal obsoletes the
|
|
|
+ requirement for most authorities to exactly agree on the list of
|
|
|
+ authorities.
|
|
|
+
|
|
|
+
|
|
|
+Proposal:
|
|
|
+
|
|
|
+ The vote document each authority generates contains a list of
|
|
|
+ authorities recognized by the generating authority. This will be
|
|
|
+ a list of authority identity fingerprints.
|
|
|
+
|
|
|
+ Authorities will accept votes from and serve/mirror votes also for
|
|
|
+ authorities they do not recognize. (Votes contain the signing,
|
|
|
+ authority key, and the certificate linking them so they can be
|
|
|
+ verified even without knowing the authority beforehand.)
|
|
|
+
|
|
|
+ Before building the consensus we will check which votes to use for
|
|
|
+ building:
|
|
|
+
|
|
|
+ 1) We build a directed graph of which authority/vote recognizes
|
|
|
+ whom.
|
|
|
+ 2) (Parts of the graph that aren't reachable, directly or
|
|
|
+ indirectly, from any authorities we recognize can be discarded
|
|
|
+ immediately.)
|
|
|
+ 3) We find the largest fully connected subgraph.
|
|
|
+ (Should there be more than one subgraph of the same size there
|
|
|
+ needs to be some arbitrary ordering so we always pick the same.
|
|
|
+ E.g. pick the one who has the smaller (XOR of all votes' digests)
|
|
|
+ or something.)
|
|
|
+ 4) If we are part of that subgraph, great. This is the list of
|
|
|
+ votes we build our consensus with.
|
|
|
+ 5) If we are not part of that subgraph, remove all the nodes that
|
|
|
+ are part of it and go to 3.
|
|
|
+
|
|
|
+ Using this procedure authorities that are updated to recognize a
|
|
|
+ new authority will continue voting with the old group until a
|
|
|
+ sufficient number has been updated to arrive at a consensus with
|
|
|
+ the recently added authority.
|
|
|
+
|
|
|
+ In fact, the old set of authorities will probably be voting among
|
|
|
+ themselves until all but one has been updated to recognize the
|
|
|
+ new authority. Then which set of votes is used for consensus
|
|
|
+ building depends on which of the two equally large sets gets
|
|
|
+ ordered before the other in step (3) above.
|
|
|
+
|
|
|
+ It is necessary to continue with the process in (5) even if we
|
|
|
+ are not in the largest subgraph. Otherwise one rogue authority
|
|
|
+ could create a number of extra votes (by new authorities) so that
|
|
|
+ everybody stops at 5 and no consensus is built, even tho it would
|
|
|
+ be trusted by all clients.
|
|
|
+
|
|
|
+
|
|
|
+Anonymity Implications:
|
|
|
+
|
|
|
+ The author does not believe this proposal to have anonymity
|
|
|
+ implications.
|
|
|
+
|
|
|
+
|
|
|
+Possible Attacks/Open Issues/Some thinking required:
|
|
|
+
|
|
|
+ Q: Can a number (less or exactly half) of the authorities cause an honest
|
|
|
+ authority to vote for "their" consensus rather than the one that would
|
|
|
+ result were all authorities taken into account?
|
|
|
+
|
|
|
+
|
|
|
+ Q: Can a set of votes from external authorities, i.e of whom we trust either
|
|
|
+ none or at least not all, cause us to change the set of consensus makers we
|
|
|
+ pick?
|
|
|
+ A: Yes, if other authorities decide they rather build a consensus with them
|
|
|
+ then they'll be thrown out in step 3. But that's ok since those other
|
|
|
+ authorities will never vote with us anyway.
|
|
|
+ If we trust none of them then we throw them out even sooner, so no harm done.
|
|
|
+
|
|
|
+ Q: Can this ever force us to build a consensus with authorities we do not
|
|
|
+ recognize?
|
|
|
+ A: No, we can never build a fully connected set with them in step 3.
|