(C) 1997 COOPERACIÓN INTERNACIONAL EN TECNOLOGÍAS AVANZADAS

(C) 1994-1997 Miguel Angel Gallardo Ortiz,

con E-mail: miguel@cita.es
 

El algoritmo de cifrado IDEA.

Debido a la previsible caducidad del DES, los más prestigiosos criptólogos de todo el mundo trabajan en el desarrollo de algoritmos que le sustituyan con la mayor compatibilidad posible. Este es el caso del IDEA, que ha sido diseñado con el propósito de resistir a ciertos ataques a los que el DES es vulnerable, es especial a los denominados como "criptoanálisis diferenciales", y ofrecer un tamaño de la clave suficientemente seguro.

El International Data Encryption Algorithm fue inventado en Suiza por el doctorando chino Xuejia Lai y James Massey cuando ambos trabajaban en el Institute for Signal and Information Processing del Instituto Federal de Tecnología Suizo, en Zurich. Se patentó en Noviembre de 1991.

El titular de la patente (naturalmente sólo en los pocos países en los que pueden protegerse los derechos industriales de un algoritmo matemático, entre los que no se encuentra España, ni la Unión Europea o Japón) es la empresa de telecomunicaciones suiza Ascom Tech AG, la cual permite el uso gratuito del programa para fines no comerciales. Los términos de la licencia para fines comerciales parecen bastante razonables incluso para pequeñas y medianas empresas de tecnología básica para informática y comunicaciones.

El IDEA es un cifrador de bloques que opera sobre secuencias de 64 bits en cada ciclo, es decir, que a partir de 64 bits de texto en claro, obtiene otros 64 bits de texto cifrado, según determina una clave de 128 bits de tamaño, lo cual es más que suficiente con la actual potencia de cálculo para garantizar la invulnerabilidad frente a ataques exhaustivos.

