Free Online FOOD for MIND & HUNGER - DO GOOD 😊 PURIFY MIND.To live like free birds 🐦 🦢 🦅 grow fruits 🍍 🍊 🥑 🥭 🍇 🍌 🍎 🍉 🍒 🍑 🥝 vegetables 🥦 🥕 🥗 🥬 🥔 🍆 🥜 🎃 🫑 🍅🍜 🧅 🍄 🍝 🥗 🥒 🌽 🍏 🫑 🌳 🍓 🍊 🥥 🌵 🍈 🌰 🇧🇧 🫐 🍅 🍐 🫒Plants 🌱in pots 🪴 along with Meditative Mindful Swimming 🏊‍♂️ to Attain NIBBĀNA the Eternal Bliss.
Kushinara NIBBĀNA Bhumi Pagoda White Home, Puniya Bhumi Bengaluru, Prabuddha Bharat International.
Categories:

Archives:
Meta:
May 2024
M T W T F S S
« Jan    
 12345
6789101112
13141516171819
20212223242526
2728293031  
12/22/16
2086 Fri 23 Dec 2016 LESSONS from Rector JCMesh J Alphabets Letter Animation ClipartMesh C Alphabets Letter Animation Clipart an expert who identifies experts influenced by Expert and Infulencer Sashikanth Chandrasekharan of Free Online Buddhism - World Religions for Kidshttps://drambedkarbooks.com/2015/03/14/the-chamcha-age-by-saheb-kanshi-ram/#more-1506Awaken One With Awareness Mind (A1wAM)+ ioT (insight-net of Things) - the art of Giving, taking and Living to attain Eternal Bliss as Final Goal through Electronic Visual Communication Course on Political Science -Techno-Politico-Socio Transformation and Economic Emancipation Movement (TPSTEEM). Struggle hard to see that all fraud EVMs are replaced by paper ballots by Start using Internet of things by creating Websites, blogs. Make the best use of facebook, twitter etc., to propagate TPSTEEM thru FOA1TRPUVF. Practice Insight Meditation in all postures of the body - Sitting, standing, lying, walking, jogging, cycling, swimming, martial arts etc., for health mind in a healthy body. from INSIGHT-NET-Hi Tech Radio Free Animation Clipart Online A1 (Awakened One) Tipiṭaka Research & Practice University in Visual Format (FOA1TRPUVF) https://archive.org/stream/DhammapadaIllustrated/dhammapada_illustrated#page/n1/mode/2up free online university research practice up a level through http://sarvajan.ambedkar.orgup a level https://awakenmediaprabandhak. wordpress.com/ email-0565.gif from 123gifs.eu Download & Greeting Card modinotourpm@gmail.com jchandra1942@icloud.com sarvajanow@yahoo.co.in is the most Positive Energy of informative and research oriented site propagating the teachings of the Awakened One with Awareness the Buddha and on Techno-Politico-Socio Transformation and Economic Emancipation Movement followed by millions of people all over the world in 105 Classical languages. Rendering exact translation as a lesson of this University in one’s mother tongue to this Google Translation and propagation entitles to become a Stream Enterer (Sottapanna) and to attain Eternal Bliss as a Final Goal BSP is the Number One Largest Party in the Country with all societies (sarvajan Samaj ) supporting it for Sarvajan Hitay sarvajan Sukhay. https://www.facebook.com/notes/hindustani-sher-aryan/indian-black-money-deposited-in-swiss-banks-wikileaks-report/243424935724827 http://www.india.com/…/list-of-black-money-holders-in-swis…/
Filed under: General
Posted by: site admin @ 9:07 pm




2086 Fri 23 Dec 2016


LESSONS


from

Rector
JCMesh J Alphabets Letter Animation ClipartMesh C Alphabets Letter Animation Clipart

an expert who identifies experts influenced by Expert and Infulencer Sashikanth Chandrasekharan
of


Free Online
Buddhism - World

Religions for Kidshttps://drambedkarbooks.com/2015/03/14/the-chamcha-age-by-saheb-kanshi-ram/#more-1506
Awaken One With Awareness Mind
(A1wAM)
+ ioT (insight-net of Things)  - the art of Giving, taking and Living   to attain Eternal Bliss
as Final Goal through Electronic Visual Communication Course on
Political Science -Techno-Politico-Socio Transformation and Economic
Emancipation Movement (TPSTEEM).


Struggle hard to see that all fraud EVMs are replaced by paper ballots by

Start
using Internet of things by creating Websites, blogs. Make the best use
of facebook, twitter etc., to propagate TPSTEEM thru
FOA1TRPUVF.

Practice
Insight Meditation in all postures of the body - Sitting, standing,
lying, walking, jogging, cycling, swimming, martial arts etc., for
health mind in a healthy body.



 from

INSIGHT-NET-Hi Tech Radio Free Animation Clipart Online A1 (Awakened One) Tipiṭaka Research & Practice University
in Visual Format (FOA1TRPUVF)

https://archive.org/stream/DhammapadaIllustrated/dhammapada_illustrated#page/n1/mode/2up


free online university research practice









up a level through http://sarvajan.ambedkar.orgup a level



https://awakenmediaprabandhak. wordpress.com/












email-0565.gif from 123gifs.eu Download & Greeting Card


modinotourpm@gmail.com
jchandra1942@icloud.com
sarvajanow@yahoo.co.in



is the most Positive Energy of informative and research oriented site propagating the teachings of the Awakened One with Awareness the Buddha and on Techno-Politico-Socio Transformation and Economic Emancipation Movement followed by millions of people all over the world in 105 Classical languages.


Rendering exact translation as a lesson of this
University in one’s mother tongue to this Google Translation and
propagation entitles to become a Stream
Enterer (Sottapanna) and

to attain Eternal Bliss as a Final Goal

BSP
is the Number One Largest Party in the Country with all societies
(sarvajan Samaj ) supporting it for Sarvajan Hitay sarvajan Sukhay.


https://www.facebook.com/notes/hindustani-sher-aryan/indian-black-money-deposited-in-swiss-banks-wikileaks-report/243424935724827

http://www.india.com/…/list-of-black-money-holders-in-swis…/


Now the game is over for BJP (Bahuth Jiyadha Psychopaths) after the
Murderer of democratic institutions (Modi)’s demonitisation move.His
QUEUE INDIA MOVEMENT has killed over 100 poor people in queues.


The 1% intolerant, militant, shooting, mentally retarded, lunatic,
mentally retarded chitpawan brahmin Rakshasa Swayam Sevaks (RSS)
cannibal psychopaths claim that it was bali dhan for their stealth,
shadowy, discriminative hindutva cult nationalism.

BJP before
gobbling the Master Key by tampering the fraud EVMs were shouting that
lakhs of cores of black money from foriegn banks

will be brought back and deposit 15 lakhs in every country men and women’s account.


Now they forgot their slogan and new slogan is against the enemy of the
country who have harmed interests 99% sarvajan samaj
SC/STs/OBCs/Minorities/poor UCs of farmers, labourers, future of the
youth and aspirations of the aged who are unhappy.

BJP after
gobbling the Master key in the 2014 Lok Sabha after tampering the fraud
EVMs elections are dreaming repeating the feat in next UP assembly
elections.

Ms Mayawati’s BSP lost in the Lok Sabha elections
because these fraud EVMs. But it won in UP Panchayat elections which was
conducted with paper ballots.

The ex CJI Sadasivam had committed
a grave error of judgement by ordering the EVMs to be replaced in
phases as suggested by the ex

CEC Sampath because of the cost of Rs 1600 crore involving in replacing the entire EVMs.

Now present CEC says that the entire EVMs will be replaced in 2019.

But non of them ordered for using paper ballots as done in 80 democracies of the world till all the fraud EVMs were replaced.

While the wikileaked in crores

1. Amit Shah -568000

2. Rajnath singh -7800

3.Yedurapp -158000

4.Anantkumar - 82000

5.P.Chidabaram - 15040

6.Dighvijay singh - 28900

7. Ahmed Patel -9000

8. Smiti Irani-15000

9. Venkaiya Naidu -75000

10 Kapil Sibal - 28000

11. Suresh Kalmadi- 5900

12. Ashok Giloth - 220000

13.Vasundhara Raje. 76888

14. Shyam Kampli -582114

15. Mulayam Singh Yadav -19800

16. Hashwath Mehata - 135800

17. Ketan Parekh - 8200

18. Yedi Ramaswamy - 14500

19. Lalu Prasad Yadav 28900

20. J.M. sindia - 9000

21. Kalanidhi Maran - 15000

22. Uma Bharathi- 35000

23. General V.K.Singh - 5900

24. Raj Adipay -189008

The List of Top Black Money Holders in Swiss Bank From India.


Before it was estimated that $500 billion of illegal funds were
trashed in Switzerland by Indians but none of us knew that who were
behind the masks. Then in August 2011, wikileaks released its 1st list
of Top Black money holders from India. It was really too much shocking
to see the names of many prominent politicians in it.
This was the list of Top 20 people (amount in crores) :
1- Ashok Gehlot (220000)
2- Rahul Gandhi (158000)
3- Harshad Mehta (135800)
4- Sharad Pawar (82000)
5- Ashok Chavan (76888)
6- Harish Rawat (75000)
7- Sonia Gandhi (56800)
8- Muthuvel Karunanidhi (35000)
9- Digvijay Singh (28900)
10- Kapil Sibal (28000)
11- Rajeev Gandhi (19800)
12- Palaniappan Chidambaram (15040)
13- Jayaram Jaylalitha (15000)
14- Kalanithi Maran (15000)
15- HD Kumarswamy (14500)
16- Ahmed Patel (9000)
17- J M Scindia (9000)
18- Ketan Parekh (8200)
19- Andimuthu Raja (7800)
20- Suresh Kalmadi (5900)

http://www.thehindu.com/…/WikiLeaks-cab…/article13673210.ece

WikiLeaks cables “inspired” anti-corruption campaign in India

https://www.youtube.com/watch?v=Z94dHg0J4pU


Wikileaks has pushed into the open one of the dirtiest secrets in
Indian politics. The latest leaked cable threatens to take down big fish
in the Congress, the DMK and the MIM.

http://www.garudacreations.com/wikileaks-published-first-l…/

LIST OF 100 HSBC account holders from india


Is this black money or not ,we are not sure about it; may be it will be
legal money. we have to wait for official clearances.Today Indian
express published this list, they are not claiming as it is black
money,they just published it as the ” Top 100 HSBC account holders from
india”

1. UTTAMCHANDANI GOPALDAS WADHUMAL/family $54,573,535
2. MEHTA RIHAN HARSHAD/ family $53,631,788
3. THARANI MAHESH THIKAMDAS $40,615,288
4. GUPTA SHRAVAN $32,398,796
5. KOTHARI BHADRASHYAM HARSHAD/ family $31,555,874
6. SHAUNAK JITENDRA PARIKH/family $30,137,608
7. TANDON SANDEEP $26,838,488
8. AMBANI MUKESH DHIRUBHAI $26,654,991
9. AMBANI ANIL $26,654,991
10. KRISHNA BHAGWAN RAMCHAND $23,853,117
11. DOST PARIMAL PAL SINGH $21,110,345
12. GOYAL NARESH KUMAR $18,716,015
13. MEHTA RAVICHANDRA VADILAL $18,250,253
14. PATEL KANUBHAI ASHABHAI $16,059,129
15. SACHIV RAJESH MEHTA $12,341,074
16. ANURAG DALMIA/family $9,609,371
17. RAVICHANDRAN MEHTA BALKRISHNA $8,757,113
18. KUMUDCHANDRA SHANTILAL MEHTA/family $8,450,703
19. PATEL RAJESHKUMAR GOVINDLAL/family $6,908,661
20. HEMANT DHIRAJ $6,237,932
21. ANUP MEHTA/family $5,976,998
22. TANDON ANNU $5,728,042
23. SIDHARTH BURMAN $5,401,579
24. SALGOACAR DIPTI DATTARAJ $5,178,668
25. DABRIWALA SURBHIT/family $5,000,000
26. VAGHELA BALWANTKUMAR DULLABHAI $4,405,465
27. DILIPKUMAR DALPATLAL MEHTA $4,255,230
28. KULDIP & GURBACHAN SINGH DHINGRA $4,144,256
29. LAKHANI JAMNA THAKURDAS $4,123,673
30. RAJIV GUPTA $4,113,705
31. SAWHNEY ARMINDER SINGH $3,965,881
32. ISRANI LOVEEN GURUMUKHDAS $3,824,104
33. NATVARLAL BHIMBHAI DESAI/family $3,746,078
34. TULSIANI JAWAHARLAL GULABRAI/family $3,730,145
35. GUPTA RAJIV $3,545,416
36. JAISWAL LADLI PERSHAD $3,496,063
37. CARVAHLO ALOYSIUS JOSEPH $3,313,788
38. PRADIP BURMAN $3,199,875
39. TULSIANI SHAM GULABRAI/family $3,066,991
40. VITHALDAS JANAKI KISHORE $3,031,220
41. KUMAR VENU RAMAN $3,063,064
42. THAKKAR DILIP JAYANTILAL $2,989,534
43. TULSIANI PARTAB GULABRAI $2,901,435
44. ADENWALLA DHUN DORAB/family $2,863,271
45. BURMAN PRADIP $2,831,238
46. TULSIANI NARAINDAS GULBARI $2,818,300
47. DASOT PRAVEEN $2,801,634
48. PATEL LALITABEN CHIMANBHAI $2,741,488
49. CHATHA JOGINDER SINGH $2,732,838
50. SHYAM PRASAD MURARKA $2,546,516
51. DHURVENDRA PRAKASH GOEL $2,488,239
52. NANDA SURESH/family $2,303,713
53. GIDWANI ANAN NELUM $2,228,582
54. PRATAP CHHAGANLAL JOISHER/family $2,209,346
55. MEHTA DEVAUNSHI ANOOP $2,136,830
56. SHAW MOHAMMAD HASEEB/family $2,133,581
57. AHMED rizwan syed/family $2,125,644
58. VINITA SUNIL CHUGANI $2,085,158
59. SAWNEY BHUSHAN LAL $2,043,474
60. PARMINDER SINGH KALRA $2,042,180
61. CHOWDHURY RATAN SINGH $1,987,504
62. DHIRANI VIKRAM $1,915,148
63. NANDA SARDARILAL MATHRADAS $1,824,849
64. WILKINSON MARTHA $1,824,717
65. SAHNEY DEVINDER SINGH $1,763,835
66. TANEJA DHARAM VIR $1,748,541
67. DHINDSA KOMAL $1,597,425
68. CHATWANI TRIKAMJI/family $1,594,114
69. PITTIE MADHUSUDANLAL NARAYANLAL $1,462,594
70. BHARDWAJ ANIL $1,435,781
71. DIPENDU BAPALAL SHAH $1,362,441
72. BHARTIA ALOK $1,349,044
73. SINGH SHUBHA SUNIL $1,348,983
74. DANSINGHANI SHEWAK JIVATSING/family $1,267,743
75. KUMAR DAVINDER/family $1,231,088
76. JASDANWALLA ARSHAD HUSAIN ADAMSI/family $1,229,723
77. JHAVERI HARISH SHANTICHAND/ family $1,191,144
78. SINGHVI GANPAT $1,194,388
79. MILAN MEHTA/family $1,153,957
80. TUKSIANI ASHOK GULABRAI $1,140,890
81. MODI KRISHAN KUMAR $1,139,967
82. GARODIA BISHWANATH $1,071,858
83. JAGASIA ANURADHA ANIL $1,039,648
84. VITHALDAS KISHORE/family $1,020,028
85. CHANDRASHEKAR KADIRVELU BABU/family $1,007,357
86. GALANI DIPAK VARANDMA/family $940,191
87. SAWHNEY ARUN RAVINDRANATH $914,698
88. MERWAH CHANDER MOHAN $909,309
89. PATEL ATUL THAKORBHAI $813,295
90. NATHANI KUMAR SATURGUN $751,747
91. SATHE SUBHASH/family $749,370
92. SHAH ANIL PANNALAL/family $742,187
93. MADHIOK ROMESH $719,559
94. BHAVEN PREMATLAL JHAVERI $717,654
95. KINARIWALA KALPESH HARSHAD $713,340
96. GOKAL BHAVESH RAVINDRA $699,184
97. LAMBA SANJIV $644,923
98. SHOBHA BHARAT KUMAR ASHER $641,387
99. KATHORIA RAKESH KUMAR $589,753
100. BHANSALI ALKESH PRATAP CHANDRA $579,609

SOURCE INDIAN EXPRESS


Murderer of democratic institutions (Modi) of Bahuth Jiyadha
Psychopaths (BJP) said that all the black money will be recovered and Rs
15 lakhs will be deposited in the entire citizens accounts of this
country. The whole world is watching whether it will be done before 31
December 2016.


Vaibhav Hindustani-Sher Aryan published a note.

Indian Black Money in Swiss Bank List

 

WikiLeaks posted in the website that –

Indian
money in Swiss Banks is more than any other nationality. The list
regarding their names, amount and other details is as per the list
herebelow. The major share is from India. The source of income is from
project hedge, illegal share in s…

Continue reading
https://drive.google.com/file/d/0B3FeaMu_1EQyUVE0VzhxWU5kVlU/view


Page
321
/
324

Page 1 of 324

Building Reliable Voting Machine Software

Ka-Ping Yee

B. A. Sc. (University of Waterloo) 1998

A dissertation submitted to the Graduate Division

of the University of California, Berkeley

in partial fulfillment of the requirements for the degree of

Doctor of Philosophy

in

Computer Science

Committee in charge:

Professor David Wagner, Co-chair

Professor Marti Hearst, Co-chair

Professor Henry Brady

Professor Joseph Hellerstein

Fall 2007

Page 1 of 324
Page 2 of 324

The dissertation of Ka-Ping Yee is approved.

Professor David Wagner (Co-chair) Date

Professor Marti Hearst (Co-chair) Date

Professor Henry Brady Date

Professor Joseph Hellerstein Date

University of California, Berkeley

Fall 2007

Page 2 of 324
Page 3 of 324

Building Reliable Voting Machine Software

Copyright © 2007

Ka-Ping Yee

Permission is granted to copy, distribute, and/or modify this document under the terms

of the GNU Free Documentation License, version 1.2 or any later version published by the

Free Software Foundation, with no Invariant Sections, no Front-Cover Texts, and no

Back-Cover Texts. A copy of the license is included in the appendix entitled GNU Free

Documentation License.

Page 3 of 324
Page 4 of 324

Abstract

Building Reliable Voting Machine Software

Ka-Ping Yee

Doctor of Philosophy in Computer Science

University of California, Berkeley

Professor David Wagner, Co-chair

Professor Marti Hearst, Co-chair

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.

Professor David Wagner

Professor Marti Hearst

1

Page 4 of 324
Page 5 of 324

This dissertation is dedicated to those who work to run

elections everywhere in the world: registrars, officers,

pollworkers, clerks, judges, scrutineers, observers, and

everyone else involved in the process. You carry out the

mechanisms that make democracy work; this research is

devoted to helping you make democracy work better.

i

Page 5 of 324
Page 6 of 324

Preface

The democracy upon which our modern society is built

ultimately depends on a system that collects and counts votes.

For many voters in the United States and other countries, nearly

every part of that system relies on computer software in some

way. If you had to design that software, how would you do it?

This dissertation offers an exploration of that question and

a proposed answer: create the simplest possible voting machine

software. I use a technique called prerendering to reduce the

critical voting-specific software by a factor of 10 to 100 while

supporting similar or better accessibility and usability,

compared to today’s machines. Central to this dissertation is

the story of Pvote, the program I developed to realize this goal.

The first reason to simplify software is the threat of an

insider attack. The challenge is to prevent not just inadvertent

flaws, but flaws intentionally crafted by programmers who

stand to gain from subverting their own software. The only way

to meet this challenge is to require simpler software.

The second reason is that much of the controversy over

electronic voting stems from a conflict between flexibility and

reliability. Computers offer the promise of broader and more

effective access to voting, but computer programs are more

complicated and fragile than hand-counted paper ballots.

Simplifying the voting machine software mitigates this dilemma.

The problem of electronic voting is illustrative of the

challenges of building reliable software in general. In particular,

I report on insights from the Pvote work about managing the

complexity of high-assurance software and about reviewing

software for correctness without assuming trust in its author.

Both are relevant to the prevention of insider attacks, which are

a thorny and long-standing problem in software security.

ii

Page 6 of 324
Page 7 of 324

This dissertation is intended for several audiences:

• Election staff, policymakers, and activists: If you run

elections or influence how elections are conducted, I hope

to make you aware of the perils of complexity in software

(Chapters 1 and 9), and to calibrate your tolerance for

complexity in election software by demonstrating how much

it can be simplified. I also hope to contribute to your

understanding of the tradeoffs among various choices of

voting equipment and verification methods (Chapter 3).

• Engineers: If you build software, you may be able to achieve

greater confidence in it using the analysis, design, and

review strategies presented here (Chapters 2, 3, and 8) . If

you develop voting machines, you can apply the

