¿Qué es IDEA (Algoritmo Internacional de Cifrado de Datos) en seguridad de red?

El algoritmo IDEA es interesante por derecho propio. Incluye algunos pasos que, al principio, hacen parecer que podría ser una función hash no invertible en lugar de un cifrado de bloque. Además, es interesante porque evita por completo el uso de tablas de búsqueda o S-boxes.

IDEA utiliza 52 subclaves, cada una de 16 bits de longitud. Dos se usan durante cada ronda propiamente dicha, y cuatro se usan antes de cada ronda y después de la última ronda. Tiene ocho rondas.

El bloque de texto sin formato en IDEA se divide en cuatro cuartos, cada uno de 16 bits de largo. Se usan tres operaciones en IDEA para combinar dos valores de 16 bits para producir un resultado de 16 bits, suma, XOR y multiplicación. La adición es una adición normal con acarreos, módulo 65.536. La multiplicación, como se usa en IDEA, requiere alguna explicación.

La multiplicación por cero siempre produce cero y no es invertible. El módulo de multiplicación n tampoco es invertible siempre que sea por un número que no sea primo relativo a n. La forma en que se usa la multiplicación en IDEA, es necesario que siempre sea invertible. Esto es cierto para el estilo IDEA de multiplicación.

El número 65,537, que es 2 ^ 16 + 1, es un número primo. (Por cierto, 2 ^ 8 + 1, o 257, también es primo, y también lo es 2 ^ 4 + 1, o 17, pero 2 ^ 32 + 1 no es primo, por lo que IDEA no se puede escalar trivialmente a 128 bits tamaño de bloque). Por lo tanto, si uno forma una tabla de multiplicación para los números del 1 al 65,536, cada fila y columna contendrá cada número una sola vez, formando un cuadrado latino y proporcionando una operación invertible. Los números que normalmente representan 16 bits son de 0 a 65.535 (o, quizás aún más comúnmente, de -32.768 a 32.767). En IDEA, para propósitos de multiplicación, se considera que una palabra de 16 bits que contiene todos los ceros representa el número 65,536; otros números están representados en notación convencional sin signo, y la multiplicación es el número primo 65.537.

Descripción de IDEA

Deje que los cuatro cuartos del texto plano se llamen A, B, C y D, y las 52 subclaves llamadas K (1) a K (52).

Antes de la ronda 1, o como la primera parte, se hace lo siguiente:

Multiplicar A por K (1). Agregue K (2) a B. Agregue K (3) a C. Multiplique D por K (4).

La ronda 1 propiamente dicha consiste en lo siguiente:

Calcule A xor C (llámelo E) y B xor D (llámelo F).

Multiplica E por K (5). Agregue el nuevo valor de E a F.

Multiplique el nuevo valor de F por K (6). Agregue el resultado, que también es el nuevo valor de F, a E.

Cambie tanto A como C XORizando el valor actual de F con cada uno de ellos; cambie tanto B como D haciendo XOR al valor actual de E con cada uno de ellos.

Intercambiar B y C.

Repita todo esto ocho veces, o siete veces más, usando K (7) a K (12) la segunda vez, hasta K (43) a K (48) la octava vez. Tenga en cuenta que el intercambio de B y C no se realiza después de la ronda 8.

Luego multiplique A por K (49). Agregue K (50) a B. Agregue K (51) a C. Multiplique D por K (52).

Las complejidades del cifrado IDEA se pueden aclarar un poco al examinar los siguientes diagramas:

Detalles:

Visión general:

Descifrado

¿Cómo se puede revertir la ronda en IDEA, ya que los cuatro cuartos del bloque se cambian al mismo tiempo, en función de una función de los cuatro valores anteriores? Bueno, el truco para eso es que A xor C no cambia cuando tanto A como C tienen XOR con el mismo valor, ese valor se cancela, sin importar cuál sea ese valor. Y lo mismo se aplica a B xor D. Y dado que los valores utilizados son funciones de (A xor C) y (B xor D), todavía están disponibles.

Esta ronda de pies cruzados, en lugar de una ronda de Feistel, es el factor distintivo más llamativo de IDEA, aunque su uso de multiplicación, suma y XOR para evitar el uso de cajas S también es importante.

Los que se agregan son reemplazados por el complemento de sus dos. Los que se multiplican se reemplazan por su inverso multiplicativo, módulo 65.537, en notación IDEA cuando se usan para cambiar bloques directamente, pero los que se usan para calcular las funciones F con los pies cruzados no se cambian. Las claves XORed no necesitarían ser cambiadas, pero no hay tales claves en IDEA. Debido a la ubicación del intercambio, las primeras cuatro claves para el descifrado se mueven de manera algo diferente a las otras claves utilizadas para la misma operación entre rondas.

La programación de la clave de descifrado es:

Las primeras cuatro subclaves para descifrar son:

KD (1) = 1 / K (49) KD (2) = -K (50) KD (3) = -K (51) KD (4) = 1 / K (52)

y no siguen exactamente el mismo patrón que las subclaves restantes que siguen.

Lo siguiente se repite ocho veces, sumando 6 al índice de cada clave de descifrado y restando 6 del índice de cada clave de cifrado:

KD (5) = K (47) KD (6) = K (48) KD (7) = 1 / K (43) KD (8) = -K (45) KD (9) = -K (44) KD (10) = 1 / K (46)

Generación de subclaves

La clave de 128 bits de IDEA se toma como las primeras ocho subclaves, K (1) a K (8). Las siguientes ocho subclaves se obtienen de la misma manera, después de un desplazamiento a la izquierda circular de 25 bits, y esto se repite hasta que se derivan todas las subclaves de cifrado.