BUDÚCNOSŤ
VOLIEB

Bezpečnejšie, rýchlejšie, lacnejšie a ekologickejšie
hero icons

Prečo naše riešenie

Šetrenie papiera

V prípade našeho digitálneho riešenia vôbec netlačíme volebné hárky na papier. Na jedno odvolenie voličom spotrebujeme iba jeden kus malého papiera, ktorý sa uchováva ako potvrdenie. Tieto potvrdenia sú vytlačené iba pre zúčastnených voličov, čím sa tiež ušetrí veľké množstvo papiera. Výrazne znížime spotrebu papiera pri voľbách, čím chránime naše životné prostredie ako aj naše peňaženky.

Rýchlejšie výsledky

Výsledky hlasovania sa spracovávajú automaticky počas volieb, čím vieme priebežne poskytovať prehľad o aktuálnej volebnej účasti. Po ukončení hlasovania vieme výsledky volieb poskytnúť prakticky okamžite. Ak to typ a legislatíva konkrétnych volieb dovoľuje, vysledky môžu byť dostupné v reálnom čase aj počas priebehu volieb.

Znížená chybovosť

V našom riešení eliminujeme chybovosť pri sčítaní hlasov, keďže hlasy sú sčítané elektronicky. Členovia volebnej komisie majú tak na starosti len overovanie totožnosti voličov a vydávanie autorizačných NFC tagov pre hlasovanie.

Možnosť kontroly

V prípade problémov je stále možné vytlačené potvrdenia o voľbe manuálne spočítať a uistiť sa o výsledkoch volieb v prípade ústavnej sťažnosti. Tiež je možné automatizované offline spočítanie hlasov pomocou skenovania QR kódov z potvrdení o voľbe.

Ako voliť

Volebná komisia overí totožnosť voliča štandardným spôsobom, teda pomocou občianskeho preukazu a zoznamu oprávnených voličov vo vytlačenom zozname. Elektronizácia tohto kroku je zámerne vynechaná, aby nebolo v žiadom prípade možné na základe časových pečiatok identifikovať ku ktorému voličovi patrí odoslaný hlas.

NFC tag je naprogramovateľný čip, ktorý v sebe nesie jedinečný autorizačný token pre voľby. Volič si náhodne vyberie jeden z ponúkaných NFC tagov z nádoby. Informácie uložené na tagu nie sú žiadnym spôsobom spájané s identitou voliča. Náhodným výberom sa snažíme získať dôveru voliča v anonymitu volieb.

Volič pristúpi k volebnému terminálu, ku čítačke priloží NFC tag, čím sa vykoná autorizácia a je mu umožnené odvoliť. Volič postupuje podľa pokynov na obrazovke. Aplikácia je navrhnutá s ohľadom na jej použiteľnosť, obrazovka je dostatočne veľká a písmo je jasne čitateľné. Svoju voľbu potvrdí a volebný terminál vytlačí potvrdenie o hlasovaní.

Vytlačené potvrdenie o voľbe volič vhodí do urny. Je umožnená kontrola hlasov aj mimo volebného systému v prípade problémov alebo sťažností. Potvrdenie o voľbe je vytlačené na jednom malom papieri (menšom ako pokladničný doklad) pre každého zúčastneného voliča, čím sa výrazne znižuje odpad.

Po vhodení potvrdenia do urny môže volič opustiť volebnú miestnosť. Výsledky môžu byť po uzavretí miestností dostupné vďaku nášmu riešeniu oveľa skôr ako býva zvykom pri manuálnom prepočítavaní.
Priebeh volieb

Návrh riešenia

Volebná miestnosť

Vo volebnej miestnosti sa nachádza gateway a viaceré volebné terminály pripojené na gateway ethernetovým káblom. Gateway komunikuje s jediným centrálnym serverom, vykonáva synchronizáciu hlasov.

Devices in polling place diagram

Volebný terminál pozostáva z 22 palcovej LCD dotykovej obrazovky, na ktorej je voličovi umožnené voliť. Obrazovka je pripojená k Raspberry Pi, ktoré komunikuje s NFC čítačkou pre umožnenie autorizácie pomocou autorizačných tokenov nahraných na NFC tagoch. Ďalej komunikuje s termo-tlačiarňou, ktorá umožňuje tlač potvrdenia o voľbe.

Gateway umožňuje manažovať celú volebnú miestnosť s terminálmi. Ako jediné zariadenie komunikuje priamo s centrálnym serverom cez internet. Skladá sa z Raspberry Pi, ktoré hostuje všetky mikroslužby manažujúce priebeh volieb. Ku gateway-u je pripojená malá dotyková obrazovka, ktorá slúži na prístup volebnej komisie k systému pre umožnenie riadenia priebehu volieb. Ku gateway-u je tiež pripojená NFC zapisovačka na zapisovanie generovaných autorizačných tokenov na tagy.

