RC5: Cifrado de bloques en criptografía — definición y funcionamiento

RC5: definición y funcionamiento del cifrado de bloques simétrico. Aprende sobre rotaciones dependientes de datos, tamaños de bloque/clave, rondas y consideraciones de seguridad.

Autor: Leandro Alegsa

En criptografía, el RC5 es un sencillo cifrado de bloques de clave simétrica. Diseñado por Ronald Rivest en 1994, el RC5 es un algoritmo parametrizado con un tamaño de bloque variable, un tamaño de clave variable y un número de rondas variable. "RC" significa "Rivest Cipher", o alternativamente, "Ron's Code".

Para ofrecer distintos niveles de seguridad y eficiencia, RC5 tiene un tamaño de bloque variable (32, 64 o 128 bits), un tamaño de clave variable (de 0 a 2040 bits) y un número de rondas variable (de 0 a 255). Los parámetros sugeridos originalmente eran un tamaño de bloque de 64 bits, una clave de 128 bits y 12 rondas.

Una característica clave de RC5 es el uso de rotaciones dependientes de los datos; uno de los objetivos de RC5 era estudiar y evaluar las operaciones de cifrado de bloques como primitiva criptográfica. El RC5 también consta de una serie de adiciones modulares y de OR eXclusivos (Xor). La estructura general del algoritmo es una red tipo Feistel. Las rutinas de cifrado y descifrado pueden especificarse en unas pocas líneas de código. La programación de la clave, sin embargo, es más compleja, ya que expande la clave utilizando una función esencialmente unidireccional con las expansiones binarias de e y la proporción áurea como fuentes de "números de nada en la manga". La simplicidad del algoritmo, junto con la novedad de las rotaciones dependientes de los datos, ha convertido al RC5 en un atractivo objeto de estudio para los criptoanalistas.

Parámetros y notación

  • w: tamaño de palabra en bits (16, 32 o 64). El tamaño de bloque es 2w (dos palabras).
  • r: número de rondas (0–255).
  • b: longitud de la clave en bytes (0–255). A menudo se expresa en bits (por ejemplo, 128 bits = 16 bytes).

La notación habitual es RC5-w/r/b. Por ejemplo, RC5-32/12/16 indica palabras de 32 bits, 12 rondas y una clave de 16 bytes (128 bits).

Operaciones básicas

RC5 combina tres operaciones elementales que se ejecutan en palabras de w bits:

  • Suma modular (mod 2^w).
  • XOR bit a bit.
  • Rotaciones circulares (<<< o >>>), donde el número de posiciones a rotar depende de los datos (valor de otra palabra).

Estas operaciones son rápidas en procesadores modernos y permiten una implementación muy compacta en software y hardware.

Cifrado y descifrado (pseudocódigo)

El bloque se trata como dos palabras w-bit: A y B. Antes de las rondas A y B se mezclan con dos subclaves iniciales de la tabla S.

Cifrado (esquema resumido):

  • A = A + S[0]
  • B = B + S[1]
  • Para i = 1 hasta r:
    • A = ((A XOR B) <<< (B mod w)) + S[2*i]
    • B = ((B XOR A) <<< (A mod w)) + S[2*i + 1]

Descifrado: se invierten las operaciones en orden contrario usando rotaciones hacia la derecha (>>>), restas modulares y las mismas subclaves S.

Programación de la clave (key schedule)

La expansión de la clave en RC5 crea una tabla de subclaves S de tamaño t = 2(r+1) palabras w-bit. El proceso general es:

  1. Convertir la clave (b bytes) en un arreglo de c = ceil(b / (w/8)) palabras L[0..c-1] (little-endian).
  2. Inicializar S[0..t-1] con constantes derivadas de e y la proporción áurea (valores impares y "bien repartidos"). Para w = 32, por ejemplo:
    • Pw = 0xB7E15163
    • Qw = 0x9E3779B9
    • S[0] = Pw; S[i] = S[i-1] + Qw para i = 1..t-1
  3. Mezclar S y L mediante un bucle que realiza sumas y rotaciones: por lo general se ejecutan 3 * max(c, t) iteraciones para que la difusión sea adecuada.

Esta rutina permite que una clave relativamente corta se expanda y mezcle con buenos niveles de difusión dentro de S.

