Introducción
Un sistema de voto electrónico consiste en el uso de medios digitales en alguna de las fases de una elección, especialmente para la emisión del voto. El uso de los sistemas de voto electrónico, aunque lento va en aumento, debido principalmente a las ventajas que ofrece como la rapidez en el escrutinio, la accesibilidad para personas con discapacidades visuales y de otro tipo, la prevención de errores, entre otras. A pesar de esas ventajas un sistema de voto electrónico también presenta desafíos considerables, especialmente en cuanto a seguridad se refiere, lo cual puede causar desconfianza a votantes y demás participantes de una elección.
Se han propuesto mecanismos que permiten al votante comprobar que su voto se incluyó en el escrutinio, véase por ejemplo Chun-I Fan y Wei-Zhe Sun(2008), así como Chaum et al. (2009). Un país pionero en el voto electrónico es Estonia, el cual utiliza un sistema de voto electrónico para realizar sus elecciones desde el año 2005. El mecanismo de votación de Estonia se compone de tres partes principales como lo describen Mus, Sabir Kiraz, Cenk y Sertkaya (2016): 1) aplicaciones para el votante -una aplicación de votantes VoterApp y una aplicación de verificación VerifApp-; 2) un sistema central; y 3) procesos de auditoría y recuento. El sistema de Estonia mediante la aplicación VerifApp permite verificar que el voto se haya emitido de acuerdo a la decisión del votante, dándole así mayor certeza al proceso electoral.
Bernhard et al.(2017) describen que aun cuando se incorporan mecanismos para corroborar el voto, es difícil asegurar que los resultados sean precisos. En las elecciones presidenciales de 2016 en Estados Unidos de América, donde aproximadamente tres cuartas partes de los estadounidenses votaron utilizando sistemas que generan registros en papel verificables por los votantes (VVPAT, Voter-Verified Paper Audit Trail) no se pudo proporcionar evidencia convincente de que los resultados que se informaron fueron precisos, o estuvieron libres de manipulaciones.
Por otro lado, si un atacante logra acceso a la base de datos donde se almacenan los votos podría añadir votos ilegítimos, sin que los mecanismos de verificación individual puedan detectarlo. Ejemplo de ello ocurrió en las elecciones del estado de Florida (Estados Unidos de América) en el año 2012,cuando se agregaron más de 2500 votos ilegítimos en poco tiempo.
De acuerdo con Alcaraz et al. (2012) el ataque se descubrió gracias a que el sistema informó de la detección de anomalías en patrones de tráfico, pues las solicitudes provenían de un rango de direcciones IP de Inglaterra, Irlanda e India. Si el ataque no hubiera sido detectado el número de votos falsos habrían sido suficientes para afectar el resultado de las elecciones. La detección de este tipo de ataques queda fuera del alcance del votante, es decir, aun cuando cada votante puede verificar que su voto se ha registrado correctamente no detectaría la adición de votos ilegítimos.
Es entonces necesario implementar mecanismos de auditoría que faciliten la detección de prácticas fraudulentas en los sistemas de votos electrónicos, más allá de la verificación individual. En las siguientes secciones se describen y analizan las diversas técnicas y mecanismos de auditoría que se utilizan al concluir un proceso de elección, las cuales están diseñadas para detectar prácticas que podrían alterar el resultado; se hace especial énfasis en los mecanismos de protección de logs. Posteriormente, se describe una propuesta de auditoría para la detección de manipulación de votos en sistemas de voto electrónico.
Mecanismos de auditoría post-elección
Una auditoría posterior a la elección pretende verificar o validar el resultado de la elección, así como detectar si hubo cualquier tipo de error o manipulación que pudieran haber alterado dicho resultado. En esta sección se describen y analizan diversos mecanismos de auditoría.
Recuento total de votos
No es de extrañar que, en el voto tradicional donde se utilizan boletas de papel, se presenten errores en el conteo, pues los votos son contados por humanos. Debido a eso, si se lleva un recuento total existe una probabilidad alta de que se encuentren diferencias entre el conteo original y el recuento. En sistemas de voto electrónico el escrutinio de votos se realiza de manera automática, un recuento total de votos arrojará el mismo resultado que el original, asumiendo que el sistema de conteo automatizado no presenta errores en su programación. Por tanto, un recuento total de votos en el entorno del voto en papel dista mucho de ser fiable, y un recuento total en un sistema de voto electrónico no ofrecerá alguna pista de posibles manipulaciones previas al conteo.
Recuento total con medios independientes
Si nos enfocamos en sistemas de voto electrónico presencial, una auditoría se puede realizar a través de un método de verificación independiente 1 como los descritos en Voluntary Voting Systems Guidelines (VVSG, 2005), los cuales pueden ser utilizados para fines de verificación individual 2, así como para llevar a cabo una auditoría. Estos sistemas de verificación independiente tienen la finalidad de almacenar en tiempo real los votos en un medio alternativo a fin de contar con un respaldo, por lo cual es factible realizar un recuento total del registro realizado.
Un recuento a través de un medio independiente presenta, sin embargo, una desventaja considerable. Si del recuento da diferentes resultados a los originales surge el problema de decidir cuál de los dos resultados es más fiable, cualquiera de los dos pudo haber sido manipulado. Por tanto, este tipo de sistemas de auditoría presenta el desafío de escoger el registro (generado por el sistema de votación o el registro independiente), el cual será considerado válido en caso de que existan diferencias. Más allá de lo tecnológico es, quizás, un tema de legislación electoral que anticipe tales situaciones.
Recuento de una muestra de votos
Los recuentos parciales de votos son un método de auditoría frecuentemente utilizado en los sistemas electorales de voto en papel. Se toman como unidades sujetas a auditoría los recintos de votación, o bien, una unidad electoral más grande como puede ser un distrito. Por su parte, en los sistemas de voto electrónico presencial la unidad mínima sujeta a auditoría suele ser una máquina de votación, o en algunos casos donde el sistema de votación imprime un respaldo en papel la unidad mínima de auditoría puede ser el recinto donde se localizan varias máquinas devotación.
En la mayoría de los países o estados la decisión de realizar un recuento total o parcial dependerá de una legislación o reglamento de procedimientoselectorales, así como de la situaciónespecífica que requiera de una auditoría, por ejemplo, la razón de una auditoría puede ser que la diferencia entre los votos a favor de un candidato y de otro sea mínima, o bien debido a un proceso de impugnación de parte de uno o más de los partidos o candidatos participantes.En algunos estadosde los Estados Unidos de Américase deberealizar un recuento parcial como procedimiento estándar después de una elección. Por ejemplo, en Colorado se debe auditar 5% de las máquinas utilizadas; en Maryland se debe auditar al menos 10% de los recintos de votación. Para más ejemplos de parámetros y procedimientos de auditorías se puede consultar (Verified Voting, 2017).
Las ventajas de un recuento parcial frente a un recuento total son evidentes. Por un lado, el costo de recursos y/o tiempo para realizar la auditoría es considerablemente menor, además de los inconvenientes presentados en los recuentos totales, como ya se explicó previamente. A través de un recuento parcial donde se seleccionan apropiadamente los parámetros para determinar la muestra a auditar se puede identificar con una precisión alta si ha existido alguna manipulación.
Para determinar una muestra fiable se hace uso de modelos estadísticos y probabilísticos que determinan el porcentaje o cantidad de votos, máquinas de votación o recintos de votación o de cualquier otra unidad que se determine, la cual debería ser auditada a fin de detectar, con un nivel de confianza alto, si han existido manipulaciones que impactan en los resultados de la elección. Entre estos trabajospodemos encontrarlos de Stanislevic (2006), Rivest (2006), Stark (2010), Bretschneider et al. (2012), Stark(2015)y Rivest (2017). Algunas variablesgeneralmente se toman en cuenta, además del tamaño de la elección, son la diferencia de votos entre los candidatos, el tamaño del censo en los diferentes recintos o máquinas de votación, entre otras.
Se debe tener en cuenta que los recuentos de votos, ya sea parciales o totales, solamente detectarán manipulaciones o errores cometidos en el conteo inicial. Sin embargo, si se han alterado o eliminado los votos en sí (ya sea en papel o registros digitales) es difícil detectar dichas manipulaciones con este tipo de auditorías. Por otro lado, en sistemas de voto electrónico remoto, es decir, aquellos en los cuales se utiliza Internet como medio de transmisión de los votos no es factible realizar recuentos parciales, pues el registro de votos se realiza en una base de datos centralizada, o en algunos casos, en unas cuantas bases de datos distribuidas en diferentes puntos físicos; no hay una gran cantidad de unidades sujetas a auditar. Por otro lado, como ya se comentó previamente un recuento a través del mismo medio automatizado, como es el caso de un sistema de votación electrónico remoto, ofrecerá el mismo resultado del conteo original.
Sistemas de protección y verificación de logs
Un mecanismo para realizar auditorías en sistemas de voto electrónico, tanto presencial como remoto, es la auditoría a nivel de logs. Un log es un registro de un evento que sucede en un entorno digital a manera de bitácora, asociando el evento a una fecha y hora, usuario o proceso que lo realizó, entre otras características que interese registrar. Los sistemas operativos generalmente llevan un registro de logs, es decir, de todos los eventos que suceden en un equipo de cómputo. Además, los sistemas de información o aplicaciones que tienen funciones críticas tales como accesos a bases de datos, actualización de información, etcétera, también suelen llevar un registro de los eventos específicos de ese sistema, precisamente con fines de auditoría.
En los sistemas de voto electrónico es sumamente importante tener un registro de los eventos, a fin de contar con las evidencias de las acciones realizadas especialmente para los casos donde se sospeche que ha habido manipulaciones. En una sesión de voto, por ejemplo, se puede generar el registro de la autenticación del votante, el evento de la selección del o de los candidatos, el cierre de la sesión, etcétera. Asimismo, es importante tener el registro de eventos a nivel base de datos, es decir, cada una de las transacciones que se realizan directamente en la base de datos sin tener que utilizar el sistema de información.
A pesar de las ventajas que ofrece la generación de logs no cubre por completo la necesidad de tener un mecanismo certero para auditoría,pues un atacante que ha manipulado una elección, suponiendo que sea un usuario con privilegios de acceso, también podría manipular los logsa fin de eliminar cualquier prueba dela manipulación. Se han propuesto técnicas que permiten detectar, en cierto grado, las manipulaciones realizadas en los logs de un sistema. A continuación, se describen los trabajos más relevantes para la protección de logs.
En el trabajo descrito por Bellare y Yee(1997) se presenta un mecanismo de protección de logs contra manipulaciones. El concepto principal de este trabajo es que a pesar de que los logs sean accedidos por un usuario o atacante externo, este no pueda realizar modificaciones sin la posibilidad de dejar rastro. Por otro lado, si los contenidos fueran eliminadosel mecanismo permite detectarlo. Este protege los logs a través de funciones MAC o códigos de autenticación de mensajes, los cuales utilizan claves privadas.
La seguridad de este mecanismo se fundamenta en el hecho que es computacionalmente inviable que un atacante sin conocer la clave privada altere el mensaje, y que aun así al comparar el resultado de aplicar la función MAC resulte el mismo valor. A fin de evitar que un atacante con acceso a la clave privada en un momento dado manipule los logs generados hasta ese momento, la clave privada puede cambiar a través del tiempo. La clave privada ki en un tiempo ti se obtiene aplicando una función hash a la clave ki-1 que pertenece a un tiempo previo ti-1, y una vez iniciado el tiempo ti esa clave ki-1 es eliminada. De manera que si el atacante obtiene una clave privada ki no podrá conocer o deducir una clave privada kj para j < i. De esta manera, los logs generados antes de comprometer la clave privada no pueden ser modificados sin detección.
El principal inconvenientede este mecanismo es la administración de las claves privadas, lo cual se vuelve más complejo a medida que aumenta la cantidad de claves. Para verificar la integridad de los logs se deben usar todas las claves privadas que fueron generadas para la protección. Además, solo se contemplan los ataques de modificación delogs,mas no la eliminación de estos.
Schneier y Kelsey(1998) proponen otromecanismo de protección que tiene como objetivo que los logs se vayan respaldando después de cierta cantidad de tiempo, o cuando se alcance cierto número de registros. En este mecanismo se consideran tres componentes: una máquina insegura, una máquina segura y un verificador. En la máquina insegura es donde se generan los logs, y el respaldose realiza en la máquina segura. Se asume una conexión entre las dos máquinas a través de una red de datos. Se hace uso de una combinación de funciones hash, firmas digitales y criptografía de clave pública y privada. Al igual que el mecanismo descrito previamenteeste también se enfoca en la protección de los logs, los cuales se generan antes del compromiso.
Otras propuestas de protección de logs, principalmente orientadas a sistemas de voto electrónico, son las descritaspor Riera y Puiggali(2004) y por Sandler, Derr, Crosby y Wallach (2008). Riera y Puiggali describen un protocolo de protección de logspara sistemas de voto electrónico remoto. La idea consiste en ir calculando en tiempo realun valor hash de cada log generado. Además, cada cierto número de logs acumulados, o bien, cada periodo específicose aplica una firma digital. Se realiza entonces una cadena de logsde la siguiente manera:
Donde l es un logy L es el resultado del valor hash de la concatenación de l con el L previo. Cada vez que se forma un bloque bi se lleva a cabo la firma digital de dicho bloque:
Donde Sk es la clave privada del equipo de cómputo o servidor que firma los logs. A fin verificar la integridad de dichos logs se utiliza la clave pública correspondiente. La idea de componer una cadena de integridad entre los logs es que en caso de que un atacante modifique los logs esto será detectado al realizar la verificación de las firmas. Asimismo, si un log es eliminado esto también sería detectado al realizar la verificación del bloque al cual pertenecía.
Es importante resaltar que cuando la cantidad de eventos es muy grande resulta sumamente complejo llevar a cabo un análisis de los registros de logs, lo cual deriva en la dificultad de detectar manipulaciones. Para realizar un análisis de logs, especialmente cuando hablamos de grandes cantidades de registros, se requiere de herramientas que automaticen dicho análisis.
Sandler, Derr, Crosby y Wallach(2008) describen una herramienta llamada Querifier, la cual realiza el análisis de logs en tiempo real, esto para disminuir la complejidad de la tarea que representa el análisis de grandes cantidades de registros. Esta herramienta hace uso de reglas definidas con lógica de predicados, de manera que se definen todos los eventos posibles en el sistema y el orden más lógico en el cual deberían suceder dichos eventos. Por ejemplo, en un sistema de voto electrónico una regla podría ser que el evento “voto registrado” debería estar precedido por el evento de “votante autenticado”, de forma que si no se cumple la regla se detectaría que ha habido alguna corrupción en los registros de eventos. También se contempla detectar si se ha roto una cadena de integridad realizada a través de funciones hash, de manera que se puede saber cuándo se ha realizado alguna manipulación en el log.
Al haber realizado un análisis de los mecanismos previamente descritos para realizar auditorías en los sistemas de voto electrónico remoto se puede notar que estos esquemas basan la detección de las manipulaciones, principalmente, en el análisis de los logs generados. De acuerdo con los esquemas descritos, la dificultad radica no solo en la protección de los logs, sino en la verificación de la integridad, lo cual es una tarea que deben realizar los auditores y que sin la ayuda de herramientas de análisis de logs dicha tarea es prácticamente imposible de desarrollar.
En la propuesta descrita en Morales (2009) se describe un mecanismo específico para detectar la adición de votos (ataque conocido en la literatura como stuffing) por parte de un atacante interno, es decir, con privilegios de acceso a los elementos de la elección o al menos a la base de datos donde se almacenan los votos. Dicha propuesta describe una técnica de protección de votos almacenados, la cual permite realizar auditorías de una manera más simple en comparación a un análisis de logs.
La técnica permite generar bloques o lotes de los votos para respaldo en tiempo real, es decir, a medida que estos son recibidos en un servidor se define el tamaño que debe tener cada lote, la cantidad de votos que lo deben componer, de manera que cuando se completa uno los votos se concatenan y se firman digitalmente por una autoridad o por un conjunto de autoridades que poseenuna clave Sk, de la siguiente manera:
Cada uno de los lotes de votos se almacenan en un servidor de respaldo o en algún medio de almacenamiento extraíble, a fin de mantenerlos en un lugar seguro. A través de la firma digital se pueden detectar manipulaciones en cualquiera de los lotes. Además, a fin de contrarrestar un posible ataque en el cual se pudieran añadir lotes ilegítimos e incluso firmarlos si se diera el caso de que el atacante posea la clave privada, se forma una cadena de integridad de los lotes a medida que estos se van generando. Para realizar la cadena de integridad se calcula un valor un hash de la concatenación del lote previo, ya firmado con el lote actual también firmado de esta manera:
Para fines de auditoríase cuenta con un identificador único de voto, de manera que se pueda relacionar los votos contenidos en los lotes con los votos almacenados enla base de datos. La generación del identificador único de voto se realiza durante una sesión de voto autenticada. De tal manera que si se agregan votos ilegítimos en la base de datos, lo cual se haría sin una sesión de votante válida, esos votos no tendrán un identificador válido.Para realizar una auditoría se realiza una serie de validaciones comparando los votos incluidos en el escrutinio con los votos contenidos en los lotes de respaldo. La figura1 muestra este esquema de manera general:
En las validaciones realizadas en la auditoría se realiza lo siguiente:
Verificación de la integridad de los lotes. Se revisa la cadena de integridad de los lotes y la firma digital de cada uno de ellos.
Verificación de la cantidad de votos. Se realiza la comparación de la cantidad de votos incluidos en el escrutinio con el número de votos contenidos en los lotes de respaldo. Si la cantidad de votos que se incluyeron en el escrutinio es mayor que el de votos contenidos en los lotes se puede saber que se han añadido votos ilegítimos. Aun así se debe realizar el siguiente paso para detectar cuáles son los votos ilegítimos.
Verificación del identificador de voto. Se valida que cada voto incluido en el escrutinio se encuentra también en alguno de los lotes, lo cual se logra verificando los identificadores únicos de los votos. Los votos del escrutinio, cuyo identificador no coincida con alguno de los votos registrados en los lotes de respaldo, se pueden clasificar como votos ilegítimos.
Después de realizar estas validaciones en el proceso de auditoría se puede detectar si se han añadido votos o si se han manipulado los votos almacenados en la base de datos original. Este mecanismo también permite detectar cuáles han sido los votos manipulados.
Propuesta de auditoría para detección de manipulación de votos: MEDUSA
Con base en lodescrito en Morales (2009), analizado en la sección previa, se propone un mecanismo que incorpora algunas mejoras para la detección de la adición de votos ilegítimos y la eliminación de votos legítimos. Este mecanismo se denomina Medusa y, a grandes rasgos, las mejoras son: i) el uso de hash para formar la cadena de integridad en lugar de la firma digital; y ii) la identificación del último lote para corroborar su existencia e integridad. En los siguientes párrafos se describe a detalle su funcionamiento.
Al igual que la propuesta anterior se generan lotes de respaldo de los votos a medida que estos son recibidos por el servidor de votación. Un lote de votos se conforma de cierta cantidad de votos recibidos que se van concatenando, se les aplica una función hash y son firmados por una autoridad o conjunto de autoridades con la clave Sk como se muestra a continuación:
Por ejemplo, si se determina que los lotes deben contener 100 votos estarían conformados de la siguiente manera:
Los lotes de votos firmados se almacenan en un servidor o medio diferente al servidor de votación. Con la implementación de la firma digital se asegura que, en caso de presentarse alguna manipulación en los lotes, esta pueda ser detectada. Aunque existe la posibilidad de que si el atacante se apodera de la clave privada pueda agregar y eliminar lotes sin ser detectados. Si los ataques son perpetrados al realizar una auditoría los votos contabilizados originalmente no concordarían con los votos respaldados en lotes.
Para prevenir estos ataques se forma una cadena de integridad entre los votos y lotes a medida que se generan. Esta cadena de integridad se realiza calculando un hash de la concatenación del lote anterior firmado con el primer voto del lote actual, y entre los votos se realiza calculando un hash a la concatenación del voto previo con el voto actual:
Donde:
Li-1 |
- es el lote que contiene votos, hashes y firma correspondiente del lote anterior. |
V |
- es un log individual. |
V’ |
- es el resultado de calcular un valor hash a la concatenación del voto actual con el voto o lote previo, es decir Vi con Vi-1. |
Como ya se mencionó, una mejora incluida en Medusa es que para formar la cadena de integridad no se hace uso de la concatenación de la firma. En cambio, se hace uso del cálculo de un hash de la concatenación del primer voto y el lote anterior. Al implementar esto se obtienen las siguientes ventajas:
Se requiere de menor poder computacional para la creación y comprobación de la cadena de integridad, ya que se le aplica una función hash a la concatenación en lugar de aplicar una firma digital que requiere más procesamiento.
No es necesario calcular la firma digital de cada lote para comprobar su integridad, ya que solo será calculada en aquellos lotes donde se rompe la cadena de integridad. Por ejemplo, si se tiene L1, L2, L3, L4 y L5, si la cadena de integridad se rompe en L3 solo es necesario comprobar la integridad mediante firma digital de L2 y L3 para tratar de indagar si se realizó alguna modificación o se eliminó algún lote.
También este mecanismo propuesto considera la posibilidad de detectar cuando el último lote o lotes son eliminados. Por ejemplo, si se tienen cinco lotes L1, L2, L3, L4 y L5y se elimina L5, la cadena de integridad no se rompe y no podría ser detectada la eliminación. Otro caso que se podría presentar es si se desea eliminar L3 sin dejar rastro simplemente se elimina L3, L4 y L5,y esto no podría ser detectado.
Entonces para tratar de mitigar este riesgo se propone identificar el último lote, ofreciendo así la posibilidad de detectar si fue eliminado o no. Para la identificación del último lote se propone realizar una firma extra, es decir, además de aquella que se realiza para asegurar la integridad del lote se hace una firma adicional para comprobar que es el último. Es decir, se firma la concatenación del penúltimo lote con el último de la siguiente manera:
Donde Sk es la clave privada de una autoridad o de un conjunto de autoridades de la elección a cargo de firmar digitalmente los lotes. La clave pública correspondiente será usada para verificar la integridad y asegurarse que exista el último lote donde es almacenado. También se debe de asegurar que solo el último lote esté marcado, así que cuando este se identificaes necesario quitar la marca al penúltimo de los lotes para evitar confusiones.
Al igual que el mecanismo propuesto enMorales (2009),al realizar una auditoría es necesario que los votos contengan un identificador único a fin de establecer una relación entre los votos contenidos en los lotes y los votos almacenados en el servidor de votación, y de esa manera poder compararlos en una auditoría. El identificador del voto es generado en la fase de votación y puede ser compuesto de un conjunto de caracteres alfanuméricos.
El identificador único también puede servir para integrar los lotes de respaldo de acuerdo a la unidad electoral a la cual pertenecen, por ejemplo, a un municipio, distrito electoral, estado, etcétera. Por ejemplo, si a un distrito electoral se le asigna el identificador “001”, los votos emitidos por los votantes de dicho distrito podrían ser identificados con “001” además deotro conjunto de caracteres únicos. Esto serviría para detectar manipulaciones dirigidas a un área geográfica específica, a fin de favorecer a un candidato particular.
Al igual que el mecanismo anterior solo hasta que el votante ha sido autenticado puede llevarse acabo la generación de un identificador de voto durante una sesión de votación. Al implementar lo anterior se puede contar con la certeza de quesi se agregaran votos no válidos en la base de datos, estos no contarán con un identificador válido; asimismo, si hay votos que son eliminados se podría identificar cuáles fueron. En ambos casos los votos podrían identificarse al realizar un cruce entre los lotes de respaldo y la base de datos.
Se debe tener en cuenta que un atacante puede añadir votos ilegítimos en tres fases del proceso de elección: antes de iniciar el proceso de votos, durante la fase de votación o, una vez concluida esta. En cambio, la eliminación de votos legítimos se puede presentar solo en dos períodos: en la fase de votación y una vez que ha terminado esa fase. La adición de votos antes de iniciar el proceso de votación puede ser detectada de forma relativamente fácil, por medio de verificaciones. Por ejemplo, se verifican que la base de datos donde serán almacenados los votos se encuentra en blanco antes de iniciar la votación. La adición y eliminación de votos en la propia fase de votación e incluso cuando esta ha terminado, se puede detectar con el mecanismo de auditoría propuesto como se puede observar en las siguientes líneas.
Si una vez que se concluye el conteo de votos es necesario llevar acabo una auditoría de los resultados de la votación se pueden realizar algunas validaciones al comparar los votos incluidos en el conteo original con los votos almacenados en los lotes de respaldo, los cuales se encuentran protegidos contra manipulaciones. La auditoría hace uso del mecanismo propuesto, y se lleva a cabo realizando los siguientes pasos:
-
Al igual que el mecanismo anterior se verifica la integridad de los lotes. En la figura 2 se muestra un ejemplo de las validaciones realizadas para detectar si un voto ha sido modificado.Se verifica la cadena de integridad de los lotes y la firma digital donde la cadena se rompa para poder detectar:
Si el primer lote o un conjunto de los primeros lotes fueron eliminados: si la cadena de integridad se rompe en el primer lote y se comprueba mediante la firma digital que el primer lote no ha sufrido modificaciones se puede determinar que ha sido eliminado un lote o un conjunto de lotes del inicio.
Si el último lote o un conjunto de los lotes finales fueron eliminados: debido a que se identifica el último lote se puede calcular la firma digital para corroborar que existe y no ha sido modificado.
Si un lote o conjunto de lotes intermediarios fueron eliminados: en el punto de quiebre de la cadena de integridad si se comprueba que el lote anterior y actual no sufrieron modificaciones mediante la firma digital se puede determinar que algún lote o conjunto de lotes fueron eliminados.
Si un voto fue modificado o eliminado: cuando la cadena de integridad se rompe y se comprueba que un lote fue modificado mediante la firma digital se puede encontrar que un voto fue modificado o eliminado calculando el hash de la concatenación del voto actual con el voto anterior.
Se puede precisar en cuáles lotes se rompe la cadena de integridad: al calcularse el hash de la concatenación del primer voto con el lote anterior para comprobar si se conserva o se ha roto la cadena de integridad y así determinar en qué punto o puntos se rompe.
-
Se puede precisar en cuáles votos se rompe la cadena de integridad de cada lote: se calcula el hash de la concatenación del voto actual con el voto anterior para comprobar si se conserva o se ha roto la cadena de integridad y así determinar en qué punto o puntos se rompe.
Se compara el número de votos obtenidos del escrutinio con el número de votos en los lotes de respaldo. Si el número de votos del escrutinio es diferente al de los votos contenidos en los lotes se puede deducir que se han añadido votos ilegítimos, o se han eliminado votos legítimos. Se debe de realizar el siguiente paso pasa saber cuáles votos fueron añadidos o eliminados.
Gracias a que todos los votos cuentan con un identificador se puede verificar que cada voto incluido en el escrutinio se encuentra también en alguno de los lotes. Los votos que no se encuentren en los lotes de respaldo se clasifican como votos ilegítimos. Los votos del escrutinio, cuyo identificador no se encuentre en alguno de los lotes de respaldo se catalogan como votos eliminados.
A través de estas validaciones se puede obtener evidencia de si han sido añadidos votos ilegítimos y/o eliminado votos legítimos en la base de datos original, e incluso pueden ser identificados dichos votos falsos. De ser necesario puede ser llevado a cabo un nuevo escrutinio de los votos.
Al llevar a cabo una auditoría pueden ser detectadas algunas evidencias que sugieren que ha habido algunas manipulaciones, y que posiblemente requieran un análisis más profundo que el proporcionado por el mecanismo propuesto. Si ese fuera el caso, entonces se puede implementar alguno de los mecanismos que permiten realizar un análisis de logs, tal como ha sido explicado anteriormente.
Prototipo de Medusa
El mecanismo propuesto está enfocado a la detección de adición y/o eliminación de votos ilegítimos, sin embargo, puede funcionar igualmente para la protección y detección de manipulaciones en los logs que generan algunos sistemas de información que manejan información sensible. En el Laboratorio Nacional de Tecnologías de Información de la Universidad Autónoma de Ciudad Juárez se desarrolló un prototipo, basado en el mecanismo Medusa, para la generación y protección de logs, así como la verificación de la integridad de estos.
El prototipo formó parte del proyecto ERRS (Elections Results Reliable Sampling), orientado a la verificación de resultados electorales. Este prototipo fue desarrollado en JavaScript y se usó Node.js como entorno de ejecución. El prototipo se realizó como se explica a continuación:
-
Al generar un nuevo log también es generado un archivo de texto por cada minuto de funcionamiento del sistema, por ejemplo “201708170212.txt”, donde serán almacenados los logs-ver figura 3. Al generar un log se calcula en tiempo real un valor hash de la concatenación del log generado con el log anterior, esto con el objetivo de generar una cadena de integridad entre los logs, los archivos de logs tienen la estructura que se muestra en la figura 4:
-
Cuando se crea un nuevo archivo se firma el archivo anterior mediante un algoritmo de firma digital para asegurar la integridad de estos durante su almacenamiento y trayecto, pues son enviados a un servidor externo para su respaldo y aseguramiento. Además de asegurar la integridad de cada archivo también entre los archivos se forma una cadena de integridad mediante el cálculo de un hash de la concatenación del primer log con el archivo de logs anterior.
La cadena de integridad se implementa con el propósito de detectar el punto de quiebre, es decir, donde se presentaron modificaciones. Además de la firma para proteger la integridad del archivo se aplica una segunda firma para marcar el archivo como el último. La estructura de un archivo firmado se muestra en la figura 5.
-
Una vez que el archivo es firmado se envía a otro servidor para su respaldo. El servidor de respaldo en todo momento está en la espera de recibir los archivos de logs. Al recibirlos verifica si el archivo no ha sufrido alguna modificación durante su trayecto. Esta validación se realiza mediante la verificación de la firma digital, ver figura 6.
-
Una vez recibido los archivos de logs se puede verificar su integridad en cualquier momento. La verificación consiste en la verificación de la cadena de integridad que se forma entre cada archivo de logs si la cadena se conserva se muestra un mensaje, indicando que los archivos no han sufrido modificaciones y se conserva la cadena de integridad, ver figura 7. Si la cadena tiene un punto de quiebre se procede a verificar la integridad de los archivos, donde se rompe la cadena para indagar si hubo alguna modificación o se eliminó algún log o un archivo de logs, en cualquiera de los casos se muestra un mensaje indicando en qué archivo se rompe la cadena de integridad y de ser posible se muestra también el motivo, ver figura 8.
El prototipo del mecanismo Medusa, tal como se ha explicado, tiene una serie de verificaciones que permite descubrir manipulaciones en los logs. De la misma forma en la que se protegen los logs como se ha visto en este ejemplo de implementación se pueden proteger unidades más grandes de información digital, tal como votos o cualquier otra información sensible.
Conclusiones
En este trabajo se han analizado los métodos, técnicas y mecanismos de auditoría que pueden aplicarse a los diversos sistemas de votación, iniciando con los métodos clásicos de recuentos totales y recuentos parciales a través de la selección de una muestra. También se ha descrito cómo los sistemas de verificación independiente aplicados al voto electrónicofacilitan la auditoría, sin embargo, solamente para los sistemasde voto electrónico presencial.
Existen por su parte técnicas más adecuadas para realizar auditorías de sistemas de voto electrónico remoto. Algunas de ellas se basan en el análisis de logs o registros de eventos que se generan durante el proceso de votación. Sin embargo, la gestión y el análisis de logs presenta algunos retos importantes, debido a la gran cantidad de logs que se pueden generar en un sistema.Herramientas de análisis automático de logs, tal como querifier, facilitan la tarea del auditor para encontrar posibles manipulaciones.
En este trabajo se ha descrito un mecanismo que permite, a través de una auditoria, la detección de votos añadidos de manera ilegítima, así como la eliminación o manipulación de estos. A través de este mecanismo es posible detectar con una precisión alta en qué parte de la cadena de logs se ha realizado alguna manipulación, lo cual da evidenciano solo de que ha habido una manipulación, sino que se puede deducir en qué sentido se han realizado las manipulaciones detectadas. Por tanto, esta propuesta contribuye en el área de auditorías de sistemas de voto electrónico remoto, sin embargo, el mismo mecanismo puede aplicarse a otro tipo de sistemas tal como se muestra en el ejemplo de implementación del mecanismo Medusa, donde se protegen los logs de un sistema de información de resultados electorales.