Descripción de la criptografía mediante claves públicas

 

Última modificación del tema: 2005-05-19

Este tema es una introducción general a los elementos de la criptografía mediante claves públicas que están directamente relacionados con la seguridad de los mensajes. Existen otras fuentes de información, que puede consultar si desea tener unos conocimientos más detallados de este tema.

La criptografía es el estudio de la protección de información mediante el uso de códigos y claves. La criptografía constituye una parte fundamental de la seguridad de los mensajes.

En su definición más sencilla, un código es un proceso de cambio metódico de información para hacerla ilegible si no se sabe cómo se cambió dicha información. Uno de los códigos más antiguos y más sencillos (denominado clave César) consistía en tomar las letras del alfabeto y desplazar todas las letras un número fijo. Tanto el remitente como el destinatario sabrían cuántas letras había que desplazar el alfabeto y, por tanto, podrían utilizar este código para modificar información de manera que sólo ellos pudieran entenderla. Este proceso de cambiar información en un código es el cifrado, y el proceso de volver a cambiar el código es el descifrado. El mensaje original se denomina "texto no cifrado". El mensaje modificado se denomina "texto cifrado". La información que se utiliza para convertir el texto no cifrado en texto cifrado se conoce como clave. La forma concreta en que una clave cambia la información se denomina algoritmo.

Nota

En este contexto, no se debe confundir texto no cifrado con el texto que no tiene formato cuando se hace referencia al formato de un mensaje de correo electrónico. En ese contexto, texto no cifrado se utiliza para distinguir el formato HTML del Formato de texto enriquecido (RTF) de un mensaje. En el contexto de la seguridad de los mensajes, texto no cifrado se utiliza para distinguirlo de texto cifrado, e indica que el texto no está cifrado.

Por ejemplo, si un remitente desea cifrar un mensaje con este método, sabe que la clave cambiará cada instancia de la letra A del texto no cifrado por la letra D en el texto cifrado; cada instancia de la letra B del texto no cifrado se cambiará a la letra E en el texto cifrado y así sucesivamente. Con esta clave, que tiene un algoritmo de "desplazar las letras hacia adelante tres posiciones", la palabra "clave" del texto no cifrado se cifraría como "fodyh".

Cuando el destinatario recibe el mensaje en texto cifrado, lo vuelve a transformar en texto no cifrado utilizando la clave para descifrar la información; en este caso, desplazando las letras hacia atrás tres posiciones e invirtiendo el cambio.

En este ejemplo, tanto el remitente como el destinatario deben mantener la clave en secreto, ya que cualquiera que conozca la clave puede utilizarla para descifrar y leer el mensaje. Una clave perdida hace que el cifrado sea inútil. Además, el nivel del algoritmo es importante. Un tercero no autorizado puede tomar el texto cifrado e intentar descifrarlo determinando la clave a partir del texto cifrado.

Observe que tanto el remitente como el destinatario utilizan la misma clave. Este tipo de cifrado se denomina cifrado de "clave simétrica", ya que ambas partes utilizan la misma clave.

Aunque se trata de un ejemplo sencillo, ilustra la funcionalidad y los conceptos básicos de la criptografía. Recientemente se han hecho grandes mejoras y avances en la criptografía.

Funcionamiento de la criptografía mediante claves públicas

En 1976, Whitfield Diffe y Martin Hellman crearon la criptografía mediante claves públicas. La criptografía mediante claves públicas representa una gran innovación ya que altera fundamentalmente el proceso de cifrado y descifrado.

En lugar de una única clave secreta compartida, Diffe y Hellman propusieron el uso de dos claves. Una clave, denominada la "clave privada" sigue siendo secreta. En lugar de compartirse entre las partes, sólo la conoce una parte. La segunda clave, llamada "clave pública", no es secreta y se puede compartir. Estas dos claves, o "par de claves" como se conocen, se utilizan conjuntamente en las operaciones de cifrado y descifrado. El par de claves tiene una relación especial recíproca de forma que cada clave sólo puede utilizarse junto con la otra clave del par. Esta relación vincula las claves del par de manera exclusiva una con otra: una clave pública y su correspondiente clave privada están emparejadas y no están relacionadas de ninguna manera con otras claves.

