¿Cómo podría hackearse el voto electrónico en Perú? (parte 2)

En las próximas elecciones municipales, ONPE implementará el Voto Electrónico Presencial, cambiando las cédulas de papel por tablets. En esta segunda parte de nuestra serie sobre el VEP, hablaremos de algunos de los problemas técnicos que hemos encontrado.

Este año, como anticipo de las elecciones municipales, ONPE ha puesto en práctica recursos de comunicación y publicidad para reforzar una idea clave: que el voto electrónico es seguro y está a prueba de “masivos ataques cybernéticos” (ver campaña de la Hackathon). Sin embargo, en nuestra investigación no hemos encontrado la evidencia necesaria para apoyar esas ideas.

El escenario de seguridad para el VEP

Recordemos que el elemento que se busca proteger en el VEP es el voto popular. Proteger el voto popular significa varias cosas: desde la integridad y el secreto de los votos, hasta la supervisión ciudadana del proceso.

Como vimos en la primera parte de esta serie, ONPE ha tomado algunas medidas para proteger ciertos aspectos del proceso. Sin embargo, en nuestro análisis hemos encontrado escenarios factibles en los que un atacante, o un error del sistema, puedan afectar el resultado aparente de la votación. Es decir, que la autoridad equivocada acabe siendo “elegida” y proclamada.

Los posibles atacantes del VEP

La sospecha inmediata sería un actor político que quiere lograr, o impedir, la elección de una autoridad en particular. Este actor no necesita ser especialista en computación, ni tener un especialista en su equipo o partido político. Lo que necesita es que alguien le ofrezca ese servicio.

Los posibles “vendedores” de estas teóricas manipulaciones son diversos: desde especialistas en seguridad que trabajan indiferentes a las consecuencias de sus acciones, hasta agentes internos de ONPE que sean corrompidos por agentes externos. Igualmente, podemos sospechar de algún proveedor que encuentre oportunidades de intervención que generen poca o nula evidencia, considerando lo poco documentado que está el sistema.

Estos son algunos posibles problemas técnicos que consideramos pueden evolucionar en ataques o manipulaciones. Como en nuestra anterior publicación, queremos repetir que nuestra opinión y análisis no es una agresión a ONPE, mas bien es una invitación a tomar una actitud más crítica y proactiva sobre su sistema.

El sistema de ONPE

El VEP puede dividirse en tres grandes etapas: implementación de materiales (los módulos de identificación y votación), el proceso del día de la votación, y el reporte de resultados. En estas tres etapas hay amenazas diferentes que pueden hacerse efectivas.

La implementación

En la etapa de implementación, según la información dada por ONPE en la Hackathon, se generan las imágenes de software, se instalan en los tablets, y se arman los módulos. No tenemos detalles operativos de esta etapa, excepto por los pasos que se siguen. Consideramos varias interrogantes en esta etapa: ¿Cómo exactamente se carga el software a los tablets? ¿Es un proceso supervisado, automático? ¿Quién supervisa el proceso, o qué controles automáticos están incluidos en él?

Sabemos a través de ONPE que el código está centralizado en un solo repositorio pero no tenemos detalles de prácticas operativas o de desarrollo. Tampoco sabemos si este repositorio tiene controles de acceso, o si el código de las imágenes es tomado directamente de ahí. Igualmente, no sabemos si la generación de imágenes, y su carga en los tablets, sigue algún proceso de “release engineering”.

Saber esto es importante porque permite saber el nivel de control y fiscalización del proceso. Una vulneración de esta etapa, o una falta de supervisión, podría comprometer todos los tablets y a su vez el proceso entero.

El sistema de los tablets: ONPEDroid

El sistema operativo que usan los tablets Samsung Galaxy de ONPE es una versión modificada de Android KitKat 4.4. Esta versión de Android, bautlizada “ONPEDroid” por ONPE, tiene los sistemas de red (wifi, bluetooth), notificaciones y navegación desactivados, según ONPE. Solamente en este punto es importante mencionar que KitKat dejó de tener soporte de actualizaciones y seguridad en el año 2014.

ONPEDroid tiene modificaciones y adiciones, siendo la más visible el software gráfico para votar, y para identificarse. Pero además, según contó ONPE, se ha escrito un “cripto sistema” a cargo de diferentes tareas de cifrado en el sistema. No se detalló exactamente qué tareas, o cómo, ni por qué el código de un “cripto sistema” debía ser escrito por ONPE directamente.

ONPEDroid además tiene un “cripto sistema” desarrollado internamente por ONPE. Este “cripto sistema” se encarga de “tareas de cifrado” pero no está claro exactamente de qué o cómo. ONPE tampoco compartió detalles ni acceso al código de cómo funciona el resto de ONPEDroid. Solo sabemos que según ONPE las modificaciones y adiciones se han programado en C y Java.

