USA: voto elettronico e
sicurezza del software
di Douglas W. Jones* -
16.11.2000
(Articolo pubblicato il 7 novembre 2000 alle
16:43:41 CST sul gruppo di discussione comp.risks Volume 21: Issue 10. Work in
progress alla pagina http://www.cs.uiowa.edu/~jones/voting/
con il titolo "Election Privacy and Security"). Traduzione di Luca
Parisi.
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.
[Nota aggiunta da Peter G. Neumann al messaggio apparso su comp.risks:]
Rebecca Mercuri sta apportando in questi giorni gli ultimi ritocchi alla sua
tesi di dottorato dedicata alle votazioni elettroniche, alla Università della
Pennsylvania. Raccomando vivamente di mettersi in contatto con lei per averne
una copia, che dovrebbe essere disponibile molto presto. Inoltre, il mio libro Computer-Related
Risks contiene molte informazioni generali sui rischi nelle elezioni
elettroniche e sul modo di affrontarli. Rebecca ha approfondito l'analisi
molto più di me. La sua tesi sarà un contributo molto importante, che
scriverà una pagina completamente nuova su ciò che dobbiamo esigere, e non
solo auspicare, da questi sistemi, oltre ad un'analisi dei rischi residui che
comunque non verrebbero eliminati.
*
Docente presso l'università dello Iowa, Iowa City, Iowa
|