Git Product home page Git Product logo

blockchain_voting's Introduction

Blockchain Voting using Blind signatures

The aim is to make elections more transparent and add a verifiability to system ensuring all votes will be considered for votes. we try to adhere to ideal voting system suggested by [1]. we used RSA encription scheme for signing,encripting,this can be extended to other encription schemes

The Idea

Elections are conducted by an Authority offfen called Election Commision usally relaying on centralized datbase of all voters with personal infomation to identify them. we expect same to be handled by Election commition to authenticate Voter with their keys

Election Candidates generate their keypairs and make public keys avalble on the VoteBank server.The Part about storing private keys of cantidates needs to be cenralized.This is to prevent early results on elections.

Blockchain The vote with signature Votebank encripted with candidate's key is presented by voters to Miner pool's. miners verify the signature,check for Dubble vote and add to public blockchain.With longest chain rule present it makes easy to get single longest chain.

results are Computed using candiates's private keys reveled at end of election.The vote is decripted reveling whom the vote was casted to.

Mathy stuff

RSA

key terminologys

P,Q -> very large prime number
n -> (P x Q)
d -> also refferd as Φ(n) is (P-1)*(Q-1)
e -> 1< e < d and Not be a factor of d
Private key <d, n>
Public key <e, n>

Encription

c=(mᵉ)mod n # m -> messege 

Decription

(cᵈ)mod n

Blind signature

m'= (m*rᵉ)mod n
s'= m'ᵈ mod n
s= (s'*r') mod n
s= mᵈ mod n as  rᵉᵈ=r mod N

Note : To mitigate risk of unblinding [2] messege we add salt to messege and encript with public key of cantidates.and candidates keep their keys private till end of election.

how to Run

Structure of project its divided into folder for each roal in the elections

Create super user in all 3 servers using

python manage.py createsuperuser

Note : To run the server use 'r' file present in root folder along with manage.py this is to prevent port clash from servers

Filling Data

using admin credenatial login to admin page.

  • Auth server fill details of all voters. Add Elction type details to prevent resuse of same keys
  • Votebank add all cadidates that are contesting
  • Miner create a genis Block with Top hash being "genisis"

what each server's do

In Authserver fill details of the voter that are elibale to vote. accepts a get request with details to provider signed tocken that is used in elcetion.

In Votebank create a candidates and thair affiliation (party tey represent) and Symbol they use this auto-generates candidates keys. It accepts get request for candidates and provides their detals to voter(incuding public keys). It accepts a post request to verify and sign the blind messege.This will provide Public keys for verification of this vote till end of election

Miner accepts all votes that is submitted to them. vote is signed messege is unblinded with r'. Miners Mine all votes to build longest Blockchain. we can add a reward function to system similar to Block chain.

Future work

additon of ring signatures to the system to improve decuppling of voter's identity and vote

Reffrences

[1] Taş, Ruhi, and Ömer Özgür Tanrıöver. 2020. "A Systematic Review of Challenges and Opportunities of Blockchain for E-Voting" Symmetry 12, no. 8: 1328. https://doi.org/10.3390/sym12081328

blockchain_voting's People

Contributors

lohith-loke avatar

Watchers

 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.