GithubHelp home page GithubHelp logo

fellipeabib / electionguard Goto Github PK

View Code? Open in Web Editor NEW

This project forked from election-tech-initiative/electionguard

0.0 0.0 0.0 157 KB

ElectionGuard is a set of open source software components that can be used to create and publish end to end veriable elections as well create a publishable artifact for ballot comparison audits.

License: MIT License

electionguard's Introduction

Microsoft Defending Democracy Program: ElectionGuard

๐Ÿ—ณ ElectionGuard

license

ElectionGuard is an open source software development kit (SDK) that makes voting more secure, transparent and accessible. The ElectionGuard SDK leverages homomorphic encryption to ensure that votes recorded by electronic systems of any type remain encrypted, secure, and secret. Meanwhile, ElectionGuard also allows verifiable and accurate tallying of ballots by any 3rd party organization without compromising secrecy or security.

Announced on May 6th at the Build developer conference, ElectionGuard will enable end-to-end verification of elections as well as support the publication of results from ballot comparison audits. Results can be published online or made available to third-party organizations for secure validation, and allow individual voters to confirm their votes were correctly counted.

Read more in the announcement blog post.

Open-Source

This library and all linked ElectionGuard projects, are licensed under the MIT license. There is no fee for using ElectionGuard.

Core Component

This is the core SDK that performs election functions such as vote encryption, decryption, key generation, and tallying. This code is meant to be run on voting system hardware and to be integrated into existing (or new) voting system software. The ElectionGuard SDK is meant to add end-to-end verifiability and encryption into 3rd party comprehensive voting systems. There are provided simplistic, proof-of-concept applications to understand how each implementation of the API should be called. Currently, there are two available implementations.

C

๐Ÿ“ Source - https://github.com/microsoft/electionguard-c

C#

๐Ÿ“ Source - https://github.com/microsoft/electionguard-dotnet

๐Ÿ“ฆ Package - ElectionGuard.SDK

Specifications & Documentation

This library contains the fundamental specifications, documentation, architecture, and mathematical/cryptographic proofs that underpin ElectionGuard. If you're looking to understand the system better, or want to know how to integrate the various components, there is a lot of valuable information contained here.

๐Ÿ“„ Documentation and Specifications

Reference Implementation

The remainder of the ElectionGuard SDK consists of a reference implementation split over several separate repositories. These repos, although intended to be used together as components of a broader solution, can also stand alone if developers wish to only research or implement one component.

Admin Device

This is an application used to administer ElectionGuard election processes, including key generation, trustee provisioning, and post-election tallying, partial decryptions, and zero-knowledge proofs.

๐Ÿ“ Source - https://github.com/microsoft/electionguard-admin-device

Ballot Box

This library is used to scan ballots to generate lists of cast and spoiled ballots in an election; used in tallying to finalize ballot operations (cast or spoil, etc.) for publishing results.

๐Ÿ“ Source - https://github.com/microsoft/electionguard-ballot-box

Ballot Marking Device

This contains a working instance of ballot marking device (BMD). Built by VotingWorks in consultation with the Center for Civic Design, this front-end provides an interface for a voter to complete and print a ballot which, in an end-to-end verifiable use case, would be accompanied by a printed tracking ID. This BMD front-end is provided as one, potential implementation.

๐Ÿ“ Source - https://github.com/microsoft/electionguard-ballot-marking-device

Tracking Site

An application that demonstrates publication of ElectionGuard election artifacts to a public website to enable verification ID lookup, downloadable zip files of the election result (for third-party verifiers), and election results summaries.

๐Ÿ“ Source - https://github.com/microsoft/electionguard-tracking-site

Verifier

The verifier application is used to perform an external, independent verification of an election tally. This repository contains a reference implementation of a verifier built against the ElectionGuard specifications. This is not meant to be the only verifier application, but rather an example. This library should be used in tandem with the technical specifications and usage guidelines contained in the specifications.

๐Ÿ“ Source - https://github.com/microsoft/electionguard-verifier

Web API

This is an API that interacts with admin encrypter devices to perform ballot encryption, casting, spoiling, and tallying. This makes use of the C# Nuget package.

๐Ÿ“ Source - https://github.com/microsoft/electionguard-web-api

Security Issues Reporting

We encourage the developer and security community to conduct research, report issues, and suggest improvements on this code base. However, unlike performance or feature bugs, please do not report security vulnerabilities in public Github comments. Each repository has a SECURITY file with instructions on responsibly reporting security vulnerabilities under Microsoft's CVD process.

Contributing

Help defend democracy and contribute to the project.

Thanks! ๐ŸŽ‰

A huge thank you to those who helped to contribute to this project so far, including:

electionguard's People

Contributors

rc-ms avatar electionguard avatar microsoftopensource avatar echumley-msft avatar keithrfung avatar msftgits avatar

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.