Alters

Remote tools: Presentación (II)

Buenas!

Estoy teniendo serios retrasos (con todo en general); es una lástima porque realmente me gustaría avanzar lo antes posible este proyecto, ya que creo que puede llegar a ser útil para algunas personas (si bien no como herramienta en si, podría ser útil en el campo de la investigación - es decir, en el campo de la ejecución de la teoría y cómo es resuelta ésta).

Se acaba el mes de marzo, el primer trimestre anual; y esto supone que debería tener una cuarta parte de mis propósitos anuales completados... veremos qué puedo hacer.

En fin, sigamos con lo que toca: Remote Tools.

En esta entrada estaba planificado hablar de las dos primeras funciones (y las más costosas de elaborar): la encriptación y "desencriptación" tanto en MD5 como en SHA1.

Quizás os preguntáis porqué está entre comillas "desencriptar"; esto es porque - supuestamente - algo que está encriptado no se puede "desencriptar" (si se pudiera, sería un cifrado).

Entonces, para enriquecer nuestro vocabulario, podemos decir que se distinguen dos procesos similares pero distintos a su vez:

 - Cifrar: ocultar un mensaje de manera que luego puede recuperarse el mensaje original, solo por aquellos que conozcan la clave establecida o el método de cifrado.

Hay métodos clásicos de cifrado como el "Cesar" o el "Bigenere".

- Encriptar: ocultar un mensaje de manera que el original no puede ser recuperado. También es conocido como "hash".

El método estándar de encriptado es el SHA (Secure Hash Algorithm).

Pero, sin embargo, sí hay métodos que nos permiten saber el mensaje original. El método más sencillo es elaborar un gran diccionario (tal como un diccionario en si) en el que almacenamos parejas de texto - hash.

Es decir, supongamos que hacemos:

sha1("1");

Esto nos devolverá:

356a192b7913b04c54574d18c28d46e6395428ab

Podemos guardar la pareja "1 - 356a192b7913b04c54574d18c28d46e6395428ab" en un fichero o base de datos, de manera que podamos buscar más adelante el valor "356a192b7913b04c54574d18c28d46e6395428ab" y obtener como respuesta "1". Sería algo como:

h = sha1("1"); //h = 356a192b7913b04c54574d18c28d46e6395428ab
t = unsha1(h); //t = 1

Lo mismo es aplicable para el algoritmo MD5, o para cualquier función de "hash" que os venga a la cabeza.

Las mentes eruditas han logrado encontrar un método "calculable" para deshacer un hash en SHA1. Éste es un método que requiere vastos conocimientos y que en un futuro me gustaría saber...

Así, podríamos decir que crearemos un basto diccionario para encriptar y desencriptar palabras.

Si la lógica no me falla, con el tiempo podremos llegar a comprobar un valioso teorema: las colisiones.

Pero de eso ya hablaremos en el punto 3.1.1.2...

Y quizás, con el tiempo, dedico una sección entera a los temas de cifrado - descifrado y encriptado - desencriptado...

De momento es todo; que las vacaciones son cortas y servidor está agotado (malditos cambios, no huyáis!).

Para bien o para mal, os espero, como siempre.

¡Hasta la próxima!