Foros del Web » Programando para Internet » PHP »

PHP OO Encriptar contraseñas un problema para futuro

Estas en el tema de Encriptar contraseñas un problema para futuro en el foro de PHP en Foros del Web. tengo un problema, tengo mis contraseñas encriptadas en sha-1 en formato semilla+contraseña, pero ya me doy cuenta que tenemos problemas ... MD5 y SHA-1 estan ...
  #1 (permalink)  
Antiguo 15/02/2014, 18:13
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Pregunta Encriptar contraseñas un problema para futuro

tengo un problema, tengo mis contraseñas encriptadas en sha-1 en formato semilla+contraseña, pero ya me doy cuenta que tenemos problemas ...

MD5 y SHA-1 estan comprometidos... SHA-2 aun aguanta un poco mas pero no se que tan seguro sea encriptar con SHA-256... sea este el caso...

al ver mi servidor aun anda en la 5.2 de apache y no cuento con Bscript ... mi pregunta es que me recomiendan... para encriptar... acepto toda clase de ideas que incluyan documentacion
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #2 (permalink)  
Antiguo 15/02/2014, 20:51
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Encriptar contraseñas un problema para futuro

No me he especializado en el tema, pero leyendo un poco, he encontrado este artículo elaborado hace un poco menos de un año, en el que explican acerca del algoritmo Keccak, el cual fue seleccionado por el Instituto Nacional de Estándares y Tecnología del Gobierno de los Estados Unidos de América como el estándar de encriptación SHA-3. Incluso se hacen comparaciones con SHA-1 y SHA-2 y se muestran las ventajas que tiene este nuevo estándar sobre ellos.

El artículo: http://www.drdobbs.com/security/kecc...dard/240154037

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 15/02/2014, 21:30
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Encriptar contraseñas un problema para futuro

ok pero no lo soporta el apache 5.2... creo que solo las ultima verciones... lo tengo en cuenta para futuro cuando este en servidores...

hash

hash support enabled
Hashing Engines md2 md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #4 (permalink)  
Antiguo 15/02/2014, 21:51
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Encriptar contraseñas un problema para futuro

Solo por curiosidad, ¿has pensado en cambiarte a una versión más actual o usar otro web server?, digo, si ya está disponible ese estándar, entonces deben haber versiones de web server que la soporten. Algo parecido me pasó con la versión de PHP, ya que instalé el AppServ que viene con la versión 5.2 cuando hace pocos días se ha liberado la 5.6 alpha2, o sea, estoy quedándome atrás y no puedo aprovechar las nuevas funcionalidades, por eso opté por actualizar la versión y ahora le estoy sacando provecho a lo que me perdí desde 5.3 en adelante.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 15/02/2014, 22:11
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Encriptar contraseñas un problema para futuro

claro es fascil decirlo cuando hablas de appserv y algo local, pero simplemente pedia recomendaciones para algo gratuito.... y por lo que busco y veo no hay...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #6 (permalink)  
Antiguo 15/02/2014, 22:20
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Encriptar contraseñas un problema para futuro

No es que sea fácil decirlo, creí que trabajabas con un servidor propio (no el local), pero bueno, probablemente en algún tiempo más esté al alcance de todos la implementación de este nuevo estándar.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 16/02/2014, 07:12
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Encriptar contraseñas un problema para futuro

Cita:
Iniciado por Alexis88 Ver Mensaje
Solo por curiosidad, ¿has pensado en cambiarte a una versión más actual o usar otro web server?, digo, si ya está disponible ese estándar, entonces deben haber versiones de web server que la soporten. Algo parecido me pasó con la versión de PHP, ya que instalé el AppServ que viene con la versión 5.2 cuando hace pocos días se ha liberado la 5.6 alpha2, o sea, estoy quedándome atrás y no puedo aprovechar las nuevas funcionalidades, por eso opté por actualizar la versión y ahora le estoy sacando provecho a lo que me perdí desde 5.3 en adelante.
Muy bien amigo, veo que de algo sirvió lo que hablamos.
HAY QUE ACTUALIZARSE!!!
  #8 (permalink)  
Antiguo 16/02/2014, 12:39
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Encriptar contraseñas un problema para futuro

Jeje, en realidad esa actualización la hice antes, pero de hecho que se aprende mucho intercambiando información con personas como ustedes amigos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 16/02/2014, 21:23
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Encriptar contraseñas un problema para futuro

