Title: Floridaproof Digital Voting Terminal FDVT
1Floridaproof Digital Voting Terminal (FDVT)
- UCF SEECS Senior Design II Spring 2003
- Group 14
- Lance Legan
- Don Pham
- Fredrick Thomas
2Scope of the ProjectA Two Tier System
- Voting Terminal (User Side)
- Stand alone terminal.
- Hardware software interface to the voter.
- Reads pre-created ballot from the transportable
storage medium. - Writes acquired votes back to the transportable
storage medium.
- PC Software (Admin Side)
- Platform independent.
- Software interface to the Director of Elections.
- Provides interactive creation of a ballot and
stores it to the transportable storage medium. - Reads saved votes from the transportable storage
medium, tabulates results, displays election
statistics.
SEPERATION
3Voting Terminal (Voter Side)Block Diagram
Elaboration
Power Supply
IDE Flash Drive
System Software
To CF and KIC
Electricity
Electricity
Software
Electricity
Electricity
Single Board Computer
Display
Display Control
Voter
View Screen
Ballot Info
Keyboard Scan Codes
Vote Train
From Power Supply
Press Keys
CompactFlash Reader/Writer with card inserted
Keyboard Interface Controller
Keypad of Buttons
Voter Input
Electricity
Voter Write-in Input
Alphabetic Keyboard
From Power Supply
4PC SoftwareBlock Diagram Elaboration
5Ballot Markup Language (BML)Layer of Separation
Elaboration
- BML enforces independence between the terminal
and PC software by providing a standard language
for communication of ballot and vote information. - Similar format to HTML with tags and options
within tags. - Generated by PC software, read by terminal
software. - Basic enough to be written by hand if desired.
- Open standard allows 3rd party development of
ballot creation software.
6Whos Doing What?Responsibilities Work
Allocation
- Lance
- System software setup.
- Terminal software design and implementation.
- Peripheral hookup except for LCD, power
supply/UPS, and keyboard/keypad. - Don
- Power supply and UPS integration and hookup.
- Keypad (buttons and controller) design and
fabrication. - LCD wiring and hookup.
- Case construction.
- Fred
- PC Software design and implementation.
- Data encryption incorporation.
- BML specification and maintenance.
7SpecificationsRequired By Law
- The following list highlights key specifications
that are mandated by the Florida Department of
States Division Of Elections. More rigorous
tests outside the scope of this project have been
withdrawn. - The system must prevent unauthorized access to
the voting data and system, and not allow system
functions to be executed in an unintended
manner. - The voter controls must be usable with a
single, closed fist, and the force required must
not be greater than 5 pounds, nor require the
pinching and/or twisting of the wrist. - The voter must be able to enter a write-in
candidate, be warned if undervoting occurs,
prevent overvoting, change any vote on the
ballot before casting, and signify a ballot has
been processed.
8SpecificationsRequired By Law (Cont.)
- Data must be maintained for at least 22 months
after Election Day. - The system must handle at least 500 active
voting positions. - Type I and Type II errors must be at .1 percent
maximum. - The terminal must be a Class B device.
- The display must consist of light lettering on
a dark background. - A system audit log must be maintained by the
terminal. - Voting data from all devices must be
transportable. - The average voter should be able to complete a
ballot within 5 minutes.
9GoalsSelf-Imposed
- In addition to state-mandated specifications, the
following goals have been set by the group. - The prototype is cost-effective (lt 1000).
- The terminals are lightweight and maneuverable
(lt 15Lbs). - A single terminal holds enough votes so that
maintenance is not required during the entire
voting day (gt100,000 votes). - The terminal can function for at least 30
minutes on its own. - The voting process is intuitive to the user.
10Peripheral HardwareChosen Products
- Single board computer Teknor VIPer803
(486DX2/66, 16MB RAM). - Bustronic ISA 4-slot backplane.
- System storage device SanDisk 64MB FlashDrive.
- CF Reader/Writer CompactFlash IDE adapter.
- LCD screen Sharp LQ10DS01, 10.4 diagonal,
800x600 resolution.
11Case DesignDiagrams and Objectives
- General information
- Size 12 x 12 x 19 (LxWxH)
- Estimate Weight 10-15 lbs.
- Materials Plexiglass, wood
- Cost around 40
- Will have a space underneath
for keyboard to slide in/out. - Small door with lock on the
side for security purposes. - 4 to 6 keypad buttons will
- attach to it
12Case DesignHow Will It Be Built?
- Step1 Plexiglass and wood parts will be cut
from full scale drawings in the UCF
engineering machining lab. - Step2 Assemble case using screws, nails, and
glue. - Step3 Test to see if it can handle the
necessary weight that the system
needs. Fix any problem that might occur
and retest it. - Step4 Install all the components and parts.
13Case DesignInsiders Information
- 1-UPS
- 2-Single Board Computer
- 3-Backplane
- 4-Cables
- 5-LCD Panel
- 6-Keypad/buttons
- 7-Keyboard
- 8-Stand
- 9-Keypad Controller Board
- 10-Flash Drive
- 11-Compact Flash Adapter
- 12-Power Supply
- Note we might use some metal bars inside to hold
parts and components. Also the original plan was
putting a UPS unit inside the case, however, it
might be putting outside because too heavy for
the case to handle.
14Case DesignThe Ass End
- 1-Power Plug
- 2-Power ON/OFF switch
- 3-Keyboard/keypad plug
15Power ConsumptionIndividual Components
- Single Board Computer 11 W
- LCD Panel 10 W
- Other Peripherals lt 5 W
- Total Power 26 W
- All components need either 5V or 12V input or
both.
16Power Supply UPSOpen Frame Switching Power
Supply
- DVE (DSP-453A-10) DC open frame power supply for
single board computer - Size 5.0 x 3.0 x 1.1
- Input 100 250V _at_ 47 63Hz AC
- Output 5V _at_ 4A DC,
- Voltages 12V _at_ 1.2A DC,
-12V _at_ 0.4A DC. - Output Power 30 Watts
- Price 12.95
- Note This is the best power supply unit for
our system because it is small, provides enough
output power, and low-cost.
Photo by Lance Legan.
17Power Supply UPSConsumer Level UPS
- Belkin Home Office UPS
- 8 outlets ( 4 backup, 4 surge-protected)
- Battery Load Capacity 350VA (190
Watts) - Backup time is gt30 min. for
- our particular system
- Output Voltage 120V AC
- Price 45.00
- Weight 7 lbs.
- Note The advantages of this one compared to
others include lower price and less weight.
Photo by Don Pham.
18Power Supply UPSIntegration Fabrication
- The power supply and UPS will be hard wired
together by soldering wires to the appropriate
terminals. The power supply will connect to the
SBC and peripherals using standard PC power
connectors.
19KeyboardWhich Type?
- We will use a Mini Keyboard which is similar to
the one in the picture. - Small Size 11.6 X 4.7
- Less Key (60 Full Size Keys plus
4 small arrow keys) - Available with PS/2 or
USB Connectors - Affordable Price 29.00
- Note This one can slide in and out underneath
the system with ease.
Photo courtesy of Fentek Industries, Inc., used
with permission.
20Keypad Controller UnitInitial Design
- The unit can be built by using the MC68HC11E9
microcontroller chip, push buttons, and
resistors. - The following 3 stages need to be done in order
for it to work properly - Hardware interface polling to find out which
key is pressed. - Key bouncing/debouncing measure a key was
indeed pressed. - Transmitting the appropriate scan code to the SBC
via the standard PC/AT keyboard interface. - Second and Third Stages can be done by
programming into the microcontroller chip (using
assembly language and MC68HC11 board).
21Keypad Controller UnitHow Does It Work?
Vcc
- When a key is being pressed, the corresponding
microcontroller pin is pulled low. The
microcontroller chip will then recognize which
key was pressed and transmit the appropriate scan
code to the Single Board Computer.
Key/Button
Diagram by Don Pham.
22Keypad Controller UnitProblems/Solutions
- Problems
- Requires hardware fabrication.
- Uncertainty about keyboard protocol. The sources
on writing a program for transmitting codes are
very limited. Not much information available. - Solutions
- Replace a whole process with a Mitsumi keyboard
controller unit. - Eliminate programming problems
- Small size that will fit well into the system
23Keypad Controller UnitMitsumi Prefabricated Unit
- Small size 3 x 2
- Using a MTM0183020
microcontroller chip - Can take up to 105 keys
- Price free (from UCF
- Engineering labs Dave
- Douglas)
Photo by Don Pham.
24Keypad Controller UnitMaking It Work
- Solder each hard wire to each of
the scanning
code line on the keyboard
controller unit. - Plug it in the PC for testing
and find out those keys
that we need. - So far we have found all
- the keys that are needed.
- What we have to do next is find the
right buttons and find the way
to connect them. - Button must be at least 1 inch sq.
Photo by Don Pham.
Photo by Don Pham.
25Personal ProgressDone Yet To Do
- Completed
- Got both Power Supply and UPS unit on hand.
- Got some of the materials need for case, and
carefully scaled the sizes of all pieces on the
paper. - Soldered hard wires to a keyboard controller unit
and found out all the keys that need. - Done some programming in Assembly Language for
microcontroller. But no longer use.
- Incomplete
- Connecting the Power Supply with a UPS.
- Need to get the rest of the materials for case,
start cutting them into sizes that need, then
build and test it for the first time. - Putting all components/parts inside the case when
it is ready. - Find the right keypad buttons, and attach them
with keyboard controller unit. - Fabricate the LCD to SBC connection cable.
26System Software SelectionChoosing an Operating
System to Run the Terminal
- OSs Evaluated
- QNX Neutrino RTOS -
- PeeWeeLinux -
- ThinLinux -
- muLinux -
- Minix -
- Custom lightweight Linux build -
Decision Start with custom Linux build in mind,
implement QNX time permitting, fallback to
muLinux in case of failure.
27System Software SetupBuilding a Lightweight
Linux System QNX Availability
- Necessary Components
- Linux 2.2.x or 2.4.x kernel.
- uClibc lightweight C library.
- BusyBox command line tools.
- util-Linux low level system utilities.
- e2fsprogs filesystem utilities.
- LILO Linux Loader.
- QNX System Setup
- A free for non-commercial use QNX Momentics
Development Suite which includes the QNX Neutrino
RTOS, Photon MicroGUI windowing system, and
development environment is available as a CD
image. Favorable preliminary testing has been
performed.
A guide for building these components into a
lightweight Linux system can be found at
http//www-106.ibm.com/developerworks/linux/libra
ry/l-lwl1/?tgr,lnxw09LLP1
28System Software ProgressDone Yet To Do
- Completed
- Preliminary QNX testing.
- Installation on a host system.
- Testing of compiler and development environment.
- Testing of muLinux fallback.
- Installation on a test system.
- Test program written.
- Incomplete
- Lightweight Linux Build.
- QNX operating on the Viper803.
- Linux operating on the Viper803.
29Terminal Software OperationVoter Interface
Procedure For Each Item
- Developed a standard procedure for voter
interaction with the terminal that focuses on a
simple, repeatable, three step process - SELECT
- SUBMIT
- CONFIRM
- The voter will SELECT their choice on each
ballot item by highlighting their choice with
the Up and Down buttons. - The voter will SUBMIT their selection by
pressing the Action button. - The voter will then be prompted to CONFIRM
their selection by pressing the Action button
again. At the CONFIRM stage, the voter can
renege and reSELECT, SUBMIT, and CONFIRM on that
item. - After CONFIRMING, the terminal will present the
next ballot item and repeat the process until
completing all the ballot items.
30Terminal Software OperationVoter Interface
Procedure For Each Item State Chart
31Terminal Software OperationVoter Interface
Summary Screen Procedure
32Terminal Software OperationFlowchart of Operation
33Terminal Software DesignObject Oriented or
Functional?
- The operation of the software and organization of
the ballot data structure lends itself to an
object oriented design. - Unfortunately, the considerable overhead (in
executable size, execution speed, memory usage)
for object oriented software is prohibitive for
some embedded applications. - Choices 1) Object Oriented Design using C.
- 2) Functional Design using C.
- Solution Use Object Oriented Design to visualize
and comprehend how the software should operate,
implement the Object Oriented Design in C. Test
C vs C implementation on the way.
34Terminal Software DesignObject Oriented Approach
- UML
1
1...
35Terminal Software DesignFunctional Datatypes
- enum Party REP, DEM, NPA enum IssueType
RACE, CA typedef int Partytypedef int
IssueTypestruct IssueStr Party party
IssueType type int numberChoices int
options int listings bool writein
char title char choices char
texttypedef struct IssueStr Issue
- struct BallotStr Party ballotParty int
numberIssues Issue ballotIssues FILE
ballotFiletypedef struct BallotStr Ballot
36Terminal Software DesignComplete Functional
Listing
- Ballot init_Ballot(FILE )
- Issue init_Issue(Party, IssueType, int, char ,
char )Issue init_Race(Party, int, char ,
char , int, int, bool)Issue init_Ca(Party,
int, char , char , char )char
voteOnIssue(Ballot , int)int
displayIssue(Ballot , int)int
selectChoice(Issue )bool confirmChoice(Issue
, int) - bool confirmBallot()
- int voteSummary(Ballot , char )bool
generateBallot() - char BMLparse(FILE )
- WINDOW create_introWindow()
- WINDOW create_titleWindow()WINDOW
create_instructionWindow()WINDOW
create_choicesWindow()WINDOW
create_confirmWindow()WINDOW
create_summaryWindow()
37Terminal Software ImplementationVoter Interface
GUI Dependent on OS Choice
- Embedded Linux
- NCURSES A library with functions which allow
the display of windows, forms, and character
attributes on a text terminal.
- QNX
- Photon MicroGUI The QNX windowing API that
provides a graphical interface and windowing
system.
First implementation using NCURSES. NCURSES
could be compiled under QNX as well. Photon
MicroGUI version will be created time permitting.
38Terminal Software ImplementationNCURSES Version
Screenshots Item Selection Screen
39Terminal Software ImplementationNCURSES Version
Screenshots Item Confirm Window
40Terminal Software ImplementationNCURSES Version
Screenshots Summary Screen
41Terminal Software ImplementationNCURSES Version
Screenshots Ballot Confirm
42Terminal Software ProgressDone Yet To Do
- Completed
- 390 lines of code.
- SELECT, SUBMIT, CONFIRM functionality.
- Summary screen.
- NCURSES display.
- Race ballot item functionality and display.
- Constitutional Amendment ballot item
functionality.
- Incomplete
- Read in BML formatted ballot.
- Encryption decoding.
- Export votes in BML.
- QNX Photon MicroGUI implementation.
- Write-in capability.
- Constitutional Amendment item display (long text).
43Ballot Markup LanguageCode To Screen
44Admin Software OperationOverview
- According to Division of Elections,
requirements include - A high-level language must be used.
- Pointers are not allowed without stringent
safeguards. - Codes must be separated into modules.
- Documentation specifications, both manual and
in-line, are required. - The advantages of Java (e.g., run-time
compiling, pass data between functions,
exception handling, etc.) outweigh its
disadvantages (e.g., slower on low-end
machines). - To speed up the programs, Jikes compiler will
be used. - Software split up into two PC Ballot and Vote
Reading
45Admin Software OperationOverview - PC Ballot
Software
- The PC Ballot software is split up into four main
functions - Create Issue
- Edit Issue
- Save Ballot
- Open Ballot
- The admin will be prompted to either open an
existing ballot, or create a new issue. By
creating a new issue, the admin will select the
type of issue (race or amendment) desired, and
all relevant information (candidates, number of
choices, etc.). - The admin can repeat the create issue process
as many times as desired, or edit an already
existing issue. - After all desired issues have been created,
the save ballot option will create an output
file in BML.
46Admin Software OperationClass Diagram - PC
Ballot Software
47Admin Software OperationObject Oriented
Datatypes - PC Ballot Software
abstract class Issue public Issue
NumIssues //array of issues in ballot
public String IssueName //Race or Constitutional
Amendment public String Party // Party Type
For Issue public String options //candidate
or option listings public int
level //congressional, state, county, etc.
public String text // misc text (amendment,
instructions) public int NumIssue 0
//number of issues private String symbol
race //race CA Issue(String name,
String symbol) //constructor used for all
issues NumIssues new Issue500
IssueName name symbol race
48Admin Software OperationOverview - Vote Reading
Software
- The Vote Reading is split up into four main
functions - Open Log
- Merge Log
- View Summary
- Save Summary
- The admin will be prompted to open a log,
providing the proper key for decryption. - The log will be displayed in a table-like
format. Displayed information consists of
votes recorded by the person, actions taken by
the system administrator, and actions taken by
the subsystem, each with a timestamp. - Using Merge Log repeats the same process as in
Open Log, but appends the new logs information
to the existing log. - View Summary performs the summation of votes in
each issue, while Save Summary saves an output
file with said summation.
49Admin Software OperationClass Diagram - Vote
Reading Software
50Admin Software OperationObject Oriented
Datatypes - Vote Reading Software
abstract class DataHolder protected String
SysOp //System Op Commands And Timestamp
protected String SubSys //Subsystem
Commands And Timestamp public String
Voter //User Commands And Timestamp
public String LogName //Audit Log Name
public int NumCom 0 //number of
lines DataHolder(String name)
//constructor used for log NumCom new
DataHolder500000 LogName name
51Voting Data EncryptionWhich Algorithm To Use?
- The algorithm would perform encryption in C, and
decryption in Java. - In order to meet with government regulations,
only algorithms approved by the National
Institute of Standards and Technology are
considered. - This boils down the choices to 4 options
- Data Encryption Standard, i.e., DES
- Triple-DES
- Skipjack
- Advanced Encryption Standard, i.e., AES
(Rijndeal) - DES fails due to its low key bit-size.
- Triple-DES fails since its speed on low-end
systems. - Skipjack fails due to its relatively low key
bit-size. - AES is the best choice out of the four.
52Voting Data EncryptionHow To Implement Rijndael
- On the terminal side, a free front-end in C is
available by Brian Gladman that performs the AES
algorithm. - On the administration side, the given
cryptography extension in Java (JCE) does not
support AES. A free alternative, Cryptix, will
be used that has a parallel implementation to
standard JCE. - Encryption will be handled within the VoteReader
class of the Vote Reading software.
import cryptix.util.core. //imported
packages import cryptix.provider.key. aes.initD
ecrypt(key) //AES decryption with given key log
new bytefilesize //block size
needed for(i0iltfilesizei) logi
logtempi //temp log decrypted
des.crypt(logtemp) //decrypted temp
log CharConv new BigInteger(decrypted)
//character conversion decryptedlog
cryptix.util.core.BI.dumpString(CharConv)
//converted file
53Personal ProgressDone Yet To Do
- Completed
- Design of Admin software.
- Functionality of Create Issue and Edit Issue.
- Functionality of Open Log.
- Tests of encrypting and decrypting between the
Java and C platforms.
- Incomplete
- Remaining core functions.
- Working GUI for either software.
- Save in BML formatted ballot.
- Properly formatted output after decryption.
54Milestone Chart
Sept. Oct. Nov.
Dec. Jan. Feb.
Mar. Apr. May
Power Supply Research
Purchase All Parts
Display Research
Hardware Interface Testing
Keypad/Keyboard Research
System Software Testing
SBC Research
PC Software Testing
Finalization
Compact Flash Research
Hardware Interface Design
System Integration (System Software, Hardware)
System Software Design
System Software Debugging
PC Software Design
PC Software Debugging
Documentation and Presentation Materials
55BudgetExpenses Thus Far Breakdown
56BudgetRemaining Expenses Breakdown
57BudgetComplete Overview
- Maximum Cost 1000.00
- Budget Projection
- Expenses Thus Far 221.55
- Administrative Costs 30.52
- Expected Expenses 288.00
- Total Cost 540.07
- This project has no funding from outside sources.
58 Don Fred Lance
59Questions CommentsSuggestions For Improvement
- Looking for an alphabetic keyboard that is PC/AT
compatible, appropriate size, and low cost. - Feedback on using Plexiglass and wood for case
construction. - What type of interface to scroll a long screen
of text on the terminal would feel the most
natural while minimizing buttons?