Foros del Web » Programando para Internet » PHP »

Alternativa a MD5

Estas en el tema de Alternativa a MD5 en el foro de PHP en Foros del Web. Estoy siguiendo las noticias de seguridad. Y al parecer MD5 no estan seguro como parece. Ya existen bases de dátos de MD5 y mediante colisiones ...
  #1 (permalink)  
Antiguo 23/07/2012, 16:53
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Alternativa a MD5

Estoy siguiendo las noticias de seguridad. Y al parecer MD5 no estan seguro como parece. Ya existen bases de dátos de MD5 y mediante colisiones se pueden resolver. Además, se puede utilizar la fuerza bruta de algo así de 1.000.000 por segundo de posibilidades en un equipo medianamente desente.

Por ello, estoy buscando una alternativa para protejer a mis usuarios. Los cuales no son muchos pero me parece importante.

Me dijeron que una alternativa es usar SHA con un salt. Ya con eso estamos para varios años más. Pero quería escuchar de mano de Ustedes algun sistema de encriptación que me recomienden para que me despreocupe por un tiempo largo.

Estaba pensando en algo así, lo probé en el local y en el hosting y funciona:

<?php

print bin2hex(mhash(MHASH_SHA256, "aencriptar"));

?>

El problema del salt es que no es tan dificil descubrirlo. Creo que sirve más que nada si se usa unicamente MD5.

¿Que opinan?
  #2 (permalink)  
Antiguo 23/07/2012, 16:56
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Alternativa a MD5

O quizás algo así:

Código PHP:

<?php

print bin2hex(mhash(MHASH_SHA256,bin2hex(mhash(MHASH_SHA256,bin2hex(mhash(MHASH_SHA256"aencriptar"))))));

?>
  #3 (permalink)  
Antiguo 23/07/2012, 17:10
Avatar de ahaugas  
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 249
Antigüedad: 12 años, 8 meses
Puntos: 21
Respuesta: Alternativa a MD5

y porque no lo haces por varias capas ej
Código PHP:
Ver original
  1. $pass = "Mi password"                            //Tu password
  2.  
  3. // Comenzamos con la encriptacion a el estilo de D0SWAR.
  4. $pass_1 = md5 ($pass);              //Encriptacion nivel 1
  5. $pass_2 = crc32($pass_1);           //Encriptacion nivel 2
  6. $pass_4 = crypt($pass_3);                   //Encriptacion nivel 3
  7. $pass_5 = sha1($pass_4);                    //Encriptacion nivel 4
  8.  
  9. $new_pass = $pass_5;                          //El nuevo password

aunque mas niveles de encriptacion mas carga de servidor tienes, aunque SHA256 (SHA2) ya viene bastante segura, con un salt hash implementado valdria.

mas bien habria que proteger las consultas sql o a la base de datos que tengas y preepararlas para injecciones de codigos, sql, xss..... y por fuerza bruta.

tambien seria interesante recopilar los robots o arañas web no deseads en una lista y bloquear el acceso a los sitios.

es solo una observacion
  #4 (permalink)  
Antiguo 23/07/2012, 17:34
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Alternativa a MD5

Absolutamente, pero sí, vamos por partes como decia Freddy.

No creo que tenga problema con la carga del servidor ya que no existen demaciados registros que se hagan simultaneamente. Por ello, no veo problema en tu sistema.
  #5 (permalink)  
Antiguo 23/07/2012, 17:49
 
Fecha de Ingreso: abril-2010
Ubicación: Ping: BSAS - Arg
Mensajes: 791
Antigüedad: 14 años
Puntos: 25
Respuesta: Alternativa a MD5

Cita:
Iniciado por ahaugas Ver Mensaje
y porque no lo haces por varias capas ej
Código PHP:
Ver original
  1. $pass = "Mi password"                            //Tu password
  2.  
  3. // Comenzamos con la encriptacion a el estilo de D0SWAR.
  4. $pass_1 = md5 ($pass);              //Encriptacion nivel 1
  5. $pass_2 = crc32($pass_1);           //Encriptacion nivel 2
  6. $pass_4 = crypt($pass_3);                   //Encriptacion nivel 3
  7. $pass_5 = sha1($pass_4);                    //Encriptacion nivel 4
  8.  
  9. $new_pass = $pass_5;                          //El nuevo password

aunque mas niveles de encriptacion mas carga de servidor tienes, aunque SHA256 (SHA2) ya viene bastante segura, con un salt hash implementado valdria.

mas bien habria que proteger las consultas sql o a la base de datos que tengas y preepararlas para injecciones de codigos, sql, xss..... y por fuerza bruta.

tambien seria interesante recopilar los robots o arañas web no deseads en una lista y bloquear el acceso a los sitios.

es solo una observacion
Genera diferentes hashes cada ves que lo ejecuto. Y al parecer es crypt()

Creo que lo dejaré así:

Código PHP:

function megacript($pass){
    
$pass_1 md5($pass);        //Encriptacion nivel 1 
    
$pass_2 crc32($pass_1);     //Encriptacion nivel 2
    
$pass_3 sha1($pass_2);      //Encriptacion nivel 4 
    
return $pass_3;
}

echo 
megacript("hola"); 
  #6 (permalink)  
Antiguo 23/07/2012, 18:05
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Alternativa a MD5

es que es algo relativo, según tengo entendido (no me crean ya que son cosas que uno lee en el camino) depende de como lo hagas, si lo que vas a hacer es un simple
Código PHP:
Ver original
  1. $password = md5($password);
si es un poco mas simple, pero si le agregas unas cuantas cositas como un security salt, el username y algunas cosas más creo que se hace un poco más complicado hacer el force (aunque no imposible).

Código PHP:
Ver original
  1. public function setPassword($password, $salt = true)
  2.  {
  3.      if(true === $salt) {
  4.          $this->password = md5($this->getUser().$password.$this->getSecuritySalt());
  5.      } else {
  6.          $this->password = md5($this->getUser().$password);
  7.      }
  8. }

y por supuesto en el securitySalt algo un tanto largo XD.

claro es cuestión de gustos, colores y lo que seas con la parte de la seguridad de la contraseña (que es bueno ser ), saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 23/07/2012, 19:46
Avatar de ahaugas  
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 249
Antigüedad: 12 años, 8 meses
Puntos: 21
Respuesta: Alternativa a MD5

ten en cuenta que al igual que lo encriptas, luego tienes que seguir los mismos pasos para hacer las comprobaciones de claves y validar el usuario para que pueda entrar.

sino por mucho que se encripta y luego no se comprueban las claves correctamente nunca va a poder ingresar.

@carlos_belisario

esta muy bien explicado

si me permites yo aparte le agregaria tambien la opcion null si no se pasa nada o si es 0
y no comprobar por comprobar o generar

Código PHP:
Ver original
  1. public function setPassword($password=NULL, $salt = true)
  2.     {      
  3.         if($password!=NULL)
  4.         {  
  5.              if(true === $salt) {
  6.                  $this->password = md5($this->getUser().$password.$this->getSecuritySalt());
  7.              } else {
  8.                  $this->password = md5($this->getUser().$password);
  9.              }
  10.         }
  11.         else
  12.         {
  13.           return false;
  14.         }
  15.        
  16.     }

pero me gusta, yo estoy aprendiendo todavia POO y poco a poco voy sacando cosas

Etiquetas: md5, usuarios
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 21:19.