bueno se salieron de mi pregunta totalmente, yo no estoy buscando consejos de actualizacion , por que no esta a mi alcance, pregunte por algo especifico...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #10 (permalink)  
Antiguo 16/02/2014, 23:29
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Encriptar contraseñas un problema para futuro

Sobre tu inquietud:

Cita:
Iniciado por arcanisgk122 Ver Mensaje
no se que tan seguro sea encriptar con SHA-256... sea este el caso...
Creo que la información de este artículo, te brindará lo que necesitas saber sobre ello.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 16/02/2014, 23:48
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Encriptar contraseñas un problema para futuro

si alexis entiendo perfectamente lo que me tratan de decir, que si o si Bscript es el futuro para los hash de contraseñas, pero queria saber una alternativa viable para apache 5.2 de la siguiente lista:

Hashing Engines md2 md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5

Cual de todas me recomendarían gracias.
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #12 (permalink)  
Antiguo 17/02/2014, 07:27
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: Encriptar contraseñas un problema para futuro

Hola:

Si solamente tienes esas posibilidades usa sha512 q te puede dar un poco más de seguridad.
Asegúrate de escoger un salt completamente aleatorio y al menos 128 bytes de longitud.

https://crackstation.net/hashing-security.htm
http://stackoverflow.com/questions/1...645190#1645190
http://security.stackexchange.com/qu...-hashes-really

slds;

nup_
  #13 (permalink)  
Antiguo 17/02/2014, 11:33
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Encriptar contraseñas un problema para futuro

ok les dejo el codigo como muestra de lo que tengo

BD:
pasword permite 300 caracteres

Código PHP:
Ver original
  1. $encript = sha1($password);// primero encripto en sha-1
  2. $hash = hash('sha512', $salt.$encript.$salt);// luego agrego el salt al frente y atras de la contraseña.

lo de hacer el salt aleatorio no lo he visto, tendría que agregar un campo a la base de datos
salt permite 300 caracteres

como controlo la longitud y de que tamaño debería de ir a la base de datos el campo??
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #14 (permalink)  
Antiguo 17/02/2014, 22:17
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: Encriptar contraseñas un problema para futuro

Hola:

No tienes porq aplicar sha1 al password, simplemente concaténalo con el salt y eso es suficiente.
Después haces varias iteraciones de "hasheo" (en el ejemplo hay 1000 pero puedes llegar a 20000).
En la BD guardas el hash y el salt, la cantidad de iteraciones la puedes poner constante para toda la aplicación.
El proceso sería asi:
Código PHP:
Ver original
  1. function get_hash( $password, $salt, $iterations )
  2. {
  3.     $hash = hash('sha512', $password . $salt);
  4.     for ( $i = 0 ; $i < $iterations ; $i++ )
  5.         $hash = hash('sha512', $hash . $i);
  6.     return $hash;
  7. }
  8.  
  9. // Para salvar los datos de un usuario en la BD
  10. //   guardas el hash y el salt
  11. $salt = get_random_salt(); // Funcion tuya, ver despues
  12. $hash = get_hash( $password, $salt, 1000 );
  13. // INSERT INTO usertable( username, hash, salt ) VALUES ....
  14.  
  15. // Para autenticar un usuario
  16. $salt_db = // el salt guardado en la BD para ese user
  17. $password_db = // el salt guardado en la BD
  18. if ( get_hash($password_db, $salt_db, 1000) == get_hash($password, $salt, 1000) )
  19.     // Autenticado
  20. else
  21.     // Denegado

Para generar el salt aleatorio tienes varias variantes:
- usar la librería mcrypt
- extraer datos aleatorios de /dev/urandom
- generar una cadena aleatoria usando mt_rand()

Recomiendo cualquiera de las 2 primeras:
Código PHP:
Ver original
  1. // Usando la librería mcrypt
  2. function get_random_salt()
  3. {
  4.     $size = 300;
  5.     return mcrypt_create_iv($size, MCRYPT_DEV_URANDOM);
  6. }
  7.  
  8. // Usando /dev/urandom
  9. function get_random_salt()
  10. {
  11.     $size = 300;
  12.     $fh = fopen('/dev/urandom','rb');
  13.     $salt = fread($fh,$size);
  14.     fclose($fh);
  15.     return $salt;
  16. }

slds;

nup_

Etiquetas: contraseñas, encriptar, futuro
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 17:53.