Este emparejamiento es posible debido a una relación matemática especial entre los algoritmos de las claves públicas y las claves privadas. Los pares de claves están relacionados matemáticamente entre sí de forma que el uso conjunto del par de claves consigue el mismo resultado que el uso de una clave simétrica dos veces. Las claves deben utilizarse juntas: cada clave individual no puede utilizarse para deshacer su propia operación. Esto significa que la operación de cada clave individual es una operación unidireccional: una clave no puede utilizarse para invertir su operación. Además, los algoritmos utilizados por ambas claves están diseñados de forma que una clave no puede utilizarse para determinar la otra clave del par. Así, no es posible averiguar la clave privada a partir de la clave pública. Sin embargo, las matemáticas que hacen posibles los pares de claves contribuyen a una desventaja de los pares de claves frente a las claves simétricas. Los algoritmos empleados deben ser suficientemente seguros como para impedir que las personas utilicen la clave pública conocida para descifrar la información cifrada con ella por fuerza bruta. Una clave pública utiliza una cierta complejidad matemática y su naturaleza unidireccional para compensar el hecho de que es conocida públicamente de manera que la gente no pueda descifrar la información que se ha codificado con dicha clave.

Aplicando este concepto al ejemplo anterior, el remitente utilizaría la clave pública para cifrar el texto no cifrado y convertirlo en texto cifrado. El destinatario utilizaría la clave privada para descifrar el texto cifrado y obtener texto no cifrado.

Debido a la especial relación existente entre la clave privada y la clave pública del par de claves, una persona puede utilizar el mismo par de claves con varias personas, en lugar de tener que utilizar una clave diferente con cada persona distinta. Siempre y cuando la clave privada siga siendo secreta, la clave pública se puede dar a conocer a cualquier número de personas y se puede utilizar de manera segura. La posibilidad de utilizar un único par de claves con varias personas representa un gran avance en criptografía, ya que hace que la criptografía sea mucho más fácil de utilizar al reducir considerablemente los requisitos para la administración de claves. Un usuario puede compartir un par de claves con cualquier número de personas, en lugar de tener que establecer una única clave secreta con cada persona.

Uso conjunto de la criptografía mediante claves públicas y la seguridad de los mensajes

La criptografía mediante claves públicas es un elemento fundamental de la seguridad de los mensajes. Sin la criptografía mediante claves públicas seguramente no habría soluciones prácticas para la seguridad de los mensajes, ya que antes de que existiera la criptografía mediante claves públicas la administración de claves era una tarea tediosa. Una vez comprendidos los conceptos básicos de la criptografía mediante claves públicas, el siguiente paso consiste en aprender cómo funcionan esos conceptos para hacer posible la seguridad de los mensajes.

Criptografía mediante claves públicas y firmas digitales

Como se ha explicado en la sección anterior, el núcleo de las firmas digitales es la posibilidad de identificar de manera única al remitente de un mensaje. La naturaleza recíproca de la relación del par de claves hace posible esta identificación única gracias a la criptografía mediante claves públicas.

Como la clave privada de un par de claves sólo pertenece a una parte, siempre que se ve que se ha utilizado la clave privada se puede concluir que sólo el propietario de la clave la ha utilizado. De este modo, el uso de la clave privada es como una firma en un papel, ya que sólo el propietario de una firma puede hacerla realmente. La firma en papel confirma la presencia de su propietario, del mismo modo que el uso de la clave privada confirma la presencia de su propietario.

