The
IETF has a rather unusual method
for selecting its leadership, at the heart of which is the
Nominating Committee
(nomcom), which selects the candidate lists. The nomcom is randomly
selected from a list of eligible volunteers. The actual selection,
is one of those algorithms that could only have been designed by
nerds; a cryptographic public commitment and verifiable random
choice scheme. It works as follows:
- People volunteer to serve.
- Their eligibility is checked.
- The filtered list is sorted in alphabetical order and published at time X.
Say it has N members,
- A bunch of unpredictable data (stock prices) available only at time X + 7 days
used as the seed of a cryptographic pseudorandom number generator.
- The output of that CPRNG is used to generate 10 unique numbers from 0 to
N-1 (nerds, remember).
- The corresponding people on the list are the nomcom members.
So, from a cryptographer's perspective, the nice thing about
this design is that it mostly can't be cheated.
- Because the list is
published before the random numbers are known, there's no
way to structure it in order to cheat.
- You can of course include fake members but if they're not
selected they don't bias the result and if they are then they
can be challenged. Similarly, you can remove people you don't
like, but they can challenge the list in the week between
publication and selection.
- Because the seed data is public anyone can verify the
result.
- Everyone on the list has an even chance of being chosen.1
In other words, it's a classic cryptographic design in that
it involves placing total trust in the math and no trust whatsoever
in the people running the algorithm--and that's what went wrong
this year.
The person who is responsible for running the algorithm is the
nomcom chair, who is selected by the ISOC President. This year,
the chair made two errors:
- He failed to remove at least one person who was ineligible from
the list.
- He failed to publish the list ahead of time (step 3 above).
Error (1) wouldn't ordinarily be a big deal, because as I indicated
in point (2) above it doesn't affect the outcome. But error (2) is
a big deal because it means that the nomcom chair had an opportunity
to bias the process. The easy way to do this looks like this:
- Collect a bunch of "fake" volunteers. These can be either fake names,
or people who are ineligible, or who don't care if they're volunteered or not.
- Collect the random number output as described in step (5) above.
- Generate a bunch of different volunteer lists with different combinations
of fake names.
- Each of these lists induces a bunch of different nomcom results.
- Select the nomcom you like best and publish the corresponding list as
the list.
- Publish your chosen nomcom.
What stops this attack, of course, is that the list is published
(a cryptographer would say "committed to") in advance. But because
that wasn't done in this case, there's the possibility that the
nomcom chair could have cheated. Now, as a practical matter nobody
believes (at least everybody says they don't) that the nomcom chair
did anything nefarious but because the whole process is predicated
on the theory that he might cheat and is designed to make
it impossible, having a situation where he had the opportunity puts
us in an uncomfortable position.
The obvious thing to do, of course, is simple to run the process over,
and that's indeed what's happened. The problem is that that isn't really
adequate either because we've already seen the current nomcom and so
if we really hate it, then a do-over would be nice even if we can't
predict anything about the composition of the new nomcom other than
that it's a random shuffle. So, given that we have one set of
selections in hand, it's no longer possible for the process to be
unbiased. And we can't really exclude the possibility that the
chair cheated even though, as I said, nobody believes it.
As I indicated earlier (and as Phill Hallam-Baker just
argued on
the IETF list
, a lot of the problem here is designing
a system which is secure cryptographically but really intolerant
of human error--and then expecting that system to give 100%
assurance of fairness. All such systems involve a human element
and you need to be prepared for what happens when the humans screw
up and then be willing to live with less than 100% certainty.
1. This actually isn't entirely true because
the CPRNG produces numbers in the range 1..2128 which
doesn't quite evenly divide by N, so there's a tiny bias
towards people with indices < 2128%N, but it's
too tiny to be important.