Curiosamente para resolver el problema de la impresión de las actas de resultados, se hace uso de impresoras de inyección de tinta marca HP. Para realizar esta tarea ONPEDroid tiene instalado y configurado un sistema GNU/Linux virtualizado exclusivamente para poder imprimir. No sabemos cómo está configurado ese sistema GNU/Linux, ni cómo se comunica con el resto de Android. Considerando que este sistema de impresión se encarga de imprimir las actas de cierre que son firmadas por los miembros de mesa y los personeros, es un punto peligroso para encontrar vulnerabilidades.

Por último, cada imagen de ONPEDroid es cargada a su respectivo tablet con una llave de cifrado e identificación única. No está claro dónde se almacena esta llave o cómo se usa, ni cuándo o cómo se genera. A pesar que el personal de ONPE insistió en mencionar diferentes técnicas y algoritmos de cifrado, nunca se dieron detalles específicos.

El registro de votos

ONPE explicó las medidas que tomaron para mantener el secreto del voto y poder almacenar los votos que se van emitiendo en la cabina de votación. Concretamente, decidieron precargar las cabinas de votación con archivos XML que incluyen un número predeterminado de nodos según el total de electores de la mesa correspondiente. Por ejemplo, una mesa con 400 electores tendrá una cabina de votación que viene precargada con un XML que ya tiene 400 nodos. Al momento de registrar un voto, el sistema elige aleatoriamente uno de los nodos y guarda ahí el voto.

De inmediato surgen algunas dudas sobre esta solución, por ejemplo: ¿Qué código comprueba que esos nodos no se modifiquen excepto en el momento del registro? ¿Cómo se garantiza que un nodo no sea escrito dos veces? ¿Cómo se contabilizan? ¿Se usan identificadores únicos? ¿Es posible tener varios nodos con un mismo identificador único?

No pudimos resolver estas dudas durante nuestra investigación, ni en los eventos de ONPE, debido a que ellos consideran el formato del XML, y el código que lo lee, como un asunto secreto y reservado. Como cualquier desarrollador de software sabe, leer e interpretar datos que son generados por el usuario es un campo minado de errores y omisiones. El potencial para errores, conteos erróneos, o intervenciones maliciosas, es alto. Solo con pensar en los posibles escenarios en donde el código asume que el XML ya ha sido validado, y es confiable pero aún no es usado, puede presentar varias situaciones de vulnerabilidad.

Adicionalmente, las cabinas de votación cuentan con memorias micro SD para guardar un respaldo de la cabina, incluyendo tal archivo XML. No sabemos qué contiene esa tarjeta, o cómo se garantiza que no sea manipulada en la planta de ensamblaje, en la instalación de las mesas, o en su uso como copia de seguridad si fuese necesario (situación que un atacante podría forzar).

La transmisión de resultados

La parte menos clara del sistema es la transmisión de datos hacia la central de ONPE. Los datos son acopiados en los centros de votación por el personal técnico de ONPE y luego transmitidos a la central de ONPE. Esta transmisión es por internet, pero no conocemos ningún detalle de cómo se hace, cómo se asegura, o cómo se comprueba.

Por supuesto, la transmisión de resultados es un punto ideal para intervenir la comunicación y crear alteraciones o perturbaciones al proceso. Los errores en seguridad en el Estado, en operaciones aparentemente muy sencillas, no nos son ajenos. Nos preocupa que esta etapa sea especialmente vulnerable debido a la falta de auditoría del proceso.

La auditoría

Como dijimos en el artículo anterior, la dificultad de articular objeciones, curiosidad, o duda, sobre este sistema lleven a una limitación para la supervisión ciudadana, partidaria, o incluso institucional. Peor aún, en años anteriores ONPE ha aprovechado de eliminar la obligación de ejecutar auditorías del proceso del voto electrónico.

Nos parece que la facilidad de auditar el proceso, sea por ciudadanos votantes o personeros, no es un tema para pasar por alto. Mas bien, ONPE debería ser la primera en resaltar y promover distintas auditorías de seguridad, calidad, y confiabilidad, antes y durante el proceso.

Nuestros votos cuentan

Por último queremos repetir que nuestro interés es que la tecnología, y el afán por demostrar progreso usándola, no acabe siendo un obstáculo para nuestros derechos. Es saludable que el Estado busque innovar con tecnología, pero nos parece que ésta debe ser recibida de forma crítica, como se recibiría con crítica y supervisión cualquier otro proyecto en el que el Estado invierte.

Esperamos que ONPE comparta más información y evidencia concreta de la seguridad del sistema que viene publicitando con tanto entusiasmo.


Si tienes alguna duda o información sobre el voto electrónico puedes compartirla en los comentarios de este artículo, o escribirnos a [email protected].

Foto: ONPE

Director de Tecnología

Comunicador Social de la Universidad de Lima. Antes colaborador en GNOME, Debian, WebKit.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *