García Ruiz Fabián Valencia Pérez Ricardo Vargas Luna Carlos Arturo Historia Es un algoritmo de bloques simétrico desarrollado por Bruce Shneier y dado a conocer en 1993. CARACTERÍSTICAS Rápido: Cifra datos en microprocesadores de 32 bits a una tasa de 18 ciclos de reloj por byte. Compacto: Puede correr en un espacio de memoria inferior a los 5K. CARACTERÍSTICAS Sencillo: Tiene una estructura sencilla que lo hace fácil de implementar. Variables seguras: La longitud de la clave es variable y puede ser hasta de 448 bits, lo que permite negociar entre trabajar a alta velocidad y una alta seguridad. CARACTERÍSTICAS Opera con bloques de 64 bits. Toma 64 bits de texto plano y entrega 64 bits de texto cifrado. Utiliza claves que van desde 32 hasta 448 bits(14 bloques de 32 bits). Lo que hace es generar 18 subclaves de 32 bits y 4 de sustitución(S-Box) de 8 por 32. CARACTERÍSTICAS En total 1024 juegos de 32 bits cada uno, además de utilizar arreglos de permutación (P-Box) donde las subclaves son almacenadas. Es un codificador de 16 rondas Feistel y usa llaves que dependen de las Cajas-S. Tiene una estructura similar a CAST-128, el cual usa Cajas-S fijas. CARACTERÍSTICAS Los bloques iniciales de datos se dividen en 2 grupos del mismo tamaño (32 bits). Estos se procesan en 16 rondas, empleando en cada iteración una subclave P diferente (se utilizan 18 en total). Se utilizan 2 operaciones básicas, la XOR y la adición. Funcionamiento de “F” En primera instancia se ingresa una serie de 32 bits la cual se divide en 4 bloque de 8 bits. Ahora se procede a sustituir con las S-Box. Una vez realizado esto se comienza realizando una suma entre el resultado de la S-Box 1 y la S-Box 2. Después se realiza una XOR entre el resultado de la suma anterior y el resultado de la S-Box 3. Funcionamiento de “F” Por último el resultado anterior se suma con el resultado de la S-Box 4.Finalizando la función F. Generación de las subclaves 1. Inicializar el primer P-matriz y luego los cuatro S-cajas, con el fin, con una cuerda fija. Esta cadena se compone de los dígitos hexadecimales de pi (menos los 3 primeros). 3,14159265358979323846264338 ... Por ejemplo: P1 = 0x243f6a88 P2 = 0x85a308d3 P3 = 0x13198a2e P4 = 0x03707344 Generación de las subclaves 2. XOR P1 con los primeros 32 bits de la clave, P2 XOR con el segundo de 32 bits de la clave, y así sucesivamente para todos los bits de la clave. En total, 521 iteraciones son necesarias para generar todas las subclaves necesarias. Las aplicaciones pueden almacenar las subclaves en lugar de ejecutar este proceso de derivación varias veces. Funcionamiento general Blowfish es un algoritmo que consta de 16 rondas. La entrada es un elemento de datos de 64 bits, x. Divide x en dos mitades de 32 bits: XL, XR Para i = 1 a 16: XL = xL XOR Pi xR = F (x1…16) XOR xR Intercambio XL y XR Funcionamiento general Siguiente i Intercambio XL y XR. xR = xR XOR P17 XL = xL XOR P18 Recombinarse XL y XR Funcionamiento general Divide xL en cuatro cuartos de ocho bits: F (xl) = ((S1+S2)XOR S3)+S4