Algoritmo de cifrado de datos internacional simplificado (IDEA)

En criptografía , los cifrados de bloque son muy importantes en el diseño de muchos algoritmos criptográficos y se utilizan ampliamente para cifrar la mayor parte de los datos en fragmentos. Por fragmentos, significa que el cifrado toma un tamaño fijo del texto sin formato en el proceso de cifrado y genera un texto cifrado de tamaño fijo utilizando una clave de longitud fija. La fuerza de un algoritmo está determinada por la longitud de su clave. 

El algoritmo de cifrado de datos internacional simplificado (IDEA) es un cifrado de bloque de clave simétrica que: 
 

  • utiliza un texto sin formato de longitud fija de 16 bits y
  • los cifra en 4 fragmentos de 4 bits cada uno
  • para producir texto cifrado de 16 bits .
  • La longitud de la clave utilizada es de 32 bits .
  • La clave también se divide en 8 bloques de 4 bits cada uno.

Este algoritmo involucra una serie de 4 rondas completas idénticas y 1 media ronda. Cada ronda completa implica una serie de 14 pasos que incluyen operaciones como: 
 

  • XOR bit a bit
  • módulo de adición (2^4)
  • Módulo de multiplicación  (2^4)   +1

Después de 4 rondas completas, la «media ronda» final consta de solo los primeros 4 de los 14 pasos utilizados anteriormente en las rondas completas. Para realizar estas rondas, cada notación binaria debe convertirse a su notación decimal equivalente, realizar la operación y el resultado obtenido debe volver a convertirse a la representación binaria para el resultado final de ese paso en particular. 

Programación de claves: 6 subclaves de 4 bits de las 8 subclaves se usan en cada ronda completa, mientras que 4 se usan en la mitad de la ronda. Entonces, 4.5 rondas requieren 28 subclaves. La clave dada, ‘K’, proporciona directamente las primeras 8 subclaves. Al rotar la clave principal dejada por 6 bits entre cada grupo de 8, se crean más grupos de 8 subclaves, lo que implica menos de una rotación por ronda para la clave (3 rotaciones). 

  K1 K2 K3 K4 K5 K6
La ronda 1 1101 1100 0110 1111 0011 1111
La ronda 2 0101 1001 * 0001 1011 1100 1111
Ronda 3 1101 0110 0111 0111 * 1111 0011
Ronda 4 1111 0101 1001 1101 1100 0110 *
Ronda 4.5 1111 1101 0110 0111    

* denota un cambio de bits 

Notaciones utilizadas en los 14 pasos: 

Símbolo Operación
* Módulo de multiplicación  (2^4)   +1
+ módulo de adición (2^4)
^ XOR bit a bit

El texto sin formato de 16 bits se puede representar como X1 || X2 || X3 || X4 , cada uno de 4 bits de tamaño. La clave de 32 bits se divide en 8 subclaves denominadas K1 || K2 || K3 || K4 || K5 || K6 || K7 || K8, nuevamente de tamaño 4 bits cada uno. Cada ronda de 14 pasos utiliza las tres operaciones algebraicas: Módulo de suma (2^4), Módulo de multiplicación (2^4)+1 y Bitwise XOR. Los pasos involucrados son los siguientes: 
 

  1. X1 * K1
  2. X2 + K2
  3. X3 + K3
  4. X4 * K4
  5. Paso 1 ^ Paso 3
  6. Paso 2 ^ Paso 4
  7. Paso 5 * K5
  8. Paso 6 + Paso 7
  9. Paso 8 * K6
  10. Paso 7 + Paso 9
  11. Paso 1 ^ Paso 9
  12. Paso 3 ^ Paso 9
  13. Paso 2 ^ Paso 10
  14. Paso 4 ^ Paso 10

La entrada a la siguiente ronda es el Paso 11 || Paso 13 || Paso 12 || Paso 14, que se convierte en X1 || X2 || X3 || X4. Este intercambio entre 12 y 13 tiene lugar después de cada ronda completa, excepto la última ronda completa (cuarta ronda), donde la entrada a la media ronda final es el Paso 11 || Paso 12 || Paso 13 || Paso 14. 

