Ataque Multi Voto A Sistema Vot
Ataque a sistema de voto electrónico Vot.Ar
(BUE) permite sumar multiples votos con una
sola boleta.
Introducción
El sistema de voto electrónico
vot.ar
escogido para las elecciones locales de la ciudad de
Buenos Aires, inspeccionado por la Facultad de Ciencias Exactas y Naturales de la UBA a
solicitud del Tribunal Superior de Justicia de la ciudad, permite alterar los resultados del
escrutinio en cada mesa
.
El domingo 5 de julio del 2015 se realiza por primera vez en la Ciudad de Buenos Aires una
elección empleando un sistema de voto electrónico. Son muchas las polémicas que genera
tanto a nivel legal como técnico en el ámbito de la seguridad informática.
Durante semanas previas a las elecciones, un grupo de entusiastas de la seguridad informática intentamos ofrecer nuestra ayuda por diferentes medios teniendo innumerables
reuniones con responsables y políticos, todas ellas en vano.
Nuestro objetivo era la realización de un informe sobre los aspectos físicos, lógicos y
procedimentales de seguridad que fuera
totalmente independiente y por sobre todo, no
partidario. Simplemente desde la posición de un ciudadano más. Ante la falta de
colaboración, nuestro último recurso fue la recolección de información pública en internet y
la utilización para realizar pruebas de los puestos públicos de capacitación.
Este documento demuestra uno de los errores de seguridad más graves encontrados, que
permite que cualquier elector malintencionado deposite una boleta en la urna con un chip grabado para alterar el resultado del escrutinio provisorio.
Descripción e impacto del Ataque Multivoto
El presidente de mesa entrega a cada votante inscrito en el padrón una boleta. Esta
contiene un
tag
de identificación por radiofrecuencia (RFID)
, compuesto de un circuito
integrado (“chip”) y una antena. Mediante las máquinas de Vot.Ar, el elector elige los
candidatos de su preferencia, y esta selección se graba en el chip y se imprime en la
boleta
, que es luego depositada en una urna tradicional.
Al finalizar los comicios, el presidente de mesa
abre la urna y comienza el conteo
de los
votos empleando la misma máquina
vot.ar
mediante otra función del programa. Para
efectuar el conteo:
● Apoya la boleta en la máquina > se contabiliza un voto.
● Apoya la próxima boleta > se contabiliza otro voto.
Y así hasta finalizar el recuento. El software de la máquina de voto (PC corriendo sistema
operativo Ubuntu 14.04)
no permite restar votos al recuento sin volver a cero
.
Durante nuestra investigación descubrimos que este proceso no está correctamente
implementado, y a través de un error de programación es posible grabar el chip mediante un simple smartphone de forma que contenga múltiples votos a un mismo candidato.
Cuando el presidente apoye la boleta en la máquina, ocurrirá lo siguiente:
● Una boleta con chip >
se contabilizan múltiples votos
.
Video de demostración
https://www.youtube.com/watch?v=CTOCspLn6Zk
Detalles técnicos
El pseudocódigo del programa que lee y cuenta los votos es:
class Selection(object):
...
def from_string(TAGcontent):
datatag = parse(TAGcontent)
...candidates = []
for e in datatag.vote:
party_code = e["party"]
category_code = e["category"]
candidate = CandidateClass.get(category_code,
party_code)
candidates.append(candidate)
Primero se leen los datos del chip de la boleta y se almacenan en la variable
datatag.
Después se interpreta la selección y se agrega a la lista
candidatos.
El código NUNCA verifica si hay más de un voto para el mismo candidato
por elector, y
tampoco limita un número máximo de votos por boleta.
La función
parse()
falla también en verificar los datos de forma alguna.
Luego, la clase "
Count()
" suma los votos. Este es el pseudocódigo:
class Count(object):
...
def add_selection(self, selection, RFIDserial=None):
if not RFIDserial or not...
Regístrate para leer el documento completo.