Una firma digital es un mecanismo criptográfico que permite al receptor de un mensaje firmado digitalmente identificar a la entidad originadora de dicho mensaje (autenticación de origen y no repudio), y confirmar que el mensaje no ha sido alterado desde que fue firmado por el originador (integridad).[1][2]
Terminología asociada al concepto:[3]
Se han establecido una serie de propiedades necesarias que tiene que cumplir un esquema de firma para que pueda ser utilizado.[4] La validez de una firma se ampara en la imposibilidad de falsificar cualquier tipo de firma, siempre y cuando se mantenga en secreto la clave del firmante. En el caso de las firmas escritas el secreto está constituido por características de tipo grafológico inherentes al signatario y por ello difíciles de falsificar. Por su parte, en el caso de las firmas digitales, el secreto del firmante es el conocimiento exclusivo de una clave (secreta) utilizada para generar la firma. Para garantizar la seguridad de las firmas digitales es necesario a su vez que estas sean:
La idea básica de estos esquemas de firma es extender los algoritmos de firma digital con un algoritmo de actualización de clave que haga que la clave secreta pueda ser cambiada frecuentemente mientras la clave pública permanece siendo la misma. El esquema resultante es seguro hacia adelante si el conocimiento de la clave secreta en un momento del tiempo no ayuda a falsificar firmas relativas a un periodo anterior de tiempo.[5]
Un sistema de firma con agregación es un sistema que genera firmas digitales que permiten ser agregadas en el sentido de que dadas n firmas sobre n mensajes distintos provenientes de n usuarios distintos, permiten agregar todos ellos en una sola firma. Con esta firma y todos los mensajes originales se podrá convencer a cualquier verificador que los n usuarios firmaron los n mensajes originales donde el usuario i firmó el mensaje i. Esta propiedad es muy útil para comprimir las cadenas de firmas que se usadas por ejemplos en las cadenas de certificación de las PKI o en las cadenas de firmas usadas en la versión segura del protocolo de enrutado BGP (SBGP).[6]
La firma multipartita de adhesión dinámica, también conocida por las siglas DMMS (del inglés Dynamic-Membership Multi-party Signature), es la abstracción del tipo de firma propuesto por los sistemas con cadena de bloques (Blockchain) en los que nodos firmantes no confiables, llamados mineros, se encargan de firmar transacciones a cambio de una retribución. Establecen una firma de información a través del consenso de los mineros. Para establecer el consenso utilizan distintos tipos de algoritmos como prueba de trabajo o prueba de participación.[7]
Podemos construir esquemas de firma digital basándonos en distintos tipos de técnicas:[8]
Un dispositivo, como una tarjeta inteligente, se dice que es resistente a modificaciones (en inglés tamper resistant) si se cree que es difícil acceder a la clave secreta almacenada en él. Por tanto podemos usar una tarjeta inteligente con un algoritmo criptográfico para construir una firma digital de la siguiente forma:
Se han propuesto distintos protocolos de firma basados en la criptografía de clave secreta. Sin embargo, a partir de la aparición de la criptografía asimétrica están en recesión debido a su superioridad tanto conceptual como operacional en la mayoría de los contextos de uso.
Los esquemas de firma digital de clave simétrica son los siguientes:
Estos esquemas están basados en el uso una función de un solo sentido (en inglés one-way function). La gran desventaja de este tipo de esquemas es el tamaño de las claves y de las firmas y del hecho de que solo pueden ser usadas un número fijo de veces (frecuentemente una sola vez). Merkle[9] ha propuesto optimizaciones para este tipo de algoritmos. Bleichenbacher y Maurer han proporcionado una generalización de estos métodos.[10] Estos esquemas han servido como primitivas usadas en construcciones más complejas
Se han propuesto distintos protocolos de firma basados en la criptografía de clave asimétrica. Los más importantes son los siguientes:
El uso de criptografía asimétrica para firma digital se basa en el concepto de funciones de un solo sentido con trampa (en inglés trapdoor one-way functions). Son funciones fáciles de computar en una sola dirección y difíciles de computar en otra dirección, excepto para alguien que conozca la información 'trampa'. La información puede entonces ser firmada digitalmente si el signatario transforma la información con su clave secreta (la información trampa). El verificador puede verificar la firma digital aplicando la transformación en el sentido fácil usando la clave pública.
Algunos esquemas de firma son deterministas y otros usan bits aleatorios. Las firmas que usan bits aleatorios probablemente revelan menos información sobre la clave secreta, sin embargo, por otra parte, obligan al signatario a tener una fuente segura de bits aleatorios. Observar que si la fuente de bits aleatorios es revelada, no solo la firma sino también la clave secreta puede que sea comprometida. Firma Bloqueada
Podemos clasificar los esquemas de firma digital en función de si es necesario tener el mensaje original para verificar la firma, dando lugar a los siguientes tipos:[11][8]
Para verificar la firma este tipo de esquemas no requieren el mensaje original, ya que el mensaje original se puede recuperar a partir de la propia firma digital.
Este tipo de esquemas requieren el mensaje original para poder verificar la firma. Esto se debe a que a lo que se aplica el algoritmo de firma no es realmente el mensaje original sino el resultado de aplicar una función hash con ciertas propiedades que las hacen resistentes frente a ataques para hallar su inversa, es decir, no es posible, a partir del valor resumen, calcular los datos originales. Son los llamadas códigos de detección de modificaciones.
Algunas de las motivaciones para hacer esto son:
Existen dos métodos para establecer protocolos de firma digital:[12] firma digital con árbitro y firma digital sin árbitro.
En este tipo de firma se aprovecha el hecho de que dos usuarios (X e Y) con desconfianza mutua admiten tener confianza en un tercero llamado árbitro (A). El árbitro posee una clave secreta con cada uno de los usuarios. Estas claves determinan las funciones de cifrado y descifrado que se establecen entre el árbitro y cada uno de los usuarios: . Toda la transmisión de la información entre los usuarios debe pasar forzosamente por el árbitro.
Si por ejemplo X quiere mandar un mensaje M firmado a Y lo cifra usando y lo manda al árbitro. El árbitro lo recibe lo descifra (usando ) comprobando que se trata de un mensaje válido de X, junta la identidad de X y el mensaje M a la firma y cifra el resultado con y lo manda a Y. El usuario Y descifra (usando ) obteniendo el mensaje M, la identidad del origen y algo que sabe que es la firma del mensaje por el usuario. El valor de la firma lo guarda junto con M para que A pueda dirimir ante una posible disputa.
En este esquema el usuario firmante envía directamente la firma al destinatario, este debe poder comprobar la firma sin necesitar una tercera entidad como el árbitro.
Normalmente la verificación de la firma no se ciñe exclusivamente a verificar con el algoritmo de verificación, que la firma digital se corresponde con el mensaje que se quería firmar. Además hay que evaluar una serie de factores que dan la validez real de la firma: