Una firma digital es un esquema matemático para verificar la autenticidad de mensajes o documentos digitales. Una firma digital válida en un mensaje le da al destinatario la seguridad de que el mensaje proviene de un remitente conocido por el destinatario. [1] [2]
Las firmas digitales son un elemento estándar de la mayoría de los conjuntos de protocolos criptográficos y se utilizan comúnmente para la distribución de software, transacciones financieras, software de gestión de contratos y en otros casos en los que es importante detectar falsificaciones o manipulaciones .
Las firmas digitales se utilizan a menudo para implementar firmas electrónicas , que incluyen cualquier dato electrónico que lleve la intención de una firma, [3] pero no todas las firmas electrónicas utilizan firmas digitales. [4] [5] Las firmas electrónicas tienen importancia legal en algunos países, incluidos Brasil , Canadá , [6] Sudáfrica , [7] Rusia , [8] Estados Unidos , Argelia , [9] Turquía , [10] India , [11] Indonesia , México , Arabia Saudita , [12] Uruguay , [13] Suiza , Chile [14] y los países de la Unión Europea . [15] [16]
Las firmas digitales emplean criptografía asimétrica . En muchos casos, proporcionan una capa de validación y seguridad a los mensajes enviados a través de un canal no seguro: si se implementa correctamente, una firma digital le da al receptor una razón para creer que el mensaje fue enviado por el remitente declarado. Las firmas digitales son equivalentes a las firmas manuscritas tradicionales en muchos aspectos, pero las firmas digitales implementadas correctamente son más difíciles de falsificar que el tipo escrito a mano. Los esquemas de firma digital, en el sentido utilizado aquí, se basan en criptografía y deben implementarse correctamente para ser efectivos. También pueden proporcionar no repudio , lo que significa que el firmante no puede afirmar con éxito que no firmó un mensaje, al mismo tiempo que afirma que su clave privada sigue siendo secreta. [17] Además, algunos esquemas de no repudio ofrecen una marca de tiempo para la firma digital, de modo que incluso si la clave privada está expuesta, la firma es válida. [18] [19] Los mensajes firmados digitalmente pueden ser cualquier cosa representable como una cadena de bits : los ejemplos incluyen correo electrónico, contratos o un mensaje enviado a través de algún otro protocolo criptográfico.
Un esquema de firma digital normalmente consta de tres algoritmos:
Se requieren dos propiedades principales:
En primer lugar, la autenticidad de una firma generada a partir de un mensaje fijo y una clave privada fija se puede verificar utilizando la clave pública correspondiente.
En segundo lugar, debería ser computacionalmente inviable generar una firma válida para una parte sin conocer la clave privada de esa parte. Una firma digital es un mecanismo de autenticación que permite al creador del mensaje adjuntar un código que actúa como firma. El algoritmo de firma digital (DSA), desarrollado por el Instituto Nacional de Estándares y Tecnología , es uno de los muchos ejemplos de un algoritmo de firma.
En la siguiente discusión, 1 n se refiere a un número unario .
Formalmente, un esquema de firma digital es un triple de algoritmos de tiempo polinomial probabilístico, ( G , S , V ), que satisfacen:
Para que sean correctos, S y V deben satisfacer
Un esquema de firma digital es seguro si para cada adversario de tiempo polinomial probabilístico no uniforme , A
donde A S ( sk , · ) denota que A tiene acceso al oráculo , S ( sk , · ), Q denota el conjunto de consultas sobre S realizadas por A , que conoce la clave pública, pk , y el parámetro de seguridad, n , y x ∉ Q denota que el adversario no puede consultar directamente la cadena, x , sobre S . [20] [21]
En 1976, Whitfield Diffie y Martin Hellman describieron por primera vez la noción de un esquema de firma digital, aunque solo conjeturaron que tales esquemas existían basados en funciones que son permutaciones unidireccionales de puerta trampa. [22] [23] Poco después, Ronald Rivest , Adi Shamir y Len Adleman inventaron el algoritmo RSA , que podría usarse para producir firmas digitales primitivas [24] (aunque solo como una prueba de concepto: las firmas RSA "simples" no son seguras [25] ). El primer paquete de software ampliamente comercializado que ofrecía firma digital fue Lotus Notes 1.0, lanzado en 1989, que usaba el algoritmo RSA. [26]
Poco después de RSA se desarrollaron otros esquemas de firma digital, siendo los primeros las firmas Lamport , [27] las firmas Merkle (también conocidas como "árboles Merkle" o simplemente "árboles Hash"), [28] y las firmas Rabin . [29]
En 1988, Shafi Goldwasser , Silvio Micali y Ronald Rivest fueron los primeros en definir rigurosamente los requisitos de seguridad de los esquemas de firma digital. [30] Describieron una jerarquía de modelos de ataque para esquemas de firma, y también presentaron el esquema de firma GMR , el primero que se pudo demostrar que evita incluso una falsificación existencial contra un ataque de mensaje elegido, que es la definición de seguridad actualmente aceptada para los esquemas de firma. [30] El primer esquema de este tipo que no se basa en funciones de trampa sino en una familia de funciones con una propiedad requerida mucho más débil de permutación unidireccional fue presentado por Moni Naor y Moti Yung . [31]
Un esquema de firma digital (de muchos) se basa en RSA . Para crear claves de firma, se genera un par de claves RSA que contenga un módulo, N , que es el producto de dos primos grandes distintos y secretos aleatorios, junto con números enteros, e y d , tales que e d ≡ 1 (mod φ ( N )), donde φ es la función totient de Euler . La clave pública del firmante consta de N y e , y la clave secreta del firmante contiene d .
Utilizado directamente, este tipo de esquema de firma es vulnerable a ataques de falsificación existencial de clave única. Para crear una falsificación, el atacante elige una firma aleatoria σ y utiliza el procedimiento de verificación para determinar el mensaje, m , correspondiente a esa firma. [32] En la práctica, sin embargo, este tipo de firma no se utiliza directamente, sino que, en lugar de ello, el mensaje que se va a firmar se somete primero a un algoritmo hash para producir un resumen corto, que luego se rellena hasta un ancho mayor comparable a N , y luego se firma con la función de trampilla inversa . [33] Este ataque de falsificación, entonces, solo produce la salida de la función hash rellena que corresponde a σ, pero no un mensaje que conduzca a ese valor, lo que no conduce a un ataque. En el modelo de oráculo aleatorio, hash-luego-firma (una versión idealizada de esa práctica donde el hash y el relleno combinados tienen cerca de N salidas posibles), esta forma de firma es existencialmente infalsificable, incluso contra un ataque de texto simple elegido . [23] [ aclaración necesaria ] [34]
Hay varias razones para firmar dicho hash (o resumen del mensaje) en lugar del documento completo.
A medida que las organizaciones dejan de utilizar documentos en papel con firmas de tinta o sellos de autenticidad, las firmas digitales pueden proporcionar garantías adicionales de la evidencia de la procedencia, la identidad y el estado de un documento electrónico , así como reconocer el consentimiento informado y la aprobación del firmante. La Oficina de Imprenta del Gobierno de los Estados Unidos (GPO) publica versiones electrónicas del presupuesto, leyes públicas y privadas y proyectos de ley del Congreso con firmas digitales. Universidades como Penn State, University of Chicago y Stanford están publicando transcripciones electrónicas de estudiantes con firmas digitales.
A continuación se presentan algunas razones comunes para aplicar una firma digital a las comunicaciones:
Un mensaje puede tener membrete o una firma manuscrita que identifique a su remitente, pero los membretes y las firmas manuscritas pueden copiarse y pegarse en mensajes falsificados. Incluso los mensajes legítimos pueden modificarse durante su envío. [35]
Si la oficina central de un banco recibe una carta que dice ser de una sucursal con instrucciones para cambiar el saldo de una cuenta, los banqueros centrales deben estar seguros, antes de actuar según las instrucciones, de que en realidad fueron enviadas por un banquero de la sucursal y no fueron falsificadas (ya sea que un falsificador haya fabricado toda la carta o simplemente haya modificado una carta existente en tránsito añadiéndole algunos dígitos).
Con un sistema de firma digital, la oficina central puede disponer de antemano que se guarde una clave pública cuya clave privada sólo conozca la sucursal. La sucursal puede firmar posteriormente un mensaje y la oficina central puede utilizar la clave pública para verificar que el mensaje firmado no sea una falsificación antes de actuar en consecuencia. Un falsificador que no conozca la clave privada del remitente no puede firmar un mensaje diferente, ni siquiera cambiar un solo dígito de un mensaje existente sin que la verificación de la firma del destinatario falle. [35] [1] [2]
El cifrado puede ocultar el contenido del mensaje a un espía, pero el cifrado por sí solo puede no permitir que el destinatario verifique la autenticidad del mensaje, o incluso detecte modificaciones selectivas como el cambio de un dígito (si las oficinas del banco simplemente cifraran los mensajes que intercambian, aún podrían ser vulnerables a la falsificación). En otras aplicaciones, como las actualizaciones de software, los mensajes no son secretos: cuando un autor de software publica un parche para que lo apliquen todas las instalaciones existentes del software, el parche en sí no es secreto, pero las computadoras que ejecutan el software deben verificar la autenticidad del parche antes de aplicarlo, para no convertirse en víctimas de malware. [2]
Repeticiones. Un sistema de firma digital por sí solo no impide que un mensaje firmado válido se registre y luego se reutilice maliciosamente en un ataque de repetición . Por ejemplo, la sucursal puede solicitar legítimamente que se emita una transferencia bancaria una sola vez en un mensaje firmado. Si el banco no utiliza un sistema de identificadores de transacciones en sus mensajes para detectar qué transferencias ya se han realizado, alguien podría reutilizar ilegítimamente el mismo mensaje firmado muchas veces para vaciar una cuenta. [35]
Unicidad y maleabilidad de las firmas. Una firma en sí misma no puede utilizarse para identificar de forma única el mensaje que firma; en algunos esquemas de firma, cada mensaje tiene una gran cantidad de posibles firmas válidas del mismo firmante, y puede ser fácil, incluso sin conocimiento de la clave privada, transformar una firma válida en otra. [36] Si un sistema similar a un banco (como una bolsa de Bitcoin) utiliza incorrectamente las firmas como identificadores de transacciones en un intento por parte de un sistema similar a un banco (como una bolsa de Bitcoin) de detectar repeticiones, esto puede aprovecharse para reproducir transacciones. [37]
Autenticación de una clave pública. El conocimiento previo de una clave pública se puede utilizar para verificar la autenticidad de un mensaje firmado , pero no al revés: el conocimiento previo de un mensaje firmado no se puede utilizar para verificar la autenticidad de una clave pública . En algunos esquemas de firma, dado un mensaje firmado, es fácil construir una clave pública bajo la cual el mensaje firmado pasará la verificación, incluso sin conocimiento de la clave privada que se utilizó para crear el mensaje firmado en primer lugar. [38]
El no repudio , [15] o más específicamente el no repudio del origen, es un aspecto importante de las firmas digitales. Gracias a esta propiedad, una entidad que ha firmado cierta información no puede negar posteriormente haberla firmado. De manera similar, el acceso a la clave pública por sí sola no permite a una parte fraudulenta falsificar una firma válida.
Tenga en cuenta que estas propiedades de autenticación, no repudio, etc. dependen de que la clave secreta no haya sido revocada antes de su uso. La revocación pública de un par de claves es una capacidad requerida, de lo contrario, las claves secretas filtradas seguirían implicando al supuesto propietario del par de claves. La comprobación del estado de revocación requiere una comprobación "en línea"; por ejemplo, comprobando una lista de revocación de certificados o a través del Protocolo de estado de certificados en línea . [16] En términos generales, esto es análogo a un vendedor que recibe tarjetas de crédito y primero comprueba en línea con el emisor de la tarjeta de crédito si se ha informado de la pérdida o el robo de una tarjeta determinada. Por supuesto, con pares de claves robados, el robo a menudo se descubre solo después del uso de la clave secreta, por ejemplo, para firmar un certificado falso con fines de espionaje.
En su artículo fundacional, Goldwasser, Micali y Rivest establecen una jerarquía de modelos de ataque contra firmas digitales: [30]
También describen una jerarquía de resultados de ataques: [30]
La noción más fuerte de seguridad, por lo tanto, es la seguridad contra la falsificación existencial bajo un ataque de mensaje elegido y adaptativo.
Todos los criptosistemas de clave pública/clave privada dependen por completo de mantener en secreto la clave privada. Una clave privada se puede almacenar en el ordenador de un usuario y protegerse con una contraseña local, pero esto tiene dos desventajas:
Una alternativa más segura es almacenar la clave privada en una tarjeta inteligente . Muchas tarjetas inteligentes están diseñadas para ser resistentes a la manipulación (aunque algunos diseños han sido descifrados, en particular por Ross Anderson y sus estudiantes [39] ). En una implementación típica de firma digital, el hash calculado a partir del documento se envía a la tarjeta inteligente, cuya CPU firma el hash utilizando la clave privada almacenada del usuario, y luego devuelve el hash firmado. Normalmente, un usuario debe activar su tarjeta inteligente ingresando un número de identificación personal o código PIN (proporcionando así autenticación de dos factores ). Se puede organizar que la clave privada nunca salga de la tarjeta inteligente, aunque esto no siempre se implementa. Si la tarjeta inteligente es robada, el ladrón seguirá necesitando el código PIN para generar una firma digital. Esto reduce la seguridad del esquema a la del sistema PIN, aunque todavía requiere que un atacante posea la tarjeta. Un factor atenuante es que las claves privadas, si se generan y almacenan en tarjetas inteligentes, generalmente se consideran difíciles de copiar y se supone que existen exactamente en una copia. De esta manera, el propietario de la tarjeta inteligente puede detectar la pérdida y revocar inmediatamente el certificado correspondiente. Las claves privadas protegidas únicamente por software pueden ser más fáciles de copiar y estos ataques son mucho más difíciles de detectar.
Para introducir un código PIN y activar la tarjeta inteligente, normalmente es necesario un teclado numérico . Algunos lectores de tarjetas tienen su propio teclado numérico. Esto es más seguro que utilizar un lector de tarjetas integrado en una PC y, a continuación, introducir el PIN con el teclado de esa computadora. Los lectores con teclado numérico están pensados para evitar la amenaza de escuchas clandestinas, en la que la computadora podría estar ejecutando un registrador de pulsaciones de teclas , lo que podría comprometer el código PIN. Los lectores de tarjetas especializados también son menos vulnerables a la manipulación de su software o hardware y, a menudo, cuentan con la certificación EAL3 .
El diseño de tarjetas inteligentes es un campo activo, y existen esquemas de tarjetas inteligentes que pretenden evitar estos problemas particulares, a pesar de tener pocas pruebas de seguridad hasta el momento.
Una de las principales diferencias entre una firma digital y una firma escrita es que el usuario no "ve" lo que firma. La aplicación del usuario presenta un código hash para que lo firme el algoritmo de firma digital utilizando la clave privada. Un atacante que obtenga el control del PC del usuario podría reemplazar la aplicación del usuario con un sustituto externo, reemplazando de hecho las propias comunicaciones del usuario con las del atacante. Esto podría permitir que una aplicación maliciosa engañe a un usuario para que firme cualquier documento mostrando el original del usuario en la pantalla, pero presentando los propios documentos del atacante a la aplicación de firma.
Para protegerse contra este escenario, se puede configurar un sistema de autenticación entre la aplicación del usuario (procesador de texto, cliente de correo electrónico, etc.) y la aplicación de firma. La idea general es proporcionar algún medio para que tanto la aplicación del usuario como la aplicación de firma verifiquen la integridad de cada una. Por ejemplo, la aplicación de firma puede requerir que todas las solicitudes provengan de archivos binarios firmados digitalmente.
Una de las principales diferencias entre un servicio de firma digital basado en la nube y uno proporcionado localmente es el riesgo. Muchas empresas que no aceptan riesgos, incluidos gobiernos, instituciones financieras y médicas y procesadores de pagos, requieren estándares más seguros, como la certificación FIPS 140-2 nivel 3 y FIPS 201 , para garantizar que la firma esté validada y sea segura.
Técnicamente hablando, una firma digital se aplica a una cadena de bits, mientras que los humanos y las aplicaciones "creen" que firman la interpretación semántica de esos bits. Para ser interpretada semánticamente, la cadena de bits debe transformarse en una forma que sea significativa para los humanos y las aplicaciones, y esto se hace mediante una combinación de procesos basados en hardware y software en un sistema informático. El problema es que la interpretación semántica de los bits puede cambiar en función de los procesos utilizados para transformar los bits en contenido semántico. Es relativamente fácil cambiar la interpretación de un documento digital implementando cambios en el sistema informático donde se procesa el documento. Desde una perspectiva semántica, esto crea incertidumbre sobre qué es exactamente lo que se ha firmado. WYSIWYS (What You See Is What You Sign) [40] significa que la interpretación semántica de un mensaje firmado no se puede cambiar. En particular, esto también significa que un mensaje no puede contener información oculta que el firmante desconoce y que puede revelarse después de que se haya aplicado la firma. WYSIWYS es un requisito para la validez de las firmas digitales, pero este requisito es difícil de garantizar debido a la creciente complejidad de los sistemas informáticos modernos. El término WYSIWYS fue acuñado por Peter Landrock y Torben Pedersen para describir algunos de los principios en la entrega de firmas digitales seguras y legalmente vinculantes para proyectos paneuropeos. [40]
Una firma en tinta se puede replicar de un documento a otro copiando la imagen de forma manual o digital, pero tener copias de firmas creíbles que puedan resistir cierto escrutinio es una habilidad manual o técnica importante, y producir copias de firmas en tinta que resistan el escrutinio profesional es muy difícil.
Las firmas digitales vinculan criptográficamente una identidad electrónica a un documento electrónico y la firma digital no se puede copiar a otro documento. Los contratos en papel a veces tienen el bloque de firma con tinta en la última página, y las páginas anteriores pueden reemplazarse después de aplicar una firma. Las firmas digitales se pueden aplicar a un documento completo, de modo que la firma digital en la última página indique la manipulación si se han alterado los datos de alguna de las páginas, pero esto también se puede lograr firmando con tinta y numerando todas las páginas del contrato.
La mayoría de los esquemas de firma digital comparten los siguientes objetivos, independientemente de la teoría criptográfica o la disposición legal:
Sólo si se cumplen todas estas condiciones, una firma digital será realmente una prueba de quién envió el mensaje y, por lo tanto, de su consentimiento a su contenido. La promulgación de leyes no puede cambiar esta realidad de las posibilidades de ingeniería existentes, aunque algunas de ellas no hayan reflejado esta realidad.
Las legislaturas, presionadas por las empresas que esperan obtener beneficios de la operación de una PKI, o por la vanguardia tecnológica que aboga por nuevas soluciones a viejos problemas, han promulgado leyes y/o reglamentos en muchas jurisdicciones que autorizan, respaldan, alientan o permiten las firmas digitales y prevén (o limitan) su efecto legal. El primero parece haber sido Utah en los Estados Unidos, seguido de cerca por los estados de Massachusetts y California . Otros países también han aprobado leyes o emitido reglamentos en esta área y la ONU ha tenido un proyecto de ley modelo activo durante algún tiempo. Estas promulgaciones (o propuestas de promulgación) varían de un lugar a otro, por lo general han incorporado expectativas que difieren (de manera optimista o pesimista) del estado de la ingeniería criptográfica subyacente y han tenido el efecto neto de confundir a los usuarios y especificadores potenciales, casi todos los cuales no tienen conocimientos criptográficos.
La adopción de estándares técnicos para firmas digitales ha quedado rezagada respecto de gran parte de la legislación, lo que ha retrasado una posición de ingeniería más o menos unificada sobre interoperabilidad , elección de algoritmos , longitudes de claves , etc., lo que la ingeniería está intentando proporcionar.
Algunas industrias han establecido estándares comunes de interoperabilidad para el uso de firmas digitales entre los miembros de la industria y con los reguladores. Entre ellas se encuentran la Automotive Network Exchange para la industria automotriz y la SAFE-BioPharma Association para la industria de la salud .
En varios países, una firma digital tiene un estatus similar al de una firma tradicional con lápiz y papel, como en la directiva de firma digital de la UE de 1999 y la legislación de seguimiento de la UE de 2014. [15] En general, estas disposiciones significan que cualquier cosa firmada digitalmente vincula legalmente al firmante del documento a los términos allí establecidos . Por esa razón, a menudo se piensa que es mejor usar pares de claves separados para cifrar y firmar. Usando el par de claves de cifrado, una persona puede participar en una conversación cifrada (por ejemplo, sobre una transacción inmobiliaria), pero el cifrado no firma legalmente cada mensaje que envía. Solo cuando ambas partes llegan a un acuerdo firman un contrato con sus claves de firma, y solo entonces están legalmente vinculadas por los términos de un documento específico. Después de firmar, el documento puede enviarse a través del enlace cifrado. Si una clave de firma se pierde o se ve comprometida, puede revocarse para mitigar futuras transacciones. Si se pierde una clave de cifrado, se debe utilizar una copia de seguridad o un depósito de claves para continuar viendo contenido cifrado. Las claves de firma nunca deben respaldarse ni almacenarse en depósito a menos que el destino de la copia de seguridad esté cifrado de forma segura.