Saltar al contenido

La firma electrónica por dentro

El mecanismo real de una firma: hash del documento, cifrado del resumen con la clave privada, los algoritmos que se usan en cada paso, la firma XML y el certificado X.509.

Los dos pasos de una firma electrónica

Firmar electrónicamente no consiste en cifrar el documento entero: eso sería lento y no serviría, porque el destinatario tiene que poder leerlo. El proceso son dos pasos encadenados.

  1. Se toma el documento (XML o binario) y se le aplica una función hash, que produce una cadena de longitud fija. A esa cadena se la llama residuo, resumen o message digest.
  2. Ese resumen se cifra con cifrado asimétrico usando la clave privada del firmante, que es la que va dentro de su certificado X.509 v3. El resultado es la firma «básica».

El orden importa y es lo que se pregunta: primero hash, después cifrado, y lo que se cifra es el resumen, nunca el documento. Y se cifra con la clave privada, no con la pública: por eso cualquiera puede verificar la firma con la clave pública del firmante, pero solo él ha podido generarla.

Documento, hash, resumen, cifrado asimétrico con la clave privada, firma básica. Cinco palabras en ese orden resuelven la mayoría de las preguntas del apartado.

Para el examen

  • Paso 1: calcular el hash del documento

  • Paso 2: cifrar ese RESUMEN con la clave PRIVADA del firmante

  • Lo que nunca ocurre: cifrar el documento entero

Los algoritmos de cada paso

Cada uno de los dos pasos tiene su propia familia de algoritmos, y confundirlas es el error clásico: SHA no cifra nada y RSA no resume nada.

PasoAlgoritmosDetalle
Hash (resumen)SHA-256, SHA-384 y SHA-512; SHA-1; MD5SHA-1 produce 160 bits y MD5, 128 bits
Cifrado asimétricoRSA, DSA, DH, EC y El-GammalSe aplica sobre el resumen, con la clave privada del firmante

Las dos longitudes que caen literales: SHA-1 son 160 bits y MD5, 128 bits. En la familia SHA-2, el número del nombre ya es la longitud (256, 384 o 512).

Para el examen

  • Funciones resumen: SHA y MD5

  • Tamaños: SHA-1 produce 160 bits; MD5, 128

  • Algoritmos asimétricos: RSA, DSA, Diffie-Hellman, curva elíptica y El-Gamal

La firma XML: XMLDSIG

La firma XML responde al estándar XMLDSIG de la W3C, y es el precursor de XAdES: XAdES no es un estándar independiente, sino una extensión de aquel.

Tiene tres versiones, que se distinguen por dónde queda la firma respecto del documento firmado: Enveloping, Enveloped y Detached. Y una advertencia que se pregunta a menudo: aunque el formato de la firma sea XML, se puede firmar cualquier tipo de documento, no solo XML.

Su uso más extendido fue la cabecera SOAP, para firmar las peticiones de los servicios web, que es lo que se conoce como WS-Security.

Las etiquetas básicas van por parejas, y cada pareja junta el valor con el algoritmo empleado para obtenerlo: DigestValue con DigestMethod (donde el método será MD5, SHA-1 y similares) y SignatureValue con SignatureMethod (donde el método será RSA, DSA, DH y similares). A ellas se suma X509Certificate, que transporta el certificado del firmante.

Enveloping, Enveloped y Detached son tres, no dos ni cuatro, y XAdES es una extensión de XMLDSIG, no al revés.

Para el examen

  • Quién lo define: el W3C

  • Qué relación tiene con XAdES: XMLDSIG es su precursor

  • Sus tres variantes: Enveloping, Enveloped y Detached

  • Uso estrella: WS-Security en servicios SOAP

El certificado X.509 y sus codificaciones

X.509 es el estándar que define la estructura de datos del certificado, y lo hace mediante ASN.1, que es la notación con la que se describe esa estructura de forma independiente de cómo se almacene después.

Definida la estructura, hay que escribirla en un fichero, y ahí se abren dos ramas de codificación: una en texto (Base64 ASCII) y otra en binario. De cada rama cuelgan dos formatos, cada uno con sus extensiones.

CodificaciónFormatoExtensiones
Base64 ASCII (texto)PEM.pem, .crt, .cer, .key
Base64 ASCII (texto)PKCS#7.p7b, .p7c
BinariaDER.der, .cer
BinariaPKCS#12.pfx, .p12

La extensión .cer aparece en las dos ramas (PEM y DER), así que por sí sola no dice si el fichero es texto o binario. Es la trampa habitual de esta tabla.

Para el examen

  • Con qué se define: notación ASN.1

  • Codificaciones en texto: PEM y PKCS#7 (.p7b)

  • Codificaciones binarias: DER y PKCS#12 (.pfx, .p12)

  • Extensión ambigua: .cer aparece en las dos ramas