Tal y como sus autores exponen en su propuesta ["A proposal for a new block encryption standard", X. Lai y J. Massey, Advances in Cryptology - EUROCYPT`90], el algoritmo de cifrado está basado en conceptos de diseño que mezclan operaciones procedentes de grupos algebráicos diferentes, persiguiendo las mejores porpiedades contra criptoanálisis.

Al ser un algoritmo de clave secreta, el procedimiento y la clave de descifrado es el mismo que el utilizado para el cifrado. Sin embargo, el algoritmo IDEA es perfectamente combinable con otros asimétricos, como el RSA, y funciones resumen, como el MD-5 de RSA Inc.

La confusión necesaria en todo algoritmo criptográfico, entendida como caótica independencia del texto cifrado respecto al claro, se consigue en el IDEA mediante tres grupos diferentes de operaciones sobre parejas de subbloques de 16 bits, y la estructura del cifrador se ha elegido de forma que proporcione una óptima difusión, es decir, que un sólo bit cambiado en el texto claro provoca que sea diferente todo el texto cifrado, lo que facilita la divergencia en sucesivas reiteraciones. Por otro lado, los criterios de diseño han pretendido que sea fácil su construcción tanto en dispositivos físicos como lógicos.

Después de dar los detalles del diseño, es posible formarse una psinopsis aproximada de lo considerablemente robusto que es este algoritmo frente a los principales ataques criptoanalíticos conocidos.

Una descripción esquemática del IDEA

En cada paso elemental por el que pasa el texto de 64 bits, éste sufre las siguientes alteraciones para dar el cifrado:
 

1ª División del bloque de 64 bits de texto en cuatro subbloques de 16 bits: X1, X2, X3 y X4, y de los 128 de la clave en 8: Z1 ... Z8. Estos últimos son intencionadamente más complicados, y se tratarán aparte.

2ª Multiplicación de X1 por el primer subbloque de la clave Z1

3ª A ello se añade X2 y el segundo subbloque de la clave Z2

4ª A lo que se añade X3 y el segundo subbloque de la clave Z3

5ª Lo que se multiplica por X4 y por el cuarto subbloque de la clave

6ª Se hace una operación de or exclusivo (XOR) entre el bloque resultado de las operaciones segunda y cuarta

7ª XOR entre el resultado de la tercera y la quinta operación

8ª Se multiplican los resultados de la sexta operación con el quinto subbloque de la clave, Z5

9ª Se suma el resultado de las operaciones sexta y séptima

10ª Se multiplica el resultado de la novena operación con el sexto subbloque de la clave, Z6

11ª Se suman los resultados de la octava y la décima operación

12ª XOR del resultado de la segunda y la décima

13ª XOR del resultado de la cuarta y la décima

14ª XOR del resultado de la tercera y la undécima

15ª XOR del resultado de la quinta y la undécima

De esta forma se consigue el texto cifrado, juntando los cuatro bloques resultantes de las operaciones cuatro últimas operaciones.

Evidentemente, la seguridad del cifrador aumenta cuando el texto pasa varias veces por el algoritmo, y el IDEA lo hace 8 veces. Para retroalimentarlo, basta con permutar los bloques segundo y tercero de la salida, y hacerlos entrar de nuevo, en todas las etapas menos en la última.

Después de la octava ronda, hay una transformación final, que consiste en los cuatro pasos siguientes:

1º Multiplicar X1 por el primer subbloque de la clave

2º Añadir X2 al segundo bloque de la clave

3º Añadir X3 al tercer subbloque de la clave

4ª Multiplicar X4 por el cuarto subbloque de la clave

Finalmente, se concatenan estos últimos cuatro bloques para conseguir el texto cifrado de salida.

La creación de los subbloques de la clave, en el 1er paso del algoritmo, consiste en dividir los 128 bits de dicha clave en ocho subbloques de los cuales sólo seis se utilizan en la primera vuelta, reservando dos para la segunda. Tras esto, la clave se hace rotar 25 bits a la izquierda (mediante la función de desplazamiento de los bits en la palabra que proporciona el operador "<<" del lenguaje de programación C), y de nuevo se divide la clave en ocho subclaves. Las cuatro primeras se utilizan en la segunda etapa del algoritmo, y las cuatro últimas en la tercera. La clave se rota otros 25 bits a la izquierda para conseguir las ocho siguientes subclaves, y así sucesivamente.

En esencia, para lograr la simetría computacional necesaria para la clave secreta, se aprovecha la siguiente igualdad:

216× 215 mod (216 + 1) = 215 + 1

Rendimiento del cifrador IDEA

Las actuales implementaciones de este algoritmo son de dos a cuatro veces más rápidas que las equivalentes del DES (Data Encryption Standard). En un Intel 386 a 33 Mhz es capaz de ofrecer una velocidad de cifrado de unos 880 Kbps, y en un VAX 9000 de unas cuatro veces más. Un chip VLSI desarroollado en el ETH de Zurich, formado por 251.000 transistores en una pastilla de 107.9 mm de lado, cifra con el algoritmo IDEA a una velocidad de 177 Mbits/sec. con un reloj de 25 MHz.

Los interesados deben saber que el fabricante proporciona en disquete la versión 1.0 para Unix, que incluye un manual completo en inglés del criptosistema IDEA según ASCOM. También puede obtenerse el código fuente idea.c e idea.h tomados del programa libre uso para firmas electrónicas PGP. Estas son las instrucciones para instalar el programa idea en Unix:

1º Transferir desde un PC al sistema UNIX mediante emulación de terminal y protocolo de transferencia de ficheros (Zmodem, Kermit u otros), o bien si se utiliza SCO, Xenix o similar, copiar de la diquetera con doscp

2º Descomprimir el fichero idea.tar con el comando:

$ tar xvd idea.tar

3º Cambiar al directorio de trabajo de idea con:

$ cd idea

4º Compilar en C mediante el comando:

$ make

Y ya se puede ejecutar con todas sus opciones. También se debe instalar el manual en el formato estándar de UNIX (man) siguiendo el README del IDEA.

(C) 1997 COOPERACIÓN INTERNACIONAL EN TECNOLOGÍAS AVANZADAS

(C) 1994-1997 Miguel Angel Gallardo Ortiz,

con E-mail: miguel@cita.es