Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Shurhand en 26 Febrero 2009, 13:35 pm



Título: ¿Cuál es la mejor opción para cifrar con PHP?
Publicado por: Shurhand en 26 Febrero 2009, 13:35 pm
Voy a intentar migrar una aplicación de un tipo de cifrado a otra, y mirando información en internet he encontrado que se disponen de las siguientes funciones de cifrado:
Código:
    
    * Adler32 (MHASH_ADLER32)
    * Crc32 (MHASH_CRC32)
    * Crc32B (MHASH_CRC32B)
    * Gost (MHASH_GOST)
    * Haval128 (MHASH_HAVAL128)
    * Haval160 (MHASH_HAVAL160)
    * Haval192 (MHASH_HAVAL192)
    * Haval256 (MHASH_HAVAL256)
    * Md4 (MHASH_MD4)
    * Md5 (MHASH_MD5)
    * Ripemd160 (MHASH_RIPEMD160)
    * Sha1 (MHASH_SHA1)
    * Sha256 (MHASH_SHA256)
    * Tiger (MHASH_TIGER)
    * Tiger128 (MHASH_TIGER128)
    * Tiger160 (MHASH_TIGER160)

¿Cuál es el más eficaz? ¿Cuál es el más robusto? ¿Cuál no habría que utilizar? ¿En qué situación se utilizaría alguno de ellos en especial?

Todo esto lo pregunto porque muchísimas aplicaciones y demás historias comerciales y no comerciales vienen con MD5 por defecto y sinceramente, no creo que sea la mejor manera de cifrar nada, no creo que sea ya muy seguro.

Espero que alguien me pueda ayudar.

Gracias de antemano, y salud.


Título: Re: ¿Cuál es la mejor opción para cifrar con PHP?
Publicado por: XafiloX en 26 Febrero 2009, 16:58 pm
Yo te recomendaria que utilizases mezclas de algunas funciones, por ejemplo:

Código
  1. sha1(md5('palabra'));

Tambien podrias utilizar (ya la releche en seguridad XD) una palabra "secreta" que utilizarias paras las encriptaciones...
Ejemplo:
Código
  1. $secret_word = 'secret';
  2. $encripted_pass = sha1(md5('palabra'.$secret_word));
  3.  

Y esto ya supondria que la persona que intentase descifrar esta contraseña supiese que estas utilizando dos tipos de encriptacion distinta, y ademas deberia saber la "palabra secreta".


Título: Re: ¿Cuál es la mejor opción para cifrar con PHP?
Publicado por: Shurhand en 26 Febrero 2009, 17:16 pm
Muy buena idea, aunque respecto a MD5:

"Debido al descubrimiento de métodos sencillos para generar colisiones de hash, muchos investigadores recomiendan su sustitución por algoritmos alternativos tales como SHA-1 o RIPEMD-160."

Por eso no quería usar para nada MD5. Creo que usaré sha256 porque proveé 128 bits de seguridad frente a los 80 de sha-1, lo que le hace más robusto frente a un ataque tipo birthday, y creo que añadiré Ripemd160 con una palabra secreta.


Título: Re: ¿Cuál es la mejor opción para cifrar con PHP?
Publicado por: invisible_hack en 26 Febrero 2009, 19:02 pm
Justo acabo de publicar mi source de mi encriptador de claves usando MD5 en Php, está justo encima de este post  :P


Título: Re: ¿Cuál es la mejor opción para cifrar con PHP?
Publicado por: XafiloX en 26 Febrero 2009, 19:05 pm
Anda! Pues mira, eso de la debilidad de md5 y sha-1 no lo sabia...Uno no se acostará nunca sin saber aprendido una cosa mas....XD

Yo mi web la tengo con una simple proteccion de md5, y hace tiempo que tenia pensado mejorar el sistema, pero por pereza no lo he hecho todavia...  ;D

Principalmente la tenia en md5 porque devolvía una cadena "cortita" y cuanto mas corta, mejor para guardarla en la base de datos... Pero con lo que me has dicho me parece que voy hacer los cambios en mi web en cuanto tenga un poco de tiempo libre, y sobretodo voy a dejar de utilizar md5...

Lo ultimo de todo, un consejo, si vas a utilizar varias funciones de encriptacion a la vez, te sugiero que reserves la que devuelve la cadena de caracteres mas corta como la ultima que se ejecuta, asi ahorrarás algo de espacio en la base de datos...  ;)


Título: Re: ¿Cuál es la mejor opción para cifrar con PHP?
Publicado por: Shurhand en 26 Febrero 2009, 19:17 pm
Leed esto:

http://hackdosx.blogspot.com/2009/01/md5-vulnerable.html

He aquí un ejemplo de cómo no usar MD5, sino TripeDes, con PHP:
Código:
<?php
$llave = "Clave secreta";
$entrada = "Frase a traducir";

$datos_cifrados = mcrypt_ecb (MCRYPT_3DES, $llave, $entrada, MCRYPT_ENCRYPT);
?>

Para el que quiera saber más, que consulte:
http://es.codepicks.net/phpmanual/ref.mcrypt.html


Título: Re: ¿Cuál es la mejor opción para cifrar con PHP?
Publicado por: Novlucker en 26 Febrero 2009, 19:29 pm
Lo del la cifrado md5 vulnerable lleva un par de meses, y es por esto que se recomienda migrar a sha1.
Igualmente para generar las colisiones capaces de vulnerar md5 se necesita una buena capacidad de procesamiento, como la generada por la granja de 200 PS3 trabajando juntos para esta tarea  :P

Lectura recomendada:

http://foro.elhacker.net/hacking_avanzado/md5_considered_harmful_today-t240148.0.html

Saludos  ;D


Título: Re: ¿Cuál es la mejor opción para cifrar con PHP?
Publicado por: Shurhand en 26 Febrero 2009, 19:33 pm
Amablemente, ¿alguien podría convertir la referencia de mcrypt (incluyendo las funciones más relevantes) a PDF? Yo lo haría, pero ahora mismo no puedo y la verdad, estaría bien tenerlo en los ordenadores para estudiar todo detenidamente.