<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Benlog &#187; voting</title>
	<atom:link href="http://benlog.com/articles/category/voting/feed/" rel="self" type="application/rss+xml" />
	<link>http://benlog.com</link>
	<description>security, privacy, transparency.</description>
	<lastBuildDate>Tue, 07 Sep 2010 20:56:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Usenix Security, voting and health security</title>
		<link>http://benlog.com/articles/2010/08/09/usenix-security-voting-and-health-security/</link>
		<comments>http://benlog.com/articles/2010/08/09/usenix-security-voting-and-health-security/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 16:24:48 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[security]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1281</guid>
		<description><![CDATA[I&#8217;m at Usenix Security 2010 in DC, starting with the EVT/WOTE Workshop on voting where I&#8217;ll be presenting an update on Helios, then the HealthSec workshop where I&#8217;ll be on a panel discussing my paper with Zak Kohane and Ken Mandl on using a Personally Controlled Health Record for health-information exchange [PDF]. The voting crowd [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m at <a href="http://www.usenix.org/events/sec10/">Usenix Security 2010</a> in DC, starting with the <a href="http://www.usenix.org/events/evtwote10/">EVT/WOTE Workshop on voting</a> where I&#8217;ll be presenting an update on <a href="http://heliosvoting.org">Helios</a>, then the <a href="http://www.usenix.org/events/healthsec10/">HealthSec workshop</a> where I&#8217;ll be on a panel discussing my paper with Zak Kohane and Ken Mandl on using a Personally Controlled Health Record for health-information exchange [<a href="http://ben.adida.net/research/pchr-hie-2010-08.pdf">PDF</a>].</p>
<p>The voting crowd is emerging from a 2-day workshop with election officials on remote voting for military and overseas voters. I&#8217;m trying to get a sense of attendees&#8217; impressions from that workshop, but suffice it to say that it seems to have been &#8220;exciting.&#8221; Ron Rivest compared online voting for public-office elections to drunk driving, as in &#8220;there&#8217;s no good way to do it,&#8221; and that apparently didn&#8217;t go over very well with some folks. I agree with the metaphor, however harsh it may seem.</p>
<p>Meanwhile, there is plenty of room for online voting in the numerous elections people hold that are not for public office: corporate boards, clubs, student government, etc. That&#8217;s why I&#8217;m excited that last night, we released Helios v3. Try it out right now by voting in our <a href="https://vote.heliosvoting.org/helios/e/p-vs-np">super geeky sample election</a> and in a <a href="https://vote.heliosvoting.org/helios/e/wyclef-haiti">current-events election (Wyclef for Haiti?)</a>.</p>
<p>More than 25,000 votes have been cast using Helios technology. We&#8217;ve learned some very interesting lessons already, and there are many more to come. I&#8217;m hoping that, as we add more social aspects to Helios, we&#8217;ll see more usage, more data, and a unique chance to improve the technology based on real-world experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2010/08/09/usenix-security-voting-and-health-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What the Oscars teach us about voting</title>
		<link>http://benlog.com/articles/2010/02/27/what-the-oscars-teach-us-about-voting/</link>
		<comments>http://benlog.com/articles/2010/02/27/what-the-oscars-teach-us-about-voting/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 16:42:21 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1108</guid>
		<description><![CDATA[This year, the voting process for the Oscars has changed. Rather than indicating a single choice as they have done since 1946, members of the Academy will provide a first choice, a second choice, etc.. potentially ranking all 10 nominees for Best Picture if so desired. Some are speculating that this will affect the results. [...]]]></description>
			<content:encoded><![CDATA[<p>This year, <a href="http://www.newyorker.com/talk/comment/2010/02/15/100215taco_talk_hertzberg">the voting process for the Oscars has changed</a>. Rather than indicating a single choice as they have done since 1946, members of the Academy will provide a first choice, a second choice, etc.. potentially ranking all 10 nominees for Best Picture if so desired. Some are speculating that this will affect the results. Some are writing <a href="http://www.cnn.com/2010/SHOWBIZ/Movies/03/05/oscar.predictions/index.html">really confusing articles about this change</a>, with very misleading lines like &#8220;Getting the most votes is no longer enough.&#8221; Here&#8217;s the short version of this post: (1) of course ranked-voting is going to affect the Oscar results! and (2) this year, the result will actually reflect the will of the Academy far better than previous years.</p>
<p>Debating voting methodology can usually get very heated. In fact, if I say anything negative about ranked-voting, more formally called instant-runoff voting (IRV), a legion of IRV fans will descend upon this blog with tremendous fury. Thankfully, in this case, there&#8217;s little room for disagreement: it&#8217;s pretty obvious that IRV will much more adequately represent the opinion of the Academy. In fact, it&#8217;s surprising that the Academy has been using plurality single voting, which can easily yield wildly inaccurate results. It makes one question the validity of past Oscar winners, and not only because the election is completely un-auditable by anyone other than the designated auditor firm.</p>
<p>Say, for example, that 30% like Avatar best, 25% Hurt Locker, 20% Inglorious Bastards, 15% Up in the Air, and 10% District 9. (Apologies to the other Oscar nominees, but I need a simple example.) Using last year&#8217;s voting method, Avatar wins. With 30% of the vote. But wait, what if the fans of District 9 hated Avatar, and really prefer Hurt Locker second best? Since their first choice was District 9, a less popular movie, it seems they effectively don&#8217;t have an impact on the result of the election&#8230; unless we take their second choice into account. Ok, so we give those 10% to Hurt Locker, and now Hurt Locker wins. But wait, what if the fans of Up in the Air mostly prefer Avatar to Hurt Locker, so we eliminate &#8220;Up in the Air&#8221; for not having received enough votes, then give those to Avatar, then Avatar wins, but wait&#8230; you get the picture. It&#8217;s not that complicated. Basically, it means that if the movie you really want to see win has no chance of winning, then we&#8217;ll look at your second choice instead. The really crazy thing is that, with last year&#8217;s method, it&#8217;s conceivable that, even if all the fans of Inglorious Bastards, Up in the Air, and District 9 prefer Hurt Locker to Avatar, meaning that in a 2-way-only election, Hurt Locker would win 70-30, Avatar STILL wins under the system used for the last 64 years.</p>
<p>Because of this oddity, the fans of District 9 might realize that their favorite has no chance and be tempted to select only between the two favorites, Avatar and Hurt Locker. In other words, the dark horses are inherently handicapped. With IRV, there&#8217;s no reason to resort to such silliness: vote for the dark horse first if that&#8217;s really your preference, and if not enough others agree, your second choice will be &#8220;activated,&#8221; and you won&#8217;t have lost your chance to influence the result. So, this year, a dark horse movie has a better chance of winning. But <em>not because the voting system gave the dark horse an unfair advantage</em>! Rather, because IRV <em>better represents the will of the Academy</em>. Even if one of the favorites does win, it will be a much more legitimate win than every year prior.</p>
<p>And here&#8217;s the funny thing. That crazy plurality single vote system I just described&#8230; that&#8217;s how we vote for President in the United States.</p>
<h4>Wait a minute&#8230;</h4>
<p>Did I just imply that IRV is awesome? I should be more careful. Everything I just explained assumes that voters are well informed and rational. I&#8217;m willing to believe that voters are mostly rational, but I don&#8217;t think they&#8217;re well informed. Specifically, a voter might easily believe that voting first for District 9, then for Avatar yields a &#8220;weaker&#8221; vote for Avatar if District 9 is knocked out of the running. Or, they might think that voting <b><em>only</em></b> for District 9 will yield a stronger vote than if they add a second or third choice because, in some sense, District 9 is then the <em>only</em> acceptable winner for those single-movie voters. In other words, I suspect voters will still vote strategically with IRV, only this time with an <em>incorrect, ill-informed strategy</em>. This is speculation, I don&#8217;t have hard numbers to back it up, only (significant) anecdotal experience with voters who find IRV deeply confusing.</p>
<p>What we really want is a voting system that assumes realistic behavior from voters who are typically not fully informed experts. In a way, we need to <em>reduce flexibility for voters</em> so that the average voter will be less likely to choose an ill-informed strategy. That method is probably <em><b>approval voting</b></em>, where a voter marks every candidate they find acceptable. No ranking, just a checkmark next to each candidate. Instructions are then very straight-forward: mark every candidate you would be happy to see win. Not perfect in terms of ill-informed-strategy-resistance, but a heck of a lot better than all the misconceptions that come with IRV.</p>
<h4>Oscar voting is actually even weirder</h4>
<p>Of course, as if the insanity of the Oscars&#8217; voting system over the last few years weren&#8217;t enough, there&#8217;s more weirdness.</p>
<p>To select the nominees, the Oscars effectively run a multi-seat Single Transferable Vote, which is like IRV where you rank the options, but this time you&#8217;re filling multiple spots. This is the way that Cambridge, Massachusetts elects its City Council, and it&#8217;s the way Australia elects its Parliament, and it&#8217;s <em>incredibly</em> confusing because of how votes are redistributed when a candidate is knocked out of the running or, more importantly, how to redistribute extra votes for a candidate that already has passed the victory bar. How confusing? Well, in Cambridge, the result of the election may depend on the order in which you count the ballots. Yep, you read that right, in a close election, the order of the ballots matters.</p>
<p>I&#8217;m not sure how it works exactly for the Oscar nomination process, but apparently the Oscars add a second complication: a nominee <em>must</em> be selected as a first choice by at least one person. Even if the movie is everyone&#8217;s second choice, it cannot be a nominee.</p>
<p>So, what this now means is that the Oscars are using a weirdly modified version of multi-seat Single Transferable Vote to select the nominees, and then a plurality single-vote to choose among those nominees, except this year where they&#8217;re re-running an IRV vote for Best Picture.</p>
<p>And to top it all off, you have to fully trust PriceWaterhouseCoopers, the auditors, who don&#8217;t even provide tallies, only the name of the winners.</p>
<p>Whoever said elections are simple?</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2010/02/27/what-the-oscars-teach-us-about-voting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>For deniability, faking data even the owner can&#8217;t prove is fake</title>
		<link>http://benlog.com/articles/2010/02/26/for-deniability-faking-data-even-the-owner-cant-prove-is-fake/</link>
		<comments>http://benlog.com/articles/2010/02/26/for-deniability-faking-data-even-the-owner-cant-prove-is-fake/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 22:29:30 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[crypto]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1100</guid>
		<description><![CDATA[I was speaking with a colleague yesterday about Loopt, the location-based social network, the rise of location-based services and the incredible privacy challenges they present. I heard the Loopt folks give a talk a few months ago, and I was generally impressed with the measures they&#8217;re taking to protect their users&#8217; data. I particularly enjoyed [...]]]></description>
			<content:encoded><![CDATA[<p>I was speaking with a colleague yesterday about Loopt, the location-based social network, the rise of location-based services and the incredible privacy challenges they present. I heard the Loopt folks <a href="http://benlog.com/articles/2009/09/13/a-partial-report-from-social-network-security-2009-stanford/">give a talk a few months ago</a>, and I was generally impressed with the measures they&#8217;re taking to protect their users&#8217; data.</p>
<p>I particularly enjoyed the problem Loopt faced with respect to abusive spouses: if your spouse is spying on you, it&#8217;s not enough to turn off your location services, because then your abusive spouse will know that you&#8217;re hiding something. You have to actually be able to <em><b>lie</b></em> about your location, in other words Loopt has to let you fake your location data. And they do. And that&#8217;s awesome.</p>
<p>It&#8217;s just like voting: to be free to vote the way you want to vote, you have to be able to claim that you voted a certain way, even if you voted another way, and that claim has to be believable. In fact, when you think about it, because Loopt offers this &#8220;fake my data&#8221; feature, there&#8217;s no way for you to <b>prove</b> to someone else that you really are where you claim to be, at least not via Loopt. Because, if there were a way to say &#8220;okay, really, I&#8217;m here, no faking this time,&#8221; then there would be no deniability since abusive spouses could simply ask for the extra-no-faking version of the location.</p>
<p>In other words, to truly achieve deniability, you have to take away the user&#8217;s ability to certify their own data. That&#8217;s not obvious, and it&#8217;s interesting that location-based services and voting have this point in common.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2010/02/26/for-deniability-faking-data-even-the-owner-cant-prove-is-fake/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Takoma Park 2009: the conclusion</title>
		<link>http://benlog.com/articles/2009/12/23/takoma-park-2009-the-conclusion/</link>
		<comments>http://benlog.com/articles/2009/12/23/takoma-park-2009-the-conclusion/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 02:20:43 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[Takoma Park 2009]]></category>
		<category><![CDATA[crypto]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1062</guid>
		<description><![CDATA[Well, it&#8217;s been a few weeks of craziness at home and catching up on other work, but I&#8217;ve finally wrapped up the Takoma Park 2009 audit. The final step: letting you, dear reader, run the audit all on your own. You&#8217;ll find the complete instructions here on the auditing site. I haven&#8217;t tested this on [...]]]></description>
			<content:encoded><![CDATA[<p>Well, it&#8217;s been a few weeks of craziness at home and catching up on other work, but I&#8217;ve finally wrapped up the Takoma Park 2009 audit. The final step: letting you, dear reader, run the audit all on your own.</p>
<p>You&#8217;ll find the complete instructions <a href="http://sites.google.com/site/takomapark2009audit/running-the-audit-yourself">here on the auditing site</a>.</p>
<p>I haven&#8217;t tested this on Windows, just Mac OS X, and it should work on Linux/Unix, too. You need Python 2.5 or above, PyCrypto, git, and subversion. You need about 30 minutes of download time, and 1 hour of processing. And then you can check the results you&#8217;ve computed against the <a href="http://sites.google.com/site/takomapark2009audit/audit-data/tally">results I&#8217;ve computed</a>, against the <a href="http://www.takomaparkmd.gov/clerk/election/2009/results/index.html">official election results</a> (which have some small variations since the results were certified, I&#8217;m not entirely sure why), and against the <a href="http://scantegrity.org/takoma/checkcodes">list of verification codes</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2009/12/23/takoma-park-2009-the-conclusion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Takoma Park: verifying the shuffle and the unopened ballots</title>
		<link>http://benlog.com/articles/2009/11/09/takoma-park-verifying-the-shuffle-and-the-unopened-ballots/</link>
		<comments>http://benlog.com/articles/2009/11/09/takoma-park-verifying-the-shuffle-and-the-unopened-ballots/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 00:29:35 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[Takoma Park 2009]]></category>
		<category><![CDATA[crypto]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1034</guid>
		<description><![CDATA[So the votes have been cast, the uncertified tally has been released, and the confirmation codes have been published for all voters to check. Now, it&#8217;s time to make sure that the coded votes, which were shuffled via the Shuffle Tables into the decoded votes in the Results table, were indeed shuffled and decoded correctly. [...]]]></description>
			<content:encoded><![CDATA[<p>So the votes have been cast, the uncertified tally has been released, and the confirmation codes have been published for all voters to check. Now, it&#8217;s time to make sure that the coded votes, which were shuffled via the Shuffle Tables into the decoded votes in the Results table, were indeed shuffled and decoded correctly.</p>
<p>Having trouble remembering which table is which? Here&#8217;s a reminder:</p>
<p><a href="http://benlog.com/wp-content/uploads/2009/10/pdr-setup.png"><img src="http://benlog.com/wp-content/uploads/2009/10/pdr-setup-1024x299.png" alt="pdr-setup" title="pdr-setup" width="600" class="alignnone size-large wp-image-954" /></a></p>
<p>Now of course we don&#8217;t actually see these tables in cleartext, rather what we have right now is:</p>
<p><a href="http://benlog.com/wp-content/uploads/2009/10/pdf-vote-cast.png"><img src="http://benlog.com/wp-content/uploads/2009/10/pdf-vote-cast-1024x300.png" alt="pdf-vote-cast" title="pdf-vote-cast" width="600" class="alignnone size-large wp-image-961" /></a></p>
<p>Next, the Scantegrity team used random stock data to seed a random number generator and decide which side to open up, the left or right. Now we said before it would be row-per-row in the shuffle table&#8230; but because of a subtle privacy issue, it turns out instead that there are 40 Shuffle Tables, and each one will be open either entirely on the left, or entirely on the right.</p>
<p>That&#8217;s what was done, and that&#8217;s what I verified just now in the <a href="http://sites.google.com/site/takomapark2009audit/audit-data/meeting-4">Meeting 4 Audit</a>.</p>
<h4>Any Issues?</h4>
<p>The same issue that I mentioned for Meeting 2 applies: the stock-data program pulls data that is, unfortunately, still being adjusted for a few days as stock trades reconcile, and thus it&#8217;s not possible for me to find the exact same seed. I have to trust that the Scantegrity team did it right. Not ideal, as I mentioned before, but also not extremely worrisome because the other parts of the audit provide a bit of insurance against any error here: next we&#8217;re going to open up <em>every</em> piece of data for the unused ballots, and there are a lot of those, and no carefully crafted randomness can hide cheating here.</p>
<h4>Contested Ballots?</h4>
<p>Scantegrity supports a &#8220;contested ballot&#8221; audit where, if a voter wants to contest that their confirmation code does not appear, all confirmation codes for that ballot are opened up to prove there was no hanky-panky. Since that original nomenclature, the Scantegrity team has decided to effectively act like *all* ballots are contested by default, so that all confirmation codes for all cast ballots are revealed to prove that there are no duplicates or other naughtiness. Of course, the correspondence between confirmation code and real, decoded candidate is <em>not</em> revealed.</p>
<p>If you voted in the Takoma Park election, you can <a href="http://sites.google.com/site/takomapark2009audit/audit-data/contested-ballots">check your ballot&#8217;s complete set of confirmation codes against my regenerated list</a>.</p>
<h4>Auditing Unused Ballots</h4>
<p>For all ballots that were unused, the Scantegrity team is now forced to reveal all of the shuffle table rows and all of the confirmation codes. Since it&#8217;s not possible for the Scantegrity team to predict ahead of time which ballots would be used and which would remain unused, this audit gives us added confidence that the used ballots were okay, too, because the unused ones are.</p>
<p>Check out the <a href="http://sites.google.com/site/takomapark2009audit/audit-data/unused-ballots">Unused Ballot Audit</a>. Everything checked out fine.</p>
<h4>So&#8230; are we done?</h4>
<p>Yes, we are! It looks like the Takoma Park election went well, and I can say with confidence that, if you voted in the election, wrote down your confirmation code, and checked it against <a href="http://docs.google.com/leaf?id=0B2bcy_loElx-ZmZjZDBhMTMtM2M1Ny00NjkzLThkZTMtMmQyYzgwZGM0Nzgy&#038;hl=en">my copy of the confirmation codes</a>, then your vote counted the way you intended it to. And I can say this even without knowing how you voted. Pretty darn cool.</p>
<p>Over the next few days, I&#8217;ll write up a couple of followups regarding:</p>
<ul>
<li> some recommendations for improving Scantegrity,</li>
<li> an explanation of what happens if the election officials are all corrupt, and</li>
<li> a script that lets you re-perform the entire Scantegrity audit on your own.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2009/11/09/takoma-park-verifying-the-shuffle-and-the-unopened-ballots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Takoma Park: auditing the auditor</title>
		<link>http://benlog.com/articles/2009/11/06/takoma-park-auditing-the-auditor/</link>
		<comments>http://benlog.com/articles/2009/11/06/takoma-park-auditing-the-auditor/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 05:37:24 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[Takoma Park 2009]]></category>
		<category><![CDATA[crypto]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1024</guid>
		<description><![CDATA[Rick Carback from the Scantegrity team just pointed out to me that my totals are not quite the same as theirs, and he surmises that I may have read the Instant Runoff rules incorrectly. Specifically, my code considers that ballots that skip a rank, i.e. that go directly to choice #2 and never indicate a [...]]]></description>
			<content:encoded><![CDATA[<p>Rick Carback from the Scantegrity team just pointed out to me that my totals are not quite the same <a href="http://scantegrity.org/takoma/results?writein=y#">as theirs</a>, and he surmises that I may have read the Instant Runoff rules incorrectly. Specifically, my code considers that ballots that skip a rank, i.e. that go directly to choice #2 and never indicate a choice #1, are &#8220;exhausted&#8221;, meaning they don&#8217;t count anymore. In fact, the rules for Takoma Park state that, in that case, the next candidate choice counts, <em>but</em> if two choices are skipped, <em>then</em> it&#8217;s exhausted. He&#8217;s absolutely right, and I&#8217;ve updated my tally code appropriately, and now my numbers match&#8230;.</p>
<p>Except for one more detail: the Scantegrity team is continuing the Instant Runoff candidate elimination past the point of a candidate gaining absolute majority. I <em>think</em> that&#8217;s wrong. It doesn&#8217;t affect the outcome, but it does affect the final tally count, so we&#8217;ll wait and see what the official word is.</p>
<p>In any case&#8230; isn&#8217;t it cool that we can audit each other and work out these differences with public code, public results, and complete oversight from anyone who wants to watch? That, again, is the power of open-audit elections using systems like <a href="http://scantegrity.org">Scantegrity</a> or <a href="http://heliosvoting.org">Helios</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2009/11/06/takoma-park-auditing-the-auditor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Takoma Park: so can I see my confirmation code already?</title>
		<link>http://benlog.com/articles/2009/11/04/takoma-park-so-can-i-see-my-confirmation-code-already/</link>
		<comments>http://benlog.com/articles/2009/11/04/takoma-park-so-can-i-see-my-confirmation-code-already/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 00:14:18 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[Takoma Park 2009]]></category>
		<category><![CDATA[crypto]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=1007</guid>
		<description><![CDATA[[This post is part of my Auditing the Takoma Park Municipal Election series.] So the votes have been cast, and voters went home. Some of them wrote down their confirmation codes. They probably checked those codes against the official Scantegrity web site. But why would they trust that web site to do all of the [...]]]></description>
			<content:encoded><![CDATA[<p>[This post is part of my <a href="http://benlog.com/articles/2009/09/08/auditing-the-takoma-park-election/">Auditing the Takoma Park Municipal Election series</a>.]</p>
<p>So the votes have been cast, and voters went home. Some of them wrote down their confirmation codes. They probably checked those codes against <a href="http://scantegrity.org/takoma/checkcodes">the official Scantegrity web site</a>. But why would they trust that web site to do all of the math right in the backend?</p>
<p>That&#8217;s where the audit work comes in. I&#8217;ve now run the Meeting 3 verification, and it looks good: the confirmation codes were properly opened, and I&#8217;ve posted <a href="http://docs.google.com/leaf?id=0B2bcy_loElx-ZmZjZDBhMTMtM2M1Ny00NjkzLThkZTMtMmQyYzgwZGM0Nzgy&#038;hl=en">my own re-computed version of the confirmation codes</a>. If you&#8217;re a Takoma Park voter and you want extra certainty that your vote counted, you should check those confirmation codes and let me know if your confirmation codes don&#8217;t appear properly.</p>
<p>But it&#8217;s not just the confirmation codes, since we now have the unofficial tally. I&#8217;ve posted <a href="http://sites.google.com/site/takomapark2009audit/audit-data/tally">the tally that I have re-computed from these ballots</a>. Very close to the <a href="http://www.takomaparkmd.gov/clerk/election/2009/results/index.html">preliminary results from the unverified opscan software itself</a>, as in, off by only a couple of votes here and there in no way that comes close to changing the results.</p>
<h4>Ummmm, but you said this was verifiable, so where is the discrepancy coming from?</h4>
<p>There is paper involved, and there is scanning of paper involved. Whenever that happens, errors will occur, either in the normal opscan process, or in the reading of verification codes. If I had to bet money, I&#8217;d say it&#8217;s probably the opscan scanning that is off, while the Scantegrity code is exactly correct. But, we probably won&#8217;t know for sure, and it doesn&#8217;t make a difference as long as very few (hopefully no) voters complain about missing confirmation codes.</p>
<p>Now remember, again, this is the <em>unverified tally</em>. We have to give voters the chance to complain about their confirmation codes first. Only then will we run the final audit steps, Meeting 4 + the spoiled ballot checks.</p>
<h4>Can I run this myself already?</h4>
<p>Yes, check out my <a href="http://github.com/benadida/scantegrity-audit">audit code from github</a>:</p>
<pre>
git clone git://github.com/benadida/scantegrity-audit.git
</pre>
<p>and do a subversion checkout of the Scantegrity data:</p>
<pre>
svn checkout https://scantegrity.org/svn/data/takoma-nov3-2009
</pre>
<p>Instructions on how to run the verifications are in the README file, in this case:</p>
<pre>
python meeting3.py {DATA_DIR} {CONFIRMATION_CODES_OUTPUT_FILE_PATH}
</pre>
<p>for each of the 6 wards&#8217; data directory. The confirmation codes are written to the given output file.</p>
<p>Then, to run the tally:</p>
<pre>
python tally.py {QUESTION_ID} {DATA_PATH_1} {DATA_PATH_2} ...
</pre>
<p>For <tt>QUESTION_ID</tt> 0, the mayoral race run across all wards, you&#8217;ll need all 6 data paths.</p>
<p>For <tt>QUESTION_ID</tt> 1, you&#8217;ll need to run <tt>tally.py</tt> against each individual ward&#8217;s data path, since those are different races.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2009/11/04/takoma-park-so-can-i-see-my-confirmation-code-already/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Takoma Park: Meeting 2</title>
		<link>http://benlog.com/articles/2009/11/02/takoma-park-meeting-2/</link>
		<comments>http://benlog.com/articles/2009/11/02/takoma-park-meeting-2/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 00:51:30 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[Takoma Park 2009]]></category>
		<category><![CDATA[crypto]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=996</guid>
		<description><![CDATA[[This post is part of my Auditing the Takoma Park Municipal Election series.] OK, so a couple of days ago we verified the initial P table and D tables for all 6 wards in tomorrow&#8216;s Takoma Park election. Now comes Meeting 2, which was held a couple of weeks ago to open up a random [...]]]></description>
			<content:encoded><![CDATA[<p>[This post is part of my <a href="http://benlog.com/articles/2009/09/08/auditing-the-takoma-park-election/">Auditing the Takoma Park Municipal Election series</a>.]</p>
<p>OK, so a couple of days ago we verified the initial P table and D tables for all 6 wards in <em><b>tomorrow</b></em>&#8216;s Takoma Park election. Now comes Meeting 2, which was held a couple of weeks ago to open up a random half of those ballot commitments to ensure that the P and D tables were generated correctly.</p>
<p>The short version of the story is that it all checks out, and the ballots look well-formed. Check out the <a href="http://sites.google.com/site/takomapark2009audit/audit-data/meeting-2">detailed audit data</a>.</p>
<p>That said, there was one issue that might reduce one&#8217;s confidence in the validity of the cut-and-choose, and there was another issue that was annoyingly preventing me from verifying the data until just now. So, let&#8217;s get our hands dirty and see &#8230;</p>
<h4>Where do we get random numbers?</h4>
<p>Meeting One was held on October 12th. How do I know this? I downloaded the data on October 13th, including the list of all files produced and their SHA1 fingerprints, and I signed it on October 13th at 3pm Pacific. You can <a href="http://sites.google.com/site/takomapark2009audit/audit-data/meeting-1">download and verify the signature for yourself</a> (DSA key ID 0F25B7E6). How can you be sure that&#8217;s my key? Well, you might want to ask me next time you see me in person, and I can confirm that the Scantegrity team didn&#8217;t hijack my blog and keep me locked up in a dungeon somewhere to prevent me from speaking out.</p>
<p>On October 14th, one day later, the Scantegrity team downloaded stock data from that day, using a script they had also committed to on October 12th as part of their Meeting 1 release. They used this stock data, which anyone can publicly verify and which is very hard to predict ahead of time, to generate the set of &#8220;challenge ballots,&#8221; meaning the P and D table rows that they would be forced to open.</p>
<h4>Problem #1: Is Stock Data ever Final?</h4>
<p>I discovered an annoying little issue: as it turns out, Google&#8217;s stock volumes are not stable, even a few hours after market close. They eventually add after-market trades, and there are trades that reconcile later that could affect the volume numbers. Indeed, on October 14th, the Scantegrity team got the following data:</p>
<pre>
NYSE:MMM    14-Oct-09,75.35,76.93,75.07,76.57,4120300
NYSE:AA     14-Oct-09,14.36,14.38,14.21,14.32,28884785
NYSE:AXP    14-Oct-09,35.27,35.31,34.57,35.09,15329442
NYSE:T      14-Oct-09,26.22,26.25,25.78,25.83,32644760
...
</pre>
<p>and today, I got the following data:</p>
<pre>
NYSE:MMM    14-Oct-09,75.35,76.93,75.07,76.57,4121804
NYSE:AA     14-Oct-09,14.36,14.38,14.21,14.32,28920161
NYSE:AXP    14-Oct-09,35.27,35.31,34.57,35.09,15334664
NYSE:T      14-Oct-09,26.22,26.25,25.78,25.83,32660582
...
</pre>
<p>Notice how the stock prices are the same, but the volumes are slightly higher in my dataset.</p>
<p>Of course the Scantegrity team didn&#8217;t do anything naughty here. But let&#8217;s be paranoid for a second.</p>
<p>Technically, because I can&#8217;t find a way to truly verify the original Scantegrity random-data seed, it&#8217;s <em>conceivable</em> that each line in this seed-file could be tweaked to any one of a few thousand values without detection, and thus that the officials could have done an exhaustive search of the hash domain to audit only the ballots they generated correctly, but never the ballots they &#8220;purposely&#8221; generated incorrectly. Those hypothetical incorrectly generated ballots could be set up to flip the selections of individual ballots in a way that we cannot detect right now, and <em>if</em> those ballots could be handed to people who are known to vote the &#8220;wrong&#8221; way, then they could be effectively forced to vote the &#8220;right&#8221; way.</p>
<p>Except, of course, that since each row can be audited with probability 50%, it would be computationally very difficult for a malicious administrator to cheat on more than 50 or 60 ballots. Very, very hard. 100 ballots? For all intents and purposes, impossible with today&#8217;s computing power. And then those 50 or 60 ballots would have to be handed to people you *know* are going to vote for the candidate you&#8217;re opposing&#8230; so in the worst-case scenario, with a very powerful adversary and a significant amount of coordination, this <em>might</em> swing the results by a few votes&#8230;..</p>
<p>Except not even that, because <em>there is still a safety net</em>: at the end of the election: the unused ballots will be spoiled and fully revealed. Chances are, if there is any significant number of bad ballots, they will be detected then, and an investigation can begin.</p>
<p>So this is a bit of a weakness, but not one that can realistically enable corruption of the election without detection. And of course, that&#8217;s the point: you can never prevent corruption attempts, but with open-audit voting like Scantegrity, you can detect it.</p>
<h4>Another little tidbit</h4>
<p>Even after this first pass, things still weren&#8217;t checking out, so I consulted with the Scantegrity team, and together we realized that the set of challenge ballots had been generated on Windows, but when the same program and random-data seed file were run on Linux or Mac, they generated a *different* challenge set. Why? It has do with carriage-return and line-feeds, and we&#8217;re still figuring out exactly how to prevent this in the future&#8230; but the point is that, by re-adding in the carriage return characters, everything checked out.</p>
<p>Is this a security vulnerability? No, it&#8217;s not, since there are only two possible representations for newlines, the Windows and Mac/Linux ways, so there&#8217;s no room to squeeze in any cheating here. It&#8217;s just a bug. And here&#8217;s what&#8217;s always been interesting to me about open-audit voting: your first verification might not work, your second verification might not work, because of annoying little bugs. But you can always iron out those bugs and re-run the verification. Because after all, there might be bugs in the audit procedure, too. With open-audit voting, you can often redo the audit, and when you do get a thumbs-up, you <em>know</em> things are in good shape. That&#8217;s powerful.</p>
<h4>Conclusion&#8230; so far</h4>
<p>Meeting 2 is verified&#8230; with the caveat that, hypothetically, we can&#8217;t be 100% certain that some hanky panky didn&#8217;t happen on the randomness generation. That&#8217;s okay, though, because realistically, in the worst-case scenario we can imagine, only a small handful of ballots could be affected, and in any case we&#8217;ll regain full confidence once we run the spoiled-ballot checker at the end.</p>
<p>One lesson I&#8217;m drawing from this: the cut-and-choose proofs based on public randomness are <em>very tricky</em> to pull off, because they can&#8217;t be re-done: the ballots are printed, and the challenged ballots are discarded. We can&#8217;t go back and re-do the proof of validity of the existing ballots. Since open-audit voting systems are powerful specifically because it&#8217;s always possible to undo something bad (re-vote, re-verify the tally, etc&#8230;), I wonder if Scantegrity might benefit a bit from a different proof protocol. I don&#8217;t know what that would look like yet, though&#8230;.</p>
<p>In any case, Meeting 2 is verified to my satisfaction.</p>
<p><b>UPDATE</b>: want to audit the data yourself? Go check out my <a href="http://github.com/benadida/scantegrity-audit">audit code</a> from github:</p>
<pre>
git clone git://github.com/benadida/scantegrity-audit.git
</pre>
<p>and do a subversion checkout of the Scantegrity data:</p>
<pre>
svn checkout https://scantegrity.org/svn/data/takoma-nov3-2009
</pre>
<p>Instructions on how to run the verifications are in the README file, in particular</p>
<pre>
python meeting1.py {DATA_DIR}
</pre>
<p>and</p>
<pre>
python meeting2.py {DATA_DIR}
</pre>
<p>making sure, for that second one, that you&#8217;ve copied the djia-stock-prices-latest.txt to <tt>{DATA_DIR}/pre-election-random-data.txt</tt>, where <tt>{DATA_DIR}</tt> is one of the wards.</p>
<p>Each verification of a ward&#8217;s single meeting will take a couple of minutes on an average PC. This isn&#8217;t the fastest audit code ever, it&#8217;s written to be easily audited, even if that makes it a bit slower than necessary.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2009/11/02/takoma-park-meeting-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Takoma Park Election: the 7 steps of auditing</title>
		<link>http://benlog.com/articles/2009/11/01/takoma-park-election-the-7-steps-of-auditing/</link>
		<comments>http://benlog.com/articles/2009/11/01/takoma-park-election-the-7-steps-of-auditing/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 06:59:59 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[Takoma Park 2009]]></category>
		<category><![CDATA[crypto]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=987</guid>
		<description><![CDATA[[This post is part of my Auditing the Takoma Park Municipal Election series.] If you&#8217;ve been following, we know what the voter experience is going to be like on Tuesday, and we know what the auditing process is going to be like. So, can we audit this thing already? Yes, we can. Here are the [...]]]></description>
			<content:encoded><![CDATA[<p>[This post is part of my <a href="http://benlog.com/articles/2009/09/08/auditing-the-takoma-park-election/">Auditing the Takoma Park Municipal Election series</a>.]</p>
<p>If you&#8217;ve been following, we know what <a href="http://benlog.com/articles/2009/09/21/takoma-park-2009-the-voter-experience/">the voter experience is going to be like on Tuesday</a>, and we know what <a href="http://benlog.com/articles/2009/10/10/takoma-park-2009-verifying-the-tally-from-the-confirmation-codes/">the auditing process is going to be like</a>. So, can we audit this thing already?</p>
<p>Yes, we can. Here are the steps:</p>
<ol>
<li> Meeting 1: the election officials get together, agree on election parameters, and generate the commitments to the Ballot Table of 5000 ballots (called the P Table for historical reasons) and the 40 Shuffle Tables (called the D Tables). Why 40 shuffle tables? It&#8217;s a way of increasing the certainty of the election verification, but we&#8217;ll talk about the details in a later blog post. The only thing to verify here is that the Ballot and Shuffle tables contain exactly the number of rows they&#8217;re supposed to contain.</li>
<p></p>
<li> Meeting 2: the election officials get together and use some public source of randomness (stock closing prices) to decide which rows in the P table (and corresponding rows in the D tables) to open up for auditing in the cut-and-choose process. They then reveal those rows accordingly. For the remaining rows, meaning the ballots that will get printed and used for ballot casting, the election officials generate commitments to the confirmation codes and publish them. The job of the auditor here is to ensure that this random selection was done properly, that the row reveals match up with the data seen in Meeting 1, and that the left-hand and right-hand permutations in the D tables match up with the P table. The confirmation code commitments are good to record, but they can&#8217;t be checked yet.</li>
<p></p>
<li> After the election happens, Meeting 3: the election officials get together and fill in the P tables with the encoded votes that were cast and the D tables with the intermediate decryption of these encoded votes. They also reveal the confirmation codes that voters should be able to check only, and how these confirmation codes correspond to the commitments from Meeting 2. An auditor should ensure that the ballots used here were not those audited in Meeting 2, and that the codes are revealed correctly. An auditor should also make available the list of confirmation codes that he verified.</li>
<p></p>
<li> the Tally: well yeah, that&#8217;s kind of important&#8230; based on the Results Table, called the R table, published in Meeting 3, it&#8217;s straight-forward to re-compute the tally from the individual ballots there. In the case of the Takoma Park election, this is a relatively standard single-seat single-transferable election.</li>
<p></p>
<li> Meeting 4: using public randomness again, the election officials open up either the left or right hand of each D table. The auditor must ensure that the randomness was properly used to generate the left/right challenges, that the reveals match the earlier commitments from Meeting 1, and that the revealed permutation, left-hand or right-hand, was properly applied: in the case of the left-hand permutation that the P-table vote is properly transformed into the intermediate D-table vote, in the case of the right-hand permutation that the D-table intermediate vote was properly transformed into the result, fully decrypted vote.</li>
<p></p>
<li> Contested Ballots: if voters complain about a confirmation-code mixup after Meeting 3, then the contested ballots are fully opened up by administrators so that all confirmation codes can be revealed. An auditor should check that these contested ballots are properly opened (we expect very few.)</li>
<p></p>
<li> Spoiled Ballots: in-person auditing staff will be randomly selecting ballots to audit, and all unused ballots will be audited too in this &#8220;spoiled-ballot&#8221; final check, where the full P-table row and corresponding D-table rows are revealed by election officials. The auditor should check that all reveals are done correctly and that all permutations match between the D tables and P table.</li>
</ol>
<p>Oh yeah, and one more thing: everything has to happen 6 times because there are 6 wards, each of them run independently.</p>
<p>So, the election is in a couple of short days&#8230; where are we now?</p>
<p><b><em>Meetings 1 and 2 have occurred.</em></b> And I have just audited Meeting 1, go <a href="http://sites.google.com/site/takomapark2009audit/audit-data/meeting-1">see the Meeting 1 audit data</a>.</p>
<p>I haven&#8217;t yet done the audit for Meeting 2, but I have already <a href="http://sites.google.com/site/takomapark2009audit/audit-data/meeting-2">signed the files</a> generated by the Takoma Scantegrity team, so that I can be certain that that data is locked and loaded. I&#8217;ll be auditing it shortly, before the Tuesday election of course.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2009/11/01/takoma-park-election-the-7-steps-of-auditing/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Source Code and Voting: what&#8217;s really on that machine?</title>
		<link>http://benlog.com/articles/2009/10/29/source-code-and-voting-whats-really-on-that-machine/</link>
		<comments>http://benlog.com/articles/2009/10/29/source-code-and-voting-whats-really-on-that-machine/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 22:57:38 +0000</pubDate>
		<dc:creator>ben</dc:creator>
				<category><![CDATA[security]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://benlog.com/?p=979</guid>
		<description><![CDATA[Let&#8217;s say someone&#8217;s trying to sell you a house. It&#8217;s a beautiful house. You visit it. You have it inspected and re-inspected, and it&#8217;s perfect. You get a loan approved, and you&#8217;re about to sign the papers when you&#8217;re told: wait, actually, that house is no longer available, but why don&#8217;t you just sign here [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s say someone&#8217;s trying to sell you a house. It&#8217;s a beautiful house. You visit it. You have it inspected and re-inspected, and it&#8217;s perfect.  You get a loan approved, and you&#8217;re about to sign the papers when you&#8217;re told: wait, actually, that house is no longer available, but why don&#8217;t you just sign here on the dotted line for the exact same house just down the street. Really, really it&#8217;s the exact same house, promised. Would you sign on the dotted line assuming your inspections of the first house have any bearing on this new house you&#8217;ve never seen?</p>
<p>Hold that thought.</p>
<p>These last few days saw a couple of fascinating announcements in the voting machine world:</p>
<ul>
<li> the <a href="http://www.wired.com/threatlevel/2009/10/open-source/">Open-Source Digital Voting foundation released their open-source election system</a>, and</li>
<li> Sequoia, one of the established voting machine vendors, will <a href="http://www.wired.com/threatlevel/2009/10/sequoia/">disclose all of its source code</a>, from voting machine to tallying system.</li>
</ul>
<p>These are great developments. We need a clear principle: you cannot count elections in secret, and proprietary code means counting elections in secret. Disclosing source code is a great step towards transparency in election verification. Open-source from OSDV is also a great way to break the vendor lock-in on voting machines and enable true innovation in voter user-interfaces, end-to-end verification add-ons, etc. All in all, this is a hugely positive development, in particular the OSDV release.</p>
<p>But we also can&#8217;t fall for the hype: when I walk into the voting booth, how do I know that voting machine is running the same source code I verified from my home machine? Do my inspections of the released codebase have any bearing on the machine I&#8217;m about to use?</p>
<p>To be fair, yes, to a degree: the election officials&#8217; job will likely include ensuring that the authorized code is properly installed. But&#8230;.</p>
<ul>
<li> states and counties often customize voting machines for their specific needs. As any security guy will tell you, if you verify 99% of the code, from a security standpoint you&#8217;ve verified nothing at all. Who&#8217;s verifying all of the customizations?</li>
<p></p>
<li> it&#8217;s very difficult to build hardware that will give you some indication that the software you installed on it wasn&#8217;t tampered with. Think rootkits/viruses for your desktop computer.</li>
<p></p>
<li> even if no modifications are made, even if a truly trusted device is built and deployed, in the end, you still end up having to trust the election officials to do their job entirely correctly, because <em>a corrupt open-source machine is no more reliable than a corrupt proprietary machine</em>, and using today&#8217;s devices, it only takes one corrupt election official to corrupt a voting machine, open-source or not.</li>
</ul>
<p>I understand that free software fans see this as a revolution in election trustworthiness. However, in the case of voting machines, while disclosing source code <em>is</em> an improvement, it&#8217;s not nearly the improvement that some are claiming. You might disagree, of course, and then maybe you would be willing to sign for that other house down the road, the one you never saw with you own eyes, the one that nobody you know inspected.</p>
]]></content:encoded>
			<wfw:commentRss>http://benlog.com/articles/2009/10/29/source-code-and-voting-whats-really-on-that-machine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
