La criptografía de clave pública , o criptografía asimétrica , es el campo de los sistemas criptográficos que utilizan pares de claves relacionadas. Cada par de claves consta de una clave pública y una clave privada correspondiente . [1] [2] Los pares de claves se generan con algoritmos criptográficos basados en problemas matemáticos denominados funciones unidireccionales . La seguridad de la criptografía de clave pública depende de mantener en secreto la clave privada; la clave pública se puede distribuir abiertamente sin comprometer la seguridad. [3]
En un sistema de cifrado de clave pública , cualquiera que tenga una clave pública puede cifrar un mensaje, generando un texto cifrado , pero sólo aquellos que conocen la clave privada correspondiente pueden descifrar el texto cifrado para obtener el mensaje original. [4]
Por ejemplo, un periodista puede publicar la clave pública de un par de claves de cifrado en un sitio web para que las fuentes puedan enviar mensajes secretos a la organización de noticias en texto cifrado. Sólo el periodista que conoce la clave privada correspondiente puede descifrar los textos cifrados para obtener los mensajes de las fuentes; un espía que lea un correo electrónico en camino al periodista no puede descifrar los textos cifrados.
En un sistema de firma digital , un remitente puede utilizar una clave privada junto con un mensaje para crear una firma . Cualquiera que tenga la clave pública correspondiente puede verificar si la firma coincide con el mensaje, pero un falsificador que no conoce la clave privada no puede encontrar ningún par de mensaje/firma que pase la verificación con la clave pública. [5] [6]
Por ejemplo, un editor de software puede crear un par de claves de firma e incluir la clave pública en el software instalado en las computadoras. Posteriormente, el editor puede distribuir una actualización del software firmado con la clave privada, y cualquier computadora que reciba una actualización puede confirmar que es genuina verificando la firma con la clave pública. Mientras el editor del software mantenga la clave privada en secreto, incluso si un falsificador puede distribuir actualizaciones maliciosas a las computadoras, no puede convencerlas de que las actualizaciones maliciosas son genuinas.
Los algoritmos de clave pública son primitivos de seguridad fundamentales en los criptosistemas modernos , incluidas aplicaciones y protocolos que ofrecen garantía de confidencialidad, autenticidad y no repudiabilidad de las comunicaciones electrónicas y el almacenamiento de datos. Respaldan numerosos estándares de Internet, como Transport Layer Security (TLS) , SSH , S/MIME y PGP . Algunos algoritmos de clave pública proporcionan distribución de claves y secreto (p. ej., intercambio de claves Diffie-Hellman ), algunos proporcionan firmas digitales (p. ej., algoritmo de firma digital ) y otros proporcionan ambas (p. ej., RSA ). En comparación con el cifrado simétrico , el cifrado asimétrico es bastante lento en comparación con un buen cifrado simétrico, demasiado lento para muchos propósitos. [7] Los criptosistemas actuales (como TLS , Secure Shell ) utilizan tanto cifrado simétrico como cifrado asimétrico, a menudo mediante el uso de cifrado asimétrico para intercambiar de forma segura una clave secreta, que luego se utiliza para el cifrado simétrico.
Antes de mediados de la década de 1970, todos los sistemas de cifrado utilizaban algoritmos de clave simétrica , en los que tanto el remitente como el destinatario utilizan la misma clave criptográfica con el algoritmo subyacente, quienes deben mantenerla en secreto. Por necesidad, la clave en cada sistema de este tipo debía intercambiarse entre las partes comunicantes de alguna manera segura antes de cualquier uso del sistema (por ejemplo, a través de un canal seguro) . Este requisito nunca es trivial y muy rápidamente se vuelve inmanejable a medida que aumenta el número de participantes, o cuando no hay canales seguros disponibles, o cuando (como es una práctica criptográfica sensata), las claves se cambian con frecuencia. En particular, si se pretende que los mensajes sean seguros frente a otros usuarios, se requiere una clave separada para cada posible par de usuarios.
Por el contrario, en un sistema de clave pública, las claves públicas pueden difundirse amplia y abiertamente, y su propietario sólo necesita mantener en secreto las claves privadas correspondientes.
Dos de los usos más conocidos de la criptografía de clave pública son:
Una cuestión importante es la confianza/prueba de que una clave pública particular es auténtica, es decir, que es correcta y pertenece a la persona o entidad reclamada, y no ha sido alterada ni reemplazada por algún tercero (quizás malicioso). Hay varios enfoques posibles, que incluyen:
Una infraestructura de clave pública (PKI), en la que uno o más terceros (conocidos como autoridades de certificación ) certifican la propiedad de los pares de claves. TLS se basa en esto. Esto implica que todos los involucrados pueden confiar en el sistema PKI (software, hardware y administración).
Una " red de confianza " descentraliza la autenticación mediante el uso de respaldos individuales de enlaces entre un usuario y la clave pública que pertenece a ese usuario. PGP utiliza este enfoque, además de realizar búsquedas en el sistema de nombres de dominio (DNS). El sistema DKIM para firmar correos electrónicos digitalmente también utiliza este enfoque.
La aplicación más obvia de un sistema de cifrado de clave pública es cifrar la comunicación para proporcionar confidencialidad : un mensaje que un remitente cifra utilizando la clave pública del destinatario, que sólo puede descifrarse mediante la clave privada emparejada del destinatario.
Otra aplicación de la criptografía de clave pública es la firma digital . Se pueden utilizar esquemas de firma digital para la autenticación del remitente .
Los sistemas de no repudio utilizan firmas digitales para garantizar que una parte no pueda disputar con éxito la autoría de un documento o comunicación.
Otras aplicaciones construidas sobre esta base incluyen: efectivo digital , acuerdo de clave autenticado por contraseña , servicios de sellado de tiempo y protocolos de no repudio.
Debido a que los algoritmos de clave asimétrica casi siempre son mucho más intensivos desde el punto de vista computacional que los simétricos, es común usar un algoritmo de intercambio de claves asimétricas público/privado para cifrar e intercambiar una clave simétrica , que luego es utilizada por la criptografía de clave simétrica para transmitir datos usando la clave simétrica ahora compartida para un algoritmo de cifrado de clave simétrica. PGP , SSH y la familia de esquemas SSL/TLS utilizan este procedimiento; por eso se les llama criptosistemas híbridos . El intercambio inicial de claves basado en criptografía asimétrica para compartir una clave simétrica generada por el servidor desde el servidor al cliente tiene la ventaja de no requerir que una clave simétrica se comparta previamente manualmente, como en papel impreso o discos transportados por un mensajero, mientras que proporcionando un mayor rendimiento de datos de la criptografía de clave simétrica sobre la criptografía de clave asimétrica durante el resto de la conexión compartida.
Como ocurre con todos los sistemas relacionados con la seguridad, existen varias debilidades potenciales en la criptografía de clave pública. Aparte de una mala elección de un algoritmo de clave asimétrica (hay pocos que se consideren ampliamente satisfactorios) o una longitud de clave demasiado corta, el principal riesgo de seguridad es que se conozca la clave privada de un par. Entonces se perderá toda la seguridad de los mensajes, autenticación, etc.
Además, con la llegada de la computación cuántica , muchos algoritmos de clave asimétrica se consideran vulnerables a los ataques y se están desarrollando nuevos esquemas resistentes a los cuánticos para superar el problema. [10] [11]
Todos los esquemas de clave pública son, en teoría, susceptibles a un " ataque de búsqueda de claves por fuerza bruta ". [12] Sin embargo, un ataque de este tipo no es práctico si la cantidad de cálculo necesaria para tener éxito, denominada "factor de trabajo" por Claude Shannon , está fuera del alcance de todos los atacantes potenciales. En muchos casos, el factor de trabajo se puede aumentar simplemente eligiendo una llave más larga. Pero otros algoritmos pueden tener inherentemente factores de trabajo mucho más bajos, lo que hace que la resistencia a un ataque de fuerza bruta (por ejemplo, de claves más largas) sea irrelevante. Se han desarrollado algunos algoritmos especiales y específicos para ayudar a atacar algunos algoritmos de cifrado de clave pública; Tanto el cifrado RSA como ElGamal tienen ataques conocidos que son mucho más rápidos que el enfoque de fuerza bruta. [ cita necesaria ] Sin embargo, ninguno de estos ha mejorado lo suficiente como para ser realmente práctico.
Se han encontrado debilidades importantes en varios algoritmos de clave asimétrica que anteriormente eran prometedores. Se descubrió que el algoritmo de "empaque de mochila" era inseguro después del desarrollo de un nuevo ataque. [13] Como ocurre con todas las funciones criptográficas, las implementaciones de clave pública pueden ser vulnerables a ataques de canal lateral que explotan la fuga de información para simplificar la búsqueda de una clave secreta. Estos suelen ser independientes del algoritmo que se utilice. Se están realizando investigaciones para descubrir y protegerse contra nuevos ataques.
Otra posible vulnerabilidad de seguridad en el uso de claves asimétricas es la posibilidad de un ataque de "hombre en el medio" , en el que la comunicación de claves públicas es interceptada por un tercero (el "hombre en el medio") y luego modificada para en su lugar, proporcione diferentes claves públicas. Los mensajes y respuestas cifrados deben, en todos los casos, ser interceptados, descifrados y vueltos a cifrar por el atacante utilizando las claves públicas correctas para los diferentes segmentos de comunicación para evitar sospechas. [ cita necesaria ]
Se dice que una comunicación es insegura cuando los datos se transmiten de una manera que permite la interceptación (también llamada " sniffing "). Estos términos se refieren a la lectura de los datos privados del remitente en su totalidad. Una comunicación es particularmente insegura cuando el remitente no puede prevenir ni monitorear las interceptaciones. [14]
Un ataque de intermediario puede resultar difícil de implementar debido a las complejidades de los protocolos de seguridad modernos. Sin embargo, la tarea se vuelve más sencilla cuando un remitente utiliza medios inseguros como redes públicas, Internet o comunicación inalámbrica. En estos casos, un atacante puede comprometer la infraestructura de comunicaciones en lugar de los datos en sí. Un hipotético miembro malintencionado del personal de un proveedor de servicios de Internet (ISP) podría encontrar un ataque de intermediario relativamente sencillo. Capturar la clave pública sólo requeriría buscar la clave a medida que se envía a través del hardware de comunicaciones del ISP; En esquemas de claves asimétricas correctamente implementados, esto no es un riesgo significativo. [ cita necesaria ]
En algunos ataques avanzados de intermediario, un lado de la comunicación verá los datos originales mientras que el otro recibirá una variante maliciosa. Los ataques asimétricos de intermediario pueden impedir que los usuarios se den cuenta de que su conexión está comprometida. Esto sigue siendo así incluso cuando se sabe que los datos de un usuario están comprometidos porque al otro usuario le parecen correctos. Esto puede generar desacuerdos confusos entre los usuarios, como "¡debe ser de tu parte!" cuando ninguno de los usuarios tiene la culpa. Por lo tanto, los ataques de intermediario sólo se pueden prevenir por completo cuando la infraestructura de comunicaciones está controlada físicamente por una o ambas partes; como por ejemplo a través de una ruta por cable dentro del propio edificio del remitente. En resumen, las claves públicas son más fáciles de alterar cuando el hardware de comunicaciones utilizado por un remitente está controlado por un atacante. [15] [16] [17]
Un enfoque para prevenir este tipo de ataques implica el uso de una infraestructura de clave pública (PKI); un conjunto de roles, políticas y procedimientos necesarios para crear, gestionar, distribuir, utilizar, almacenar y revocar certificados digitales y gestionar el cifrado de clave pública. Sin embargo, esto tiene debilidades potenciales.
Por ejemplo, todas las partes participantes deben confiar en que la autoridad certificadora que emite el certificado ha verificado adecuadamente la identidad del poseedor de la clave, ha garantizado la exactitud de la clave pública cuando emite un certificado, está a salvo de la piratería informática, y haber hecho arreglos con todos los participantes para verificar todos sus certificados antes de que puedan comenzar las comunicaciones protegidas. Los navegadores web , por ejemplo, cuentan con una larga lista de "certificados de identidad autofirmados" de proveedores de PKI, que se utilizan para comprobar la buena fe de la autoridad certificadora y luego, en un segundo paso, los certificados de los comunicadores potenciales. Un atacante que pudiera subvertir una de esas autoridades certificadoras para que emitiera un certificado para una clave pública falsa podría entonces montar un ataque de "intermediario" tan fácilmente como si el esquema de certificado no se utilizara en absoluto. Un atacante que penetre en los servidores de una autoridad y obtenga su almacén de certificados y claves (públicas y privadas) podría falsificar, enmascarar, descifrar y falsificar transacciones sin límite, suponiendo que pudieran ubicarse en el flujo de comunicación.
A pesar de sus problemas teóricos y potenciales, la infraestructura de clave pública se utiliza ampliamente. Los ejemplos incluyen TLS y su predecesor SSL , que se usan comúnmente para brindar seguridad para las transacciones del navegador web (por ejemplo, la mayoría de los sitios web utilizan TLS para HTTPS ).
Aparte de la resistencia al ataque de un par de claves particular, se debe considerar la seguridad de la jerarquía de certificación al implementar sistemas de claves públicas. Alguna autoridad de certificación (generalmente un programa especialmente diseñado que se ejecuta en una computadora servidor) garantiza las identidades asignadas a claves privadas específicas mediante la generación de un certificado digital. Los certificados digitales de clave pública suelen ser válidos durante varios años seguidos, por lo que las claves privadas asociadas deben conservarse de forma segura durante ese tiempo. Cuando una clave privada utilizada para la creación de certificados en niveles superiores de la jerarquía del servidor PKI se ve comprometida o se divulga accidentalmente, entonces es posible un " ataque de intermediario ", lo que hace que cualquier certificado subordinado sea completamente inseguro.
La mayoría del software de cifrado de clave pública disponible no oculta metadatos en el encabezado del mensaje, que pueden incluir las identidades del remitente y del destinatario, la fecha de envío, el campo de asunto y el software que utilizan, etc. Más bien, solo el cuerpo del mensaje. El mensaje está oculto y solo se puede descifrar con la clave privada del destinatario previsto. Esto significa que un tercero podría construir un modelo bastante detallado de los participantes en una red de comunicación, junto con los temas que se discuten, incluso si el cuerpo del mensaje está oculto.
Sin embargo, recientemente ha habido una demostración de mensajería con encabezados cifrados, que oscurecen las identidades del remitente y del destinatario y reducen significativamente los metadatos disponibles para un tercero. [18] El concepto se basa en un repositorio abierto que contiene bloques de metadatos cifrados por separado y mensajes cifrados. Solo el destinatario previsto puede descifrar el bloque de metadatos y, una vez hecho esto, puede identificar, descargar sus mensajes y descifrarlos. Un sistema de mensajería de este tipo se encuentra actualmente en fase experimental y aún no se ha implementado. Escalar este método revelaría al tercero solo el servidor de bandeja de entrada que utiliza el destinatario y la marca de tiempo de envío y recepción. El servidor podría ser compartido por miles de usuarios, lo que haría que el modelado de redes sociales fuera mucho más desafiante.
Durante la historia temprana de la criptografía , dos partes dependían de una clave que intercambiaban mediante un método seguro, pero no criptográfico, como una reunión cara a cara o un mensajero de confianza. Esta clave, que ambas partes deben mantener en absoluto secreto, podría utilizarse para intercambiar mensajes cifrados. Con este método de distribución de claves surgen una serie de dificultades prácticas importantes .
En su libro de 1874 Los principios de la ciencia , William Stanley Jevons escribió: [19]
¿Puede el lector decir qué dos números multiplicados producirán el número 8616460799 ? [20] Creo que es poco probable que alguien más que yo lo sepa alguna vez. [19]
Aquí describió la relación de las funciones unidireccionales con la criptografía y pasó a discutir específicamente el problema de factorización utilizado para crear una función de trampilla . En julio de 1996, el matemático Solomon W. Golomb dijo: "Jevons anticipó una característica clave del algoritmo RSA para la criptografía de clave pública, aunque ciertamente no inventó el concepto de criptografía de clave pública". [21]
En 1970, James H. Ellis , un criptógrafo británico de la Sede de Comunicaciones del Gobierno del Reino Unido (GCHQ), concibió la posibilidad de un "cifrado no secreto" (ahora llamado criptografía de clave pública), pero no vio forma de implementarlo. [22] [23]
En 1973, su colega Clifford Cocks implementó lo que se conoce como el algoritmo de cifrado RSA , dando un método práctico de "cifrado no secreto", y en 1974 otro matemático y criptógrafo del GCHQ, Malcolm J. Williamson , desarrolló lo que ahora se conoce como Intercambio de claves Diffie-Hellman . El plan también pasó a la Agencia de Seguridad Nacional de Estados Unidos . [24] Ambas organizaciones tenían un enfoque militar y en cualquier caso sólo se disponía de una potencia informática limitada; El potencial de la criptografía de clave pública no fue aprovechado por ninguna de las organizaciones:
Lo consideré muy importante para uso militar... si puedes compartir tu clave rápida y electrónicamente, tienes una gran ventaja sobre tu oponente. Sólo al final de la evolución desde que Berners-Lee diseñó una arquitectura de Internet abierta para el CERN , su adaptación y adopción para Arpanet ... la criptografía de clave pública alcanzó todo su potencial.
— Ralph Benjamín [24]
Estos descubrimientos no fueron reconocidos públicamente durante 27 años, hasta que la investigación fue desclasificada por el gobierno británico en 1997. [25]
En 1976, Whitfield Diffie y Martin Hellman publicaron un criptosistema de clave asimétrica quienes, influenciados por el trabajo de Ralph Merkle sobre la distribución de claves públicas, revelaron un método de acuerdo de claves públicas. Este método de intercambio de claves, que utiliza la exponenciación en un campo finito , pasó a conocerse como intercambio de claves Diffie-Hellman . [26] Este fue el primer método práctico publicado para establecer una clave secreta compartida a través de un canal de comunicaciones autenticado (pero no confidencial) sin utilizar un secreto compartido previo. La "técnica de acuerdo de clave pública" de Merkle se conoció como los Rompecabezas de Merkle , se inventó en 1974 y no se publicó hasta 1978. Esto hace que el cifrado asimétrico sea un campo bastante nuevo en la criptografía, aunque la criptografía en sí se remonta a más de 2.000 años. [27]
En 1977, Ron Rivest , Adi Shamir y Leonard Adleman , todos entonces en el MIT , inventaron de forma independiente una generalización del esquema de Cocks . Estos últimos autores publicaron su trabajo en 1978 en la columna Scientific American de Martin Gardner , y el algoritmo pasó a ser conocido como RSA , por sus iniciales. [28] RSA utiliza un módulo de exponenciación, un producto de dos números primos muy grandes , para cifrar y descifrar, realizando tanto cifrado de clave pública como firmas digitales de clave pública. Su seguridad está relacionada con la extrema dificultad de factorizar números enteros grandes , un problema para el que no se conoce ninguna técnica general eficiente. Se publicó una descripción del algoritmo en la columna Mathematical Games de la edición de agosto de 1977 de Scientific American . [29]
Desde la década de 1970, se han desarrollado una gran cantidad y variedad de cifrado, firma digital, acuerdo de claves y otras técnicas, incluido el criptosistema Rabin , el cifrado ElGamal , DSA y ECC .
Ejemplos de técnicas de clave asimétrica bien consideradas para diversos propósitos incluyen:
Ejemplos de algoritmos de clave asimétrica que aún no se han adoptado ampliamente incluyen:
Ejemplos de algoritmos de clave asimétrica notables (aunque inseguros) incluyen:
Ejemplos de protocolos que utilizan algoritmos de clave asimétrica incluyen: