RC6: cifrado de bloques simétrico (finalista AES) — diseño y parámetros

RC6: diseño y parámetros del cifrado de bloques simétrico finalista del AES — tamaños de bloque, claves, rondas, multiplicación y optimización para rendimiento en CPUs de 32 bits.

Autor: Leandro Alegsa

En criptografía, RC6 es un cifrado de bloques de clave simétrica derivado de RC5. RC6 es un algoritmo parametrizado que permite variar el tamaño de bloque, el tamaño de la clave y el número de rondas para adaptarse a distintos requisitos de seguridad y rendimiento. RC es la abreviatura de "Rivest Cipher" o, alternativamente, "Ron's Code".

En 1997, el NIST anunció un concurso para elegir un sucesor del Estándar de Cifrado de Datos (DES), conocido después como Estándar de Cifrado Avanzado (AES). RC6 fue desarrollado a partir de RC5 específicamente para cumplir los requisitos del concurso y fue seleccionado como uno de los cinco finalistas del concurso Advanced Encryption Standard (AES), aunque finalmente no resultó elegido como estándar.

Diseño y objetivos

RC6 fue diseñado por Ron Rivest, Matt Robshaw, Ray Sidney y Yiqun Lisa Yin con los objetivos de:

  • Ser eficiente en software, especialmente en CPUs de 32 bits.
  • Ofrecer un diseño simple y fácil de analizar, basado en construcciones bien comprendidas (derivado de RC5).
  • Conseguir una alta difusión por ronda para reducir el número de rondas necesarias.

Para ello RC6 introduce una operación de multiplicación de enteros que aumenta la difusión interna y utiliza cuatro registros de trabajo (A, B, C y D) de tamaño w bits cada uno, de forma que el tamaño del bloque total es 4·w. El empleo de cuatro palabras permite implementar bloques de 128 bits usando operaciones nativas de 32 bits (w = 32), lo que optimiza la ejecución en arquitecturas de 32 bits.

Parámetros y notación

RC6 es altamente parametrizable. Las notaciones habituales describen tres valores: w/r/b donde

  • w = tamaño de palabra en bits (w = b/4).
  • r = número de rondas.
  • b = longitud de la clave en bytes en algunas notaciones; alternativamente a veces se especifica la longitud de clave en bits.

Configuraciones típicas propuestas durante el concurso AES incluyeron RC6-32/20/16, que corresponde a w = 32 (bloque de 128 bits), r = 20 rondas y clave de 16 bytes (128 bits). RC6 permite valores de b (tamaño de bloque) como 32 bits (uso experimental), 64 bits (sustituto de DES) y 128 bits (objetivo para AES). El número de rondas se puede fijar entre 0 y 255 y el tamaño de las claves puede ir de 0 a 2040 bits, según la especificación general.

Funcionamiento básico

El cifrado trabaja sobre un bloque dividido en cuatro palabras A, B, C y D de w bits. El esquema general de cada ronda incluye:

  • Operaciones aritméticas mod 2^w (sumas), xor bit a bit y rotaciones circulares.
  • Multiplicaciones enteras del tipo x · (2x + 1) que se usan para generar valores de rotación dependientes del dato (esto incrementa la no linealidad y la difusión).
  • Actualizaciones de las palabras mezcladas con subclaves extraídas del key schedule.

En términos generales, una ronda calcula dos valores auxiliares t y u a partir de B y D mediante la multiplicación y una rotación por lgw = log2(w). Esos valores condicionan rotaciones de A y C, que después se suman con subclaves. Finalmente, las cuatro palabras se rotan (rueda) para la siguiente ronda. Antes y después del bucle de rondas también se aplican sumas con subclaves. La dependencia de las rotaciones en los propios datos es una característica clave que hace más difícil el criptoanálisis lineal o diferencial clásico.

Expansión de clave (key schedule)

RC6 expande la clave original en un arreglo de subclaves S de tamaño 2r + 4 palabras mediante una mezcla iterativa que combina la clave (dividida en palabras) con constantes derivadas de números irracionales (similar a RC5). Para w = 32 las constantes típicas son P32 = 0xB7E15163 y Q32 = 0x9E3779B9, usadas para inicializar y mezclar el array S antes de mezclarlo con las palabras de la clave mediante rotaciones y sumas repetidas. El proceso de expansión está diseñado para dispersar rápidamente la influencia de cada bit de la clave sobre todas las subclaves.

Rendimiento y plataformas

RC6 está optimizado para procesadores de 32 bits (cuando w = 32) y su incorporación de multiplicaciones enteras hace que sea rápido en CPUs que ejecutan multiplicación en un único ciclo o pocos ciclos. En plataformas con instrucciones de multiplicación lentas o en hardware extremadamente restringido (microcontroladores muy simples), la multiplicación puede penalizar el rendimiento en comparación con esquemas que evitan multiplicaciones. En implementaciones modernas de software en ordenadores de propósito general, RC6 mostró buen rendimiento y competitividad entre los finalistas AES.

