Cifrado BlowFish
Hace un par de días mientras miraba el capítulo 15 (Day 7: 10:00 P.M.- 11:00 P.M.) de la Séptima temporada de 24h, la agente especial Renee Walker filtraba información confidencial del FBI a Jack Bauer, en un intento de parar una amenaza biológica a gran escala. Pues bien, en este capítulo, usaron una encriptación Blowfish de 32 bits (si no recuerdo mal), entonces uno de los analistas Morris O'Brian tuvo que descifrarlo para poder ver la información que se enviaba, descifrando las cabeceras y supongo que luego aplicando fuerza bruta encontraron la key.
En este post, explico un poco en que consiste este cifrado, y varias aplicaciones que podemos utilizar para securitizar y cifrar los datos que enviamos a través de la red.
Este algoritmo de encriptación es muy rápido, y solo requiere de unos 4Kb de RAM, por lo tanto se puede ejecutar en cualquier sistema.
Podemos encontrar explicaciones más detalladas en la página del autor:
http://www.schneier.com/blowfish.html
Podemos encontrar la última version de la aplicación en la página del autor (Markus Hahn):
http://www.lassekolb.info/bfacs.htm
Una vez instalada la aplicación, la ejecutamos y seleccionamos los ficheros que queremos encriptar, luego añadimos nuestra clave, y voilà!, ya tenemos nuestro fichero con una encriptación potente, con muy pocas probabilidades de que alguien lo descubra mediante un B-F.
Una vez acabada la encriptación (realmente es muy rápida), nos aparece un formulario resumen con el trabajo finalizado:
Ahora este fichero lo podemos enviar donde queramos siempre acordandonos de la clave, para poder volver al fichero original.
También podemos encontrar herramientas gratuitas para Linux, como BlowCrypt, que permite encriptar los ficheros mediante BlowFish.
Otro ejemplo del uso del BlowFish, es el que nos muestra la empresa Cinnabar Systems, que han desarrollado una aplicación llamada Canner, que permite evitar que el código que tu ejecutas en java dentro de la Máquina virtual pueda ser manipulado mediante ingenieria inversa. La aplicación es de pago, pero tiene un eval de 30 días para probarlo. A mi en particular, me ha gustado bastante, pero seguro que podemos hacer la misma implementación nosotros mismos.
Por ejemplo, para Delphi, tenemos el package DcpCrypt, que ya hice un post una vez, comentando como se instalaba. Pues bien, dentro de la libreria, podemos encontrar la implementación del Blowfish.
Para java, tenemos la gnu-Crypto, una libreria Open Source con la implementación de todos los algoritmos de encriptación conocidos, también muy interesante.
Un ejemplo simple seria el siguiente:
Primero nos descargamos la última libreria de gnu-Crypto : gnu-crypto 2.0.1. Luego creamos un pequeño proyecto en java, y añadimos como referencia externa las librerias gnu-crypto.jar, javax-crypto.jar y javax-security.jar, y luego creamos una clase que se llame por ejemplo: TestBlowFish.
El código seria el siguiente:
- En que consiste y cómo funciona Blowfish?
Este algoritmo de encriptación es muy rápido, y solo requiere de unos 4Kb de RAM, por lo tanto se puede ejecutar en cualquier sistema.
Podemos encontrar explicaciones más detalladas en la página del autor:
http://www.schneier.com/blowfish.html
- Protege tus contenidos.
Podemos encontrar la última version de la aplicación en la página del autor (Markus Hahn):
http://www.lassekolb.info/bfacs.htm
Una vez instalada la aplicación, la ejecutamos y seleccionamos los ficheros que queremos encriptar, luego añadimos nuestra clave, y voilà!, ya tenemos nuestro fichero con una encriptación potente, con muy pocas probabilidades de que alguien lo descubra mediante un B-F.
Una vez acabada la encriptación (realmente es muy rápida), nos aparece un formulario resumen con el trabajo finalizado:
Ahora este fichero lo podemos enviar donde queramos siempre acordandonos de la clave, para poder volver al fichero original.
También podemos encontrar herramientas gratuitas para Linux, como BlowCrypt, que permite encriptar los ficheros mediante BlowFish.
Otro ejemplo del uso del BlowFish, es el que nos muestra la empresa Cinnabar Systems, que han desarrollado una aplicación llamada Canner, que permite evitar que el código que tu ejecutas en java dentro de la Máquina virtual pueda ser manipulado mediante ingenieria inversa. La aplicación es de pago, pero tiene un eval de 30 días para probarlo. A mi en particular, me ha gustado bastante, pero seguro que podemos hacer la misma implementación nosotros mismos.
- Creando nuestras própias aplicaciones.
Por ejemplo, para Delphi, tenemos el package DcpCrypt, que ya hice un post una vez, comentando como se instalaba. Pues bien, dentro de la libreria, podemos encontrar la implementación del Blowfish.
Para java, tenemos la gnu-Crypto, una libreria Open Source con la implementación de todos los algoritmos de encriptación conocidos, también muy interesante.
Un ejemplo simple seria el siguiente:
Primero nos descargamos la última libreria de gnu-Crypto : gnu-crypto 2.0.1. Luego creamos un pequeño proyecto en java, y añadimos como referencia externa las librerias gnu-crypto.jar, javax-crypto.jar y javax-security.jar, y luego creamos una clase que se llame por ejemplo: TestBlowFish.
El código seria el siguiente:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class TestBlowFish {
public static void main(String[] args) throws Exception {
KeyGenerator keygenerator = KeyGenerator.getInstance("Blowfish");
SecretKey secretkey = keygenerator.generateKey();
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE, secretkey);
String inputText = "this is a Test Message";
byte[] encrypted = cipher.doFinal(inputText.getBytes());
cipher.init(Cipher.DECRYPT_MODE, secretkey);
byte[] decrypted = cipher.doFinal(encrypted);
System.out.println("encrypted text: " + new String(encrypted) + "\n" +
"decrypted text: " + new String(decrypted));
System.exit(0);
}
}
La salida de la aplicación muestra el siguiente mensaje:
encrypted text: 8%&껌ICgÒú8& ÉØÉ
decrypted text: this is a Test Message
http://webnet77.com/cgi-bin/helpers/blowfish.pl
Mediante estas aplicaciones, podemos encriptar nuestros mensajes con el algoritmo Blowfish.
Ahora ya podemos disfrutar de estas aplicaciones o incluso crear las nuestras. Otro dia ya os contaré sobre la evolución de este, el TwoFish.
Aquí os dejo una lista de enlaces interesantes relacionados con el BlowFish.
http://vpnd.dotsrc.org/
http://www.bzupages.com/f14/folder-lock-full-version-include-serial-538/
http://www.encryptfiles.net/encryption/algorithm/blowfish.php
http://www.taringa.net/posts/downloads/2275348/BestCrypt-Volume-Encryption-v2_11_03.html
Ahora ya podemos disfrutar de estas aplicaciones o incluso crear las nuestras. Otro dia ya os contaré sobre la evolución de este, el TwoFish.
- Enlaces interesantes:
Aquí os dejo una lista de enlaces interesantes relacionados con el BlowFish.
http://vpnd.dotsrc.org/
http://www.bzupages.com/f14/folder-lock-full-version-include-serial-538/
http://www.encryptfiles.net/encryption/algorithm/blowfish.php
http://www.taringa.net/posts/downloads/2275348/BestCrypt-Volume-Encryption-v2_11_03.html
hola, soy estudiante de tecnologia en sistemas y para un necesito encriptar un archivo de texto con blowfish desde linux en lenguaje C, sera que me podrias ayudar o sugerir una pagina donde me puedan ayudar... de antemano muchas gracias
ReplyDeleteHi sthewar,
ReplyDeletethank you for your comment. Have you tried the OpenSSL in Ubuntu?. With that library you can encrypt files easily. Here is one of my posts explaining how to do that:
Encrypting with OpenSSL
you can find more information in the following link as well:
Crypto Blowfish OpenSSL
hi jordi
ReplyDeletemuchas gracias por tu pronta respuesta, hace poco entregue el proyecto. me interesa mucho este tema de la encriptacion y linux, gracias por los links
y estamos en contacto
bye