get_col("DESC $table_name", 0) as $column ) { if ($debug) echo("checking $column == $column_name
"); if ($column == $column_name) { return true; } } //didn't find it try to create it. $q = $wpdb->query($create_ddl); // we cannot directly tell that whether this succeeded! foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) { if ($column == $column_name) { return true; } } return false; } } function btc_altertable() { global $tablecomments; $sql = "ALTER TABLE $tablecomments ADD COLUMN comment_reply_ID INT NOT NULL DEFAULT 0;"; maybe_add_column($tablecomments, 'comment_reply_ID', $sql); } function btc_alter_comment($new_id) { global $tablecomments, $wpdb; $sql = "UPDATE $tablecomments SET comment_reply_ID=".$_POST['comment_reply_ID']." WHERE comment_ID = $new_id;"; $wpdb->query($sql); } function briansnestedcomments() { global $font_gets_smaller; if (!($withcomments) && ($single)) return; // You can safely delete the single line below if your threaded comments are up and running btc_altertable(); ?> Usable Security » Blog Archive » Pvote: the dissertation

Pvote: the dissertation

December 22, 2007 by Ping

I have just completed my dissertation, which is available on my website and also in the Berkeley EECS Technical Reports archive.

Here is the abstract:

I examine the question of how to design election-related software, with particular attention to the threat of insider attacks, and propose the goal of simplifying the software in electronic voting machines.  I apply a technique called prerendering to reduce the security-critical, voting-specific software by a factor of 10 to 100 while supporting similar or better usability and accessibility, compared to today’s voting machines.  Smaller and simpler software generally contributes to easier verification and higher confidence.

I demonstrate and validate the prerendering approach by presenting Pvote, a vote-entry program that allows a high degree of freedom in the design of the user interface and supports synchronized audio and video, touchscreen input, and input devices for people with disabilities.  Despite all its capabilities, Pvote is just 460 lines of Python code; thus, it directly addresses the conflict between flexibility and reliability that underlies much of the current controversy over electronic voting.  A security review of Pvote found no bugs in the Pvote code and yielded lessons on the practice of adversarial code review.  The analysis and design methods I used, including the prerendering technique, are also applicable to other high-assurance software.

Many people contributed to the work.  The more I learned about things that other graduate students have had to deal with, the more I realized how lucky I was to have Dave Wagner and Marti Hearst as advisors — they got back to me quickly, read drafts carefully, and had lots of well-thought-out and constructive comments to offer.  Candy Lopez showed me around the election office in Contra Costa County and patiently explained to me how everything was done in real life.  Noel Runyan and Scott Luebking taught me about accessibility, and I appreciate their advice very much even though the dissertation doesn’t address accessibility as much as it could; the research didn’t include user testing with disabled voters.  Matt Bishop, Ian Goldberg, Yoshi Kohno, Mark Miller, Dan Sandler, and Dan Wallach volunteered a huge amount of time to review my source code.  Joe Hall has been a great help on questions about election law and policy.


(Comments won't nest below this level.)
Daintree wrote:

Haven’t read it yet - clearly - but well done. No mean feat, you must be very pleased (and relieved)!

(Comments won't nest below this level.)

Awesome, congratulations Ping!

(Comments won't nest below this level.)

Why isn’t stuff like this peer-reviewed and absorbed by governments. It seems like such good work in academic circles goes unused because of stupid marketing departments of diebold.

Best of luck with furthering this work!

(Comments won't nest below this level.)