Únase a Keyfactor en la RSA Conference™ 2024 | del 6 al 9 de mayo | Más información

Tipos de algoritmos de cifrado + ventajas e inconvenientes de cada uno

Tipos de algoritmos de cifrado + ventajas e inconvenientes de cada uno

Algoritmos de cifrado

Cifrado simétrico

Los algoritmos de cifrado simétrico utilizan la misma clave secreta para cifrar y descifrar. Esto significa que el remitente y el destinatario de un mensaje cifrado tienen que compartir una copia de la clave secreta a través de un canal seguro antes de empezar a enviar datos cifrados. Los algoritmos de cifrado simétrico pueden ser de dos tipos: de bloque o de flujo.

Cifrado por bloques

Un cifrado por bloques cifra los datos en trozos de tamaño fijo. Por ejemplo, el Advanced Encryption Standard (AES) utiliza una longitud de bloque de 128 bits.

Si el texto plano es más corto que la longitud del bloque, se rellena hasta alcanzar la longitud deseada antes del cifrado. En el otro extremo, el destinatario del mensaje lo descifrará y eliminará el relleno para recuperar el mensaje original.

Si un texto plano es más largo que la longitud del bloque, se divide en varios trozos diferentes para cifrarlo. El modo de funcionamiento de un cifrado por bloques define cómo se relacionan estos trozos entre sí.

Cada modo de funcionamiento tiene sus pros y sus contras. Por ejemplo, el modo Electronic Code Book (ECB) es el modo de funcionamiento más sencillo. Con ECB, cada bloque se cifra de forma totalmente independiente.

El inconveniente es que los bloques con el mismo texto plano producen el mismo texto cifrado. La imagen imagen de arriba es una foto del pingüino de Linux. Aunque estos datos están cifrados, los textos cifrados para un píxel de un determinado color (negro, blanco, etc.) son los mismos en toda la imagen, por lo que el pingüino sigue siendo visible.

Otros modos de funcionamiento eliminan este problema interrelacionando el cifrado de cada bloque. Algunos también ofrecen funciones adicionales, como el modo de contador de Galois (GCM), que genera un código de autenticación de mensajes (MAC) que verifica que los datos no se han modificado en tránsito.

Ejemplo: El estándar de cifrado avanzado (AES)

El cifrado por bloques más famoso es el Advanced Encryption Standard (AES). Este algoritmo de cifrado fue seleccionado en un concurso convocado por el Instituto Nacional de Estándares y Tecnología (NIST) para sustituir al antiguo Estándar de Cifrado de Datos (DES).

AES es una familia de tres algoritmos diferentes diseñados para utilizar una clave de cifrado de 128, 192 o 256 bits. Estos algoritmos se dividen en un programa de claves y un algoritmo de cifrado.

El algoritmo de cifrado de AES es prácticamente el mismo en las tres versiones. Se divide en rondas, compuestas por un conjunto de operaciones matemáticas. La principal diferencia entre las distintas versiones de AES es el número de rondas utilizadas: 10, 12 y 14.

Cada ronda de AES utiliza una clave única derivada de la clave secreta original. El programa de claves se encarga de derivar estas claves de ronda. El programa de claves de cada versión de AES es diferente, ya que toman claves secretas de distinta longitud y producen un número diferente de claves de ronda de 128 bits.

Cifrado de flujos

El otro tipo de algoritmo de cifrado simétrico es el cifrado de flujo. A diferencia del cifrado por bloques, el cifrado de flujo cifra un texto plano bit a bit.

El cifrado de flujo se basa en el único algoritmo de cifrado completamente indescifrable: la almohadilla de un solo uso (OTP). La OTP toma una clave secreta aleatoria de la misma longitud que el texto sin cifrar y combina por XOR (algoritmo de exclusión) cada bit del texto sin cifrar y de la clave para producir el texto cifrado, como se muestra en la imagen anterior.

El descifrado con una OTP es lo mismo que el cifrado. Esto se debe a que cualquier XOR con sí mismo es cero y cualquier XOR con cero es sí mismo. Con un texto plano P, un texto cifrado C y una clave K

C XOR K = (C XOR K) XOR K = C XOR (K XOR K) = C XOR 0 = C

Aunque tiene una gran seguridad, la OTP rara vez se utiliza porque es poco práctico compartir de forma segura las cantidades masivas de material clave que necesita para funcionar. Un cifrado de flujo utiliza la misma idea que la OTP con una clave ligeramente menos segura.

