Cómo funciona la firma digital de actas con Izenpe

Desde hace muuucho tiempo he querido saber cómo funciona internamente la firma digital de actas de mi universidad (EHU). Los que me conocéis ya sabéis que cuando digo «internamente» es realmente a nivel de disección. ¿Me acompañas en el viaje? Vamos allá….

actas1

Las actas de exámenes, trabajos fin de grado, etc. se firman a través de GAUR. Te identificas como profesor, entras en la sección de Exámenes / Proceso de Firma y ahí tendrás los PDF -que previamente has calificado- listos para firmar.

Cuando pulsas en Firmar uno de los PDF se ejecutará la siguiente función JS: onclick=»a_firmar(id_pdf,id_firmante,id_version); Esos valores han sido calculados para esta sesión del usuario (del profesor). La función a_firmar llama a su vez a abrir_dialog() que lanza una URL https://gestion.ehu.es/idazki/index?query_string siguiendo este patrón para los parámetros de la query_string:

Application ID: 3 Language: CAS (Castilian/Spanish) Action: 6 Session ID: 939c91xxxxxxxxxxxxxxxxxxxxxxxxxx3837694 PDF ID: YYYYYYYY Signer ID: ZZZZZZZZZ Document number: AAAAAAA Version: 1 Timestamp: 8,98107480305963801233649306596140178816

Siguiendo esa URL, veremos lo siguiente:

actas2

En el código fuente de esa URL veremos que el PDF a firmar está codificado en base64 dentro de un JS. Si ahora pulsamos en «Firmar», se inicia el proceso de firma digital.

