Direttore responsabile: Giovanni Capaccioli

Voto elettronico in blockchain

Considerazioni o critiche che muoverebbero due personaggi come Nakamoto e Brunei

a cura di Luca Vignali, CSO di Affidaty s.p.a.

Voto elettronico in blockchain

Lo scopo di questo documento è quello di individuare e risolvere le potenziali criticità di un sistema di voto elettronico che porta con se delle complessità tecniche difficili da comprendere e da risolvere per un “non addetto ai lavori” e che, se ignorate, potrebbero suscitare la falsa illusione di aver scovato dietro l’angolo “la soluzione” e di chiedersi anche “come mai gli altri non ci sono arrivati”.

Per fare questo mi sono immaginato un esperimento mentale in cui io, Luca Vignali, sono di fronte a Satoshi Nakamoto (inventore della blockchain Bitcoin) e Brunei (un hacker di fama mondiale).

Cosa direbbe Satoshi Nakamoto se presentassi a lui un’idea di voto in blockchain senza svelargli le tecniche architetturali?

Sicuramente converrebbe con me che i costi dell’operazione non sono compatibili con quelli di Bitcoin e comunque la tecnologia Bitcoin, anche se promettente, non nasce ne’ ha intenzione di evolvere per ospitare voti o sistemi simili.

Sicuramente Ethereum sarebbe decisamente più indicata per la sua natura, ma ogni utente dovrebbe avere un suo wallet su Ethereum per votare e comunque ci sarebbe una transazione economica alla base, il cui costo potrebbe addirittura volontariamente schizzare alle stelle, in vista di un’elezione, speculando di fatto su una tecnologia che nasce per attrarre spenditori di Ether.

Sicuramente mi chiederebbe:”Perchè blockchain? Falla in Cloud! Tanto se devi usare una blockchain privata, per molti aspetti è comunque centralizzata, o comunque replicata in ambienti autorizzati (e quindi sotto il controllo di qualcuno) ,per cui l’adozione forzata della tecnologia blockchain, oltre al costo e all’inefficienza, comunque non produrrebbe i benefici di un sistema pubblico e distribuito; a questo punto falla su Amazon ed applica tutte le tecniche di crittografia e kerberos anonymous per rendere il voto disaccoppiato dall’utente”.

Cosa direbbe Brunei se presentassi a lui un’idea di voto in blockchain senza svelargli le tecniche architetturali?

Un hacker può essere definito come un profondo conoscitore dei Sistemi Informatici di base.

Questi sistemi sono usati perlopiù da persone che ne ignorano le caratteristiche di base (developers) , facilitati da una programmazione sempre più ad alto livello, che tendono a commettere errori formali,i quali a loro volta possono essere sfruttati da hackers per trarne un profitto economico.

Spesso questi errori non sono dei veri e propri sbagli di programmazione,ma un hacker è in grado di raccogliere dati da più fonti, raggrupparli e aggirare sistemi anche molto complessi, muovendosi in ambiti non conosciuti ai consulenti più esperti.

Detto questo, cosa ne penserebbe Brunei di un sistema di voto elettronico basato su Blockchain?

Innanzitutto se la blockchain fosse pubblica (Ethereum o Bitcoin),un qualunque hacker sarebbe in grado di “sniffare” le transazioni che arrivano sullo smart contract, mappando gli indirizzi IP delle transazioni e riuscirebbe a risalire con estrema precisione a chi ha emesso il voto, anche se magari non il voto in se stesso (esistono varie tecniche OSCURE che addirittura coinvolgono i social networks).

Se addirittura il voto fosse espresso su un comune browser web, potrebbe esserci l’interesse economico di produrre un virus, capace di intercettare le password digitate sulla tastiera dei votanti, provare a diffonderlo e anche se riuscisse ad infettare il 10% dei votanti, sarebbe come aver costituito un partito politico.

Addirittura potrebbero essere aggiornati i virus che sniffano i numeri delle carte di credito, virus in cui più o meno tutti noi siamo incappati (solo che ancora le nostre carte non sono state usate).

Se la blockchain fosse privata e se i nodi fossero pochi (centinaia = molto pochi) forse potrebbe esserci l’interesse a sovraccaricare la rete con attacchi DDoS in modo da renderla infungibile durante il periodo di votazioni.

E’ da considerare che l’attuale sistema di voto è antico e manuale, ma proprio per queste caratteristiche, violarlo senza sporcarsi le mani direttamente è praticamente impossibile, le schede sono presidiate da protocolli serrati (molti meno nel voto degli italiani all’estero), ci sono le forze dell’ordine, farsi sorprendere con “le mani nel sacco” durante una manipolazione di voto può significare “la galera”, mentre in un ecosistema digitale, la manipolazione è alla portata di molti e spesso, se la Polizia riuscisse a scovare l’indirizzo del colpevole, sfondandone la porta, troverebbe una povera anziana con un PC violato da remoto in modo del tutto anonimo.

Brunei probabilmente metterebbe l’accento sulla sicurezza e sulla violabilità che un sistema digitale naturalmente comporta; sono stati violati sistemi come quelli dell’FBI, della Playstation Sony ecc.. , e non è possibile pensare che coloro che hanno progettato e messo in sicurezza questi sistemi siano degli incompetenti.

Probabilmente, se venisse diffusa la notizia di un possibile sistema di voto elettronico, si alzerebbe molto l’interesse di coloro che “di mestiere” si occupano di violazione di sistemi informatici, poichè poter controllare e manipolare un’elezione politica non è affare di poco conto.

