Inspiration
After the very recent U.S elections, we were think about how traditional voting systems often involve physical barriers such as long wait times and accessibility issues for people with disabilities. This applies especially in Singapore where an ever ageing population stresses the need for more accessible voting.
We also wanted to ensure that people continue to maintain trust in Singapore's electoral systems and that any possibility of election tampering would not be possible especially in an increasingly distrustful world. As such we wanted to develop a secure, zero trust voting system where no single authority decides on the election results.
What it does
It utilises a zero trust, multi authority system to ensure that no single authority has the sole decision on the results. It uses both secret sharing homomorphisms and El Gamal encryption to ensure the security and zero trust system validity. It also implements other checks such as facial recognition, a captcha and nric verification.
How we built it
We used Next JS 15 for the front end and for server. The voting system was coded using the next api to ensure scalability and ease of deployment. Frontend used the shadcn/ui library for components and tailwind for styling. The facial recognition portion used face-api.js although there were some dependency issues that we had to fix.
Challenges we ran into
Frontend: There were several issues with peer dependencies as well as type management that we had to fix. Some of the dependencies also had been deprecated which was frustrating to fix. We also had to worry about design choices since this web app was developed with accessibility being a key feature along with security. Finding the right balance was difficult, but possible. We were also trying to implement Singpass QR and MyInfo KYC both of which we realised was not possible since we did not have a corppass account :(
Voting System / Backend: It was a technically very complex and mathematical system. One that required us to spend the night reading research papers to grasp and implement. It also required the use of precision integers due to its very calculative nature.
One of our teammates unfortunately fell sick halfway through the hackathon.
Accomplishments that we're proud of
Successful development of a facial recognition software built on tensorflow.js. Clean and intuitive UI design utilizing the full suite of tools available to us.
Voting System: Development of a secret sharing homomorphic system.
What we learned
We learnt how to apply new concepts to things that we initially thought were supposed be to done one way. We also learnt how to incorporate the facial recognition into the front-end and also how to implement some crazy math in javascript
What's next for Athens
SingPass MyInfo implementation (hopefully) Smoother facial recognition workflow Enhanced verification system
Built With
- cryptography
- facedetection
- next
- node.js
- react
- tailwind
Log in or sign up for Devpost to join the conversation.