prerendering strategy to create more reliable software

(Chapter 4), use ideas from Pvote’s design and

implementation (Chapters 5, 6, and 7), or use the Pvote code

as a basis for your own software (Appendices A and B).

• Researchers: If you investigate software reliability or

security, you may be interested in assurance trees (Chapter

2), a way of structuring assurance claims during software

design, prerendering (Chapter 4) as a strategy for reducing

the trusted code base of a system, or derivation maps

(Chapter 9) for understanding sources of vulnerability to

insiders and the effects of shifting complexity among

components. The Pvote review experience (Chapter 8 and

Appendix E) motivates research challenges in the design of

programming languages, development environments, and

reviewing tools to support adversarial code review.

• Designers: If you practice visual design or interaction

design, you may be interested to learn how prerendering

(Chapter 4), the main software approach presented here, can

offer you unprecedented freedom in designing electronic

ballots and new opportunities for advancing democracy

through the power of design.

Preface iii

Page 7 of 324
Page 8 of 324

Contributions

This is a quick guide to the main contributions of this work and

where to find them.

1. A set of correctness properties for voting software derived as

an assurance tree (page 24).

2. An assurance chart comparing types of voting systems

according to the verification mechanisms available to voters

at each step of the voting process (page 56).

3. User interface prerendering, a technique for reducing the

complexity of critical software components (page 57).

4. Pvote’s ballot definition file format, a platform-independent

format for describing the ballot and the voting user interface

in a prerendered user interface voting system (page 121).

5. The software design of Pvote, a vote-entry program with

support for a wide range of ballot designs and voters with

disabilities (page 127).

6. A set of desirable properties of programming languages to

support adversarial code review (page 149).

7. Lessons learned from the Pvote security review, the first

open adversarial code review of voting software designed

for minimal complexity and high assurance (page 153).

8. Derivation mapping, a method of diagramming the

provenance of a security-critical artifact to identify sources

of vulnerability to insider attacks (page 161).

9. A security argument for the use of high-level programming

languages in high-assurance software (page 173).

10. Proof by construction (the implementation of Pvote) that a

fully featured user interface for voting can be implemented

in 460 lines of Python (page 217).

11. A security analysis and a set of assurance arguments for

Pvote, which are given in a separate document [92].

iv

Page 8 of 324
Page 9 of 324

Acknowledgements

I have been extremely lucky to have David Wagner and Marti

Hearst as my advisors. They supervised and supported this

work, and provided me with guidance and insight during my

career as a graduate student. They removed obstacles and

sought out opportunities for me. Their responsiveness and

detailed feedback have been fantastic. I also thank Henry Brady

and Joe Hellerstein, who served on my committee and went out

of their way to review this dissertation on a short time frame.

Steve Bellovin suggested the idea of prerendering, which

sparked this work. Candy Lopez of the Contra Costa County

Elections Department patiently showed me how real elections

are run. Scott Luebking and Noel Runyan helped me understand

the accessibility issues surrounding voting. Matt Bishop, Ian

Goldberg, Tadayoshi Kohno, Mark Miller, Dan Sandler, and Dan

Wallach generously volunteered many, many hours of their time

to serve as expert reviewers in the Pvote security review. Joseph

Hall has been a wonderful resource on election policy.

Debra Bowen and David Wagner created and gave me the

rare opportunity to review the source code of a widely used

commercial voting system in the California Top-to-Bottom

Review. It was a privilege to work with my collaborators on that

project: Matt Blaze, Arel Cordero, Sophie Engle, Chris Karlof,

Naveen Sastry, Micah Sherr, and Till Stegers.

Public attention to electronic voting did not appear

overnight; it is the result of a long history of hard work by

civic-minded heroes such as David Dill (founder of the Verified

Voting Foundation), Avi Rubin (director of ACCURATE), and

many others. Their efforts are a big part of what has made

research like mine possible. This work was funded by the

National Science Foundation, through ACCURATE.

v

Page 9 of 324
Page 10 of 324

Mark Miller, Jonathan Shapiro, and Marc Stiegler sparked my

interest in computer security and have deeply shaped my

understanding of it through many years of fruitful collaboration

and shared wisdom. I am exceptionally fortunate to have met

and worked with them.

Scott Kim’s dissertation inspired the page design of this

dissertation. La Shana Porlaris of the EECS Department saved

me from crisis time and again; her help and calm advice were

invaluable.

I am especially grateful to Lisa Friedman for her support

during the writing of this dissertation, and to my parents, for a

lifetime of devotion to me and my education.

vi

Page 10 of 324
Page 11 of 324

Contents

Preface ii

Contributions iv

Acknowledgements v

Contents x

1 Voting 1

What makes the voting problem so hard? 2

How does an election work? 6

Why use computers for elections? 9

How did electronic voting become controversial? 11

Why does software correctness matter? 14

2 Correctness 16

What constitutes a democratic election? 17

What does it mean for a voting system to be correct? 19

How does correctness relate to safety? 20

What is the tree of assurance goals for an election? 24

What does it mean for a voting system to be secure? 30

3 Verification 33

How do we gain confidence in election results? 34

How can we verify the computerized parts of an election? 36

What kind of election data can be published? 39

What makes software hard to verify? 41

In what ways are today’s voting systems verifiable? 44

What is the minimum software that needs to be verified? 48

What other alternatives for verification are possible? 52

vii

Page 11 of 324
Page 12 of 324

4 Prerendering 57

How can we make vote-entry software easier to verify? 58

What is prerendering? 59

Why put the entire user interface in the ballot definition? 60

How would a voting computer use a prerendered ballot? 62

What is gained by publishing the ballot definition? 63

What are the advantages of prerendering? 65

How can prerendering be applied to other software? 66

How are votes recorded anonymously? 67

5 Ptouch: the touchscreen prototype 69

Overview 70

Ballot definition format 71

Software design 80

Implementation 83

Evaluation 88

Shortcomings 93

6 Accessibility 96

Why was a second prototype needed? 97

What is Pvote’s approach to accessibility? 98

How are alternative input devices handled? 99

How does blindness affect interface navigation? 100

How do blind users stay oriented within an interface? 101

How do blind users keep track of what is selected? 102

How do blind users get feedback on their actions? 103

How are vision-impaired users accommodated? 104

7 Pvote: the multimodal prototype 105

Overview 106

Goals 107

Design principles 110

Differences between Pvote and Ptouch 114

Ballot definition format 121

Software design 127

Implementation 132

Evaluation 133

viii

Page 12 of 324
Page 13 of 324

8 Security review 136

How was Pvote’s security evaluated? 137

What were Pvote’s security claims? 139

How was Pthin defined? 143

What flaws did the reviewers find? 145

What improvements did the reviewers suggest? 146

Did the reviewers find the inserted bugs? 148

What ideas did reviewers have on programming languages? 149

What ideas did reviewers have on conducting reviews? 151

What lessons were learned from the review? 153

9 Complexity 156

Does prerendering actually eliminate complexity? 157

What is achieved by shifting complexity? 158

Why do software reviews assume trust in compilers? 160

How far back can the derivation of a program be traced? 161

What affects the tolerance of complexity in a component? 164

How does Pvote reallocate complexity? 167

What is gained by using interpreted languages? 173

10 Related work 174

Do any other voting systems use prerendering? 175

What other voting proposals reduce reliance on software? 176

What are “frog” voting systems? 177

Do frogs solve the electronic voting problem? 178

What is “software independence” (SI)? 179

Does SI make software reliability irrelevant? 181

What is end-to-end (E2E) verification? 186

Does E2E verification make software reliability irrelevant? 187

What are other approaches to high-assurance software? 188

Conclusion 191

Bibliography 193

A Ptouch source code 204

main.py 205

ix

Page 13 of 324
Page 14 of 324

Ballot.py 206

Navigator.py 210

Video.py 214

Recorder.py 215

B Pvote source code 217

main.py 218

Ballot.py 220

verifier.py 224

Navigator.py 228

Audio.py 233

Video.py 235

Printer.py 236

C Sample Pvote ballot definition 237

D Sample Pvote ballot designs 267

E Pvote security review findings 272

Correctness 273

Consensus recommendations 278

Inconclusive recommendations 282

Observations 284

Open issues 288

Bug insertion 296

Review process 300

Post-review survey 304

GNU Free Documentation License 306

x

Page 14 of 324
Page 15 of 324

1 Voting

What makes the voting problem so hard? 2

How does an election work? 6

Why use computers for elections? 9

How did electronic voting become controversial? 11

Why does software correctness matter? 14

1

Page 15 of 324
Page 16 of 324

What makes the voting problem so hard?

When I say the “voting problem,” I’m referring specifically to the

system that collects and counts votes. There are many other

parts of the election process that I’m not going to address in

this dissertation, such as voter registration, electoral systems,

and election campaigning. The collection and counting of votes

has been particularly controversial in the United States due to

problems with electronic voting in recent elections.

One of the great things about doing election-related

research is that just about everyone immediately understands

why it’s important. In my experience, whenever elections are

the topic of conversation, people have a lot to say about their

opinions on the matter. It’s encouraging to see that so many

people care deeply about democracy.

In conversations about the voting problem, there seem to be

four ideas in particular that come up all the time. It’s not

unusual to think that running a fair election ought to be a

straightforward task—after all, in some sense, it’s just counting.

To give you a taste of why the voting problem is not as easy as it

might seem, let’s begin by examining these four suggestions.

Banking machines work fine, so voting machines should be

no problem. On the surface, banking machines and voting

machines seem similar: users walk up and make selections on a

touchscreen to carry out a transaction. One of the largest

vendors, Diebold Inc., even produces both kinds of machines.

But the incentives and risks are very different.

Banking machines have money inside—the bank’s money. If

money goes missing, you can bet the bank will find out right

away and be strongly motivated to fix the problem. If the bank

machine incorrectly gives out too much cash, the bank loses

money; if it gives out too little, the bank will be dealing with

irate customers. Everything about the bank transaction is

recorded, from the entries in your bank statement to the video

recorded by the camera in most bank machines. That’s because

Voting 2

Page 16 of 324
Page 17 of 324

the bank has a strong incentive to audit that money and track

where it goes. If the machine makes mistakes, the bank loses—

either they expend time and money correcting your problem, or

you will probably leave and take your business to another bank.

With voting machines, it’s another story altogether. Voting

machines aren’t supposed to record video or keep any record

that associates you with your votes, because your ballot is

supposed to be secret. You don’t receive any tangible

confirmation that your vote was counted, so you can’t find out

if there’s a problem. Anybody can stand to gain by causing

votes to be miscounted—a voter, pollworker, election

administrator, or voting machine programmer—and the

consequences are much harder to reverse. Correcting an error

in your bank balance is straightforward, but the only way to fix

an improperly counted election is to do an expensive manual

recount or run the whole election again. And if you’re unhappy

with the way your vote was handled, you can’t easily choose to

vote on a competitor’s machine.

Give each voter a printed receipt, just like we do for any

other transaction. The surface comparison between voting and

a financial transaction also leads many people to suggest that

receipts are the answer. But the purpose of a receipt is quite

different from what is needed to ensure an accurate election.

When you buy something, the receipt confirms that you

paid for it. If there turns out to be a problem with the product,

you can use the receipt to get your money back or to get the

defective product exchanged.

When talking about a receipt from a voting machine, what

most people have in mind is a printed record of the choices you

made, just like a receipt from a cash register. If you took home

such a receipt, what would you do with it? There’s nothing to

refund, and you can’t use a receipt to get an exchange on a

defective politician. The receipt could record the choices you

made, but the receipt alone doesn’t assure that those choices

were counted in the final result. In fact, if the receipt

constitutes proof of which choices you made, it can be sold—

Voting 3

Page 17 of 324
Page 18 of 324

defeating the whole point of the secret ballot, which is to avoid

the corruption that vote-buying campaigns can cause.

A truly useful voting “receipt” would do exactly the

opposite: it would not reveal which choices you made but would

let you confirm that your choices were counted. Although these

two requirements sound paradoxical, researchers have invented

a variety of schemes that achieve them through the clever use

of cryptography. However, a key weakness of the schemes

proposed so far is that they rely on advanced mathematics, with

a counting process that would be a mystery to all but a tiny

minority of voters. This would run counter to the democratic

principle of transparent elections. Researchers are continuing

to search for simpler verification schemes that can be

understood by an acceptably large fraction of the public.

If we can trust computers to fly airplanes, we can trust

computers to run elections. The comparison between airplanes

and elections misses at least three key differences.

First, the visibility of failure is different. An airplane cannot

secretly fail to fly. When an airplane crashes, it makes

headlines; everybody knows. A forensic investigation takes

place, and if the crash is due to a manufacturing defect, the

airplane manufacturer may be sued for millions of dollars. But

an election system can produce incorrect results without any

obvious signs of failure. Therefore, we require something more

from election system software than what we require from

airplane software. A successful election system must not only

work correctly; it must also allow the public to verify that it

worked correctly.

Second, the target audience is different. Commercial

airplanes are designed to be flown by pilots with expert

training, but voting machines have to be set up by pollworkers

and operated by the general public. Our trust in airplanes is a

combination of trust in the equipment and trust in the pilots

who operate it. Whereas pilots have to log hundreds of hours of

flight time to get a license, pollworkers are often hired on a

temporary basis with only an afternoon or a day of training.

Voting 4

Page 18 of 324
Page 19 of 324

Third, security violations affect the perpetrators differently.

Pilots and flight attendants are strongly motivated to uphold

security procedures because their own lives could be at risk. A

rogue voter or pollworker, on the other hand, would have more

to gain and less to lose by surreptitiously changing the outcome

of an election.

Count the ballots by hand—it works for the Canadians.

Ballots are considerably longer and more complicated in the

United States than in many other countries. Whereas there is

just one contest in a Canadian federal election (each voter

selects a Member of Parliament), ballots in the United States can

contain dozens of contests. For example, a typical ballot1

for the

November 2004 general election in Orange County, California

contained 7 offices and 16 referenda, for a total of 23 contests

that would have to be tallied by hand. Ballots in Chicago, Illinois

that year2 were even longer: ten pages of selections, consisting

of 15 elected offices, confirmations of 74 sitting judges, and

one referendum—a total of 90 contests. When you appreciate

the scale of the task, it becomes easier to understand why many

people are motivated to automate the process with computers.

Hand-counting paper ballots is by no means impossible, but it

would be considerably more expensive and time-consuming in

the United States than in other countries with simpler ballots.

∗ ∗ ∗

In summary, voting is especially challenging because:

• All involved parties can gain by corrupting an election.

• Results can be incorrect without an obvious failure.

• Democracy demands verifiability, not just correctness.

• Voter privacy and election transparency are in conflict.

• Elections must be accessible and usable by the public.

• Ballots in the United States are long and complex.

1The example here is Orange County’s ballot type SB019 from November 2004, available in NIST’s collection

of sample ballots at http://vote.nist.gov/ballots.htm.

2 This refers to the “Code 9” ballot style in Cook County, Illinois (also available in NIST’s collection), used in

Ward 19, Precincts 28, 43(R), 48, 50(R), and 66, as well as precincts in Wards 21 and 34.

Voting 5

Page 19 of 324
Page 20 of 324

How does an election work?

Running an election is a tremendous organizational task. In the

end, it does come down to counting, but it’s what’s being

counted that makes it such a challenge. Election administrators

are, in effect, trying to take a fair and accurate measurement of

the preferences of the entire population—a controlled

experiment on a grand scale. As any psychologist will tell you,

performing experimental measurements on human subjects is

fraught with logistic pitfalls and sources of error. But elections

are worse: virtually everybody has an incentive to actively bias

the measurement toward their own preferred outcome. Thus,

elections involve a security element as well, unlike most

scientific measurements.

As if that weren’t enough, a typical election in the United

States is not just one opinion poll but many different polls

conducted on the same day—for federal, state, and local elected

offices, as well as state and local referenda—and each poll has

to be localized to a specific region. Each contest appears on

some ballots but not others, resulting in different combinations

of contests on different ballots. Each combination is called a

ballot style. Because there are so many kinds of districts (such

as congressional districts, state assembly districts,

municipalities, hospital districts, and school districts), and

district boundaries of each kind often run through districts of

other kinds, there can be over a hundred different ballot styles

in a single county. There can also be multiple ballot styles at

one polling place, if it serves voters on both sides of a district

boundary, or if there are different ballots for voters of different

political parties.

Process. Here is a simplified breakdown of the election process,

setting aside voter registration and considering only the

collection and counting of votes. The events before, during, and

after actual voting make up the three stages of the process:

preparation, polling, and counting.

Voting 6

Page 20 of 324
Page 21 of 324

• Preparation. Before any votes can be cast, election officials

must prepare the ballots. Election officials map out all the

different kinds of political districts, assemble the contests

that are relevant to each political district, compose the

contests into ballot styles, and determine which ballot styles

go to which polling places.

• Polling. At polling places, pollworkers sign in each voter and

make sure that each voter gets the correct style of ballot.

Each voter makes their selections privately and casts a

ballot. Voters may also have the option of voting by mail or

participating in “early voting” by showing up in person at a

special polling place before election day.

• Counting. The records of cast votes are counted, either at

the polling places or at a central election office. If counting

initially occurs at polling places, the counts are then

transmitted to the central office for tallying. The votes for

each contest are extracted from all the ballots on which that

contest appears, and tallied to produce a result.

Equipment. The preceding description is intentionally

ambiguous about whether paper or electronic voting is used,

because the same three stages take place regardless of the type

of equipment.

If paper ballots are used, a layout is prepared for each ballot

style, usually designed on a computer. Election administrators

estimate how many ballots of each style will be needed so that

an adequate number can be printed for distribution to polling

places. After being marked, paper ballots can be counted by

hand or scanned on machines (called optical scanning

machines). The scanning can take place at the polls (precinct

count optical scanning), where each voter feeds their ballot

through a scanning machine into a ballot box, or it can take

place at a central office, where all the paper ballots are gathered

and scanned in high-speed machines after polls close (central

count optical scanning).

An alternative to paper ballots is to make selections on an

electronic voting machine that directly records the selections in

Voting 7

Page 21 of 324
Page 22 of 324

computer memory. These machines are called direct recording

electronic (DRE) machines. In this case, preparing ballots

consists of producing ballot definition files on electronic media

(such as memory cards or cartridges) to be placed in voting

machines. The ballot definition determines what will be

displayed to the voter. (Machines for scanning paper ballots

also require ballot definitions that specify how the marks on the

paper should be counted.) Some DRE machines also print a

voter-verified paper audit trail (VVPAT)—a paper record of the

voter’s selections that is shown to the voter for confirmation,

but kept sealed inside the machine to enable later recounts.

∗ ∗ ∗

To sum up, there are three broad categories of elections in

terms of how machines are used:

1. Vote on paper; count by hand.

2. Vote on paper; count by machine.

3. Vote on machine; count by machine.

(3a. The voting machine may also produce a paper record.)

Voting 8

Page 22 of 324
Page 23 of 324

Why use computers for elections?

As the preceding description makes clear, all three stages of the

election process involve complex and detail-oriented work.

Preparation involves managing information about all the

different contests, candidates, and ballot styles. Polling involves

distributing this information and collecting results from all the

polling places. Counting involves consolidating all the votes for

each candidate in each contest across all the ballots and ballot

styles. With so many contests on the ballot, computers can

make this process much easier.

It’s not surprising that election administrators have looked

to computers for help with elections. Computers are used to

great benefit in automating a broad range of complex and

repetitive tasks and for recordkeeping functions throughout all

kinds of government agencies. Running an election involves

organizing and processing a lot of information, such as ballot

descriptions and vote tallies, and databases are effective tools

for managing this information.

The appeal of computers goes beyond their potential to

increase the speed and accuracy of the count. Computerized

vote-entry machines have much greater flexibility than paper

ballots in the method of presenting contests and choices to

voters. They can walk voters through the voting process,

provide more detailed instructions, and prevent overvotes. They

eliminate the possibility of ambiguous or improperly scanned

marks on paper. They can offer a larger selection of languages.

They can point out contests that a voter may have missed

before finalizing the marked ballot. They can even read the

names of candidates aloud, in headphones, for voters who have

trouble reading or voters who are blind. Some voters have

physical disabilities that prevent them from using pencil and

paper. Computerized vote-entry machines allow people to vote

using a variety of input devices, such as large buttons, foot

pedals, head-controlled switches, or switches controlled by air

pressure (“sip-and-puff” devices).

Voting 9

Page 23 of 324
Page 24 of 324

All of these things become possible when the voting process

is conducted by an interactive computer program instead of an

inert piece of paper. There appears to be a substantial rate of

voter errors when voting on paper ballots— in a Rice University

study of paper ballots [24], over 11% of the 126 ballots collected

contained at least one error. A friendlier and richer voting

interface offered by a computer might help voters avoid making

mistakes. Furthermore, the principle of equal rights demands

that we provide a way for disabled citizens to cast their votes

privately and independently.

∗ ∗ ∗

In short, computers can offer several advantages:

• Computers can help manage election-related data.

• Computers can count and tally votes faster.

