Monday, October 15, 2012

Open Source the Voting Machines


It's been a while since I wrote anything substantial.  This is due mostly to extraordinarily poor time management on my part, combined with an unhealthy fixation on social media *cough*Twitter*cough*which seems designed to inhibit both the writing and reading of anything longer than a double-spaced, narrow-margined college term paper paragraph. However, anyone who knows me will have heard me talk (scream is a more accurate description, probably) about the desperate need to open source the voting machines, and that is a topic which simply cannot be expressed adequately in a series of profanity-ridden tweets, no matter how cleverly constructed.  And so, here I am.

To understand what's at stake, I'm afraid I must subject you to a tiny bit of math first:

In the 2000 Presidential election, George W. Bush beat Al Gore by 537 votes (2,912,790 to 2,912,253) out of a total of 5,963,110 cast in the state of Florida.  That's an ALMOST 0.01%, or one hundredth of one percent margin.  Florida is a winner-take-all state in the electoral college, and so all of that state's 25 electoral votes went to Bush, which pushed him to 271 votes, and the presidency.  If we flip the full .01% of the votes in that election from Bush to Gore, Al Gore would have won.  Regardless of your satisfaction with the outcome of that election, it should be manifestly clear that the paramount consideration in any election should be the accurate counting of every vote.

Enter the voting machine.

Theoretically, the voting machine is able to solve just this problem. It's a computer, right? It counts perfectly every time! You push the button and beep-boop it rings you up and off you go, confident that your representation in the republic is secured.  Only it isn't.  Why?

To answer this question I want to take you back in time even further now.  That time is World War II, and the object of our attention is the Enigma Machine.

The Enigma Machine was Germany's ultimate cryptography tool.  Cryptography, loosely defined, is the study and practice of securing your communications so that nobody but you and people whom you trust can read them.  There are many ways of achieving this goal, some more effective than others.  For example, take the galactically famous "secret decoder ring" found in cereal boxes for almost as long as you could find actual cereal in boxes.  It's a ring with two different listings of every character in the alphabet, one in the normal order, and one in a scrambled order, so that each letter appears only once on each list, and each letter appears next to a DIFFERENT letter in the alphabet, so that, for example, A maps to H, B maps to Q, and so on.  In order to use the ring, you compose the message you want to send, and then translate each letter in the message using the ring, replacing the normal-ordered letter on the list with the out-of-order letter.  The end result of this task is a garbled message which is opaque to anyone without the ring.  To decode the message, you reverse the translation, going from the garbled list to the normal list. When you're done, voila, there is the original message.

There are, of course, many problems with this approach.

