La criptografía de clave pública , o criptografía asimétrica , 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 tales 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. [1]
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). [2] [3]
Los algoritmos de clave pública son primitivas de seguridad fundamentales en los criptosistemas modernos , incluidas las aplicaciones y los protocolos que ofrecen garantía 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.
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.