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 que nadie más que el propietario conozca). 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 un sistema de este tipo, 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 utilice la clave pública abiertamente compartida de un cliente para cifrar esa clave simétrica recién generada.. El servidor puede enviar esta clave simétrica cifrada a través de un canal inseguro al cliente; 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 precompartir manualmente claves simétricas (un problema fundamentalmente difícil) mientras se 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 sólida . 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 aplicaciones y 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 proporcionan secreto y distribución de claves (p. Ej., Intercambio de claves Diffie-Hellman ), algunos proporcionan firmas digitales (p. Ej., Algoritmo de firma digital ) y algunos proporcionan ambos (p. Ej., RSA). En comparación con el cifrado simétrico , el cifrado asimétrico es bastante más lento que el 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 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, que deben mantenerla en secreto. Por necesidad, la clave en cada uno de estos sistemas tenía que 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 los canales seguros no están disponibles, o cuando (como es una práctica criptográfica sensata), las claves se cambian con frecuencia. En particular, si los mensajes están destinados a ser seguros para otros usuarios, se requiere una clave separada para cada posible par de usuarios.
Por el contrario, en un sistema de claves públicas, las claves públicas se pueden difundir amplia y abiertamente, y su propietario solo debe mantener en secreto las claves privadas correspondientes.