Firstly, our decoder ring was available in just about every goddamn box of cracker jacks in the world for a while, so if little Johnny had the cash for one, your messages were only as secure as your method of transmission of the message. Once Johnny got his hands on it, (say, by beating up poor little Timmy Twaddlehammer, whom you had entrusted with the message because you knew full well his alcoholic mother didn't EVER buy him cracker jacks), the jig was up, and he'd tell EVERYONE about your crush on Susie Salamanderfeldt.

Secondly, and only slightly more difficultly, even without access to a decoder ring an examination of an intercepted message would result in noticing patterns of letters, and if you applied a bit of time and elbow grease it wouldn't take you long to figure out which letters were supposed to go where.  There are many other problems, but it should suffice to say now that a simple substitution cypher isn't very interesting, or very secure.

But Enigma - oh, Enigma was VERY interesting, and much more difficult to break than a decoder ring.  The Enigma machine was, at the time, the ultimate decoder ring.  I won't go into the mechanics of Enigma or the effort that it took to break it - if you're truly interested, start at the Wikipedia entry and then start following the citations.  It's a fascinating story.  The part of the story that's pertinent is not that Enigma was unbreakable, however - it's that the Germans BELIEVED Enigma to be unbreakable.  Their intelligence and security was a closed information system, a feedback loop which depended on and reinforced the idea that Enigma was perfectly secure.  It wasn't.  And because it wasn't, many people, including President Eisenhower, credited the breaking of Enigma with shortening WWII by as many as 2 years.

What in the hell does this have to do with voting machines?  I'm glad you asked.

The voting machines are nothing more than computers. They display a screen full of information with a way for you to interact with that information in the form of checking boxes.  If that sounds a little like a web site to you, it's not a coincidence.  Nearly everyone has interacted with the web enough to need no training whatsoever on such an interface, so it represents a perfectly logical choice for a massive deployment of technology which requires quick acceptance into the mainstream.  The mechanics of a typical e-voting machine are simple: the voting machine records the individual votes on cards with memory chips on them, and those cards are collected and then inserted into another machine, which counts the votes (in some cases, the machines themselves have modems on them which can transmit the vote tallies to a central authority, and the cards used by individual voters theoretically can be used for verification).

However, the software running on these voting machines is written by humans, and is therefore not guaranteed to be perfect.  In fact it is guaranteed to NOT be perfect, and so these machines are designed with a way to install updates on them, in order to correct the imperfections along the way.  It's a common feature of hardware systems - hell, even your TV probably does it by now (if you've ever seen a "firmware update", this is exactly what's going on), and it's made easier if your device connects to the internet, as the updates can be downloaded and applied at any time.  This is enormously convenient and a powerful way to keep improving devices once they get out into the wild - but it also represents a massive security problem.

Why?  Because it means that the software running on such devices can be altered at any time, by anyone with the knowledge to do it.  If you have the know-how it's possible for you to apply a firmware update to a TV which will cause it to be unable to tune to any channel except QVC.  Or perhaps it will randomly change channels on you; you want to watch tennis, but the TV wants you to watch Oprah.  This is clearly a bad situation, one we want to avoid at all costs, right?  So, how do we avoid it?  How do we know that the software running on the TV works, and that the update won't make things worse when it's supposed to make things better?

Here's where we go back to cryptography for just a moment longer, to talk about digital signatures.  A digital signature functions for computers similarly to the way that your signature functions for you - it's a verification that the thing which has been signed, like a contract, was looked at and approved by you.  Anyone seeing that contract will see your signature and know you approved it.  How do you know the contract wasn't altered after you signed it?  This is why you sign everything in triplicate.  It's not just because lawyers like watching us sign shit, it's to protect you from dishonest people who would alter your contract with the painter to say that you agreed to pay them $10,000 to paint the house instead of just $1,000.  Multiple copies of the contract guarantee that any changes can be challenged in court.

For computers a digital signature is similar.  A digital signature is a way of approving of the contents of a file on a computer, but it's also a way to GUARANTEE that the contents of the file were not altered, in the same way that signing a thousand copies of your contract with the painter does.  When you apply a digital signature to a file, what happens is that the entire contents of the file are scanned, and an algorithm is applied which generates a token that UNIQUELY identifies the contents of that file.  Any time the signature algorithm is applied to the same file, it generates EXACTLY the same signature.  Any time the signature is applied to some OTHER file a DIFFERENT signature is GUARANTEED to be generated.  In this way it is possible for a file to be electronically transferred as many times as possible, and so long as the signature continues to match, you are guaranteed that the contents have not been altered.  This solves our TV problem nicely.  When firmware updates are applied to television sets, they contain digital signatures which verify that the software which was generated by the manufacturer is the same software that is being applied to the TV.

And since voting machines are so much more important than TVs, you'd think that the same care is taken with the software which is installed on them, right?

Yeah, no - there's no verification of the software that's on the voting machines - it's not signed, it's not monitored in any way except by the companies which produce the machines.  What's worse, is that NOBODY outside of those companies EVER gets to see the code which is running on the machines.  The companies have, in fact, fought tooth and nail against anyone ever seeing that code, arguing that if anyone knows the code, then it will be rendered that much easier to hack.  This type of thinking is known as "Security Through Obscurity" - if nobody knows how it works, nobody can break it.  However, a famous computer security aphorism states "Security through obscurity is no security at all."

And now we reel Enigma back into the conversation - Enigma was broken, despite the lengths to which the Nazis went to keep it secret.  It relied on nobody being able to figure out the methodology by which the encryption was achieved; Security Through Obscurity writ large.  Similarly, the companies responsible for arguably the most important software in the world are using the worst possible methodologies to protect that software.  Even worse, that software has never been independently verified to do exactly what it is that's required in the first place.  There are standards, but they are terribly lax with regard to security, and obviously written by people with no clear understanding of the issues.  So, we have software running on voting machines which has never been audited, and can be changed at any time at the whim of the companies which produce them.

What could possibly go wrong?

Let's just say, for example, that you wanted to rig an election.  And let's also say that you knew the vote was going to be very close in an important state.  And all you needed to do was to switch a few votes - a theoretically statistically insignificant .01% of the vote.  With the current system in place, it is not only possible that this has already happened, it's LIKELY.  After all, what are the possible negative repercussions?  Nothing whatsoever.  Nothing is verified, and it is impossible to prove that anything went wrong, or that anything was changed, since there is NO paper trail to go along with the electronic tally in the case of a recount.  Not one vote on any of the memory cards can be mapped back to a single voter.  Not one vote on any of those cards can be guaranteed to be the same vote that was cast by the person who used that card.  Sound crazy?  It is - but this is the exact current state of American voting "technology".

You see the problem.

The solution to this is a software paradigm known as "Open Source".  Open Source is exactly what it says it is - you release the software source code, the code responsible for driving the voting machines, to the entire world, making it open to everyone who wants see exactly what the voting machines are doing.  In this way, it would be impossible for the companies writing the software to sneak in any "vote changing" code.  Similarly, it would lay bare any security flaws.  Why is this good, you might wonder?  Because vulnerabilities caught are vulnerabilities FIXED.  When the entire world is looking at your software, then there won't be a single security problem which is hidden away.  Flaws will be found and addressed before the software ever has a chance to get into production.  The most secure encryption software in the world is OpenSSL, which is the encryption software that runs on every browser in western civilization.  It's an open source project - you can download the source code and see exactly how it is that the thing is encrypting your credit card number when you send it to QVC.com to buy that set of porcelain corgis.  But knowing how it's done in no way means you can crack it.  Encryption algorithms have gotten so sophisticated that cracking the encryption would take many computers many years to break even one OpenSSL-encrypted transaction.  When security flaws are found with OpenSSL, they are published and addressed immediately.  OpenSSL has been cracked a few times, but every time this happens it is patched within a small number of days to fix it.  In this way it stays ahead of the hacker population in as much as it is possible to do this.

We must implement this paradigm with the voting machine software IMMEDIATELY.  It is utterly unconscionable that the software which runs the most important elections in the world isn't rigorously tested and shown to be fault-free before it is put into production.  Furthermore, when the software is installed on the machines, it MUST be digitally signed, and every vote which it generates must also be digitally signed so that it can be guaranteed that :

A) The software running on the voting machines at the time of the election was the same that was verified, certified, signed, and installed for that election, and
B) Every vote cast was generated with that same version of the software, to do away with the chance that a trojan horse was installed on the voting machine at the same time.

