IOTA Challenge
From OSDVwiki
Contents |
[edit] Take the IOTA Challenge!
The Open Source Digital Voting project invites open source operating system fans to take the IOTA Challenge. The Challenge is to build a proof of concept prototype for a minimal operating system required for highly robust, reliable, and open electronic voting devices, and other parts of an electronic election system.
Winners will receive fabulous prizes and a chance at the bragging rights for having constructed the platform for the next generation of voting technology, specifically constructed for openness and transparency, developed for and held in the public trust.
[edit] Overview
The basic idea of the IOTA challenge is to build a minimal OS that provides all and only the functions needed to support the application software of an election systems device. The goal of the IOTA Challenge is to enable OSDV to select a particular open source OS distribution as the basis for SHARP, the common platform for the devices and systems that will comprise a complete set of open, next-generation election technology. There are 4 basic parts of the Challenge.
Choose your distro: IOTA Challengers should start by choosing an open-source OS distribution, and use it to build a "stripped down" OS that provides the functionality needed to support a sample voting application, and not much else.
Doc the strip-down: IOTA Challengers should document and/or automate the steps required to go from a specific OS distribution package to the built minimal system. That's required because SHARP should be derived from an existing open source OS distribution, but should also be capable of being re-generated on a later version of the distribution.
Add the integrity: In addition to minimality and re-buildability, there are also some important SHARP functional requirements for system integrity. In a nutshell, each election systems device should be a fixed function system, capable of running only the code from read-only boot media, and not capable of modification of code or configuration data. More in Details below.
Demo an app: After building your stripped-down system, you'll need to run a demo application on it. We've provided a simple demo app -- a toy system for ballot marking -- but you can roll your own based on the Details below.
[edit] Details
Some of those 4 steps have a bit more detail for the requirements of the Challenge. For example, if you're going to strip down an OS distro to pretty much only what is needed for a simple voting application, that kind of begs the question -- what's needed?
[edit] Demo Application Software
For illustrative purposes, we've provided the C source code of a sample application that is a sort of "hello world" toy application. It shows the type of embedded application that is typical of some election devices: in this case an unrealistically simple program that performs the vote-capture part of an electronic ballot marking system (but omits the ballot printing function).
IOTA Challengers can choose to build a system that is sufficient to support:
- this sample C application or a similar one, or
- a similar application to be written in an interpreted language (such as python or perl) of your choice that is part of your chosen OS distro.
[edit] Strip It Down
Based on your chosen demo application, the strip-down should be an attempt to approximate an ideal system in which:
- the demo application needs few other binaries, and
- the kernel implements on the system calls needed by those binaries, and
- there is little kernel code other than what is needed to implement those system calls, along with the OS basics.
In practice, it is not easy to do this perfectly, so the point of the challenge is to show off your favorite distro, and your skills, to show how much or how little effort is required to make a system that's a darn fine approximation. Anything that you think isn't needed, you can strip out -- within reason, and the ability to document and/or automate a repeatable process of stripping down the distro.
How realistic is this? Well, the sample application, though simple, has a good approximation of the platform requirements for the various devices that comprise the OASES system (OSDV's election system), the platform of which is SHARP. Each of these devices runs a single application, and these applications all have essentially the same set of minimal requirements: simple file I/O, device I/O, and not much else. So the IOTA challenge is to build a system that can be chosen to become SHARP. If you're really keen to look at a real open-source voting application, take a look at pvote which is some excellent work by Ka-Ping Yee
[edit] System Integrity
After stripping down an OS distro to provide all and only what's needed to run a demo app, there are a few extra steps. These steps are towards creating a system that is fixed in function, and resistant to being modified to do anything else.
The first and required step is to deliver the system as bootable system image that can written onto a write-once disk to be used as the boot media for a physical system.
The next step is to ensure that the only binaries that can be executed are the binary files stored on the RO boot media. You might do this with existing OS features, or implement new functionality that implements a check that enforces this rule. Or, at a minimum, you should document one specific part of your system build that you think is the best candidate for some specific new functionality to enforce this rule.
Beyond that, the rest is for "bonus points" in implementing further integrity measures. If you're interested, there's an extended description in the OSDV Wiki on the Open Toaster Architecture, which also describes some example implementations such as PaX.
[edit] Requirements and Evaluation
First, to take the Challenge, we'd appreciate your contacting us to let us know of your interest in the Challenge, using the form at http://osdv.org/join. That way we can get touch, answer questions you may have, etc.
In order for your entry to be evaluated, you must:
- Identify the base distribution you're working from;
- Provide the source code for your minimal system, and a bootable system image built from it, including the demo application;
- Provide documentation and/or automation of the build process for building your minimal system from the base distribution;
- Provide at least a short description of what you stripped out, what you left in, and why you left it in;
- Provide at least a short description of how you addressed the integrity requirement.
Your submission will be evaluated on some admittedly subjective points about how informative your descriptions are, how clear the build process is, how much you stripped out, how "minimal" your system is, how easy it is to test your system by booting it and test driving the demonstration application.
Another point of comparison is, loosely, "how much work" it was to build your system. This is rather on the honor system, but it is a chance for you to brag on your favorite OS distribution, in terms of how well organized it is, how great the build process is, how it didn't require that much work for you to strip it down, add the demo application, etc.
"Bonus points" refers to evaluation of how much you exceeded the basic requirements, for example, by automating the system build process and documenting it; implementing integrity features; providing a self-evaluation of why you think your entry is wonderful because of elegance, minimality, metrics of minimality or complexity, or anything else that you think distinguishes your work.
[edit] Selection
For now, the IOTA Challenge is open-ended, but we expect to close it to new entrants later this year, and select the winner before the end of this year.
At that point, the winners' contribution will be adopted as the base open source OS for OSDV's work towards this lofty-sounding goal: create open, trustworthy, reliable software for a new election system -- OASES -- specifically constructed for openness and transparency, developed for and held in the public trust.
Fabulous prizes are also at stake! Well, maybe not so fabulous, but a complete set of OSDV and "Trust the Vote" swag, plus a darn fine toaster.