Va inoltre tenuto presente che un sistema informatico, che possa essere manipolato da un gruppo ristretto di persone affidabili, non è per sua natura un sistema incorruttibile e in nessun modo, ne’ Brunei ne’ Luca Vignali, vorrebbero far parte del gruppo, perchè le persone sono tutte corruttibili, sia con il denaro o i benefit (caso felice) , sia con ricatti o minacce dirette o alle persone vicine (caso in cui nessuno di noi vorrebbe trovarsi).

Brunei sicuramente converrebbe con me che le 28 persone che oggi gestiscono il codice di Bitcoin (https://github.com/orgs/bitcoin/people) dormono sonni (abbastanza) tranquilli perchè non potrebbero in alcun modo , neanche sospesi su un rogo, manipolare o influire su una qualunque transazione di bitcoin e questo li rende esenti dai problemi prima citati.

Quindi sicuramente l’adozione della tecnologia Blockchain su un sistema di voto sarebbe approvata da Brunei, ma prima di esprimersi a favore di una sua opinione, sia essa Pollice Su che Pollice Giù,vorrebbe capire “in che modo questa venga impiegata”, perchè la tecnica di impiego, in questo caso , è molto più importante della tecnologia stessa.

Che suggerimenti darebbe Satoshi Nakamoto se gli chiedessi di aiutarmi a fare un sistema di voto in Blockchain?

Un amico criptotalebano una volta mi disse: “Bitcoin è una fede, non vale niente per chi non ci crede, vale tutto per chi ne accetta i valori e lavora per mantenerli, usare o produrre Bitcoin significa contribuire al mantenimento dell’ecosistema Bitcoin stesso”.

Per traslato , fare una piattaforma di voto in Blockchain significa che i dati in essa contenuti dovrebbero essere di valore per chi ce li mette; i Miners in questione dovrebbero essere una pluralità di enti che non hanno interesse a coniare o spendere criptomoneta, ma al contempo hanno interesse a mantenere sicuri i dati in essa contenuti.

Quindi la rosa si restringe verso le blockchain di tipo privato, MultiChain è sicuramente una tecnologia idonea e matura, i Miners in questione potrebbero essere i partiti politici stessi o le ambasciate.

Che suggerimenti darebbe Brunei se gli chiedessi di aiutarmi a fare un sistema di voto in Blockchain?

Sicuramente opterebbe per un’architettura mista VPN/Public network, dove i vari nodi sono tutti peers in VPN che mantengono i registri distribuiti (meglio dire copiati, il termine distribuito nella blockchain è usato a sproposito), ma sono anche nodi con un’interfaccia semi-pubblica, ovvero possono stabilire una connessione SICURA con il client di voto, ma poi sarà il singolo nodo a diffondere la transazione agli altri (in VPN).

Questa soluzione rende l’architettura scalabile e in caso di attacco DDoS, ogni nodo dovrebbe provvedere in autonomia a difendersi tramite sistemi oggi disponibili sul mercato e ampiamente testati e così Brunei potrebbe suggerire CloudFlare.

Sicuramente va studiata bene la questione del PIN , che per ragioni di sicurezza, può essere inserito in un sistema touch o con il mouse (senza usare la tastiera) posizionando in modo casuale l’ordine dei numeri.

Il sistema Anonymous Kerberos è capace a disaccoppiare la relazione fra utente e voto, però andrebbe mantenuta la relazione fra seggio e votante, in modo da sapere con certezza se il voto proviene dall’Argentina o dall’Inghilterra.

Questo può essere fatto se il nodo dell’Argentina ha le caratteristiche per emettere un token autofirmato e pubblicamente (in VPN) riconosciuto dagli altri nodi.

Probabilmente andrebbe implementata in modo asincrono la fase di pre-voto rispetto a  quella di voto, perchè sfruttando la data e l’ora dell’emissione del token, rispetto alla data e ora della richiesta dell’utente al kerberos anonimo, se l’operazione è sincrona (cioè avviene nell’intorno del medesimo istante)  è possibile ricostruire a posteriori di chi sia il voto.

Forse ci dovrebbe essere un momento diverso in cui viene creata e rilasciata la scheda di voto rispetto a quando il voto viene poi effettivamente immesso (dopo ore, giorni, settimane).

Dovrebbe essere sicuramente studiato il client per fare il voto, le tecnologie classiche (API REST + xhr,POST, client request) sono da considerare superficiali e facilmente hackerabili, forse Brunei potrebbe suggerire una soluzione socket in cui passano dati continui client server , la maggior parte dei dati sono fake e solo quello del voto è buono ma solo i due sistemi che comunicano, matematicamente ( e non algoritmicamente)  sono in grado di stabilire se il dato sia fake o reale,per evitare che il voto sia l’ultimo dato trasmesso (quindi facilmente individuabile) il client stabilisce in modo randomico quando smettere di trasmettere i dati fake per evitare l’errore che fecero, durante la seconda guerra mondiale i Tedeschi con Enigma, la cui cifratura fu scoperta grazie alla macchina di Alan Touring, soprattutto grazie all’errore sistematico umano dei Tedeschi stessi, che concludevano ogni comunicato crittografato con la frase “Hitlergruß” (Saluta Hitler).

Conclusioni di Luca Vignali

Spero che questa fuga schizofrenica sia interpretata con la serietà che questo tipo di argomento necessita.

Considerando che i codici sorgente delle molte blockchain presenti sul web sono un’ottima base di partenza, grazie anche all’aiuto dei miei due amici (non così tanto immaginari), posso sicuramente affermare che implementando nel giusto modo i vari ecosistemi, sarebbe possibile portare a compimento l’irragionevole compito di produrre una soluzione di voto che possa sostituire o affiancare il sistema di voto di elezioni governative.