Foros del Web » Programando para Internet » PHP »

Fuerza bruta en md5

Estas en el tema de Fuerza bruta en md5 en el foro de PHP en Foros del Web. Hola a todos de nuevo, llevava mucho tiempo sin poner nada por aqui, y se me ocurrio esto tras unos cuantos fallos de seguridad en ...
  #1 (permalink)  
Antiguo 10/04/2009, 23:06
Avatar de djsos  
Fecha de Ingreso: septiembre-2007
Ubicación: Madrid-España
Mensajes: 374
Antigüedad: 16 años, 7 meses
Puntos: 14
Información Fuerza bruta en md5

Hola a todos de nuevo, llevava mucho tiempo sin poner nada por aqui, y se me ocurrio esto tras unos cuantos fallos de seguridad en mi web asi que aqui os lo dejo.Seguro que ha alguno ya se le habia ocurrido pero bueno, yo lo dejo aquí.
Actualmente la seguridad de muchas webs se ve afectada por intrusiones no autorizadas debido a que algien de maneras no muy buenas consige el password de algien que no le cae muy bien o simplemente para poder suplanterle la identidad. En estos casos lo que se hace para saber la password y podern entar en su sistema es probar por fuerza bruta hasta que dan con el pass bueno.Otro metodo es utilizar la inmensidad de buscadores que se basan en password guardados en una bd con su correspondiente hash para decirte cual es el pass.
Lo que se me ocurrio para que este metodo ya no sea viable sera este:

Al registrarse el usuario y poner su clave NO codificarla directamente.
sino añadirle mas informacion. veamos un ejemplo
Código PHP:
$password_encriptado md5($password_del_usuario);
//eso NO
$password_encriptado md5(md5($password_del_usuario));
//esta opcion muchos programas de fuerza bruta ya la utilizan por eso mi solucion fue esta
$pass1=md5($pasword_del_usuario);
$salto md5("%&@¬antifuerza!bruta||por¬VGPASTOR¿?");
$password_encriptado md5($salto.$pass1); 
Creo que es buen metodo siempre que no desveles tus saltos ni el orden.Ademas lo puedes complicar todo lo que quieras añadiendo mas veces el mismo salto o incluso añadiendo saltos distintos. Ademas pense en poner 30 saltos y que se añadieran con un random solo 4 porejemplo y para recordar que saltos se habian puesto, se le añade al final del password 4digitos con el numero del salto.Luego para comprobar la contraseña solo tenias que deshacer todo lo anterior y listo.El codigo seria algo asi:
Código PHP:
$salt1 "texto prueba salto1";
$salt2 "texto prueba salto2";
$salt3 "texto prueba salto3";
$salt4 "texto prueba salto4";
$salt5 "texto prueba salto5";
$salt6 "texto prueba salto6";
$salt7 "texto prueba salto7";
$salt8 "texto prueba salto8";
$salt9 "texto prueba salto9";
$salt10 "texto prueba salto10";
$salt11 "texto prueba salto11";
$salt12 "texto prueba salto12";
$salt13 "texto prueba salto13";
$salt14 "texto prueba salto14";
$salt15 "texto prueba salto15";
$salt16 "texto prueba salto16";
$salt17 "texto prueba salto17";
$salt18 "texto prueba salto18";
$salt19 "texto prueba salto19";
$salt20 "texto prueba salto20";
$salt21 "texto prueba salto21";
$salt22 "texto prueba salto22";
$salt23 "texto prueba salto23";
$salt24 "texto prueba salto24";
$salt25 "texto prueba salto25";
$salt26 "texto prueba salto26";
$salt27 "texto prueba salto27";
$salt28 "texto prueba salto28";
$salt29 "texto prueba salto29";
$salt30 "texto prueba salto30";

$pass1 md5($pas_usu)
$ns1 =rand(1,30);
$s1 md5($salt.ns1);
$ns2 rand(1,30);
$s2 md5($salt.$ns2);
$ns3 rand(1,30);
$s3 md5($salt.$ns3);
$ns4 rand(1,30);
$s4 md5($salt.$ns4);
$passfinencrip md5($s1.s2.$pas_usu.$s3.$s4);
$p_encrypt$ns1.$ns2.$ns3.$ns4.$passfinencrip
esto para encriptarle y ahora la comprobacion
Código PHP:
$password_del_usuario_al hacer_login_con_md5md5($pasword_del_usuario_al hacer_login);
//Lo primero es saber que saltos se le han aplicado asi que cojemos los cuatro primeros caracteres que corres ponden a los saltos aplicados, del password guardado en la bd
$numero_del_salto_1 $password_del_usuario_en_la_bd{0};
$numero_del_salto_2 $password_del_usuario_en_la_bd{1};
$numero_del_salto_3 $password_del_usuario_en_la_bd{2};
$numero_del_salto_4 $password_del_usuario_en_la_bd{3};

//Codificamos los saltos
$salto_1_codificado md5($salt.$numero_del_salto_1);
$salto_2_codificado md5($salt.$numero_del_salto_2);
$salto_3_codificado md5($salt.$numero_del_salto_3);
$salto_4_codificado md5($salt.$numero_del_salto_4);

//les añadimos en el mismo orden que al guardar en el password encriptado del usuario que ha escriot en el login


$password_sin_el_numero_de_los _saltos md5($salto_1_codificado.$salto_2_codificado.$password_del_usuario_al hacer_login_con_md5.$salto_3_codificado.$salto_4_codificado);

$password_a_comprobar_en_la_bd $numero_del_salto_1.$numero_del_salto_2.$numero_del_salto_3.$numero_del_salto_4.$password_sin_el_numero_de_los _saltos
parece complicado pero en la practica no lo es y puede ahorranos algunos disgustos.De aqui cada uno que saque sus propias conclusiones.
Un saludo y espero sus comentarios.
PD: No lo he probado asi que alomejor tiene algun error por algun lado, lo unico que quiero exponer aqui es el sistema si alguno lo quiere hacer funcionar y no sabe que falla que me avise y se lo dejo listo.
__________________
Es de bien nacidos ser agradecidos.
Desarrollo de software a medida | TPV Comercios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:10.