A VM for voting machines: making peace between vendors and security advocates.

January 7, 2006 by Ping

Just recently, the state of Wisconsin enacted a law that requires source code for voting machine software to be handed over to be held in escrow by the elections board.  Parties that successfully petition for a recount after an election can designate people to examine the source code, as long as they sign a confidentiality agreement.

This is a step in the right direction, but the bill should have gone further and made the source code available to the public for inspection.  In fact, the original version of the bill says exactly that:

5.84 (3) If a municipality uses an electronic voting system for voting at any election, the municipal clerk shall provide to any person, upon request, at the expense of the municipality, the coding for the software that the municipality uses to operate the system and to tally the votes cast.

If that had passed, it would truly have been one of the best things ever to happen in electronic voting, and a few excited announcements based on the above interpretation have appeared on blogs and news sites.  Unfortunately, the bill was amended to read:

(4) If a valid petition for a recount is filed under s.  9.01 in an election at which an electronic voting system was used to record and tally the votes cast, each party to the recount may designate one or more persons who are authorized to receive access to the software components that were used to record and tally the votes in the election.  The board shall grant access to the software components to each designated person if, before receiving access, the person enters into a written agreement with the board that obligates the person to exercise the highest degree of reasonable care to maintain the confidentially of all proprietary information to which the person is provided access, unless otherwise permitted in a contract entered into under sub.  (5).

(5) A county or municipality may contract with the vendor of an electronic voting system to permit a greater degree of access to software components used with the system than is required under sub.  (4).

You can read the entire history of Assembly Bill 627 at the Wisconsin legislature website.

In many ways, the requirement for publicly inspectable source code should be obvious when we’re talking about running a democracy that depends on these machines.  We can’t have confidence that votes will be counted correctly without examining and understanding how the machines work — and how they work is largely defined by the software they run.  Moreover, transparency is necessary for establishing public confidence in the integrity of the results, which is just as important as the actual correctness of the results themselves.  It’s not enough for the voting machine manufacturers to say their machines work correctly; and even to be honest and right when they say so — the nation’s citizens must believe this to be so in order for democracy to work.

Election turnouts have been low and declining in the United States for some time, which reflects a low and decreasing sense of personal empowerment in the political functioning of the country.  And with the introduction of electronic voting machines, public confidence in elections has been reduced even further by widespread reports of machine malfunctions, software bugs, irresponsible development practices, and the questionable political or criminal backgrounds of voting machine company directors and employees.  The United States is not facing an impending crisis of confidence in its fundamental mechanisms of democracy; it is smack in the middle of one.

On the other side of the transparency issue are the companies who have to sustain a profitable business making and selling these machines.  They don’t want their source code to be released to the public.  To succeed they have to compete — and how can a company maintain a competitive advantage if their competitors can just take and use their source code?  Security folks (and anyone concerned with the integrity of elections) want the source code to be publicly inspectable; voting machine vendors want the source code to be secret.  Their incentives are logical and diametrically opposed.

There is a reasonable compromise that can help resolve this problem.

What is needed is a separation of concerns.  Suppose that, instead of each machine running on its company’s own unique mishmash of purchased and custom-written proprietary software, all of them implement a common virtual machine specification.  Ballot programs would then run on top of the virtual machine (henceforth, VM stands for “virtual machine”, not “voting machine”).  This would be similar to Java’s model: the VM abstracts away the differences among hardware platforms, and takes care of low-level details so you can write Java programs at a higher level.  It makes guarantees for you so that certain kinds of errors can be avoided.

In the voting machine case, the VM would ensure some of the necessary security properties: that each voter can only vote once, that the voter’s privacy is protected, that the votes cannot be tampered with.  To some extent, the VM could even prevent programs that run on it from biasing the results.  For example, suppose that the Evil Party wants to write a program, to run on this VM, that will secretly switch votes over to the Evil Party.  But the VM only accepts instructions of the form “display candidate 5” or “count a vote for candidate 3”.  If the VM randomizes the numbering of the candidates each time, the program has no way to know which candidate corresponds to which number, so the program will have a hard time trying to bias the vote in favour of any particular candidate.

