eValg 3

Utviklerforum (28.11.2019)


Simeon Simeonov (sgs @ USITINT)

Agenda


  • Introduction

  • Components

  • Development

  • Q & A

Introduction

eValg 3

  • Development started in 2017 and then again in 2018

  • The last trial election (https://valg-pilot.uio.no) ended 15.11.2019

  • Currently the eValg team consists of two developers (skh, sgs)

Components


  • Backend

  • Dataporten

  • Frontend

Backend

  • General: Python >= 3.6, Flask, SQLAlchemy

  • DB: Alembic, SQLAlchemy-continuum, Flask-migrate

  • Signing & encryption: pynacl

  • Querying (GraphQL): graphene, graphene-sqlalchemy

  • Others: pytz, sentry_sdk, python-json-logger and many more

Dataporten

  • OpenID Connect: Moved from Authorization code flow to Implicit flow (id_token token) in 2018

Frontend

  • General: React, react-oidc, GraphQL

  • Encryption: TweetNaCl - a crypto library in 100 tweets

  • Many, many more libraries and packages

Development


  • Improvements

  • Goals & challenges

Improvements

  • Testing (pytest) & CI (Jenkins) - the best in USITINT so far?!? :)

  • No more FNR* and cross domain access. #GDPR

  • No more external programs (GnuPG, evalg.jar) and envelopes ...

  • Insight in all possible election paths in case of drawing

* - work in progress

Goals & challenges

  • Anyone should be able to create an election

  • No private key shall ever live in the backend

  • Log & audit all changes

  • It is never too late to change a pollbook

  • It is never too late to master public-key cryptography ... :)

Q & A

???

“Old questions are not answered—they only go out of fashion” - Donald Schön