sábado, 12 de marzo de 2022

Firma digital en Debian Buster

 

Para poder usar una tarjeta inteligente en el sistema operativo Debian Buster debemos de instalar una serie de paquetes que permitan leer las contraseñas y los números PIN de las herramientas de cifrado y firmas digitales de forma segura.

Una tarjeta inteligente es un dispositivo físico, de aspecto similar a una tarjeta de crédito, difícil de falsificar o copiar. Puede almacenar y procesar de forma segura cierta cantidad de información.

Empecé por instalar con Synaptic “pinentry”, que es un paquete que contiene una serie de programas que permiten a GnuPG (software libre de firmas digitales y cifrado desarrollado por el programador y criptógrafo alemán Werner Koch) leer las contraseñas y números PIN de forma segura.

Pinentry-gtk2 implementa el cuadro de diálogo para introducir el PIN, y es ideal cuando se usa software de encriptación como GnuPG o cualquier otro cliente que use el mismo software. El protocolo es abierto, es decir, no propietario y, por tanto, no está vinculado a ningún producto de una empresa en particular.

También instalé pinentry-qt, así dispongo del cuadro de diálogo tanto para KDE como para Gnome y XFCE con pinentry-gtk2.

Luego instalé “pcscd”, un demonio para acceder a las tarjetas inteligentes usando PC/SC (Personal Computer/SmartCard) que ofrece, ademas de los que ofrece el sistema operativo, otros servicios y funciones comunes a las aplicaciones (Middleware); así, puede gestionar datos, la autenticación, etc.
PC/SC (Personal Computer/Smart Card) es un conjunto de especificaciones para la integración de tarjetas inteligentes en ordenadores personales, siendo de código abierto la PC/SC Lite, especificación para uso de tarjetas inteligentes con GNU Linux.

En otro paquete, llamado “pcsc-tools”, se encuentran diversas herramientas que podemos usar los usuarios de PC/SC, entre la que está “pcsc_scan”, con la que podemos, usando la línea de comandos, escanear las tarjetas inteligentes y mostrar los eventos detectados, como inserción, extracción y análisis de la tarjeta.

Instalaremos también el controlador o driver, "libccid", para poder usar las tarjetas inteligentes con protocolo CCID (Chip Card Interface Device) a través de los lectores de tarjeta USB. Se comunica con los lectores de tarjeta a través del administrador de recursos PC/SC Lite (pcscd).

Además, para poder usar tarjetas criptográficas en general compatibles con PKCS#11 y PKCS#15, y en particular, por ejemplo, en el DNIe, debemos instalar opensc y opensc-pkcs11.
OpenSC proporciona un conjunto de librerías y utilidades para acceder a un elevado número tarjetas inteligentes. Se enfoca principalmente en tarjetas que soportan operaciones criptográficas. Facilita su uso en aplicaciones de seguridad como encriptación de correo, autenticación y firma digital.
La compatibilidad con las tarjetas depende también de la versión de la tarjeta, la versión del sistema operativo de la tarjeta y el subprograma precargado.
Suelen admitir opensc y opensc-pkcs11 sólo un subconjunto de operaciones posibles para su tarjeta. En ocasiones, como la inicialización de la tarjeta, puede requerir software propietario de terceros.

Y, por qué no, añadimos también un módulo PAM (Plugable Authentication Module), que con él logramos una forma de autenticación flexible utilizando esta aplicación o módulo, permitiendo así a las demás aplicaciones y software abstraerse del proceso de identificación.

Las funciones adicionales incluyen la verificación completa de los datos de la tarjeta mediante cadenas de certificados y listas de revocación de certificados. Disponemos así de asignación avanzada de nombres de usuario, incluidos LDAP (Lightweight Directory Access Protocol), Active Directory (terminología Microsoft relacionada con protocolos LDAP, DNS, y otros) y Kerberos (otro protocolo más, éste creado por el MIT). 

El módulo libpam-pkcs11 incluye todas las funciones para usar de este modo PKCS#11 con las tarjetas inteligentes.

A efectos prácticos, después de instalar pcsc-tools, podemos ya conectar el lector con el DNIe en un puerto USB, por ejemplo, y verificamos que lo lee y detecta el lector el S.O. tecleando en un terminal sin root (sin permisos administrativos: $) lo siguiente:

pcsc_scan

Luego, el archivo opensc-pkcs11.so, normalmente ubicado en /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so, lo cargamos en nuestro navegador desde

Ajustes -> Privacidad y seguridad -> Certificados ->Dispositivos de seguridad -> Cargar

Le damos el nombre de DNIe PKCS#11, y en Examinar seleccionamos el archivo opensc-pkcs11.so en la ubicación antes mencionada, Aceptar, y con esto yo ya he podido acceder con Debian 11 Bullseye a una determinada sede electrónica desde el propio dispositivo USB sin necesidad de cargar los certificados, tal como se puede hacer con Windows 11; además, no es necesario instalar el pkcs11# disponible en la sede del DNIe.

Evidentemente, no olviden el PIN del DNIe ni disponer de JAVA (openjdk versión "17.0.3", en mi caso). 

AUTOFIRMA

AutoFirma es una aplicación de firma electrónica desarrollada por el Ministerio de Asuntos Económicos y Transformación Digital de España. Al poder ser ejecutada desde el navegador, permite la firma en páginas de Administración Electrónica cuando se requiere la firma en un procedimiento administrativo.

Yo usé la última versión para GNU-Linux, AutoFirma 1.7.1 para Linux, y después de instalarlo, el procedimiento de uso es el siguiente:

Abrimos la aplicación desde el Menú de Inicio -> Oficina -> AutoFirma

Nos pide luego que insertemos en el lector el DNIe, por ejemplo, y que continuemos:


Pasamos  a la pantalla de Bienvenida:


Seleccionamos un fichero .pdf para firmar:

Cargado el fichero (fichero ejemplo), ya lo podemos firmar. Lean el párrafo de Bienvenida, ya que ofrece una información relevante para que el proceso pueda realizarse sin contratiempos:


Seleccionamos luego el área de firma (normalmente, al final del documento):


Luego pasamos a la plantilla de firma:


Seguidamente vemos los certificados contenidos, en este caso, en el DNIe:

Sólo tenemos tres intentos para poder meter el PIN de nuestro DNIe para usar los certificados que contiene:


Firmamos y guardamos en una carpeta el documento firmado (signed):


Documento firmado:


Confirmación de que el proceso se completó satisfactoriamente:


Probé con alguna que otra tarjeta más, incluso gestionando los certificados desde el navegador para firmar en una plataforma web, y todo resulto estupendamente. Es necesario que la aplicación AutoFirma esté instalada en su equipo para poder firmar con el navegador. Una cosa más: no olviden pausar Ghostery o uBlock Origin, ya que estas dos extensiones (si las tiene instaladas en su navegador) pueden impedir que la firma sea posible.

No hay comentarios:

Publicar un comentario