Si un par de claves se utiliza correctamente en una operación de cifrado y descifrado, la clave privada del par debe haberse utilizado para una parte de la operación. Puesto que una clave pública sólo está vinculada a una clave privada, la clave pública correspondiente puede utilizarse para identificar su clave privada relacionada y sólo ella. Si una determinada clave pública se utiliza correctamente en una operación de cifrado y descifrado, se puede inferir que la clave privada correspondiente se ha utilizado para una parte de la operación. Como sólo el propietario de la clave puede utilizar la clave privada, esto significa que sólo el propietario de la clave puede haber realizado parte de la operación de cifrado y descifrado.

El uso de una clave privada para establecer la identidad indica que toda la operación de cifrado y descifrado se realizó correctamente. Mostrar toda una operación entera significa que el texto no cifrado se habría cifrado para obtener texto cifrado mediante una clave privada y, a continuación, se habría descifrado para obtener texto no cifrado mediante la correspondiente clave pública. Si esta operación se realiza correctamente, se demuestra el uso de la clave privada, y sólo de la clave privada.

Para mostrar una operación correcta de cifrado y descifrado, el texto no cifrado existente antes de las operaciones de cifrado y descifrado debe coincidir con el texto no cifrado que se obtiene después de la operación de cifrado y descifrado. Ambos conjuntos de texto no cifrado deben compararse directamente y coincidir en su totalidad. Debe existir un control que se utilice para la comparación y la validación.

En el correo electrónico, este control es el mensaje real. Como el mensaje está disponible tanto para el remitente como para el destinatario, es un elemento de control cómodo.

Para poder utilizarse en esta operación de comparación, el mensaje se convierte en un "hash", que es una representación numérica del texto completo. Un texto idéntico de los mensajes producirá valores de hash idénticos.

Al tomar el valor de hash del mensaje y combinarlo con la clave privada en el momento del envío, el propietario de la clave privada demuestra que es quien realmente envía el mensaje.

Para combinar el mensaje con la clave privada se cifra el valor de hash con la clave privada del remitente, lo que crea la firma digital real. Dependiendo de cómo se haya configurado el sistema de correo electrónico del remitente, la firma digital se anexa al final del mensaje, creando un mensaje con "firma clara", o el resultado se combina con el mensaje original en un dato adjunto binario, creando un mensaje con "firma opaca".

Como la firma digital se agrega al mensaje original como datos adjuntos, los clientes de correo electrónico que no son compatibles con S/MIME pueden leer los mensajes con firma clara. En los clientes que no son S/MIME se descarta la firma y se muestra el mensaje original. Sin embargo, no hay ninguna forma de comprobar el mensaje; esencialmente es lo mismo que un mensaje sin firmar. La desventaja de los mensajes con firma clara es que hay mayores posibilidades de que las puertas de enlace de correo que intervienen alteren el mensaje y, por tanto, invaliden la firma.

Por el contrario, como el mensaje y la firma digital se tratan como un único dato adjunto binario en los mensajes con firma opaca, es mucho menos probable que se alteren mientras están en tránsito. Sin embargo, sólo un cliente S/MIME puede leer los datos adjuntos. Si un cliente que no es S/MIME recibe un mensaje con firma opaca, el mensaje será ilegible.

Los mensajes con firma opaca se crearon en parte para resolver el problema de los sistemas de correo electrónico que alteraban los cuerpos de los mensajes mientras estaban en tránsito. Es preciso destacar aquí que las soluciones actuales de correo electrónico que cumplen los estándares S/MIME no alteran el cuerpo de los mensajes. Sin embargo, hay muchos clientes que no pueden leer mensajes de correo electrónico con firma opaca. Por tanto, se recomienda enviar mensajes con firma clara.

