sábado, febrero 14, 2009

Criptografía

Hola amig@s, Vuelvo a la carga.

Si habéis estudiado algo relacionado con la informática seguro que conocéis denominaciones de algoritmos de cifrado, pero igual que a mi se os habrán olvidado las características principales.

Hagamos memoria...

Algoritmo DES o "Data Encryption Standard" (Cuidado, hoy en día se considera inseguro. Se puede descifrar sin la clave en menos de 24 horas).

Diseñado por IBM, se elige como algoritmo FIPS (Federal Information Processing Standars) en 1976. Estos estándares públicos eran para agencias no militares y contratistas del Gobierno.

Desde el principio hubo polémica. La clave a utilizar es muy muy corta. Sólo 8 bytes (equivalente a 8 letras). De los 8 bytes (64 bits), 8 son para paridad por lo que la clave efectiva es de 56 bits. Por lo que se dice en wikipedia "es ampliamente aceptado" que la NSA redujo la longitud para tener posibilidades de éxito en caso de utilizar la fuerza bruta contra el cifrado. Vamos, que pensaban que ellos podrían romper una clave de 64 bits con fuerza bruta, mientras que el resto del mundo no iba a poder todavía.

También se sospechaba que hubiera una puerta trasera para que la NSA pudiera descifrar fácilmente. Se hablaba de S-Box manipulada con vulnerabilidad conocida por la NSA. Hoy en día se piensa que no era así. En 1990 se publica unos trabajos conocidos como "criptoanálisis diferencial". Un trabajo que daba luz sobre la forma en la que se podía abordar un ataque al cifrado. Resultó que la S-Box de DES era la más robusta que se podría haber diseñado. En 1994 se publicó el criterio del diseño original demostrando que IBM ya conocía la técnica de criptoanálisis diferencial y que la NSA le obligó a mantener el secreto.

Fuente: http://es.wikipedia.org/wiki/Data_Encryption_Standard
Más información: http://es.kioskea.net/contents/crypto/des.php3
Documento completo de DES en: http://www.elhacker.net/Textos1.htm

¡Vale ya de rollos! Vamos a utilizarlo con Perl.

Para instalarlo en Windows. Descargarlo de aquí y seguir las instrucciones.

En las distribuciones GNU/Linux y en la mayoría de UNIX el Perl viene "de fabrica", pero aún así tendremos que instalar un módulo llamado Crypt::DES

Vamos a esta dirección de CPAN y nos lo descargamos: http://search.cpan.org/~dparis/Crypt-DES-2.05/
Lo dejamos donde queramos. Es un fichero .tar.gz (o sea, primero empaquetado y luego comprimido).

Lo descomprimimos...
gzip -d Crypt-DES-2.05.tar.gz

Ahora desempaquetamos...
tar -xof Crypt-DES-2.05.tar

Creo el directorio /usr/lib/perl/5.8.8/Crypt-DES-2.0.5
y coloco los ficheros desempaquetados en él.

Voy al directorio y...

perl Makefile.PL


make

make test

make install

¿Problemas con la instalación?

1.-Recordad que en Ubuntu para ser root hay que poner por delante el "sudo". Creo que lo he tenido que utilizar para todo.


2.-Ya sabéis que soy un poco desastre :-( Me suena, pero no recuerdo con seguridad si me ha dado un error el make install por no tener instalado el módulo Crypt::CBC. Si os da el error, ir a http://search.cpan.org/~lds/Crypt-CBC-2.30/CBC.pm y lo instaláis como he descrito la instalación de Crypt::DES.


Ahora que está instalado todo bien, entremos en materia

Editamos el siguiente programita Perl que encripta un texto de 8 bytes (limitación de DES).

El texto es: "texto8by"



Y la ejecución del programita:



Y ahora la pregunta del millón:

¿De qué sirve un algoritmo que cifra sólo 8 bytes? Si el alfabeto lo componen 256 letras, un byte (8 bits) se corresponderá con una letra. O sea que hablamos de un mensaje de 8 letras.

Deberíamos completar el programita para que pueda aceptar un mensaje de longitud variable y que vaya cifrando cada letra.

Otra opción es utilizar otro módulo Perl que hace el trabajo por nosotros. Esto en el próximo post.

Saludos.

No hay comentarios: