El documento describe la Plataforma Individual de Voto Electrónico (P.I.V.E.), un proyecto para permitir el voto electrónico a través de Internet usando el DNI electrónico para autenticación. Explica los requisitos legales y de seguridad, así como las características técnicas y el funcionamiento de la plataforma, incluyendo la personalización del soporte de voto para cada votante y la validación del mismo durante el proceso de votación.
16. Esquema Lógico de la Plataforma X-WINDOWS Mozilla Firefox Filtro Proxies (pfilter) PKCS#11 DNI-e OpenSC LINUX KERNEL IPTables Sistemas Archivos raíz (/) IPT Controller Cryptoloop Driver Squasfs Drivers de Red Sistema archivos raíz (cifrado) INTERNET
18. Entidad de Firma Soporte el Cálculo de las funciones HASH Soporte al Proceso de validación del CD Cálculo de la Imagen del CD Conexión HTTPS e Inicio del proceso De personalización y descarga 2 INICIO del Proceso de Personalización INICIO del Proceso de Arranque del CD 3 Validación del CD 1 Proceso de Voto Electrónico y Entidades 4 BACK-OFFICE Validación BACK-OFFICE Firma Módulo de Personalización LiveCD/ Entorno Cliente Aplicación De Voto
23. INTERNET Ku H,D {H,D}S {{H,D}S}Ku CV + = S PARTE SIN CIFRAR PARTE CIFRADA Ku CV + + DESCARGA Personalización del Soporte SEMILLA Q Q ENVÍO + SSL SSL
24. Ku CV {H’,D’}S PARTE SIN CIFRAR PARTE CIFRADA CV H’ S H,D INTERNET SEMILLA Q Validación del Soporte H D Si todo es correcto, se dará paso a la aplicación de voto
25. Proceso Personalización 1 .El usuario accede con un navegador web estándar a la web del sistema de personalización. El protocolo será siempre HTTPS , para garantizar la confidencialidad. La comunicación HTTPS requiere de autenticación de servidor y de cliente mediante el empleo de certificados. Se utilizará SSL v3.0 con el conjunto de algoritmos RSA, 3DES y SHA. 2 . El usuario utilizará su DNIe para autenticarse frente al servidor de personalización. Se le solicitará el PIN de su DNIe para poder establecer la conexión TLS/SSL. 3 . El servidor (módulo de personalización) generará la semilla Q invocando el servicio criptográfico correspondiente a la Entidad de Firma y Cifrado, componiendo la petición correspondiente a la APDU 0x02 con una longitud solicitada de 128 bytes. 4 .El servidor (módulo de personalización) descargará en el puesto del cliente el applet necesario para realizar el proceso de firma, junto con la semilla Q calculada. 5 . El cliente firmará la semilla Q con la clave privada asociada al certificado de firma de su DNIe, para realizar esta operación se volverá a solicitar el PIN del usuario. Para seleccionar el certificado bastará en esta fase con presentar al usuario una caja de diálogo para selección del certificado. El resultado de la firma será devuelto por el componente cliente (applet) al servidor (módulo de personalización). 6 .El servidor (módulo de personalización) continuará con el proceso de derivación de claves para obtener la clave Ku. Para realizar esto el módulo de personalización invocará el servicio criptográfico ofrecido por la EFC para derivación de claves. El módulo de personalización deberá enviar a la EFC, el resultado de la firma de Q, que hemos llamado “P” y un valor aleatorio “SALT”, será el Q original. La respuesta de la EFC contendrá la clave de usuario Ku. 7 . El servidor preparará, inmediatamente o en modo batch, una imagen del CD personalizada para el usuario. Este CD constará de los siguientes componentes : Parte Abierta , que incluye lo necesario para arrancar: (kernel, imagen initrd de inicio, módulos de kernel imprescindibles y software no crítico) Parte Cifrada , que contiene el resto del software del CD. Específicamente, contendrá un fichero binario B de un tamaño por determinar, de contenido generado de forma aleatoria por el servidor y distinto para cada usuario. La clave usada para cifrado será Ku. El algoritmo de cifrado será AES en modo CBC. Código de validación : Este código se calculará de la siguiente forma: El servidor calculará un hash H, usando el algoritmo SHA256, de los siguientes componentes: ■ Parte Abierta: ■ kernel ■ imagen de arranque initrd ■ módulos de kernel cargados ■ Parte cifrada del CD (incluyendo por tanto el fichero aleatorio anteriormente descrito) Se cifrara H, concatenado con el DNI del votante D, con la clave S que será utilizada invocando los servicios de cifrado y descifrado de la Entidad de Firma y Cifrado, el algoritmo de cifrado a utilizar será 3DES en modo CBC. Se obtendrá {H,D}S Se cifra {H,D}S con Ku, mediante cifrado simétrico AES en modo CBC. Se obtendrá {{H,D}S}Ku, al que llamaremos CV, es decir, nuestro código de validación buscado. Este código de validación se graba en la imagen del CD, en la parte no cifrada, puesto que depende indirectamente del hash de la parte cifrada. Junto con la semilla Q y el SALT, si diera lugar. 8 . Una vez lista la imagen del CD, el usuario realizará la descarga y grabará el soporte, o solicitará su envío por correo certificado.
26. Proceso Validación 1 . El ordenador arranca desde CD, cargando los componentes almacenados en la parte no cifrada del CD: kerrnel, initrd y módulos imprescindibles para el arranque. 2 . Una vez realizado esto, se pide al usuario la introducción del PIN de su DNIe. 3 . Se inicia el proceso de derivación de claves para obtener la misma clave Ku utilizada en el proceso de obtención del CD. Se firma la semilla Q con el DNIe del usuario, el resultado se utiliza para obtener la clave derivada Ku mediante el empleo del mismo algoritmo de derivación de claves utilizado en el momento de la personalización. 4 . Se usa Ku para descifrar la parte cifrada del CD y se continúa el arranque. El proceso de validación, la segunda parte, queda por tanto así : 1 . El CD se conecta a la aplicación de voto, que pide autenticación al CD ■ Para este propósito se abre automáticamente un conexión SSL con el servidor de voto, se requiere de autenticación de servidor mediante el empleo de certificados. ■ Se utilizará SSL v3.0 con el conjunto de algoritmos RSA, 3DES y SHA. 2 . Obtiene el código CV, que se encuentra grabado en la parte abierta del mismo CD 3 . Obtiene Ku a partir del usado durante el arranque. [Comentario: evitar la inserción del PIN más de dos veces, por lo que si Ku se mantiene en memoria del PC del usuario se recomienda su ofuscación en memoria durante el ciclo de vida, estando en claro en memoria sólo en los momentos estrictamente necesarios] 4 . Descifra CV, utilizando el algoritmo AES en modo CBC, que es en realidad {{H,D}S}Ku usando Ku y obteniendo {H,D}S 5 . El CD calcula el hash H' de la misma forma que el servidor de personalización en su momento: como un SHA256 del núcleo, initrd, módulos y parte cifrada del CD. 6 . El CD manda al módulo de validación residente en el servidor de voto: {H,D}S , H' y D', siendo D’ el DNI del votante. 7 . El módulo de validación del servidor de voto consulta al módulo de validación residente en el Back-Office, dónde se procede a invocar el proceso de descifrado de {H,D}S con S y obtiene H. La operación de descifrado tiene lugar en la Entidad de Firma y Cifrado. 8 . En el módulo de validación del Back-Office se realizan las siguientes comprobaciones: Si H == H', y D==D', el CD ha superado la validación. 9. El módulo de validación del servidor de voto recibe la respuesta sobre la validez del CD y procede a denegar o permitir continuar con proceso de voto electrónico. 10 .Para continuar con este proceso se procederá a abrir un navegador web, desde el cuál el usuario accede a la web del sistema de voto. El protocolo será siempre HTTPS, para garantizar la confidencialidad. ■ La comunicación HTTPS requiere de autenticación de servidor y de cliente mediante el empleo de certificados. ■ Se utilizará SSL v3.0 con el conjunto de algoritmos RSA, 3DES y SHA. ■ El usuario utilizará su DNIe para autenticarse frente al servidor de personalización. Se le solicitará el PIN de su DNIe para poder establecer la conexión TLS/SSL.