Pez Globo

En criptología, blowfish es un algoritmo de clave simétrica de bloque, ideado en 1993 por Bruce Schneier e implementado en muchos programas de cifrado. Aunque un criptoanálisis de Blowfish no está disponible hasta la fecha, este algoritmo está despertando interés de nuevo si se implementa con un tamaño de bloque más grande, como en el caso de AES o Twofish. Schneier diseñó blowfish para ser un algoritmo de propósito general, útil para reemplazar el entonces decadente Data Encryption Standard (DES) y libre de problemas característicos de otros algoritmos. En ese momento, muchos otros sistemas de cifrado eran propietarios, cubiertos por patentes o secretos gubernamentales. Schneier declaró: "Blowfish está libre de patentes, y lo seguirá siendo en todas las Naciones. El algoritmo es de dominio público y puede ser utilizado libremente por cualquier persona." Dos de las características notables de blowfish son las cajas s dependientes de la clave y una lista de claves extremadamente compleja.

Blowfish tiene un tamaño de bloque de 64 bits y una longitud de clave variable entre 32 y 448 bits. Tiene una estructura de malla Feistel de 16 bucles y utiliza cajas s grandes dependientes de la llave. Tiene una estructura similar al sistema cast-128, que utiliza cajas s fijas. El diagrama de la izquierda muestra cómo opera blowfish. Cada línea representa 32 bits. El algoritmo maneja dos tipos de listas de subclaves: una lista de 18 elementos, llamados P-arrays, y cuatro listas de 256 elementos cada una de s - boxes (S0, S1, S2 y S3), para un total de 5 subclaves. Cada S-Box tiene 8 bits de entrada de información, y produce 32 bits de salida. En cada repetición del bucle se utiliza un elemento diferente de la matriz - P, y después del último bucle en cada mitad del bloque de datos se multiplica en XOR con uno de los dos elementos no utilizados de la matriz - P. El diagrama de leyenda representa la función blowfish F. La función divide 32 bits de entrada en cuatro 8 bits, utilizados a su vez como entradas s - Box. Los resultados se suman en Módulo 2 32 y se ponen en XOR, para obtener el resultado final de 32 bits cifrados. Dado que blowfish es una red de feistel, se puede invertir simplemente poniendo en XOR los elementos 17 y 18 de la matriz P, y luego utilizando los elementos de la matriz P en orden inverso. La lista de claves blowfish se genera cargando los valores iniciales de la matriz P y las cajas S con representaciones hexadecimales de los dígitos Pi griegos, que aparentemente no tienen periodicidad ni patrones repetitivos. La clave secreta se coloca en XOR con cada elemento de la matriz-P (repitiendo la clave, cuando sea necesario). Un bloque de 64 bits de valor cero se encripta con el propio algoritmo, y el resultado encriptado reemplaza los elementos P - 1 y P-2. El resultado cifrado se codifica de nuevo con las nuevas subclaves, reemplazando los elementos P-3 Y P-4. Este proceso continúa hasta que todos los elementos de la matriz - P y las cajas - S son reemplazados. En total, el algoritmo de cifrado de blowfish se ejecuta 521 veces para generar todas las subclaves y procesar aproximadamente 4 KB de datos.

No hay, o al menos no se conocen, criptoanálisis de blowfish, al menos hasta 2004, ya que un tamaño de bloque de 64 bits se considera hoy demasiado pequeño, y codificar más de 2 32 bloques podría revelar algunos fragmentos del texto original, debido a la paradoja del cumpleaños. A pesar de esto, blowfish hasta el día de hoy parece bastante seguro. Si bien el tamaño de bloque pequeño no crea problemas para aplicaciones tradicionales como el correo electrónico, podría hacer que blowfish no sea utilizable para cifrar textos grandes, como en el caso de los archivos. En 1996 Serge Vaudenay ideó un ataque que permitía forzar el cifrado de un texto conociendo 2 8 R + 1 texto plano con la misma clave, donde R identifica el número de rondas. También encontró una clase de teclas débiles que se pueden identificar y romper, con el mismo ataque, sabiendo solo 2 4 R + 1 texto plano. Este ataque no se puede utilizar contra el Pez Globo implementado con los 16 ciclos. Vaudenay utilizó una variante basada en menos ciclos de cifrado. Vincent Rijmen, en su tesis doctoral, introdujo un ataque diferencial de segundo grado capaz de forzar no más de 4 ciclos. Por lo tanto, no hay una forma conocida de forzar un texto codificado con 16 bucles, excepto, por supuesto, la fuerza bruta. En 2005 Dieter Schmidt estudió la lista de teclas blowfish y señaló que las subclaves de bucle tercera y cuarta son independientes de los primeros 64 bits de la clave de usuario.

Blowfish es uno de los Algoritmos de codificación de bloques más rápidos que existen, excepto cuando se cambia la clave. Cada nueva clave requiere un tiempo de procesamiento equivalente a la codificación de 4 KB de texto, que es mucho en comparación con otros sistemas de cifrado de bloques. Esto evita que se utilice en algunas aplicaciones, pero no es un problema en otras. En un caso, es incluso una ventaja: el método de hash basado en contraseñas utilizado en OpenBSD utiliza un algoritmo derivado de blowfish que aprovecha el lento procesamiento de claves; la idea es que el mayor tiempo de cálculo necesario mejora la protección contra un ataque basado en Diccionario. En algunas implementaciones blowfish utiliza un área de memoria mucho más grande que los 4KB teóricos de RAM. Esto no es un problema incluso para los ordenadores personales más antiguos, pero impide su uso en pequeños sistemas integrados como las primeras tarjetas inteligentes. Blowfish no está sujeto a ninguna patente y, por lo tanto, puede ser utilizado libremente por cualquier persona. Esto ha contribuido a su popularidad en el software de cifrado.

Bloquear cifrados

ICE (cifra)

En criptografía, ICE (Information Concealment Engine) es un cifrado por bloques publicado por Matthew Kwan en 1997. El algoritmo es similar en estructura al DES...

XXTEA

En criptografía, el bloque corregido TEA (a menudo abreviado como XXTEA) es un cifrado por bloques desarrollado para corregir vulnerabilidades encontradas en el...
Esta página se basa en el artículo de Wikipedia: Fuente, Autores, Licencia Creative Commons Reconocimiento-CompartirIgual.
This page is based on the Wikipedia article: Source, Authors, Creative Commons Attribution-ShareAlike License.
contactos
Política de privacidad , Descargos de responsabilidad