• Counting by computer avoids human counting errors.

• Computers can offer a richer user interface to voters,

potentially improving accessibility and voter accuracy.

Depending on how computers are used in an election, some or

all of these advantages may apply.

1. Vote on paper; count by hand.

2. Vote on paper; count by machine.

3. Vote on machine; count by machine.

enrich voting

user interface

reduce

counting error

speed up

counting

manage

election data

For this type of election: Computers could be used to:

Figure 1.1. Advantages that computers could potentially offer for elections.

Voting 10

Page 24 of 324
Page 25 of 324

How did electronic voting become

controversial?

In November 2000, Florida’s confusing “butterfly ballot” and

heavily disputed punch-card recounts [2, 85] brought highly

public embarrassment to the United States election system. The

election system suffered widespread criticism on many fronts,

particularly for using an outdated counting mechanism.

Determined to avoid repeating this fiasco, policymakers and

election administrators looked to new technology for a solution.

The result was a growing wave of interest in electronic voting,

which many hoped would eliminate the ambiguity of punch

cards and provide fast, accurate counts.

Two years later, the U. S. Congress passed the Help America

Vote Act (HAVA) [78], authorizing hundreds of millions of

dollars to be spent on new voting machines. Disability

organizations were optimistic about the new requirement for

“at least one direct recording electronic voting system or other

voting system equipped for individuals with disabilities at each

polling place.” But computer scientists warned against a hasty

switch to electronic voting, citing damage to the transparency

and reliability of elections. Though electronic voting machines

were already in use in some localities (more than 10% of

registered voters used them in 2000 [22]), their adoption surged

after HAVA passed in 2002.

In early 2003, election activist Bev Harris made a startling

discovery [32]. She used Google to search for “Global Election

Systems”—the old name of the company that was acquired by

Diebold and renamed “Diebold Election Systems.” Diebold

Election Systems is one of the heavyweights of the United States

election systems industry; its touchscreen voting machine, the

AccuVote-TS, was the leading DRE machine used in the 2004

United States election [22]. By following the links from her

search results, Harris found a completely unprotected Internet

site containing a large collection of company files, including the

source code for the AccuVote-TS.

Voting 11

Page 25 of 324
Page 26 of 324

Researchers at Johns Hopkins University and Rice University

examined this source code and published a landmark

report [43] in May 2004, detailing their discovery of “significant

and wide-reaching security vulnerabilities.” They discovered

that voters could vote multiple times and perform

administrative functions; they found that cryptography was

both misused and missing where it should have been used; and

they expressed a lack of confidence in the quality of the

software in general, concluding that it was “far below even the

most minimal security standards applicable in other contexts.”

Their findings starkly contradicted Diebold’s public claims that

its system was “state-of-the-art,” “reliable,” “accurate,” and

“secure” [20].

The state of Maryland then commissioned reviews of the

same system from two other agencies: Science Applications

International Corporation (SAIC) and RABA Technologies. The

SAIC report [72], released in September 2003, confirmed that

the system was “at high risk of compromise,” and the RABA

report [64], released in January 2004, agreed that the “general

lack of security awareness, as reflected in the Diebold code, is a

valid and troubling revelation.”

In the 2004 U. S. general election, over 30% of voters cast

their votes on electronic voting machines [22]. Voters called in

thousands of reports of machine problems, including total

breakdowns, incorrectly displayed ballots, premarked choices

on the ballot, incorrectly recorded votes, undesired cancellation

of ballots or selections, and nonfunctioning or incorrect

audio [82].

Since 2004, further investigations have continued to tear

down the façade of confidence in the security of voting

machines, the claims of vendors, and the testing regime under

which the machines were certified. Media story after media

story reported on conflicts of interest, regulatory failures, and

newly exposed technical vulnerabilities in all the major voting

systems, not just Diebold’s.

In the summer of 2007, the California Secretary of State

conducted a “top-to-bottom review” of the voting systems used

Voting 12

Page 26 of 324
Page 27 of 324

in California, in which I had the opportunity to participate as a

reviewer. This was the broadest review of voting system source

code to date; the review included source code for DRE machines

and optical scan machines from each of three major vendors

(Diebold Election Systems, Sequoia Voting Systems, and Hart

InterCivic), as well as the election management software

responsible for ballot preparation and tallying. However, the

review teams only had five weeks to examine the source code.

Despite the short time frame, they found serious and pervasive

security problems in every system reviewed [7, 12, 35]. The

software was not written defensively; security measures were

inadequate, misapplied, or poorly implemented; the presence of

numerous elementary mistakes suggested that thorough testing

had not been done. In particular, every system was found

vulnerable to catastrophic viral attacks: the compromise of a

single machine during one election could affect results

throughout the jurisdiction and potentially affect the results of

future elections.

As of this writing, it has become clear that we cannot trust

our elections to the electronic voting machines of today’s

leading vendors. Whether we will ever be able to trust them

remains an open question. There is not yet a clear consensus on

what standards a voting machine should reasonably be

expected to meet. It is also by no means obvious that any set of

feasible technical requirements would yield a voting machine

worthy of our trust— it might simply be beyond the state of the

art to create a sufficiently reliable and economical electronic

voting machine. The point of this work is to make progress

toward a better design, so as to bring us closer to

understanding what is possible and to inform our standards

and expectations for these machines.

Voting 13

Page 27 of 324
Page 28 of 324

Why does software correctness matter?

Switching from mechanical to electronic voting machines is a

bigger step than it might seem at first. Today’s electronic voting

machines are not just electrically-powered devices performing

the same function as their mechanical predecessors, the way

electric light bulbs replaced oil-burning lanterns. Electronic

voting machines contain general-purpose digital computers,

which makes them fundamentally different and capable of

much more than the special-purpose machines they replace. It

would really be more accurate to call them “voting computers,”

as they are called in the Netherlands.

Just like any other general-purpose computer, a voting

computer can be programmed to do anything—count votes,

miscount votes, lie to voters, play games, or even attack other

computers. To prove the point, a Dutch group called “Wij

vertrouwen stemcomputers niet” (“We do not trust voting

computers”) reprogrammed the Nedap ES3B, their nation’s

leading voting computer, to play a passable game of chess [31].

Consequently, the types of attacks that are possible against

voting computers are also fundamentally different than those

possible against mechanical voting machines. Tampering with a

lever machine can cause it to lose some votes or stop working

entirely. Tampering with a computer can cause it to actively

engage in sophisticated schemes to deceive voters and

pollworkers, behave in different ways at different times or

under different circumstances, and even subvert or conspire

with other computers.

The behaviour of a general-purpose computer is determined

entirely by its software. Assuring the correctness of software

has been a major unsolved problem in computer science

research for decades. Computer scientists have been able to

prove some aspects of correctness for small programs, but all

will readily acknowledge that nobody knows a general method

for proving software programs to be correct. The software

developed in industry tends to be larger and more complex

Voting 14

Page 28 of 324
Page 29 of 324

than can be analyzed by the best known techniques, while the

programming languages and tools used in industry generally

lag behind the state of the art in research.

Mistakes in software can remain latent for years, even when

the code is publicly disclosed and inspected by motivated

programmers. For example, OpenSSH is a popular program for

secure login. Its developers have declared security to be their

number one goal [17], and they have gained a reputation for

security practices more rigorous than most. Nonetheless,

security flaws were discovered in OpenSSH in 2003 that had

been present since its first release in 1999, and had survived

intensive software audits by the OpenSSH team.

The problem is exacerbated by the possibility of insider

attacks: what if someone involved in writing the voting software

wants to bias the election? As far as anyone knows, the flaws in

OpenSSH were inadvertent mistakes, so intentional flaws can

probably be made even harder to find. (Chapter 8 offers some

anecdotal evidence that detecting purposely hidden software

flaws can be extremely difficult.) Reviewing the voting software

is not just a matter of looking for code that seems intended to

change votes or tallies. Any flaw that lets an attacker infiltrate

the machine is a serious problem, since that flaw can then be

exploited to reprogram the machine to do anything. So, a

malicious programmer of voting machine software doesn’t have

to write suspicious-looking vote-altering code; he or she only

needs to leave an innocent-looking security weakness. When a

security weakness is found, there’s no way to tell whether it is

an intentional backdoor or an inadvertent mistake—as long as

someone knows the flaw, it can be exploited. If any flaw can be

an attack, we need voting software to be essentially flawless.

All of this explains why this dissertation focuses on

software correctness. There are people who have many years of

experience managing election personnel and running

paper-based elections. There are people who know how to build

reliable machines and reliable computer hardware. But the part

that no one fully understands yet is how to get the software

right.

Voting 15

Page 29 of 324
Page 30 of 324

2 Correctness

What constitutes a democratic election? 17

What does it mean for a voting system to be correct? 19

How does correctness relate to safety? 20

What is the tree of assurance goals for an election? 24

What does it mean for a voting system to be secure? 30

16

Page 30 of 324
Page 31 of 324

What constitutes a democratic election?

The democratic ideal of a legitimate election requires that the

results reflect an unbiased poll of the voters—accurate

according to what each voter intended, and fair in that each

eligible voter has equal and unhindered opportunity to

influence the outcome. These two basic goals can be broken

down according to the mechanics of how elections are run.

Accuracy. By “accurate,” I mean that the data about voter

preferences is accurately gathered and combined to produce the

final result. To make this happen, each ballot has to be

processed correctly at the three stages of voting:

• Correct ballot: Each voter should be presented a ballot with

complete and accurate information on the contests for

which they are eligible to vote.

• Cast as intended: Each voter’s recorded vote should match

what the voter intended to cast.

• Counted as cast: The calculation that decides the outcome

should accurately incorporate every recorded vote and no

extraneous votes.

Fairness. By “fair,” I mean that eligible voters (and only eligible

voters) are free to vote as they please, without bias. We can look

at this from two angles: how the sample of voters is drawn from

the population, and how the opinions of the voters are

measured.

• Unbiased sampling: Votes should come from a fair sample

of the population of eligible voters.

• Unbiased measurement: Each vote should be a fair

measurement of a voter’s preference.

Each of these two aspects of fairness can be elaborated in

further detail. In modern democracies, fair sampling is upheld

through measures aimed at offering equal access to the polls,

and also through the principle of “one person, one vote.”

Correctness 17

Page 31 of 324
Page 32 of 324

• Unbiased sampling is achieved by ensuring:

Authorized voters: Only voters that are eligible for a

contest should be permitted to vote on it.

One ballot per voter: No voter may cast more than one

ballot.

Equal suffrage: Every voter eligible for a contest should

have an equitable opportunity to vote on it.

An unbiased measurement depends on eliminating influence

from external pressures as well as influence from the

presentation of the ballot itself.

• Unbiased measurement is achieved by ensuring:

Secret ballot: No voter’s choices should be exposed by

the voting system or demonstrable by the voter to

others, lest votes be influenced by social pressure,

bribery, threats, or other means.

Equal choice: Every option in a contest should have an

equitable opportunity to receive votes.

Democracy also demands a further virtue: since power is

derived from the consent of the governed, the election process

itself must be accountable to the people. The manner in which

all of the above goals are achieved should be verifiable, so that

members of the public can assure for themselves that the

election is accurate and fair. The verifiability of the election is

not listed among the above goals because it is a “meta-goal,”

like a layer on top of all the other goals.

A widely preferred avenue for achieving verifiability is

through transparency—exposing the election process to public

scrutiny. However, verification can also take place through the

investment of trust in independent experts or inspectors (or

suitably balanced committees thereof), or through

cryptographic means, in which a calculation provides

mathematical evidence of the property to be verified.

Correctness 18

Page 32 of 324
Page 33 of 324

What does it mean for a voting system to be

correct?

In order to be confident that an election is democratic, we

would want to have assurance of all of the goals just

mentioned. But these goals are for the election as a whole,

including all the people, processes, and technology involved.

When we talk about a particular piece of equipment, such as a

voting machine, we have to choose a specific set of subgoals

that it is responsible for. For example, a voting machine cannot,

by itself, guarantee that each voter only votes once. However, if

the machine requires something like an access card in order to

cast each ballot, this feature in combination with a suitably

controlled process for handing out access cards, carried out by

competent, trustworthy pollworkers, can effectively limit each

voter to casting just one ballot.

Every goal is achieved through some combination of human

processes and technology. This dissertation is primarily

concerned with the technological part of an election—the

equipment and software involved in collecting and counting

votes, which I am calling the “voting system” for short. To say

that the voting system works correctly means that it fulfills the

responsibilities that have been assigned to it. Only after we’ve

decided on this assignment of responsibilities is it meaningful

to say whether it is correct. As the access card example

illustrates, it is usually necessary to subdivide goals in some

detail in order to separate out subgoals that technology can

address.

Correctness 19

Page 33 of 324
Page 34 of 324

How does correctness relate to safety?

Engineers have been designing safety-critical systems for many

years, so it’s instructive to examine the research and practice in

methodologies for developing these systems.

Analysis. One of the most common analysis techniques for

safety-critical systems is fault tree analysis [83]. Fault tree

analysis is a way of identifying all the ways that a particular

failure can occur. To perform fault tree analysis, one begins

with a root node that represents the undesired event (the fault);

then one identifies all the events or situations that could cause

that undesired event, and each one becomes a child of the root

node. Each node can be further refined by adding children that

identify possible causes. For example, a few nodes in a fault tree

for a fire extinguisher might look like this:

fire extinguisher

fails to deploy

pin is stuck in

handle

insufficient pressure

in tank

gas has leaked out

of the tank

fire extinguisher has

been previously used

Figure 2.1. A small portion of a fault tree for a fire extinguisher.

Fault trees are known in the computer security world as

threat trees [3] or attack trees [70]. An attack tree lays out all

the possible ways that an attacker might come to violate a

specific security restriction. In an attack tree, the top node is

the attacker’s ultimate goal. The children of a node specify

various ways that an attacker can achieve the goal. For example,

if the ultimate goal is to break open a safe, an attacker could do

Correctness 20

Page 34 of 324
Page 35 of 324

so by obtaining the combination or by drilling open the safe.

Part of the attack tree might look like this:

open the safe

drill the safe obtain the

combination

manipulate the safe bribe someone who

knows the combination

Figure 2.2. A small portion of an attack tree for an attacker who wants to break into a safe.

In the above examples, any one of the children of a node is

sufficient to lead to the parent; the relationship among siblings

is a disjunction (OR). Fault trees and attack trees can also

specify conjunctions (AND) and other logical relationships. The

nodes can be labelled with numbers to indicate the probability

of an event or the cost of a step in an attack.

Design. Fault trees and attack trees are used to analyze existing

systems to identify their weaknesses. But when one is designing

a system, the goal is to establish the system’s worthiness.

In the safety-critical literature, a written justification of a

system’s safety is called a safety case [87]. Safety cases are

required by many safety standards. A safety case is often a very

large document, as it incorporates all the arguments and

supporting evidence for the safety of each element of the

system. The development of the safety case can take up a large

fraction of the effort in designing a safety-critical system.

Hence, significant research efforts have been directed toward

ways of organizing and maintaining safety cases.

Like fault trees, safety cases are also typically structured in

a top-down approach based on successive refinement. The

technique that is probably the most prominent in the research

Correctness 21

Page 35 of 324
Page 36 of 324

literature is the Goal Structuring Notation [41], which elaborates

on a basic tree-like organization of goals by allowing nodes of

several different types: goals, strategies, justifications,

assumptions, and so on. Here is an example of a section of a

safety case for a microwave oven diagrammed in Goal

Structuring Notation:

microwave is

acceptably safe

argument that

radiation

emission levels

are safe

emission levels are

safe when door is

closed

emission levels are

safe when door is

open

results of

radiation

testing

argument that

door interlock

deactivates

emitter

. . .

. . .

Figure 2.3. Part of a safety case for a microwave oven in Goal Structuring Notation.

Voting systems. A safety case would be appropriate for

justifying why we should place our confidence in a voting

system. Ideally, certification of any voting system for

deployment would require the manufacturer to provide a

convincing and clearly structured safety case.

The hierarchy of goals for a democratic election form the

Correctness 22

Page 36 of 324
Page 37 of 324

starting point for such a safety case. The process of dividing

goals into subgoals produces a tree of assurance goals for a

system, which I’ll call an assurance tree. (An assurance tree

could be considered a simplified instance of Goal Structuring

Notation in which all the nodes are correctness goals.) When an

assurance tree is fully elaborated, the leaves of the tree are

individual responsibilities that can be assigned to specific

people and specific devices.

The process of refining the general goals into specific

subgoals is a type of design activity. Different solutions will

subdivide the main goals differently and assign responsibilities

for the subgoals differently. For example, access cards are one

possible way to keep voters from voting multiple times, but of

course they are not the only way. It is a design choice to

implement “one ballot per voter” in terms of the two parts:

“pollworkers give one access card to each eligible voter” and

“the voting machine allows each access card to be used just

once to cast a ballot.” Making these design choices and refining

the goals at every level eventually leads to a set of specific

technical requirements for the voting system.

In an assurance tree, the children of each node indicate

what requirements have to be upheld in order for the parent

goal to be upheld. The final result of refining the tree is an

assignment of specific responsibilities to various parts of the

system—for example, a set of tasks to be carried out by

humans and a set of tasks to be carried out by computers—

such that all the assurance goals are upheld. The tree captures

the design of the system as well as the security assumptions

that the designer made.

Correctness 23

Page 37 of 324
Page 38 of 324

What is the tree of assurance goals for an

election?

The requirements that were presented earlier can be refined one

step further without specifying a particular voting system

design. First I’ll explain each subgoal, then present the whole

tree, which can form a basis for the safety case of any election.

Accuracy: correct ballot. In order for a voter to receive a

correct ballot, the correct ballot has to exist for that voter and it

must contain the correct instructions and choices for the

election. The voter then has to be given the right kind of ballot,

and the voter has to receive it without alteration.

Accuracy: cast as intended. The voter’s vote is properly

recorded if the ballot indicates what the voter wanted and is

cast when the voter is ready. Choices should be selected if and

only if the voter makes them, and the voter should be free to

mark the ballot in any manner that is valid. (When paper is

used, the voter can also cast an invalid ballot; then the ballot is

not counted. When electronic machines are used, the machine

usually prohibits the voter from marking the ballot in an invalid

manner.) To further ensure that the cast ballot matched the

voter intent, the voter should get accurate feedback about what

is currently selected, and should be able to make changes or

corrections before casting the ballot.

Accuracy: counted as cast. For the count to be correct, there

must be no extra or missing votes, and the votes that are

counted must be exactly as voters indicated them on their cast

ballots.

Fairness: authorized voters. I use the term voting session for

the interval that begins with a voter entering a protected area of

the polling place such as a voting booth, and ends when the

voter walks away, either having cast or failed to cast a ballot. In

Correctness 24

Page 38 of 324
Page 39 of 324

a typical election, voter authorization consists of controlling

access to voting sessions and ensuring that there is no other

way to cast a ballot except in a voting session.

Fairness: one ballot per voter. Limiting each voter to one cast

ballot is also achieved by controlling access to voting sessions.

In practice, each voter is authorized for one voting session at a

time. If a voter wants to try again, a pollworker either destroys

the ballot or determines that the voter did not already cast a

ballot, and then authorizes another voting session.

Fairness: equal suffrage. There are three steps to casting a

ballot. First the voter has to get to a polling station. Then, at the

polling station, the voter has to be allowed to begin a voting

session. Then, in the voting session, the voter has to

successfully cast the ballot. Equal suffrage demands that voters

have reasonable access and be free of discrimination at all of

these stages.

Another way that a voter can be disenfranchised is to make

an error. It is infeasible to demand that there be no errors at all,

but fairness requires that errors not be biased against any

particular group of voters. The controversy over the 2006 race

for Florida’s Congressional District 13 highlighted the

significance of biased error. Different voters saw different ballot

layouts, and post-election analysis [29] has suggested that the

particular layout used in Sarasota County caused a large

fraction of voters to skip the congressional race by mistake.

Fairness: secret ballot. The election system should not itself

violate the voter’s privacy. But it’s a tougher task to prevent

coercion. Voters’ susceptibility to influence may not be based in

reality: as long as voters believe they will profit or suffer by

voting a certain way, the belief is sufficient to influence their

votes. For example, an attacker could claim to have insider

access that allows him to identify which voters voted for a

particular candidate and punish them. Whether or not the

attacker has such insider access, or whether discovering voters’

Correctness 25

Page 39 of 324
Page 40 of 324

identities is even possible, the fear of punishment could be

enough to sway votes. Different kinds of voting systems will

lend differing degrees of plausibility to such claims—for

example, some voters might be easily persuaded that someone

could violate their privacy via computerized vote records, but

they might find it harder to see how such a violation would be

possible with hand-counted paper ballots.

The formal definitions of coercion-resistance in the research

literature [18, 38, 60] require that voters be unable to prove to a

vote-buyer that they voted a certain way. But the issue is more

nuanced than that. A vote-buyer doesn’t need solid proof, just

evidence sufficiently plausible that offering a reward for it will

influence the vote.

For example, consider an election system in which voters

