Historisk arkiv

Hvordan kontrollere den digitale stemmeurna

Historisk arkiv

Publisert under: Regjeringen Stoltenberg II

Utgiver: Kommunal- og regionaldepartementet

Systemet for internettstemming genererer med jevne mellomrom en komplett liste over SHA-256-hashene av alle de mottatte, krypterte internettstemmene. Listen publiseres én gang i timen på en nettside på Github. Listen oppdateres og vil være tilgjengelig fram til valgresultatet foreligger.

Systemet for internettstemming genererer med jevne mellomrom en komplett liste over SHA-256-hashene av alle de mottatte, krypterte internettstemmene. Listen publiseres én gang i timen på en nettside på Github. Listen oppdateres og vil være tilgjengelig fram til valgresultatet foreligger.  Ved å kopiere din hash etter at du har stemt - men før du logger deg ut - kan du etterpå sjekke at den finnes på Github. Da vet du at din internettstemmen finnes i den digitale stemmeurnen.

På valgdagen vil det være en uavhengig tredjepart som kontrollerer at listen stemmer over ens med innholdet i den digitale stemmeurnen før innholdet telles. Så lenge det er samsvar mellom listen og stemmeurnen kan en vite at alle gyldige stemmer blir talt.

Det digitale valgarkivet på GitHub

Følgende filer finnes i stortingsvalgarkivet (130001 er valgidentifikator for årets stortingsvalg):

  • bulletin_130001.txt: inneholder alle hashene av de krypterte stemmene som har blitt publisert til nå. 
  • bulletin_130001.sig: signatur som kan brukes til å verifisere at listen er ekte og korrekt
  • README.md: henviser til nettsiden du er på nå

bulletin_130001.txt er en kommaseparert fil (CSV) der første linje er klokkeslettet som angir når denne versjonen av listen ble laget. Resten av fila inneholder følgende linje per mottatte stemme: 

  • SHA-256-hash av en kryptert stemme
  • Én av signaturene over hashen av den krypterte stemmen (mer om dette senere)

Listen blir oppdatert en gang i timen.  Dersom du har kopiert din hash og signaturer etter at du stemte, så søke etter din hash ved å ta opp søkefeltet i nettleseren (Ctrl + f) og lime inn (Ctrl+v) hashen du kopierte. Hvis du finner hashen, så vet du at din stemme er mottatt og lagret.

Dersom du ikke finner hashen, kan det være at du er for tidlig ute og at listen ikke er oppdatert. Om du mener listen burde ha blitt oppdatert etter at du stemte, men du likevel ikke finner din hash, ring brukerstøtte på tlf 800 38 254. Hvis du stemmer flere ganger, vil alle hashene ligge lagret i listen. Kontroller gjerne flere ganger.


Digitale signaturer

I Internett-valgklienten kan du kopiere to signaturer for hver innsendte stemme. Det er kun en av signaturene for stemmen som blir publisert i “bulletin_130001.txt”. Denne beviser at stemmen er kontrollert og lagret i en av valgets to uavhengige stemmeurner: Return Code Generator (RCG). Signaturen for hele lista, “bulletin_130001.sig” kommer fra den andre av valgets stemmeurner,  Vote Collector Server (VCS), og kan brukes til å verifisere at alle stemmene er lagret.

Klikk her for å laste ned en zip-fil med nødvendige sertifikanter (blant annet Ps_appVCS_130001.crt og  Ps_appRCG_130001.crt).

Hvordan verifisere at listen er ekte

Den komponenten av internettvalgsystemet som lagrer alle stemmene, den såkalte Vote Collector Server, genererer og signerer “bulletin_130001.txt”. Listen kan dermed brukes til å bevise at innholdet i den digitale stemmeurnen er korrekt, altså at den inneholder alle hashene til alle de krypterte stemmene i urnen og at disse ikke er endret. I mer detalj, så er signaturen over en hash av hele listen (hexadesimal, utf-8 uten linjeskift). Signeringen gjøres med en 2048-bits RSA-nøkkel over en SHA-256.

For å verifisere at listen er ekte og komplett trenger du følgende:

  • Ps_appVCS_130001.crt som er sertifikatet til Vote Collector Server (VCS)
  • bulletin_130001.txt  
  • bulletin_130001.sig
  • programvaren OpenSSL (denne kan du laste ned gratis fra openssl.org)

Her følger kommandoer for GNU/Linux-openssl:

  1. Hent ut den offentlige nøkkelen til VCS: $ openssl x509 -pubkey -noout -in Ps_appVCS_130001.crt > pubkeyVCS.pem
  2. Generer en SHA-256 hash av listen med sha256sum, fjern alle mellomrom og linjeskift og lagre i en ny tekst.fil: $ sha256sum bulletin_election_id.txt | grep -o '^[^ ]*' | tr -d '\n' > sha.txt
  3. Verifiser signature ved hjelp av den offentlige nøkkelen: $ openssl dgst -sha256 -verify pubkeyVCS.pem -signature bulletin_election_id.sig sha.txt

Verifisere din stemme

For å verifisere at en enkeltstemme virkelig er mottatt av RCG trengs Ps_appRCG_130001.crt som er sertifikatet til Return Code Generator.

Her følger kommandoer for GNU/Linux:

  1. Hent ut den offentlige nøkkelen til RCG: $ openssl x509 -pubkey -noout -in Ps_appRCG_130001.crt > pubkeyRCG.pem
  2. Hent ut den aktuelle linja fra “bulletin_130001.txt” og lagre i en tekstfil, f.eks foo.txt
  3. Hent ut hashen av den krypterte stemmen fra steg 2: $ cat foo.txt | awk -F',' '{print $1}' | grep -o '^[^ ]*' | tr -d '\n'  > receipt.txt
  4. Hent ut signaturen og converter fra Base64 til binær representasjon fra steg 2: $ echo $entry | awk -F',' '{print $2}' | base64 -d > receipt.sig
  5. Verifiser: $ openssl dgst -sha256 -verify pubkeyRCG.pem -signature receipt.sig receipt.txt

 

 

Ta kontakt med brukerstøtten dersom du trenger ytterligere hjelp.