En lugar de una clave totalmente aleatoria, un cifrado de flujo utiliza una clave secreta para alimentar un generador de números pseudoaleatorios. Al compartir la misma clave secreta y el mismo algoritmo, el emisor y el receptor de un mensaje pueden extraer la misma cadena de bits, lo que les permite cifrar y descifrar un mensaje.

Ejemplo: Cifrado Rivest 4 (RC4)

RC4 es un ejemplo de cifrado de flujo ampliamente utilizado. Fue creado por Ron Rivest en 1987 y originalmente era un secreto comercial de RSA Security. En 1994, se filtraron los detalles del cifrado, lo que lo hizo públicamente utilizable.

RC4 se utiliza en diversas aplicaciones, como los estándares de cifrado WEP y WPA para Wi-Fi. El cifrado tiene algunas vulnerabilidades conocidas, especialmente para determinadas aplicaciones, pero puede seguir utilizándose si se descartan algunos de los bytes iniciales del flujo de claves generado.

Cifrado asimétrico

A diferencia del cifrado simétrico, la criptografía asimétrica utiliza dos claves diferentes para el cifrado y el descifrado. La clave pública se utiliza para cifrar un mensaje, mientras que la privada se emplea para descifrarlo.

La clave privada es un número completamente aleatorio. La clave pública se obtiene a partir de la privada mediante un problema matemáticamente "difícil".

Este problema "difícil" se basa en una operación matemática que es "fácil" de realizar pero "difícil" de revertir. Se utilizan diferentes problemas "difíciles", incluidos los basados en números enteros y los basados en curvas elípticas.

Criptografía basada en números enteros

La criptografía asimétrica basada en números enteros utiliza dos problemas "difíciles" principales. Se trata de los problemas de factorización y logaritmo discreto.

El problema de la factorización se basa en el hecho de que es relativamente fácil multiplicar dos números juntos, pero es difícil factorizarlos. De hecho, factorizar es tan difícil que la mejor forma de hacerlo (en un ordenador "clásico") es mediante una búsqueda de fuerza bruta. Si alguien quiere factorizar el producto de dos números primos, tiene que probar los factores potenciales hasta encontrar uno de los dos factores, lo que puede llevar mucho tiempo.

Un algoritmo de cifrado asimétrico basado en el problema de la factorización tendrá una clave pública calculada mediante el producto de dos claves privadas (grandes números primos). Este cálculo es fácil de realizar, pero quien quiera obtener la clave privada a partir de la pública tendrá que factorizarla, lo que es mucho más difícil.

La dificultad de la multiplicación crece polinómicamente con la longitud de los factores, pero la dificultad de la factorización crece exponencialmente. Esto hace posible encontrar un "punto dulce", donde un sistema es utilizable pero esencialmente irrompible.

El problema del logaritmo discreto utiliza la exponenciación y los logaritmos como operaciones "fáciles" y "difíciles". Al igual que ocurre con la factorización, la complejidad del cálculo de logaritmos crece mucho más rápidamente a medida que aumenta el tamaño del exponente.

Ejemplo: Rivest-Shamir-Adleman (RSA)

Elcifrado simétrico es un algoritmo criptográfico sencillo para los estándares actuales, sin embargo, en su día se consideró el estado del arte. De hecho, el ejército alemán lo utilizó para enviar comunicaciones privadas durante la Segunda Guerra Mundial. La película The Imitation Game hace explica muy bien cómo funciona el cifrado simétrico y el papel que desempeñó en la Segunda Guerra Mundial.y el papel que desempeñó durante la guerra.

Con el cifrado simétrico, un mensaje que se escribe en texto plano pasa por permutaciones matemáticas para quedar cifrado. El mensaje cifrado es difícil de descifrar porque la misma letra del texto sin formato no siempre sale igual en el mensaje cifrado. no siempre sale la misma en el mensaje cifrado. Por ejemplo, el mensaje "HHH" no se cifraría con tres caracteres iguales.

Para cifrar y descifrar el mensaje se necesita la misma clave, de ahí el nombre de cifrado simétrico. Aunque descifrar mensajes es extremadamente difícil sin la clave, el hecho de que deba utilizarse la misma clave para cifrar y descifrar el mensaje conlleva un riesgo importante. Y es que si el canal de distribución utilizado para compartir la clave se ve comprometido, todo el sistema de mensajes seguros se rompe.

Uno de los algoritmos de cifrado asimétrico más famosos que existen es el desarrollado por Ron Rivest, Adi Shamir y Leonard Adleman, denominado RSA. Este algoritmo se basa en el problema de la factorización.

La imagen anterior muestra un ejemplo sencillo del funcionamiento de RSA. El texto plano (2) se eleva a la potencia de la clave pública (5): 2^5 = 32. A continuación, este valor se divide por un módulo público (14) y el resto (4) se envía como texto cifrado: 32 % 14 = 4.

En el otro extremo, se realiza la misma operación con la clave privada en lugar de la pública para producir el texto sin formato: (4^11) % 14 = 2. Este cálculo funciona porque las claves pública y privada se seleccionan de forma que sean inversas en el módulo elegido. 

Criptografía de curva elíptica

La criptografía asimétrica basada en números enteros utiliza problemas de factorización y logaritmos discretos para construir algoritmos de cifrado seguros. La criptografía de curva elíptica utiliza los mismos problemas con un pequeño giro.

captura de pantalla del algoritmo de cifrado

En lugar de utilizar números enteros para sus cálculos, la criptografía de curva elíptica utiliza puntos en una curva elíptica, como el que se muestra arriba. La clave privada sigue siendo un número aleatorio, pero la clave pública es un punto de la curva.

Sobre estas curvas se definen algunas operaciones matemáticas diferentes. Las dos más importantes son:

  • Suma de puntos (equivalente a la multiplicación de enteros)
  • Multiplicación de puntos (equivalente a la exponenciación de enteros)

 

En estas curvas es posible realizar cálculos equivalentes a las operaciones "fáciles" de los problemas de factorización y logaritmos discretos. Esto significa que se pueden adoptar los mismos algoritmos básicos para utilizarlos con curvas elípticas.

Pero, ¿por qué molestarse? La criptografía de curva elíptica es útil porque longitudes de clave más pequeñas proporcionan el mismo nivel de seguridad. Esto significa que la criptografía de curva elíptica utiliza menos almacenamiento, potencia de procesamiento y energía para proteger los datos al mismo nivel que un algoritmo equivalente basado en números enteros. Este ahorro puede ser importante para sistemas con recursos limitados como los dispositivos del Internet de las Cosas (IoT) o los teléfonos inteligentes.

Ventajas e inconvenientes del cifrado simétrico y asimétrico

Los algoritmos de cifrado simétrico y asimétrico están diseñados para realizar la misma tarea: proteger la confidencialidad de los datos. Sin embargo, lo hacen de formas muy distintas y cada uno tiene sus pros y sus contras:

  • Cifrado simétrico: La principal ventaja de la criptografía simétrica es su eficiencia. En general, los algoritmos de cifrado simétrico utilizan menos memoria y capacidad de procesamiento que la criptografía asimétrica.
  • Cifrado asimétrico: El cifrado asimétrico no requiere que las dos partes compartan de forma segura una clave secreta antes de enviar mensajes cifrados. Esto permite comunicarse de forma segura con cualquier persona siempre que se disponga de su clave privada.

 

Estas diferencias hacen que la criptografía simétrica y asimétrica se utilicen a menudo juntas, como en el protocolo TLS . El cifrado asimétrico se utiliza para intercambiar de forma segura una clave simétrica, y el cifrado simétrico se utiliza para la transferencia masiva de datos.

La computación cuántica y sus repercusiones en la criptografía

Al debatir los pros y los contras de los distintos algoritmos de cifrado, es importante tener en cuenta el crecimiento de la informática cuántica. Los ordenadores cuánticos tienen la capacidad de romper algunos de los algoritmos de cifrado asimétrico de uso común en la actualidad.

La razón es que algunos de los problemas "difíciles" utilizados en criptografía asimétrica no son "difíciles" para los ordenadores cuánticos. Mientras que la factorización es exponencialmente difícil para un ordenador clásico, sólo tiene una dificultad polinómica para un ordenador cuántico debido a la existencia del algoritmo de Shor.

Si tanto la multiplicación como la factorización tienen una complejidad polinómica, entonces es imposible construir un criptosistema utilizando este problema que sea a la vez utilizable y seguro. Lo mismo ocurre con el problema del logaritmo discreto. También se romperá cuando se disponga de ordenadores cuánticos lo suficientemente grandes.

Sin embargo, esto no significa que la informática cuántica vaya a ser el fin de la criptografía asimétrica. Se han descubierto nuevos problemas que se consideran "difíciles" también para los ordenadores cuánticos. Esto ha llevado al desarrollo de nuevos algoritmos de cifrado asimétrico post-cuánticos basados en estos nuevos problemas "difíciles".

Ready to get started? Find out how the Keyfactor platform can modernize your PKI, prevent certificate outages, and much more.