En Nos quedamos en que en el sistema de votación electrónica a distancia que estamos considerando, se utiliza un algoritmo criptográfico de "firma electrónica ciega" para garantizar la confidencialidad del voto y la anonimización del votante. En este artículo lo examinaremos con más detalle.
Primero, abordemos un conocido y familiar algoritmo de firma electrónica, que se aplica ampliamente en sistemas de información de diversos propósitos. La base de la firma electrónica son los algoritmos criptográficos de cifrado asimétrico. El cifrado asimétrico es el proceso de cifrado mediante 2 claves: una se utiliza para cifrar y la otra para descifrar. Estas se llaman clave pública y clave privada. La clave pública es conocida por todos, mientras que la clave privada es solo conocida por el propietario de la firma electrónica y se almacena en un lugar inaccesible para otros.
Al firmar, ocurre lo siguiente: primero, el documento electrónico se convierte, mediante transformaciones matemáticas, en una secuencia de caracteres de un tamaño específico; esto se llama función hash.
La secuencia de caracteres obtenida (hash del documento) es cifrada por el remitente del documento utilizando la clave privada y se envía al destinatario junto con la clave pública. El destinatario descifra la secuencia de caracteres con la clave pública, aplica exactamente la misma función hash al documento y compara el resultado de la transformación con el resultado de la decriptación. Si todo coincide, entonces no se han realizado cambios en el documento después de que fue firmado por el remitente.
Las acciones descritas permiten comprobar que el documento no ha sido modificado, pero no garantizan que el remitente sea realmente quien dice ser. Por lo tanto, necesitamos un tercero en quien tanto el remitente como el destinatario confíen. Para esto, antes de enviar el documento, el remitente se dirige a un tercero y le pide que firme su clave pública con su firma electrónica. Ahora el remitente envía al destinatario el documento, su clave pública y la firma del tercer partido sobre su clave.
Ahora pasemos a lo que es una «firma ciega» y cómo puede ayudarnos en el proceso de anonimización.
Imaginemos que en el ejemplo descrito anteriormente el remitente es un votante, el documento es una boleta y el destinatario es la comisión electoral, o como dijimos, el «componente de registro y conteo de votos». Como tercera parte (validador) tendremos al componente «Lista de votantes». En este caso, el proceso puede llevarse a cabo de la siguiente manera.

El votante genera un par de claves en su dispositivo: una privada y una pública. Dado que estas claves se crean en su dispositivo personal en el navegador, solo él las conoce.
Con estas claves, firmará la boleta para garantizar su integridad. La boleta firmada y la clave pública se envían a la comisión electoral. Para que la boleta sea aceptada por el componente «Almacenamiento distribuido y conteo de votos», debe comprobar que la clave pública ha sido firmada por el validador.
El validador (componente «Lista de votantes») firmará la clave pública solo después de asegurarse de que el votante está presente en la lista de votantes.
Para preservar el secreto del voto, la clave pública del votante, generada en su dispositivo, no debe ser conocida por nadie. Por lo tanto, el validador debe firmar algo que no conoce. La tarea parece imposible, pero aquí es donde entran los algoritmos criptográficos, en este caso, el algoritmo de «firma ciega».
Primero, en el dispositivo del votante, la clave pública debe ser enmascarada. El enmascaramiento implica realizar a cabo ciertas operaciones matemáticas en el dispositivo del usuario. Imagina que piensas en un número aleatorio del 1 al 100, luego en un segundo número aleatorio del 1 al 10 y un tercero, entre 10 y 50; el número inicialmente pensado se eleva a la potencia del segundo número y se divide sin resto por el tercero. El resultado obtenido se comunica a los demás. No te será difícil recuperar el número original, ya que conoces la secuencia de acciones y los números que pensaste. Pero los demás no podrán hacerlo.
La ocultación (deslumbramiento) de la clave pública se realiza de acuerdo con un algoritmo criptográfico especial. Como resultado, el validador firma la clave pública enmascarada, sin conocer la clave original. Sin embargo, la peculiaridad del algoritmo es que el usuario (votante), al recibir la firma de la clave enmascarada, puede realizar transformaciones inversas y obtener una firma válida también para la clave original, no enmascarada.
El algoritmo descrito se utiliza ampliamente en los protocolos de votación secreta. En el sistema de votación electrónica a distancia, en este momento, se utiliza el algoritmo RSA con una longitud de clave de 4096 bits para la firma ciega.
En términos generales, el procedimiento de anonimización se presenta de la siguiente manera.
- Al crear la votación, se genera un par de claves 'validador' separado, y la clave pública se registra en la cadena de bloques. Para cada votación se crea un par de claves único.
- El usuario se identifica en el sistema de identificación (en este caso, en el ESIA) y proporciona permiso para la transferencia de sus datos de identificación desde el sistema de identificación al PTK DEG.
- El componente 'Lista de votantes' del PTK DEG verifica la presencia del usuario en la lista de votantes.
- En el dispositivo del usuario se crean sus claves personales: privada y pública, que solo él conoce.
- En el dispositivo del usuario, la clave pública se oculta.
- Junto con los datos de identificación y la clave pública enmascarada, el usuario se dirige al componente 'Lista de votantes'.
- El componente verifica nuevamente la presencia del usuario en la lista y que no haya recibido la firma anteriormente.
- Si todas las verificaciones son exitosas, se realiza la firma de la clave.
- El hecho de la firma de la clave se registra en la cadena de bloques.
- El usuario, en su dispositivo, desenmascara la clave pública y recibe la clave privada, la clave pública y la firma de la clave pública, siendo todas las claves conocidas solo por él.
- Después de esto, el usuario es trasladado a una zona anónima, a un sitio separado edg2020.gov.ru, donde no puede ser identificado (por ejemplo, antes de la transición puede cambiar de proveedor de Internet, cambiando completamente su dirección IP). VPN o cambiar de proveedor de Internet, modificando completamente su dirección IP)
- La aceptación del boletín dependerá únicamente de si la firma del 'validador' pasa la verificación y si tal clave no ha sido utilizada anteriormente.
A continuación, se presenta una descripción del algoritmo desde la perspectiva de la criptografía.
Parámetros de la firma y notaciones:


M – en formato padding FDN para la firma.
Fuente: habr.com