receive receipts indicating how they voted, but could also forge

such receipts. One might think that such an election system is

coercion-resistant, since it isn’t worthwhile for a vote-buyer to

buy something that can be forged. But resistance to coercion

also depends on the cost of producing a forgery: if forgeries

require enough effort that a significant number of voters will

vote as directed by the vote-buyer instead of carrying out the

forgery, the vote-buyer will succeed at influencing the election.

Therefore, the secret ballot goal includes the requirement that

voters not be given any plausible evidence (not just hard proof)

of their votes that could be sold to an external party.

Fairness: equal choice. Since the goal is to avoid bias among

the options within a contest, it would not do for some of the

options to be shown one way to some voters and a different way

(say, in red, or in larger print) to others.

It would be ideal to avoid all bias among options presented

on the same ballot, but this is not possible: some option has to

be presented first, and there is a well-documented bias toward

the first item [46]. The next best thing is to change the order of

presentation from ballot to ballot such that there is a uniform

distribution of bias towards all the options, when the ballots are

considered in aggregate.

Correctness 26

Page 40 of 324
Page 41 of 324

There is a more subtle kind of bias that also should be

avoided: a bias relative to the voter’s preferred choice. Imagine,

for example, a contest with three options A, B, and C. Suppose

the ballot design causes half the voters who intend to mark A to

mistakenly mark B, half of those who want B to mark C, and

half of those who want C to mark A. Such a ballot is not biased

toward any particular option, but it is still clearly unfair: B

could win an election in which most voters intended to vote for

A. So there is also a requirement for a uniform distribution of

errors with respect to the voter’s intended choice.

∗ ∗ ∗

Gathering all the requirements just mentioned gives us the

following high-level assurance tree for elections.

Accuracy

• Correct ballot

G1. For every voter, there exists a ballot style containing

the complete set of contests in which that voter is

eligible to vote.

G2. On every ballot, all the information is complete and

accurate, including instructions, contests, and

options.

G3. In every voting session, the correct choice of ballot

style is presented to the voter.

G4. Every ballot is presented to the voter as the ballot

designer intended.

• Cast as intended

G5. At the start of every voting session, no choices are

selected.

G6. The voter’s selections change only in accordance

with the voter’s intentions.

G7. The voter receives accurate feedback about which

choices are selected.

G8. The voter can achieve any combination of selections

that is allowable to cast, and no others.

Correctness 27

Page 41 of 324
Page 42 of 324

G9. The voter has adequate opportunity to review the

ballot and make changes before casting it.

G10. The ballot is cast when and only when the voter

intends to cast it.

• Counted as cast

G11. Every selection recorded on a ballot cast by a voter is

counted.

G12. No extra ballots or selections are added to the count.

G13. The selections on the ballots are not altered between

the time they are cast and the time they are counted.

G14. The tally is a correct count of the voters’ selections.

Fairness

• Unbiased sampling

Authorized voters

G15. Only authorized voters can begin voting

sessions.

G16. Only in voting sessions can ballots be cast.

One ballot per voter

G17. No voting session allows more than one ballot to

be cast.

G18. Each voter is allowed at most one voting session

in which a ballot was cast.

Equal suffrage

G19. Every voter has reasonable, non-discriminatory

access to a polling station they can use.

G20. Every voter can begin a voting session within a

reasonable, non-discriminatory waiting time.

G21. Every voting session provides a reasonable,

non-discriminatory opportunity to cast a ballot.

G22. For every voter that is eligible to vote in a

particular contest, there is a uniform likelihood

of voter error on that contest.

• Unbiased measurement

Secret ballot

G23. The processing of voter choices does not expose

how any particular voter voted.

Correctness 28

Page 42 of 324
Page 43 of 324

G24. Voters are not provided any way to give plausible

evidence of how they voted to an external party.

Equal choice

G25. Within each contest, all the options are

presented in the same manner on each ballot

and across all ballots.

G26. For each contest, the voters are presented with

ballots that, in aggregate, yield a uniform

distribution of bias in favour of each option.

G27. For each contest, the voters are presented with

ballots that, in aggregate, yield a uniform

frequency of voting errors across the voters that

intend to vote for each option.

G28. In each contest, for each option, voters intending

to vote for that option are presented with ballots

that, in aggregate, yield a uniform distribution of

voting errors in favour of every other option.

Correctness 29

Page 43 of 324
Page 44 of 324

What does it mean for a voting system to be

secure?

A voting system is secure if it can be relied upon to produce the

correct results in the face of determined attempts to corrupt

the outcome. Thus, security and correctness are closely related:

security is just correctness in an adversarial context. The

intentional violation of any subgoal in the assurance tree would

constitute a security breach.

Since this dissertation is focused on the software security

questions surrounding electronic voting machines, let’s separate

out the goals that rely on software from those that don’t.

Of the goals in the assurance tree, these are normally addressed

by humans in the preparation and conduct of the election:

G1. For every voter, there exists a ballot style containing the

complete set of contests in which that voter is eligible to

vote.

G2. On every ballot, all the information is complete and

accurate, including instructions, contests, and options.

G18. Each voter is allowed at most one voting session in

which a ballot was cast.

G19. Every voter has reasonable, non-discriminatory access to

a polling station they can use.

The following goals are addressed through good ballot design.

They could be violated by voting machine software that displays

the ballot incorrectly or lacks the ability to display ballots in a

fair manner. However, as long as the voting machine presents

the ballot as the ballot designers intended (which is goal G4), we

can consider these goals the responsibility of ballot designers:

G22. For every voter that is eligible to vote in a particular

contest, there is a uniform likelihood of voter error on

that contest.

G25. Within each contest, all the options are presented in the

same manner on each ballot and across all ballots.

Correctness 30

Page 44 of 324
Page 45 of 324

G26. For each contest, the voters are presented with ballots

that, in aggregate, yield a uniform distribution of bias in

favour of each option.

G27. For each contest, the voters are presented with ballots

that, in aggregate, yield a uniform frequency of voting

errors across the voters that intend to vote for each

option.

G28. In each contest, for each option, voters intending to vote

for that option are presented with ballots that, in

aggregate, yield a uniform distribution of voting errors

in favour of every other option.

The following goals could be addressed almost entirely by

election-day procedures, or through a combination of such

procedures and proper software behaviour, depending on how

the voting system is designed:

G15. Only authorized voters can begin voting sessions.

G16. Only in voting sessions can ballots be cast.

The proposed designs in this dissertation assume that the

above two goals are upheld by human procedures. For G15,

election workers ensure that only authorized voters are

permitted physical access to voting machines. And for G16,

election workers should provide no other way to cast ballots

outside of the officially approved procedures.

The remaining goals are those that necessarily depend on the

correctness of the voting machine software implementation:

G3. In every voting session, the correct choice of ballot style

is presented to the voter.

G4. Every ballot is presented to the voter as the ballot

designer intended.

G5. At the start of every voting session, no choices are

selected.

G6. The voter’s selections change only in accordance with

the voter’s intentions.

G7. The voter receives accurate feedback about which

choices are selected.

Correctness 31

Page 45 of 324
Page 46 of 324

G8. The voter can achieve any combination of selections that

is allowable to cast, and no others.

G9. The voter has adequate opportunity to review the ballot

and make changes before casting it.

G10. The ballot is cast when and only when the voter intends

to cast it.

G11. Every selection recorded on a ballot cast by a voter is

counted.

G12. No extra ballots or selections are added to the count.

G13. The selections on the ballots are not altered between the

time they are cast and the time they are counted.

G14. The tally is a correct count of the voters’ selections.

G17. No voting session allows more than one ballot to be cast.

G20. Every voter can begin a voting session within a

reasonable, non-discriminatory waiting time.

G21. Every voting session provides a reasonable,

non-discriminatory opportunity to cast a ballot.

G23. The processing of voter choices does not expose how

any particular voter voted.

G24. Voters are not provided any way to give plausible

evidence of how they voted to an external party.

G3 and G20 depend on election-day procedures as well as the

voting machine software. For G3, typically a pollworker is

responsible for selecting the correct ballot style for each voter,

and the voting machine must correctly use the ballot style

indicated by the pollworker. For G20, the polling station needs

to serve voters efficiently and fairly, but also the voting

machines should be available and ready to serve voters and

should not freeze up or crash. G23 and G24 depend on the

overall design of the voting system, including the human

procedures, as well as the correct functioning of the voting

machine software.

Security issues with voting machine software usually have to do

with upholding and enforcing the 17 goals in this last list.

These 17 goals are the focus of my efforts to achieve and verify

software correctness.

Correctness 32

Page 46 of 324
Page 47 of 324

3 Verification

How do we gain confidence in election results? 34

How can we verify the computerized parts of an election? 36

What kind of election data can be published? 39

What makes software hard to verify? 41

In what ways are today’s voting systems verifiable? 44

What is the minimum software that needs to be verified? 48

What other alternatives for verification are possible? 52

33

Page 47 of 324
Page 48 of 324

How do we gain confidence in election results?

An election consists of many steps, each of which processes

information such as ballot and candidate data, voter

information, and records of cast votes. At the most basic level,

each step takes some input and produces some output.

Confidence in the ultimate result—the output of the last step in

the chain—depends on confidence that each step was correctly

performed. The choice of the type of voting system determines

which steps are carried out by people and which by computers.

Earlier we described the election process in terms of three

stages: preparation, polling, and counting. With respect to

establishing confidence in a voting system, these stages can be

broken down further into the nine steps shown at the left, which

include transmission as well as processing of information.

design

ballots

present

ballots

count

votes

tally

subtotals

distribute

ballots

mark or

enter votes

collect

votes

transmit

subtotals

Preparation

Polling

Counting

cast

votes

The preparation stage consists of events prior to the

opening of polls, which includes not only designing the ballots

but also distributing them to polling places. This production

and distribution takes place for both paper ballots and

electronic ballot definition files.

The polling stage involves presenting the ballots to voters,

who make selections and cast the ballots. For sighted voters

reading paper ballots, presentation of the ballot is a trivial step,

but for electronic voting computers the fidelity of the

presentation is a real issue.

In many elections, counting occurs in two parts: votes are

first counted at polling places, then the counts are centrally

tallied to yield the final results. This stage includes the

transmission of votes to the person or machine that counts

them. The distinction between local and central counting is

important because the local counting process often takes place

in public, whereas the aggregation of results and central tallying

does not.

For a step that transforms information from one form to

another, confidence comes from ensuring that it produced the

correct output for the input it was given. For a step that

Verification 34

Page 48 of 324
Page 49 of 324

transports information from one place to another, confidence

comes from ensuring that the integrity of the information was

preserved.

Because of the way I’ve defined the three accuracy goals

(correct ballot, cast as intended, and counted as cast), they differ

slightly from the three chronological stages: getting the correct

ballot to the voter includes the presentation step at the polls.

The following figure shows which steps correspond to the three

accuracy goals. Under each step is the name of a subgoal for

that step.

counting

correctness

count-to-tally

integrity

tallying

correctness

ballot-to-voter

integrity

vote recording

correctness

ballot

correctness

ballot-to-poll

integrity

design

ballots

mark or

enter votes

present

ballots

distribute

ballots count

votes

collect

votes tally

subtotals

transmit

subtotals

C O R R E C T B A L L O T C A S T A S I N T E N D E D C O U N T E D A S C A S T

vote-to-count

integrity

cast

votes

Preparation Polling Counting

Figure 3.1. The nine steps in the election process and their corresponding integrity and

correctness goals.

Verification 35

Page 49 of 324
Page 50 of 324

How can we verify the computerized parts of

an election?

Suppose that a particular information processing step in an

election is carried out by a computer. As I mentioned in

Chapter 1, the computer’s behaviour is completely controlled by

its software. Let’s say the software program responsible for this

step takes some input x and produces some output y. For

example, if this is the vote-tallying step, x could be a collection

of electronic vote records and y could be the election totals.

input

x

output

y program

Figure 3.2. For some particular processing step in an election, a software program takes

the input x and produces the output y.

If you want to check that the program produced the correct

result, you have two main choices:

1. Software verification. You can examine the program itself

and confirm that it works the way you expected. Depending

on the assumptions you make, this may include manual

inspection of the source code, automated analysis, or formal

mathematical proofs. Once you have confirmed that the

program does exactly what it’s supposed to do in every

possible circumstance, you can be confident that this

particular output, y, is correct.

2. Result verification. You can take the input x and figure out

what the corresponding output should be. If the actual

output y matches the expected output, then you know it’s

correct. To do this, you need records of both x and y, as well

as some way to independently repeat the operation—

perhaps you have another program that you trust, or

perhaps you can work out the expected output by hand.

Verification 36

Page 50 of 324
Page 51 of 324

There is also a variant of result verification:

2a. Indirect result verification. Some schemes allow you to

establish confidence without repeating the entire operation.

For example, given information derived from x and y, you

might have a way to mathematically check their consistency.

Or, you might be allowed to choose parts of x and y to

check, enabling you to establish a high probability of a

correct result.

Software verification has the advantage that it only needs to be

done once on a given program to establish confidence in all the

output it will ever produce. Result verification has to be

repeated each time the program produces new output.

However, there are three major factors weighing in favour of

result verification.

Programs change. The apparent advantage of doing software

verification only once becomes less compelling when you

consider that software changes all the time. Features are added;

bugs are discovered and fixed; demands change. In particular,

election software is subject to election law, which differs from

state to state in the United States. Whenever legislation gets

passed, election software may have to be updated to satisfy new

requirements. Any change would invalidate previous reviews or

proofs of correctness and require the software to be verified

over again.

Software verification requires disclosure. Disclosure of

software code often faces legal, financial, or political barriers.

Voting machine companies have resisted public disclosure of

their source code on the grounds that it could help a motivated

attacker, and they claim that copyright and trade secret

protection are necessary to support a sustainable, profitable

business. [34] Disclosing code would certainly increase the

transparency of an election and improve the accountability of

the testing process. But having ways to check the correctness of

an election without depending on disclosure of all the code

would allow the election to sidestep this disclosure dispute. The

Verification 37

Page 51 of 324
Page 52 of 324

democratic process is healthier if private interests have fewer

opportunities and fewer plausible incentives to prevent the

public from verifying an election.

Software verification is much harder. As a later section of this

chapter will explain (page 41), the behaviour of software can be

extremely difficult to analyze. Software review by human

experts is expensive, time-consuming, and prone to error. The

only way to be truly sure is to construct a mathematical proof,

but it is well beyond the state of the art to do this for programs

the size of typical computer applications. When such proofs are

constructed, they often aim to prove things about a simplified

model of the program rather than the program itself.

Unfortunately, a mathematical proof can only prove that a

program satisfies a formal specification of what it’s supposed

to do. The proof only establishes that the program is correct if

the specification accurately expresses what it means to be

correct—and such specifications are themselves complex and

tricky to write.

Verification 38

Page 52 of 324
Page 53 of 324

What kind of election data can be published?

There is an inherent tension between voter privacy and the

desire for verifiable elections. As argued earlier in this chapter,

verifying results is preferable to verifying software. But public

verification of results depends on publishing election data.

Suppose there is some data made available to the public to

enable verification. This might include partial or complete

information about ballots, votes, and results, or something

derived from such data. Each published piece of data (let’s call

it a record) might be identifiable as corresponding to a

particular voter, or it might not. And each record might contain

sufficient information to reveal votes, or it might not. These two

features are independent: for example, a published record could

indicate a vote for a particular candidate, yet not be associated

with any particular voter.

For voters to be able to check that their own ballot was

correctly received (i.e., cast as intended), they need to be able to

look up their own ballots. To do this, they need some kind of

public record of their ballot that is identifiable.

For voters to be able to confirm the tally by directly

performing their own recount, they have to be able to see the

votes. To do this, they need public records that reveal votes.

Published records that are identifiable and reveal votes

would enable the public to verify everything, at the expense of

voter privacy. Imagine an election in which every ballot is

published online and uniquely associated with the voter who

cast it. Any voter could look up their ballot online to confirm

that it is correct as published, and anyone could count the

published ballots to confirm the tally. In such a system,

software correctness would be irrelevant—software could be

used at any stage of the process and there would be no need to

verify it, because the entire election can be checked by result

verification. But in such an election, voters could also easily sell

their votes—for example, they could tell a vote-buyer where to

find their ballots online.

Verification 39

Page 53 of 324
Page 54 of 324

∗ ∗ ∗

In summary:

• Public confirmation that ballots are cast as intended

requires public records that are identifiable.

• Public confirmation of the tally by direct recount requires

public records that are vote-revealing.

• If any public records are identifiable and vote-revealing,

they enable bribery and coercion.

This suggests two possible kinds of public records:

1. Anonymous records that do reveal votes.

2. Identifiable records that don’t reveal votes.

Several proposals for voting systems, including those proposed

in this dissertation, publish records of the first kind. These

records enable direct result verification of the tally. Later in this

chapter, I’ll discuss end-to-end cryptographic voting systems, in

which both kinds of records are published, and an additional

verification step confirms the correspondence between the two.

Verification 40

Page 54 of 324
Page 55 of 324

What makes software hard to verify?

Most software is hard to verify because it is complex.

Here are some of the main reasons why complexity in

software is more difficult to manage than complexity in a

physical machine.

Number of components. The number of parts in a physical

machine is limited by the costs of manufacturing, but there is

no such limit on software. A software program costs the same

to distribute—virtually nothing—whether it contains ten

components or a million components. It is easier to add

complexity to a software program than to a physical device, and

removing code often has a higher risk of breaking the program

than adding new code. Requirements change and customers ask

for more features; in response, software tends to grow

boundlessly during the course of development, unless there are

determined and persistent efforts to keep it small.

Software programs also often incorporate large ready-made

packages of components written by others, to save the effort of

writing code from scratch. Even if only a small part of a

package’s functionality is used, it is easier to include the entire

package than to separate the parts that are used from those

that are not. These pressures lead to software applications with

millions of lines of code and thousands of interacting

components.

Complex interconnections. There are likely to be more

connections between the parts of a software program than

those of a physical machine. Whereas a machine part can only

interact with other parts near it, there is no limit on the number

of other parts that a software component can depend on. For

example, it is common for a single component to be relied upon

by thousands of other components.

These connections are also harder to see in software. The

way that a machine part affects other parts is usually clear from

Verification 41

Page 55 of 324
Page 56 of 324

direct physical inspection. But finding all the other software

components that depend upon a given software component can

be a difficult task.

Far-reaching effects. Because software components can be so

deeply interconnected, a small change in one part can affect

another part that is far away, affect parts written by different

people, or have wide-ranging effects on the behaviour of the

whole program. The software engineering practices of

modularity (dividing up a program into distinct modules) and

encapsulation (protecting each module from outside

interference) aim to limit these kinds of effects, but software

programs nonetheless tend to be more sensitive to change than

physical machines.

Nonlinearity. The power of general-purpose computers derives

from their ability to make decisions. With software, a tiny

change in input can yield a completely different outcome; for

example, a program can decide to behave one way when the

result of a calculation turns out to be zero and another way

when it is nonzero. This means that similar situations cannot be

assumed to yield similar behaviour. This nonlinear nature

makes it hard to predict how software will behave and hard to

test software thoroughly. Mechanical devices can be nonlinear

too, but software tends to be pervasively nonlinear.

∗ ∗ ∗

One of the most serious threats that is currently poorly

addressed in voting systems is the insider threat from software

developers. Intentionally placed bugs or backdoors are hard to

detect even when software is carefully audited [5]. The

persistent failure of the federal testing process to detect major

security flaws [21, 37] and the continuing revelations of security

vulnerabilities in certified voting systems [33, 43, 64, 84, 88]

suggest that voting software has not been audited anywhere

near enough to defend against this threat.

Verification 42

Page 56 of 324
Page 57 of 324

The complexity of software is what makes it difficult to be

sure: sure that the software will behave as expected, that it will

produce the correct results, and that it will resist determined

attempts to subvert the outcome of an election. Software

complexity is the ultimate enemy of reliable computer-based

elections.

There are two ways to fight this enemy: design the system

so less of the software needs to be verified, and simplify the

software that needs to be verified. Both can be applied together.

Verification 43

Page 57 of 324
Page 58 of 324

In what ways are today’s voting systems

verifiable?

Different voting systems offer different ways for voters to gain

confidence that the election results are correct. We can compare

systems by looking at what mechanism for assurance is

provided, if any, at each step of the process.

The two kinds of voting technology most commonly used in

the United States are optical scan systems and direct recording

electronic (DRE) systems.

Optical scan voting. When an election is conducted by optical

scan, paper ballots are prepared and printed before polls open.

Voters mark the ballots by hand and deposit them into a ballot

box. There are two variants of optical scan voting: the scanning

can take place at individual precincts or at a central election

office.

Although software is usually involved in preparing the

ballots, voters and candidates can verify for themselves the

sample ballots published before polling. Voters can also bring

sample ballots to the polling place and compare them with the

blank ballots they receive. This is an example of avoiding

software verification, which is possible because the results of

the preparation stage are public.

We know the ballot is presented exactly as prepared,

because the voter directly reads the printed paper. There is no

