Da qualche settimana sta girando l’idea di registrare voti su una blockchain, come elemnto di sicurezza.

Qualche giorno fa, con un amico italiano che si occupa di AI in California e che era venuto a trovarmi, abbiamo discusso del seguente problema: se esprimo un voto, come posso essere certo che il mio voto effettivamente sia contato in modo corretto ?

Con le urne di carta, ne sono ragionevolmente certo perchè sono io stesso a compilare la scheda, ad infilare la scheda nell’urna e perchè posso restare a sorvegliare che l’urna non venga manomessa fino al conteggio (o direttamente guardando dalla porta o tramite delle persone di fiducia ovvero i cosidetti delegati di lista che presidiano fino allo spoglio finale).

Se voto con un computer, sorge la domanda: come posso sapere che ciò che viene registrato nel DB sia effettivamente ciò che io ho pigiato ? Il software potrebbe essere stato alterato. Controllare i codici sorgenti non aiuta un granchè. In primo luogo non è alla portata di tutti, in secondo luogo il software difficilmente e’ comprensibile (cfr. obfuscated c code contest) ed infine, come posso essere certo che il software non sia stato alterato in memoria durante il tempo delle votazioni (ed eventualmente poi ripristinato) ? Esistono dei meccanismi per assverare ciò, è un po’ una frontiera della ricerca in crittografia, e comunque alla fine ti devi fidare dei pochi iniziati in grado di verificare.

Ecco allora una prima idea di usare la blockchain: un registro pubblico immutabile in cui c’è espresso il mio voto in chiaro (cosi’ tutti lo possono contare) ed associato ad esso c’e’ il mio identificatore criptato con una chiave che solo io ho, cosi’ solo io posso sapere che sono io ad avere espresso quel voto e posso verificarlo.

In effetti cosi’ non è sufficiente. Basterebbe aspettare e vedere cosa si scrive subito dopo che ho votato, per sapere come ho votato. Problema che si può risolvere per esempio aggiungendo una cifratura anche della mia preferenza con una chiave che  sia possibile usare solo dopo la chiusura delle urne.

Però così ho un altro problema. Se io posso verificare dopo la chiusura delle urne se il mio voto è registrato in modo corretto, posso farlo anche di fronte al mafioso di turno che mi dà 20 euro per il mio voto.

In generale, il problema della verifica del voto così espresso non si risolve senza introdurre altri punti di vulnerabilita’ in un sistema o di una terza parte di cui fidarsi. Ovvero, registrare autonomamente il voto in modo tale da consentirmi autonomamente di verificarlo ex post, senza introdurre punti di possibile vulnerabilità,  mi abilita il voto di scambio.

Ora immaginiamo che si faccia un sistema di consultazione online che venga usato per deliberare in merito ad un determinato investimento, ad esempio un porto. Immaginiamo poi si scopra che in quell’investimento per quel porto c’erano delle cointeressenze mafiose. (ad esempio le cronache giudiziarie recenti raccontano di  presunti fatti legati alla decisione  di fare o meno lo stadio nuovo per la Roma).

Cosa si potrebbe dire in merito al fatto di avere preso una tale decisione con un sistema che consenta il voto di scambio ?

Se non si introduce questa possibilità di verifica, e quindi ci si deve fidare del software in esecuzione, cosa si potrebbe dire in merito al fatto di avere preso una tale decisione su un sistema gestito da Tizio ?

Fidarsi ciecamente di Tizio ? Potrebbe dimostrare che il software in esecuzione in quel momento fosse quello effettivamente pubblicato su github ? E’ unpunto molto complesso.

In una decisione del genere, in cui si salvino contemporaneamente capra e cavoli ( verificabilità, certificabilità, non vendibilità) l’automatismo della decisione trasferisce immediatamente una dose di criticità sui creatori del software o sui gestori del sistema.

La filiera di segretezza (rispetto ad altri)/ verificabilità (da parte di chi vota)/non vendibilità (a terzi)/responsabilità (di chi gestisce il sistema) è tutt’altro che banale..

Questa era la conclusione della chiaccherata…