Cuando se recibe el mensaje, se puede recuperar la firma digital y aplicar la clave pública del remitente en una operación de descifrado, lo que produce el valor de hash original del mensaje. Entonces se puede comparar este valor de hash con el valor de hash del mensaje recibido. Como sólo una clave privada puede corresponderse a una clave pública y sólo el propietario de la clave pública puede utilizarla para cifrar el valor de hash correctamente, el descifrado del hash mediante la clave pública demuestra que el propietario de la clave privada cifró el valor de hash. Como el valor de hash es una representación numérica del texto del mensaje, si el valor de hash cifrado coincide con el valor de hash del mensaje recibido, indica que el texto del mensaje que se envió coincide con el texto recibido. Cuando se une el hecho de que sólo el propietario de la clave privada pudo haber enviado el mensaje, el resultado es que el destinatario tiene la seguridad de que sólo el propietario de la clave envió el mensaje, lo que proporciona autenticación y, en consecuencia, no rechazo. También indica que el mensaje no ha cambiado, lo que ofrece integridad de los datos. Si los valores de hash no coincidieran, el destinatario sabría que el mensaje habría sido alterado mientras estaba en tránsito o que la clave pública utilizada no coincide con la clave privada. En ambos casos, el destinatario sabe que el mensaje no es válido y que no debe confiar en él.

Así se puede ver la forma en que la criptografía mediante claves públicas ofrece los servicios de seguridad que componen las firmas digitales.

La figura siguiente muestra la secuencia de firma, con la incorporación de los elementos auxiliares de la criptografía mediante claves públicas.

35451fb8-5e11-4d67-ba6e-e5d4da6febca

  1. Se captura el mensaje.
  2. Se calcula el valor de hash del mensaje.
  3. Se recupera la clave privada del remitente.
  4. Se cifra el valor de hash con la clave privada del remitente.
  5. Se anexa al mensaje el valor de hash cifrado como una firma digital.
  6. Se envía el mensaje.

La figura siguiente muestra la secuencia de comprobación, con la incorporación de los elementos auxiliares de la criptografía mediante claves públicas.

d1b14a27-5cfb-4df2-89f7-990219378716

  1. Se recibe el mensaje.
  2. Se recupera del mensaje la firma digital que contiene el valor de hash cifrado.
  3. Se recupera el mensaje.
  4. Se calcula el valor de hash del mensaje.
  5. Se recupera la clave pública del remitente.
  6. Se descifra con la clave pública del remitente el valor de hash cifrado.
  7. Se compara el valor de hash descifrado con el valor de hash obtenido en la recepción.
  8. Si los valores coinciden, el mensaje es válido.

La secuencia muestra cómo la criptografía mediante claves públicas ofrece las capacidades que aportan a una firma digital sus servicios de seguridad básicos: autenticación, no rechazo e integridad de los datos.

Criptografía mediante claves públicas y cifrado de mensajes

A diferencia de las firmas digitales, la relación existente entre la criptografía mediante claves públicas y el cifrado de mensajes suele ser más directa, ya que el cifrado es una función básica de la criptografía mediante claves públicas. Sin embargo, el cifrado de mensajes no se realiza con sólo cifrar y descifrar el mensaje mediante el par de claves. El par de claves se utiliza en el cifrado de mensajes, pero no para todo el mensaje.

Puesto que el objetivo del cifrado de mensajes es asegurar que sólo los destinatarios autorizados pueden ver el mensaje, la clave privada de cada destinatario puede ofrecer dicho servicio. Como la clave privada sólo puede utilizarla correctamente su propietario, el uso de la clave durante la lectura de un mensaje garantiza que el propietario de dicha clave, y sólo el propietario de dicha clave, puede leer el mensaje. Esta capacidad ofrece la confidencialidad que subyace al cifrado de mensajes. Además, como la clave pública puede distribuirse ampliamente, permite que cualquier número de personas envíe información al titular de una única clave privada.

