Fundamentos de Criptografía: Tipos de Cifrado y Principios de Seguridad

Principios Fundamentales de la Seguridad en Criptografía

La seguridad en la criptografía se sustenta en varios pilares esenciales para proteger la información:

  • Confidencialidad, Privacidad o Secreto: Garantiza que la información solo esté a disposición de las personas autorizadas. Este principio abarca desde la seguridad física hasta el uso de algoritmos matemáticos que hacen que la información sea ilegible para terceros no autorizados.
  • Integridad de los Datos: Es el servicio que impide la alteración no autorizada de los datos. Incluye la necesidad de detectar cualquier manipulación, como la inserción, eliminación o sustitución de información.
  • Autenticación: Servicio asociado a la identificación que verifica la identidad tanto del emisor y del receptor como de la propia información transmitida.
  • No Repudio: Servicio que previene que una entidad pueda negar haber realizado una acción. Se distingue entre el no repudio del emisor (no puede negar haber enviado el mensaje) y el no repudio del receptor (no puede negar haber recibido el mensaje).

Tipos de Cifrado

Cifrado por Flujo

Un cifrador de flujo consiste en el uso de un algoritmo que convierte el texto claro en texto cifrado, trabajando bit a bit. En la entrada, se utiliza un flujo de datos y se genera un flujo de clave, conocido como secuencia cifrante. La salida es el resultado de una operación XOR bit a bit entre ambos flujos. Ejemplos clásicos de esto son el cifrado de Vernam y el One-Time Pad.

Dentro de los algoritmos modernos para el cifrado por flujo destacan A5 y RC4.

Sistemas que utilizan RC4

El algoritmo RC4 ha sido implementado en numerosos sistemas y protocolos, entre ellos:

  • WPA (Wi-Fi Protected Access)
  • BitTorrent
  • Microsoft Point-to-Point Encryption
  • SSL (Secure Socket Layer) y su sucesor TLS
  • SSH (Secure Shell)
  • Skype
  • El algoritmo WEP (Wired Equivalent Privacy), el sistema de cifrado original del estándar IEEE 802.11 para redes inalámbricas, está basado en RC4. Presenta dos variantes: una que usa una clave de 64 bits (40 bits de clave más 24 bits de vector de iniciación) y otra que usa una clave de 128 bits.

Cifrado por Bloques

En el cifrado por bloques, el texto en claro se divide en secuencias de bits o bloques de tamaño fijo (generalmente entre 64 y 256 bits) para ser cifrado. Los cifradores de bloque operan con una clave simétrica sobre estos grupos de bits.

Estructura de un Cifrador por Bloques

  • Transformación inicial: Aleatoriza los datos de entrada y puede añadirles complejidad.
  • Vueltas de cifrado (Rondas): Es una función no lineal que se aplica sobre los datos y la clave, realizando una o varias transformaciones en cada ronda.
  • Transformación final: Sirve para que las operaciones de cifrado y descifrado sean simétricas.
  • Algoritmo de expansión de clave: Convierte la clave proporcionada por el usuario en un conjunto de subclaves para cada ronda. Este es un algoritmo unidireccional; si se conoce una subclave, no debería ser posible deducir las demás.

Propiedades Deseables

  • Confusión: Un pequeño cambio en la clave debería producir un cambio de aproximadamente el 50% en el texto cifrado. Esto asegura que una búsqueda exhaustiva de claves no reciba ninguna señal que indique que se está acercando a la clave correcta. Se obtiene mediante las cajas S (S-Boxes).
  • Difusión: Un pequeño cambio en el texto en claro debería producir un cambio de aproximadamente el 50% en el texto cifrado resultante. Se obtiene mediante las cajas P (P-Boxes) o tablas de permutación.
  • Completitud: Cada bit del texto cifrado debe depender de cada bit de la clave, impidiendo que un atacante pueda obtener partes válidas de la clave mediante ataques de tipo «divide y vencerás».
  • Uso de rondas para aumentar la confusión y la difusión.
  • Uso de funciones XOR para la mezcla eficiente entre claves y mensajes.
  • Expansión de claves si el tamaño de la clave y el del mensaje son diferentes.

