You are on page 1of 2

Criptografa Criptografa de Clave Secreta 2016

Blowfish 5. La salida del paso anterior tiene dos funciones: 1) sustituye a las dos primeras subclaves
y 2) entra a Blowfish para ser cifrada (con las subclaves sustituidas).

Fue desarrollado por Bruce Schneier en 1993 como una alternativa para reemplazar a DES 6. Se repite el paso anterior pero ahora se sustituyen las siguientes dos subclaves. Este
como estndar de cifrado. Es un algoritmo que ofrece un cifrado de alta seguridad, y hasta el paso se repetir constantemente hasta que los 18 arreglos y las 4 cajas hayan sido
momento se desconoce algn tipo de criptoanlisis efectivo en su contra. sustituidas por las correspondientes salidas del cifrado consecutivo de la palabra nula.

Implementa el cifrado por bloques con una longitud de clave variable y una funcin Feistel que En total, se ejecutarn 521 iteraciones para obtener las subclaves que se utilizarn en el
le permite hacer cifrado y descifrado idnticos. Es un algoritmo muy verstil que confiere una cifrado de informacin.
mayor velocidad de cifrado en comparacin con DES e IDEA.
Cifrado y descifrado
Descripcin Blowfish utiliza una red Feistel a lo largo de 16.5 rondas, donde el mensaje de 64 bits se
Blowfish utiliza claves de longitud variable, que van desde 32 a 448 bits, cuya planificacin de combina con las subclaves yacentes en los arreglos y se sustituye mediante las cajas . Los
claves incluye la generacin de cajas y (utilizadas en la red Feistel) que dependen pasos del cifrado estn descritos a continuacin.
directamente de la clave. El mensaje en claro se divide en bloques de 64 bits, los cuales
entran a la red de cifrado en bloques de 32 bits para combinarse con las subclaves 1. El mensaje en claro se divide en dos bloques de 32 bits (izquierdo y derecho ).
mediante XOR, y en la red Feistel sustitucin por medio de sumas modulares entre las salidas
2. El bloque se combina con con la subclave (arreglo ) mediante la operacin XOR,
de las cajas .
arrojando un resultado de 32 bits. La salida de esta operacin se utiliza en dos partes del
Planificacin de claves algoritmo: 1) entra en la funcin Feistel, y 2) se convierte en el bloque derecho de la
La planificacin consiste en la inicializacin de diversas cajas dependientes de la clave de siguiente ronda.
usuario. stas sern las subclaves que se utilizarn en el cifrado y que deben calcularse antes
3. Funcin Feistel:
de comenzar a cifrar o descifrar. Los pasos en la planificacin se describen a continuacin:
3.1. El bloque de 32 bits se divide en 4 cuartos (, , , ) de 8 bits y cada
1. Se definen 18 arreglos de 32 bits cada uno, donde se almacenarn las subclaves.
uno de ellos entra en una caja diferente: entra en 1 , en 2 , en 3 , y
Tambin se definen 4 cajas , cada una con 256 localidades de 32 bits.
en 4 .
2. Cada arreglo y caja se inicializa con una cadena fija; la cadena est compuesta por los
3.2. La sustitucin se realiza al utilizar el byte como ndice en el arreglo; es decir, la
dgitos hexadecimales del nmero irracional , exceptuando la parte entera. El orden de
salida de la caja 1 ser el dato contenido en 1 [], la salida de 2 es 2 [], y
inicializacin es 1 , 2 , 18 , 1 , 2 , 3 , 4 .
as sucesivamente. Se recuerda que cada localidad de la caja contiene 32 bits.
3. A cada uno de los 18 arreglos se aplica una XOR con 32 bits de la clave. La clave se 3.3. La salida de la red Feistel es el resultado de realizar operaciones operaciones
repite tantas veces hasta cubrir la totalidad de los arreglos . suma mdulo 232 y XOR entre las diferentes salidas de las cajas:
4. Se cifra mediante Blowfish un mensaje nulo (lleno de ceros) con las cajas y arreglos
inicializados en los pasos anteriores. ( ) = ((((1 [] + 2 []) mod 232 ) 3 []) + 4 []) mod 232

1 Ing. Aldo Jimnez Arteaga


Criptografa Criptografa de Clave Secreta 2016

4. La salida ( ) se opera mediante XOR con el bloque , y el resultado se


convierte en el bloque izquierdo de la siguiente ronda. L1 K1 (32 bits)

8 bits 8 bits 8 bits 8 bits


5. Se vuelve al paso 1 y se repite el proceso desde = 1 hasta = 16.
S1[A] S2[B] S3[C] S4[D]
(32 bits) (32 bits) (32 bits) (32 bits)
6. Los bloques salientes de la ronda 16 no se intercambian, solo se calculan las
operaciones XOR 16 18 y 16 17 . Estos resultados se concatenan en orden y
se obtiene el criptograma final.

Texto plano (64 bits)

L1 (32 bits) R1 (32 bits)

Funcin F 32 bits

K1 (32 bits) F
Debido al diseo del algoritmo el descifrado es idntico al cifrado, con la nica excepcin del
orden de las subclaves: si se cifra con el orden 1 , 2 , 3 18 , se descifra en el orden
inverso 18 , 17 , 16 , 1 .

K16 (32 bits) F

K18 (32 bits) K17 (32 bits)

Texto cifrado (64 bits)

2 Ing. Aldo Jimnez Arteaga

You might also like