El browser llamará a Idazki Desktop (una aplicación residente de Izenpe, que intercepta las URL que comienzan con el protocolo idazki://). Este script del navegador pasará el PDF a firmar (en base64) a Idazki Desktop para que el usuario (el profesor) seleccione el certificado con el que quiere firmarlo. Una vez firmado, Idazki Desktop devolverá el control al navegador. Este comprobará que todo está OK y enviará el acta firmada a la EHU. Pero hemos dicho que queremos diseccionar, así que hay que meterse en harina… ok, no te aburriré con los detalles en este post, pero puedes verlos aquí si te pica la curiosidad 🙂

Para confirmar que entendí correctamente el funcionamiento del proceso se me ocurrió crear una pequeña web de prueba: https://ikasten.io/idazki.html

actas3

La idea es que puedas subir un PDF cualquiera (te dará la opción para seleccionarlo de tu disco duro) para que mi script lance la aplicación Idazki Desktop y puedas firmar el PDF con tu certificado digital. Si la firma se completa, te dará un bonito mensaje de éxito. Si no, te informará del error.

P: ¿No necesito identificarme? R: No. Idazki Desktop solo recibirá un PDF y una orden de firmarlo digitalmente. Ahí sí, verás tu lista de certificados digitales. Selecciona el tuyo, introduce el PIN y la aplicación Idazki firmará el PDF, devolviendo el control al navegador.

P: ¿No estarás guardando el PDF en tu servidor? R: No. El navegador carga el PDF en un blob base64 en local. No se envía nada al servidor. No tienes por qué creerme, abre el código fuente de idazki.html y lo verás.

Abre la URL de prueba: https://ikasten.io/idazki.html

Selecciona un PDF. Pulsa en Sign PDF. El navegador debe abrir Idazki Desktop.

actas4

Idazki Desktop debe abrir una ventana «nativa» (es una app Java usando Swing, el look&feel le delata) para que selecciones el certificado con el que quieres firmar. Pulsas Aceptar y te pedirá el PIN o la clave asociada. Lo introduces y …..

actas5

¡Bum! Si estás en macOS con un procesador ARM fallará 🙂

actas6

Con este mensaje de error:

actas7

Pero eso es otra larga historia que os contaré otro día (por qué falla, cómo encontrar el bug y cómo arreglarlo SIN tener acceso al código fuente). Una bonita historia que explica cómo parchear un binario Java del que no tienes el código fuente, usando IA por el camino.

actas8
Pero si usas un sistema operativo + procesador soportado (o el parche del que os hablo si usas macOS+ARM), todo irá bien:

actas9

Addendum:

¿Y podría bajarme el PDF firmado? Yep. Si quieres tener esa opción, he preparado otro script de prueba más completo aquí: https://ikasten.io/idazkiFull.html

actas10

Una vez firmado el PDF, pulsa en «Download Signed PDF» y podrás descargártelo. Si lo abres con alguna aplicación que soporte la visualización de firmas en PDF, como Adobe Acrobat Reader, podrás verla:

actas11

La Comunidad OpenDNIe se presenta con un evento internacional en la Universidad de Cádiz

Los días 26 y 27 de mayo tendrá lugar en la Universidad de Cádiz el primer HackFest destinado a la Comunidad OpenDNIe, que organizado por CENATIC (Centro Nacional de Referencia de Aplicación de las TIC basadas en Fuentes Abiertas), reunirá a los responsables de algunas de las instituciones colaboradoras del proyecto como la Dirección General de la Policía y Guardia Civil (DGPGC), la comunidad OpenSC, la Free Software Foundation Europe (FSFE), el Instituto Nacional de Tecnologías de la Comunicación (INTECO), las empresas Atos Origin y Emergya, así como muchos desarrolladores, entre los que destaca Juan Antonio Martínez.

Este primer evento asociado a la Comunidad OpenDNIe analizará el desarrollo, evolución y sostenibilidad del driver abierto y legal del DNI electrónico en España sobre el estándar de criptografía de clave pública PKCS#11. Además, se tratarán aspectos técnicos y legales del proyecto, y las líneas de actuación futuras en lo que a identidades digitales se refiere desde el punto de vista del desarrollo de software, marcando el camino conjunto entre OpenDNIe y OpenSC.

Movimientos relativos a Soft Libre en el Gobierno Vasco

Álex Etxeberría (parlamentario del PNV) solicitó los estudios pendientes de la Oficina Técnica del Software Libre (a propósito entre otras cosas del estudio de implantación de OpenOffice en el GV). El 1 de Marzo parece ser que el señor Etxeberría recibió la respuesta a dicha petición, en un CD que incluía todo lo solicitado. Digo parece porque no está accesible en la web del Parlamento :-
Desconozco si es posible acceder a esa información, pero para comprobarlo, he solicitado hoy mismo por email una copia de dicha documentación al señor Etxeberría.

El 4 de Marzo, el mismo parlamentario envió una nueva remesa de preguntas a la Consejera de Justicia y Administraciones Públicas (Idoía Mendía, PSE):

(Nota del Editor: sabiendo que el contrato de la Oficina Técnica del Software Libre supuestamente expiró el 31 de Diciembre de 2010…)

  • ¿qué intenciones tiene el departamento de cara al futuro entorno a la oficina técnica de sotware libre? ¿Qué funciones va a realizar en el futuro esa oficina? ¿Cómo va a realizar esos trabajos?

  • El contrato realizado con la empresa Agoranel 2000, SL (Nota del Editor: a quien se adjudicó la Oficina del Soft Libre) estpulaba que los trabajos debían realizarse en las dos lenguas. Sin embargo, los enviados a este parlamentario solo están en casfellano. ¿Por qué? Tiene intención el departamento de traducir al euskera dichos trabajos?

Para terminar una nota curiosa: Izenpe ha publicado hoy a través del BOPV un ANUNCIO de licitación del contrato que tiene por objeto los servicios «Servicios de soporte bajo Windows GNU/Linux y Mac OS» (Expediente: IZNP-S_008-2011). Leyendo el PDF más en detalle vemos lo siguiente:

«el objeto del presente pliego es la contratación por parte de Izenpe, S.A. de los servicios para la realización de guías de instalación y configuración para el correcto uso de los certificados de Izenpe en sistemas operativos Linux, Mac y Windows, instalables ligeros, guías para solicitar e instalar certificados de servidor SSL, generación de notas técnicas, soporte de 2.º nivel específico para plataformas Windows, GNU/Linux y Mac OS X, testeo de los productos de Izenpe sobre sistemas operativos Windows, Linux y Mac.»

Es una buena noticia, espero seguir leyendo cosas como éstas en el futuro.