Sei sulla pagina 1di 8

Universidad Nacional Autnoma de Mxico

Facultad de Ingeniera
Criptografa

Proyecto IDEA

Profesora: M. en C. Ma. Jaqueline Lpez Barrientos

Integrantes:
Badillo Torres Vernica Gallardo Hernndez Luis Enrique Hernndez Snchez Leticia Mendoza Varela Jeanette Rocio Pacheco Aguilar Jose Jaime

Grupo 1 26 de Mayo del 2009

ALGORITMO IDEA (Algoritmo Internacional de Cifrado de Datos)


IDEA-International Data Encryption Algorithm (Algoritmo Internacional de Cifrado de Datos) es un cifrador por bloques diseado por Xuejia Lai y James L. Massey de la Escuela Politcnica Federal de Zrich y descrito por primera vez en 1991. Algoritmo propuesto como reemplazo del DES (Data Encryption Standard). IDEA fue una revisin menor de PES-Proposed Encryption Standard (Estndar de Cifrado Propuesto), un algoritmo de cifrado anterior. Originalmente IDEA haba sido llamado IPES -Improved PES (PES Mejorado). IDEA fue diseado en contrato con la Fundacin Hasler, la cual se hizo parte de Ascom-Tech AG. IDEA es libre para uso no comercial, aunque fue patentado y sus patentes se vencern en 2010 y 2011. El nombre "IDEA" es una marca registrada y est licenciado mundialmente por MediaCrypt. En IDEA, tanto los datos en claro como los datos cifrados estn compuestos por bloques de 64 bits, mientras que la clave consta de 128 bits. El cifrado se basa en el concepto de mezclar operaciones aritmticas de grupos algebraicos diferentes. El algoritmo consiste en ocho vueltas de cifrado idnticas seguidas de una transformacin de salida. Aunque los mtodos de criptoanlisis han mejorado, ste es uno de los mejores y ms seguros algoritmos de cifrado de bloque Es un algoritmo muy seguro, nunca ha sido roto. Hace uso de aritmtica en cuerpos finitos, adelantndose a los algoritmos ms actuales. HISTORIA 1990: Xuejia Lai y James Massey (Swiss Federal Institute of Technology) proponen el PES (Proposed Encryption Standard). 1991: los avances en el criptoanlisis diferencial hacen necesario introducir mejoras y lo modifican creando el IPES (Improved Proposed Encryption Standard).

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

con k y r naturales tal que 0 r <

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.

IMPLEMENTACIN DEL IDEA.


Durante el proceso de cifrado se utilizan operaciones de tres grupos aritmticos diferentes sobre pares de sub-bloques de 16 bits: Grupo multiplicativo en Z2^16+1 () Multiplicacin mdulo 216+1 Grupo aditivo en Z2^16 (+) Suma mdulo 216 Grupo aditivo en Z2, de las 16-uplas, bit a bit () Xor Estas operaciones son invertibles en s mismas, pero incompatibles entre s no gozan de la ley distributiva ni asociativa, no forman grupo y la sucesin de ellas no puede darlugar a cancelacin de operaciones. Los 64 bits del bloque de datos se divide en 4 sub-bloques de 16. En cada vuelta el bloque de datos de entrada X es dividido en 4 subbloques de 16 bits (X1, X2, X3, X4). Se realizan 8 vueltas, y cada una emplea una subclave diferente.

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.

GENERACIN DE LAS SUBCLAVES.

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:

Proceso detallado de obtencin de la palabra i:

Mesografia http://www.lci.ulsa.mx/seguridad/appli/win/Cifrado/IDEA.TXT http://www.geocities.com/jagtez/EstructDatos/PGP5.html


http://leebyte.iespana.es/cursos/seguridad/el%20pgp%20explicado%20para %20tontos.doc

Potrebbero piacerti anche