1. Firma digital, sello de tiempo y cifrado de
documentos.
Firma digital
La firma digital se define como el conjunto de datos electrónicos
que acompañan o que están asociados a un documento electrónico
y se basa en la Ley 59/2003, de 19 de Diciembre sobre la Firma Electrónica,
donde se indica que la “firma electrónica” reconocida debe cumplir las
siguientes propiedades o requisitos:
Identificar al firmante.
Verificar la integridad del documento firmado.
Garantizar el no repudio en el origen.
Contar con la participación de un tercero de confianza.
Estar basada en un certificado electrónico reconocido.
Debe de ser generada con un dispositivo seguro de creación de firma.
La unión del cifrado (del que ya se habló en un artículo anterior que puede leer AQUÍ)
y la firma digital aportan las tres características de la comunicación por Internet:
identificación inequívoca del firmante, integridad de los datos y no repudio y que son
parte tres de los requisitos que pide la ley.
La integridad de los datos significa que podemos estar seguros de que lo que enviamos
es lo que recibe el receptor y viceversa, que lo que recibimos es lo que envió el emisor.
El no repudio significa que el emisor, con posterioridad a haber enviado el mensaje (o
el fichero o el correo electrónico, lo que se envíe firmado) no puede decir que no lo
envió, y que la firma no es suya. En otras palabras, mediante la firma digital no hay
forma de decir que nos han “falsificado la firma”.
La identificación inequívoca del firmante se consigue con el certificado digital y la
infraestructura de clave pública, de las que ya se habló en el anterior artículo. Esta
infraestructura de clave pública incluye las llamadas Autoridades de Certificación
(CA), que son los “terceros de confianza” a los que alude la ley.
Con respecto a la utilización de dispositivos seguros, se refiere a la utilización de un
documento de identificación segura como un DNI electrónico o una tarjeta criptográfica
de la FNMT. Son necesarios para la entrega de documentos firmados a la
administración, pero no tiene por qué ser necesarios de cara al intercambio de
documentos firmados entre empresas o particulares.
El documento de firma digital en sí, como ya veremos, sólo proporciona el principio de
integridad. El resto se consiguen mediante el resto tecnologías que acompañan a la
firma: el cifrado, la infraestructura de clave pública o las tarjetas criptográficas.
2. Las aplicaciones prácticas de la firma digital son muchas y están orientadas a realizar
operaciones por Internet que en la vida cotidiana requieren de una firma para validarlas,
por ejemplo:
Realización de la Declaración de la Renta a través de Internet.
Solicitudes en los registros electrónicos administrativos
Petición de la vida laboral.
Recepción de notificaciones electrónicas.
Firma de correos electrónicos.
Firma de facturas electrónicas.
Proceso de firma digital
Una firma digital se consigue calculando un valor “hash”, que es un valor único
que cambia cada vez que se modifica lo más mínimo un documento (un espacio en
blanco más o menos, implica un valor hash completamente diferente). Ese valor hash se
adjunta al final del documento y se cifra para que nadie pueda leerlo más que el
receptor.
De esta manera que el receptor del mensaje o documento, lo primero que hace es
descifrar el hash, calcular el “hash” del mensaje o documento y comprobar si son
iguales. Si son diferentes, advertirá al usuario de que podría haber habido una
modificación del mensaje durante el tránsito.
Se pueden firmar todo tipo de documentos (PDFs, TXTs, DOCs, JPGs, etc) y
también se pueden firmar correos electrónicos y cualquier cosa que se quiera
enviar por internet.
En resumen, el proceso de firma es el siguiente:
1.- Creamos el documento que queramos firmar, ya sea un documento PDF, o
lo que deseemos. En este ejemplo vamos a usar un documento PDF.
2.- Se obtiene el valor hash, único de ese documento. Hay distintas funciones
Hash (MD5, SHA1, SHA-256, etc.). El más utilizado actualmente es el SHA-
256. SHA-256 genera un valor de 256 bits (que en hexadecimal puede tener este
aspecto:
c6b6b0c4147befff952eabfdb9bdc0a0c25bc8204378aadf8e9c52f2b30cc3c1) y
que es único para dicho documento. Para hacernos una idea, al documento
anterior le añadí un espacio en blanco y el hash SHA-256 que obtuve fue
20dc443a2071c615d6e90594043af06357de8fa8f53eb39f03e11516508f8dd5.
Como vemos no se parecen en nada.
A partir de este valor es imposible obtener ninguna información del documento
original, pero siempre que lo calculemos (si no hemos modificado el
documento), nos sacará el mismo valor hash.
3. 3.- Se cifra, con nuestra clave privada, este hash SHA-256 que hemos
obtenido del PDF. El texto obtenido que puede ser similar a:
lzODK0TwL2AUkdcJ7abiee3tc93jrMxqTxu7V0xJoNImKA105TzEHAOzeSU
W1N/uudGwTLFZgQt4ejbpLCNwWzG6X8KwVaPPZW/zAwzB4DcnScn6zcz/
uRnYs8iBBIabuRN7M1vRHoM77szsxA+hyQxwek/i702lyshkArtQ5Q4=
Es la firma digital del documento PDF. Esto generalmente se guarda en un
pequeño archivo.
Si además queremos cifrar el documento para garantizar la confidencialidad y el
no repudio, se continuaría con los siguientes pasos:
4.- Se cifra el documento PDF original usando la clave privada del
emisor.
5.- Se cifra otra vez este documento PDF ya cifrado, pero esta vez usando la
clave pública del destinatario.
Si sólo se quiere firmar el documento (por ejemplo queremos que el documento sea
público pero que vea que lo hemos firmado nosotros) bien en el correo electrónico o por
el medio que sea, se enviará el documento PDF en claro y el fichero de la firma digital.
Si por el contrario, se desea confidencialidad y no repudio, los siguientes tres
documentos se unirán en un documento único y se envían por correo electrónico o el
método que sea:
- El documento PDF doblemente cifrado.
- El fichero con la firma del documento original.
- La clave pública del emisor (este último no es necesario puesto que las claves
públicas son eso, publicas, y están disponibles en los servidores de claves).
4. Este proceso esta descrito en el siguiente esquema:
¿Y por qué es necesario este proceso tan largo? Bien, veamos los pasos seguidos:
- La firma digital (pasos 1-3) es un hash que varía con la menor modificación del
documento y ese hash ha sido firmado con la clave privada del emisor. Con esto
el receptor se asegura de que ese documento no ha sido modificado desde que
el emisor lo firmó. A esto se le llama integridad.
- El primer cifrado del PDF (paso 4), hecho con la clave privada del emisor, sólo
puede ser descifrado con la clave pública del emisor. Con esto, el receptor
puede estar seguro que ese documento fue cifrado por la persona que le
manda el documento. A esto se le llama no repudio.
- El segundo cifrado del PDF (paso 5), hecho con la clave pública del receptor,
sólo puede ser descifrado con la clave privada del receptor. Con esto el emisor se
asegura que sólo el receptor puede leer el documento cifrado. A esto se le
conoce como confidencialidad.
Aunque el proceso es muy largo, un ordenador lo hace en cuestión de milisegundos.
Quizás el cifrado, si el documento original es muy grande, pueda llevar unos segundos,
pero no más.
5. El proceso de descifrado y comprobación de firma por tanto es el siguiente:
En resumen, el documento se descifra dos veces, usando primero la clave privada del
receptor y luego la clave pública del emisor. Con eso nos aseguramos la
confidencialidad y el no repudio. Si queremos comprobar la integridad del envío,
deberemos realizar el mismo proceso que se realizó en el momento de la creación de la
firma digital y comparar la firma obtenida con la recibida por correo electrónico. Si son
iguales, aseguramos la integridad del envío.
Lo mismo que se ha realizado con un documento PDF, se pueden firmar correos
electrónicos o mensajes de mensajería instantánea. En el fondo, tanto los correos
electrónicos como los mensajes son pequeños ficheros que puede ser cifrado firmados
igualmente.
Multifirma
Puede ocurrir que un documento tenga varios autores y se desee que todos firmen. El
proceso en ese caso depende de si el documento va cifrado o no.
Si el documento no va cifrado, el proceso consiste en calcular el hash del documento
original y firmarlo por separado todos los firmantes con sus respectivas claves
privadas. Es decir, todos los firmantes cifran el hash original del documento y en el
documento finalmente generado, no hay una firma, sino tantas como firmantes haya.
6. Puede ocurrir que se desee por ejemplo firmar un documento por dos directores y luego
por un interventor que dé fe de que ese documento es real y ha sido firmado por los dos
directores.
En ese caso, el hash del documento será firmado por ambos directores, obteniéndose
dos firmas. Esas dos firmas se unirían en un único documento que sería a su vez
firmado por el interventor. Es decir, se recibiría el documento, sin cifrar, y otro
documento de firma que habría que descifrar usando la clave pública del interventor
para obtener las dos firmas digitales de ambos directores.
Si además hablamos de cifrado de documentos (o mensajes) multifirmados, en este
caso el orden es importante. Así, se debe descifrar primero con la clave pública del
último que cifró (y firmó) el documento. ¿Y cómo sabemos cuál es el último? En estos
casos junto al documento “multicifrado” sólo se recibe una firma digital, de la que
podemos obtener quién es el firmante. El firmante será también el cifrador. Es esa
clave pública de ese cifrador la que debemos utilizar.
Al descifrar el documento con esa clave pública, se genera otro documento (cifrado) y
otra firma digital, correspondiente otro firmante. Usaremos pues la clave pública de este
segundo firmante para descifrar tanto el documento como la firma digital. Así se
continúa con todos los firmantes.
Sello de tiempo
El proceso de verificación de una firma electrónica debe poder repetirse en cualquier
momento en el futuro, incluso años después de su generación.
A lo largo del tiempo los algoritmos de cifrado pueden llegar a ser vulnerables siendo
posible obtener las claves privadas si el algoritmo es vulnerable.
La solución (a grandes rasgos) de estos problemas consiste en incluir un sello de
tiempo en la firma de manera que esta fecha no sea incluida por el propio firmante
sino por una entidad de certificación de sello de tiempo (TSA).
Por otra parte, es necesario que en el proceso de firma se compruebe que el certificado
del firmante no haya caducado. Esto se consigue realizando una petición OCSP a un
servidor de claves que nos asegure que el certificado es válido.
Por esta razón el proceso de firma se complica un poquito más, incluyendo dos pasos
anteriores a la firma que son:
0.1.- Petición de validez de certificado OCSP a un servidor de claves
0.2.- Solicitud de una sello de tiempo a una TSA
Formato de firma
Una de las preocupaciones que apareció posteriormente a la implantación de la firma
digital fue que, por ejemplo en Europa, un documento firmado digitalmente en un país
miembro de Europa, debía ser válido en cualquier otro país miembro.
7. El nivel de interoperabilidad debía ser establecido utilizando estándares abiertos y
debían existir diferentes niveles de seguridad y confidencialidad según la
importancia del documento. Todo ello se recogió en la Directiva Europea
1999/93/CE.
Esto se solucionó desde un punto de vista técnico estableciendo un formato de firma
muy abierto.
Como hemos visto, una firma digital no deja de ser un fichero (o varios) que contiene(n)
información sobre el documento original, el firmante, la fecha de la firma, algoritmos
utilizados y posible caducidad de la firma.
En ocasiones ese fichero de firma va incrustado en el documento original y en otras se
trata de ficheros separados.
La forma en que se estructura esta información dentro del archivo de firma (el orden de
esa información dentro del fichero, las etiquetas que indican cuando empieza un campo
y cuando termina, la opcionalidad de esos campos, etc.) viene determinado por el
formato en que es enviada la firma. Existen distintos formatos actualmente como son
CMS, CAdES, PAdES, XAdES, etc.
CMS (Criptographic Message Syntax) fue el primer estándar de mensajes protegidos
criptográficamente y se basó en PKCS#7, que es el estándar para el cifrado y firmado de
mensajes en una infraestructura PKI.
CMS es un marco general para la firma de documentos digitalmente, tales como E-Mail
(S / MIME), PDF o cualquier otro tipo de documento.
CAdES (CMS Advanced Electronic Signatures). Este formato, del año 2000, es la
evolución del formato CMS. Es apropiado para firmar ficheros grandes, especialmente
si la firma contiene el documento original porque optimiza el espacio de la información.
Al poco de crear CMS
En el marco de esta directiva, CAdES especifica seis perfiles precisos de datos firmados
para su uso con firma electrónica avanzada.
Esto quiere decir, a efectos prácticos, que el formato de la firma usando cada perfil es
diferente, el receptor debe detectar con qué perfil viene el fichero de firma y ser capaz
de extraer la firma en sí.
En 2001 aparece XAdES (XML Advanced Electronic Signatures). Se trató de una
evolución paralela a CAdES. Mientras de CAdES se basó en CMS, XAdES se basó en
XML-DSIG. Con XAdES, el resultado es un fichero de texto XML. Los documentos
obtenidos suelen ser más grandes que en el caso de CAdES, por eso no es adecuado
cuando el fichero original es muy grande. XAdES introduce también las adaptaciones y
extensiones de la directiva 1999/93/CE, creando sus propios perfiles, incompatibles con
8. CAdES. Aplicaciones como eCoFirma del Ministerio de Industria y Comercio, sólo
firman en XAdES.
En 2009 aparece PAdES, que se basan directamente en PKCS#7 y el estándar 32000-1,
que establecen un framework para la firma de digital de documentos. PAdES incorpora
las mismas características de CAdES y XAdES, pero únicamente para ficheros PDF. Por
esta razón es el formato más adecuado cuando el documento original es de este tipo.
Con PAdES, el destinatario de la firma puede comprobar fácilmente la firma y el
documento firmado, ya que se trata de una firma visible y legible para el ser humano.
Con los formatos anteriores esto no era posible si no se utilizan herramientas externas.
La estructura del documento de firma digital es diferente en cada uno de estos formatos
y dentro de cada formato es diferente en función del perfil utilizado, incluyendo más o
menos información en cada caso.
No es objetivo de este artículo la descripción del formato de cada uno de estos
estándares. La mayoría de las soluciones actuales soportan todos estos formatos.
Resumen
La Ley 59/2003, de 19 de Diciembre sobre la Firma Electrónica establece los requisitos
que una firma digital debe cumplir que son sobre todo tres, Identificar al firmante,
Verificar la integridad del documento firmado y Garantizar el no repudio.
El proceso de firma se basa en la obtención de un valor hash del documento y el
cifrado de este hash para su envío junto con el documento. Sin embargo, esta firma
sólo garantiza la integridad, el resto de objetivos se consiguen cifrando ambos ficheros
(el documento y la firma) con la clave privada del emisor y la clave pública del receptor.
Para poder verificar que una firma de un documento se ha realizado en una fecha
determinada, y que esta firma es válida, al proceso de firma se le han incluido dos pasos
más, una petición de validez de certificado al servidor de claves y una solicitud de un
sello de tiempo a una entidad certificadora de tiempos.
Cabe mencionar, por último, que existen por ultimo diferentes formatos de firma digital
(CAdES, XAdES, etc), y las aplicaciones de validación de firma deben estar preparados
para la verificación de todos ellos.
REALSEC EMV Data Preparation H3P