Suppose further that the law requires the source code for the VM to be made public.

Now, the people who prioritize security and transparency would be free to inspect the VM to make sure that it really enforces the level of fairness and security we need.  A community of concerned citizens, election officials, programmers, and security experts could work together to develop and evolve the specification and implementation of the VM in an open process.

At the same time, the companies that make voting machines would be free to continue competing on the physical design of their machines and the design of the ballots and ballot programs that will run on top of this VM.  In fact, the market could benefit from even greater competition, since there might spring up new companies that just write software for the VM and companies that just build hardware to implement the VM.  The software companies could write programs that run on a variety of different voting machines instead of just one, and the hardware companies could build machines that run a software made by a variety of companies instead of just one.

The standardization of a VM for voting machines would be a move towards the best of both worlds: better security and transparency where it matters most, and market competition that continues to propel the development of better voting machine designs.  It’s a big change, of course, and all changes require some effort and compromise on all sides.  I think it’s a good idea.

To succeed they have to compete — and how can a company maintain a competitive advantage if their competitors can just take and use their source code?

I disagree with this premise. Their competitive advantage is reduced, but not eliminated. Linux software distributions share their source, and yet the companies still compete against each other and offer different advantages. The needs of various voting jurisdictions are varied enough that this could easily drive competition.

It is not always the most important thing to preserve competitive advantage. I’m sure lots of beverage companies would be more competitive if they didn’t have to disclose their ingredients. But the health and safety of the public are more important. So why does democracy go so cheaply?

Also, your VM seems very high level to me. How does it differ from say, mandating the use of a certain underlying open source voting system?

And ensuring that the VM is standard among multiple jurisdictions sounds harder to me than going fully open source. What firm wants to build their product on a government-mandated closed-source VM? Bug fixes, performance enhancements, and data model extensions would be impossible. They could compete better on a pure open source platform.

Their competitive advantage is reduced, but not eliminated.

It is not always the most important thing to preserve competitive advantage.

I’d agree with both of these statements. I didn’t mean to imply i thought there was no competitive advantage left; i was only trying to illustrate why these companies want to keep their source code secret.

Also, your VM seems very high level to me. How does it differ from say, mandating the use of a certain underlying open source voting system?

Ballot designs. Each ballot is a program; the VM executes the ballot. What i have in mind is probably not as high-level as you are thinking. The companies can compete to make tools for designing and creating ballot programs. The compiled ballot programs (just like paper sample ballots) should be available to the public for testing and verification before the election. One of the advantages of a standard VM is that it lets ordinary citizens try out the ballots on their own computers.

And ensuring that the VM is standard among multiple jurisdictions sounds harder to me than going fully open source. What firm wants to build their product on a government-mandated closed-source VM?

I’m talking about an open-source VM here. I see this not as an alternative to open source but a step towards it.

 
 

I’m not sure I agree with your premise:

On the other side of the transparency issue are the companies who have to sustain a profitable business making and selling these machines. They don’t want their source code to be released to the public. To succeed they have to compete — and how can a company maintain a competitive advantage if their competitors can just take and use their source code?

Releasing source code doesn’t make that source code usable by a competitor. It would be reasonable to use a license which is not an open source license to achieve the purposes of democratic oversight. Such a license would allow security and reliability analysis, but not reuse in other projects. Since all code has to come out under these sorts of terms, copyright infringement is easily discoverable. In fact, it seems to me that the non-commercial, attribution creative commons license may do precisely what everyone wants.

Even if it doesn’t, reliance on the implements of democracy is hugely important, as it is the source of government legitamacy. That’s worth fighting for.

David Robarts wrote:

