Ese enfoque no funcionaría, ya que cuando se publique la clave secreta, quienquiera que haya votado qué, todavía estaría disponible.
Si desea proporcionar un sistema de votación simple, es mejor que a usted le den una clave. Esta clave se genera de tal manera que se puede verificar que es una clave de votación válida y no una clave generada en el hogar por algún usuario deshonesto.
Una cosa para lograr esto, es que se genera una clave privada aleatoria (Curva elíptica). Esta clave generada, llamada Kr, se convierte en una clave pública (EC), Pr. Después de esto, su MAC Pr con una clave secreta, Ks, por ejemplo, MAC (Pr, Ks) = V. V es un hash, que debe contener una cadena de validación secreta Vs. Esta cadena (Vs) debe ser igual para todos los votos, pero guardada en secreto.
Si el resultado de MAC no contiene la cadena de validación especificada, entonces se genera una nueva clave privada. (Por ejemplo, Think "brute-forcing" hasta que aparezca una clave privada que tenga un valor de verificación válido, Think "vanitygen" en bitcoin. Una parte malintencionada no puede hacer esto porque no conoce la clave MAC o cuál debe ser la subcadena de resultados. )
Por ejemplo, en otras palabras, Generar una clave secreta Kr, como el MAC de la clave pública correspondiente combinada con una clave MAC secreta, da un resultado de hash, que contiene una subcadena secreta específica.
Repita esto hasta que se generen suficientes claves secretas, de modo que haya una clave secreta para cada votante.
Cuando llegue el momento de votar, después de una identificación de votación segura y exitosa, entregue al votante una de las claves secretas aleatorias. Marque al votante en una lista, por ejemplo, para que no pueda revisar múltiples claves secretas. Esto se puede hacer en línea.
Los votantes votan al firmar el voto y publicarlo en el libro mayor público.
Dado que la clave pública no se puede vincular a un votante, no es posible vincular los votos a los electores.
El primer voto (válido) es lo que cuenta, y cuando el votante ha votado, se le recomienda que publique su clave, de forma anónima, y / o la muestre a los amigos. La razón para hacer esto, es evitar que una clave se vincule a un votante posterior a la votación, lo que evita la coerción. Esto también evita que el votante le demuestre a alguien lo que votó, porque podría haber tomado la clave de otra persona para probar que votó "correcto" (cuando en realidad votó "incorrecto").
En realidad, el votante puede generar su propia clave falsa, y publicar un voto falso, que no se contabilizará, utilizando esta clave falsa, y luego usar ese voto falso para "probar" que votó "correcto" a un coercier . El coaccionador no puede detectar que el voto es falso. Antes de que las autoridades publiquen las Ks y Vs.
Sin embargo, la publicación debe retrasarse para que todos los nodos hayan registrado el voto antes de publicar la clave. Por supuesto, el votante debe verificar que un par de nodos aleatorios hayan registrado la votación correctamente. El motivo de esto es que si uno o más nodos malintencionados retienen el voto, pueden cambiar el voto utilizando la clave publicada. Al retrasar la publicación de la clave hasta que los nodos hayan publicado la votación, no es posible cambiar la votación después de eso.
Al finalizar la votación, las autoridades publican la clave MAC secreta (Ks) y la subcadena de validación secreta (Vs).
Cualquiera puede ahora sumar los votos utilizando los registros públicos. El primer voto válido (un voto no válido podría ser votar "¿qué?" En un voto de sí / no) de cada tecla que tenga éxito con la validación de MAC con Ks y Vs, es un voto válido. Cualquier otro voto se ignora, por ejemplo, votos dobles o claves "generadas en casa". Nadie puede engañar al sistema de votación.
Si el número de votos válidos excede el número de votantes elegibles, se han insertado votos falsos, ya sea por una parte maliciosa que creó "accidentalmente" una clave válida por casualidad, o un estado malicioso que inserta votos en el sistema.
Esos votos falsos no deben reaccionarse a menos que haya una convocatoria cerrada, por ejemplo, existe la posibilidad de que los votos falsos afecten el resultado. Un voto de "sí / no" donde el resultado es 90% sí, dicho voto no afectará el resultado a menos que más del 40% de los votos sean falsos.