recording device to misrecord the voter’s marks; the voter is

responsible for clearly marking the paper to be counted. The

election relies on the physical durability of paper for the

integrity of printed ballots and recorded votes.

A precinct-based

optical scanner.

When scanning takes place at individual precincts, the

ballots pass through a scanning machine on their way into the

ballot box. After polls close, each machine prints out its counts

on a paper tape. If the paper tapes are posted immediately for

public viewing, then no one has to trust the software that does

the tallying. The final election report will contain both the

Verification 44

Page 58 of 324
Page 59 of 324

counts in each precinct and the overall totals. Anyone can

confirm that the locally posted results are correctly included in

the election report, and anyone can confirm that the overall

totals were calculated properly.

When scanning is performed centrally, voters can’t perform

the same check on the tally step. They have to trust election

personnel to safely transport the ballots from the polls to the

central office and to enter the results from the central scanner

into the software that tallies them (known as the election

management system, or EMS).

Figure 3.3 summarizes the mechanisms by which any

individual voter can ensure the validity of each step in this

process. (I’ll call this an assurance chart.)

counting

correctness

count-to-tally

integrity

tallying

correctness

ballot-to-voter

integrity

vote recording

correctness

ballot

correctness

ballot-to-poll

integrity

design

ballots

mark or

enter votes

present

ballots

distribute

ballots

count

votes

collect

votes

tally

subtotals

transmit

subtotals

C O R R E C T B A L L O T C A S T A S I N T E N D E D C O U N T E D A S C A S T

vote-to-count

integrity

cast

votes

published sample ballots paper

ballot box

in public view

results posted

at each

precinct

subtotals and

totals posted

online

precinct

optical scan

central

optical scan

election administrators recount ballots

scanner

personnel personnel

ballot box

in public view EMS

EMS

scanner

Figure 3.3. Assurance chart for elections with hand-marked, optically scanned ballots.

The starbursts mark mechanisms that voters have to accept

on faith—they have to trust software they can’t see or people

they don’t know. For precinct-based scanning, voters have to

trust the software that controls the optical scanner. For central

scanning, the voters also have to trust the personnel who collect

the ballots and convey counts from the scanner to the EMS.

They also have to trust the EMS itself, since they have no way to

independently check that the totals were added up correctly.

Paper ballots provide a useful backup record, as they can be

recounted by hand or by machine. The same stack of ballots can

even be counted multiple times, and the counts from different

people or different machines can be compared to improve

Verification 45

Page 59 of 324
Page 60 of 324

confidence. In Figure 3.3, recounts are shown as a secondary

assurance mechanism, below the three boxes on the right. They

are shown as secondary because ordinary voters cannot conduct

or order recounts; only election administrators can do so.

DRE voting. Figure 3.4 shows what voters have to trust for each

step of an election process with a DRE voting system. There are

two possibilities here as well: the results from DRE machines

might be reported at each precinct, or they might be reported

only by the central election office.

counting

correctness

count-to-tally

integrity

tallying

correctness

ballot-to-voter

integrity

vote recording

correctness

ballot

correctness

ballot-to-poll

integrity

design

ballots

mark or

enter votes

present

ballots

distribute

ballots

count

votes

collect

votes

tally

subtotals

transmit

subtotals

C O R R E C T B A L L O T C A S T A S I N T E N D E D C O U N T E D A S C A S T

vote-to-count

integrity

cast

votes

DRE with

precinct-level

reporting

DRE with

central

reporting

individual voters check VVPATs; effective only if recounted election administrators recount VVPATs

personnel

personnel

personnel personnel

counts posted

at each

precinct

subtotals and

totals posted

online

DRE

DRE

DRE

DRE

EMS

EMS

EMS

EMS

Figure 3.4. Assurance chart for elections with direct recording electronic (DRE) voting.

When DRE machines are used, voters don’t get to see a

sample of the ballot definition in the machine, in the same way

that a sample ballot is a direct preview of what will be used on

election day. At best, voters might get images of the screens

displayed by the DRE, printed on paper. But, in general, they

don’t get to test-drive a DRE with the ballot definition they will

be using, and they can’t check whether their machines have

received the correct ballot definitions. Voters have to trust the

EMS, which produces the ballot definition files, the personnel

that operated the EMS, and the personnel that loaded the ballot

definitions into the DRE machines.

A DRE voting machine.

The DRE machines are responsible for presenting the

choices to the voter and recording the voter’s selections. For

these steps the voter is forced to trust that the DRE software is

correct. For the counting stage, voters have to trust either the

Verification 46

Page 60 of 324
Page 61 of 324

software in the DRE that counts and reports results locally, or

the software in the EMS that counts and tallies the results

centrally, along with the personnel that convey the information

to the EMS.

As a backup verification mechanism, some DRE machines

print voter-verified paper audit trails (VVPATs). This is a paper

tape that shows the voter’s selections for viewing and

confirmation by the voter. Printed VVPATs are retained by the

machine so that they can later be recounted if a recount is

deemed necessary. However, voter inspection of VVPATs is not

as strong a backup as voter inspection of paper ballots; in the

case of VVPATs, the thing being inspected is not what is

normally counted. With DRE machines, the results are derived

from the electronic records, not the VVPATs that voters see; the

VVPATs are only relevant if election officials decide to conduct a

recount.

A DRE with a VVPAT

printer (at lower right).

There are also good reasons to believe that voters are

unlikely to catch discrepancies on VVPATs. In a study by

Everett [25], voters using a mock DRE were shown a review

screen with selections different from what they had chosen, and

68% of voters failed to notice the changes. It seems likely that

even more voters would miss discrepancies on the VVPAT,

which is generally smaller than the screen and shown off to the

side of the machine.

As Figure 3.4 makes obvious, DRE voting systems depend

heavily on software. Because so little information is typically

published about these programs and their inputs and outputs,

trusting the outcome of such an election often requires trusting

virtually every piece of software in the system—software for

designing ballots, software that produces ballot definitions,

voting machine software, software that tallies votes, and all the

operating systems, compilers, editors, and other tools that were

used to produce these programs.

It doesn’t have to be this way. By publishing information

about the software and the data processed by that software, it’s

possible to reduce what voters have to accept on faith in order

to trust the validity of the election result.

Verification 47

Page 61 of 324
Page 62 of 324

What is the minimum software that needs to

be verified?

The degree to which software verification is avoidable depends

on a critical decision: how do voters indicate their votes—on

paper or on a computer? Of all the steps in the process, this one

is special because it must take place in private.

A big part of the present controversy over electronic voting

machines is a conflict about the user interface presented to

voters. Proponents of the machines point to the real benefits

that computers could offer in improved usability and

accessibility. For people with certain disabilities, voting

computers may be the only way to vote privately and

independently. Whether these advantages are enough to

outweigh the loss of a tangible, directly marked ballot is a

complicated question, and I argue for neither side of that issue

here. But an important factor in deciding whether vote entry

should occur on paper or on a computer is the feasibility of

ensuring the integrity of votes in either case.

Each of the two cases has its own answer to “what is the

minimum software that needs to be verified?”

Case 1: The paper option. If voters directly mark paper ballots,

the answer is “nothing.” To avoid all software verification, just

publicly count the ballots by hand right after the polls close.

Sample ballots, mailed out before polls open, let voters check

that the real ballots are printed correctly. There is no software

involved in marking and casting votes, only paper. And if the

results of the hand count are posted immediately at the polling

place, then no one has to trust the software that does the

tallying.

So, in a voting system where paper ballots are hand-marked

and hand-counted at the polls, any step that uses software can

be publicly checked by direct result verification. As with any

paper ballot system, the ballots are available to be recounted

later if necessary.

Verification 48

Page 62 of 324
Page 63 of 324

Figure 3.5 summarizes the preceding analysis in an

assurance chart.

published sample ballots

hand-marked,

hand-counted

paper ballots

paper ballot box

in public view

multiple

counters in

public view

counts posted

at each

precinct

subtotals and

totals posted

online

election administrators recount ballots

counting

correctness

count-to-tally

integrity

tallying

correctness

ballot-to-voter

integrity

vote recording

correctness

ballot

correctness

ballot-to-poll

integrity

design

ballots

mark or

enter votes

present

ballots

distribute

ballots

count

votes

collect

votes

tally

subtotals

transmit

subtotals

C O R R E C T B A L L O T C A S T A S I N T E N D E D C O U N T E D A S C A S T

vote-to-count

integrity

cast

votes

Figure 3.5. Assurance chart for an election with hand-marked, hand-counted ballots.

Case 2. Entering votes by computer. In this case, the answer is

“just the vote-entry software.” Here’s why.

The “mark or enter votes” step, central to the voter

experience, also turns out to be critical in terms of verification.

This step cannot be publicly verified by result verification.

Result verification requires a complete record of inputs and

outputs. But one of the inputs to this step is the input from

individual voters, which must be kept private due to the

principle of the secret ballot. Moreover, if the ballot is

presented to the voter by a computer, the voter’s input is

subject to influence by the computer.

Therefore, if choices are presented or selected on a

computer, software verification is unavoidable. However, the

secret ballot is the only privacy requirement that elections have

to uphold. Recorded votes can be published as long as they

cannot be associated with any particular voter. The only part of

the process that needs to be secret—and thus the only part

for which software verification is really necessary—is from

the private interaction with an individual voter up until the

moment the voter’s votes are recorded in anonymous form.

That interval is the critical interval during which private

information gets turned into publishable information. All the

inputs and outputs for other steps can be published, so

everything else can be checked by result verification.

Verification 49

Page 63 of 324
Page 64 of 324

It follows that the way to minimize software verification is

to make that critical interval as short and simple as possible:

use software to present the ballot, accept selections from

voters, and record the votes in anonymous form, then publish

the anonymous votes immediately when polls close. The

preparation that takes place before the election produces a

ballot definition file for the voting machine. If this file is also

published, no one needs to verify the ballot preparation

software either. Figure 3.6 gives the assurance chart for this

case.

anonymous vote

records posted

at each precinct

published

ballot

definition

DRE with

published

vote records

personnel DRE anonymous vote records posted online

counting

correctness

count-to-tally

integrity

tallying

correctness

ballot-to-voter

integrity

vote recording

correctness

ballot

correctness

ballot-to-poll

integrity

design

ballots

mark or

enter votes

present

ballots

distribute

ballots

count

votes

collect

votes

tally

subtotals

transmit

subtotals

C O R R E C T B A L L O T C A S T A S I N T E N D E D C O U N T E D A S C A S T

vote-to-count

integrity

cast

votes

Figure 3.6. Assurance chart for a DRE-based election with published ballot definition and

published, anonymous vote records.

In the ballot distribution step, voters have to assume that

election personnel have properly distributed the ballot

definitions and loaded them into the machines; they have no

way to check this for themselves. And in the ballot presentation

and vote recording steps, voters still have to trust the software

in the DRE machine.

Practical example. Here’s one way that an election with

computerized voting but minimal software verification could be

carried out in practice.

The software for the voting computer would be written to

run on a free computing platform, and finalized and published

far in advance of the election so that everyone has time to

inspect it and test it. The ballot definition files for the election

would be published on government websites, also far enough in

advance that members of the public have time to examine them

Verification 50

Page 64 of 324
Page 65 of 324

before the polls open. Anyone would be able to download a

ballot definition and run the voting computer software on their

own computer to see exactly what will be shown to voters on

election day. This provides a chance to detect omitted races,

misspelled candidate names, layout errors, and other ballot

errors. Thus, the published ballot definition file serves a similar

purpose to the paper sample ballot typically mailed to voters

before an election.

When a polling place stops accepting new votes at the end

of the day, each machine should contain a vote file containing

all of its anonymously recorded votes. At this point, every

machine would print out a cryptographic hash of its vote file;

observers can copy down (or photograph) the hashes. A

cryptographic hash is a number derived from the contents of a

file in such a way that it is easy to calculate the hash for a given

file, but difficult to produce a different file that yields the same

hash. Publishing the hash makes a public commitment to the

contents of the file. (The reason for using a hash is that it is less

cumbersome than printing out the entire vote file, but it serves

the same purpose.)

The anonymous vote files from every machine would then

be published online for all to see after the election. Anyone can

calculate the hashes of these files and compare them to the

hashes that were printed on election night, to verify that the

files are authentic and unaltered. And anyone can count the

votes in these files to confirm that the tallying is performed

correctly.

The consequence is that neither the ballot layout software

nor the vote tallying software would need to be verified. The

published ballot definitions, voting computer software, and

anonymous vote records would be sufficient to allow members

of the public to independently check the accuracy of the

election outcome.

Verification 51

Page 65 of 324
Page 66 of 324

What other alternatives for verification are

possible?

Electronic ballot markers and printers. An electronic ballot

marker (EBM) is a computer that marks a paper ballot [80, 81].

The voter inserts a paper ballot and makes selections on the

computer, and the EBM prints marks onto the ballot in the

appropriate positions. An electronic ballot printer (EBP) is a

computer that prints out a marked paper ballot. No ballot is

inserted; the voter makes selections on the computer, and the

EBP prints out a fresh paper ballot that indicates the voter’s

choices. In both cases, the voter then deposits the paper ballot

into a ballot box as usual.

EBMs and EBPs occupy a middle ground between optical

scan systems and DRE systems. They provide the flexibility of a

computerized user interface for voting, together with a durable

paper record that can be recounted later. Like a DRE machine,

an EBM or EBP relies on a ballot definition file to describe the

choices to present to the voter, and the proper recording of the

voter’s choices depends on the software running in the EBM or

EBP. But the voter now has the option of checking the printed

ballot before casting it, instead of having to trust this software.

And unlike the printed VVPAT produced by a DRE, this printed

ballot is always counted, so the voter’s check is more effective.

counting

correctness

count-to-tally

integrity

tallying

correctness

ballot-to-voter

integrity

vote recording

correctness

ballot

correctness

ballot-to-poll

integrity

design

ballots

mark or

enter votes

present

ballots

distribute

ballots

count

votes

collect

votes

tally

subtotals

transmit

subtotals

C O R R E C T B A L L O T C A S T A S I N T E N D E D C O U N T E D A S C A S T

vote-to-count

integrity

cast

votes

EBM/EBP with

precinct

optical scan

EBM/EBP with

central

optical scan

individual voters check paper ballots election administrators recount ballots

personnel

personnel EBM/EBP

EMS

ballot box

in public view

results posted

at each

precinct

subtotals and

totals posted

online

scanner

personnel personnel

ballot box

in public view EMS

EMS

scanner

Figure 3.7. Assurance chart for an election with electronically marked or printed, optically

scanned ballots.

Verification 52

Page 66 of 324
Page 67 of 324

The corresponding assurance chart, in Figure 3.7, has a left half

similar to that of a DRE system, and a right half similar to that

of an optical scan system.

End-to-end cryptographic voting. There are several proposed

voting systems that provide end-to-end cryptographic methods

for letting voters verify the election. “End-to-end” refers to the

ability of any individual voter to check that his or her ballot

survived from one end of the process straight through to the

other—from casting to the final result—without special access

from election officials.

Recall that earlier in this chapter, I described two possible

kinds of publishable records—anonymous vote-revealing

records, and identifiable but non-vote-revealing records.

End-to-end cryptographic schemes publish records of the

second kind as well as the first kind. Examples of these

schemes are Punchscan [26], Scratch & Vote [1], Prêt-à-Voter [13],

and VoteHere [54]. What they all have in common is that they

publish some information about each voter’s ballot: enough to

let the voter partially check the recorded ballot, but not enough

to reveal an actual vote so a voter can sell it. That is, indirect

result verification is used to ensure the integrity of individual

ballots. The partial records are set up in such a way that, with

enough voters checking this partial information, the likelihood

of an incorrectly posted ballot is nearly zero.

In addition to the partial ballots, actual vote records are

separately posted—but these votes have been shuffled so they

cannot be associated with particular voters. Anyone can count

the posted votes to check the tally. The shuffling is performed

using a system called a “mix net,” in which multiple parties

participate in the shuffling; no single party learns the total

shuffling order, and thus voter privacy is protected.

In these end-to-end cryptographic schemes, the election

authorities keep some secret information that enables them to

process the ballots into verifiable totals, and the ballots contain

serial numbers or cryptographic information as well. In all of

these schemes, there is a pre-election audit procedure that lets

Verification 53

Page 67 of 324
Page 68 of 324

voters ensure that this information is consistent and properly

formed. After the election, voters can also audit the shuffling

procedure to confirm that the posted partial ballots correspond

to the posted anonymous vote records, and thus to the tally.

The same mathematical techniques can be applied to votes

cast in any fashion (by hand-marked paper, by machine-marked

paper, or directly by machine). When hand-marked paper is

used, the election can completely escape dependence on

software. Figure 3.8 summarizes how assurance is provided in

this category of systems.

counting

correctness

count-to-tally

integrity

tallying

correctness

ballot-to-voter

integrity

vote recording

correctness

ballot

correctness

ballot-to-poll

integrity

design

ballots

mark or

enter votes

present

ballots

distribute

ballots

count

votes

collect

votes

tally

subtotals

transmit

subtotals

C O R R E C T B A L L O T C A S T A S I N T E N D E D C O U N T E D A S C A S T

vote-to-count

integrity

cast

votes

hand-marked

ballot with

end-to-end

verification

EBM/EBP with

end-to-end

verification

DRE with

end-to-end

verification

individual voters check paper ballots

individual voters check receipts

pre-election

public audit

pre-election

public audit

paper

voters’ receipts;

(partial or encrypted)

ballots posted online

post-election

public audit

anonymous vote records

posted online

pre-election

public audit

EMS

EMS

DRE

EBM/EBP

personnel

personnel

personnel

Figure 3.8. Assurance chart for elections with end-to-end cryptographic verification.

Non-cryptographic end-to-end schemes. Of special note are

ThreeBallot, VAV, and Twin [67], which provide end-to-end

verification without cryptography. These schemes publish all

the cast ballots, which anyone can recount to verify the tally. In

ThreeBallot and VAV, only some of the posted items are

identifiable. Each voter’s ballot is split into three parts; although

all the parts are posted, the voter gets a receipt for only one

part—and a single part isn’t enough to reveal how they voted.

In Twin, each voter gets a receipt for someone else’s ballot.

Thus, while the posted records can be matched with receipts,

they can’t be identified as belonging to any particular voter. The

Verification 54

Page 68 of 324
Page 69 of 324

assurance chart for all these schemes is similar to Figure 3.8,

except there is no need for a post-election cryptographic audit

because no encryption or shuffling has taken place.

Comparing voting systems. Figure 3.9 summarizes several

types of voting systems on a single chart for comparison.

For conventional paper-based systems, shown at the top,

any method of marking ballots (by hand, by EBM, or by EBP) can

be combined with any method of counting ballots (by hand

count, by precinct optical scan, or by central optical scan). Next

come the conventional electronic systems, based on DREs; then

the end-to-end cryptographic systems. Finally, at the bottom is

the DRE with its ballot definition and results published, as well

as a variant of the same scheme using an EBM or EBP instead.

The systems least dependent on software (all other concerns

aside) are the hand-marked, hand-counted paper ballots and the

hand-marked ballots with cryptographic verification.

If one chooses to exclude the systems with hand-marked

ballots (shaded in grey) from consideration, due to the potential

usability,
accessibility, and accuracy advantages of computer- based vote entry,
then the bottom two options in the “public- ballot electronic” category
are the least dependent on software.

A system based on a DRE with a published ballot definition and

published vote records will use the least amount of critical

software, but also requires voters to place great trust in that

software. A system based on an EBP with a published ballot

definition will be dependent on the optical scanner’s software

as well as the EBP software, but both software-dependent steps

are subject to paper-based checks. The choice between these

two options would depend on one’s confidence in the ability to

verify DRE software and one’s estimate of the likelihood that

significant errors will be caught by observant voters and

recounts.

All of the systems that involve entry of votes using any kind

of voting computer—DRE, EBM, or EBP—could stand to benefit

from easier verification of the software in that computer. This

is where we will turn our attention in the next chapter.

Verification 55

Page 69 of 324
Page 70 of 324

counting

correctness

count-to-tally

integrity

tallying

correctness

ballot-to-voter

integrity

vote recording

correctness

ballot

correctness

ballot-to-poll

integrity

design

ballots

mark or

enter votes

present

ballots

distribute

ballots

count

votes

collect

votes

tally

subtotals

transmit

subtotals

C O R R E C T B A L L O T C A S T A S I N T E N D E D C O U N T E D A S C A S T

vote-to-count

integrity

cast

votes

PUBLIC-BALLOT

ELECTRONIC

electronic

ballot printer

published

ballot

definition

anonymous vote

records posted

at each precinct

published

ballot

definition

direct

recording

electronic

anonymous vote records posted online

ballot box in

public view

counts posted

at each

precinct

subtotals and

totals posted

online

individual voters check paper ballots election administrators recount ballots

DRE

personnel

personnel

EBP scanner

hand-marked

paper ballot

END-TO-END

CRYPTOGRAPHIC

electronic

ballot marker

or printer

direct

recording

electronic

pre-election

public audit

