Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Facultad de Ingeniera
Criptografa
Proyecto IDEA
Integrantes:
Badillo Torres Vernica Gallardo Hernndez Luis Enrique Hernndez Snchez Leticia Mendoza Varela Jeanette Rocio Pacheco Aguilar Jose Jaime
1992: los autores incluyen nuevas mejoras y proponen finalmente el algoritmo IDEA (International Data Encryption Algorithm). 1999: el algoritmo IDEA demuestra ser mucho ms seguro que DES y sus derivados y se comienza a usar en el sistema PGP,lo que hizo que tuviera muchos usuarios
CARACTERSTICAS: Es uno de los cifrados en bloque ms seguros que existen. Usa bloques de 64 bits y claves de 128 bits. Realiza 8 transformaciones idnticas (cada una llamada un ronda) y una transformacin de salida (llamada media ronda). El proceso para cifrar y descifrar es similar. Gran parte de la seguridad de IDEA deriva de la mezcla de operaciones de distintos grupos que no conmutan entre ellas: XOR, suma mdulo2 y producto mdulo 216+1. SEGURIDAD: IDEA ha resultado inmune ante un criptoanlisis diferencial (sus autores conocan esta debilidad de DES) y a los criptoanlisis lineales. Joan Daemen descubri en 1992 una clase de claves dbiles, las que responden al esquema 0000 0000 0*00 0000 0000 000* **** *000 que un atacante podra identificar en un ataque con texto en claro elegido (las posiciones * pueden ser cualquier dgito hexadecimal). La probabilidad de que se usen esas claves dbiles es 2 -96 y adems se pueden eliminar en el diseo. Actualmente no se conoce todava ningn ataque contra IDEA que haya tenido xito MULTIPLICACIN MDULO 216+1 Antes de presentar este algoritmo deben decirse algunas palabras con respecto a la aritmtica mdulo 216+1. Que el producto de dos nmeros a y b sea r mdulo 216+1 significa que: p = a b = r + k(216+1) 2 +1
16
Esto significa que el verdadero resultado es el resto (r) resultante de la divisin entera de p entre 216+1. Por lo tanto cada producto se transforma en una multiplicacin y una divisin entera. Dado que esta operacin es central en el algoritmo de encriptado la pregunta que se plantea es como hacer esto en pocas instrucciones. Lo que sigue fue inspirado mientras se trabajaba con el 56811 que tiene largo de palabra de 16 bits. Imagine por un momento que se est trabajando con palabras de 16 bits. Si se realiza el producto ab sobre el registro A del acumulador se tiene lo siguiente: p = a b = r + k(216+1) = r + k + k216 De este resultado se quiere recuperar el valor de r. Se observa que el nmero k al estar multiplicado por 216 est corrida 16 bits hacia la izquierda, por lo que se encuentra almacenado enteramente en A1. Por lo que para obtener r slo es necesario restar el nmero en A1 del nmero en A0. A0= k + r A1= k A0 - A1 = k Esto no es siempre tan sencillo pues podra suceder que la suma k + r que se supone que est almacenada en A0 sea mayor que 216, caso en el cual se tendra acarreo de un bit al registro A1. Es este caso el esquema recin presentado falla. Mirando esta situacin un poco ms a fondo, se observa lo siguiente: A0= k + r-216 A1= k + 1 Al hacer la resta tenemos A0-A1 = k+ r -216-(k+1) = r - (216+1). Esto es claramente un nmero negativo. Para obtener r, sumamos 216+1 al nmero anterior, contenido en el acumulador. Cuando se empieza a trabajar con un largo de palabra de 24 bits, el problema se resuelve de la misma manera (aunque la solucin pierde su elegancia). Despus de realizar la multiplicacin, los bits entre el 31 y el 16 se separan y se colocan en un registro aparte (alineados a la derecha) y se realiza un algoritmo completamente anlogo al recin descrito. Para lograrlo se deben realizar corrimientos y aplicar mscaras en varias
oportunidades lo que hace que la operacin sea ms larga y engorrosa que con una arquitectura de 16 bits.
En la implementacin del algoritmo se deben tener varios puntos en cuenta. Todas las operaciones se hacen con nmeros positivos de 16 bits y el resultado se devuelve en 16 bits. Se adapt los datos del Codec que vienen alineados sobre el bit 23, para tenerlos alineados al bit 15 y poder realizar las distintas operaciones. Para la suma mdulo 216 y para el resultado de la multiplicacin (modulo 216 + 1) se tuvo que hacer un AND con FFFF para hacer el mdulo, o sea dejarlo en 16 bits. Se implement la multiplicacin mdulo 216 + 1, que como se ver no es trivial (Multiplicacin mdulo 216 + 1). Debido a que todas las operaciones trabajan con los acumuladores, surgi el problema de pasar de un nmero de 24 bits sin signo a uno de 48 bits ms signo y viceversa, ya que la extensin de signo de los acumuladores es en a2. El problema en s es que con los acumuladores se puede representar nmeros ms chicos que los que se puede representar con los registros. Este problema se solucion trabajado con los 24 bits que nos interesaban del acumulador. Para realizar el paralelismo se tuvo que hacer varios cambios, ya que tiene muchas restricciones. Por ejemplo para hacer dos movimientos en paralelo hay que hacerlo de la siguiente manera: la memoria X sobre los registros x0 y x1, y la memoria Y sobre y0 e y1. Adems las operaciones deben hacerse siempre sobre los acumuladores, lo que en conjunto limit la optimizacin. Otras restricciones fueron que no se puede mover de la memoria direccionando con corrimientos absolutos, o sea x:(r4+4), y que no se puede realizar pre-incrementos de los registros de direccionamiento. Por estas razones se guardaron las claves en la memoria Y y los datos a encriptar en la memoria X, y se utilizaron los incrementos y decrementos unitarios.
Dividiendo la clave de 128 bits se obtienen las primeras 8 subclaves de 16 bits, K(1) a K(8). Las siguientes subclaves se obtienen de la misma forma, despus de una rotacin circular de 25 lugares a la izquierda. As sucesivamente hasta la generacin de las 52 subclaves de encriptado. En cuanto a la implementacin en asembler de este algoritmo de generacin de subclaves, puede decirse que no presenta grandes complicaciones. Por ejemplo, para generar K(9) se toman los 7 bits ms bajos de K(2) y los 9 bits ms altos de K(3).
GRFICAMENTE: