Problema: los documentos a firmar pueden ser muy grandes
https://cryptobook.nakov.com/digital-signatures/rsa-signatures
Cifrando el hash de un mensaje con nuestra clave privada, aseguramos que ese mensaje lo hemos enviado nosotros y cualquier puede verificarlo
Firma digital de un mensaje = cifrado del hash de un mensaje con mi clave privada
Solución: cifrar solo el hash del mensaje
En firma digital se cifra el hash del mensaje con nuestra clave privada
doc
que quiere firmar(alice_pub, alice_priv)
firma = cifrado_RSA(hash_SHA256(doc), alice_priv))
(doc, firma)
(doc_recibido, firma)
alice_pub
hash_doc_recibido = hash_SHA256(doc)
firma_descifrada = descifrado_RSA(firma, alice_pub)
hash_doc_recibido === firma_descifrada
Todo este proceso se estandariza con PKCS#7
Las firmas pueden ir (1) archivos separados; (2) firmas dentro de documento; (3) documento dentro de firma
#######################
# Alice genera un par de claves
# el archivo alice_priv.pem incluye las dos, pública y privada
openssl genrsa -out alice_priv.pem 2048
# Alice puede extraer la clave pública para distribuirla al mundo
openssl rsa -in alice_priv.pem -outform PEM -pubout -out alice_pub.pem
#######################
# Alice firma archivo.txt
openssl dgst -sha256 -sign alice_priv.pem -out archivo.sig archivo.txt
# Alice envía a Bob: archivo.sig y archivo.txt
########################
# Bob verifica. Necesita alice_pub.pem, archivo.sig y archivo.txt
# (Veremos en otras sesiones cómo obtiene alice_pub.pem)
openssl dgst -sha256 -verify alice_pub.pem -signature archivo.sig archivo.txt
(archivo anterior, hasheado y cifrado con clave privada de Debian)
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEE35ucSeqpKYQyWJ122ofoDWKUvpsFAmBfrDUACgkQ2ofoDWKU
vpsNrRAAh+bSjSbiIXcugkI9faItOdKnwM+JaqGFRrDVK68Qbc/Y5Nv4Z8KmhL/a
7nlzOrwA7dyEWFuwRiyLpoZOnlNLTXLWr8/7UJhJGt//2vJFpoHmBcXKnRFeZHfE
4XXhAq7XA/naPoTHfbuEAFVqZlnWhewBtsvwL3cn/FwyvsujCxEK9LtXl6L7ziK5
Am6LcIB6TJe3shMeUSRmvhF+d/dZ1LTYKwmm4SkCLsp0Z52dg8eRUpbq2uyQpkHM
TdtC0kE4a2u7GmDZD+VIggslfHS2tm3vE9RLfWcobjoF51bvowrPGFGm9tg+ANFt
We+sUDNv+cAUrTq9dfwoDBJueR4IRxAZoEKyl4V4mxtRsawG6w0Uzz66qrq7ROUn
isBz3sGBcNerI6uOUfP/U1mMmDMsjbaVSQCUsM9Pzpt8Y39vHgzMVwTGOkfzgUZJ
Qcf+cqyGDSpin2DjcPlUAKKtGdnnWDPVPskrgSTxzQmV8n+VgEiGRW1y46i5sh4t
dc4ETsKoz2H1JFVJY/t3kAthHCAkW/hhDX4mBM8ZPSdfNZiXNNOZGu673VwLI/bN
pN8+FgezKfD8iZHWZxHk++91Kj8sZVToVI3m8rL5nKvhEKLFNS7XDq2bmKKbtF0t
kKw8HI5Tzv55YG0P4oToeLpE6ajxxZVrCAGJvD6lMiyfftOYU2A=
=KWqY
-----END PGP SIGNATURE-----
CMS Advanced Electronic Signatures
The *AdES collection, información técnica de implementación
Formatos de Firma, portal de administración electrónica del Gobierno de España
En Acrobat: All Tools -> Use a certificate -> marca donde quieres que "se vea" la firma
Fíjate en el ejemplo:
https://administracionelectronica.gob.es/ctt/verPestanaGeneral.htm?idIniciativa=tsa
https://freetsa.org/index_es.php
Firma electrónica aceptada por la administración
¡No tiene por qué ser la mejor!
Caso DNI-e en España: mínima implantación por problemas de usabilidad
Se exige personarse presencialmente en una agencia de certificación
Además del contenido del documento, es necesario asegurar cuándo se ha realizado la firma digital, y las condiciones en las que se ha hecho:
Veremos más detalles técnicos en el tema de certificados
La administración solo admite firmas/sellos electrónicos cualificados
En Europa, asimilables a firma manuscrita o sello de entidad
ojo: firmas no cualificadas podrían tener también efectos jurídicos
The ROCA factorization attack could potentially allow a remote attacker to reverse-calculate a private encryption key just by having a target’s public key
Algunas tarjetas utilizaban una implementación no segura
Se tuvieron que retirar todas y no aceptar firma electrónica durante ese periodo
Del anuncio de la vulnerabilidad (https://crocs.fi.muni.cz/public/papers/rsa_ccs17):
The time complexity and cost for the selected key lengths (Intel E5-2650 v3@3GHz Q2/2014):