El post que buscas se encuentra eliminado, pero este también te puede interesar

MD5 Y Encriptación Segura en una Web

MD5 Y Encriptacion Segura


PARA VER MAS TUTORIALES INTERESANTES VISITA http://mundocodigos.com

Tras un tiempo sin escribir ningún artículo en MundoCodigos, he decidido hablar un poco sobre MD5, un tipo de encriptación muy utilizado, aunque también hay otros como Sha1, Sha256

MD5 es un tipo de encriptación unidireccional.
Esto quiere decirse que podemos encriptar en MD5, pero es imposible desencriptar.

Muchas personas quizá han visto Webs o programas que supuestamente desencriptan un MD5. Usar el término desencriptar es propio de un mentiroso o una persona que ignora el real funcionamiento de esta encriptación.

MD5 es un tipo de encriptacion de 128 bits. El resultado de una encriptación es una cadena de 32 caracteres, denominada HASH.
En MD5 podemos encriptar cualquier cosa, desde una simple letra, hasta una palabra y textos enteros e incluso un archivo (cualquier archivo). Y el resultado SIEMPRE va a ser una cadena de 32 caracteres.

Por esta razon, si nos ponemos a pensar, podemos encriptar INFINITAS COSAS en MD5. Sin embargo, al ser el hash resultante una cadena necesariamente de 32 caracteres, la cantidad de hashes existentes es FINITA o LIMITADO.
En sintesis, hay infinitas cosas que encriptar para una cantidad resultante de hashes finitos.

¿Qué significa esto? Esto significa que el hash resultante de encriptar en MD5 alguna cosa, también es el hash resultante de encriptar infinitas otras cosas. Se entiende, ¿No?

Por ejemplo, el MD5 resultante de encriptar la palabra “MundoCodigos.Com” es: 4bfc5f7ae01d53a822734704d2321c56, y este hash también es el resultante de encriptar infinitas otras cosas.

Entonces… ¿Es imposible desencriptar MD5?
La respuesta es SI, es imposible desencriptarlo. Pero lo que no es imposible es Crackearlo.

¿Qué diferencia hay entre Crackear y Desencriptar?
La diferencia es que desencriptar sería seguir la inversa de la encriptacion o algún otro proceso para llegar al resultado inicial. Lo cual es imposible.
Crackear en cambio sería lograr obtener, de algún modo, alguna palabra, oración, texto o lo que fuera, que al encriptarlo nos de como resultado el MD5 en cuestión… da igual cual sea.

¿De que forma se puede crackear?
Hay 2 formas posibles.
Si ustedes buscan en Google webs para desencriptar MD5 (repito, esta mal dicho desencriptar), encontraran muchas. Pero… ¿Cómo funcionan? Es sencillisimo. Estas Webs también te dan la opción de encriptar MD5. Entonces, cuando una persona encripta algo en MD5, lo encripta, le muestra el resultado, pero ademas guarda en su base de datos la palabra que esta persona introdujo y el hash resultante.
Tan solo intenten hacer una cosa… Pongan en una de estas webs un MD5 que sea por ejemplo, el resultante de encriptar su nombre y apellido, y busquen a ver si lo encuentra.
Muy probablemente les dirá que ese MD5 no se encuentra en la base de datos. Ahora en esa misma Web, pongan su nombre y apellido y encripten, les dirá el resultado. Y finalmente intenten otra vez “desencriptar” el MD5 y van a ver que ahora mágicamente les aparecerá.
Esa es una forma.

La otra forma, es hacer un ataque de fuerza bruta o diccionario.
¿Qué es esto? Se trata de ir probando toda las posibles combinaciones de palabra a gran velocidad. Ir encriptando en MD5 todas las posibles combinaciones y compararlos con el MD5 que se quiere crackear. Cuando haya coincidencia, hemos encontrado una palabra que genera ese mismo MD5.
A esto se lo denomina “Colisión de Hash” .
Obviamente esto no es nada rápido sino todo lo contrario. Tengan en cuenta que la cantidad de hashes posibles son 2^128 lo cual es un número grandisimo.
Generalmente utilizan PC’s Zombies (PC’s infectadas), para que entre todas logren mayor velocidad al momento de crackear, pero de cualquier modo se tarda.

