Valg i MDB2 - Teknisk dokumentasjon
Databasestruktur
ER-diagram
Valg-tabellen og valgtype
Et valg er gyldig når tiden er mellom starter og slutter. Alle funksjoner rundt et valg unntatt valgsletting og å sjekke resultat er kun tilgjengelig mens valget er gyldig. Ved stenging av valget settes slutter lik nåtid.
Et valg kan ha en av tre typer:
valgtype | navn | beskrivelse |
---|---|---|
fysisk | Fysiske urnevalg | For urnevalg med fysiske lapper. Systemet brukes kun til validering av medlemskap. |
remote | Digitale valg (remote) | Alle medlemmer med gyldig medlemskap i MDB2 kan stemme ved å logge inn på MDB2. Ingen beeping av kort gjøres; alle kan stemme uansett Hovedsakelig brukt under covid. |
digitalt | Digitale valg (tilstedeværelse) | Man må først beepe kortet i storsalen før man kan avlegge stemme digitalt. Dette er også den eneste valgtypen der en valgbås kan benyttes. |
Stemmer
stemmer brukes for å verifisere at man ikke kan stemme flere ganger via medlemsdatabasen. Vesentlig her er variabelen stemt. Hvis denne er false betyr det at medlemmet har registrert seg, men ikke enda avlagt stemme. Hvis denne er true er stemmen avgift. For digitale valg med tilstedeværelse kan altså medlemmet kun avgi stemme dersom stemt er false (det samme gjelder angring av stemmer). Ved digitale valg uten krav om tilstedeværelse settes denne true etter medlemmet har stemt ( false brukes ikke). Når det er valg med fysiske lapper settes den lik true når kortet har blitt beepet (igjen, false brukes ikke). stemmer har også en fremmednøkkel til medlem tabellen, fordi en må ha gyldig bruker i MDB for å avgi stemme. Denne brukes da for å bekrefte at et medlem ikke kan beepe kortet to ganger.
Valgbås-stemmer
valgbaas representerer stemmer i valgbåsen. Denne har et aktiv flagg som forsikrer at kun en kan være i valgbåsen samtidig. Så hvis aktiv er true for en rad regnes valgbåsen som opptatt. Hvis man bruker funksjonen for å frigjøre en opptatt valgbås (eller angrer valgbås-beep) vil denne sette aktiv til false for den aktuelle raden. Valgbåsen lar kun en person avgi stemme hvis det finnes en rad der aktiv er true. Denne tabellen har en fremmednøkkel mot kort , siden kortet ikke nødvendigvis må være registrert på en bruker (men det må finnes i systemet, siden systemet vet alle kort lagt ut for salg). Det gjøres mindre validering her: det som sjekkes er at kortet er et medlemskort, og hvis det tilhører et medlem i systemet, sjekk at denne personen ikke har kort som har blitt brukt til å avlegge stemme på nett.
Valgbås-sesjon
valgbaas_sesjon representerer nettop det: en valgbås-sesjon. Hva er det for noe? Jo, vi må ha en måte å si at Raspberry PI-en som brukes som valgbås-PC faktisk er den eneste legitime kilden til stemmer i valgbåsen. Dette gjøres med litt autentisering: for hver sesjon genereres et 7-sifret passord. Dette passordet kan man så taste inn i valgbåsen når den starter opp. Etter det opprettes det en UUID-token ( sesjon_pollett ) i databasen, som også lagres som en cookie i nettleseren på Raspberry PI-en for videre autentisering, slik at man kun trenger å taste passordet en gang. Denne cookien er gyldig i 24 timer.
Valgbås-sesjoner kan ugydliggjøres ved å sette gyldig til false . Dette kan man gjøre hvis det mot formodning skulle være noen hackere som taster inn passordet et annet sted og prøver å si at de er valgbåsen. Det kan kun eksistere en gyldig sesjon om gangen, så man vil merke at man ikke får til å sette opp valgbåsen. Da kan man ugyldiggjøre sesjonen og lage en ny en.
Ved å velge "Sertifisering" fra hovedsiden kan man både se passordet og ugydliggjøre eksisterende valgbås-sesjon.
Alternativ
Denne lagrer hvor mange stemmer hver av de ulike avstemmingsalternativene har fått. Merk at disse ikke lagres sammen med valgbaas eller stemmer for å gjøre det mindre sporbart hvem som har stemt på hva. For begrenset validering av resultatet sjekkes det at totalt antall stemmer per alternativ er lik totalt antall avgitte stemmer per stemmer + antall avgitte stemmer per valgbaas .
ACL-er
Tilgangsstyring gjøres, som stort sett alt annet, via https://acl.samfundet.no. Det er tre tilgangsnivåer der den mer spesifikke tilgangen arver alle tilgangene til den mindre spesifikke (slik som i Billig).
Rolle | ACL-sti | Tilganger | Tiltenkt for |
---|---|---|---|
Observatør | /web/medlemsdb/admin/election/counter/observer | Observere metadata under valget Se resultat | Raadet |
Tellekorps | /web/medlemsdb/admin/election/counter | Registrere/beepe kort, både til MDB og valgbåsen | De som stiller fra KLST/LK (varierer fra gang til gang) |
Admin | /web/medlemsdb/admin/election | Opprette,slette og stenge valg Sertifisere valgbåsen | ITK |
Valgbås-klienten
Hardware og Software
Valgbås-klienten er en Raspberry Pi med touch-display. Den kjører per nå Raspbian (nesten Debian) Bookworm som OS. Den er også lagt i Puppet med manifest votebooth . Se Billig dør for mer detaljer rundt pakker som brukes på denne, siden de kjører det samme i bånn (denne får også f.eks. en statisk IPv6-addresse gjennom Puppet). I kontrast med billigklienten, dog, bruker valgbåsen Chromium for GUI. Valgbåsen peker bare på URL-en https://medlem.samfundet.no/votebooth. Chromium-programmet er også startet med visse flagg som gjør at man ikke f.eks. kan bytte fane eller kødde rundt på andre måter i nettleseren.
Siden vi bruker Chromium og cookies lagres på disk vil også i utgangspunktet valgbåsen tåle en restart midt under valg, hvis man skulle finne på å miste strømmen.
Hvis valgbåsen mister nett vil man potensielt komme til en "Ingen internett-tilkobling"-side. Chromium skal i utgangspunktet laste inn på nytt når man får nett, men hvis den ikke skulle gjøre det kan man enten a) starte valgbåsen på nytt (enklest) eller b) plugge inn et tastatur å refreshe nettleseren med Ctrl+R (tryggest).
Web-interface
Etter at man har skrevet inn passord på valgbåsen vil den automatisk refreshe hvert 5. sekund i vente på at valgbås-funskjonæren skal beepe et gyldig kort. Man kan så avgi stemme. Etter stemmen er avgitt vil man bli møtt med "Stemmen er avgitt!" før man igjen går tilbake til samme refresh-loop.
Sekvensdiagram
Lenker: Start, medlemsdb2, medlemsdb2web
Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2025-02-26 02:59 | Revisjon: 41 (historie, blame) | Totalt: 1922 kB | Rediger