Qué es una firma digital
Hasta ahora hemos visto sobre todo formas de impedir que otros lean algo. Pero a veces un mensaje no necesita ser secreto; solo quieres confirmar que de verdad lo envió esa persona. La lección anterior también dejó una tarea: comprobar que la otra parte de un intercambio de claves es auténtica. ¿Y si quien envía pudiera dejar en el mensaje una marca parecida a un sello con una clave privada que solo tiene él, y cualquiera pudiera comprobar esa marca con su clave pública? Eso es una firma digital.
Cuando no sabes quién lo envió
Imagina que llega una carta con el nombre de alguien al final. ¿La escribió de verdad esa persona? Cualquiera puede copiar un nombre, y el contenido pudo cambiarse en silencio por el camino. Solo con el texto no hay forma de saberlo.
No es una cuestión de secreto: el contenido puede estar completamente a la vista. Lo que quieres saber es si de verdad lo envió esa persona y si cambió por el camino.
Pulsa los botones de dudar del nombre y dudar del contenido. Solo con el texto no puedes saber si el nombre se copió o si el contenido cambió.
Probarlo fue frustrante: aunque haya un nombre escrito, no puedes estar seguro. Hacen falta dos pruebas: que de verdad lo envió esa persona y que no cambió por el camino.
Lo ideal sería una sola marca que mostrara las dos cosas a la vez y que nadie más pudiera imitar. El par de claves de la lección de clave pública hace justo eso.
Firmar con la clave privada
En la lección de clave pública cerrábamos con la clave pública del destinatario. La firma va en sentido contrario: el remitente usa su propia clave privada para añadir una firma al mensaje. No es cerrar con un candado, sino algo parecido a estampar un sello junto al mensaje, así que el contenido sigue completamente a la vista.
En la práctica, la firma no se hace sobre el mensaje entero, sino aplicando un cálculo con la clave privada al hash del mensaje, su huella. Solo esa persona tiene la clave privada, así que solo ella puede estampar ese sello.
Pulsa firmar con clave privada. El contenido sigue a la vista y se añade una firma que solo esa persona puede hacer.
Se añadió una firma y, sin embargo, no se ocultó ni un carácter del mensaje, porque no se cerró: se añadió un sello. La firma sale de la huella del contenido, así que está fuertemente ligada a ese contenido. Se firma la huella y no el mensaje entero porque la huella es corta y siempre tiene la misma longitud, así que la firma termina enseguida incluso con un archivo grande. Y como la huella cambia en cuanto cambia el contenido, firmarla protege todo el mensaje.
Y para hacer ese sello hace falta la clave privada de esa persona. La clave privada nunca sale de las manos de su dueño, así que nadie más puede hacer el mismo sello. Entonces, ¿cómo lo comprueba quien lo recibe?
Verificar con la clave pública
Quien recibe verifica la firma con la clave pública del remitente. Verificar es preguntar si ese sello se hizo de verdad con la clave privada que forma pareja con esa clave pública, y si coincide con la huella del contenido que acaba de recibir.
Si se cumplen las dos cosas, la verificación pasa. Un sello hecho con la clave privada de otra persona falla al verificarlo con esa clave pública, porque solo pasa cuando la clave pública y la privada forman pareja.
Toca las firmas una por una para verificarlas con la clave pública de Minu. Solo pasa la firma hecha con la clave privada de Minu; las hechas con claves de otras personas fallan.
Solo pasó la firma hecha con la clave privada correspondiente. Lo que significa pasar está claro: este mensaje lo envió de verdad esa persona. No importa que todo el mundo tenga la clave pública, porque con ella solo se puede verificar, no hacer una firma.
El poder de estampar el sello es solo del dueño de la clave privada, mientras que comprobar el sello está abierto a todos. Es la imagen en el espejo de cerrar con una clave pública.
Auténtico y sin cambios
Como la firma está ligada al contenido, pasar la verificación demuestra dos cosas a la vez. Una es la autenticidad: lo envió de verdad esa persona. La otra es la integridad: no ha cambiado ni un carácter.
Si alguien cambia el contenido aunque sea un poco por el camino, la huella cambia por completo, así que ya no coincide con la firma ligada y la verificación se rompe enseguida. Un solo carácter cambiado se convierte en una alarma.
Pulsa el botón de cambiar la hora. Con que cambie un solo dígito, el contenido ya no coincide con la firma y la verificación se rompe.
Bastó cambiar un carácter para que la verificación fallara enseguida. Al ver ese fallo, quien recibe se da cuenta de que no es el contenido original y puede detenerse en lugar de fiarse. Además, quien firmó con su clave privada no puede negar después haber enviado el mensaje; a esto se le llama no repudio.
Por eso las firmas digitales se usan allí donde importan el origen y el original, como en las actualizaciones de software, los contratos electrónicos y los documentos oficiales. Ahora pongamos el cierre y la firma uno al lado del otro.
Resumen
En resumen, una firma digital usa al revés el par de claves del cifrado de clave pública. El remitente firma la huella del mensaje con su propia clave privada, y quien recibe la verifica con la clave pública del remitente. Si pasa, queda demostrado a la vez que el mensaje lo envió de verdad esa persona y que no cambió por el camino.
Cerrar mantiene el contenido en secreto; firmar demuestra quién lo envió y que no se alteró.
Toca cerrar y firmar para compararlos. Cerrar guarda un secreto; firmar demuestra la autenticidad y la integridad.
Ya conoces la diferencia entre cerrar y firmar. Si cierras con la clave pública del destinatario, el secreto se guarda; si firmas con la clave privada del remitente, se demuestran la autenticidad y la integridad. El mismo par de claves hace dos trabajos solo con cambiar de sentido.
Pero para que la verificación tenga sentido hace falta una condición: la clave pública tiene que pertenecer de verdad a esa persona. La próxima lección, sobre certificados, trata de cómo se puede confiar en una clave pública.