Tuesday, April 19, 2016

Secure elections are not a matter of trust, they are a matter of removing any doubts

Today is the day they hold the New York primary election. Reports are in the alternative press, with news of disenfranchised voters. There are many reports of people finding out on election day that they cannot vote in their closed primary. There is a pending lawsuit to require an open election to ensure that every willing voter can vote. There are also worries about the states still ahead of us. But you won't find any of this in the mainstream press. They won't have it.

There has been a breech of trust in our election systems and it will be addressed. Maybe not in this election, but in the next year or so, there will be pointing fingers and discovery of the cause of the electronic mayhem at the polls. We will need to rebuild our trust in our voting systems.

I would like to share with you a little bit of my philosophy about trust. I developed this philosophy from my experience working with computers. Stuff like, "Never share your password with someone you don't trust", comes to mind. As a desktop support technician, when people were entering their passwords, I always turned away. I was aware that with someone's password, I could impersonate them by using their account. Even when a user offered to share their password with me, I said, "No, I'm not interested. I have no need to know your password." I wanted to remove any doubt that I might have known someone's password.

By the same token, I lock my computer at work when I walk away. It's not a question of trust in my fellow employees. Of course, I trust them. I lock my computer to remove any doubt that anything could be done on my computer in my name, while I'm away. Computer security is not just about trusting my coworkers - it's about maintaining that trust by doing my part to remove any opportunity for someone else to act in my name. By locking my computer, by looking away and affording my users the privacy they need to enter their passwords, I am removing any doubts about trust between us

The allegations of voter purges, of the stripping of party declarations in the voter records, and even vote flipping, could all be solved with a system that removes any doubt about their integrity. But first, we're going to have to replace our voting machines, the servers that capture their votes and the databases used to record everything, with something better, much better.

The news today about New York, Arizona and any other place that has closed primaries will make two changes almost completely inevitable: all elections will be open to independent voters and the implementation of blockchain voting records.

We're already seeing movement to open the primaries in New York with a lawsuit to open it today to deal with the apparent changes in party declarations reported by lifelong Democrats and new voters. They estimate that as many as 27% of the voters in New York may be surprised to find that they are not able to vote in this election. Making the primary election open is really just the first step and there is at least one organization dedicated to doing just that, The Independent Voter Project.

The Independent Voter Project seeks to make all elections for public office open elections. The reason for this is simple. Independent voters make up 43% of the electorate and the number is growing and will continue to grow as both major parties fail to represent the interests of most Americans. They are now larger than either party alone.

It might now seem obvious what the major parties were trying to do. They could see the loss of registered voters and sought to close the primaries to grow the membership. But that didn't happen. Independent voters aren't going away and they want to be heard. Closing the primaries was exactly the wrong thing to do.

Even with open primary elections, we still need to do something about securing our elections. If we're going to use electronic voting, then we need to be transparent from the bottom up. That means ditching machines with proprietary code and using paper until we can implement a system that will use records that cannot be arbitrarily altered.

Many of the voting machines we use are more 10 or more years old and run old versions of Windows. To create transparency, we need to use open source systems and put our security out in the open for all to see. Security through obscurity doesn't work and it never has. Software is built by human beings and it's not perfect, but it's good enough for most cases. Secure software is hard to write, but when hundreds or thousands of people work together, they can build better, more secure software. This is because the code is open for all to see.

What is open source software? Most operating systems like Windows, Linux and Unix are written in C and C++. When programmers write their code, they include comments to make it easier to understand what the code does. Computers don't understand that code, so the programmer will run that code through something called a compiler to create machine readable code. This is the binary code we know as an EXE file on Windows.

When the human readable code is processed by a compiler, the comments are stripped out as they are not needed by the computer to run. A programmer could take binary code and decompile the code to reveal the human readable code that was written by the programmer, but the comments would be removed. Code without the comments is very difficult and time consuming to follow.

To put it differently, we could decompile something like Windows to know what it does, but without the comments, it would take much longer to understand it. Even simple programs can be confusing without the comments. This is why open source software is so popular. When the code is shared, it teaches everyone who reads it how software works. We need open source software for electronic voting so that we know how it works before we put it to use in an election.

The second part of the security program is the data produced by the software. All software has input and output. When you use Word, whatever you type is input, and Word records your input to a file. That file is in a very well understood format that can often be read by other programs like WordPerfect and LibreOffice.

When we shop online, we create an account and use that account to record what we bought. That information is stored in a database, usually, an SQL database. SQL databases are flexible and easy to manage. It's easy to put information in and read it out. We can run queries or scripts against the database to change many records at once based upon certain criteria. We can selectively modify records en mass, at will with an SQL database. Most SQL databases are password protected, but they're only as secure as the administrator of that database.

Our voting records are often maintained in general purpose databases like SQL or Microsoft Access. These databases may be good at managing data, but they were not built with security baked in. That was added later. We need to use a database that is made to be secure from the beginning.

That database is called blockchain. Blockchain databases are built with security baked in from the ground up. The most well known blockchain database is called Bitcoin, a database designed to work as a medium of exchange, like the dollar. Bitcoin is peer-to-peer, meaning all computers that run Bitcoin have a copy of the database. All computers can check with other peers to make sure they have an accurate copy of the database. They can all check to see if the copy they have is corrupted and get an accurate copy if so.

Every transaction in the database is linked. The integrity of one transaction depends on the transactions before it. Every transaction builds upon the last. Any attempt to modify past transactions will compromise the integrity of the database and will be easily detected.

Blockchain technology is so effective, that Wall Street investors are taking an active interest in putting it to work for transaction recording and for investments. They have taken a shine to Bitcoin on Wall Street.

If blockchain is good enough for Wall Street, it's good enough to secure our voting records. Companies that promote the use of blockchain technology for voting have already appeared and are making their offerings known. We have the technology, we only have to use it.

Everything that happens in this presidential election, every compromise, every complaint, every purged voter record, will only make the argument for change more compelling. Open source blockchain voting systems are inevitable. It's just a matter of political will and time.

No comments: