Criptografía : Algoritmos de cifrado de clave simétrica

Escrito por Sergio De Luz
Redes

¿Qué significa cifrar? Aplicar un algoritmo de cifrado determinado junto con una clave, a una determinada información que se quiere transmitir confidencialmente. Dentro del cifrado digital encontramos dos tipos de criptografía: simétrica y asimétrica. En este artículo hablaremos sobre la Criptografía de clave simétrica

El cifrado mediante clave simétrica significa que dos o más usuarios, tienen una única clave secreta, esta clave será la que cifrará y descifrará la información transmitida a través del canal inseguro. Es decir, la clave secreta la deben tener los dos usuarios, y con dicha clave, el usuario A cifrará la información, la mandará a través del canal inseguro, y a continuación el usuario B descifrará esa información con la MISMA clave que ha usado el usuario A.

Para que un algoritmo de clave simétrica sea fiable debe cumplir:

  • Una vez que el mensaje es cifrado, no se puede obtener la clave de cifrado/descifrado ni tampoco el texto en claro.
  • Si conocemos el texto en claro y el cifrado, se debe tardar más y gastar más dinero en obtener la clave, que el posible valor derivado de la información sustraída (texto en claro).

Debemos tener en cuenta que los algoritmos criptográficos son públicos, por lo que su fortaleza debe depender de su complejidad interna, y de la longitud de la clave empleada para evitar los ataques de fuerza bruta.

La seguridad en clave simétrica reside en la propia clave secreta, y por tanto el principal problema es la distribución de esta clave a los distintos usuarios para cifrar y descifrar la información. La misión del emisor y receptor es mantener la clave en secreto. Si cae en manos equivocadas ya no podríamos considerar que la comunicación es segura y deberíamos generar una nueva clave.

Otro problema reside en que las claves secretas a guardar es proporcional al número de canales seguros que deseamos mantener. Esto no es un problema en sí, pero debemos administrar bien las llaves para no equivocarnos. Este problema no se va a presentar en los algoritmos asimétricos porque cada usuario tiene una pareja de claves, una pública y la otra privada, independientemente del número de canales seguros que queramos establecer. Únicamente debe proteger la clave privada.

La principal ventaja de los algoritmos simétricos es la velocidad de los algoritmos, y son muy usados para el cifrado de grandes cantidades de datos. VeraCrypt por ejemplo, usa algoritmos simétricos para cifrar toda la información.

Si alguien se pregunta que cómo podemos transmitir por un medio inseguro la clave simétrica, la respuesta es que podemos crear unas claves asimétricas y así transmitir la información. Es lo que se hace en el cliente-servidor OpenVPN.

Os voy a presentar algunos algoritmos de clave simétrica, algunos ya no son seguros pero vamos a ver por qué.

DES (Data Encryption Standard)

DES es un algoritmo de cifrado escogido como un estándar FIPS en los Estados Unidos en 1976, y cuyo uso se ha propagado ampliamente por todo el mundo. Actualmente DES se considera un algoritmo inseguro, y no debe utilizarse.

DES es un algoritmo de cifrado por bloques, donde se toma un texto en claro de longitud fija de bits y se transforma mediante una serie de operaciones en otro texto cifrado de la misma longitud. El tamaño del bloque de DES es de 64 bits, y la longitud de clave también es de 64 bits, aunque en realidad solo son 56 bits los que pertenecen a la clave ya que los otros 8 bits son de comprobación de paridad, y se descartan.

Actualmente este algoritmo está completamente roto, y no se recomienda su uso.

Ventajas:

  • Es uno de los sistemas más empleados y extendidos, por tanto es de los más probados, pero no es seguro.
  • Implementación sencilla e implementación rápida.

Inconvenientes:

  • No se permite una clave de longitud variable, es decir, no se puede aumentar para tener una mayor seguridad.
  • Es vulnerable al criptoanálisis diferencial, aunque solo es un ataque teórico.
  • La longitud de clave de 56 bits es demasiado corta, y por tanto vulnerable. Actualmente DES ya no es un estándar, debido a que en 1999 fue roto.

3DES (Triple Data Encryption Standard)

Se basa en aplicar el algoritmo DES tres veces, dependiendo de las claves que utilicemos, puede tener una longitud de clave de 168 bits (útiles) si las tres claves son diferentes, o de 112 bits si únicamente utilizamos dos claves diferentes.

Existe una variante del 3DES, conocida como DES-EDE3, con tres claves diferentes y una longitud de 192bits, consiguiendo un sistema mucho más robusto. El cifrado por bloques sigue siendo de 64 bits, como el DES original.

El Triple DES está desapareciendo lentamente, siendo reemplazado por el algoritmo AES, pero aún se sigue utilizando sobre todo en VPN de tipo IPsec.

RC5