Hlavný server je zodpovedný za spracovanie hlasov zo všetkých gateway-ov do jednej databázy a vykonávanie štatistických výpočtov, vizualizáciu výsledkov volieb.

Nastavenia pre jednotlivé voľby sú dané konfiguráciou.

Šifrovanie komunikácie

Bezpečnosť je vo voľbách, najmä v elektronických, prakticky najdôležitejším prvkom. Porušenie integrity volieb môže viesť k zmene výsledkov a v dôsledku toho k zvoleniu nesprávnych kandidátov. Keďže naše riešenie zahŕňa iba jeden centrálny server a hlasy z gateway-ov sú odosielané cez verejnú internetovú sieť, rozhodli sme sa použiť RSA a AES algoritmy na šifrovanie prenášaných hlasov.

Encrypted communication diagram

Samotné hlasy sú zašifrované pomocou symetrického kľúča AES, ktorý je potom zašifrovaný verejným kľúčom RSA hlavného servera. Hlasy sú tiež podpísané asymetrickým privátnym kľúčom RSA gateway-a, ktorý zabezpečí, že počas prenosu na server dáta neboli zmenené. Zapojením súkromného kľúča volebnej miestnosti sme zabezpečili, že aj keby útočník poznal verejný kľúč hlavného servera, potrebovali by poznať aj privátny kľúč konkrétnej volebnej miestnosti. Algoritmus AES sa používa kvôli jeho rýchlosti a schopnosti šifrovať správy neobmedzenej dĺžky a je v súčasnosti priemyselným štandardom. Rovnaký proces šifrovania sa používa aj vo vnútri lokálnej siete s volebnými terminálmi.

Všetka komunikácia medzi volebnými terminálmi a gateway-om prebieha len cez lokálnu sieť Ethernet. Okrem toho je každý odoslaný hlas šifrovaný pomocou moderných kryptografických algoritmov. Keby sa i napriek tomu útočník pokúsil pripojiť k sieti a odoslať falošný hlas, nemal by platný privátny kľúč volebného terminálu, takže jeho pokus o útok by zlyhal pri overovaní hlasu, hlas by nebol prijatý.

Výmena kľúčov je najdôležitejšou súčasťou RSA šifrovania. Výmena verejných kľúčov sa vykonáva počas procesu konfigurácie gateway-a autorizovaným personálom pred voľbami. Tu môže zapríčiniť chybu iba ľudský faktor, čo sa taktisto môže stať aj pri doteraz zaužívanom spôsobe volieb.

Životný cyklus hlasu

Dáta reprezentujúce hlas voliča v JSON formáte sú odoslané na backend terminálu, kde sa overí platnosť voličovho autorizačného tokenu a následne je potvrdený aj jeho hlas. Šifrovaný hlas spolu s identifikátorom volebného terminálu a autorizačným tokenom voliča je odoslaný na gateway, kde sa spracuje. Voting Service dešifruje hlas kľúčom daného volebného terminálu a následne overí platnosť autorizačného tokenu. Ak je token platný, hlas sa uloží do databázy a je vrátená správa o úspešnom spracovaní požiadavky. Akonáhle terminál prijme odpoveď, tlačiareň vytlačí potvrdzujúci doklad (malý papier) s podrobnosťami o hlasovaní a QR kódom.

Vote lifecycle diagram

Po odhlasovaní je použitý autorizačný token deaktivovaný, takže s ním nie je možné znova hlasovať. Ak je gateway pripojený k internetu, synchronization service začne odosielať šifrované hlasy na hlavný server v pravidelných intervaloch. Hlasy sú potom spracované na serveri službou voting service, kde sa dešifrujú hlasy pomocou príslušných kľúčov a ak je elektronický podpis platný, hlas je uložený do hlavnej databázy. Hlavný server pravidelne reindexuje nové hlasy pomocou technológie ElasticSearch pre efektívne získavanie štatistík a umožnenie rôznych dopytov nad výsledkami.

Konečné výsledky sú k dispozícii hneď, ako všetky gateway-e zosynchronizujú všetky svoje hlasy. Naše riešenie sme pripravili na veľké množstvo návštevníkov, pretože zobrazovanie výsledkov je riadené pomocou ElasticSearch-u. Táto technológia podporuje distribuované výpočty a je vysoko škálovateľná. Používateľom ponúkame vizualizáciu výsledkov volieb podľa krajov a okresov Slovenska a taktiež je možné vidieť aj rozdelenie kresiel pre strany v parlamente.

Používatelia môžu tiež zadávať vlastné dopyty filtrovaním konkrétneho mesta, regiónu, alebo iného geografického členenia. Zároveň je možné poskytovať čiastkové výsledky volieb aj pokým ešte nie sú ukončené, ak to individuálny prípad použitia umožňuje.

Volebný proces

Voting process diagram

Z pohľadu voliča sa samotný proces hlasovania zásadne nemení. Volič príde do volebnej miestnosti a podrobí sa overeniu identity členom komisie. Namiesto obdržania veľkého množstva papierov s kandidátmi dostane volič NFC tag určený na autorizáciu pri volebnom termináli. Volič pristúpi k volebnému terminálu a priloží NFC tag ku čítačke, po úspešnej autorizácii je odomknutá volebná aplikácia. Veľký dotykový displej zobrazuje zoznam dostupných kandidátov. Volič môže vyhľadávať kandidátov podľa mena, prechádzať stránkami v zozname strán a vyberať preferovaných kandidátov. Volič musí potvrdiť svoju voľbu v každom medzikroku a na konci po zobrazení sumáru hlasovania opäť potvrdiť svoj výber.

Taktiež je možné odovzdať aj prázdny hlas ako to je možné pri klasických voľbách. Volebný terminál informuje voliča o úspechu voľby a vytlačí potvrdenie o hlasovaní (malý papier, ktorý obsahuje QR kód pre možnosť offline počítania hlasov). Následne volič vhodí potvrdenie do volebnej urny a hlasovací proces je z pohľadu voliča ukončený.

Ukážky obrazoviek

Výsledky našej práce

Týždeň 32 / 32
100%
1
05.10.2021
-
18.10.2021

Analýza hardvéru a technológii + Webová stránka

Hardware Architektúra Tímový web
Vytvorili sme tímovú webovú stránku s použitím PHP a Bootstrap v5. Analyzovali sme možné zariadenia pre tlač potvrdení, čítačku NFC tagov a dotykový displej. Navrhli sme high-level architektúru aplikácie. Prihlásili sme sa do TP CUPu.
2
19.10.2021
-
01.11.2021

Dizajn volebnej aplikácie + Projektové metodiky

UI/UX prototype Figma Axure
Vytvorili sme dizajn a prototyp volebnej aplikácie v nástroji Figma. Tento prototyp bude slúžiť na používateľské testovanie s cieľom odhalenia nedostatkov. Doplnili sme metodiky pre manažovanie kódu, testovanie, logovanie času a code style.
3
02.11.2021
-
15.11.2021

Používateľské testovanie a analýza komponentov

UX testing UI design
Vykonali sme 7 používateľských testovaní, pomocou ktorých sme odhalili niekoľko problémov týkajúcich sa hlavne používateľov staršej vekovej kategórie. Zistenia sme zapracovali do dizajnu a prototypu. Ďalej sme vykonali podrobnejšie analýzy komponentov gateway a server, ich vzájomnej komunikácie a definovali sme prvotné dátové modely.
4
16.11.2021
-
29.11.2021

Začiatok implementácie

Microservices Gateway Voting frontend
V tejto fáze sme začali s implementovaním jednotlivých komponentov. Prácu sme si rozdelili a súbežne sme pracovali na prvých prototypoch gatewaya a servera (FastAPI), databázy (MongoDB), a používateľskej aplikácie (Svelte). Navrhli sme ich integráciu pomocou dokerizácie jednotlivých komponentov.
5
30.11.2021
-
15.12.2021

Vytvorenie testov

Microservices Unit tests Pytest
Ďalej sme rozširovali funkcionalitu jednotlivých mikroslužieb a vytvorili sme unit testy pre overenie nášho riešenia. Členovia tímu mali rozdelené jednotlivé služby a doimplementáciu testovacích prípadov s použitím knižnice pytest.
6
16.12.2021
-
14.02.2022

Vianočný šprint

Šifrovanie Server API CI/CD pipelines
Tento šprint sme sa rozhodli natiahnuť na 6 týždňov a každý sme pracovali individuálne podľa chuti. Implementovali sme spracovanie hlasov na serveri, vytvorili sme knižnicu na šifrovanie a implementovali automatizačnú pipeline na deployment.
7
15.02.2022
-
28.02.2022

Hardwarový manifest

NFC čítačka Termotlačiareň Dotykový monitor
V tomto šprinte sme obdržali čítačku NFC tagov, tlačiareň a dotykové zariadenia. Implementovali a modifikovali sme kód na obsluhu daných zariadení a prisposobovali ich nášmu prípadu použitia. Vytvoril sa formát potvrdenia o voľbe na tlačenie.
8
01.03.2022
-
14.03.2022

