RC6 - Ing. Aldo Jiménez Arteaga

Criptografía – Criptografía de Clave Secreta
𝐢 = π‘š4 π‘š5 π‘š6 π‘š7 ,
RC6
2016
𝐷 = π‘š0 π‘š1 π‘š2 π‘š3
Las entradas que se consideran al algoritmo son:
RC6 es la evolución de RC5, diseñado para cumplir con los requisitos del concurso para
seleccionar al Algoritmo de Cifrado Estándar (AES). Fue diseñado por Ron Rivest, Matt
Robshaw, Ray Sidney y Yiqun Lisa Yin en 1998 como el candidato de RSA Laboratories para
el concurso AES. Al igual que RC5, RC6 utiliza una red Feistel y cifrado dependiente de los
datos y las subclaves de ronda. Trabaja con textos de 128 bits, claves de 128, 192 y 256 bits a
lo largo de 20 rondas (especificación AES).
Para operar, RC6 está parametrizado al igual que su antecesor RC5. Para determinar cómo
trabaja el algoritmo se designa como RC6-𝑀/π‘Ÿ/𝑏, donde 𝑀 es el tamaño de la palabra en
bits, π‘Ÿ es el número de rondas a realizar y 𝑏 denota la longitud de la clave de cifrado en bytes;
la versión para AES considera los valores 𝑀 = 32, π‘Ÿ = 20 y 𝑏 = 16, 24, 32.
Bloques de texto:
𝐴, 𝐡, 𝐢, 𝐷
Arreglo de subclaves:
𝑆 = 𝑆0 𝑆1 𝑆2 … 𝑆2π‘Ÿ+2 𝑆2π‘Ÿ+3
Recordando que se manejan palabras de 𝑀 bits a lo largo de π‘Ÿ rondas, una ronda de cifrado
se realiza mediante los siguientes pasos:
1.
𝐡 ← (𝐡 + 𝑆0 ) mod 2𝑀
2.
𝐷 ← (𝐷 + 𝑆1 ) mod 2𝑀
3.
En un ciclo que va desde 𝑖 = 1 hasta 𝑖 = π‘Ÿ
Descripción
3.1. 𝑑 ← ((𝐡 × (2𝐡 + 1)) mod 2𝑀 ) β‹˜ log 2 𝑀
Todas las variantes de RC6-𝑀/π‘Ÿ/𝑏 trabajan con cuatro palabras de 𝑀 bits de longitud. Las
operaciones incluyen sumas mod 2𝑀 , XOR, multiplicación mod 2𝑀 y desplazamientos
circulares
3.2. 𝑒 ← ((𝐷 × (2𝐷 + 1)) mod 2𝑀 ) β‹˜ log 2 𝑀
3.3. 𝐴 ← (((𝐴 βŠ• 𝑑) β‹˜ 𝑒) + 𝑆2𝑖 ) mod 2𝑀
3.4. 𝐢 ← (((𝐢 βŠ• 𝑒) β‹˜ 𝑑) + 𝑆2𝑖+1 ) mod 2𝑀
Cada ronda cifra la mitad del bloque de texto plano para intercambiar lugares y cifrar la otra
mitad en la siguiente ronda (un ciclo de red Feistel).
3.5.
3.6.
3.7.
3.8.
Planificación de claves
𝐴←𝐡
𝐡←𝐢
𝐢←𝐷
𝐷←𝐴
La planificación de claves en RC6 es prácticamente la misma que en RC5, con la única
diferencia que se generan más subclaves. Es decir, el usuario proporciona una clave de 𝑏
bytes, tal que 0 < 𝑏 < 255, y a partir de ella se generan 2π‘Ÿ + 4 claves (cada una de 𝑀
bits) que se almacenan en un arreglo 𝑆 de 2π‘Ÿ + 4 localidades. Dicho arreglo se utiliza en los
procesos de cifrado y descifrado.
4.
𝐴 ← (𝐴 + 𝑆2π‘Ÿ+2 ) mod 2𝑀
5.
𝐢 ← (𝐢 + 𝑆2π‘Ÿ+3 ) mod 2𝑀
Cifrado y descifrado
El texto resaltado en azul representa a la función Feistel 𝑓 definida en el algoritmo. El texto
cifrado reacomoda los bytes de acuerdo a la posición que se estableció al inicio del algoritmo:
RC6 trabaja con cuatro registros de 𝑀-bits 𝐴, 𝐡, 𝐢, 𝐷, los cuales contienen texto plano inicial
que proporciona el usuario para llevar a cabo el cifrado; y el texto cifrado se obtiene a la salida
del algoritmo. Para realizar el cifrado se requiere un acomodo de los bytes del texto a
procesar; para un texto plano π‘š = π‘š15 π‘š14 π‘š13 … π‘š1 π‘š0 , el acomodo es
𝐴 = π‘š12 π‘š13 π‘š14 π‘š15 ,
1
Ing. Aldo Jiménez Arteaga
𝐡 = π‘š8 π‘š9 π‘š10 π‘š11
𝐴 = 𝑐12 𝑐13 𝑐14 𝑐15 ,
𝐢 = 𝑐4 𝑐5 𝑐6 𝑐7 ,
𝐡 = 𝑐8 𝑐9 𝑐10 𝑐11
𝐷 = 𝑐0 𝑐1 𝑐2 𝑐3
Criptografía – Criptografía de Clave Secreta
A
B
log2 w
<<<
C
3.8. 𝐴 ← ((𝐴 βˆ’ 𝑆2𝑖 ) mod 2𝑀 β‹™ 𝑒) βŠ• 𝑑
D
log2 w
S0
<<<
f
S1
f
2016
4.
𝐷 ← (𝐷 βˆ’ 𝑆1 ) mod 2𝑀
5.
𝐡 ← (𝐡 βˆ’ 𝑆0 ) mod 2𝑀
El texto descifrado se reacomoda según los bytes de cada bloque al inicio del algoritmo.
<<<
<<<
A
S2i
S2i+1
S2r+2
S2r+3
A
B
C
B
-S2r+3
-S2i
-S2i+1
>>>
>>>
1.
𝐢 ← (𝐢 βˆ’ 𝑆2π‘Ÿ+3 ) mod 2𝑀
<<<
2.
𝐴 ← (𝐴 βˆ’ 𝑆2π‘Ÿ+2 ) mod 2𝑀
log2 w
3.
En un ciclo que va desde 𝑖 = π‘Ÿ hasta 𝑖 = 1
3.1. 𝐴 ← 𝐷
3.2. 𝐡 ← 𝐴
3.3. 𝐢 ← 𝐡
3.4. 𝐷 ← 𝐢
3.6. 𝑑 ← ((𝐡 × (2𝐡 + 1)) mod 2𝑀 ) β‹˜ log 2 𝑀
3.7. 𝐢 ← ((𝐢 βˆ’ 𝑆2𝑖+1 ) mod 2𝑀 β‹™ 𝑑) βŠ• 𝑒
2
Ing. Aldo Jiménez Arteaga
D
-S2r+2
D
Para la función de descifrado, se requiere invertir algunos pasos al igual que en RC5:
3.5. 𝑒 ← ((𝐷 × (2𝐷 + 1)) mod 2𝑀 ) β‹˜ log 2 𝑀
C
<<<
f
f
log2 w
-S0
A
B
-S1
C
D