Sin embargo, el par de claves no se utiliza en todo el mensaje. Esto se debe a que la operación de cifrado y descifrado mediante un par de claves es un proceso costoso, debido a la necesaria complejidad empleada en los algoritmos de la clave. Aunque haya que utilizar un par de claves, no tiene por qué utilizarse necesariamente en todo el mensaje. Tiene que formar parte del proceso que "bloquea" y "desbloquea" la información. Siempre y cuando el mensaje sea ilegible hasta que se presente la clave privada, se cumple el objetivo del cifrado de mensajes.

Como se indica anteriormente en "Funcionamiento de la criptografía mediante claves públicas" de este tema, las claves públicas utilizan algoritmos seguros para compensar el hecho de que sean conocidas públicamente. Estos algoritmos seguros son mayores y, por tanto, los cálculos que utilizan son más lentos, que las antiguas claves simétricas. Como una clave privada sólo se utiliza para desbloquear información antes de poder verla, y no en todo el mensaje, es más económico utilizar un par de claves en la mínima cantidad de información posible y utilizar una clave simétrica, más rápida, en la máxima cantidad de información posible, siempre y cuando se garantice que no se podrá utilizar la información hasta que no se presente la clave privada.

Las claves simétricas utilizan una clave secreta que ambas partes deben conocer. Este proceso se denomina a veces "negociación de clave". Con los pares de claves no existe ninguna negociación, ya que varias personas pueden utilizar una clave pública. Los pares de claves pueden utilizarse también junto con las claves simétricas para realizar la negociación de claves. Es posible elegir una clave simétrica, cifrarla mediante la clave pública de un par de claves y, a continuación, enviarla al propietario de la clave privada. Cuando se envía una clave simétrica a varios destinatarios, puede utilizarse la misma clave para todos ellos y, a continuación, cifrarla mediante la clave pública de cada destinatario específico. Como sólo el propietario de la clave privada puede descifrar la clave simétrica, ésta sigue siendo un secreto compartido entre las personas autorizadas. Puede generar claves simétricas de un único uso durante una determinada operación o sesión. En este caso se denominan "claves de sesión". El cifrado mediante claves públicas puede mejorar, no reemplazar, el cifrado mediante claves simétricas.

El objetivo del cifrado de mensajes es asegurar que un mensaje sea ilegible hasta que se presente la clave privada. La clave privada puede utilizarse en la negociación de claves simétricas para transmitir de manera segura una clave simétrica. Puesto que es posible transmitir de manera segura una clave simétrica a un destinatario, puede utilizar una clave simétrica para cifrar un mensaje y, a continuación, cifrar dicha clave mediante la clave pública de un par de claves. Sólo el titular de una clave privada puede desbloquear la clave simétrica, que se utiliza entonces para descifrar el mensaje. Esta operación funciona como si todo el mensaje se hubiera cifrado y descifrado mediante el par de claves. Sin embargo, como utiliza una clave simétrica más rápida para la mayor parte de la información, la operación es más rápida que si se realizara de otra manera. A lo largo de todo este proceso, el mensaje sigue estando protegido hasta la presentación de la clave privada, proporcionando así confidencialidad, que es el servicio fundamental del cifrado de mensajes. Debido al proceso de cifrado y descifrado, cualquier alteración de un mensaje una vez cifrado hará que fracase la operación de descifrado, por lo que se proporciona integridad de los datos.

Si bien el uso de una clave simétrica puede ser inesperado y su ventaja no es obvia inmediatamente, mejora la seguridad de los mensajes al hacer que el proceso de cifrado de mensajes sea más rápido sin poner en peligro la seguridad del mensaje. La figura siguiente muestra la secuencia de cifrado con los elementos auxiliares de la criptografía mediante claves públicas.

21058391-2d70-42f9-bf25-8ead79705b27

  1. Se captura el mensaje.
  2. Se recupera la clave pública del destinatario.
  3. Se genera la clave de sesión simétrica de un único uso.
  4. Se realiza la operación de cifrado en el mensaje mediante la clave de sesión.
  5. Se cifra la clave de sesión mediante la clave pública del destinatario.
  6. Se incluye la clave de sesión cifrada en el mensaje cifrado.
  7. Se envía el mensaje.

