GithubHelp home page GithubHelp logo

00mjk / sev Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gabrieldim/sev

0.0 0.0 0.0 55.28 MB

Secure E-Voting system. This project is structered as two seperate Java Spring Boot applications.

Java 11.97% CSS 27.74% HTML 60.29%

sev's Introduction

SEV - Secure E-Voting

The system is using mutual X.509 authentication

The client verfies the server according to it's certificate, that certificate is issued by a trusted certificate authority.

By using X.509 in Spring Security the server verifies the identity of the client (voter) while the client is connecting.

The system uses it's own Root CA (Certificate Authority) and it uses it to sign server-side and client-side certificates. Using the OpenSSL library we generated our own Root CA and used it to sign both the server and the client certificates.


The project is structered as two seperate applications

  • The first application is the "cert-email-sender" located in the folder with same name, this is the application that the voters use to obtain their X.509 certificate so that they can authenticate in order to vote. The certificates are issued for everyone eligible to vote. When the user requests to get their certificate, using the code received by post the right certificate is sent to the right user.

  • The second application is "sev" located in the folder with the same name, this is where the actual voting happens. In order to be able to access anything on this application you first need to obtain your certificate via the "cert-email-sender".

These are both completely different systems and they both serve their specific task.


Use case flow

  1. The user receives a generated code by post to his home address. This code must be used on the "Request a Certificate Form" in order to obtain the Certificate via email. The use of the code is the only valid way for the user to obtain a Certificate.

  2. The user goes on the "Request a Certificate Form" page. On this page the user enters the code, the first name, the last name and the e-mail where the user wants to receive the X.509 Client Certificate to be able to continue with the voting process.

  3. The user should check their e-mail inbox, there they should have received their certificate and the password for the certificate. Then the user should import the certificate in the web browser. (The instructions are below in the instructions section).

  4. After importing the certificate the user can vote. In order to vote the user goes to the voting page on the "sev" application. When the user tries to access the voting page a prompt will pop-up asking for a certificate. The user should choose the previosly imported certificate and click OK.

  5. Then the user will be presented with the voting interface, this interface is available only if the user presents the client certificate and there is no other way to get to the interface and vote.

  6. When the user votes, only the ID of the selected candidate is sent and after the user has voted there is no way to see to whom the vote has been given, it only increments the vote count of the selected candidate.

  7. After the successfull voting the user will be presented with the current results of the votes.

  8. After the voting is completed the user can no longer vote again and an appropriate message will be shown.


Instructions

Install a .p12 certificate in Firefox:

  1. Type about:preferences in the address bar (or open the top menu bar and choose Preferences).

  2. Search for certificates and click View Certificates -> Your Certificates

  3. Click on Import

  4. Locate the downloaded Certificate that got sent to your email and click OK

  5. Input the password that you got sent to your email in order to import the certificate and click OK

sev's People

Contributors

gabrieldim 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.