Relaciones entre Parámetros, Seguridad y Rendimiento

  • A mayor tamaño de bloque, mayor seguridad, pero menor rapidez.
  • A mayor tamaño de clave, mayor seguridad, pero menor rapidez.
  • A mayor número de rondas, mayor seguridad.
  • A mayor complejidad de las subclaves, mayor dificultad en el criptoanálisis.
  • A mayor complejidad de la función de ronda, mayor dificultad en el criptoanálisis.

Modos de Operación

Los modos de operación definen cómo aplicar repetidamente un cifrado por bloques para procesar cantidades de datos superiores al tamaño de un bloque. Consideremos que el alfabeto del bloque a cifrar es Σ, la longitud del bloque es n, el algoritmo de cifrado es Ek, el algoritmo de descifrado es Dk, cada bloque de texto plano es mj y cada bloque de texto cifrado es Cj.

a) Modo ECB (Electronic Codebook)

El texto plano se descompone en bloques de longitud n, añadiendo relleno (padding) si es necesario para que la división sea exacta. En este modo, cada bloque es cifrado de forma independiente al resto. El descifrado se realiza aplicando el algoritmo inverso a cada bloque del criptograma. Su principal debilidad es que bloques de texto plano idénticos producen bloques de texto cifrado idénticos, revelando patrones.

b) Modo CBC (Cipher Block Chaining)

En este modo, la entrada al algoritmo de cifrado es el resultado de una operación XOR entre el bloque de texto plano actual y el bloque de texto cifrado precedente. Se emplea la misma clave en cada bloque. Para descifrar, cada bloque cifrado es procesado por el algoritmo de descifrado, y el resultado es sometido a una operación XOR con el bloque cifrado precedente para obtener el bloque de texto plano. Se utiliza un vector de inicialización (IV) aleatorio para el primer bloque.

c) Modo CTR (Counter Mode)

Mientras que ECB y CBC son modos basados en bloques, CTR simula un cifrado de flujo. Se utiliza un cifrado de bloque para producir un flujo pseudoaleatorio (keystream), que se combina con el texto plano mediante XOR para generar el texto cifrado. Para generar el keystream, se cifra un contador combinado con un número aleatorio (nonce) mediante el modo ECB, y el contador se va incrementando para cada bloque. El valor del contador puede ser público, pero es necesario que el valor combinado de nonce y contador sea conocido por ambos extremos de la comunicación.

d) Modo CFB (Cipher Feedback)

La función de cifrado no se utiliza directamente para cifrar los bloques de texto plano, sino para generar una secuencia de bloques de clave (keystream). El texto plano se cifra aplicándole una operación XOR con el bloque de clave generado. Para producir el keystream, se cifra el último bloque de texto cifrado, a diferencia del modo OFB. En el modo CFB, el cifrado no puede ser paralelizado, pero el descifrado sí. A menudo, es preferible usar el modo CTR.

e) Modo OFB (Output Feedback)

Al igual que CFB, utiliza un bloque de cifrado de longitud n y un vector de inicialización (IV). En este caso, el keystream se genera cifrando el bloque anterior del propio keystream para dar lugar al siguiente. El primer bloque del keystream se crea cifrando el vector de inicialización (IV).

Cifrado Múltiple

Consiste en aplicar un algoritmo de cifrado varias veces. Existen implementaciones en cascada, como la doble y la triple encriptación (por ejemplo, 3DES). En estas configuraciones, las claves pueden ser iguales o diferentes, y los algoritmos pueden ser los mismos, distintos o incluso inversos.

Cifradores de Producto y Cifradores de Feistel

Un cifrador de producto es aquel que combina dos o más transformaciones de forma que el cifrado resultante es más seguro que sus componentes individuales.

Un cifrador de Feistel es un tipo de cifrador que itera secuencialmente una serie de funciones. Cada iteración se denomina ronda (se requieren al menos tres, y generalmente un número par). En cada ronda se utilizan redes de sustitución-permutación y se emplea una subclave derivada de la clave general del cifrador. Estos cifradores se parametrizan según el número de rondas (r), el tamaño del bloque (n) y el tamaño (k) de la clave (K), de la cual se derivan las r subclaves (Ki).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.