pre-election

public audit

paper

voters’ receipts;

(partial or encrypted)

ballots posted online

post-election

public audit

anonymous vote records

posted online

pre-election

public audit

individual voters check paper ballots

individual voters check receipts

EMS

EMS

DRE

EBM/EBP

personnel

personnel

personnel

personnel

personnel

personnel personnel

direct

recording

electronic

precinct

reporting

central

reporting

counts posted

at each

precinct

subtotals and

totals posted

online

CONVENTIONAL

ELECTRONIC

individual voters check VVPATs; effective only if recounted election administrators recount VVPATs

DRE

DRE

DRE

DRE

EMS

EMS

EMS

EMS

hand-marked

paper ballot

scanner

personnel personnel

personnel

EBM/EBP

published sample ballots paper

electronic

ballot marker

or printer

ballot box in

public view

ballot box in

public view

multiple

counters in

public view counts posted

at each

precinct

subtotals and

totals posted

online

precinct

hand

counting

precinct

optical

scanning

central

optical

scanning

individual voters check paper ballots

CONVENTIONAL

PAPER-BASED

election administrators recount ballots

personnel

EMS

EMS

EMS

scanner

Figure 3.9. Summary of assurance mechanisms for various types of voting systems.

Verification 56

Page 70 of 324
Page 71 of 324

4 Prerendering

How can we make vote-entry software easier to verify? 58

What is prerendering? 59

Why put the entire user interface in the ballot definition? 60

How would a voting computer use a prerendered ballot? 62

What is gained by publishing the ballot definition? 63

What are the advantages of prerendering? 65

How can prerendering be applied to other software? 66

How are votes recorded anonymously? 67

57

Page 71 of 324
Page 72 of 324

How can we make vote-entry software easier

to verify?

For vote-entry software to be easier to verify, we have to make it

simpler. The vote-entry software can be simpler if we give it

less work to do and shift its responsibilities elsewhere: either

earlier, to the preparation stage, or later, to the counting stage.

Shifting responsibilities to the preparation stage is a

significant design challenge, but it leads to a dramatic

simplification of the vote-entry software. Most of this chapter is

devoted to prerendering, the technique that makes this

possible. Shifting responsibilities to the counting stage means

that the vote-entry software should recording votes

anonymously with as little processing as possible; this is

comparatively straightforward to do and will be discussed in

the last section of this chapter.

I developed two prototypes of voting machine software to

find out just how small a practical vote-entry program could be.

They are called Ptouch and Pvote, described in Chapters 5 and 7

respectively.

Prerendering 58

Page 72 of 324
Page 73 of 324

What is prerendering?

In a typical voting computer, much of the software code is

responsible for generating the user interface for the voter. This

includes the code for arranging the layout of elements on the

screen, drawing text in a variety of typefaces and languages,

drawing buttons, boxes, icons, and so on. In a voting computer

with audio features, this also includes code for manipulating or

synthesizing sound. (Some voting computers, such as the

Avante Vote-Trakker [11], contain speech synthesis software.)

The user interface is generated in real time—the visual display

and audio are produced (“rendered”) as the voter interacts with

the machine.

Prerendering the ballot. The software in the voting computer

could be considerably simplified by moving all this rendering

work into the preparation stage—prerendering the interface

before election day.1 Both Ptouch and Pvote realize this idea.

Today’s DRE machines use a ballot definition that contains

only essential data about the ballot: the names of the offices,

the names of the candidates running for each office, and so on.

But the ballot definition could be expanded to describe the user

interface as well. For a visual interface, this would include

images of the screen with the layout already performed, buttons

already placed, and text already drawn. For an audio interface,

this would include prerecorded sound clips. Everything

presented to the user would be prepared ahead of time, so that

all the software complexity associated with rendering can be

taken out of the voting computer.

The ballot definition could specify not just appearance but

also behaviour—the locations where images will appear, the

transitions from screen to screen, the user actions that will

trigger these transitions, and so on. This is exactly the case for

both Ptouch and Pvote: the ballot definition is a high-level

description of the entire user interface for voting.

1

It was Steve Bellovin who prompted my line of research by suggesting prerendering for voting machines.

Prerendering 59

Page 73 of 324
Page 74 of 324

Why put the entire user interface in the ballot

definition?

Including a complete description of the user interface in the

ballot definition, rather than just a set of images, yields several

benefits.

Less code in the voting computer. Some of the software in a

typical voting computer handles user interface logic. User

interface logic tells the computer how to respond to any given

user action—for example, to select a candidate when you touch

the candidate’s name, or to go to the next page when you press

a “Next Page” button. Putting a description of this logic in the

ballot definition means the voting computer needs less code for

interface logic, just as putting images in the ballot definition

means less code for rendering the display.

More thorough public review. If the ballot definition

completely describes the user interface, one can review the

behaviour of the user interface by examining it. The user

interface becomes a separately verifiable artifact.

Compared to the vote-entry software, the ballot definition is

more likely to be accessible for inspection by the public, for two

reasons. First, there may be fewer legal and political barriers to

publishing the ballot definition than the software source code.

Second, the ballot definition is a high-level description, which

makes it easier to examine than a computer program written in

a general-purpose programming language. The result is that

more of the voting process is reviewable by non-programmers:

both the appearance and the behaviour of the ballot can be

inspected without looking at source code for the voting

computer.

A more complete public record. The ballot definition file, like

any other election information, should be archived and should

become part of the public record of the election. It contributes

Prerendering 60

Page 74 of 324
Page 75 of 324

to making the election a reproducible experiment. In the event

of a later investigation, a ballot definition with a complete

description of the interface makes it easier to reconstruct the

voter experience. Such reconstruction could help investigators

evaluate hypotheses about sources of bias or voter error, for

example.

Better division of expertise. Separating the user interface

definition from the voting machine software mitigates the

conflict between accessibility (which requires design flexibility)

and security (which requires software simplicity). Instead of

playing tug-of-war over the vote-entry software, experts can

work independently on what they do best—design can be left to

designers, and software security to security experts. Experts in

human factors, accessibility, and graphic design can create

better ballots themselves, without relying on programmers to

implement their designs in code, and without requiring

co-operation from voting machine companies. Programmers of

the vote-entry software can focus on making the software

secure and reliable without affecting the user interface.

Software stability. Regulations that govern ballots can change

from election to election and differ from jurisdiction to

jurisdiction. Different jurisdictions may prefer to present their

ballots differently. Designs will change as we discover better

ways to create fair and understandable ballots.

Putting the user interface description in the ballot definition

provides the flexibility to handle future changes without having

to change the vote-entry software. This means more resources

can be devoted toward ensuring that the vote-entry software is

correct and secure. It’s difficult to complete a rigourous

certification process when voting software changes as

frequently as it does today, with new versions released every

year or two.

Prerendering 61

Page 75 of 324
Page 76 of 324

How would a voting computer use a

prerendered ballot?

In a prerendered-ballot system, the ballot definition is like a

small program—a program in an extremely simple language,

with limited capabilities. All it can do is present a sequence of

images and/or audio clips and accept the user’s selections.

The voting computer simply carries out the program. Thus,

the vote-entry software is a virtual machine (VM): it abstracts

away the details of the computer hardware and its input and

output devices. The job of the VM is to respond to user input by

displaying images or playing sound clips as prescribed by the

ballot definition, keep track of the user’s selections, and record

the user’s selections anonymously.

Implementing the VM for a variety of different hardware

platforms would enable all of them to use the same formats for

ballot definitions and recorded votes—just as other VMs like

the Python VM and the Java VM allow a single program to run

on different kinds of computers. There can even be multiple

implementations of the VM written separately by different

people, and as long as they follow a standard ballot definition

format, the same ballot definition will work on all of them. For

example, there are multiple independently-written Python VMs

out there, but most Python programs will run unchanged on all

of them.

My hypothesis was that the implementation of the voting

VM can be made considerably smaller, simpler, and easier to

verify than the software in today’s DRE machines. This

dissertation presents Ptouch and Pvote as confirmation of this

hypothesis.

Prerendering 62

Page 76 of 324
Page 77 of 324

What is gained by publishing the ballot

definition?

The published ballot definition serves the role of an electronic

sample ballot, analogous to a sample ballot in a paper election.

Standardizing the file format of the ballot definition and

implementing the VM for personal computers enables voters to

try out the ballot in advance with exactly the same user

interface that they will see at the polls. This could be used for

training voters as well as testing the ballot.

Verifying the accuracy and fairness of the user interface is

critical, because the user interface of any voting machine is in a

position to mislead or otherwise influence voters and hence

bias the collected votes. The published electronic sample ballot

gives the election a verifiable user interface, which can be

examined by all voters, members of the disabled community,

usability experts, and accessibility experts. Anyone could

conduct their own user tests of ballots, independent of the

voting machine company or the election authority.

Today, less commonly used ballot designs, such as ballots

for voters with disabilities or ballots in alternate languages,

receive significantly less attention, as only the election office

can compose and check electronic ballots. A rather alarming

example of this lack of attention occurred at the June 2006

primary election in Santa Clara County, where pollworkers

discovered that there was no “continue” button on one of the

Chinese screens [40], which made it impossible to cast the

Chinese version of the ballot. A published ballot definition

would have increased the chances of catching such an error

before the election. Publishing an electronic sample ballot helps

to level the playing field for members of minority communities

and empowers them to play a role in ensuring that the

electronic ballot serves them fairly.

Visualizing the ballot definition. Running the ballot definition

in a live test might show that the ballot appears to behave

Prerendering 63

Page 77 of 324
Page 78 of 324

correctly, but it wouldn’t be a sure way to test the complete

behaviour of the ballot. It would be infeasible to test every

possible sequence of inputs. To be certain that the ballot

contains no hidden behaviour or incorrect behaviour triggered

by rare combinations of inputs, one would have to examine the

ballot definition file itself.

In the future, a software tool could be developed to facilitate

such examination. The tool would transform an electronic

sample ballot into a human-readable format that completely

describes the user interface. One possible visualization would

be a flowchart-like diagram that illustrates the steps of the user

interface with the prerendered screen images. Anyone would be

able to download the electronic sample ballot, use the program

to produce a diagram, print it out, and examine it. This would

make possible a new level of assurance: the electronic voting UI

could be verified even by non-programmers. The hardcopy of

the UI visualization could also be archived in the records of the

election. The visualization alone should be sufficient to

reconstruct the interface that voters used at the polls.

Prerendering 64

Page 78 of 324
Page 79 of 324

What are the advantages of prerendering?

In summary, prerendering the user interface (UI) yields these

benefits:

• The critical software is smaller and simpler, facilitating its

verification.

• The critical software changes less frequently, so each release

can be tested and audited more thoroughly.

• The user interface can be designed by designers, not

programmers.

• The conflict between human factors and security is

mitigated; usability and accessibility can be improved

without affecting software security.

• The conflict between transparency and proprietary interests

is mitigated because less code has to be disclosed in order

to evaluate the security of the voting machine.

• The user interface is subject to broader public review, since

it can be separately published and tested by anyone (not

just those who have election equipment).

Standardizing the ballot definition format also yields benefits in

interoperability, in addition to the benefits mentioned so far in

this chapter.2 A standardized format for describing the user

interface allows election officials to mix and match components

from different vendors, leading to increased purchasing power

and better product quality, and enabling independently

manufactured components to be tested against each other.

2Thanks to David Jefferson for bringing the importance of interoperability to my attention.

Prerendering 65

Page 79 of 324
Page 80 of 324

How can prerendering be applied to other

software?

The prerendering technique can be applied to any kind of

software to make verification easier. Applying this technique

consists of the following steps:

1. Define a user interface specification language with a set of

features that are limited and chosen to suit the intended

purpose.

2. Implement a virtual machine that interprets the

specification language and presents the user interface it

describes.

3. Create user interface designs using the specification

language, and publish them for inspection.

Particularly suitable application areas for this technique are

those in which a general-purpose computer is used for a

specialized purpose, the user interface (UI) is likely to change

periodically, and high reliability must be maintained despite

changes in the UI. Aside from voting machines, other examples

include bank machines, vending machines, and airport check-in

kiosks. The user interaction required to operate these kinds of

machines is usually limited to a small set of actions, such as

selecting from menus and typing in numbers or short pieces of

text. This makes it possible to design a simple language for

specifying the UI.

In each case, the transaction-handling software can be

written once and reviewed thoroughly to ensure its correctness

and security. In a voting machine, the transaction-handling

software is the part that records the votes; in a bank machine,

for instance, this would be the software that communicates

transactions to the bank and dispenses cash. The UI can then be

easily changed without affecting that critical software—for

example, when a bank wants to offer new functionality, a

vending machine updates its list of available products, or an

airline wants to change the look of its brand.

Prerendering 66

Page 80 of 324
Page 81 of 324

How are votes recorded anonymously?

In the correctness goals listed in Chapter 2, I identified two

components of upholding the secret ballot:

• Voter privacy: The processing of voter choices does not

expose how any particular voter voted.

• Coercion prevention: Voters are not provided any way to

present plausible evidence of how they voted to an external

party.

Voter privacy. To protect voter privacy, ballots should be

stored without any identifying information. The ballots should

also be stored in an order independent of the order in which

they were cast, so that someone who observes the sequence of

voters entering the polling place cannot correlate the sequence

of voters with the sequence of stored ballots.

One common method of doing this is to store the vote

records in random order, effectively shuffling them as ballots

would be shuffled in a real ballot box. Voter privacy depends on

the quality of the randomization performed; if the shuffling is

predictable, then voter privacy can be compromised.

Unfortunately, it’s hard to make a computer behave in a truly

random way. In fact, independent source code analysis of two

leading voting machines (Diebold [12] and Sequoia [7])

discovered flaws in the randomization schemes used for just

this purpose. Even worse, randomness is not a quality that can

be practically tested, because it is impossible to prove that any

behaviour really is random. For example, given a list of

numbers, there is simply no way to tell whether the numbers

were chosen at random.

A simpler way to avoid revealing the casting order is to sort

the vote records according to their contents. (Naor and

Teague [49] observed that sorting a list of elements gives them a

history-independent representation.) It doesn’t matter how the

records are placed in order, as long as it’s consistent. For

example, if there is just one contest with candidates Andrew,

Prerendering 67

Page 81 of 324
Page 82 of 324

Barbara, and Chris, you could sort the ballots alphabetically by

which candidate was selected. Regardless of the casting order,

the sorted order will always be the same. Because this method

is simple to program and completely obscures the casting order

in a verifiable way, this is the method that Ptouch uses.

Coercion prevention. To prevent coercion, voters must not be

allowed to put identifying marks on their ballots. In one

possible coercion scenario, the coercing party gives each voter a

unique secret phrase to enter as a write-in candidate. For

example, suppose Ted tells Alice to vote for Carol for President

with “moldy explosion” as write-in for Dogcatcher, and also tells

Bob to vote for Carol for President with “wrinkled tourbus” as

write-in for Dogcatcher. Then the recorded ballots are no longer

publishable because they would enable Ted to confirm, and thus

buy, Alice’s and Bob’s votes.

One way to resolve this problem is to store each of the

voter’s selections as a separate item instead of the entire ballot

as a unit. There has been precedent for such a scheme in some

paper elections in Switzerland [15], where the ballots are

perforated so that they can be separated into strips, one for

each contest, before being counted. If an individual voter’s

selections cannot be associated with each other, then the voter

cannot use a specially marked selection to identify the rest of

their ballot.

Storing the ballot in parts might not satisfy election

standards that are based around the handling of complete

ballot images. For example, the 2005 Voluntary Voting System

Guidelines in the United States [80] require DRE machines to

“record and retain redundant copies of the original ballot

image,” where a ballot image is “an electronic record of all votes

cast by the voter, including undervotes” (Section 2.1.2). One way

to satisfy this requirement would be to store ballots in both

ways: as complete images for non-public auditing, and in

separated form for publishing.

Prerendering 68

Page 82 of 324
Page 83 of 324

5 Ptouch

the touchscreen prototype

Overview 70

Ballot definition format 71

Software design 80

Implementation 83

Evaluation 88

Shortcomings 93

69

Page 83 of 324
Page 84 of 324

Overview

This chapter describes Ptouch [90], the first prototype

vote-entry program I developed, which is designed for a

touchscreen voting machine. It provides only a visual interface;

the goal was to handle the most common types of elections for

fully sighted voters. (Pvote, the second prototype, adds support

for most voters with disabilities and for less common types of

contests and ballots, at the cost of increased software

complexity.)

Ptouch handles contests in which voters can choose one or

multiple options (up to a fixed limit) from a list of options, and

also allows voters to vote for write-in candidates. This is

sufficient to indicate anything that could be expressed by

selecting bubbles or arrows on an optically scanned ballot.

The format of the ballot definition forms the core of the

design, since it dictates how ballots are designed, displayed,

and voted upon. Thus, I’ll start by describing the ballot

definition format in detail, then proceed to the software itself,

which is a VM for displaying ballots in this format.

Ptouch 70

Page 84 of 324
Page 85 of 324

Ballot definition format

The ballot definition is divided into two parts—the ballot model

and the image library—corresponding to the medium- independent and medium-specific information about the voting

user interface (see below). The ballot model specifies the

interaction sequence, while the image library specifies the

appearance.

Separating the ballot model from the image library reduces

the cost and effort of validating changes to the ballot. Replacing

the image library is sufficient to adjust the layout or visual style

of the ballot, change the display resolution, or translate the

interface into another language, all without altering the ballot

model. For these kinds of changes, only the new image library

needs to be validated, not the entire ballot definition.

Comparing two image libraries (for example, to check a

language translation) is easier than checking the correctness of

a ballot model.

ballot model

contest page

int max_sels

int max_chars

subpage

target

int action

int page_i

int contest_i

subtarget

int action option

int contest_i

write-in

int contest_i

review

int contest_i

image library

int width

int height

layout

background

sprite

int width

int height

byte[] pixels

subtarget

int left

int top

int width

int height

int width

int height

byte[] pixels

Figure 5.1. The Ptouch ballot definition data structure. Stacked boxes represent arrays.

Ptouch 71

Page 85 of 324
Page 86 of 324

ballot model

page

contest

int max_sels

int max_chars

subpage

target

int action

int page_i

int contest_i

subtarget

int action

option

int contest_i

write-in

int contest_i

review

int contest_i

Ballot model. The ballot model consists of an array of contests,

an array of pages, and an array of subpages.

A contest is a question being put to the voters, such as a

referendum on an issue or the election of a candidate (or

several candidates) to a position. Each contest has an integer

parameter max sels specifying the maximum number of

selections that a voter may choose (usually 1, but possibly more

in contests that allow choosing multiple candidates) and an

integer parameter max chars specifying the maximum number

of characters that can be entered for a write-in option.

The page is the basic unit of presentation. For example, a single

page might display some instructions, a description of a

contest, or a list of available options. At any given moment, one

of the pages is the current page. The user interface begins on

the first page in the array of pages. When it transitions to the

last page, the ballot is cast with the user’s current selections.

Associated with each page are arrays of targets, options,

reviews, and write-ins, and any of these can be activated by the

user. In a touchscreen interface, these elements correspond to

rectangular areas of the screen that are activated by touches.

• A target is a user-triggered transition to another page. In a

touchscreen interface, a target appears as a button that the

user can press. Optionally, a target can also trigger one of

the following actions:

• Clear all the selections in a particular contest.

• Clear all the selections in the entire ballot.

• An option is an option that the user can choose in a

particular contest. For example, a contest for President

would have one option for each of the eligible candidates; a

referendum contest would typically have one option for

“Yes” and one option for “No.” Each option belongs to

exactly one page, though there may be options on different

pages that belong to the same contest—for example, if the

contest has too many options to fit on one page. Activating

an option toggles it between a selected state and an

Ptouch 72

Page 86 of 324
Page 87 of 324

option (slot 4)

background image

write-in (slot 5)

write-in (slot 27)

write-in characters (slots 6–26)

write-in characters (slots 28–48)

target
(slot 0) target (slot 1) target (slot 2) target (slot 3) Figure 5.2. A
selection page with two options currently selected, and its layout.

Ptouch 73

Page 87 of 324
Page 88 of 324

unselected state. In a touchscreen interface, an option

appears as a labelled box that changes appearance to show

whether it is selected.

• A write-in is a write-in option. It can be in a selected or

unselected state, just like a regular option; when selected, it

also has an associated list of entered characters. When a

write-in is activated, it triggers a jump to a subpage where

the voter can type in the text of the write-in selection.

• A review displays the current selections in a particular

contest. Activating a review has no effect, though targets

can overlap reviews. In a touchscreen interface, a review

appears as a screen area (or multiple screen areas) filled in

with the option (or options) currently selected in its

associated contest. For example, a confirmation page could

summarize the voter’s selections by presenting reviews for

several contests.

A subpage is a temporary page for entering a write-in. A

subpage is like a subroutine call, but only one level deep—the

only possible transition is back to the current page. In a

touchscreen interface, a subpage provides a text field and an

on-screen keyboard for the voter to type in the name of a

write-in candidate. The number of subpages is determined by

