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
© Copyright 2024