Ogni qualvolta, nella vita democratica del nostro Paese (e meno male) si va ad elezioni politiche c’è sempre qualche testa balzana che – in nome dell’era digitale – comincia a magnificare le possibilità del voto elettronico ed a proporne l’uso.

Gli argomenti sono i soliti. Con il voto elettronico si risparmierebbero molti soldi; con il voto elettronico non sarebbe necessario votare nella sede di residenza; con il voto elettronico, – argomento molto gettonato –  un minuto dopo la chiusura delle urne si potrebbe conoscere chi ha vinto.

Mentre i primi due sono vantaggi reali, non vedo – a fronte di una legislatura che dura cinque anni – quale reale vantaggio comporti conoscere i risultati la sera stessa o 24 ore dopo.

Il voto elettronico, in verità, comporta uno svantaggio molto molto grande rispetto al normale voto cartaceo, un muro che ne sconsiglia assolutamente l’adozione.

Con il voto cartaceo, oggi in vigore, la volontà espressa dal cittadino resta ferma e cristallizzata sulla scheda. Anche dopo anni posso ricontarle e correggere eventuali errori.

Con il voto cartaceo in vigore oggi, il rischio di brogli è fortemente limitato: in Italia, in occasione delle elezioni politiche si allestiscono oltre 61.000 sezioni elettorali, in ognuna, fra presidente e scrutatori, sono impegnate sei persone. Quindi oltre 360.000 persone coinvolte. Un po’ troppe per un accordo idoneo a falsare il risultato globale. Senza contare che i registri della sezione vanno al Comune, alla Prefettura e al Tribunale. E i risultati devono coincidere.

Le ipotesi di brogli volti a falsare il risultato nazionale – con il sistema fin qui adottato – mi sembrano altamente improbabili.

Siete altrettanto sicuri che il risultato sputato fuori da un computer sia altrettanto affidabile?

Vi ricordate cosa successe in Florida nel 2000 nella contesa fra George W. Bush e Al Gore. Non si è mai saputo chi davvero abbia vinto perché il riconteggio manuale fu impedito da un sistema inidoneo che “punzonava” la scheda producendo un foro in corrispondenza del candidato prescelto e che non funzionò. La questione arrivò fino alla Corte Suprema degli Stati Uniti, la quale con una decisione molto controversa (votata da cinque contro quattro dei nove giudici), diede ragione al governatore della Florida, che allora era Jeb Bush fratello del presidente-forse-eletto.

 

Io voglio, per la mia tranquillità un sistema a prova di brogli, anche a costo di attendere qualche giorno il risultato. Cosa sono 24 ore e la possibilità di ricontare le schede più e più volte, di fronte alla certezza che il risultato definitivo rispecchi la volontà degli elettori?

Il problema della sicurezza del voto è molto sentito dalla comunità scientifica americana fin dagli albori dell’informatica.

Se vi va, leggete questo interessante articolo di Douglas W. Jones, professore presso l’Università dello Iowa, scritto ben 18 anni fa, proprio nel giorno delle elezioni presidenziali americane del 2000, quando l’informatica e i calcolatori erano molto più semplici e più facile era verificare che il software fosse esente da “aggiunte” malevole.

L’articolo fu pubblicato, in italiano, dalla rivista Interlex sulla quale potete ancora trovarlo cliccando qui.

Comunque, lo riproduco in coda a questo post. Ovviamente le ipotesi evidenziate da Douglas W. Jones sono tagliate per il sistema elettorale americano, e sono volte a rendere più trasparente il software usato, ma ciò che più impressiona sono le conclusioni alle quali arriva lo studioso (ultimo periodo del suo articolo): nessun software usato per il voto elettronico può dirsi realmente sicuro.

 

Oggi è il giorno delle elezioni e in qualità di presidente del Comitato statale di controllo sulle macchine per votazione e i sistemi elettronici di voto dello Iowa, credo che sia il momento giusto per fare una pausa di riflessione sullo stato dell’arte in materia. Nel corso degli ultimi anni si è affermata con chiarezza una importante tendenza nelle macchine per votazione che sono state presentate al nostro comitato per ottenere l’approvazione nello Iowa. Si tratta della sostituzione del software realizzato ad hoc con software standard preconfezionato, solitamente una qualche variante di Windows e basato largamente su Microsoft Office.

I computer nel sistema elettorale sono ormai una tecnologia consolidata, sia che vengano usati nei sistemi centralizzati di conteggio basati su schede perforate o lettori ottici, sia che si tratti di sistemi di conteggio ai seggi basati su macchine per votazione elettroniche a lettura ottica o a registrazione diretta. Naturalmente sono ancora in uso macchine manuali a leva ma i loro modelli non subiscono modifiche da molti anni e, di conseguenza, non vengono presentati al comitato per le verifiche.

Secondo le vigenti linee guida della Commissione Elettorale Federale (FEC, Federal Election Commission) sui sistemi elettronici di voto, tutto il software realizzato ad hoc è soggetto ad una verifica condotta da terzi indipendenti. D’altro canto, i “componenti standard” sono considerati accettabili così come sono. La FEC non ha il potere di far osservare le norme, ma le sue linee guida sono state recepite nella legislazione elettorale di numerosi Stati.