I agree that while making the source available to public inspection would make it easier to steal intellectual property, it also will make it easier for voting machine companies to discover copyright infringement. One problem with a non-commercial solution is that if the solution is not purchased from a corporation then the user will be liable for its flaws. As an election official, I’d much rather buy a guaranteed solution rather than have to evaluate (and be responsible for) a free one.

David,

I think you may be misunderstanding my use of the term “non-commercial.” I was using it in the specific sense of a Creative Commons license. See more below.

David Robarts wrote:

I understood your meaning of non-commercial in regards to the licensing legalities. I meant my comment more as an aside to those who would prefer that the solution be an open source project of sorts. A transparent commercial solution sounds like the wisest choice. With any solution, I’d still like a physical ballot to be generated that allows the voter to confirm that their vote is accurate and makes a manual recount possible.

(Comments won't nest below this level.)
 
 
 
 

David,

Who said anything about a non-commercial solution? I’m advocating for commercial solutions, with strong transparency into what is being used to evaluate and tabulate votes.

The Creative commons ‘non-commercial, attribution’ license is a copyright license that allows people to make non-commercial use of a work, while reserving all commercial rights. For example, if Ping licensed this blog under that license, you could quote freely from it on your blog, but not put the posts into a book and sell it.

Much the same way, the companies could distribute their code under such a license. It would be a copyright violation to use it commercially, but I could read it. They, being the copyright owner, could also use the code in a commercial setting.

I think we can have commercial companies, selling and supporting products, whose source code is available to the public for inspection.

 

Ping, we should talk sometime about this idea in depth. I’m just finishing a paper on open source in e-voting and the punchline is basically that source disclosure under contract to qualified individuals (who agree to publish a public report on their analysis) is the way to balance many of these tensions (I’ll be able to share this paper for comment in a while).

I see various issues with this neat VM idea. First, innovation; companies right now compete on services, equipment, software and features. How are companies going to set themselves apart from the rest of the pack if everyone’s using the same vanilla VM? Or do you see space in your idea for significant differentiation of the end result running on a common VM? One thing I’m sure you saw at the Alameda Co. demo was that each implementation was vastly different from each other… do you think that this kind of differentiation would be possible in your model?

The final issue I’ll mention is creation and maintenance of the VM. You say “A community of concerned citizens, election officials, programmers, and security experts could work together to develop and evolve the specification and implementation of the VM in an open process.” If we take the Open Voting Consortium as an example of an organization that has endeavored to produce an open source, commodity voting system, we see that making this kind of thing happen is not as easy as it would seem. Also, in terms of federal and state regulatory barriers, you’ll have to have the VM be a mandated requirement (all vendors write software for the VM that is tested in confidence) or there will have to be the option to do it the old way or this new way… and I don’t see these vendors willingly moving from a codebase that they’ve invested lots of resources into to this new VM concept.

Hi Joe,

I disagree fairly strongly with your idea of selective disclosure to qualified individuals. My first paper was on ‘Apparent Weaknesses in the Security Dynamics Client Server Protocol. When I wrote it, I was in no publicly discernable way “qualified,” I was just someone who was interested in the system, and had the time to look at it. As far as I know, that work is still the most devastating one ever found against their product line. So I speak from experience when I say that the set of non-qualified examiners shouldn’t be excluded.

Ah, but I didn’t say what I meant by “qualified”. (Also, in your paper, you didn’t rely on access to the details of the protocol (source code) to demonstrate the attack, you examined communications packets between the client and server.)

For sure, we’d want to make sure that people that could do such analysis as you demonstrate in that paper have access. You make a great point that can be more generally stated as: there is a spectrum from public availability of all details about a system to complete secrecy on which the probability of detecting a vulnerability varies as the number of eyeballs that could possibly look at the code. That is, the trick is to make sure you have enough interested and capable eyeballs to review code and to retain as much of a competitive edge that IP provides firms as possible (if it makes sense, which I think it does).

I think it’s important to reduce the number of people that have access to the source code to keep the voting systems market competitive. While one could say, “why are we worrying about competition?”, it’s important to remember that the market for voting systems is a tough place to do business and our increasingly efficient and capable electoral system requires these businesses to function.

I think, at a minimum (and I’m still working through this, so please post comments), there would have to be the following requirements:

* Each evaluator would have to enter into a standard agreement with the vendor that specified the licensing terms of the software and other things such as attesting that they wouldn’t do certain things (like create and sell databases of vulnerabilites with malicious intent, etc.).

* Vendors would have to agree to disavow any claims to trade secrecy in their software. (Trade secrets disappear when something is no longer secret.)

* Each evaluator would have to demonstrate some sort of qualification to evaluate the software. This could be as easy as having some certification (such as a degree) in computer science or another technical field.

* Each evaluator would have to agree to publish the results of their analysis publicly so that the general public received the benefit of the source code review. It would also help immensely to put the vendors on notice that secrecy in the name of the bottom-line is going to be phased out.

* There would need to be procedures for addressing what happens if a vulnerability is found in elections software close to an election in which it is to be used.

I don’t believe that I was qualified by your criteria. (I don’t have a technical degree.)

Also, while I didn’t have access to source code, I most definetly had access to code, and we did quite a bit of disassembly work.

I think that raising the transaction costs of evaluating source code is a mistake. There are lots of targets of interest, barriers will cause a great many people to look elsewhere.

Finally, I have no idea what you, or the vendors’ lawyers mean by “malicious intent.” If I submit a bug in a voting machine to bugtraq, is that malicious intent? Whatever you happen to mean, you’re adding stumbling blocks which analysts will worry about, and those analysts will go elsewhere. This has already happened with DMCA. I think its important to estimate the drop in the quality of analysis that would happen under various forms of such a proposal.

(Comments won't nest below this level.)

By “malicious intent” I mean simply that an action is taken with the aim of doing something illegal (such as vote-rigging, -selling or -coercion).

Is there a way of constructing “qualified” that would include you? Could you, for example, provide letters of recommendation that attested to your technical ability? (That paper you pointed to, especially if published in a peer-reviewed journal, would probably be sufficient).

I still think it’s important to restrict the number of people that get access to source code but ensure that the products of their analyses are available to all.

 

I can’t think of a definition of qualified that would include me at the time I did that research, other than “a company was paying me to do information security related things.” The company might have been publicly traded, I’m not sure of what status it was at the time.

To wit: I had no degree, no publications, wasn’t working as a researcher of any sort. What’s more, at hacker cons, I meet a fair number of possibly up and coming researchers who meet that definition. Some of them have become well known and respected: ‘qualified’ even. They get there by doing research on important targets.

So, let me turn the question: Why is it important to restrict who gets source, and are there other ways to achieve those goals?

 

Either we need to preserve competition in the voting systems market, or our country needs to commit to fund it publicly. Software licensing and services is anywhere from 5-10% of vendors revenue. Eliminating that revenue (through open source) or reducing it (through disclosed source; remember trade secrets disappear upon disclosure) would likely mean the exit of a few firms from the market.

What I want to try to figure out is how to balance disclosure and propriety. It’s clear that more disclosure is necessary. It’s clear to me that full disclosure to the public is a bit much given what we’re trying to acheive.

 

What trade secrets exist in voting systems?

I think there’s an analagous argument against standards-driven computer systems in general. Allowing companies to sell whatever they want enhances competition, but buyers, fearing lock-in, demand more and more standards compliance. We as customers of those systems decline to buy systems that (say) don’t speak TCP/IP. I think it is also perfectly reasonable to demand fully available source code.

I think that a vendor could reasonably prevent competition from servicing their machines on integrity grounds, even if everything is known about it. We might even make that a legally enforcable monopoly, for the security and integrity benefits. (Vendors might choose not to exercise it, believing that competition is good for their customers.)

 
 
 
 
 

Fixing the Vote, the right way……

My open proposal for solving the crisis of confidence in election results….