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
- Módulo de multiplicación +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 +1 |
+ | módulo de adición |
^ | 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:
- X1 * K1
- X2 + K2
- X3 + K3
- X4 * K4
- Paso 1 ^ Paso 3
- Paso 2 ^ Paso 4
- Paso 5 * K5
- Paso 6 + Paso 7
- Paso 8 * K6
- Paso 7 + Paso 9
- Paso 1 ^ Paso 9
- Paso 3 ^ Paso 9
- Paso 2 ^ Paso 10
- 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:
- X1 * K1
- X2 + K2
- X3 + K3
- 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
- Del texto sin formato: X1 – 1001, X2 – 1100, X3 – 1010, X4 – 1100
(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)
- De la salida de la Ronda 1: X1 – 0111, X2 – 1011, X3 – 1000, X4 – 1001
- 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)
- Salida de la Ronda 2: X1 – 0110, X2 – 0110, X3 – 1110, X4 – 1100
- 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)
- Salida de la Ronda 3: X1 – 0100, X2 – 1110, X3 – 1011, X4 – 0010
- 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)
-
- Salida de la Ronda 4: X1 – 0011, X2 – 1110, X3 – 1110, X4 – 0100
(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