Code Monkey home page Code Monkey logo

bob's Introduction

BOB: a Basic On line Ballot box

The BOB system is designed to be an electronic version of a ballot box for Single Transferable Voting elections.

Vote counting can be done for you, if you enable the option for running the results through an OpenSTV count.

The BOB system is intended to be used in a context where people will verify that their votes were recorded correctly after the ballot: thus the software itself cannot cause an undetectable manipulation of the election's result (although this approach introduces other potential problems, as discussed below).

We hope this software might be useful to you, but as the GPL says, this code doesn't come with any warranties.

This software is primarily being maintained for use within the CUSU online voting system - https://www.cusu.cam.ac.uk/elections/system/ .

Over 333,333 votes have been cast without challenge in over 2,709 ballots created by 211 organisations around Cambridge University, using BOB, as of January 2021. The archive of these can be seen on the CUSU voting server for those with a University login.

Warnings about unavoidable BOB voting process risks

First things first: Electronic voting is a thorny topic, and unavoidably so. Please think very carefully about the risks involved. However, we have given a great deal of consideration and put much work into the BOB software and its optional administrative GUI on security and assurance issues.

  • The returning officer and anyone with access to the webserver, including read access to its logs, will know the times at which votes were cast and may therefore be able to break privacy to some extent.
  • The plain-text emails used to return receipts to voters and to the returning officer are vulnerable to interception. Read access to mailserver logs is also a possible privacy leak. Election officials may wish to disable the email receipts if this concerns them.
  • The use of unique anonymous tokens to identify voters opens the system to coercion and vote-selling. There is essentially no way of fixing this without breaking more important properties such as usability and verifiability.
  • Further discussion of the risks and threats involved with BOB voting are included within the documentation in the distribution files. It is up to you to decide whether you are willing to take on these risks.

Credits

  • David Eyers - http://www.cl.cam.ac.uk/~dme26/ - wrote the core electronic vote collection system
  • Martin Lucas-Smith - particularly added extra checks and balances, administration, configuration and installation support, and removed Perl installation stage
  • David Turner (@cl.cam)
  • Simon Hopkins (previously @gradunion.cam)
  • Robert Whittaker (previously @gradunion.cam)

Installation

Installation is guided by the BOB system itself, so all you need to do is:

  1. Download a release file.
  2. Decompress the release into a web-accessible folder: if working on a command line, a directory BOB will be created in your current working directory.
  3. Point your browser to your webserver's URL for the directory created above.
  4. Follow the directions provided until your BOB installation is ready.

License

The code is licensed under the version 3 of the GPL.

bob's People

Contributors

mvl22 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

bob's Issues

Add namespacing

Support for namespacing did not exist in the language at the time of its initial creation.

PEV subversion

I was wondering if you had considered this / whether this method for subverting the post election verification process would actually work:

  • election between candidates A and B; B would win by a small margin but malicious people trusted with access to the voting server would like A to win
  • everyone that votes for B is assigned a voting token from a small set; that is, multiple people voting for B are assigned the same token
  • extra voting tokens for non-existent voters are created so that (the number of unique tokens) = (the number of people that voted). All of these tokens are used to cast votes for A.
  • in the PEV, everyone that voted for B checks that the token they were assigned has indeed been associated with a vote for B, and suspect nothing. They have no reason to reveal their token as they believe their vote to be counted correctly, so won't notice that >=two people have the same token

Other fun scenarios:

  • election between candidates A and B; again B would win by a small margin, but A's supporters would like A to win / cause chaos.
  • votes for A claim they've all been assigned the same token, when in reality the election was not fixed. The election system has no way of refuting this claim?

An idea?

Voting token could be hash(salt + identity of voter); salt being unique per voter; salt revealed to voter. Identifying voters from the published list requires breaking the hash; a voter can demonstrate that a token is theirs by revealing the salt; assigning two voters the same token requires finding a collision.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.