Criptografía asimétrica – Conceptos clave

Publicado por Diego Córdoba en

Seguimos con la serie sobre criptografía aplicada! Esta vez vamos a analizar cómo se logra la seguridad, en términos de confidencialidad, autenticidad e integridad, mediante el uso de criptografía asimétrica.

Este artículo forma parte de la Serie sobre Criptografía Aplicada publicada en este blog. Pueden visitar el índice de la serie para acceder a todo el contenido.

Criptografía asimétrica

En su momento comentamos los pilares fundamentales de la seguridad informática basada en criptografía. Posteriormente expusimos las formas de lograr dicha seguridad utilizando únicamente cifrado simétrico y funciones Hash, e incluimos práctica con OpenSSL.

Hoy vamos a centrarnos en criptografía asimétrica

Primero algunos conceptos necesarios: clave pública y privada.

Los algoritmos asimétricos utilizan dos claves para proveer seguridad. Dichas claves deben respetar algunas propiedades:

  • Las claves son unívocas, es decir, para una clave privada existe solamente una clave pública, y para cada clave pública existe solamente una clave privada.
  • No es posible obtener una clave a partir de la otra. Así, teniendo la clave pública no es posible calcular la clave privada, y viceversa.
  • Todo lo que se encripte con una clave del par podrá ser desencriptado con la otra. Así, si un mensaje se encripta usando la clave privada, podrá desencriptarse usando el par público de dicha clave, y viceversa.

Las claves son juegos de números primos grandes, del orden de los miles de bits… por ejemplo, RSA, uno de los algoritmos asimétricos más representativos, trabaja con claves de 2048 o 4096 bits (luego hablaremos más sobre este algoritmo).

Criptosistema Asimétrico

Veamos el criptosistema asimétrico y su funcionamiento:

criptografía asimétrica criptosistema

Supongamos que Alice necesita enviar un mensaje cifrado a Bob:

  • Bob, en primera instancia, enviará a Alice su clave pública.
  • Alice utilizará un algoritmo asimétrico para encriptar el mensaje plano usando la clave pública de Bob.
  • Alice enviará a Bob el mensaje cifrado.
  • Bob utilizará su clave privada, par de la clave pública que envió a Alice, para descifrar el mensaje.

En este caso, Eva, el atacante, podrá tener el mensaje cifrado y la clave pública de Bob pero, por las propiedades que mencionamos arriba, no podá descifrar el mensaje.

Alice entonces podrá encriptar el mensaje usando la clave pública de Bob, y enviárselo. Bob podrá descifrar dicho mensaje usando su clave privada.

Y es aquí donde se ve la principal ventaja de los cifradores asimétricos frente a los simétricos: no requieren de un mecanismo seguro de intercambio previo de claves, compartir sobre un canal hostil la clave pública no genera inconvenientes de seguridad.

No obstante, no todo es color de rosas: los algoritmos asimétricos consumen más tiempo de procesamiento que los simétricos, por lo que, por ejemplo, para cifrar grandes cantidades de tráfico (como el intercambiado generado por una VPN) un algoritmo asimétrico no sería recomendable.

Además, y esto es algo que veremos más adelante en esta serie: los algoritmos asimétricos, por sus características intrínsecas, son vulnerables al criptoanálisis cuántico, es decir, al criptoanálisis realizado desde computadoras cuánticas.

Seguridad con criptografía asimétrica

Ya sabemos a grandes rasgos cómo funciona un algoritmo asimétrico: clave pública, clave privada, cifrado con una, descifrado con otra. Veamos ahora cómo se pueden lograr los pilares de la seguridad utilizando estos mecanismos.

Confidencialidad

Lo que acabamos de ver: el criptosistema asimétrico.

Alice recibe, en primera instancia, la clave pública de Bob (1), y la utiliza para encriptar el texto plano (2). Envía el texto cifrado a Bob, que lo desencripta utilizando su clave privada, par de la pública enviada a Alice (3).

Privacidad criptografía asimétrica

Eva no tendrá los datos suficientes para poder desencriptar el contenido, ya que necesita la clave privada de Bob, y no puede obtenerla en base a la clave pública del mismo.

