• Security incident: ISF was recently accessed by intruders. Please change your password, and change it anywhere else you used it. Read more

Bender Elected to School Board (Electronic Voting)

Puppycow

Penultimate Amazing
Joined
Jan 9, 2003
Messages
34,308
Location
Yokohama, Japan
Hackers Elect Futurama’s Bender to the Washington DC School Board

Electronic voting has earned a pretty bad reputation for being insecure and completely unreliable. Well, get ready to add another entry to e-voting's list of woes.

One Bender Bending Rodríguez was elected to the 2010 school board in Washington DC. A team of hackers from the University of Michigan got Bender elected as a write-in candidate who stole every vote from the real candidates. Bender, of course, is a cartoon character from the TV series Futurama.

This was not some nefarious attack from a group of rogue hackers: The DC school board actually dared hackers to crack its new Web-based absentee voting system four days ahead of the real election. University of Michigan professor Alexander Halderman, along with two graduate students, did the deed within a few hours.

After looking over the e-voting system's Ruby on Rails software framework, Halderman’s team discovered that they could use a shell injection vulnerability to get into the system. This allowed them to retrieve the “public key," which is used to encrypt the ballots. With the public key in hand, the hackers were able to change every ballot already in the system and replace any subsequent real ballots with fakes.

While the hackers were mucking about the system’s server, they discovered other files that were not ballot-related in the /tmp/ directory. Among them was a 937-page PDF containing instructions to individual voters as well as authentication codes for every voter. If someone with malicious intent got their hands on these codes, they could use them to cast ballots as a real voter.

:D
 
Interesting article, with one glaring error. Instead of the "public key", they probably got the private key. The public key is intended to be distributed widely (it would be used to encrypt and sign the incoming ballots), but the private key needs to be kept safe.

I'll bet the private key wasn't even stored in a file that was password protected. If it was, it could well have prevented the ballots from being tampered with. It probably should not have been on a computer accessible from the public internet.
 
There is nothing wrong with electronic voting that a B-52 raid on the voting machine factories cannot fix.

Of course there is no other way to fix them.
 
Interesting article, with one glaring error. Instead of the "public key", they probably got the private key. The public key is intended to be distributed widely (it would be used to encrypt and sign the incoming ballots), but the private key needs to be kept safe.

I'll bet the private key wasn't even stored in a file that was password protected. If it was, it could well have prevented the ballots from being tampered with. It probably should not have been on a computer accessible from the public internet.

Are you an expert in cryptography?
 
According to the article:

This allowed them to retrieve the “public key," which is used to encrypt the ballots. With the public key in hand, the hackers were able to change every ballot already in the system and replace any subsequent real ballots with fakes.

This agrees with the Wikipedia description of Public Key Cryptography:

The public key is used to transform a message into an unreadable form, decryptable only by using the (different but matching) private key.

Both the article and the Wikipedia say that the public key is used for encryption and the private key is used for decryption. I don't know the details of what they did, but the article seems to be correct in that respect. Perhaps the votes were changed in the encryption process rather than the decryption process.
 
Here's the paper the hackers wrote about this. It's linked at the end of the article.

https://jhalderm.com/pub/papers/dcvoting-fc12.pdf

Stealing secrets We retrieved several cryptographic secrets from the application
server, including the public key used for encrypting ballots. Despite the use of
the term “public key,” this key should actually be kept secret, since it allows
attackers to substitute arbitrary ballots in place of actual cast ballots should
they gain access to the storage device. We also gained access to the database
by finding credentials in the bash history file (mysql -h 10.1.143.75 -udvbm
-pP@ssw0rd).
Changing past and future votes We used the stolen public key to replace all of
the encrypted ballot files on the server at the time of our intrusion with a forged
ballot of our choosing. In addition, we modified the ballot-processing function to
append any subsequently voted ballots to a .tar file in the publicly accessible
images directory (where we could later retrieve them) and replace the originals
with our forged ballot. Recovery from this attack is difficult; there is little hope
for protecting future ballots from this level of compromise, since the code that
processes the ballots is itself suspect. Using backups to ensure that compromises
are not able to affect ballots cast prior to the compromise may conflict with
ballot secrecy in the event that the backup itself is compromised.
 
I had tried to get the paper earlier but the site did not respond. I tried just now and was able to retrieve the paper. It should make for interesting reading.

Are you an expert in cryptography?

I've worked at gaining an understanding of Public Key Infrastructure (PKI) through setting up public/private key pairs for ssh, and generating secure certificates for web servers. That process involved setting up a test CA [Certficate Authority] and generating my own public/private key pair for signing the certificates. (The generated certificates are useless unless the generated CA and its public key are added to the browser's list of trusted CAs. A scenario where that might be useful is a large corporation that runs its own CA for internal purposes. The corporation can use its CA to sign certificates issued to employees. These can be added to the browser's list of valid identities, and allow users to automatically login to internal websites. When the employee leaves the company, you simply revoke the certificate and he/she suddenly loses all access. No need to change passwords.)

My understanding is the core process works by generating two keys, A and B (both very large prime numbers.). Documents encrypted with the A key can only be decrypted using the B key, and documents encrypted with the B key can only be decrypted using the A key. So you keep one of those keys secure and call it the private key, and disseminate the other and call it the public key. The public at large uses the public key to encrypt documents being sent to the server. The server uses its private key to read the information.

I'll need to read the article to understand why they used the term "public key" in the way they did.
 
I've read the article, and they used the term "public key" correctly. The public key was on the front-end system that accepted unencrypted ballots submitted from the internet, and was used to encrypt the ballots before transferring them to an application server and back-end database server, both of which were behind a firewall.

A couple of take-aways from this article:
  • Internet security is hard to get right
  • Because of #1, e-voting will continue to be inferior (from a security point of view) to paper ballots for the foreseeable future
 

ISF - Join now!

Every member here is approved by hand. No bots, no spam, just people who care about evidence and honest debate.

Membership is free!

Create your free account

Back
Top Bottom