La figura siguiente muestra la secuencia de descifrado, con la incorporación de los elementos auxiliares de la criptografía mediante claves públicas.

50f0afca-e520-46b5-8e12-6e295dfe86d9

  1. Se recibe el mensaje.
  2. Se recuperan del mensaje el mensaje cifrado y la clave de sesión cifrada.
  3. Se recupera la clave privada del destinatario.
  4. Se descifra la clave de sesión mediante la clave privada del destinatario.
  5. Se descifra el mensaje con la clave de sesión descifrada.
  6. Se devuelve el mensaje sin cifrar al destinatario.

La secuencia muestra cómo la criptografía mediante claves públicas proporciona compatibilidad con los servicios principales del cifrado de mensajes: confidencialidad e integridad de los datos.

Descripción de cómo la criptografía mediante claves públicas en las firmas digitales y el cifrado de mensajes funcionan conjuntamente

Las firmas digitales y el cifrado de mensajes son servicios complementarios. Después de considerar cómo la criptografía mediante claves públicas se integra con cada servicio individualmente, es útil examinar cómo se utilizan conjuntamente estos servicios.

La figura siguiente muestra la secuencia de firma y cifrado, con la incorporación de los elementos auxiliares de la criptografía mediante claves públicas.

e81cca9b-c780-49d9-a3f9-69cc3c442183

  1. Se captura el mensaje.
  2. Se calcula el valor de hash del mensaje.
  3. Se recupera la clave privada del remitente.
  4. Se recupera la clave pública del destinatario.
  5. Se cifra el valor de hash con la clave privada del remitente.
  6. Se anexa al mensaje el valor de hash cifrado como una firma digital.
  7. Se genera la clave de sesión simétrica de un único uso.
  8. Se realiza la operación de cifrado en un mensaje mediante la clave de sesión.
  9. Se cifra la clave de sesión mediante la clave pública del destinatario.
  10. Se incluye la clave de sesión cifrada en el mensaje cifrado.
  11. Se envía el mensaje.

La figura siguiente muestra la secuencia de descifrado y comprobación de la firma digital, con la incorporación de los elementos auxiliares de la criptografía mediante claves públicas.

97705e57-0a94-4197-99c3-40bb58a9eaa0

  1. Se recibe el mensaje.
  2. Se recuperan del mensaje el mensaje cifrado y la clave de sesión cifrada.
  3. Se recupera la clave privada del destinatario.
  4. Se descifra la clave de sesión mediante la clave privada del destinatario.
  5. Se descifra el mensaje con la clave de sesión descifrada.
  6. Se recupera del mensaje la firma digital que contiene el valor de hash cifrado.
  7. Se calcula el valor de hash del mensaje.
  8. Se recupera la clave pública del remitente.
  9. Se descifra con la clave pública del remitente el valor de hash cifrado.
  10. Se compara el valor de hash descifrado con el valor de hash obtenido en la recepción.
  11. Si los valores coinciden, el mensaje es válido.
  12. Se devuelve el mensaje sin cifrar al destinatario.

La secuencia muestra cómo la criptografía mediante claves públicas hace posible las firmas digitales y el cifrado de mensajes.

Tenga en cuenta que una parte necesita la clave pública o la clave privada de la otra parte, según la operación específica de que se trate. Por ejemplo, el remitente debe tener su clave privada para firmar digitalmente correo electrónico, pero también debe tener la clave pública del destinatario para poder enviar correo electrónico cifrado. Como esto puede resultar algo confuso, en la figura siguiente se muestra una tabla con las claves que necesita cada parte para realizar cada operación.

ef4e76b6-4799-45a9-90f8-ec7af508152a

El siguiente elemento que hay que comprender son los certificados digitales. Los certificados digitales hacen posible el uso de firmas digitales y el cifrado al distribuir pares de claves.