the contests: there is one subpage for each contest that

contains a write-in. A subpage contains an array of subtargets.

• A subtarget triggers one of these actions:

• APPEND a particular character to the text field.

• APPEND2: if the text field is not empty, then append a

particular character to the text field.

• DELETE the last character.

• CLEAR all the characters.

• ACCEPT the write-in text and return.

• CANCEL the write-in text and return.

If the write-in text already contains max chars characters,

activating an APPEND or APPEND2 subtarget has no effect. If the

write-in text is empty, activating an APPEND2 or ACCEPT

subtarget has no effect. If the subpage is exited by an ACCEPT

Ptouch 74

Page 88 of 324
Page 89 of 324

background image

CANCEL subtarget (slot 2) ACCEPT subtarget (slot 3)

CLEAR

subtarget (slot 0) write-in characters (slots 33–53)

APPEND subtargets (slots 4–31)

DELETE

subtarget (slot 1)

APPEND2

subtarget (slot 32)

character sprites cursor sprite

Figure 5.3. A write-in subpage with a few characters entered, and its layout.

Ptouch 75

Page 89 of 324
Page 90 of 324

subtarget, the write-in option becomes selected and acquires

the contents of the text field. If the subpage is exited by a

CANCEL subtarget, the write-in option becomes unselected and

empty. Thus, it is not possible for a write-in to contain text yet

remain unselected.

Because an ACCEPT subtarget only works when there is

write-in text present, a write-in cannot be simultaneously empty

and selected. The purpose of APPEND2 is to prevent a write-in

from appearing empty and yet being selected. For example, if

the keyboard’s “space” button is an APPEND2 subtarget, then the

write-in text cannot consist of only spaces.

image library

int width

int height

layout

background

sprite

int width

int height

byte[] pixels

subtarget

int left

int top

int width

int height

int width

int height

byte[] pixels

Image library. The image library consists of an array of layouts

and an array of sprites, and also specifies the screen dimensions

in pixels.

A layout consists of a background image and an array of

slots. Each page or subpage corresponds to exactly one layout,

and vice versa. A slot is a rectangular region of the screen where

a sprite can be pasted or where a touch will have an effect.

A sprite is an image smaller than the screen size that is

meant to be pasted into a slot on a background image. The

array of sprites contains images of options and write-ins in

their selected states, images of characters that for use in a

write-in, and the image of the text entry cursor shown while

entering a write-in. To keep the DRE software simple, all images

are stored uncompressed with 3 bytes per pixel.

In a layout corresponding to a page, the slots correspond to

the targets, options, write-ins, and reviews for that page. Each

target has one slot, specifying the touch region that activates

the target; the image of the target button (or other widget) is

part of the background image. Each option has one slot, which

specifies both its touch region and also the position for pasting

the sprite showing the option in its selected state. The image of

the unselected option is part of the background image, and

when the option is selected, the sprite is pasted over it. Each

write-in also has a sprite for its selected state, which would

typically look like a selected option but with space provided for

Ptouch 76

Page 90 of 324
Page 91 of 324

the write-in text. A write-in has one slot for its touch region and

for pasting the selected write-in sprite, and max chars more

slots specifying the positions where the entered characters are

to be pasted. Each review has max sels groups of slots (for

displaying up to max sels options selected by the voter). In

each group of slots, there is one slot for pasting the selected

option sprite and max chars slots for displaying the write-in

text if a write-in is selected.

In the layout corresponding to a subpage, the slots

correspond to the subtargets and character slots for the page.

Each subtarget has one slot, the touch region that activates it.

Additionally there are max chars slots specifying the positions

where the entered characters are to be pasted.

page

target

int action

int page_i

int contest_i

option

int contest_i

write-in

int contest_i

review

int contest_i

Referential integrity. To simplify verification, the ballot format

minimizes its use of pointers and other kinds of references.

There are only two kinds of references in these data structures:

• Targets refer to the page they transition to. This is

necessary to allow for multiple outgoing and incoming

transitions to and from each page.

• Targets, options, write-ins, and reviews refer to contests.

This is necessary to allow options, write-ins, and reviews to

be freely arranged among the pages, so there can be

multiple contests on a single page or multiple pages for a

single contest.

These references are stored as integer array indices in the ballot

definition because it is simpler to verify that an index is in range

than to verify that a pointer is valid. All other associations

between elements of the ballot definition are implied through

structural correspondence. For instance, if there are p pages

and q subpages, then there are exactly p + q layouts in the

layout array, where the first p are for pages and the last q are

for subpages. This use of corresponding array indices avoids

the need for pages or layouts to contain pointers to each other.

Similarly, the meanings of the slots are determined by their

order in the slot array. The slot array for a page contains, in

Ptouch 77

Page 91 of 324
Page 92 of 324

order, one slot for each target, then one slot for each option,

then 1 + max chars slots for each write-in, then

max sels × (1 + max chars) slots for each review. The slot

array for a subpage contains one slot for each subtarget

followed by max chars slots for the entered text.

The sprite array contains one sprite for each option and

write-in, in the order they appear among the pages, followed by,

for each subpage, a character sprite for each APPEND or APPEND2

subtarget and one cursor image sprite.

Well-formedness and validity. There are many possible ways in

which one might consider a particular ballot definition to be

acceptable; I’ll point out two important ones here. I’ll use the

term well-formed to mean that a ballot definition satisfies the

assumptions made by the virtual machine implementation. I’ll

use the term valid to mean that a ballot definition represents an

acceptable user interface for voting according to the standards

of a given jursidiction.

Because the ballot definition must be well-formed in order for

the VM to read it and operate safely and correctly, a verifier in

the voting machine checks for well-formedness before accepting

a ballot definition. To be well-formed, a ballot definition must

meet the following conditions:

• There is at least one page and one contest.

• There is one subpage for each contest that has a write-in.

• There is one layout for each page or subpage.

• Every index referring to a page or contest is in bounds for

its respective array.

• Every target or subtarget has a valid action.

• Every layout contains the correct number of slots to match

its page or subpage, as described in the preceding section.

• All background images match the screen size.

• All slots fit entirely within the screen bounds.

• All option slots, write-in slots, review slots, option sprites,

and write-in sprites associated with the same contest have

the same size.

Ptouch 78

Page 92 of 324
Page 93 of 324

• All character slots, character sprites, and cursor sprites

associated with the same contest have the same size.

• The image library contains the correct number of sprites to

match the ballot model, as described in the preceding

section.

Validity, on the other hand, does not have a single definition

because it depends on election regulations that can vary by

locality. The following are some examples of conditions for

validity that are likely to be common, as they prevent some

obvious pitfalls and potential sources of confusion in the user

interface:

• Target, option, write-in, and review slots do not overlap each

other, except that target slots may overlap review slots.

• Character slots do not overlap each other and fit inside their

corresponding write-in or review slot.

• Character slots in write-ins and reviews are arranged in the

same relative positions as the character slots on the

corresponding subpages.

• The user is never trapped in a subgraph of pages, except

after arriving on the last page.

• The last page has no target, option, write-in, or review slots.

• There exists some transition path from the first page to

every other page.

• Every subpage contains an ACCEPT subtarget, a CANCEL

subtarget, and at least one APPEND subtarget.

• Every path that leads to the last page passes through pages

that contain reviews for all the contests (thus ensuring that

the voter has the opportunity to review all selections before

casting the ballot).

Ballot definition files would be produced by ballot design

software, such as an interactive tool for laying out and

specifying the appearance of a ballot. Such a tool could offer

guidance on the usability or accessibility of the design, enforce

validity conditions appropriate for a particular jurisdiction, or

give notification when validity conditions are not met.

Ptouch 79

Page 93 of 324
Page 94 of 324

Software design

The Ptouch virtual machine (VM) is composed of four software

modules: the navigator, the video driver, the event loop, and the

vote recorder (see the figure below). This separation does not in

itself prevent attacks, as the corruption of any module still has

the potential to corrupt the outcome of the election. However,

separating the software into modules is a design choice

intended to facilitate verification. It is easier to audit and test

each module separately when there are limited responsibilities

for each module and limited communication between modules.

The navigator walks through the pages in the ballot model,

always starting on the first page. It keeps track of the current

page, the user’s current selections, the current subpage (if any),

and the entered characters on the current subpage (if any). The

navigator responds to just one message:

• When told to activate a slot, the navigator takes the action

for the corresponding target or subtarget, toggles the

corresponding option, or transitions to the subpage for the

corresponding write-in.

The navigator issues three kinds of messages to other modules:

• It tells the video driver to goto a layout upon transition to a

page or subpage. The message specifies the layout index.

LEGEND

one-way data flow

image library

navigator vote

recorder

video

driver frame buffer

paste(sprite_i, slot_i)

goto(layout_i) write(selections)

touch sensor event loop x, y

locate(x, y) slot_i

activate(slot_i) storage device

ballot

definition

hardware

device

software

module

ballot model

Figure 5.4. Block diagram of the Ptouch VM. The arguments layout i, sprite i, slot i,

x, and y are integers; selections is an array of arrays of lists of integers.

Ptouch 80

Page 94 of 324
Page 95 of 324

• It tells the video driver to paste sprites into slots as

necessary to display options, write-ins, reviews, and write-in

text. The message specifies the sprite index and slot index.

• It tells the vote recorder to write the selections when the

ballot is cast (when transitioning to the last page). The

message contains an array of max sels selections for each

contest. Each selection is a list of integers: for a selected

option this is a single integer, the index of the selected

sprite; for a write-in, this is the index of the selected sprite

followed by the indices of the entered character sprites.

The video driver has only one piece of state: it keeps track of

which layout is the current layout. It interprets the slot index in

a paste command in the context of the current layout. The

video driver handles three kinds of messages:

• When told to goto a layout, the video driver copies the

background image into the frame buffer and remembers the

given layout index.

• When told to paste a sprite into a slot, the video driver

copies the sprite into the frame buffer at the position

specified by the slot.

• When told to locate a given point by its co-ordinates, the

video driver looks through the slots in the current layout

and returns the index of the first slot that contains the

point, or a failure code. (When slots overlap, targets take

precedence because they come first in the slot array.)

LEGEND

one-way data flow

image library

navigator vote

recorder

video

driver frame buffer

paste(sprite_i, slot_i)

goto(layout_i) write(selections)

touch sensor event loop x, y

locate(x, y) slot_i

activate(slot_i) storage device

ballot

definition

hardware

device

software

module

ballot model

Figure 5.4. Block diagram of the Ptouch VM. The arguments layout i, sprite i, slot i,

x, and y are integers; selections is an array of arrays of lists of integers.

Ptouch 81

Page 95 of 324
Page 96 of 324

The event loop receives touch events from the screen’s touch

sensor. The software assumes that when the user touches the

screen, the sensor reports (x, y) coordinates in the same

coordinate space used for displaying images. Upon receiving a

touch event, the event loop asks the video driver to locate the

corresponding slot, then passes the slot number on to the

navigator in an activate message.

The vote recorder records the voter’s selections in non-volatile

storage upon receiving a write message from the navigator.

The votes are recorded using a tamper-evident,

history-independent, subliminal-free storage method. Molnar,

Kohno, Sastry, and Wagner have proposed several schemes with

these properties [48] for storing ballots on a programmable

read-only memory (PROM). Each stored selection includes or

indicates its associated ballot definition so that the meaning of

the selections is apparent from the storage contents.

LEGEND

one-way data flow

image library

navigator vote

recorder

video

driver frame buffer

paste(sprite_i, slot_i)

goto(layout_i) write(selections)

touch sensor event loop x, y

locate(x, y) slot_i

activate(slot_i) storage device

ballot

definition

hardware

device

software

module

ballot model

Figure 5.4. Block diagram of the Ptouch VM. The arguments layout i, sprite i, slot i,

x, and y are integers; selections is an array of arrays of lists of integers.

Ptouch 82

Page 96 of 324
Page 97 of 324

Implementation

Ptouch is implemented in Python [63], and it runs on Linux,

MacOS, or Windows. Ptouch uses Pygame [62], an open-source

multimedia library for Python, to handle graphics and mouse

input. It runs on a commodity PC using the video display and

the mouse to simulate a touchscreen device (a mouse click at a

particular location is interpreted as a screen touch).

Ptouch reads the ballot definition from a file named ballot

and writes vote records to a file named votes. The ballot file

represents read-only media and is opened read-only; the votes

file represents a PROM. Each time the program runs, it casts at

most one ballot, then enters a terminal state.

Ptouch models the procedures that would take place in a

real election as follows. Creating an empty votes file

corresponds to opening the polls at the beginning of election

day with a blank PROM. Restarting the program corresponds to

activating the voting machine for a single voter. I have assumed

that only the pollworker has the ability to restart the machine,

so pollworkers can ensure that each voter only votes once.

Setting the votes file read-only corresponds to closing the polls

and removing the PROM.

The source code for Ptouch is available in Appendix A. The

source code is also available online, together with an example of

a ballot definition file in the Ptouch ballot format, at

http://pvote.org/.

Ballot definition. A separate Python module, not shown in

Figure 5.4, reads the ballot file, verifies all the conditions

necessary to determine that it is well-formed, and deserializes it

to objects in memory. All integers in the file are stored as

4-byte unsigned integers; images are uncompressed with 3

bytes for each pixel (corresponding to the red, green, and blue

components of its colour).

Ptouch does not include any user interface for selecting

which ballot definition to use; instead, it assumes that the

Ptouch 83

Page 97 of 324
Page 98 of 324

appropriate ballot file will be present when the program

starts. Different ballot files can be used for different runs.

Note that the selection of a ballot definition can be divided

into two parts: choices that have to be authorized by the

pollworker (such as choosing which precinct’s ballot to use) and

choices that the voter is allowed to make (such as choosing a

preferred language). The former type of choice can be

implemented by having the pollworker select the ballot file.

The latter type of choice can be implemented either by having

the pollworker select a ballot definition file at the voter’s

request, or by combining multiple ballots into a single ballot

definition. For example, a ballot could support both English and

French by including all the pages for an English ballot and all

the pages for a French ballot, with a starting page to let the user

choose between them.

How the pollworker’s selection would be implemented in

hardware remains an open question. One possibility would be

for the ballot definitions to be stored on individual

write-protected memory cards; to support voting for multiple

precincts, a pollworker would insert the appropriate precinct’s

ballot definition card to activate the voting machine for a single

voting session. Alternatively, all the ballot definitions could be

stored on the machine in advance, and the pollworker would

use some other means to choose one when starting each new

voting session. In either case, Ptouch models this step simply as

having the authorized choice of ballot file be present when

the program starts.

Vote storage. The votes file is used to simulate a PROM, a

solid-state storage device initially filled with 1 bits; writing to a

PROM can change 1 bits to 0 bits, but never the reverse. The

vote recorder writes to the file in a manner consistent with this

property.

Ptouch stores the ballots using a copyover list [48], because

it is history-independent, simple to implement, and does not

depend on a random number generator. A copyover list is a list

of items stored in sorted order; each time items are added to

Ptouch 84

Page 98 of 324
Page 99 of 324

new sorted list

maximum space that could have been used to store all

preceding lists, regardless of order in which votes were cast

4. recording complete:

old sorted list new sorted list

3. erasing old list in progress:

old sorted list new sorted list

2. writing new list in progress:

erased (all zeroes) old sorted list unused (all ones)

1. before recording:

first flag indicates start of valid list of vote records

Figure 5.5. Storing votes in a copyover list. The list is always written in sorted order and

the amount of erased space preceding the list is independent of the size of previous lists,

so that no information is revealed about the order in which votes were cast. On a PROM,

changing a bit from 1 to 0 is an irreversible operation.

the list, a new copy of the entire list is written in sorted order

and the old copy is erased by overwriting it with zeroes.

Because the items are sorted according to their content, the list

does not reveal the order in which the items were added. A

copyover list uses O(n2

) space in the number of items, but

previous analysis [48] shows that only a modest and

inexpensive amount of storage would be required to handle all

the votes that could be expected to be cast on one machine in

one day.

The items in the copyover list are the individual selections

within each contest from all the voters. Each item consists of

the SHA-1 hash [52] of the ballot definition, the integer index of

the contest, and the integer index of the selected option sprite.

For a write-in selection, this is followed by the indices of the

selected character sprites. All integers are stored as 4-byte

unsigned integers. The individual selections are stored as

separate items so that the votes file can be published without

letting voters mark their ballots to prove how they voted, as

explained in Section 4.

Because the items in the list can vary in length, the size of

the list depends on the contents of the selections. If the new list

Ptouch 85

Page 99 of 324
Page 100 of 324

were stored immediately after the old list, the size of the erased

space would reveal something about the size of the old list and

hence about the sequence of votes. (For example, if two

selections are stored, one with a short write-in and one with a

long write-in, then the size of the erased space reveals which

one was cast first. Casting the long one first would yield a

larger erased space than if they were cast in the opposite order.)

Therefore, one should always erase the maximum amount of

space that would have been required, regardless of the order in

which the selections were added to the list.

A flag value is stored at the beginning of each list, and the

list is encoded so that it cannot contain the flag value. The first

occurrence of the flag in the file is considered to signal the start

of the current list of votes. After the new list is written, erasing

the flag in front of the old list commits to the new list, as

shown in Figure 5.5. This commitment is atomic, because

changing even one bit invalidates the flag.

Interpreting recorded votes. For a stored selection to have a

well-defined meaning, it must be somehow associated with a

ballot definition. Here are four possible ways to do this:

1. Store an entire copy of the ballot definition with each

selection.

2. Assume a pre-established global mapping of identifiers to

ballot definitions; store an identifier with each selection.

3. Store a cryptographic hash of the ballot definition with each

selection.

4. Store an array of ballot definitions, then store an array

index with each selection.

The first scheme is simple, but uses a lot of storage space.

At a resolution of 1024 by 768 pixels, a full-screen image

occupies about 2.4 megabytes; a typical ballot definition is on

the order of 10 to 100 megabytes. Storing a few hundred votes

would require gigabytes of space.

The second scheme uses very little space, but depends on

management of a global namespace of ballot definition

identifiers, which might be brittle and error-prone. If a vote

Ptouch 86

Page 100 of 324
Page 101 of 324

record says that it belongs to ballot definition #34 and there is a

disagreement about which ballot definition was #34, the vote

record becomes meaningless.

Ptouch uses the third scheme because it uses only a small

amount of space, and as long as the hash function is collision- resistant, there can be no ambiguity about which ballot

definition is associated with each vote record. As long as you

can obtain a copy of the ballot definition, you can ascertain the

true meaning of a vote. Since we’ve already assumed that the

ballot definitions are published, this is not a serious problem.

The fourth scheme yields a vote record that is fully

self-contained. But in order to store all the definitions on

write-once storage, without revealing anything about the order

in which they were used, and without using very large amounts

of space, all the acceptable ballot definitions must be known in

advance. This scheme would make sense for a machine that

provides some way for the pollworker to select which ballot

definition to use.

If the list of acceptable ballot definitions is fixed in advance,

it would be possible to use just one storage device instead of

two. The storage medium would initially contain all the ballot

definitions; the machine would both read the ballot definitions

from it and append the vote records to it. In such an alternative

scheme, vote records could not become inadvertently separated

from their ballot definitions, but it might be more difficult to

provide a hardware-based guarantee that the ballot definitions

are never alterable.

Ptouch 87

Page 101 of 324
Page 102 of 324

Evaluation

Size. The entire implementation of Ptouch is 291 lines long, not

including comments and blank lines. The breakdown of module

sizes is as follows:

ballot definition loader and verifier 126 lines

event loop 13 lines

navigator 92 lines

video driver 22 lines

subtotal (user interface) 255 lines

vote recorder 38 lines

total 291 lines

Dependencies. Ptouch runs on Python version 2.3. It was

implemented with minimal dependencies so that the size of the

Python code would give a reasonable indication of the true

complexity of the program. It uses only one collection type, the

Python list. Although some lists change length while the

program is running, every list has an upper bound on its length

determined by the ballot definition, so an implementation

based on arrays could preallocate the necessary space.

The user interface modules import nothing from Python’s

standard library, and use only these built-in functions:

• open and read on the ballot definition file.

• ord to convert characters to integers.

• enumerate and range for iterating over lists.

• len and the remove method on lists.

The only Pygame drawing function that Ptouch uses is blit,

which copies a bitmap onto the screen. A few other Pygame

functions are used just to initialize the graphics display.

The vote recording module uses Python’s built-in sha module

for computing the SHA-1 hash of the ballot definition, and also

the following built-in functions:

Ptouch 88

Page 102 of 324
Page 103 of 324

• open, read, write, seek, and tell on the vote storage file

to simulate access to a PROM.

• ord and chr to convert characters to integers.

• enumerate for iterating over lists.

• The sort method to sort the copyover list.

• len and max to find the longest item in the copyover list.

Functionality. The ballot definition format is capable of

supporting:

• both general and primary elections

• ballots in any language and any typeface

• voter instructions at any point in the process

• multiple contests on a single screen

• splitting a contest over multiple screens

• contests allowing more than one selection

• photographs or logos shown with candidates