Rendimiento

  • RC5 es muy eficiente en software cuando la rotación y las operaciones en enteros son rápidas.
  • La implementación es compacta: las rutinas de cifrado/descifrado son cortas; la parte más costosa es la programación de la clave (expansión S), que se hace una vez por clave.
  • La flexibilidad de parámetros permite adaptar RC5 a diferentes plataformas y requisitos de rendimiento/seguridad.

Seguridad y análisis criptográfico

  • RC5 ha sido ampliamente estudiado por la comunidad criptográfica. Muchas técnicas de criptoanálisis han sido aplicadas con éxito a versiones reducidas en número de rondas.
  • Las versiones con parámetros recomendados (por ejemplo RC5-32/12/16) siguen considerándose resistentes frente a ataques prácticos conocidos en la práctica general, aunque las versiones con pocas rondas o claves muy cortas son vulnerables.
  • La seguridad depende claramente de la elección de w, r y b: incrementar r y/o el tamaño de la clave mejora la resistencia, a costa de mayor coste computacional.
  • Como con cualquier algoritmo, la vigilancia y el análisis continuos son necesarios: nuevos ataques pueden reducir la seguridad efectiva de configuraciones concretas.

Usos y variantes

  • RC5 se ha utilizado en bibliotecas de cifrado y aplicaciones donde se valoraba la simplicidad y la velocidad.
  • RC6 fue derivado de RC5 y llegó a ser propuesto como candidato en la competencia del AES; incorpora modificaciones para mejorar paralelismo y seguridad en algunos escenarios.
  • La parametrización hace que RC5 sea útil en entornos con restricciones (por ejemplo, dispositivos embebidos con palabras pequeñas) o donde se desea ajustar el equilibrio entre seguridad y rendimiento.

Conclusión

RC5 es un diseño simple, flexible y eficiente que introdujo la idea de rotaciones dependientes de los datos como mecanismo central. Su simplicidad lo convirtió en un objeto de estudio fructífero para la comunidad criptográfica. Al elegir RC5 en una aplicación concreta hay que seleccionar parámetros (w, r, b) adecuados y tener en cuenta el análisis criptográfico más reciente; para muchos usos contemporáneos, se suelen preferir algoritmos estandarizados y ampliamente revisados, pero RC5 sigue siendo relevante como ejemplo pedagógico y como opción práctica en ciertos entornos.

Criptoanálisis

El RC5 de 12 rondas (con bloques de 64 bits) es susceptible de un ataque diferencial utilizando 2 44textos planos elegidos. Se sugiere que 18-20 rondas son suficiente protección.

RSA Security, que tiene la patente del algoritmo, ofrecía una serie de premios de 10.000 dólares por descifrar textos cifrados con RC5, pero estos concursos se han interrumpido en mayo de 2007. Varios de estos problemas de desafío se han abordado utilizando la computación distribuida, organizada por Distributed.net. Distributed.net ha forzado mensajes RC5 cifrados con claves de 56 y 64 bits, y ahora está trabajando en descifrar una clave de 72 bits. Al ritmo actual (a 12 de noviembre de 2008), se tardará aproximadamente 1.000 años en probar todas las claves posibles para completar el proyecto.

Preguntas y respuestas

P: ¿Qué es RC5?


R: RC5 es un sencillo cifrado por bloques de clave simétrica diseñado por Ronald Rivest en 1994.

P: ¿Qué significa "RC"?


R: "RC" significa "Cifrado de Rivest", o alternativamente, "Código de Ron".

P: ¿Cuáles son los parámetros del RC5?


R: Los parámetros de RC5 incluyen un tamaño de bloque variable (32, 64 o 128 bits), un tamaño de clave variable (de 0 a 2040 bits) y un número variable de rondas (de 0 a 255). La opción original sugerida era un tamaño de bloque de 64 bits, una clave de 128 bits y 12 rondas.

P: ¿Cuál es la estructura general del algoritmo?


R: La estructura general del algoritmo es una red tipo Feistel.

P: ¿Es complejo el programa de claves?


R: El programa de claves es más complejo, ya que expande la clave utilizando una función esencialmente unidireccional con expansiones binarias como fuentes de números.

P: ¿Por qué el RC5 ha resultado atractivo para los criptoanalistas?


R: La simplicidad del algoritmo junto con la novedad de las rotaciones dependientes de los datos ha hecho que RC5 sea un tema atractivo de estudio para los criptoanalistas.


Buscar dentro de la enciclopedia
AlegsaOnline.com - 2020 / 2025 - License CC3