Seguridad y criptoanálisis

Durante y después del concurso AES se publicaron varios análisis criptoanalíticos contra versiones reducidas de RC6. A grandes rasgos:

  • No se conocen ataques prácticos que rompan la versión completa propuesta para el concurso (por ejemplo RC6-32/20/16) más rápido que la fuerza bruta en el caso de claves de longitud adecuada.
  • Se han encontrado ataques teóricos y resultados sobre versiones con menos rondas o bajo modelos con claves relacionadas, pero estos no comprometen la seguridad de la configuración completa recomendada.

Como con cualquier algoritmo, su seguridad práctica depende de parámetros apropiados (número de rondas, longitud de clave) y de evitar usos incorrectos del modo de operación o gestión de claves débiles.

Patentes, licencias y adopción

RC6 es un algoritmo propio y patentado (U.S. Patent 5,724,428 y U.S. Patent 5,835,600 atribuidas a RSA Security). El uso comercial puede requerir el pago de licencias y derechos en función de la jurisdicción y del producto. Estas consideraciones de propiedad intelectual, unidas a la selección de Rijndael como AES, limitaron su adopción generalizada. RC6 también fue presentado a los proyectos NESSIE y CRYPTREC, pero no llegó a una adopción amplia como estándar internacional.

Implementación y buenas prácticas

Al implementar RC6 conviene tener en cuenta:

  • Usar parámetros recomendados (por ejemplo w=32, r=20 y claves de 128, 192 o 256 bits) para lograr un balance entre seguridad y rendimiento.
  • Emplear modos de operación seguros (CBC con IV aleatorio y verificación, GCM, etc.) y mecanismos de integridad/autenticación para evitar ataques por manipulación de bloques cifrados.
  • Considerar la disponibilidad de patentes y restricciones legales antes de incluir RC6 en productos comerciales.

Resumen histórico

RC6 fue una propuesta sólida en el concurso AES, valorada por su diseño limpio y buen rendimiento en software. Aunque no fue elegido como estándar, su diseño aportó ideas (especialmente el uso de multiplicaciones dependientes de los datos para generar rotaciones) que contribuyeron al corpus general de diseños de cifrados de bloques. Para nuevos proyectos, la elección entre algoritmos debe basarse en requisitos técnicos, consideraciones de licencia y el estado actual del análisis criptográfico; hoy en día Rijndael/AES y otros algoritmos estandarizados y libres de patentes suelen ser las opciones preferidas para la mayoría de aplicaciones.

RC6 fue diseñado por Ron Rivest, Matt Robshaw, Ray Sidney y Yiqun Lisa Yin y, como se indicó, también se presentó a los proyectos NESSIE y CRYPTREC.

Preguntas y respuestas

P: ¿Qué es RC6?


R: RC6 es un cifrado por bloques de clave simétrica derivado de RC5. Es un algoritmo parametrizado con un tamaño de bloque, un tamaño de clave y un número de rondas variables.

P: ¿Quién diseñó RC6?


R: RC6 fue diseñado por Ron Rivest, Matt Robshaw, Ray Sidney y Yiqun Lisa Yin.

P: ¿Cuáles son los tamaños de bloque por defecto de RC5 y AES?


R: El tamaño de bloque por defecto de RC5 es de 64 bits, mientras que el de AES es de 128 bits.

P: ¿En qué se diferencia la estructura de RC6 de la de RC5?


R: La estructura de RC6 es muy similar a la de RC5, pero utiliza una operación de multiplicación extra que no está presente en este último, así como cuatro registros de trabajo de b/4 bits en lugar de dos registros de b/2 bits.

P: ¿Por qué se utilizan cuatro registros de trabajo en lugar de dos para construir la arquitectura AES utilizando sólo operaciones de 32 bits?


R: La multiplicación de enteros se utiliza para aumentar la difusión lograda por ronda, por lo que se necesitan menos rondas y se puede aumentar la velocidad. Se necesitan cuatro registros de trabajo porque se utilizan operaciones de 32 bits cuando se trata de bloques de 64 bits y operaciones de 64 bits cuando se trata de bloques de 128 bits.

P: ¿Hay que pagar algún tipo de licencia o canon por los productos que utilicen el algoritmo?



R: Sí, puesto que se trata de un algoritmo patentado (por RSA Security U.S. Patent 5,724,428 y U.S. Patent 5,835,600 ), es posible que se requieran licencias y pagos de derechos para cualquier producto que utilice el algoritmo.


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