Con esto logramos confidencialidad en el intercambio.

¿Esto es seguro? Sí, en la actualidad lo es, pero puede que no en un futuro cercano… ya lo veremos más adelante 🙂

Autenticidad

Así como, con criptografía simétrica, combinábamos un cifrador con un Hash para calcular el HMAC y utilizarlo para verificar autenticidad, aquí, con cifrado asimétrico, ocurre algo similar.

Como sabemos, la autenticidad la verifica el destinatario del mensaje. Supongamos que Bob necesita saber si fue Alice realmente quien le envió el mensaje.

En este caso, Alice puede calcular un hash del mensaje antes de enviarlo, y luego encriptar dicho hash utilizando su clave privada. A este Hash cifrado se le denomina Firma Digital del mensaje, y decimos que Alice ha firmado el mensaje que le envía a Bob. De esta forma Bob puede verificar dicha firma.

Si analizamos el siguiente diagrama podemos ver que, como condición necesaria, Bob necesita la clave pública de Alice para verificar la firma digital.

autenticidad integridad criptografía asimétrica

Alice calcula el hash del mensaje en texto plano (2), lo encripta utilizando su clave privada (3), y lo envía a Bob, junto con el mensaje en texto plano.

Bob descifra la firma utilizando la clave pública de Alice (4), y calcula el hash del mensaje recibido de Alice (5). Finalmente compara los dos hashes, el recibido y el descifrado (6).

Aquí, si los dos hashes son iguales, se verifica autenticidad, puesto que, como Bob obtuvo dicho hash descifrando la firma enviada por Alice y usando la clave pública de Alice, indica que solamente Alice, con su clave privada, pudo haber generado dicha firma.

Integridad

Al igual que con criptografía simétrica, aquí también se verifica integridad a la vez que autenticidad.

En el caso anterior, si los hashes son iguales, además de verificar la autenticidad también se verifica integridad, puesto que Bob puede determinar que el mensaje no fue adulterado en el camino.

Seguridad completa con criptografía asimétrica

Tal y como ocurría con el cifrado simétrico, aquí también podemos combinar encriptación con firma digital para lograr seguridad completa.

En general, se suele firmar digitalmente un mensaje en texto plano, y luego encriptar el contenido de mensaje+firma, para lograr la confidencialidad del conjunto.

Cuando veamos ejemplos en OpenSSL y GnuPG analizaremos este tema.

Conclusiones

Hemos analizado al forma en que se puede lograr seguridad, en términos de Confidencialidad, Autenticidad e Integridad, utilizando únicamente algoritmos asimétricos.

Digo «únicamente» ya que podemos combinar criptografía simétrica y asimétrica para lograr seguridad. Esto lo analizaremos más adelante.

Hemos visto la gran ventaja de los algoritmos asimétricos respecto de los simétricos: el intercambio de claves.

Los algoritmos asimétricos, como dijimos, suelen requerir más tiempo de procesamiento que los simétricos. Por esto es que, en la práctica, se utiliza la combinación de ambos mecanismos. Esto lo analizaremos más adelante.

Uno de los algoritmos asimétricos más utilizados para realizar autenticidad y cifrado es RSA. Si quieren adentrarse en los detalles matemáticos, y ver algún ejemplo de código de su funcionamiento, les recomiendo pasarse por esta entrada:

RSA: ¿Cómo funciona este algoritmo de cifrado?

Dicho sea de paso, en esa entrada se ve que RSA, como casi todos los algoritmos asimétricos, se basan en principios de complejidad computacional, es decir, su fortaleza radica en la dificultad, para una computadora, de realizar algunos cálculos matemáticos en un tiempo acotado.

La desventaja de esto es que los hace vulnerables al criptoanálisis realizado desde computadoras cuánticas. Más adelante les comentaré por qué pasa esto, y qué alternativas tenemos en la actualidad de cara a un futuro cuántico.

Y hemos llegado al final!

En siguientes posts de esta serie hablaremos sobre mecanismos de distribución de claves asimétricas, protocolos como TLS, y práctica con OpenSSL.

Hasta la próxima!


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador