Algoritmo Blowfish y TwoFish

16
Universidad de Cuenca Nombre : David Valladarez Tema : Algoritmos de Clave Simétrica

Transcript of Algoritmo Blowfish y TwoFish

Page 1: Algoritmo Blowfish y TwoFish

Universidad de CuencaNombre : David Valladarez

Tema : Algoritmos de Clave Simétrica

Page 2: Algoritmo Blowfish y TwoFish

Índice• Introducción Blowfish

• ¿Cifrado por Bloques?

• Función Feistel

• Algoritmo de Cifrado Blowfish

• ¿Qué es TwoFish?

• Componentes del Algoritmo

• MDS (Distancia de Separación Máxima )

• S-Box

• Planificación de claves

• Expansión de la clave de usuario

• Algoritmo de Cifrado TwoFish

Page 3: Algoritmo Blowfish y TwoFish

Objetivos• Conocer las principales características de los algoritmos Blowfish y TwoFish

Conocer el funcionamiento Feistel

Componentes del algoritmo TwoFish

• Conocer el funcionamiento de los algoritmo Blowfish y TwoFish

Page 4: Algoritmo Blowfish y TwoFish

Introducción Blowfish• Fue desarrollado por Bruce Schneier en 1993 como una alternativa para

reemplazar a DES como estándar de cifrado.

• Es un algoritmo que ofrece un cifrado de alta seguridad

Hasta el momento se desconoce algún tipo de criptoanálisis efectivo en su contra.

• Implementa el cifrado por bloques con una longitud de clave variable y una función Feistel que le permite hacer cifrado y descifrado idénticos.

Page 5: Algoritmo Blowfish y TwoFish

¿Cifrado por Bloques?

• Es una unidad de cifrado de clave simétrica(se usa una misma clave para cifrar y descifrar mensajes) que opera en grupos de bits de longitud fija, llamados bloques, aplicándoles una transformación invariante.

Page 6: Algoritmo Blowfish y TwoFish

Función Feistel• Es un método de cifrado en bloque con una estructura

particular.

• Algoritmo

Se selecciona una cadena, N, normalmente de 64 o 128 bits.

Se la divide en dos subcadenas, L y R, de igual longitud (N/2)

Se toma una función, F, y una clave Ki

Se realizan una serie de operaciones complejas con F y Ki y con L o R

La cadena obtenida se cambia por la cadena con la que no se han realizado operaciones, y se siguen haciendo las rondas.

Page 7: Algoritmo Blowfish y TwoFish

Ejemplo• El algoritmo usará bloques de tamaño 8 caracteres.

• Tendrá dos vueltas y en cada vuelta realizará una operación de

Sustitución

Una función : el carácter 1º pasa a la 4ª posición en el criptograma, el 4º a la 3ª, el 2º a la 2ª y el 3º a la 1ª

Page 8: Algoritmo Blowfish y TwoFish

Algoritmo de Cifrado Blowfish• Un bloque de 64bits se divide en

dos bloques de 32bits (L y R)

• Se realiza una operación XOR a los

primeros 32bits(L) con la primera

subclave(K) y se realiza la función F

con el resultado de la operación

• Se realiza una operación XOR con

la segunda parte de los 32

bits(R) con el resultado de la

función F(L).

• Se intercambian posiciones (R pasa a ser L y L pasa a ser R) y se repite el proceso

anterior por 16 iteraciones.

• Al terminar la ultima iteracion no se realizara el intercambio.

• Se realiza la operacion XOR entre el valor alojado en L y la subclave 18.

• Se realiza la operacion XOR entre el valor alojado en R y la subclave 17.

• Se unen los dos fragmentos del bloque para generar nuevamente un bloque de 64bits

ya cifrado

Page 9: Algoritmo Blowfish y TwoFish

¿Qué es TwoFish?• Fue diseñado por Bruce Schneier, John Kelsey, Doug Whiting, David Warner,

Chris Hall y Niels Ferguson en el año de 1998.

• Se trata de un algoritmo Feistel que tiene como fundamento las características de Blowfish

• Acorde a las especificaciones que el NIST(National Institute of Standards and Technology) dio para seleccionar al nuevo estándar de cifrado, Twofishcifra bloques de texto plano de 128 bits, así como longitud de clave seleccionable entre 128, 192 y 256 bits.

• No se conoce un ataque contra Twofish más eficiente que la búsqueda de claves por la fuerza bruta.

Page 10: Algoritmo Blowfish y TwoFish

Componentes del Algoritmo• A lo largo de 16 rondas, se aplica una red Feistel que consiste en sustitución

mediante cajas,

• Dos subfunciones especiales consistentes en una matriz Distancia de Separación Máxima (MDS) y una Transformación Pseudo Hadamart (PHT) y la mezcla con dos subclaves de ronda

• La planificación de claves se lleva a cabo mediante el uso de una matriz derivada de un código Reed-Solomon (RS).

Page 11: Algoritmo Blowfish y TwoFish

MDS (Distancia de Separación Máxima )• Para un cógodio q-ary(n , M ,d)

• Esto implica que para cada una [ n , k ] – code debemos tener

• De lo cual se deduce que k ≤ n - d + 1 o d ≤ n - k + 1

Un código lineal que cumple con este límite se denomina Máximo Código de distancia separable (MDS)

Page 12: Algoritmo Blowfish y TwoFish

S-Box• Es un componente básico de los algoritmos de cifrado de clave simétrica.

• En los cifradores por bloques son usadas a menudo para oscurecer la relación existente entre texto plano y texto cifrado

• En general, una S-Box toma un número m de bits de entrada y los transforma en n bits de salida

• Las Tablas prefijadas se usan en algunos algoritmos, como DES, mientras que otros cifradores usan S-Boxes dependientes de la clave, como en Blowfish y Twofish.

Page 13: Algoritmo Blowfish y TwoFish

Planificación de claves• A partir de la clave de usuario, se generará un conjunto de 40 subclaves

(cada una de 32 bits de longitud), las 4 cajas-S y de 2 a 4 subclavesadicionales que trabajan dentro de las cajas-S.

Expansión de la clave de usuario

Para este caso, se requiere dos veces el uso de la función MSD con dos entradas cada una.

La salida de la función MSD entra a la transformación PHT

Aplican rotaciones circulares únicamente a una entrada

Page 14: Algoritmo Blowfish y TwoFish

Algoritmo de Cifrado TwoFish

• Una vez que se ha planificado las subclaves de ronda y cajas-S, se procede a cifrar bloques de texto de 128 bits.

• sustitución por cajas-S,

• mutiplicación por matriz MDS,

• transformación mediante PHT

• mezcla con las subclaves de ronda.

Page 15: Algoritmo Blowfish y TwoFish

Conclusión• Podemos decir que TwoFish es mejor que Blowfish ya que es mas completo

pos las S- Boxes y sus transformaciones PHT, pero aun así en ninguno de los dos se han encontrado un ataque más que por fuerza bruta.

Page 16: Algoritmo Blowfish y TwoFish

Links Información• http://www-math.ucdenver.edu/~wcherowi/courses/m7823/mdscodes.pdf

• http://samhain.softgot.com/criptografia/lecturasnotas/algoritmos/twofish.pdf