In addition, A paper trail or some other sort of hard trail MUST be available and secured in the event that an electrical disturbance takes place which causes the electronic tally to become corrupted or otherwise unavailable.  There must ALWAYS be a way to verify the vote count in every election - that there isn't can speak only to incredible laziness or a spectacular mendacity on the part of the voting machine companies.  And, by the way, Diebold and Hart Intercivic, both voting machine companies with a significant footprint in this election year, are owned by men who have raised money for GOP candidates. Those machines are currently slated to be used in 13 states, including Ohio, California, and Pennsylvania.  Why is nobody screaming about this obvious conflict of interests?  This is more important than credit cards, more important than television, more important than EVERYTHING.  It's absurd beyond measure that we don't treat it this way.

Thursday, September 20, 2012

A brief note on Chick-Fil-A


Let me be clear:

In no way should Chick-Fil-A's apparent newfound sense of social justice deceive you.  When they say they're not going to give to anti-LGBT organizations any more, they simply mean they're going to do it in a way that's much more difficult to trace.  A leopard doesn't change its spots.

What you SHOULD get out of this news is that Chick-Fil-A is feeling the negative effect that their bigotry is having on their bottom line, and it's being felt to such an extent as to force their hand to try this absurd, patently transparent publicity stunt, which stands in diametric opposition to ALL of their former rhetoric, in a bid to undo the damage.  Don't think for a minute that they've changed their mind on the topic - the people running the company still think of the LGBT community as second class citizens, it's just that making money is more important to them than their theoretical Moral Imperative which they trumpeted so loudly in the past, and to which the teeming hordes of like-minded bigots flocked when it was made an Issue of the Day.  I wonder if those people are now going to stay away from Chick-Fil-A in protest, or will they continue to worship at the altar of hypocrisy?

Because it should be manifestly clear by now, Chick-Fil-A's One True God is the Dollar Almighty.

Thursday, August 9, 2012

Bob Cesca On Gerlado Rivera's Show

Here's the audio (edited to remove commercials) from Bob Cesca's appearance on Gerlado Rivera's show today.  Unfortunately the entire thing is farcical, with Geraldo repeatedly calling Bob "Mr. Kreska" and Tucker Carlson making an unannounced (to Bob, anyway) appearance solely for the apparent purpose of saying that it wasn't his responsibility to... well... do anything at all really, but he sure was upset about stuff.

