[en] This works involves a study of the problem of electronic voting, making an analysis of the state of electronic voting nowadays and making a study of the possible cryptographic technics that could be used to solve it. This work is focused on the study of blind signatures and group signatures, specially in the last one mentioned, as the possible base of a electronic voting protocol. This work first studied the blind signatures and ahead in the study, it focused more on the group signature thanks to the possibility to implement an individual vote accounting, this is the main reason why group signatures was chosen over blind signatures. After the study of these technologies we proceeded to design an electronical vote protocol based in 3 independent servers, that we will call G1, TokenV Dispatcher and Voting Server. The most relevant concepts of this protocol are the following: This servers use the concept of shared secret. No server is capable to stablish an association between a voter and a vote by itself without colaboration of other servers. The technique of pseudonimity is used to mask the voter and gain anonimity. Group signatures are used for the anonymous identi cation of a valid voter. Group signatures grant the possibility of having an individual accounting that a voter can do to verify that the entire process of voting has been made correctly, this is granted thanks to the zero knowledge proofs. If the independent organisms collide and collaborate they can proceed to make a global accounting of the process of vote. After designing this protocol we proceeded to make an analysis of the anonimity as well as an analisys of the security of the protocol, taking into account the biggest known problems of electronic voting and the most typical attacks to it. Pointing out possible weaknesses of the protocol and analysing the proactive measures that could be taken in order to reenforce it against this possible attacks. After it an implementation of a proof of concept of the protocol was made using Python, MySQL and the library libgroupsig. Then the proof of concept was subject of several tests and simulations of voting in order to verify the correctness of the implementation.

[es] En este trabajo se ha llevado a cabo un estudio del problema del voto electrónico analizando el estado del voto electrónico actualmente y haciendo un estudio de las posibles técnicas criptográficas que se podrían usar para resolverlo. Este trabajo se ha centrado en el estudio de las firmas ciegas y firmas grupales, como posible base de un protocolo de votación electrónico. Se procedió primero a estudiar las firmas ciegas y más adelante gracias a la capacidad de auditoría sobre el voto que aportan las firmas grupales el trabajo se centró sobre estas. Se diseñó de modo que haya auditoría individual realizada por el votante y global realizada por la administración. Después de estudiar estas tecnologías se procedió a diseñar un protocolo de votado electrónico basado en 3 servidores independientes, a los que llamamos G1, TokenV Dispatcher y Voting Server. Los conceptos más relevantes de este protocolo son los siguientes: Estos servidores hacen uso del secreto dividido. Ningún servidor es capaz de averiguar por sí mismo la asociación votante y voto, sin embargo todos poseen información parcial que puesta en conjunto serviría para hacer una auditoría global. Se utiliza la técnica de la pseudonímia para enmascarar al votante y así conseguir anonimato. Esto solo para el protocolo desarrollado basado en firmas grupales. Las firmas grupales se utilizan para la identificación anónima de votante válido. Las firmas grupales facilitan la existencia de una auditoría individual del voto por parte mediante las pruebas de conocimiento cero de autoría sobre las firmas. Si las entidades de voto, es decir, las que forman parte activa del mismo, siendo estas G1 y TokenV Dispatcher, se ponen de acuerdo se puede realizar una auditoría global del proceso de votado. Después de diseñar este protocolo se procedió a realizar un análisis tanto del anonimato como de la seguridad del esquema atendiendo a los mayores problemas conocidos que puede presentar un protocolo de voto electrónico. Recalcando posibles debilidades del sistema, y analizando las medidas tomadas para aumentar la seguridad frente a una serie de ataques. Posteriormente se procede a implementar una prueba de concepto utilizando Python, MySQL y la librería libgroupsig. Se procede acto seguido a realizar una serie de pruebas y simulaciones de voto para probar el correcto funcionamiento de la implementación.