Entonces… una Web que encripta las contraseñas en MD5 no es segura?
Bueno… antes que guardarlas sin encriptar, cualquier cosa es buena. MD5 en sí es bastante seguro, pero nada en el mundo es inviolable. Por supuesto, un programador a la hora de crear su Web podría ponerle mas seguridad al MD5.. y es aquí a donde quería llegar.

¿Cómo podemos tener más seguridad en nuestras contraseñas?
Un cracker que logre ingresar a nuestra base de datos y ver los hashes, fácilmente sabe distinguir cuando es MD5, y ahí puede comenzar a intentar crackear. Si lo logra… bueno… ya sabemos que puede pasar.
La forma de hacerlo mas seguro sería modificándolo, disfrazándolo.

¿Cómo podríamos disfrazar los MD5?
Bueno.. una forma sería así.

Generalmente (por no decir siempre), a los usuarios registrados en una web se les asigna un número único con el cual se los identifica. Podemos utilizar esto…
Podríamos ponerle antes del MD5 este número y al final podríamos ponerle este mismo número multiplicado por 2 por ejemplo.

Podríamos poner que entre el caracter 10 y 11 haya un guión (-), que entre el 19 y 20 haya dos puntos ( y que entre el 26 y 27 haya un arroba (@).
También podríamos tomar la primera y ultima letra de su Nick y hacer que se pongan entre el caracter 30 y 31.

Con esto creo que ya es mas que suficiente para que pueda pasar desapercibido…
Supongan que me registro en una Web que tiene este tipo de seguridad con el usuario MundoCodigos y el pass pedrito123, y que el número de mi usuario sea 132.

Si no utilizaran ningún tipo de seguridad y simplemente encriptaran en MD5 y guardaran mi contraseña quedaría guardada de la siguiente manera: c59292ff37f107bd772319986993c1c6
En cambio si utilizara un tipo de seguridad parecido a lo que les acabo de mencionar, el MD5 final se guardaría así: 132c59292ff37-f107bd772:3199869@93c1msc6264

Sin dudas ha cambiado.. ¿verdad?

A continuación les dejo el código en PHP que genera el MD5 con un poquito mas de seguridad, tal cual el ejemplo que acabo de dar. Obviamente eso pueden modificarlo totalmente a su gusto, agregarle otras cosas.. en fin, disfrazar el MD5 como se les ocurra. Los crackers generalmente utilizan errores como inyecciones SQL o cosas que les permiten acceder a la base de datos pero no siempre acceden a nuestro código fuente, por lo cual, aunque pudieran darse cuenta de alguna manera que se trata de un MD5 disfrazado, lo que no saben es cómo esta disfrazado, de qué manera hemos llegado a disfrazarlo de esa manera. Y así no podrá obtener el MD5 en sí para intentar crackearlo o al menos le costará mucho mas.

http://mundocodigos.com/descargas/disfrazarmd5.rar
Contraseña del Archivo: mundocodigos.com

9 comentarios - MD5 Y Encriptación Segura en una Web

@Skann002
#00746a">Lo agrego a Favoritos, Buen Post
@JubaLs
Muy bueno che... muy explicativo e informativo.
@8MoCoSo7
Hace un par de días hice algo similar a esto pero fue invento mio nomas, este se ve mejor jaja tengo un sitio en el que jugamos al prode con un grupo de amigos y si alguien atacase mi web x lo menos que no logre sacar la contraseña de cada jugador xq es muy común que se use la misma contraseña que en el correo electrónico o algo así y si les pasa algo voy a ser el culpable yo.
aclarale por favor que no vayan a usar el ejemplo que vos diste por las dudas esta bueno el post