Skip to content

End-to-end verifiable voting introduces a new open-source technique of holding safe and secure elections while maintaining the sanctity of vote, as well as allowing election authorities to count, audit, and announce the results of the elections.

License

Notifications You must be signed in to change notification settings

codeforpakistan/intikhab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Electronic Voting Machine using Homomorphic Encryption

A secure electronic voting system implemented using Django and Paillier Homomorphic Encryption. This system allows for secure vote casting and counting while maintaining voter privacy through advanced cryptographic techniques.

Features

  • Secure voter registration and authentication
  • End-to-end encrypted voting process
  • Homomorphic vote tallying (count votes without decrypting individual ballots)
  • Vote verification system
  • Admin dashboard for election management

Technology Stack

  • Python 3.x
  • Django 4.2
  • Paillier Homomorphic Encryption (lightphe 0.0.8)
  • SQLite (default Django database)

Prerequisites

  • Python 3.x installed
  • Basic understanding of command line operations
  • pip (Python package manager)

Installation and Setup

  1. Clone the repository
git clone <repository-url>
cd <repository-name>
  1. Create and activate a virtual environment

On Windows

python -m venv venv
venv\Scripts\activate

On Mac/Linux

python3 -m venv venv
source venv/bin/activate
  1. Install the required dependencies
pip install -r requirements.txt
  1. Run database migrations
python manage.py migrate
  1. Run the development server
python manage.py runserver
  1. Access the application at http://127.0.0.1:8000/ or http://localhost:8000/

Project Structure

electronic-voting-machine/ ├── app/ │ ├── management/ │ ├── migrations/ │ ├── static/ │ ├── templates/ │ ├── admin.py # Admin configuration │ ├── apps.py # Application configuration │ ├── encryption.py # Homomorphic encryption implementation │ ├── models.py # Database models │ ├── tests.py # Test cases │ ├── views.py # View controllers ├── project/ │ ├── asgi.py # ASGI configuration │ ├── settings.py # Project settings │ ├── urls.py # URL configuration │ └── wsgi.py # WSGI configuration ├── uploads/ ├── manage.py ├── ReadMe.md └── requirements.txt

How It Works

This electronic voting system uses Paillier Homomorphic Encryption to ensure:

  1. Vote Privacy: Individual votes are encrypted and cannot be traced back to voters
  2. Vote Integrity: Votes cannot be altered once cast
  3. Verifiable Counting: Vote tallying can be verified without compromising privacy

The Paillier cryptosystem allows for mathematical operations on encrypted values, enabling vote counting without decrypting individual votes.

Security Features

  • Homomorphic encryption for vote privacy
  • Secure user authentication
  • Encrypted data transmission
  • Protection against double voting
  • Audit trail for verification

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

License

This project is open-sourced under the MIT License - see the LICENSE file for details.

Contact

For any questions or feedback, please contact us at [email protected].

Changelog

v0.0.1
- Initial release
- Basic E2EVV implementation

About

End-to-end verifiable voting introduces a new open-source technique of holding safe and secure elections while maintaining the sanctity of vote, as well as allowing election authorities to count, audit, and announce the results of the elections.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published