• write-in text in any alphabetic language

• review of selections before casting the ballot

• jumping directly to specific contests or review screens

• regulations requiring voters to review their selections before

casting the ballot

• regulations restricting the number of times that voters may

review their selections

Because the implementation of write-ins assumes that each

character is selected with a single keypress on the touchscreen,

it can only support alphabetic languages; write-ins in

ideographic writing systems such as Chinese are not supported.

Ptouch does not provide administrative functions such as

viewing vote counts or changing configuration settings. It also

does not perform encryption; by design, there is no need to

encrypt the stored votes.

Separation of concerns. The Ptouch software is divided into

five modules that can be implemented and inspected

separately. Each module has a limited responsibility, which

makes it easier to audit and test.

Ptouch 89

Page 103 of 324
Page 104 of 324

The ballot definition loader is responsible for establishing

that the ballot definition is well-formed. If the loader is

implemented correctly, and if the other modules rely only on

the conditions of well-formedness, then the only possible kind

of software failure is a failure to load the ballot definition.

Successful completion of the loading and verification step

assures that software errors cannot occur during the voting

session.

It is easy to see by direct inspection of the source code that

all modules other than the event loop only react to messages

they receive. The event loop is the only module capable of

initiating messages, but it is also the smallest and easiest to

audit.

The video driver is a passive component, never sending any

messages at all. In particular, the video driver does not have the

authority to activate slots (that is, it cannot “press buttons” in

the interface), which reduces vulnerability to errors in its

implementation.

The navigator has access to only the ballot model and

cannot draw arbitrarily on the display. Because it cannot see the

image data, it cannot determine the semantics of the user’s

selections. Freezing the implementation of the VM before

choosing the order of candidates on the ballot would make it

difficult for even the author of the navigator to bias the vote for

or against a specific candidate. Also, the only input to the

navigator is a slot number, which is a small integer, so the

navigator can be subjected to exhaustive testing.

The voting machine has no non-volatile storage other than

the ballot definition and the cast vote storage. Because the

machine is restarted for each new voting session, and because

the ballot definition is read-only, the only state retained

between voting sessions is the vote storage. Furthermore, the

vote recorder module only receives messages and never sends

any messages to any other software module, so no information

in the vote storage can reach any of the other modules.

Consequently, the user interface seen by each voter is

determined only by the ballot definition and cannot reveal any

Ptouch 90

Page 104 of 324
Page 105 of 324

information about previous voting sessions. Also, this ensures

that all voters using the same ballot definition receive the same

voting experience.

Election rules. Election regulations concerning the ballot are

upheld either by the implementation of the navigator module or

by validating the ballot definition.

By design, Ptouch can only cast one ballot each time it runs.

It is easy to confirm by inspection of the navigator that the only

way to cast a ballot is to arrive at the last page and to see that

the last page is a terminal node in the ballot definition.

It is also straightforward to verify that overvoting is

impossible, because only the navigator can manipulate the

user’s selections, and there are only two places in the code

where an item is added to the selection list.

Other election process rules can be verified by examining

the ballot definition. For example, to ensure that the voter will

be notified of undervotes before casting the ballot, we would

check the graph of transitions among pages to see that the

voter must proceed through review pages before arriving at any

page that can cast the ballot.

Comparison. At only 291 lines of Python, the Ptouch code is

much smaller than the 31 000 lines of code in Diebold’s

AccuVote TS software.1

It may be slightly more appropriate to

compare the 255 lines of UI code with the AccuVote’s 14 000

lines of UI code—but neither comparison is entirely fair,

because Ptouch lacks some of the AccuVote’s functionality and

the two systems have different sets of dependencies.

Nonetheless, the correctness of Ptouch is certainly easier to

assure than the correctness of the AccuVote TS code. In general,

programs with less code tend to be easier to review, easier to

test, less likely to contain bugs, and less likely to crash.

One reason that there is less code is the choice of

programming language: Ptouch requires a Python interpreter,

whereas the AccuVote TS does not. On the other hand, the

1This is less than Kohno’s figure of 49 609 lines [43] because it excludes blank lines and comments.

Ptouch 91

Page 105 of 324
Page 106 of 324

AccuVote TS software depends on Microsoft Windows CE and

builds its user interface using the Microsoft Foundation Classes,

which are much larger and more complex that the blit

functionality that Ptouch uses from Pygame.

It is not unreasonable to consider running Python on voting

machines. Python is widely deployed and vetted and is

supported by an active developer community. Unlike Windows

CE and MFC, Python is a mature open source project,

distributed with an extensive suite of regression tests. As a data

point concerning Python’s size, note that Nokia has released a

small Python interpreter that runs on Nokia mobile phones [57].

The interpreter fits in a 504-kilobyte installation package, which

also includes over 40 Python library modules that Ptouch

doesn’t use.

Alternatively, the Python code could be translated into a

compiled language. Although Ptouch is written in a higher-level

language, it uses very few of Python’s library modules and

built-in functions, as described earlier in this section. It is

reasonable to expect that translating this code into a compiled

language would multiply its size by a factor of 3 or 4, but not by

100.

Despite its small size, the Ptouch code maintains clear

boundaries and minimal data flow among its five modules. As

described earlier in this section, many of the desired security

properties of the voting machine are straightforward to verify in

Ptouch, due to its design. The AccuVote TS code does not lend

itself to similarly easy analysis.

Ptouch 92

Page 106 of 324
Page 107 of 324

Shortcomings

Ptouch lacks several kinds of important functionality.

Accessibility. Ptouch only supports a touchscreen for both

input (receiving choices made by the voter) and output

(displaying information to the voter). Thus, it is not usable by

voters who are blind or voters who lack the motor control to

accurately touch buttons on the touchscreen.

Printing. Ptouch does not accommodate a printer, so it does not

produce any permanent paper records. In particular, there is no

voter-verifiable printed record of votes (VVPAT), a feature that is

currently required by law (either for elections or for purchase of

new equipment) in 16 U. S. states [23]. As of this writing, the

United States Congress is considering a bill [79] that would

make VVPATs a nationally required feature on all DRE machines.

Audit logging. Ptouch does not record any logs of its operation.

Audit logs can be of invaluable assistance to investigations in

the event of a dispute, evidence of tampering, or a software

error.

Straight-party voting. Some paper ballots offer a way to make a

single party selection that has the effect of voting for the

candidate of that party in every contest. As of this writing,

straight-party voting is used in 17 U. S. states [50], but Ptouch

does not support such a feature.

Complex voting rules. Some ballots have voting rules that

cross between selections or contests. For example, sometimes

primary elections for multiple parties are combined on a single

paper ballot, where the voter first indicates their choice of party

and then votes in the contests for that party’s primary. Ptouch

would not be able to present different contests depending on

the party selection that the voter made. As another example, a

Ptouch 93

Page 107 of 324
Page 108 of 324

ballot for a recall election would first let voters vote for or

against the recall itself, then offer a selection of replacement

candidates. Typically, it is only valid to vote for a replacement if

one has voted in favour of the recall. Ptouch cannot enforce this

kind of restriction.

Ranked and other election methods. Most single-winner

elections decide the victor by the plurality rule (also known as

“first past the post”), in which each voter votes for a single

candidate and the candidate with the most votes wins. Despite

its popularity, it is a poor method for electing a single winner

because it penalizes moderate candidates and often motivates

voters to misrepresent their preferences [44], locking in

polarized two-party control of the government. Of the many

election methods that have analyzed by social choice theorists,

it is one of the worst methods for electing a single winner.

One simple way to obtain a truer representation of voter

preferences is approval voting [9], in which each voter can vote

for as many candidates as they want. An approval election is

easily conducted with Ptouch by setting max sels equal to the

number of candidates.

Another election method that has been proposed is range

voting [74], in which voters assign scores to the candidates and

the candidate with the highest average or total score wins.

Range voting can be conducted with Ptouch by setting up a

ballot with a separate contest for each candidate. For example,

to allow scores from 0 to 10, the ballot can simply present

eleven choices, numbered 0 to 10, next to each candidate.

Several election methods involve ballots on which voters can

rank the candidates. The Schulze method [71] and the Tideman

method [77] belong to a family of methods called Condorcet

methods, which use ranked ballots to simulate all the possible

one-on-one match-ups among the candidates. With these

methods, voters are allowed to specify rankings that include

ties (i.e., they can assign the same rank to more than one

candidate). Another notable method, in which voters must

specify rankings without ties, simulates a series of runoff

Ptouch 94

Page 108 of 324
Page 109 of 324

elections in which the least popular candidates are successively

eliminated. This method is known as “preferential voting” or

the “alternative vote” in many countries around the world and

called “instant runoff” in the United States.

Ptouch does not provide a way for voters to rank their

choices. Also, because Pvote records each selection separately,

multiple selections cannot be combined to produce the effect of

a ranked ballot.

For example, some paper ballots implement ranking by

repeating the same list of options multiple times. San Francisco

uses a simplified variant of “instant runoff” in which voters

rank only their top three choices. On the ballot, the same list of

candidates appears in each of three columns; voters are

instructed to indicate their first choice in the first column,

second choice in the second column, and third choice in the

third column. This tactic would not work for Pvote because

Pvote would store the voter’s first, second, and third choices as

three separate selections, dissociated and scattered among all

the selections made by other voters.

Ptouch 95

Page 109 of 324
Page 110 of 324

6 Accessibility

Why was a second prototype needed? 97

What is Pvote’s approach to accessibility? 98

How are alternative input devices handled? 99

How does blindness affect interface navigation? 100

How do blind users stay oriented within an interface? 101

How do blind users keep track of what is selected? 102

How do blind users get feedback on their actions? 103

How are vision-impaired users accommodated? 104

96

Page 110 of 324
Page 111 of 324

Why was a second prototype needed?

Ptouch, the first prototype, demonstrates significant progress in

simplifying voting machine software, but it lacks several key

abilities, as explained at the end of the last chapter. It cannot

handle certain ballot features, it does not print a paper record,

and—most significantly— it supports only a touchscreen for

input and output. Such an interface can only be used

conveniently by voters who can see, who can read, and who

have sufficient fine motor ability to accurately select items on

the screen.

A major motivator for using electronic voting machines in

the first place is to meet the accessibility requirements dictated

by HAVA [78]. By failing to support more accessible voting

interfaces, Ptouch left open the question of just how much

software complexity is necessary to fulfill these machines’

ostensible reason for existing. The purpose of Pvote, the second

prototype, is to answer that question, and to show that better

verifiability can be achieved without sacrificing accessibility and

useful functionality.

Accessibility 97

Page 111 of 324
Page 112 of 324

What is Pvote’s approach to accessibility?

When I began working on accessibility support, I started to

create a special “accessible version” of the system just for blind

users, with a keypad for input, an audio-only interface, and no

visual display. Before long, however, it became apparent that a

universal design approach would be more fruitful.

Universal design [75] is the practice of designing artifacts

that are flexible enough to support a wide range of users with

and without disabilities, instead of separate artifacts or

assistive devices for specific disabilities. A unified solution

avoids stigmatizing people with disabilities, and the increased

flexibility often yields benefits for all users. Volume controls on

public telephones are an example of universal design: they help

everyone use the telephone more easily in a noisy environment,

not just those who are hard of hearing.

Pvote’s unified solution is a single user interface with

synchronized audio and video, rather than a visual interface for

sighted voters and a separate audio-only interface for blind

voters. The same information is presented concurrently in

audio and video; user input always yields both audio and visual

feedback. Voters without disabilities can also benefit from

audio confirmation of their choices [73].

Noel Runyan, an expert on accessible technologies,

recommended synchronized audio and video to me during the

early stages of this work. His recent report on voting

interfaces [69] also makes this recommendation. Although not

all of the electronic voting machines currently in use support

synchronized audio and video, such a requirement is present

both in the 2005 Voluntary Voting System Guidelines

(VVSG) [80] (item 3.2.2.1f) and in a draft of the next generation

of these guidelines [81] (item 3.3.2-D).

Accessibility 98

Page 112 of 324
Page 113 of 324

How are alternative input devices handled?

Pvote takes a universal design approach to input devices as well

as output devices. Its design is intended to support voting

hardware with both a touchscreen for input and an alternate

input device. The design assumes that the alternate input

device consists of a fixed number of momentary buttons and

sends a signal identifying a button whenever a button is

pressed. This is a useful input model because it allows a wide

range of devices to serve as the alternate device, including a

regular keyboard, a numeric keypad, a set of hardware buttons

designed for voting, or a sip-and-puff device. The voter can

decide whether to use the touchscreen or the alternate input

device, and can mix them freely.

This simple input model does not account for the timing of

button presses. For a person with severe physical disabilities

who can only operate one or two buttons, the length and timing

of button presses is an important way to convey information.

Although Pvote cannot distinguish between a short press and a

long press, these inputs could be translated in hardware to

separate signals. That is, from Pvote’s perspective there would

be two different buttons: the hardware would send one keycode

for a short press and a different keycode for a long press.

However, Pvote’s input model does not support autoscan, a

typical feature of “single-switch access” software. In an

autoscan interface, a cursor cycles through a list of choices at a

steady rate and the user activates the switch when the cursor

arrives at the desired choice.

A system with both multimodal input and multimodal

output is helpful not only for blind voters but also voters with

low vision, voters who are illiterate, voters with cognitive

disabilities, and voters with physical impairments that make it

hard to use a touchscreen, as well as voters with multiple

disabilities.

Accessibility 99

Page 113 of 324
Page 114 of 324

How does blindness affect interface

navigation?

With respect to voting user interfaces, the visual channel has

two advantages over audio. First, it can convey textual

information at a higher bandwidth: for most people, reading a

printed list of candidates’ names is faster than listening to them

spoken aloud. Second, a visual image can convey more

information at once without an explicit navigation mechanism:

although a screen full of text probably exceeds what a person

can hold in working memory, a sighted person can easily select

and gather information of interest just by looking around at

different parts of the screen.

A consequence of both of these properties is that audio-only

voting interfaces require smaller units of navigation than

video-only voting interfaces. Whereas an entire page can be

visually “current” to the voter, only a few words can be aurally

“current” at any given moment. For example, a visual interface

can present an entire list of candidates at once but an audio

interface must present the candidates one at a time. Therefore,

a multimodal interface should support the notion of the user’s

focus at two different levels of hierarchy, with audio

information at the finer-grained level. Pvote introduces states

within pages to serve this purpose.

Accessibility 100

Page 114 of 324
Page 115 of 324

How do blind users stay oriented within an

interface?

Visual information can be presented passively, whereas

presenting audio information requires continuous activity. Even

an inert display can convey visual information, whereas silence

conveys no audio information at all.

If a user is distracted while viewing static visual

information, then getting reoriented is just a matter of looking

over the information again. But if a user is distracted while

listening to audio, then getting reoriented requires that the

computer actively replay the audio. Therefore, an audio

interface needs fallback mechanisms to trigger reorientation.

The ballot definition needs to be able to specify a “Where am I?”

button that the user can press to recover context.

There also needs to be a way to provide reorienting

information after a period of inactivity, if the user is lost and

doesn’t know what button to press for help. The Pvote ballot

format has a timeout parameter for this purpose (see

Figure 7.2); the ballot definition can specify a transition to

another page or audio message to be played when the timeout

period expires with no user activity. The most recent draft of

the next version of the VVSG [81] includes requirements for a

“defined and documented inactivity time” (item 3.2.6.1-E) after

which the system alerts the user (item 3.2.6.1-F); Pvote’s timeout

functionality addresses these requirements.

Accessibility 101

Page 115 of 324
Page 116 of 324

How do blind users keep track of what is

selected?

At any given moment, the voting machine keeps track of the set

of current selections in each contest, which I’ll call the selection

state. Recall that in Ptouch, the selection state is displayed

visually by option areas, which display a particular option, with

one appearance if it is selected and another if it is not, and by

review areas, which list all the selected options in a specified

contest.

To communicate the selection state to a blind user, the

audio interface needs to be able to play audio messages that

vary depending on what is currently selected. Thus, a Pvote

ballot defines audio in terms of a sequence of audio segments,

where each segment can be constant or variable. A constant

segment always plays the same audio clip independent of the

selection state; a variable segment selects an audio clip to play

as a function of the current selection state. Constant and

variable segments are concatenated together to give the effect

of filling in blanks in spoken prose, yielding a verbal description

of the selection state.

Accessibility 102

Page 116 of 324
Page 117 of 324

How do blind users get feedback on their

actions?

Not every user action succeeds. For example, the user should

not be allowed to overvote. Ptouch enforced this rule, but

provided no particular feedback; an attempt to select an

additional candidate would simply have no effect when the

contest is already full. (I use “full” to mean that the maximum

allowed number of selections in the contest is selected, and

“empty” to mean that none of the options in the contest are

selected.)

In a visual interface this might be considered acceptable

behaviour, as the user can immediately see whether or not the

attempt to select had an effect: either the candidate’s name

takes on a selected appearance, or it doesn’t. But in an audio

interface, there is no such direct feedback without an audio

message describing what just happened. Therefore, to support

audio-only voters, the ballot definition needs to be able to

specify different audio messages depending on whether an

action succeeded or failed, and possibly also depending on the

reason for success or failure. The new condition structure in

Pvote’s ballot format makes this possible (see Figure 7.2).

Accessibility 103

Page 117 of 324
Page 118 of 324

How are vision-impaired users

accommodated?

A large-type mode and a high-contrast mode can be helpful for

users with a vision impairment. Both the 2005 VVSG [80] (items

3.3.2.1b and 3.3.2.1c) and the draft new guidelines [81] (items

3.2.5-E and 3.2.5-I) require electronic voting displays to be

capable of showing all information in at least two type sizes,

3.0–4.0 mm and 6.3–9.0 mm, and to have a high-contrast mode

with a contrast ratio of at least 6:1 (on current voting machines

this usually means a black-and-white mode).

Ptouch can already accommodate these requirements by

providing multiple prerendered versions of the ballot in a single

ballot definition file, together with buttons for selecting or

switching the desired presentation mode. For example, each

normal-type page could include a button for switching to the

large-type version of the same page. However, such a ballot

would contain duplicates of the contests and their options. In

terms of the ballot definition data structures, the large-type

contest and the normal-type contest for each office would be

distinct contests with distinct options. Ptouch’s electronic

records of votes would therefore reveal whether the voter

selected a large-type candidate or a normal-type candidate,

which could be considered a voter privacy violation.

Because Pvote has more flexible handling of user input, it is

possible to design ballots for Pvote that avoid this problem. A

single user action can trigger multiple effects in Pvote, so user

selection of any one option can be made to automatically select

all the corresponding variants in the other display modes (e.g.,

touching the button for Jane Smith in normal print also selects

Jane Smith in large print, Jane Smith in high contrast, etc.). The

results of making the same selections in different presentation

modes would then be indistiguishable.

Accessibility 104

Page 118 of 324
Page 119 of 324

7 Pvote

the multimodal prototype

Overview 106

Goals 107

Design principles 110

Differences between Pvote and Ptouch 114

Ballot definition format 121

Software design 127

Implementation 132

Evaluation 133

105

Page 119 of 324
Page 120 of 324

Overview

This chapter describes Pvote [91], the second prototype

vote-entry program I developed. Unlike Ptouch, Pvote offers

support for most voters with disabilities by providing

synchronized audio and video output, and also by accepting

input from buttons and other accessible input devices as well as

touchscreen input. In addition, Pvote handles several less

common ballot features that Ptouch does not support.

Pvote is intended for voting machines that are electronic

ballot printers; thus, both the ballot definition and the VM

software contain a component specifically to support ballot

printing. An implementation targeted for other types of voting

machines could substitute a different component for recording

the cast votes, such as the tamper-evident direct recording

mechanism in Ptouch.

Pvote 106

Page 120 of 324
Page 121 of 324

Goals

Pvote aims to achieve both functionality goals and security

goals. The set of supported ballot features and user interface

features is determined by the ballot definition format. Security

depends on the correct and verifiable implementation of the

Pvote program.

Functionality. Voting systems should be highly usable by voters

of all kinds, and their usability should be evaluated and

improved through user testing. However, user testing of

specific ballot designs is outside the scope of the present work.

The aim here is to design not a particular ballot, or even a

particular style of ballot, but a ballot definition format—one

flexible enough that usability and accessibility experts can use

it to create better and better ballots as our understanding of

voting human factors improves. As explained in Chapter 4, the

prerendering approach opens up the process so ballot design

can be done by expert ballot designers, not just voting machine

programmers.

If the ballot definition format is rich enough to replicate

what existing voting machines do, then the resulting voting

system will be capable of being at least as usable as today’s

voting systems. We can be assured of not having lost ground in

usability, while throwing open the door to future ballot designs

with better usability. Thus, the goals for the new ballot

definition format are described in terms of sufficient

functionality to match existing systems:

• It should be possible, with an appropriate ballot definition

and corresponding hardware, to produce a similar or better

user experience compared to existing electronic voting

systems, including those that support audio or

synchronized audio and video.

• It should be possible to define a reasonably usable

synchronized audio and video interface corresponding to a

real ballot.

Leave a Reply