Este algoritmo también cifra por bloques, tiene un tamaño variable de bloques, pudiendo ser de 32, 64 o 128 bits. Permite diferentes longitudes de clave (hasta 2040 bits), y un número variable de iteraciones de hasta 255 (la seguridad del cifrado aumenta exponencialmente cuanto mayor número de iteraciones).

IDEA (International Data Encryption Algorithm)

Aplica una clave de 128 bits sin paridad a bloques de datos de 64 bits, y se usa tanto para cifrar como para descifrar. La seguridad de este algoritmo deriva del intercalado de operaciones de distintos grupos, adición y multiplicación modular, y operadores XOR bit a bit.

Este algoritmo es mucho más robusto que DES, según numerosos expertos criptográficos, IDEA es el mejor algoritmo de cifrado de datos existente en la actualidad ya que existen 2¹²⁸ claves privadas que probar mediante el ataque de fuerza bruta.

AES (Advanced Encryption Standard)

Este algoritmo es el más conocido entre los usuarios de routers, ya que WPA opera con AES como método de cifrado. Este cifrado puede implementar tanto en sistemas hardware como en software. El sistema criptográfico AES opera con bloques de tamaño fijo de 128 bits y claves de longitudes variable, hay AES de 128bits, de 192 bits y de 256 bits.

El resultado intermedio del cifrado constituye una matriz de bytes de cuatro filas por cuatro columnas. A esta matriz se le vuelve a aplicar una serie de bucles de cifrado basado en operaciones matemáticas (sustituciones no lineales de bytes, desplazamiento de filas de la matriz, combinaciones de las columnas mediante multiplicaciones lógicas y sumas XOR en base a claves intermedias).

Seguridad de AES:

AES tiene 10 rondas para llaves de 128 bits, 12 rondas para llaves de 192 bits y 14 rondas para llaves de 256 bits. En el año 2006, los mejores ataques conocidos fueron el 7 rondas para claves de 128 bits, 8 rondas para llaves de 192 bits, y 9 rondas para claves de 256 bits. Algunos criptógrafos muestran preocupación sobre la seguridad del AES. Ellos creen que el margen entre el número de rondas especificado en el cifrador y los mejores ataques conocidos es muy pequeño.

Otra preocupación es la estructura de AES. A diferencia de la mayoría de cifradores de bloques, AES tiene una descripción matemática muy ordenada. Recordemos que AES es usado en los cifrados wireless de los routers de los hogares como método de cifrado (no clave) ya que en los routers podemos usar una clave estática o una dinámica mediante un servidor Radius. AES también es usado por OpenSSL y por supuesto en OpenVPN (ya que usa las librerías OpenSSL) e IPSec.

La forma en que se gestionan estos bloques de mensaje, se denomina “modo de cifrado”.

Por ejemplo, existe el AES-CBC, AES-CFB y AES-OFB, os voy a explicar qué es exactamente esto que aparece en las librerías criptográficas como OpenSSL y LibreSSL.

  • CBC (Cipher-block chaining): a cada bloque de texto plano se le aplica la operación XOR con el bloque cifrado anterior antes de ser cifrado. De esta forma, cada bloque de texto cifrado epende de todo el texto en claro procesado hasta este punto. Como no se dispone de un texto cifrado con el que combinar el primer bloque, se usa un vector de inicialización IV (número aleatorio que puede ser públicamente conocido). La desventaja es que el cifrado es de forma secuencial y por tanto no puede ser paralelizado.
  • OFB (Output feedback): se generan bloques de flujo de claves, que son operados con XOR y el texto en claro para obtener el texto cifrado. Al igual que con otras unidades de flujo de cifrado, al intercambiar un bit en el texto cifrado produce texto cifrado con un bit intercambiado en el texto plano en la misma ubicación. También se usa un vector de inicialización que debe ser único.
  • CFB (Cipher feedback): se hace igual que en OFB, pero para producir el keystream cifra el último bloque de cifrado, en lugar del último bloque del keystream como hace OFB. Un bit erróneo en el texto cifrado genera 1+64/m bloques de texto claro incorrectos (siendo m la longitud del flujo en el que se divide el bloque). El cifrado no puede ser paralelizado, sin embargo el descifrado sí.

Si queréis saber más sobre los modos de operación del cifrado por bloques, podéis leer este PDF.

Hasta aquí hemos llegado con los algoritmos de cifrado de clave simétrica. Ya sabéis sus ventajas e inconvenientes, los tipos de cifrados que hay y los modos de cifrar la información.


Continúa leyendo

Últimos análisis

Valoración RZ
9
Valoración RZ
9
Valoración RZ
10
Valoración RZ
9
Valoración RZ
10
Valoración RZ
7
Valoración RZ
9
Valoración RZ
10
Valoración RZ
8
Valoración RZ
10