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 confianza 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 alteraciones .
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] Estados Unidos , Argelia , [8] Turquía , [9] India , [10] Indonesia , México , Arabia Saudita , [11] Uruguay , [12] Suiza , Chile [13] y los países de la Unión Europea . [14] [15]
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 razones para creer que el mensaje fue enviado por el remitente reclamado. 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 las manuscritas. Los esquemas de firma digital, en el sentido utilizado aquí, tienen una base criptográfica y deben implementarse adecuadamente para que sean 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 permanece secreta. [16] 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. [17] [18] 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 su clave privada. 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 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 probabilísticos de tiempo polinomial, ( G , S , V ), que satisfacen:
Para que sea correcto, S y V deben satisfacer
Un esquema de firma digital es seguro si para cada tiempo polinómico probabilístico no uniforme adversario , 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 denotan que el adversario no puede consultar directamente la cadena, x , en S. [19] [20]
En 1976, Whitfield Diffie y Martin Hellman describieron por primera vez la noción de un esquema de firma digital, aunque sólo conjeturaron que dichos esquemas existían basándose en funciones que son permutaciones unidireccionales de trampilla. [21] [22] Poco después, Ronald Rivest , Adi Shamir y Len Adleman inventaron el algoritmo RSA , que podría usarse para producir firmas digitales primitivas [23] (aunque sólo como prueba de concepto: RSA "simple" las firmas no son seguras [24] ). El primer paquete de software ampliamente comercializado que ofreció firma digital fue Lotus Notes 1.0, lanzado en 1989, que utilizaba el algoritmo RSA. [25]
Pronto se desarrollaron otros esquemas de firma digital después de RSA, siendo los primeros las firmas Lamport , [26] las firmas Merkle (también conocidas como "árboles Merkle" o simplemente "árboles Hash"), [27] y las firmas Rabin . [28]
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. [29] 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 previene incluso una falsificación existencial contra un ataque de mensaje elegido, que es la definición de seguridad actualmente aceptada para esquemas de firma. . [29] Moni Naor y Moti Yung presentaron el primer esquema de este tipo que no se basa en funciones de trampilla sino en una familia de funciones con una propiedad requerida mucho más débil de permutación unidireccional . [30]
Un esquema de firma digital (de muchos) se basa en RSA . Para crear claves de firma, genere un par de claves RSA que contenga un módulo, N , que es el producto de dos números primos grandes distintos, secretos y aleatorios, junto con números enteros, e y d , tales que e d ≡ 1 (mod φ ( N )), donde φ es la función totiente 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. [31] En la práctica, sin embargo, este tipo de firma no se utiliza directamente, sino que primero se procesa el mensaje que se va a firmar para producir un resumen breve, que luego se rellena hasta alcanzar un ancho mayor comparable a N y luego se firma con el reverso. Función de trampilla. [32] Este ataque de falsificación, entonces, solo produce la salida de la función hash rellenada 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-then-sign (una versión idealizada de esa práctica donde el hash y el relleno combinados tienen cerca de N resultados posibles), esta forma de firma es existencialmente infalsificable, incluso contra un ataque de texto sin formato elegido . [22] [ se necesita aclaración ]
Hay varias razones para firmar dicho hash (o resumen de mensaje) en lugar del documento completo.
A medida que las organizaciones abandonan los documentos en papel con firmas de tinta o sellos de autenticidad, las firmas digitales pueden proporcionar garantías adicionales de la evidencia de procedencia, identidad y estado de un documento electrónico , así como reconocer el consentimiento informado y la aprobación por parte de un firmante. La 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, la Universidad de Chicago y Stanford están publicando expedientes académicos electrónicos de los estudiantes con firmas digitales.
A continuación se detallan 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 se pueden copiar y pegar en mensajes falsificados. Incluso los mensajes legítimos pueden modificarse durante el tránsito. [33]
Si la oficina central de un banco recibe una carta que dice ser de una sucursal con instrucciones de cambiar el saldo de una cuenta, los banqueros centrales deben asegurarse, antes de seguir las instrucciones, de que realmente fueron enviadas por un banquero de sucursal, y no falsificada, ya sea que un falsificador haya fabricado la carta completa o simplemente haya modificado una carta existente en tránsito agregando algunos dígitos.
Con un esquema de firma digital, la oficina central puede disponer de antemano tener una clave pública en el archivo cuya clave privada sólo la conoce la sucursal. Posteriormente, la sucursal puede firmar un mensaje y la oficina central puede usar la clave pública para verificar que el mensaje firmado no sea una falsificación antes de actuar en consecuencia. Un falsificador que no conoce la clave privada del remitente no puede firmar un mensaje diferente, o incluso cambiar un solo dígito en un mensaje existente sin que falle la verificación de la firma del destinatario. [33] [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 detectar modificaciones selectivas como cambiar un dígito ; si las oficinas del banco simplemente cifraran los mensajes que intercambian, aún podrían ser vulnerable 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 mismo. parche antes de aplicarlo, para que no se conviertan en víctimas de malware. [2]
Repeticiones. Un esquema 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 la transferencia bancaria se emita una 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. [33]
Unicidad y maleabilidad de las firmas. Una firma en sí misma no puede usarse para identificar de manera ú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 conocer la clave privada, transformarla. una firma válida en otra. [34] Si las firmas se utilizan indebidamente como identificadores de transacciones en un intento por parte de un sistema similar a un banco, como un intercambio de Bitcoin , de detectar repeticiones, esto puede explotarse para reproducir transacciones. [35]
Autenticar 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 conocer la clave privada que se utilizó para crear el mensaje firmado en primer lugar. [36]
El no repudio , [14] o más específicamente el no repudio de origen, es un aspecto importante de las firmas digitales. Por esta propiedad, una entidad que ha firmado alguna información no puede negar posteriormente haberla firmado. De manera similar, el acceso únicamente a la clave pública 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. Para verificar el estado de revocación se requiere una verificación "en línea"; por ejemplo, consultando una lista de revocación de certificados o mediante el Protocolo de estado de certificados en línea . [15] En términos generales, esto es análogo a un proveedor que recibe tarjetas de crédito y primero verifica en línea con el emisor de la tarjeta de crédito para saber si una tarjeta determinada ha sido reportada como perdida o robada. Por supuesto, en el caso de pares de claves robadas, el robo a menudo se descubre sólo 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: [29]
También describen una jerarquía de resultados de ataques: [29]
Por lo tanto, la noción más fuerte de seguridad es la seguridad contra la falsificación existencial bajo un ataque de mensaje elegido adaptativamente.
Todos los criptosistemas de clave pública/clave privada dependen completamente de mantener la clave privada en secreto. Una clave privada se puede almacenar en la computadora 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 manipulaciones (aunque algunos diseños han sido rotos, en particular por Ross Anderson y sus estudiantes [37] ). 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 un código PIN (proporcionando así autenticación de dos factores ). Se puede disponer que la clave privada nunca salga de la tarjeta inteligente, aunque esto no siempre se implementa. Si roban la tarjeta inteligente, 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 aún 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 forma, la pérdida de la tarjeta inteligente podrá ser detectada por el titular y el correspondiente certificado podrá ser inmediatamente revocado. Las claves privadas que están protegidas únicamente por software pueden ser más fáciles de copiar y dichos compromisos son mucho más difíciles de detectar.
Para ingresar un código PIN para activar la tarjeta inteligente generalmente se requiere un teclado numérico . Algunos lectores de tarjetas tienen su propio teclado numérico. Esto es más seguro que usar un lector de tarjetas integrado en una PC y luego ingresar el PIN usando el teclado de esa computadora. Los lectores con teclado numérico están destinados a evitar la amenaza de escuchas ilegales en las que la computadora podría estar ejecutando un registrador de pulsaciones de teclas , comprometiendo potencialmente 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 contar con 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 de usuario presenta un código hash que el algoritmo de firma digital debe firmar utilizando la clave privada. Un atacante que obtenga el control de la PC del usuario posiblemente pueda 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 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 textos, cliente de correo electrónico, etc.) y la aplicación de firma. La idea general es proporcionar algunos medios para que tanto la aplicación de 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 reacias al riesgo, 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 poder interpretarse 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é se ha firmado exactamente. WYSIWYS (Lo que ves es lo que firmas) [38] 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 desconozca y que pueda 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 para la entrega de firmas digitales seguras y legalmente vinculantes para proyectos paneuropeos. [38]
Una firma en tinta se puede replicar de un documento a otro copiando la imagen manual o digitalmente, 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 importante. 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 en 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 indicará manipulación si se ha alterado algún dato en cualquiera de las páginas, pero esto también se puede lograr firmando con tinta y numerando todas las páginas del documento. 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 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 han reflejado esta realidad.
Las legislaturas, importunadas por las empresas que esperan obtener ganancias de la operación de una PKI, o por la vanguardia tecnológica que aboga por nuevas soluciones a viejos problemas, han promulgado estatutos y/o regulaciones en muchas jurisdicciones que autorizan, respaldan, alientan o permiten firmas digitales y proporcionan para (o limitar) su efecto legal. El primero parece haber sido en Utah , Estados Unidos, seguido de cerca por los estados de Massachusetts y California . Otros países también han aprobado estatutos o emitido regulaciones en esta área y la ONU ha tenido un proyecto de ley modelo activo desde hace algún tiempo. Estas promulgaciones (o propuestas de promulgación) varían de un lugar a otro, típicamente han incorporado expectativas que difieren (de manera optimista o pesimista) con el 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 se ha quedado atrás con respecto a gran parte de la legislación, retrasando 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 miembros de la industria y con los reguladores. Entre ellas se incluyen Automotive Network Exchange para la industria del automóvil y la Asociación SAFE-BioPharma 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 . [14] Generalmente, estas disposiciones significan que cualquier cosa firmada digitalmente vincula legalmente al firmante del documento a los términos del mismo. Por ese motivo, a menudo se piensa que es mejor utilizar pares de claves independientes para cifrar y firmar. Usando el par de claves de cifrado, una persona puede entablar una conversación cifrada (por ejemplo, sobre una transacción de bienes raíces), pero el cifrado no firma legalmente cada mensaje que envía. Sólo cuando ambas partes llegan a un acuerdo firman un contrato con sus claves de firma, y sólo entonces quedan legalmente obligados por los términos de un documento específico. Después de firmar, el documento se puede enviar a través del enlace cifrado. Si una clave de firma se pierde o se ve comprometida, se puede revocar para mitigar cualquier transacción futura. Si se pierde una clave de cifrado, se debe utilizar una copia de seguridad o un depósito de claves para continuar viendo el contenido cifrado. Nunca se debe realizar una copia de seguridad ni custodiar las claves de firma a menos que el destino de la copia de seguridad esté cifrado de forma segura.