Integračné testovanie a počítanie výsledkov

Elastic Integračné testy Selenium
Implementovali sme synchronizáciu hlasov do ElasticSearch a vytvorili endpointy na získavanie agregovaných výsledkov. Pripravili sme integračné testy medzi službami volebného terminálu a gatewaya (Selenium a Pytest).
9
15.03.2022
-
28.03.2022

Aplikácia na štatistiky

Svelte Aplikácia na štatistiky Volebný terminál
Implentovali sme automatické generovanie a odosielanie zápisnice. Dokončili sme frontend aplikácie na zobrazovanie výsledkov. Prácovalo sa na tlači potvrdenia o voľbe.
10
29.03.2022
-
11.04.2022

Publikácia na konferenciu

IIT SRC Voting terminal setup
Napísali sme publikáciu na školskú konferenciu IIT SRC, do ktorej sme zapracovali prehľadné diagramy architektúry a fungovania nášho riešenia. Poskladali a prepojili sme zariadenia volebného terminálu.
11
12.04.2022
-
25.04.2022

Príprava na konferenciu

IIT SRC Voting terminal setup Video
Pripravovali sme naše riešenie na konferenciu IIT SRC. Zariadenia volebného terminálu sme niekoľkokrát vyskúšali a pripravili interaktívnu ukážku. Taktiež sme sa zamýšlali nad scenárom tímového videa.
12
26.04.2022
-
18.05.2022

Cieľová rovinka

IIT SRC Video Dokumentácie
Spisovali sme používateľské príručky a technické dokumentácie jednotlivých služieb. Vyčistile sme kódy a zjednotili repozitáre. Odprezentovali našu prácu na konferencii IIT SRC a natočili tímové video. Naše cesta týmto šprintom končí a čaká nás už len prezentácia na finále TC Cupu.

Dokumenty

Zápisnice

Zápisnice

Zápisnica obsahuje transkript konverzácii s vedúcim projektu z našich pravidelných ceremónii, ktoré sa uskutočňujú každý utorok. V zápisnici sú poznačené rozhodnutia, ktoré sme na ceremónii vykonali a sú zadefinované ciele na ďalší týždeň.
Zhodnotenie šprintov

Zhodnotenie šprintov

Po dvoch týždňoch sa v rámci retrospektívy spoločne zhodnotí práca na projekte. Vyhodnotí sa množstvo úspešne dokončených úloh, zistia sa problémy s úlohami, ktoré sa nepodarilo zrealizovať a následne sa tieto poznatky zoberú do úvahy pri pridávaní úlohy do nového šprintu.
Metodiky

Metodiky

Náš tím pracuje s viacerými metodikami, v ktorých sú rámcovo podrobne zadefinované požiadavky na štruktúru a kvalitu práce ktorú na projekte vykonávame. Cieľom je počas celej dĺžky trvania projektu dodržiavať tieto metodiky.
Ostatné

Ostatné

Ostatné dokumenty obsahujú rôzne náležitosti spojené s priebehom predmetu tímový projekt a súťažou TP CUP.

Tím

Jaroslav Erdelyi

Jaroslav Erdelyi

Odborník na bezpečnosť IoT systémov a úžasný školiteľ. Vo voľnom čase rád skladá rubikovu kocku.
Lucia Janíková

Lucia Janíková

Pracovitá a motivovaná študentka so záľubou pre cestovanie. Má rada aby bolo všetko precízne a bezchybné.
Denis Klenovič

Denis Klenovič

Nadšenec pre webové technológie a design. Vo voľnom čase rád pečie a sleduje filmové novinky.
Matúš Staš

Matúš Staš

Cieľavedomý študent s veľkými plánmi do budúcna. Má rád cyklistiku a prírodu. #FocusMaster
Marek Ceľuch

Marek Ceľuch

Rád kritizuje, sranduje a nevie si vybrať jednu oblasť. Nemá rád Windowsy, vo voľnom čase sa venuje hudbe a nepohrdne seriálom či víkendom Formuly 1.
Timotej Králik

Timotej Králik

Jeho revírom sú dáta a optimalizované systémy. Mimo IDEčka sa rád vyšantí na športovisku alebo na horách.
Libor Duda

Libor Duda

Vyzná sa vo webových technológiách. Vo voľnom čase zanietený kutil a fanúšik spravodajstva. #Skeptik
Adam Slatinský

Adam Slatinský

Odborník na bezpečnosť, ktorý pri PC neplytvá časom, ale všetko si automatizuje. Assembleru sa nebojí, stránky nakódi, appky nahackuje a v škole exceluje.