De gemeente Groningen houdt tijdens het referendum van a.s. woensdag een proef met het digitaal tellen van stemmen. In vijf stembureaus telt de gemeente de stemmen niet alleen met de hand, maar ook met een nieuw ontwikkelde applicatie. Deze applicatie is gebaseerd op blockchain. Dat intrigeert mij dan natuurlijk… Helemaal als blijkt dat de gemeente Groningen kiezers bij het referendum (weliswaar gehasht) registreert in de blockchain…

Meer informatie is te vinden op de website van de gemeente. Ook is er een aparte website opgezet over de proef. In de proef werkt de gemeente samen met adviesbureau Berenschot uit Utrecht en het bedrijf Lab 15 uit Amsterdam.

Helaas is de informatie op de verschillende websites summier. Ik heb daarom contact gezocht met de ontwikkelaars van Lab15, die zeer behulpzaam waren en een aantal vragen van mij hebben beantwoord. Voor antwoord op andere vragen verwezen ze naar technische documentatie, die ze zouden opsturen zodra deze klaar zou zijn. Het is nu twee dagen voor het referendum en ik heb nog niets ontvangen… Helaas. Ik had die informatie graag meegenomen.

Volgens de ontwikkelaars is de proef vooral gericht op het betrouwbaar tellen van de stemmen. Helaas is online niets te vinden over hoe dat zou moeten werken. Dat is wel jammer, want er was en is inderdaad het nodige mis met OSV.

Wel is er informatie over de registratie van de kiezers. Bij vijf stembureaus in Groningen staan medewerkers met een speciaal ontwikkelde app die van alle kiezers (die daar mee instemmen) de QR code op de stempas scannen. (Alle kiezers van de stembureaus waar de proef plaatsvindt zijn overigens netjes geïnformeerd.) In die QR code staat het stempas nummer. Dit stempas nummer bevat onder meer een code die aangeeft welke verkiezingen het betreft, het stemlokaal en een volgnummer. Dit is dus een uniek nummer dat voor iedere kiezer anders is. Bovendien bezit de gemeente een registratie die het stempas nummer aan een persoon koppelt. Deze registratie is nodig om, bijvoorbeeld, voor kiezers die zeggen geen stempas te hebben ontvangen het oude stempas nummer ongeldig te maken en een nieuwe stempas uit te kunnen geven.

Dit is dus in tegenspraak met de FAQ op de website die stelt dat:

De QR code bevat geen persoonsgegevens, de QR code bevat alleen de datum en locatie van het stembureau.

De gescande QR code, het stempasnummer dus, wordt samen met een salt gehasht. De hash wordt op de blockchain geregistreerd. Als blockchain wordt Enterprise Ethereum gebruikt. En deze gegevens worden één jaar bewaard. Niet duidelijk is wie er allemaal (lees)toegang hebben tot deze blockchain. De bedoeling is goed, maar ik vrees toch dat dit niet helemaal de juiste oplossing is.

Zolang de salt maar geheim is, is gegeven een hashcode niet meer terug te herleiden met welk stempasnummer deze overeenkomt. Volgens de ontwikkelaars is de salt alleen bij hen bekend. Maar de salt staat ook (in ieder geval) op alle iPads die bij alle stembureaus worden gebruikt om de stempassen te scannen en de codes te registreren op de blockchain.

Zodra de salt wel bekend is, kan de lijst met uitgegeven stempas nummers gebruikt worden om te achterhalen welke stempassen gescand zijn, en dus (via het door de gemeente beheerde register van stempas nummers) wie er bij het referendum gestemd hebben. Omdat de stempassen per stembureau gescand worden, en de uitslagen ook per stembureau gepubliceerd worden, zou bij een extreme uitslag op een stembureau (veel voor of veel tegenstemmers) dus een goede inschatting gemaakt kunnen worden of iemand voor of tegen de wet heeft gestemd. In ieder geval is te achterhalen wie de wet überhaupt belangrijk genoeg vond om voor of tegen te stemmen.

Dat voelt allemaal wel ongemakkelijk, zeker bij een referendum over een wet over de inlichtingendiensten. Inlichtingendiensten die gerechtigd zijn (zie artikel 39 van de Wiv) alle mogelijke informatie op te vragen bij derden, dus ook het register van de stempassen dat de gemeenten beheren, en de salt die Lab15 bewaart. Inlichtingdiensten die op die manier een registratie op kunnen bouwen over wie er gestemd hebben over ‘hun’ wet, en daarbij ook een inschatting kunnen maken of iemand voor dan wel tegen ‘hun’ wet heeft gestemd. (Artikel 39 vermeld niet expliciet dat derden niet verplicht zijn mee te werken aan zo’n verzoek; volgens mij bestaat die verplichting niet…)

En dan hebben we het helemaal nog niet gehad over het eigenlijke doel van de proef, en de rol van de blockchain daar in. Er was en is inderdaad veel mis met OSV, de software die nu gebruikt wordt om tussenresultaten op te tellen en de uitslag te bepalen. Maar is blockchain daarvoor de oplossing? Het lijkt er meer op dat een probleem bij een oplossing gezocht wordt, dan dat er serieus geprobeerd wordt het probleem op te lossen. (Het ontbreken van enige technische documentatie over hoe het systeem het proces van tellen moet verbeteren is wat mij betreft een teken aan de wand).

Het gros van de problemen met OSV is op te lossen door alle aanbevelingen van Fox-IT op te volgen, en een nieuwe, netjes geprogrammeerde versie te programmeren. Één van die aanbevelingen is om de transparantie van het verkiezingsproces te verhogen, door het “op een toegankelijke wijze publiceren van de volledige digitale en de papieren gegevensstromen”. Daar kun je in theorie een blockchain voor gebruiken. Maar als de bronnen van deze informatie toch al vast liggen, is het voldoende om deze informatie op een openbare website te publiceren, voorzien met een digitale handtekening van de bron (e.g. het stembureau, het kiesdistrict of het centrale stembureau). Zo’n website is sowieso toegankelijker dan een blockchain….

(P.S.: N.a.v. een discussie met Jeroen van der Ham op Twitter is het wel goed om voor de duidelijkheid te melden dat sowieso je stempas (met stempasnummer) op het stembureau wordt ingenomen. Daar vind ik overigens ook al wat van… De ingenomen stempassen worden op het stembureau in pakken verzameld en verzegeld, bewaard door de gemeente, en na drie maanden vernietigd.