Il mio motivo di preoccupazione è che siamo testimoni del fenomeno per cui una percentuale sempre maggiore del software contenuto nei sistemi di voto è costituita da prodotti proprietari di terze parti, non soggetti al requisito della disponibilità dei sorgenti per un esame del codice. Inoltre, le dimensioni dei sistemi operativi commerciali sono enormi, per cui è molto difficile immaginare la possibilità di un controllo efficace!  A quali rischi ci espone tutto ciò?

Se io volessi influire sul risultato di un’elezione, non quella in corso ma quella che si terrà fra quattro anni, potrei ipoteticamente lasciare il mio impiego all’Università dello Iowa e andare a lavorare per Microsoft, cercando di inserirmi nel gruppo che cura la manutenzione degli elementi chiave dell’interfaccia utente (window manager). Sembra una prospettiva piacevole, anche se il lavoro che farebbe al caso mio comporterebbe, in gran parte, la manutenzione di codice che è rimasto stabile per anni. Ecco il mio obiettivo: Desidero modificare il codice che crea un’istanza dell’elemento dell’interfaccia utente chiamato “pulsante di scelta” (radio button) in una finestra presente sullo schermo. La funzione che voglio aggiungere, in particolare, è la seguente. Se la data coincide con il primo martedì successivo al primo lunedì di novembre di un anno divisibile per 4, e se la finestra contiene un testo che comprende la stringa “straight party”, e se inoltre il radio button contiene almeno le due stringhe “democrat” e “republican” allora una volta su dieci, in modo casuale, scambia l’etichetta che identifica il pulsante contenente la stringa “democrat” con una qualsiasi altra etichetta, anche questa scelta a caso.

Naturalmente, farei ogni sforzo per rendere incomprensibile il codice da me scritto. La scrittura di programmi illeggibili (obfuscated code) è un’arte che ha raggiunto un alto grado di sofisticazione! Una volta fatto ciò, avrei realizzato una versione di Windows che distribuisce il 10 per cento dei voti diretti espressi per il Partito democratico agli altri partiti, in modo casuale. Ciò sarebbe estremamente difficile da rilevare nei risultati elettorali, correrebbe un basso rischio di essere scoperto durante i controlli e, nonostante ciò, potrebbe influenzare il risultato di molte elezioni!
E questo è solo un esempio dei possibili attacchi! Potrebbero esistere vulnerabilità di tipo analogo, ad esempio, nei database commerciali che vengono usati per la memorizzazione e il conteggio dei voti espressi.

Con questo esempio non intendo esporre alcun sentimento di ostilità nei confronti di Microsoft, ma è vero che il software di questa azienda viene usato nella grande maggioranza dei nuovi sistemi di votazione che ho esaminato. Questo genere di minacce non richiede alcuna collaborazione da parte del produttore del window manager o di altri componenti di terze parti non soggetti ad ispezione del codice sorgente. Esso richiede unicamente una talpa, che possa insinuarsi all’interno dell’azienda produttrice e realizzare del codice che non venga rilevato dalle procedure interne di verifica e ispezione. La scrittura di programmi illeggibili è facile, e l’arte delle “uova di Pasqua” nei prodotti software commerciali rende più che chiaro il fatto che molte caratteristiche non riconosciute ufficialmente vengono inserite ogni giorno in pacchetti software disponibili in commercio senza la collaborazione dei produttori del software stesso. (Sono però a conoscenza del fatto che, in alcuni casi, le “uova di Pasqua” godono dell’approvazione ufficiale del produttore).

Ciò detto, è opportuno notare che Microsoft ha espresso una preferenza nei confronti dei risultati delle elezioni odierne, e che vi sono ottimi motivi per considerare i programmi software proprietari, prodotti da un’entità schierata, con grande sospetto nel momento in cui vengono inseriti in un sistema di votazione!

Quali sono le mie conclusioni? Credo che sia giunto il momento per i professionisti dell’informatica di adoperarsi per un cambiamento nelle linee guida relative alle macchine per votazione, chiedendo che tutto il software compreso in tali macchine sia open source e aperto al pubblico scrutinio, o almeno aperto allo scrutinio da parte di un’autorità di controllo terza e indipendente. Non esistono ostacoli di natura tecnica perché ciò avvenga! Sono disponibili molti sistemi operativi open source perfettamente funzionanti come Linux, FreeBSD e diversi altri, compatibili con l’hardware intorno al quale vengono costruite le macchine per votazione moderne!

Tuttavia, questo non risolve completamente il problema! Come si può dimostrare, dopo il fatto, che il software contenuto nella macchina per votazione sia lo stesso approvato dal comitato di controllo e sottoposto a verifica da parte dell’autorità di controllo indipendente? A mia conoscenza, nessuna macchina moderna è realizzata con l’obiettivo reale di consentire una dimostrazione di questo genere, anche se diversi produttori promettono di mettere a disposizione una copia del codice sorgente da loro usato presso un ente depositario in caso di contestazioni.