I'd crunch some numbers about the amount of time everyone got to speak (here's a hint: Geraldo calling the event a "debate" is wildly inaccurate), but it's not worth the effort. You can guess what it's about.

Well done, Bob.  If nothing else we have Tucker Carlson on record as saying that he thinks it's not his responsibility to get money out of politics.

And I think we can all agree, that's a good thing.





Friday, February 17, 2012

Tell Me A Story

Editorial Note : This post was originally written in 2006. I have different stuff on my reading shelf now, but my discomforts remain.  Also, someone commented that John Hinckley Jr. didn't actually go to Covenant College, but I'm leaving that in because fuck that guy, anyway.

-- GID

=================
In the house I lived in on Lookout Mountain, GA (home of "famous" Rock City Gardens, Ruby Falls, "The World's Steepest Incline Railway", and Covenant College (from whence John Hinckley Jr. graduated)), there were two yellow and blue striped (they may have blue and yellow striped, but I think the stripes were about equal size so it's hard to say) arm chairs in which I learned to read. I remember sitting in my mom's lap while she diligently tried to explain to me the purpose of the comma. That conversation went something like this:

Mom : That's a comma. It means pause.
Me : That's stupid! Why don't they just write "pause" there?
Mom : No, it means you pause when you see it.
Me : For how long?
Mom : not very long. Try this sentence.

( sound of page turning )

Me : "We should go now,"

















he said,














"and see what is left!"

Mom : A little too long, dear. Just take a quick break and then keep going.
Me : Gaaaaawwww! How can anyone ever do this right?

I did eventually master the comma, and have been a voracious reader ever since. My early heros were the science fiction giants; names to conjure with : Asimov, Heinlein, Clarke, Bradbury etc. I quickly moved to Fantasy : Tolkein, Silverberg, McCaffrey, LeGuin, Lewis etc. Sometimes my papa would try to introduce me to writers outside of my comfort zone, who wrote books about actual people, or at least people who could not fly, turn invisible, roar, compute, tesseract, or anything else. I enjoyed these books readily enough, but before long my nose would be down in the next book of Susan Cooper's mighty The Dark is Rising series.

To this day, sciene fiction and fantasy books maintain their status as the vast majority of my reading choices. On my shelf right now are:
  1. All three of Neal Stephonson's Baroque Cycle (Quicksilver, The Confusion, System of the World)
  2. Frank Herbert's Dune (first time through, believe it or not)
  3. Stephen R. Donaldson's new Thomas Covenant book, The Runes of the Earth
  4. Christopher Moore's Lamb, a book recommended to me by no less than a dozen people, but which I must admit to not finding as funny as everyone else seems to have found it
  5. Dungeon, Fire and Sword, the most fantasy-sounding title of them all but which is actually a terrific historical recounting of the fall of the Knights Templar in the crusades
Why is this? That's probably another blog topic entirely. The short, if misleading answer, is that I spend the large part of my day in a rigorous, extremely linear and logical world, getting computers to do things exactly as I want them to do them, which entails telling them exactly what that is and no more (and certainly no less), and so science fiction and fantasy fill a void. This is only partly true, however, because, and I say this with no false modesty, when you work with computers at the level at which I work with them, there is plenty of creative, outlandish, non-linear thinking to do in order to get anything done at all. Ask me sometime about what I did for 4 years in Indiana and you'll see what I mean.

In actuality, my guess is that the kinds of thinking one does in order to write fiction are very much like the kinds of thinking one does to write things which are rigorously true, i.e. computer code. You conceive an overall vision, and you keep as much of it in your head as you can while you focus on the many and varying details of implementation and execution. Sometimes it's so big you can't keep all of it in your head at once, and so you concentrate on chunks at a time, and when you get one chunk the way you like it you step back and figure out how what you just did affects the overall scheme of things. And there's no limit to the kinds of disciplines to which you can apply a creative technolgoical/philosophical/fantastical field of vision. It's the very best of both left and right brain exercise - it's why I got into computers in the first place.

Given that, then, it's amusing to note that my writing style is almost nothing like my coding style. My code is elegant, precise, minimalistic, and it always, always works. My writing, well - let's say I like to embellish, and it frequently doesn't work so well. Better to say I just outright make shit up all the time. I LOVE telling stories verbally, and when I write stories I tend to write them much like I'd speak them, with all the embellishments, side-tracking, and outright fabrications I can put in, and with WAY too many words. I overuse adjectives, adverbs, any kind of modifier I can grab a hold of I'll throw in there because I like the way it sounds when spoken. I like the rhythm, the cadence of a well constructed turn of phrase.

This is not to say this makes the best reading experience. And it's different depending on what I'm writing. If I'm telling a story about something that actually happened to me I tend to tone this kind of thing down a little bit, as I have a concrete vision in my head of the events, and so my tendancy to exaggerate can be reined in somewhat. It's when I'm writing fiction, and I'm responsible for making up everything, that the extra verbiage piles up. I've been writing the same short story for about 8 years now, and I keep bogging down because, while I have a rough idea of how I want things to go, I don't have a firm grip on the overarching structure, and no real plan of execution, and so I spend too much time being clever in dense areas of story which might be better off simply narrated so as to keep the actual story moving along. When I already know the story I'm much better at delivering.

Perhaps I should stick with memoirs.

All of this said, however, the most powerful writing experience I ever had, to this day, was in the 6th grade. My English class had a short story writing assignment; we had a week to do it, and at the end of the week we would all take an entire period to read our stories out loud to eachother. These were very short stories.

Except for mine.

At the time, I had just finished Shirley Rousseau Murphy's Children of Ynell series, starting with The Ring of Fire and culminating with the utterly stupendous The Joining of the Stone. I had fantasy and epic on the brain, and so my short story was instead a massive construction, The Quest for the Sun Sword, which came to its triumphant conclusion after a disasterous confrontation with an evil being of some type who actually wielded said Sun Sword in battle, resulting in the death of the hero's best friend, whose name, I swear to god, was Kenny. One might ask why, if the Sun Sword was such a great thing to have, did the guy wielding it in battle get his ass kicked?

But I digress.

On the day of revelation I was excited, nervous, eagerly antcipating my triumph. Our Teacher, Ginny Johnson (we all called her Ms. J., or J-Bird), went in no particular order, and so it was fate that put Georgianna George ahead of me in the queue. Now, I could go on a long time about Georgianna George. She was a country girl in a middle class elementary school, but she pretty much out-did everyone around her in pretty much everything - smart, interesting, and I was smitten with her from the start. I think she first came on the scene during 4th grade, and so I had 3 years of unrequited grade schooler passion as a backdrop to this moment.

Georgianna's story was short, simple, and had everyone gripped instantly. It involved a scientific researcher exploring a distant planet, and upon coming across an alien construction of some sort the researcher begins to try to decipher the ruins, only to be torn apart by the beast lurking within. Her description of the ruins were tinged with enough of the familiar to make you think you knew what they were, but shadowed with enough of the alien to make you wonder what you missed. As she read the final paragraph the room was dead silent. She described tendons popping and the horror of the researcher's last moments as she felt her back breaking, just before she died. And then the final blow.

"With a start, Sharon woke from her bed, crying. It was only a dream."

It was only a dream.

Inasmuch as it is possible for 6th graders to become spontaneously riotous, this is exactly what happened after a stunned, disbelieving silence. Miss George delivered her perfectly written story perfectly, with all of the timing and sensibility of a real writer. And at that moment I realized that what I had written was, in fact, crap. And no amount of, well, anything would ever change that. Of course I was next, and when I refused to read my crap Miss J. threatened me with receiving an F for the lesson. Despairing, I waited for the bedlam to abate, and, finally, began my tale. It was too long, it wasn't very original, and the class clearly lost all interest after about 2 minutes. After Georgianna George's triumph, I felt smaller than small; worthless; a cheap bullshit artist. I ground down to my inevitable conclusion, and received the same smattering of applause that everyone else had gotten.

Everyone but Georgianna George, who as a 6th grader scared the absolute shit out of everyone in the room, including Miss J. I never felt any animosity towards miss George - far from it, in fact. What she did that day only fueled my ardor for her (an ardor which was never requited, alas - in fact, to say that I was unlucky in love as a grade schooler grossly understates the matter); it was inconceivable to me that I should think poorly of someone who wrote such a great story

But it took a long, long time after that before I ever wrote anything else. And I'm sure that, on some level, I am always feeling that feeling of knowing that I'm really not a good writer, and that my epic, convoluted story lines disguise a lack of any real talent for worsmithing. So, to answer the request to "Describe yourself as a writer", I say this:

I want to have the same effect on a room full of people that a 12 year old girl did 30 years ago.

Is that too much to ask?