Mostrando entradas con la etiqueta Criptografía. Mostrar todas las entradas
Mostrando entradas con la etiqueta Criptografía. Mostrar todas las entradas

20 de marzo de 2012

Cisco7 ¿encryption?

De rato en rato, trato de sacar tiempo para ir desarrollando la versión 2.0 de findmyhash. Una de las muchas mejoras que tendrá la próxima versión es no consultar ningún servicio online para los algoritmos reversibles que soporta.

El algoritmo del que os voy a hablar hoy es uno de los que Cisco utiliza para cifrar las contraseñas que almacena en la configuración de sus dispositivos y que se suele conocer como Cisco 7 porque al consultar la configuración del dispositivo se muestra algo como:

username admin password 7 080d4d7604181714130e00083f2c253a

Donde el '7' indica el tipo de algoritmo utilizado.

Cisco 7 está basado en el cifrado de Vigenère, utilizando como clave la cadena:

d s f d ; k f o A , . i y e w r k l d J K D H S U B s g v c a 6 9 8 3 4 n c x

A primera vista podemos decir que es bastante robusta, por lo que alguno podría pensar que lo que se cifre con esta clave debería estar seguro. Pero recordemos que tan sólo estará seguro si no conociéramos la clave con la que se está cifrando y en este caso se utiliza la cadena anterior en TODOS los dispositivos Cisco... por lo que ahora veremos que no sirve de mucho.

Para descifrar la contraseña, vamos a trabajar siempre en hexadecimal, por lo utilizaremos tan sólo la versión codificada de la clave:


dsfd;kfoA,
647366643b6b666f412c
.iyewrkldJ
2e69796577726b6c644a
KDHSUBsgvc
4b444853554273677663
a69834ncx
6136393833346e6378


La contraseña cifrada que aparecía en el ejemplo con el que empezaba el post ya está en formato hexadecimal, así que la utilizaremos tal cual:

080d4d7604181714130e00083f2c253a

Esta contraseña se divide en dos partes, el primer byte (08) es un desplazamiento en la clave de cifrado. Es decir, en este caso vamos a obviar los 8 primeros caracteres de la clave, por lo que comenzaríamos en 412c2e69... y utilizaremos tantos caracteres como tiene la contraseña cifrada. Es decir, lo que en la tabla anterior he marcado en azul.

La segunda parte (el resto: 0d4d7604181714130e00083f2c253a) es la contraseña cifrada. Esta parte fue calculada con un XOR entre la contraseña original y la clave de cifrado, que en nuestro caso recordamos que empieza con un desplazamiento de 8 caracteres. Es decir:


Clave de cifrado:412c2e69796577726b6c644a4b4448
Contraseña original:   ??????????????????????????????
------------------------------
Contraseña cifrada:0d4d7604181714130e00083f2c253a


Como la operación XOR es reversible, nos basta con calcular el XOR entre la misma clave que se utilizó y la contraseña cifrada para obtener la contraseña en texto claro:


Clave de cifrado:412c2e69796577726b6c644a4b4448
Contraseña cifrada:0d4d7604181714130e00083f2c253a
------------------------------
Contraseña original:  4C61586D61726361656C6C75676172


Que se corresponde con la cadena:

LaXmarcaellugar

Como veis, aunque la contraseña se almacena cifrada, no sirve de mucho si el algoritmo que se utiliza es reversible y la clave de cifrado conocida.

Ésta es la principal razón por la cual nunca se debe almacenar una contraseña cifrada (y mucho menos en texto claro...). En su lugar se debe almacenar el hash de la contraseña, utilizando alguna función como SHA-1 y tratando de evitar el uso del MD5, que se considera débil desde hace muchos años.

8 de septiembre de 2011

CrypTool, un acercamiento a la criptografía

Hoy voy a hablaros de una herramienta que, aunque tenga un objetivo docente, puede llegar a ser muy útil para tratar temas de cifrado y criptoanálisis.

La herramienta en cuestión es CrypTool. En la actualidad existen diferentes cuatro ramas de desarrollo: 1.x (la rama principal), 2.0 (que cambia completamente respecto a la anterior, siendo ésta más orientada a la docencia), JCrypTool (multiplataforma al estar desarrollada en Java) y CrypTool online (más pobre que las anteriores, pero también merece darse un paseo por la web).

Yo voy a hablaros de la que, en mi opinión y por mi profesión, considero más útil y es la de la rama principal, que va por la versión 1.4.30.

¿Qué nos ofrece CrypTool?

Pues prácticamente nos permite realizar cualquier operación relacionada con la criptografía. Por un lado existe la posibilidad de utilizar cifrados clásicos (César, Vigenère, Vernam, Solitario...) así como algunos de los actuales, tanto simétricos (DES, Triple DES, Rijndael...) como asimétricos (RSA y otros cifrados híbridos).


También se pueden calcular diferentes hashes, firmar digitalmente documentos a partir de claves que se pueden crear directamente desde la aplicación o incluso importando tus certificados externos, aplicar diferentes algoritmos de codificación...


Por otro lado, nos ofrece algunas herramientas que pueden ayudar durante un criptoanálisis. Así, se puede calcular la entropía de un texto, realizar un análisis de frecuencias de los caracteres utilizados así como de n-gramas, calcular la autocorrelación, la periodicidad...

También tiene algunos métodos de criptoanálisis automáticos implementados para casos de los que sólo se disponga del texto cifrado o con texto claro conocido. Para los algoritmos más complejos, presenta asistentes que automatiza algunas partes del procedimiento.

Resultado de criptoanálisis automático a alg. César

¿"Sólo" esto?

Como dije al principio, el objetivo principal de la herramienta es formar a la gente sobre criptografía. De este modo, tiene módulos que explican de una manera muy visual e interactiva conceptos que pueden resultar complejos al principio como diferentes tipos de ataques (MitM, Side Channel Attack...), algoritmos de firma o de autenticación, etc.


Os recomiendo que le echéis un vistazo porque puede llegar a ser bastante útil en muchas situaciones en las que necesitamos cifrar un determinado texto o utilizar cierto algoritmo; además de para refrescar conceptos que tengamos un poco oxidados por no haberlos utilizado mucho.

La web principal del proyecto es:

http://www.cryptool.org/