Después de la última vuelta completa, la media vuelta es la siguiente: 
 

  1. X1 * K1
  2. X2 + K2
  3. X3 + K3
  4. X4 * K4

El resultado final se obtiene concatenando los bloques. 

Ejemplo: 
 

Key: 1101 1100 0110 1111 0011 1111 0101 1001 
Plaintext: 1001 1100 1010 1100
Ciphertext: 1011 1011 0100 1011

Explicación: 
La explicación es solo para la primera ronda completa (el resto se puede implementar de manera similar) y la última media ronda. 
 

  • La ronda 1: 
    • Del texto sin formato: X1 – 1001, X2 – 1100, X3 – 1010, X4 – 1100 
       
    • De la tabla anterior: K1 – 1101, K2 – 1100, K3 – 0110, K4 – 1111, K5 – 0011, K6 – 1111 
       
    •  
(1001(9) * 1101(13))(mod 17) = 1111(15)
(1100(12) + 1100(12))(mod 16) = 1000(8)
(1010(10) + 0110(6))(mod 16) = 0000(0)
(1100(12) * 1111(15))(mod 17) = 1010(10)
(1111(15) ^ 0000(0)) = 1111(15)
(1000(8) ^ 1010(10)) = 0010(2)
(1111(15) * 0011(3))(mod 17) = 1011(11)
(0010(2) + 1011(11))(mod 16) = 1101(13)
(1101(13) * 1111(15))(mod 17) = 1000(8)
(1011(11) + 1000(8))(mod 16) = 0011(3)
(1000(8) ^ 1111(15)) = 0111(7)
(1000(8) ^ 0000(0)) = 1000(8)
(0011(3) ^ 1000(8)) = 1011(11)
(0011(3) ^ 1010(10)) = 1001(9)
  •  
  • Salida de la ronda 1 : 0111 1011 1000 1001 (los resultados de los pasos 12 y 13 se intercambian)
  • La ronda 2: 
    • De la salida de la Ronda 1: X1 – 0111, X2 – 1011, X3 – 1000, X4 – 1001 
       
    • De la tabla anterior: K1 – 0101, K2 – 1001, K3 – 0001, K4 – 1011, K5 – 1100, K6 – 1111 
       
    • Salida de la ronda 2 : 0110 0110 1110 1100 (los resultados de los pasos 12 y 13 se intercambian)
  • Ronda 3: 
    • Salida de la Ronda 2: X1 – 0110, X2 – 0110, X3 – 1110, X4 – 1100 
       
    • De la tabla anterior: K1 – 1101, K2 – 0110, K3 – 0111, K4 – 0111, K5 – 1111, K6 – 0011 
       
    • Salida de la ronda 3 : 0100 1110 1011 0010 (los resultados de los pasos 12 y 13 se intercambian)
  • Ronda 4: 
    • Salida de la Ronda 3: X1 – 0100, X2 – 1110, X3 – 1011, X4 – 0010 
       
    • De la tabla anterior: K1 – 1111, K2 – 0101, K3 – 1001, K4 – 1101, K5 – 1100, K6 – 0110 
       
    • Salida de la ronda 4 : 0011 1110 1110 0100 (los resultados de los pasos 12 y 13 se intercambian)
  • Ronda 4.5: 
    • Salida de la Ronda 4: X1 – 0011, X2 – 1110, X3 – 1110, X4 – 0100 
       
    • De la tabla anterior: K1 – 1111, K2 – 1101, K3 – 0110, K4 – 0111 
       
    • Resultado de la ronda 4.5 : 1011 1011 0100 1011 (los resultados de los pasos 2 y 3 no se intercambian)
    •  

(0011(3) * 1111(15))(mod 17) = 1011(11)
(1110(14) + 1101(13))(mod 16) = 1011(11)
(1110(14) + 0110(6))(mod 16) = 0100(4)
(0100(4) * 0111(7))(mod 17) = 1011(11) 
  •  
  • El texto cifrado final es 1011 1011 0100 1011

NOTA: Para cada ronda, excepto la transformación final, se produce un intercambio y la entrada pasa a la siguiente ronda. 

 

Publicación traducida automáticamente

Artículo escrito por Vidit_Gupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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