Edward Felten continua a riferire informazioni preziose sullo scandalo delle macchine per il voto elettronico negli Stati Uniti.
Dopo il problema delle falle trovate nel codice sorgente e quello del tabulatore centrale dei voti che permetteva di creare un nuovo insieme di risultati elettorali con pochi comandi, l’ultima riguarda l’architettura insicura del protocollo di autorizzazione al voto.
Quando un elettore entra nel seggio, firma i registri e gli viene data una smartcard abilitata. Poi entra nella cabina, inserisce la smartcard e vota. A questo punto la smartcard viene disabilitata e l’elettore la restituisce.
Il problema sta nella comunicazione tra smartcard e macchina elettorale:
- macchina -> smartcard: “la mia password è xxxxxxxx” [8 byte]
- smartcard -> macchina: “Okay”
- macchina -> smartcard: “Sei una smartcard valida ?”
- smartcard -> macchina: “Certo!”
- macchina -> smartcard: “Per favore, disattivati”
- smartcard -> macchina: “Va bene”
Per chi non si è ancora messo le mani nei capelli, immaginiamoci l’equivalente “analogico”:
- scrutatore -> elettore: “sono lo scrutatore #xxxxxx”
- elettore -> scrutatore: “Okay”
- scrutatore -> elettore: “Hai il diritto di voto?”
- elettore -> scrutatore: “Certo!”
- scrutatore -> elettore: “Per favore, non votare più”
- elettore -> scrutatore: “Va bene”
Il problema del protocollo è che è molto facile crearsi una smartcard che dice tutto quello che gli si vuol far dire, con un kit da poche decine di dollari. Il terminale non chiede alla smartcard di provare la sua validità (mostrare la carta di identità, nell’equivalente analogico), le chiede solo se è valida. Un elettore (o uno scrutatore) con una smartcard programmata per non disabilitarsi su richiesta del terminale può votare più di una volta.
Errori come questo dimostrano l’importanza di avere sempre una prova cartacea dei voti (legittimi!) che sono stati inseriti nel terminale, e soprattutto, di avere sistemi elettorali il cui codice sorgente sia ispezionabile: macchine con il sistema visto sopra sono state già utilizzate, e se il codice sorgente non fosse stato svelato “per errore”, nessuno avrebbe pubblicizzato queste falle.