Criptografía de clave pública
La criptografía de clave pública, o criptografía asimétrica (a diferencia de las claves simétricas), es un sistema criptográfico que utiliza pares de claves. Cada par consta de una clave pública (que puede ser conocida por otros) y una clave privada (que puede no ser conocida por nadie excepto por el propietario). La generación de dichos pares de claves depende de algoritmos criptográficos que se basan en problemas matemáticos denominados funciones unidireccionales. La seguridad efectiva requiere mantener privada la clave privada; la clave pública se puede distribuir abiertamente sin comprometer la seguridad.
En dicho sistema, cualquier persona puede cifrar un mensaje utilizando la clave pública del receptor previsto, pero ese mensaje cifrado solo puede descifrarse con la clave privada del receptor. Esto permite, por ejemplo, que un programa de servidor genere una clave criptográfica destinada a una criptografía de clave simétrica adecuada y luego use la clave pública compartida abiertamente de un cliente para cifrar esa clave simétrica recién generada.. Luego, el servidor puede enviar esta clave simétrica cifrada al cliente a través de un canal no seguro; solo el cliente puede descifrarlo utilizando la clave privada del cliente (que se empareja con la clave pública utilizada por el servidor para cifrar el mensaje). Dado que el cliente y el servidor tienen la misma clave simétrica, pueden usar de forma segura el cifrado de clave simétrica (probablemente mucho más rápido) para comunicarse a través de canales que de otro modo serían inseguros. Este esquema tiene la ventaja de no tener que compartir manualmente las claves simétricas (un problema fundamentalmente difícil) mientras obtiene la ventaja de mayor rendimiento de datos de la criptografía de clave simétrica.
Con la criptografía de clave pública, también es posible una autenticación robusta. Un remitente puede combinar un mensaje con una clave privada para crear una firma digital corta en el mensaje. Cualquiera que tenga la clave pública correspondiente del remitente puede combinar ese mensaje con una firma digital reclamada; si la firma coincide con el mensaje, se verifica el origen del mensaje (es decir, debe haber sido realizado por el propietario de la clave privada correspondiente).
Los algoritmos de clave pública son primitivas de seguridad fundamentales en los criptosistemas modernos, incluidas las aplicaciones y los protocolos que ofrecen garantías de confidencialidad, autenticidad y no repudiabilidad de las comunicaciones electrónicas y el almacenamiento de datos. Son la base de numerosos estándares de Internet, como Transport Layer Security (TLS), S/MIME, PGP y GPG. Algunos algoritmos de clave pública brindan distribución de claves y confidencialidad (p. ej., intercambio de claves Diffie-Hellman), algunos brindan firmas digitales (p. ej., algoritmo de firma digital) y otros brindan ambas (p. ej., RSA). En comparación con el cifrado simétrico, el cifrado asimétrico es bastante más lento que un buen cifrado simétrico, demasiado lento para muchos propósitos.Los criptosistemas actuales (como TLS, Secure Shell) utilizan tanto el cifrado simétrico como el cifrado asimétrico, a menudo utilizando el cifrado asimétrico para intercambiar de forma segura una clave secreta que luego se utiliza para el cifrado simétrico.
Descripción
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 tenía que ser intercambiada 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 los canales seguros no están disponibles, o cuando (como es práctica criptográfica sensata), las claves se cambian con frecuencia. En particular, si los mensajes están destinados a estar seguros de 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 solo necesita mantener en secreto las claves privadas correspondientes.
Dos de los usos más conocidos de la criptografía de clave pública son:
- Cifrado de clave pública, en el que un mensaje se cifra con la clave pública del destinatario previsto. Para los algoritmos elegidos y utilizados correctamente, en la práctica los mensajes no pueden ser descifrados por nadie que no posea la clave privada correspondiente, por lo que se presume que es el propietario de esa clave y, por lo tanto, la persona asociada con la clave pública. Esto se puede utilizar para garantizar la confidencialidad de un mensaje.
- Firmas digitales, en las que un mensaje se firma con la clave privada del remitente y puede ser verificado por cualquier persona que tenga acceso a la clave pública del remitente. Esta verificación demuestra que el remitente tuvo acceso a la clave privada y, por lo tanto, es muy probable que sea la persona asociada con la clave pública. También prueba que la firma se preparó para ese mensaje exacto, ya que la verificación fallará para cualquier otro mensaje que se pueda diseñar sin usar la clave privada.
Un tema importante es la confianza/prueba de que una clave pública en particular es auténtica, es decir, que es correcta y pertenece a la persona o entidad reclamada, y que no ha sido manipulada o 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 el sistema PKI (software, hardware y administración) es confiable para todos los involucrados.
Una "red de confianza" que 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 la búsqueda en el sistema de nombres de dominio (DNS). El sistema DKIM para la firma digital de correos electrónicos también utiliza este enfoque.
Aplicaciones
La aplicación más obvia de un sistema de encriptación de clave pública es encriptar la comunicación para brindar confidencialidad: un mensaje que un remitente encripta usando la clave pública del destinatario que solo puede descifrarse con la clave privada emparejada del destinatario.
Otra aplicación de la criptografía de clave pública es la firma digital. Los esquemas de firma digital se pueden utilizar para la autenticación del remitente.
Los sistemas de no repudio utilizan firmas digitales para garantizar que una de las partes no pueda disputar con éxito su autoría de un documento o comunicación.
Otras aplicaciones construidas sobre esta base incluyen: efectivo digital, acuerdo de clave autenticado con contraseña, servicios de sellado de tiempo y protocolos de no repudio.
Criptosistemas híbridos
Debido a que los algoritmos de claves asimétricas son casi siempre mucho más intensivos en computación 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 de claves basado en criptografía asimétrica inicial para compartir un simétrico generado por el servidorclave del servidor al cliente tiene la ventaja de no requerir que una clave simétrica se comparta previamente de forma manual, como en papel impreso o discos transportados por un servicio de mensajería, al tiempo que proporciona el mayor rendimiento de datos de la criptografía de clave simétrica sobre la criptografía de clave asimétrica para el resto de la conexión compartida.
Debilidades
Como con todos los sistemas relacionados con la seguridad, es importante identificar las debilidades potenciales. Aparte de la 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.
Algoritmos
Todos los esquemas de clave pública son, en teoría, susceptibles a un "ataque de búsqueda de clave de fuerza bruta". Sin embargo, tal ataque no es práctico si la cantidad de computación 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 tecla 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. Sin embargo, ninguno de estos está lo suficientemente mejorado como para ser realmente práctico.
Se han encontrado debilidades importantes para varios algoritmos de clave asimétrica anteriormente prometedores. Se descubrió que el algoritmo de "embalaje de mochila" era inseguro después del desarrollo de un nuevo ataque. Al igual que con todas las funciones criptográficas, las implementaciones de clave pública pueden ser vulnerables a los ataques de canal lateral que aprovechan la fuga de información para simplificar la búsqueda de una clave secreta. Estos son a menudo independientes del algoritmo que se utiliza. Se están realizando investigaciones para descubrir y protegerse contra nuevos ataques.
Alteración de claves públicas
Otra posible vulnerabilidad de seguridad en el uso de claves asimétricas es la posibilidad de un ataque "man-in-the-middle", en el que la comunicación de claves públicas es interceptada por un tercero (el "man in the middle") y luego modificada para proporcione diferentes claves públicas en su lugar. 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 a fin de evitar sospechas.
Se dice que una comunicación es insegura cuando los datos se transmiten de una manera que permite la intercepción (también llamada "olfateo"). 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 o monitorear las intercepciones.
Un ataque de intermediario puede ser difícil de implementar debido a las complejidades de los protocolos de seguridad modernos. Sin embargo, la tarea se simplifica 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 solo 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.
En algunos ataques avanzados de intermediarios, un lado de la comunicación verá los datos originales mientras que el otro recibirá una variante maliciosa. Los ataques man-in-the-middle asimétricos pueden evitar 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 los datos parecen estar bien para el otro usuario. Esto puede generar desacuerdos confusos entre los usuarios, como "¡debe estar de su parte!" cuando ninguno de los usuarios tiene la culpa. Por lo tanto, los ataques man-in-the-middle solo se pueden prevenir por completo cuando la infraestructura de comunicaciones está controlada físicamente por una o ambas partes; como a través de una ruta cableada 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.
Infraestructura de Clave Pública
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, administrar, distribuir, usar, almacenar y revocar certificados digitales y administrar el cifrado de clave pública. Sin embargo, esto tiene debilidades potenciales.
Por ejemplo, todas las partes participantes deben confiar en que la autoridad de certificación que emite el certificado haya verificado adecuadamente la identidad del titular de la clave, que haya garantizado la exactitud de la clave pública cuando emite un certificado, que esté protegido contra 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; estos se utilizan para verificar la buena fede la autoridad certificadora y luego, en un segundo paso, los certificados de los potenciales comunicadores. Un atacante que pudiera subvertir una de esas autoridades de certificación para que emitiera un certificado para una clave pública falsa podría montar un ataque de "intermediario" tan fácilmente como si el esquema de certificación no se hubiera utilizado en absoluto. En un escenario alternativo que rara vez se analiza, 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.
A pesar de sus problemas teóricos y potenciales, este enfoque es ampliamente utilizado. Los ejemplos incluyen TLS y su predecesor SSL, que se usan comúnmente para proporcionar seguridad para las transacciones del navegador web (por ejemplo, para enviar de forma segura los detalles de la tarjeta de crédito a una tienda en línea).
Aparte de la resistencia al ataque de un par de claves en particular, la seguridad de la jerarquía de certificación debe tenerse en cuenta al implementar sistemas de claves públicas. Algunas autoridades 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 producción de un certificado digital. Los certificados digitales de clave pública suelen ser válidos durante varios años, 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 más arriba en 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 totalmente inseguro.
Ejemplos
Ejemplos de técnicas clave asimétricas bien consideradas para diversos propósitos incluyen:
- Protocolo de intercambio de claves Diffie-Hellman
- DSS (Digital Signature Standard), que incorpora el Algoritmo de Firma Digital
- ElGamal
- Criptografía de curva elíptica
- Algoritmo de firma digital de curva elíptica (ECDSA)
- Diffie-Hellman de curva elíptica (ECDH)
- Ed25519 y Ed448 (EdDSA)
- X25519 y X448 (ECDH/EdDH)
- Diversas técnicas de acuerdos de claves autenticadas con contraseña
- criptosistema Paillier
- Algoritmo de cifrado RSA (PKCS#1)
- Criptosistema de Cramer-Shoup
- Protocolo de acuerdo de clave autenticado YAK
Los ejemplos de algoritmos de clave asimétrica que aún no se han adoptado ampliamente incluyen:
- Criptosistema NTRUEncrypt
- Criptosistema McEliece
Los ejemplos de algoritmos de clave asimétrica notables, aunque inseguros, incluyen:
- Criptosistema de mochila Merkle-Hellman
Los ejemplos de protocolos que utilizan algoritmos de clave asimétrica incluyen:
- S/MIME
- GPG, una implementación de OpenPGP y un estándar de Internet
- EMV, Autoridad de certificación EMV
- IPsec
- PGP
- ZRTP, un protocolo VoIP seguro
- Transport Layer Security estandarizado por IETF y su predecesor Secure Socket Layer
- SILC
- SSH
- Bitcoin
- Mensajería no registrada
Historia
Durante la historia temprana de la criptografía, dos partes confiarían en una clave que intercambiarían por medio de 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. Surgen varias dificultades prácticas significativas con este enfoque para distribuir claves.
Anticipación
En su libro de 1874 Los principios de la ciencia, William Stanley Jevons escribió:
¿Puede el lector decir qué dos números multiplicados juntos producirán el número 8616460799? Creo que es poco probable que alguien más que yo lo sepa alguna vez.
Aquí describió la relación de las funciones unidireccionales con la criptografía, y luego discutió específicamente el problema de factorización utilizado para crear una función 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".
Descubrimiento clasificado
En 1970, James H. Ellis, un criptógrafo británico en 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 la forma de implementarlo. En 1973, su colega Clifford Cocks implementó lo que se conoce como el algoritmo de cifrado RSA, proporcionando 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 llaves Diffie-Hellman. El plan también pasó a manos de la Agencia de Seguridad Nacional de Estados Unidos. Ambas organizaciones tenían un enfoque militar y, en cualquier caso, solo se disponía de una potencia informática limitada; el potencial de la criptografía de clave pública no se dio cuenta de ninguna de las dos organizaciones:
Lo juzgué más importante para uso militar... si puede compartir su clave de forma rápida y electrónica, tiene una gran ventaja sobre su oponente. Solo 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 se dio cuenta de todo su potencial.
—Ralph Benjamín
Estos descubrimientos no fueron reconocidos públicamente durante 27 años, hasta que el gobierno británico desclasificó la investigación en 1997.
Descubrimiento público
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 clave pública, revelaron un método de acuerdo de clave pública. Este método de intercambio de claves, que utiliza la exponenciación en un campo finito, se conoció como intercambio de claves Diffie-Hellman. 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 usar un secreto compartido previo. La "técnica de acuerdo de clave pública" de Merkle se conoció como Merkle's Puzzles, y se inventó en 1974 y solo se publicó en 1978.
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.RSA utiliza el módulo de exponenciación, un producto de dos números primos muy grandes, para cifrar y descifrar, realizando tanto el cifrado de clave pública como las firmas digitales de clave pública. Su seguridad está relacionada con la extrema dificultad de factorizar enteros grandes, un problema para el que no existe una técnica general eficiente conocida (aunque la factorización prima se puede obtener mediante ataques de fuerza bruta; esto se vuelve mucho más difícil cuanto mayores son los factores primos). Se publicó una descripción del algoritmo en la columna Mathematical Games en la edición de agosto de 1977 de Scientific American.
Desde la década de 1970, se ha desarrollado una gran cantidad y variedad de técnicas de encriptación, firma digital, acuerdo de clave y otras, incluido el criptosistema Rabin, la encriptación ElGamal, DSA y la criptografía de curva elíptica.
Contenido relacionado
Software multiplataforma
ML (lenguaje de programación)
Hexadecimal